喻健
2018-12-10 feee16c2fe842ef452823d3f8ed95a39ad191ee6
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.yeshi.utils.JsonUtil;
import com.alipay.api.AlipayApiException;
import com.yeshi.fanli.entity.accept.AcceptData;
@@ -29,7 +30,6 @@
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.goods.CollectionGoodsService;
import com.yeshi.fanli.service.inter.hongbao.HongBaoManageService;
import com.yeshi.fanli.service.inter.hongbao.HongBaoMessageService;
import com.yeshi.fanli.service.inter.hongbao.HongBaoService;
@@ -49,13 +49,11 @@
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.WxDownService;
import com.yeshi.fanli.util.GsonUtil;
import com.yeshi.fanli.util.RedisManager;
import com.yeshi.fanli.util.StringUtil;
import com.yeshi.fanli.util.account.UserUtil;
import com.yeshi.fanli.util.wx.WXLoginUtil;
import org.yeshi.utils.JsonUtil;
import net.sf.json.JSONObject;
@@ -118,12 +116,7 @@
   private AccountMessageService accountMessageService;
   @Resource
   private CollectionGoodsService collectionGoodsService;
   @Resource
   private HongBaoManageService hongBaoManageService;
   @Resource
   private WxDownService wxDownService;
   @Resource
   private UserAccountService userAccountService;
@@ -161,7 +154,7 @@
    */
   @RequestMapping(value = "login")
   public void login(AcceptData acceptData, String code, String vcode, String phone, boolean wxinstall,
         String tbOpenid, String tbNickName, String tbPortrait, int loginType, Boolean first, HttpSession session,
         String tbOpenid, String tbNickName, String tbPortrait, int loginType, Boolean first, HttpSession session,HttpServletRequest request,
         PrintWriter out) {
      System system = systemService.getSystemCache(acceptData.getPlatform(), acceptData.getPackages());
      if (system == null) {
@@ -185,7 +178,7 @@
      tbUserInfo.setTbName(tbNickName);
      tbUserInfo.setTbPic(tbPortrait);
      try {
         LoginResult result = userAccountService.login(session, first, system.getAppid(), code, phone, tbUserInfo,
         LoginResult result = userAccountService.login(request, first, system.getAppid(), code, phone, tbUserInfo,
               wxinstall, loginType);
         if (result == null)
            LogHelper.error("login-result为空值");
@@ -723,6 +716,99 @@
         redisManager.removeCommonString(key);
      }
   }
   @RequestMapping(value = "bindalipaywithverifynew")
   public void bindAlipayWithVerifyNew(AcceptData acceptData, Long uid, String name, String account, PrintWriter out) {
      System system = systemService.getSystemCache(acceptData.getPlatform(), acceptData.getPackages());
      if (system == null) {
         out.print(JsonUtil.loadFalseResult("系统不存在"));
         return;
      }
      if (uid == null || uid == 0) {
         out.print(JsonUtil.loadFalseResult(1, "请上传用户ID"));
         return;
      }
      if (StringUtil.isNullOrEmpty(name)) {
         out.print(JsonUtil.loadFalseResult(1, "请上传支付宝实名名称"));
         return;
      }
      if (StringUtil.isNullOrEmpty(account)) {
         out.print(JsonUtil.loadFalseResult(1, "请上传支付宝账号"));
         return;
      }
      UserInfo user = userInfoService.getUserById(uid);
      boolean bind = redisManager.isBindAlipayAccountSMSStateValid(user.getPhone());
      if (!bind) {
         out.print(JsonUtil.loadFalseResult(90002, "手机验证超时"));
         return;
      }
      String key = "bindalipay-" + uid;
      if (!StringUtil.isNullOrEmpty(redisManager.getCommonString(key))) {
         out.print(JsonUtil.loadFalseResult(1001, "服务器繁忙,请稍后重试"));
         return;
      }
      redisManager.cacheCommonString(key, "1", 120);
      // 可以展示给用户看的错误码
      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" };
      try {
         BindingAccount bindingAccount = bindingAccountService.changeAlipayBindingWithVerify(uid, name, account);
         out.print(JsonUtil.loadTrue(0, JsonUtil.getGson().toJson(bindingAccount), "系统已成功转账0.1元到提现账号中,提现账号验证通过,恭喜你!可以提现了。"));
      } catch (AlipayTransferException e1) {
         if (e1.getSubCode().equalsIgnoreCase("PAYEE_NOT_EXIST")) {
            String msg = "系统未能成功转账0.1元,提现账号信息有误,请核对后重新填写。";
            out.print(JsonUtil.loadFalseResult(1, msg));
         } else {
            for (String st : ALIPAY_CODES) {
               if (st.equalsIgnoreCase(e1.getSubCode())) {
                  out.print(JsonUtil.loadFalseResult(2, e1.getMsg()));
                  return;
               }
            }
            out.print(JsonUtil.loadFalseResult(3, "支付宝接口出错,验证失败,请联系客服。"));
            return;
         }
      } catch (AlipayApiException e2) {
         out.print(JsonUtil.loadFalseResult(4, e2.getErrMsg()));
         return;
      } catch (AlipayAccountException e3) {
         // 账户无余额
         if (e3.getCode() == AlipayAccountException.CODE_NO_MONEY) {
            out.print(JsonUtil.loadFalseResult(5, "你的账户目前没有余额,无需绑定提现账号。"));
            return;
            // 提现次数限制
         } else if (e3.getCode() == AlipayAccountException.CODE_TIMES_LIMIT) {
            out.print(JsonUtil.loadFalseResult(6, "每月仅可修改1次提现账号,请下月再试吧。"));
            return;
         } else {
            out.print(JsonUtil.loadFalseResult(7, e3.getMsg()));
            return;
         }
      } catch (Exception e) {
         try {
            LogHelper.errorDetailInfo(e);
         } catch (Exception e1) {
            e1.printStackTrace();
         }
         out.print(JsonUtil.loadFalseResult(8, "服务器内部错误,验证失败,请联系客服。"));
      } finally {
         redisManager.removeCommonString(key);
      }
   }
   /**
    * 获取用户资金详情