admin
2019-11-28 18ef3cfe9992b3c1663c7bccb45279a4c6732245
fanli/src/main/java/com/yeshi/fanli/controller/client/v2/UserAccountControllerV2.java
@@ -1,6 +1,9 @@
package com.yeshi.fanli.controller.client.v2;
import java.io.PrintWriter;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
@@ -13,11 +16,15 @@
import com.yeshi.fanli.entity.accept.AcceptData;
import com.yeshi.fanli.entity.bus.user.SMSHistory;
import com.yeshi.fanli.entity.bus.user.UserInfo;
import com.yeshi.fanli.entity.bus.user.vip.UserVIPInfo;
import com.yeshi.fanli.entity.push.DeviceActive;
import com.yeshi.fanli.entity.shop.BanLiShopOrder;
import com.yeshi.fanli.entity.system.BusinessSystem;
import com.yeshi.fanli.exception.user.UserAccountException;
import com.yeshi.fanli.log.LogHelper;
import com.yeshi.fanli.service.inter.config.BusinessSystemService;
import com.yeshi.fanli.service.inter.config.ConfigService;
import com.yeshi.fanli.service.inter.count.HongBaoV2CountService;
import com.yeshi.fanli.service.inter.homemodule.HomeNavbarUserService;
import com.yeshi.fanli.service.inter.money.UserMoneyService;
import com.yeshi.fanli.service.inter.order.LostOrderService;
@@ -25,8 +32,11 @@
import com.yeshi.fanli.service.inter.push.DeviceActiveService;
import com.yeshi.fanli.service.inter.push.DeviceTokenHWService;
import com.yeshi.fanli.service.inter.push.DeviceTokenOPPOService;
import com.yeshi.fanli.service.inter.push.DeviceTokenVIVOService;
import com.yeshi.fanli.service.inter.shop.BanLiShopOrderService;
import com.yeshi.fanli.service.inter.taobao.TaoBaoUnionConfigService;
import com.yeshi.fanli.service.inter.tlj.UserTaoLiJinOriginService;
import com.yeshi.fanli.service.inter.user.BindRemindService;
import com.yeshi.fanli.service.inter.user.ForbiddenUserIdentifyCodeService;
import com.yeshi.fanli.service.inter.user.ShamUserService;
import com.yeshi.fanli.service.inter.user.SpreadUserImgService;
@@ -38,13 +48,16 @@
import com.yeshi.fanli.service.inter.user.UserInfoService;
import com.yeshi.fanli.service.inter.user.UserShareGoodsRecordService;
import com.yeshi.fanli.service.inter.user.UserSystemCouponService;
import com.yeshi.fanli.service.inter.user.integral.IntegralDetailService;
import com.yeshi.fanli.service.inter.user.invite.ThreeSaleSerivce;
import com.yeshi.fanli.service.inter.user.vip.UserVIPInfoService;
import com.yeshi.fanli.util.Constant;
import com.yeshi.fanli.util.MoneyBigDecimalUtil;
import com.yeshi.fanli.util.RedisManager;
import com.yeshi.fanli.util.StringUtil;
import com.yeshi.fanli.util.ThreadUtil;
import com.yeshi.fanli.util.VersionUtil;
import com.yeshi.fanli.util.account.UserUtil;
import com.yeshi.fanli.util.annotation.RequestSerializableByKey;
import net.sf.json.JSONObject;
@@ -92,6 +105,9 @@
   private DeviceTokenOPPOService deviceTokenOPPOService;
   @Resource
   private DeviceTokenVIVOService deviceTokenVIVOService;
   @Resource
   private TaoBaoUnionConfigService taoBaoUnionConfigService;
   @Resource
@@ -127,8 +143,24 @@
   @Resource
   private DeviceActiveService deviceActiveService;
   @Resource
   private BindRemindService bindRemindService;
   @Resource
   private UserVIPInfoService userVIPInfoService;
   @Resource
   private HongBaoV2CountService hongBaoV2CountService;
   @Resource
   private IntegralDetailService integralDetailService;
   @Resource
   private BanLiShopOrderService banLiShopOrderService;
   @Resource
   private ConfigService configService;
   /**
    * 新版登录 V1.5.3
    * 
@@ -142,7 +174,7 @@
    * @param out
    */
   @RequestMapping(value = "login", method = RequestMethod.POST)
   public void login(AcceptData acceptData, int loginType, String vcode, String phone, String code,
   public void login(AcceptData acceptData, int loginType, String vcode, String phone, String code,
         HttpServletRequest request, PrintWriter out) {
      try {
         BusinessSystem system = businessSystemService.getBusinessSystemCache(acceptData.getPlatform(),
@@ -181,19 +213,11 @@
                     LogHelper.errorDetailInfo(e);
                  }
                  if (VersionUtil.greaterThan_1_5_60(acceptData.getPlatform(), acceptData.getVersion())) {
                     /* 新人红包 */
                     try {
                        userTaoLiJinOriginService.synchDeviceHongbao(uuser.getId(), device);
                     } catch (Exception e) {
                        e.printStackTrace();
                     }
                  }
                  // 绑定oppo推送
                  // 绑定oppo,VIVO推送
                  DeviceActive active = deviceActiveService.getFirstActiveInfo(acceptData.getDevice());
                  if (active != null) {
                     deviceTokenOPPOService.bindUid(uuser.getId(), active.getId());
                     deviceTokenVIVOService.bindUid(uuser.getId(), active.getId());
                  }
               }
            });
@@ -216,7 +240,7 @@
               e1.printStackTrace();
            }
         }
      } catch (Exception e) {
         out.print(JsonUtil.loadFalseResult("登录失败"));
         try {
@@ -227,8 +251,6 @@
      }
   }
   /**
    * 绑定电话号码 V2.0.1 微信登录
    * 
@@ -237,8 +259,10 @@
    * @param phone
    * @param out
    */
   @RequestSerializableByKey(key = "'bindPhoneLogin-'+#phone")
   @RequestMapping(value = "bindPhoneLogin")
   public void bindPhoneLogin(AcceptData acceptData,String vcode, String phone, String key, HttpServletRequest request, PrintWriter out) {
   public void bindPhoneLogin(AcceptData acceptData, String vcode, String phone, String key,
         HttpServletRequest request, PrintWriter out) {
      BusinessSystem system = businessSystemService.getBusinessSystemCache(acceptData.getPlatform(),
            acceptData.getPackages());
      if (system == null) {
@@ -260,7 +284,7 @@
         out.print(JsonUtil.loadFalseResult("key值不能为空"));
         return;
      }
      phone = phone.replaceAll(" ", "");
      String oldVCode = redisManager.getSMSVCode(phone, SMSHistory.TYPE_BIND);
@@ -284,5 +308,101 @@
         out.print(JsonUtil.loadFalseResult(1, "绑定失败"));
      }
   }
   /**
    * 绑定电话号码 V2.0.1 微信登录
    *
    * @param acceptData
    * @param vcode
    * @param phone
    * @param out
    */
   @RequestMapping(value = "recordBind")
   public void recordBind(AcceptData acceptData, Long uid, PrintWriter out) {
      if (uid == null || uid <= 0) {
         out.print(JsonUtil.loadFalseResult("用户id为空"));
         return;
      }
      bindRemindService.addBindPhone(uid);
      out.print(JsonUtil.loadTrueResult("记录成功"));
   }
   
   /**
    * 获取vip信息
    * @param acceptData
    * @param uid
    * @param out
    */
   @RequestMapping(value = "getVIPInfo")
   public void getVIPInfo(AcceptData acceptData, Long uid, PrintWriter out) {
      if (uid == null || uid <= 0) {
         out.print(JsonUtil.loadFalseResult("用户id为空"));
         return;
      }
      UserInfo userInfo = userInfoService.selectByPKey(uid);
      if (userInfo == null) {
         out.print(JsonUtil.loadFalseResult("该用户不存在"));
         return;
      }
      JSONObject data = new JSONObject();
      data.put("id", uid);
      data.put("nickName", userInfo.getNickName());
      data.put("portrait", userInfo.getPortrait());
      UserVIPInfo userVIPInfo = userVIPInfoService.selectByUid(uid);
      boolean vip = false;
      if (userVIPInfo != null && userVIPInfo.getState() != null
            && userVIPInfo.getState() == UserVIPInfo.STATE_SUCCESS) {
         vip = true;
         data.put("applyTime", userVIPInfo.getSuccessTime());
      }
      data.put("vip", vip);
      // 省钱 -自购产生返利
      BigDecimal rewardPurchase = hongBaoV2CountService.getRewardMoneyBySelf(uid);
      data.put("rurchaseReward", rewardPurchase.setScale(2));
      BigDecimal conserveMoney = rewardPurchase;
      if (!vip) { // 少省钱:  自购产生返利  * 5/12
         BigDecimal rate1 = new BigDecimal(5);
         BigDecimal rate2 = new BigDecimal(12);
         conserveMoney = MoneyBigDecimalUtil.mul2(rewardPurchase,  MoneyBigDecimalUtil.div(rate1, rate2));
      }
      data.put("conserveMoney", conserveMoney.setScale(2));
      // 分享赚
      BigDecimal rewardShare = hongBaoV2CountService.getRewardMoneyByShare(uid);
      // 邀请赚
      BigDecimal rewardInvite = hongBaoV2CountService.getRewardMoneyByInvite(uid);
      BigDecimal earnMoney = rewardShare;
      if (vip) { // 赚钱=分享+邀请
         earnMoney = MoneyBigDecimalUtil.add(rewardShare, rewardInvite );
      } else { // 少赚钱: 分享赚* 5/12
         BigDecimal rate1 = new BigDecimal(5);
         BigDecimal rate2 = new BigDecimal(12);
         earnMoney = MoneyBigDecimalUtil.mul2(rewardShare,  MoneyBigDecimalUtil.div(rate1, rate2));
      }
      data.put("earnMoney", earnMoney.setScale(2));
      // 注:1.有效一级队员定义:2019年1月1日起,自购或分享1笔且付款总金额不小于1元(退款为失效);
      long teamNum = hongBaoV2CountService.countValidOrderTeamUserByUid(uid, "2019-01-01", new BigDecimal(1));
      data.put("teamNum", teamNum);
      // 累计金币
      BigDecimal goldCoin = integralDetailService.getCumulativeMoney(uid);
      data.put("goldCoin", goldCoin.setScale(0));
      // 帮助链接
      data.put("helpLink", configService.get("help_link_vip_info"));
      // 使用红包次数
      List<Integer> list = new ArrayList<Integer>();
      list.add(BanLiShopOrder.STATE_SUCCESS);
      data.put("shopNum", banLiShopOrderService.countByUidAndState(uid, list));
      out.print(JsonUtil.loadTrueResult(data));
   }
}