yujian
2019-04-08 1da17d215d48e3e3aa9e8d7a3ef526904764f408
fanli/src/main/java/com/yeshi/fanli/controller/client/UserAccountController.java
@@ -9,6 +9,7 @@
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.yeshi.utils.JsonUtil;
import org.yeshi.utils.encrypt.DESUtil;
@@ -21,7 +22,7 @@
import com.yeshi.fanli.entity.bus.user.SMSHistory;
import com.yeshi.fanli.entity.bus.user.UserInfo;
import com.yeshi.fanli.entity.bus.user.WeiXinUser;
import com.yeshi.fanli.entity.system.System;
import com.yeshi.fanli.entity.system.BusinessSystem;
import com.yeshi.fanli.entity.taobao.ClientTBPid;
import com.yeshi.fanli.entity.taobao.PidUser;
import com.yeshi.fanli.entity.taobao.TBPid;
@@ -30,20 +31,15 @@
import com.yeshi.fanli.exception.AlipayTransferException;
import com.yeshi.fanli.exception.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.config.InviteGetMoneyService;
import com.yeshi.fanli.service.inter.config.SystemService;
import com.yeshi.fanli.service.inter.hongbao.HongBaoManageService;
import com.yeshi.fanli.service.inter.hongbao.HongBaoService;
import com.yeshi.fanli.service.inter.hongbao.HongBaoV2Service;
import com.yeshi.fanli.service.inter.hongbao.ThreeSaleSerivce;
import com.yeshi.fanli.service.inter.order.LostOrderService;
import com.yeshi.fanli.service.inter.order.OrderItemServcie;
import com.yeshi.fanli.service.inter.order.OrderService;
import com.yeshi.fanli.service.inter.push.DeviceTokenHWService;
import com.yeshi.fanli.service.inter.taobao.TaoBaoUnionConfigService;
import com.yeshi.fanli.service.inter.user.AccountDetailsService;
import com.yeshi.fanli.service.inter.user.AccountMessageService;
import com.yeshi.fanli.service.inter.user.BindingAccountService;
import com.yeshi.fanli.service.inter.user.ExtractService;
import com.yeshi.fanli.service.inter.user.ForbiddenUserIdentifyCodeService;
@@ -52,11 +48,14 @@
import com.yeshi.fanli.service.inter.user.TBPidService;
import com.yeshi.fanli.service.inter.user.UserAccountService;
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.util.Constant;
import com.yeshi.fanli.util.GsonUtil;
import com.yeshi.fanli.util.RedisManager;
import com.yeshi.fanli.util.StringUtil;
import com.yeshi.fanli.util.ThreadUtil;
import com.yeshi.fanli.util.account.UserUtil;
import com.yeshi.fanli.util.wx.WXLoginUtil;
@@ -79,9 +78,6 @@
   private OrderService orderService;
   @Resource
   private HongBaoService hongBaoService;
   @Resource
   private HongBaoV2Service hongBaoV2Service;
   @Resource
@@ -94,7 +90,7 @@
   private ConfigService configService;
   @Resource
   private SystemService systemService;
   private BusinessSystemService businessSystemService;
   @Resource
   private ShamUserService shamUserService;
@@ -106,15 +102,6 @@
   private LostOrderService lostOrderService;
   @Resource
   private OrderItemServcie orderItemServcie;
   @Resource
   private AccountDetailsService accountDetailsService;
   @Resource
   private AccountMessageService accountMessageService;
   @Resource
   private HongBaoManageService hongBaoManageService;
   @Resource
@@ -122,9 +109,6 @@
   @Resource
   private RedisManager redisManager;
   @Resource
   private InviteGetMoneyService inviteGetMoneyService;
   @Resource
   private TBPidService tbPidService;
@@ -143,6 +127,12 @@
   @Resource
   private ForbiddenUserIdentifyCodeService forbiddenUserIdentifyCodeService;
   @Resource
   private UserSystemCouponService userSystemCouponService;
   @Resource
   private UserMoneyService userMoneyService;
   private static final String PASSWORD_MAX_ERROR = "password_max_error";
   private static final String EXTRACT_MIN_MONEY = "extract_min_money";
@@ -165,7 +155,8 @@
   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) {
      System system = systemService.getSystemCache(acceptData.getPlatform(), acceptData.getPackages());
      BusinessSystem system = businessSystemService.getBusinessSystemCache(acceptData.getPlatform(),
            acceptData.getPackages());
      if (system == null) {
         out.print(JsonUtil.loadFalseResult("系统不存在"));
         return;
@@ -226,6 +217,25 @@
         root.put("type", result.getType());
         root.put("data", data);
         out.print(JsonUtil.loadTrueResult(root));
         final UserInfo uuser = result.getUser();
         ThreadUtil.run(new Runnable() {
            public void run() {
               try {
                  int platformType = 0;
                  String platform = acceptData.getPlatform();
                  if ("android".equals(platform)) {
                     platformType = 1;
                  } else if ("ios".equals(platform)) {
                     platformType = 2;
                  }
                  userSystemCouponService.copyLotteryPrize(uuser.getId(), platformType, acceptData.getDevice());
               } catch (Exception e) {
                  e.printStackTrace();
               }
            }
         });
      } catch (UserAccountException e) {
         try {
            LogHelper.cookieLog("登录出错:" + e.getCode() + "-" + e.getMessage());
@@ -234,6 +244,7 @@
         }
         out.print(JsonUtil.loadFalseResult(e.getCode(), e.getMsg()));
      }
   }
   /**
@@ -251,7 +262,8 @@
   @RequestMapping(value = "register")
   public void register(AcceptData acceptData, String tbOpenid, String tbNickName, String tbPortrait, String vcode,
         String phone, HttpServletRequest request, HttpSession session, PrintWriter out) {
      System system = systemService.getSystemCache(acceptData.getPlatform(), acceptData.getPackages());
      BusinessSystem system = businessSystemService.getBusinessSystemCache(acceptData.getPlatform(),
            acceptData.getPackages());
      if (system == null) {
         out.print(JsonUtil.loadFalseResult("系统不存在"));
         return;
@@ -311,7 +323,8 @@
    */
   @RequestMapping(value = "connect")
   public void connect(AcceptData acceptData, long mainUid, long lessUid, HttpSession session, PrintWriter out) {
      System system = systemService.getSystemCache(acceptData.getPlatform(), acceptData.getPackages());
      BusinessSystem system = businessSystemService.getBusinessSystemCache(acceptData.getPlatform(),
            acceptData.getPackages());
      if (system == null) {
         out.print(JsonUtil.loadFalseResult("系统不存在"));
         return;
@@ -344,7 +357,8 @@
    */
   @RequestMapping(value = "getuid")
   public void getUid(AcceptData acceptData, String code, String tbOpenid, String phone, PrintWriter out) {
      System system = systemService.getSystemCache(acceptData.getPlatform(), acceptData.getPackages());
      BusinessSystem system = businessSystemService.getBusinessSystemCache(acceptData.getPlatform(),
            acceptData.getPackages());
      if (system == null) {
         out.print(JsonUtil.loadFalseResult("系统不存在"));
         return;
@@ -408,7 +422,8 @@
    */
   @RequestMapping(value = "bindPhone")
   public void bindPhone(AcceptData acceptData, Long uid, String vcode, String phone, PrintWriter out) {
      System system = systemService.getSystemCache(acceptData.getPlatform(), acceptData.getPackages());
      BusinessSystem system = businessSystemService.getBusinessSystemCache(acceptData.getPlatform(),
            acceptData.getPackages());
      if (system == null) {
         out.print(JsonUtil.loadFalseResult("系统不存在"));
         return;
@@ -471,7 +486,8 @@
    */
   @RequestMapping(value = "unBindPhone")
   public void unBindPhone(AcceptData acceptData, Long uid, String phone, PrintWriter out) {
      System system = systemService.getSystemCache(acceptData.getPlatform(), acceptData.getPackages());
      BusinessSystem system = businessSystemService.getBusinessSystemCache(acceptData.getPlatform(),
            acceptData.getPackages());
      if (system == null) {
         out.print(JsonUtil.loadFalseResult("系统不存在"));
         return;
@@ -507,7 +523,8 @@
   @RequestMapping(value = "bindTaoBao")
   public void bindTaoBao(AcceptData acceptData, Long uid, String tbOpenid, String tbNickName, String tbPortrait,
         String tbSession, PrintWriter out) {
      System system = systemService.getSystemCache(acceptData.getPlatform(), acceptData.getPackages());
      BusinessSystem system = businessSystemService.getBusinessSystemCache(acceptData.getPlatform(),
            acceptData.getPackages());
      if (system == null) {
         out.print(JsonUtil.loadFalseResult("系统不存在"));
         return;
@@ -569,7 +586,8 @@
    */
   @RequestMapping(value = "unBindTaoBao")
   public void unBindTaoBao(AcceptData acceptData, Long uid, PrintWriter out) {
      System system = systemService.getSystemCache(acceptData.getPlatform(), acceptData.getPackages());
      BusinessSystem system = businessSystemService.getBusinessSystemCache(acceptData.getPlatform(),
            acceptData.getPackages());
      if (system == null) {
         out.print(JsonUtil.loadFalseResult("系统不存在"));
         return;
@@ -593,7 +611,8 @@
    */
   @RequestMapping(value = "changeWX")
   public void changeWX(AcceptData acceptData, Long uid, String code, PrintWriter out) {
      System system = systemService.getSystemCache(acceptData.getPlatform(), acceptData.getPackages());
      BusinessSystem system = businessSystemService.getBusinessSystemCache(acceptData.getPlatform(),
            acceptData.getPackages());
      if (system == null) {
         out.print(JsonUtil.loadFalseResult("系统不存在"));
         return;
@@ -640,7 +659,8 @@
    */
   @RequestMapping(value = "getphone")
   public void getPhone(AcceptData acceptData, Long uid, PrintWriter out) {
      System system = systemService.getSystemCache(acceptData.getPlatform(), acceptData.getPackages());
      BusinessSystem system = businessSystemService.getBusinessSystemCache(acceptData.getPlatform(),
            acceptData.getPackages());
      if (system == null) {
         out.print(JsonUtil.loadFalseResult("系统不存在"));
         return;
@@ -660,7 +680,8 @@
   @RequestMapping(value = "verifyvcodeforbind")
   public void verifyVcodeForbind(AcceptData acceptData, Long uid, String vcode, PrintWriter out) {
      System system = systemService.getSystemCache(acceptData.getPlatform(), acceptData.getPackages());
      BusinessSystem system = businessSystemService.getBusinessSystemCache(acceptData.getPlatform(),
            acceptData.getPackages());
      if (system == null) {
         out.print(JsonUtil.loadFalseResult("系统不存在"));
         return;
@@ -705,7 +726,8 @@
    */
   @RequestMapping(value = "bindalipay")
   public void bindAlipay(AcceptData acceptData, Long uid, String name, String account, PrintWriter out) {
      System system = systemService.getSystemCache(acceptData.getPlatform(), acceptData.getPackages());
      BusinessSystem system = businessSystemService.getBusinessSystemCache(acceptData.getPlatform(),
            acceptData.getPackages());
      if (system == null) {
         out.print(JsonUtil.loadFalseResult("系统不存在"));
         return;
@@ -760,7 +782,8 @@
   @RequestMapping(value = "bindalipaywithverify")
   public void bindAlipayWithVerify(AcceptData acceptData, Long uid, String name, String account, PrintWriter out) {
      System system = systemService.getSystemCache(acceptData.getPlatform(), acceptData.getPackages());
      BusinessSystem system = businessSystemService.getBusinessSystemCache(acceptData.getPlatform(),
            acceptData.getPackages());
      if (system == null) {
         out.print(JsonUtil.loadFalseResult("系统不存在"));
         return;
@@ -850,7 +873,8 @@
   @RequestMapping(value = "bindalipaywithverifynew")
   public void bindAlipayWithVerifyNew(AcceptData acceptData, Long uid, String name, String account, PrintWriter out) {
      System system = systemService.getSystemCache(acceptData.getPlatform(), acceptData.getPackages());
      BusinessSystem system = businessSystemService.getBusinessSystemCache(acceptData.getPlatform(),
            acceptData.getPackages());
      if (system == null) {
         out.print(JsonUtil.loadFalseResult("系统不存在"));
         return;
@@ -970,16 +994,16 @@
         out.print(JsonUtil.loadFalseResult(2, "用户不存在"));
         return;
      }
      BigDecimal moneyToday = inviteGetMoneyService.getMoneyToday(uid + "");
      BigDecimal moneyToday = userMoneyService.getMoneyToday(uid);
      if (moneyToday == null) {
         moneyToday = new BigDecimal(0);
      }
      BigDecimal moneyMonth = inviteGetMoneyService.getMoneyMonth(uid + "");
      BigDecimal moneyMonth = userMoneyService.getMoneyMonth(uid);
      if (moneyMonth == null) {
         moneyMonth = new BigDecimal(0);
      }
      BigDecimal moneyLastMonth = inviteGetMoneyService.getMoneyLastMonth(uid + "");
      BigDecimal moneyLastMonth = userMoneyService.getMoneyLastMonth(uid);
      BigDecimal unOpenmoney = hongBaoV2Service.getUnRecievedFanLiMoney(uid);
      BigDecimal totalFanMoney = hongBaoV2Service.getTotalFanLiMoney(uid);
      JSONObject data = new JSONObject();
@@ -1048,15 +1072,8 @@
         } else {
            tbPid = tbPidService.getTBPid(Long.parseLong(uid), PidUser.TYPE_FANLI_IOS);
            if (tbPid != null) {
               String siteId = tbPid.getPid().split("_")[2];
               String adzoneId = tbPid.getPid().split("_")[3];
               TaoBaoUnionConfig config = taoBaoUnionConfigService.getConfigByAppIdCache(siteId);
               clientTBPid = new ClientTBPid(config.getAppKey(), tbPid.getPid(), siteId, adzoneId);
            } else {
               clientTBPid = tbPidService.getIOSDefault();
            }
            clientTBPid = tbPidService.getIOSDefault();
         }
      } else {
@@ -1088,4 +1105,212 @@
         deviceTokenHWService.unBindDeviceToken(acceptData.getDevice());
      out.print(JsonUtil.loadTrueResult(""));
   }
   /**
    *   新版登录  V1.5.3
    * @param acceptData
    * @param vcode
    * @param phone
    * @param code
    * @param loginType 登录方式:  1-手机登录   2-微信登录
    * @param request
    * @param out
    */
   @RequestMapping(value = "loginNew", method = RequestMethod.POST)
   public void loginNew(AcceptData acceptData, String vcode, String phone, String code,
         int loginType, HttpServletRequest request, PrintWriter out) {
      try {
         BusinessSystem system = businessSystemService.getBusinessSystemCache(acceptData.getPlatform(),
               acceptData.getPackages());
         if (system == null) {
            out.print(JsonUtil.loadFalseResult("系统不存在"));
            return;
         }
         UserInfo userInfo = null;
         // 手机登录
         if (loginType == 1) {
            userInfo = userAccountService.loginPhone(request, loginType, vcode, phone, system.getAppid());
         }
         // 微信登录
         if (loginType == 2) {
            userInfo = userAccountService.loginWinXin(request,loginType, code, system.getAppid());
         }
         if (userInfo == null) {
            out.print(JsonUtil.loadFalseResult("登录失败"));
         } else {
            JSONObject data = new JSONObject();
            data.put("userInfo", UserUtil.filterForClientUser(userInfo));
            out.print(JsonUtil.loadTrueResult(data));
            /* 同步未登录之前设备抽奖数据  */
            final UserInfo uuser = userInfo;
            ThreadUtil.run(new Runnable() {
               public void run() {
                  try {
                     int platformType = 0;
                     String platform = acceptData.getPlatform();
                     if ("android".equals(platform)) {
                        platformType = 1;
                     } else if ("ios".equals(platform)) {
                        platformType = 2;
                     }
                     userSystemCouponService.copyLotteryPrize(uuser.getId(), platformType, acceptData.getDevice());
                  } catch (Exception e) {
                     e.printStackTrace();
                  }
               }
            });
         }
      } catch (UserAccountException e) {
         out.print(JsonUtil.loadFalseResult(e.getCode(), e.getMsg()));
         try {
            LogHelper.cookieLog("登录出错:" + e.getCode() + "-" + e.getMessage());
         } catch (Exception e1) {
            e1.printStackTrace();
         }
      } catch (Exception e) {
         out.print(JsonUtil.loadFalseResult("登录失败"));
         try {
            LogHelper.errorDetailInfo(e);
         } catch (Exception e1) {
            e1.printStackTrace();
         }
      }
   }
   /**
    *   绑定电话号码  V1.5.3
    *
    * @param acceptData
    * @param vcode
    * @param phone
    * @param out
    */
   @RequestMapping(value = "bindPhoneNew")
   public void bindPhoneNew(AcceptData acceptData, Long uid, String vcode, String phone, PrintWriter out) {
      BusinessSystem system = businessSystemService.getBusinessSystemCache(acceptData.getPlatform(),
            acceptData.getPackages());
      if (system == null) {
         out.print(JsonUtil.loadFalseResult("系统不存在"));
         return;
      }
      if (StringUtil.isNullOrEmpty(vcode)) {
         out.print(JsonUtil.loadFalseResult("验证码不能为空"));
         return;
      }
      if (StringUtil.isNullOrEmpty(phone)) {
         out.print(JsonUtil.loadFalseResult("电话号码不能为空"));
         return;
      }
      phone = phone.replaceAll(" ", "");
      String oldVCode = redisManager.getSMSVCode(phone, SMSHistory.TYPE_BIND);
      if (Constant.IS_OUTNET) {
         if (!vcode.equalsIgnoreCase(oldVCode)) {
            out.print(JsonUtil.loadFalseResult(9001, "验证码错误,重新输入"));
            return;
         }
         redisManager.clearSMSFrequencyLimit(phone, SMSHistory.TYPE_BIND);
      }
      try {
         // 绑定用户
         userAccountService.bindPhoneNew(uid, phone);
         UserInfo user = userInfoService.getUserByIdWithMybatis(uid);
         // 判断电话号码是否已经封禁
         ForbiddenUserIdentifyCode ic = forbiddenUserIdentifyCodeService
               .listByTypeAndIdentifyCode(ForbiddenUserIdentifyCodeTypeEnum.phone, phone);
         if (ic != null && ic.getEffective() != null && ic.getEffective()) {
            out.print(JsonUtil.loadFalseResult(Constant.CODE_FORBIDDEN_USER, Constant.FORBIDDEN_USER_REASON_DESC));
            // 封禁用户
            // 封禁绑定的正常用户
            if (user != null && user.getState() != null && user.getState() == UserInfo.STATE_NORMAL) {
               UserInfo update = new UserInfo(uid);
               update.setState(UserInfo.STATE_FORBIDDEN);
               update.setStateDesc("绑定被封禁的电话号码被封禁");
               userInfoService.updateByPrimaryKeySelective(update);
            }
            return;
         }
         JSONObject data = new JSONObject();
         data.put("userInfo", UserUtil.filterForClientUser(user));
         out.print(JsonUtil.loadTrueResult(data));
      } catch (UserAccountException e) {
         out.print(JsonUtil.loadFalseResult(e.getCode(), e.getMsg()));
      } catch (Exception e) {
         out.print(JsonUtil.loadFalseResult(1, "绑定失败"));
      }
   }
   /**
    * 更改微信
    *
    * @param acceptData
    * @param uid
    * @param code
    * @param out
    */
   @RequestMapping(value = "bindWeiXin")
   public void bindWeiXin(AcceptData acceptData, Long uid, String code, PrintWriter out) {
      BusinessSystem system = businessSystemService.getBusinessSystemCache(acceptData.getPlatform(),
            acceptData.getPackages());
      if (system == null) {
         out.print(JsonUtil.loadFalseResult("系统不存在"));
         return;
      }
      if (StringUtil.isNullOrEmpty(code)) {
         out.print(JsonUtil.loadFalseResult("请上传code"));
         return;
      }
      try {
         userAccountService.bindWeiXin(uid, code);
         UserInfo user = userInfoService.getUserByIdWithMybatis(uid);
         // 判断taoBaoUid是否已经封禁
         ForbiddenUserIdentifyCode ic = forbiddenUserIdentifyCodeService
               .listByTypeAndIdentifyCode(ForbiddenUserIdentifyCodeTypeEnum.wxUnionId, user.getWxUnionId());
         if (ic != null && ic.getEffective() != null && ic.getEffective()) {
            out.print(JsonUtil.loadFalseResult(Constant.CODE_FORBIDDEN_USER, Constant.FORBIDDEN_USER_REASON_DESC));
            // 封禁用户
            // 封禁绑定的正常用户
            if (user != null && user.getState() != null && user.getState() == UserInfo.STATE_NORMAL) {
               UserInfo update = new UserInfo(uid);
               update.setState(UserInfo.STATE_FORBIDDEN);
               update.setStateDesc("绑定被封禁的微信号被封禁");
               userInfoService.updateByPrimaryKeySelective(update);
            }
            return;
         }
         JSONObject data = new JSONObject();
         data.put("userInfo", UserUtil.filterForClientUser(user));
         out.print(JsonUtil.loadTrueResult(data));
      } catch (UserAccountException e) {
         out.print(JsonUtil.loadFalseResult(e.getCode(), e.getMsg()));
      }
   }
}