yujian
2020-03-24 88c7df1d5089d8e39f356a68eaccc18f308e190c
fanli/src/main/java/com/yeshi/fanli/controller/client/v1/UserAccountController.java
@@ -14,6 +14,7 @@
import org.yeshi.utils.encrypt.DESUtil;
import com.alipay.api.AlipayApiException;
import com.yeshi.fanli.dto.wx.WXAccountInfoDTO;
import com.yeshi.fanli.entity.accept.AcceptData;
import com.yeshi.fanli.entity.bus.user.BindingAccount;
import com.yeshi.fanli.entity.bus.user.ForbiddenUserIdentifyCode;
@@ -23,6 +24,7 @@
import com.yeshi.fanli.entity.bus.user.UserInfo;
import com.yeshi.fanli.entity.bus.user.UserInfoModifyRecord.ModifyTypeEnum;
import com.yeshi.fanli.entity.bus.user.WeiXinUser;
import com.yeshi.fanli.entity.push.DeviceActive;
import com.yeshi.fanli.entity.system.BusinessSystem;
import com.yeshi.fanli.entity.taobao.ClientTBPid;
import com.yeshi.fanli.entity.taobao.PidUser;
@@ -35,16 +37,20 @@
import com.yeshi.fanli.service.inter.config.BusinessSystemService;
import com.yeshi.fanli.service.inter.config.ConfigService;
import com.yeshi.fanli.service.inter.homemodule.HomeNavbarUserService;
import com.yeshi.fanli.service.inter.hongbao.HongBaoManageService;
import com.yeshi.fanli.service.inter.hongbao.HongBaoV2Service;
import com.yeshi.fanli.service.inter.hongbao.ThreeSaleSerivce;
import com.yeshi.fanli.service.inter.money.UserMoneyService;
import com.yeshi.fanli.service.inter.money.extract.BindingAccountService;
import com.yeshi.fanli.service.inter.money.extract.ExtractService;
import com.yeshi.fanli.service.inter.order.HongBaoV2Service;
import com.yeshi.fanli.service.inter.order.LostOrderService;
import com.yeshi.fanli.service.inter.order.OrderService;
import com.yeshi.fanli.service.inter.order.config.HongBaoManageService;
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.push.DeviceTokenXMService;
import com.yeshi.fanli.service.inter.taobao.TaoBaoUnionConfigService;
import com.yeshi.fanli.service.inter.tlj.UserTaoLiJinOriginService;
import com.yeshi.fanli.service.inter.user.BindingAccountService;
import com.yeshi.fanli.service.inter.user.ExtractService;
import com.yeshi.fanli.service.inter.user.ForbiddenUserIdentifyCodeService;
import com.yeshi.fanli.service.inter.user.ShamUserService;
import com.yeshi.fanli.service.inter.user.SpreadUserImgService;
@@ -54,11 +60,12 @@
import com.yeshi.fanli.service.inter.user.UserInfoDeleteRecordService;
import com.yeshi.fanli.service.inter.user.UserInfoModifyRecordService;
import com.yeshi.fanli.service.inter.user.UserInfoService;
import com.yeshi.fanli.service.inter.user.UserMoneyService;
import com.yeshi.fanli.service.inter.user.UserShareGoodsRecordService;
import com.yeshi.fanli.service.inter.user.UserSystemCouponService;
import com.yeshi.fanli.service.inter.user.invite.ThreeSaleSerivce;
import com.yeshi.fanli.util.Constant;
import com.yeshi.fanli.util.GsonUtil;
import com.yeshi.fanli.util.RedisKeyEnum;
import com.yeshi.fanli.util.RedisManager;
import com.yeshi.fanli.util.StringUtil;
import com.yeshi.fanli.util.ThreadUtil;
@@ -124,6 +131,15 @@
   private DeviceTokenHWService deviceTokenHWService;
   @Resource
   private DeviceTokenOPPOService deviceTokenOPPOService;
   @Resource
   private DeviceTokenXMService deviceTokenXMService;
   @Resource
   private DeviceTokenVIVOService deviceTokenVIVOService;
   @Resource
   private TaoBaoUnionConfigService taoBaoUnionConfigService;
   @Resource
@@ -152,13 +168,12 @@
   @Resource
   private UserTaoLiJinOriginService userTaoLiJinOriginService;
   @Resource
   private UserInfoModifyRecordService userInfoModifyRecordService;
   private static final String PASSWORD_MAX_ERROR = "password_max_error";
   private static final String EXTRACT_MIN_MONEY = "extract_min_money";
   private static final String EXTRACT_MAX_MONEY = "extract_max_money";
   @Resource
   private DeviceActiveService deviceActiveService;
   /**
    * 
@@ -177,6 +192,13 @@
   public void login(AcceptData acceptData, String code, String vcode, String phone, boolean wxinstall,
         String tbOpenid, String tbNickName, String tbPortrait, String tbSession, int loginType, Boolean first,
         HttpSession session, HttpServletRequest request, PrintWriter out) {
      // 2.0以下版本不允许登录
      if (!VersionUtil.greaterThan_2_0(acceptData.getPlatform(), acceptData.getVersion())) {
         out.print("请升级到最新版本");
         return;
      }
      BusinessSystem system = businessSystemService.getBusinessSystemCache(acceptData.getPlatform(),
            acceptData.getPackages());
      if (system == null) {
@@ -221,8 +243,8 @@
      tbUserInfo.setTbPic(tbPortrait);
      try {
         LoginResult result = userAccountService.login(request, first, system.getAppid(), code, phone, tbUserInfo,
               wxinstall, loginType);
         LoginResult result = userAccountService.login(request, acceptData, first, system.getAppid(), code, phone,
               tbUserInfo, wxinstall, loginType);
         if (result == null)
            LogHelper.error("login-result为空值");
@@ -252,6 +274,13 @@
                     platformType = 2;
                  }
                  userSystemCouponService.copyLotteryPrize(uuser.getId(), platformType, acceptData.getDevice());
                  // 绑定oppo,vivo推送
                  DeviceActive active = deviceActiveService.getFirstActiveInfo(acceptData.getDevice());
                  if (active != null) {
                     deviceTokenOPPOService.bindUid(uuser.getId(), active.getId());
                     deviceTokenVIVOService.bindUid(uuser.getId(), active.getId());
                     deviceTokenXMService.bindUid(active.getId(), uuser.getId());
                  }
               } catch (Exception e) {
                  e.printStackTrace();
               }
@@ -260,7 +289,7 @@
      } catch (UserAccountException e) {
         try {
            LogHelper.cookieLog("登录出错:" + e.getCode() + "-" + e.getMessage());
            LogHelper.error("登录出错:" + e.getCode() + "-" + e.getMessage());
         } catch (Exception e1) {
            e1.printStackTrace();
         }
@@ -284,6 +313,12 @@
   @RequestMapping(value = "register")
   public void register(AcceptData acceptData, String tbOpenid, String tbNickName, String tbPortrait, String vcode,
         String phone, HttpServletRequest request, HttpSession session, PrintWriter out) {
      // 2.0以下版本不允许登录
      if (!VersionUtil.greaterThan_2_0(acceptData.getPlatform(), acceptData.getVersion())) {
         out.print("请升级到最新版本");
         return;
      }
      BusinessSystem system = businessSystemService.getBusinessSystemCache(acceptData.getPlatform(),
            acceptData.getPackages());
      if (system == null) {
@@ -335,40 +370,6 @@
   }
   /**
    * 账号打通
    *
    * @param acceptData
    * @param mainUid
    * @param lessUid
    * @param session
    * @param out
    */
   @RequestMapping(value = "connect")
   public void connect(AcceptData acceptData, long mainUid, long lessUid, HttpSession session, PrintWriter out) {
      BusinessSystem system = businessSystemService.getBusinessSystemCache(acceptData.getPlatform(),
            acceptData.getPackages());
      if (system == null) {
         out.print(JsonUtil.loadFalseResult("系统不存在"));
         return;
      }
      if (mainUid == 0 || lessUid == 0) {
         out.print(JsonUtil.loadFalseResult(1, "请上传打通用户ID"));
         return;
      }
      try {
         userAccountService.connectUsers(new UserInfo(mainUid), new UserInfo(lessUid));
         UserInfo user = userInfoService.getUserByIdWithMybatis(mainUid);
         JSONObject data = new JSONObject();
         data.put("user", GsonUtil.toJsonExpose(UserUtil.filterForClientUser(user)));
         out.print(JsonUtil.loadTrueResult(data));
      } catch (UserAccountException e) {
         out.print(JsonUtil.loadFalseResult(e.getCode(), e.getMsg()));
      }
   }
   /**
    * 获取用户ID
    * 
    * @param acceptData
@@ -387,7 +388,10 @@
      }
      UserInfo user = null;
      if (!StringUtil.isNullOrEmpty(code)) {
         WeiXinUser weiXinUser = WXLoginUtil.getWeiXinUserWithSavePortrait(code);
         WXAccountInfoDTO accountInfo = Constant.getWXAccount(acceptData.getPlatform(), acceptData.getVersion());
         WeiXinUser weiXinUser = WXLoginUtil.getWeiXinUserWithSavePortrait(code, accountInfo.getAppId(),
               accountInfo.getAppSecret());
         if (weiXinUser == null) {
            out.print(JsonUtil.loadFalseResult(1, "获取微信用户信息失败"));
            return;
@@ -640,7 +644,7 @@
      }
      try {
         userAccountService.changeWXBind(uid, code);
         userAccountService.changeWXBind(acceptData, uid, code);
         UserInfo user = userInfoService.getUserByIdWithMybatis(uid);
         // 判断taoBaoUid是否已经封禁
         ForbiddenUserIdentifyCode ic = forbiddenUserIdentifyCodeService
@@ -769,8 +773,7 @@
         return;
      }
      String key = "bindalipay-" + uid;
      String key = RedisKeyEnum.getRedisKey(RedisKeyEnum.bindAlipay, uid + "");
      if (!StringUtil.isNullOrEmpty(redisManager.getCommonString(key))) {
         out.print(JsonUtil.loadFalseResult(2, "服务器繁忙,请稍后重试"));
         return;
@@ -825,8 +828,7 @@
         return;
      }
      String key = "bindalipay-" + uid;
      String key = RedisKeyEnum.getRedisKey(RedisKeyEnum.bindAlipay, uid + "");
      if (!StringUtil.isNullOrEmpty(redisManager.getCommonString(key))) {
         out.print(JsonUtil.loadFalseResult(1001, "服务器繁忙,请稍后重试"));
         return;
@@ -916,8 +918,7 @@
         return;
      }
      String key = "bindalipay-" + uid;
      String key = RedisKeyEnum.getRedisKey(RedisKeyEnum.bindAlipay, uid + "");
      if (!StringUtil.isNullOrEmpty(redisManager.getCommonString(key))) {
         out.print(JsonUtil.loadFalseResult(1001, "服务器繁忙,请稍后重试"));
         return;
@@ -941,6 +942,8 @@
      String[] ALIPAY_CODES = new String[] { "SYSTEM_ERROR", "PERMIT_CHECK_PERM_LIMITED", "PERM_AML_NOT_REALNAME_REV",
            "PERM_AML_NOT_REALNAME_REV", "PAYEE_USER_INFO_ERROR", "PAYEE_ACC_OCUPIED",
            "PERMIT_CHECK_PERM_IDENTITY_THEFT", "PERMIT_NON_BANK_LIMIT_PAYEE", "EXCEED_LIMIT_UNRN_DM_AMOUNT" };
      BindingAccount oldBindingAccount = bindingAccountService.getBindingAccountByUidAndType(uid,
            BindingAccount.TYPE_ALIPAY);
      try {
         BigDecimal balance = user.getMyHongBao();
         BindingAccount bindingAccount = bindingAccountService.changeAlipayBindingWithVerify(uid, name, account);
@@ -951,7 +954,7 @@
         else
            out.print(JsonUtil.loadTrue(0, JsonUtil.getGson().toJson(bindingAccount),
                  "系统已成功转账0.1元到提现账号中,提现账号验证通过,恭喜你!可以提现了。注:此0.1元将会在后续产生的余额中合理扣除,敬请知晓。"));
         userInfoModifyRecordService.addModifyRecord(uid, ModifyTypeEnum.bindAlipay, account);
      } catch (AlipayTransferException e1) {
         if (e1.getSubCode().equalsIgnoreCase("PAYEE_NOT_EXIST")) {
@@ -974,7 +977,11 @@
      } catch (AlipayAccountException e3) {
         // 账户无余额
         if (e3.getCode() == AlipayAccountException.CODE_NO_MONEY) {
            out.print(JsonUtil.loadFalseResult(5, "你的账户目前没有余额,无需绑定提现账号。"));
            if (oldBindingAccount != null) {
               out.print(JsonUtil.loadFalseResult(5, "当前账户没有余额,无需修改,请有余额后修改"));
            } else {
               out.print(JsonUtil.loadFalseResult(5, "当前账户没有余额,请有余额后绑定"));
            }
            return;
            // 提现次数限制
         } else if (e3.getCode() == AlipayAccountException.CODE_TIMES_LIMIT) {
@@ -1118,9 +1125,19 @@
   public void logOut(AcceptData acceptData, Long uid, PrintWriter out) {
      if (uid == null || uid == 0)
         return;
      // 需要解绑HW推送的用户绑定
      if ("android".equalsIgnoreCase(acceptData.getPlatform()))
      if ("android".equalsIgnoreCase(acceptData.getPlatform())) {
         DeviceActive deviceActive = deviceActiveService.getFirstActiveInfo(acceptData.getDevice());
         // 需要解绑HW推送的用户绑定
         deviceTokenHWService.unBindDeviceToken(acceptData.getDevice());
         if (deviceActive != null) {
            // 解绑OPPO推送的用户绑定
            deviceTokenOPPOService.unBindUid(uid, deviceActive.getId());
            // 解绑VIVO推送的用户绑定
            deviceTokenVIVOService.unBindUid(uid, deviceActive.getId());
            // 解绑XM推送的用户绑定
            deviceTokenXMService.unBindUid(deviceActive.getId());
         }
      }
      out.print(JsonUtil.loadTrueResult(""));
   }
@@ -1140,6 +1157,12 @@
   public void loginNew(AcceptData acceptData, String vcode, String phone, String code, int loginType,
         HttpServletRequest request, PrintWriter out) {
      // 2.0以下版本不允许登录
      if (!VersionUtil.greaterThan_2_0(acceptData.getPlatform(), acceptData.getVersion())) {
         out.print("请升级到最新版本");
         return;
      }
      try {
         BusinessSystem system = businessSystemService.getBusinessSystemCache(acceptData.getPlatform(),
               acceptData.getPackages());
@@ -1156,7 +1179,7 @@
         // 微信登录
         if (loginType == 2) {
            userInfo = userAccountService.loginWinXin(request, loginType, code, system.getAppid());
            userInfo = userAccountService.loginWinXin(request, acceptData, loginType, code, system.getAppid());
         }
         if (userInfo == null) {
@@ -1191,13 +1214,12 @@
                     e.printStackTrace();
                  }
                  if (VersionUtil.greaterThan_1_5_60(acceptData.getPlatform(), acceptData.getVersion())) {
                     /* 新人红包 */
                     try {
                        userTaoLiJinOriginService.synchDeviceHongbao(uuser.getId(), device);
                     } catch (Exception e) {
                        e.printStackTrace();
                     }
                  // 绑定oppo推送
                  DeviceActive active = deviceActiveService.getFirstActiveInfo(acceptData.getDevice());
                  if (active != null) {
                     deviceTokenOPPOService.bindUid(uuser.getId(), active.getId());
                     deviceTokenVIVOService.bindUid(uuser.getId(), active.getId());
                     deviceTokenXMService.bindUid(active.getId(), uuser.getId());
                  }
               }
            });
@@ -1206,7 +1228,7 @@
      } catch (UserAccountException e) {
         out.print(JsonUtil.loadFalseResult(e.getCode(), e.getMsg()));
         try {
            LogHelper.cookieLog("登录出错:" + e.getCode() + "-" + e.getMessage());
            LogHelper.error("登录出错:" + e.getCode() + "-" + e.getMessage());
         } catch (Exception e1) {
            e1.printStackTrace();
         }
@@ -1312,7 +1334,7 @@
      }
      try {
         userAccountService.bindWeiXin(uid, code);
         userAccountService.bindWeiXin(acceptData, uid, code);
         UserInfo user = userInfoService.getUserByIdWithMybatis(uid);
         // 判断taoBaoUid是否已经封禁