package com.yeshi.fanli.controller.client; import java.io.PrintWriter; import java.math.BigDecimal; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpSession; 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; import com.yeshi.fanli.entity.bus.user.BindingAccount; import com.yeshi.fanli.entity.bus.user.LoginResult; 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.taobao.ClientTBPid; import com.yeshi.fanli.entity.taobao.PidUser; import com.yeshi.fanli.entity.taobao.TBPid; import com.yeshi.fanli.entity.taobao.TaoBaoUnionConfig; import com.yeshi.fanli.exception.AlipayAccountException; 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.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.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.ShamUserService; 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.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 net.sf.json.JSONObject; /** * 账户系统 * * @author Administrator * */ @Controller @RequestMapping("api/v1/user") public class UserAccountController { @Resource private UserInfoService userInfoService; @Resource private OrderService orderService; @Resource private HongBaoService hongBaoService; @Resource private BindingAccountService bindingAccountService; @Resource private ExtractService extractService; @Resource private ConfigService configService; @Resource private SystemService systemService; @Resource private ShamUserService shamUserService; @Resource private ThreeSaleSerivce threeSaleSerivce; @Resource private LostOrderService lostOrderService; @Resource private OrderItemServcie orderItemServcie; @Resource private AccountDetailsService accountDetailsService; @Resource private AccountMessageService accountMessageService; @Resource private HongBaoManageService hongBaoManageService; @Resource private UserAccountService userAccountService; @Resource private RedisManager redisManager; @Resource private InviteGetMoneyService inviteGetMoneyService; @Resource private TBPidService tbPidService; @Resource private DeviceTokenHWService deviceTokenHWService; @Resource private TaoBaoUnionConfigService taoBaoUnionConfigService; 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"; /** * * @param acceptData * @param code * @param vcode * @param phone * @param wxinstall * @param tbOpenid * @param tbNickName * @param tbPortrait * @param out */ @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, HttpServletRequest request, PrintWriter out) { System system = systemService.getSystemCache(acceptData.getPlatform(), acceptData.getPackages()); if (system == null) { out.print(JsonUtil.loadFalseResult("系统不存在")); return; } if (loginType == 3)// 验证短信验证码 { String oldVcode = redisManager.getSMSVCode(phone, SMSHistory.TYPE_LOGIN); if (StringUtil.isNullOrEmpty(oldVcode) || !oldVcode.equalsIgnoreCase(vcode)) { out.print(JsonUtil.loadFalseResult(90001, "验证码错误")); return; } redisManager.clearSMSFrequencyLimit(phone, SMSHistory.TYPE_LOGIN); } UserInfo tbUserInfo = new UserInfo(); tbUserInfo.setOpenid(tbOpenid); tbUserInfo.setTbName(tbNickName); tbUserInfo.setTbPic(tbPortrait); try { LoginResult result = userAccountService.login(request, first, system.getAppid(), code, phone, tbUserInfo, wxinstall, loginType); if (result == null) LogHelper.error("login-result为空值"); // if (result.getUser() != null) // userAccountService.clearUserPortrait(result.getUser().getId()); JSONObject data = new JSONObject(); data.put("user", GsonUtil.toJsonExpose(UserUtil.filterForClientUser(result.getUser()))); if (result.getType() == LoginResult.TYPE_CONNECT) { data.put("mainUser", GsonUtil.toJsonExpose(UserUtil.filterForClientUser(result.getMainUser()))); data.put("lessUser", GsonUtil.toJsonExpose(UserUtil.filterForClientUser(result.getLessUser()))); } JSONObject root = new JSONObject(); root.put("type", result.getType()); root.put("data", data); out.print(JsonUtil.loadTrueResult(root)); } catch (UserAccountException e) { try { LogHelper.cookieLog("登录出错:" + e.getCode() + "-" + e.getMessage()); } catch (Exception e1) { e1.printStackTrace(); } out.print(JsonUtil.loadFalseResult(e.getCode(), e.getMsg())); } } /** * 账号注册 * * @param acceptData * @param tbOpenid * @param tbNickName * @param tbPortrait * @param vcode * @param phone * @param session * @param out */ @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()); if (system == null) { out.print(JsonUtil.loadFalseResult("系统不存在")); return; } if (!StringUtil.isNullOrEmpty(phone))// 验证短信验证码 { String oldVcode = redisManager.getSMSVCode(phone, SMSHistory.TYPE_LOGIN); if (StringUtil.isNullOrEmpty(oldVcode) || !oldVcode.equalsIgnoreCase(vcode)) { out.print(JsonUtil.loadFalseResult(90001, "验证码错误")); return; } redisManager.clearSMSFrequencyLimit(phone, SMSHistory.TYPE_LOGIN); } if (StringUtil.isNullOrEmpty(phone) && StringUtil.isNullOrEmpty(tbOpenid)) { out.print(JsonUtil.loadFalseResult(5, "请上传注册信息")); return; } UserInfo user = new UserInfo(); user.setOpenid(tbOpenid); user.setTbName(tbNickName); user.setTbPic(tbPortrait); user.setNickName(tbNickName); user.setPortrait(tbPortrait); user.setPhone(phone); user.setAppId(system.getAppid()); user.setLastLoginIp(request.getRemoteHost()); user.setLastLoginTime(java.lang.System.currentTimeMillis()); if (!StringUtil.isNullOrEmpty(phone)) user.setLoginType(3); else user.setLoginType(1); try { userAccountService.register(user); user = userInfoService.getUserByIdWithMybatis(user.getId()); 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())); } } /** * 账号打通 * * @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) { System system = systemService.getSystemCache(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 * @param code * @param tbOpenid * @param phone * @param out */ @RequestMapping(value = "getuid") public void getUid(AcceptData acceptData, String code, String tbOpenid, String phone, PrintWriter out) { System system = systemService.getSystemCache(acceptData.getPlatform(), acceptData.getPackages()); if (system == null) { out.print(JsonUtil.loadFalseResult("系统不存在")); return; } UserInfo user = null; if (!StringUtil.isNullOrEmpty(code)) { WeiXinUser weiXinUser = WXLoginUtil.getWeiXinUserWithSavePortrait(code); if (weiXinUser == null) { out.print(JsonUtil.loadFalseResult(1, "获取微信用户信息失败")); return; } try { user = userAccountService.getUserInfoByWXUnionId(system.getAppid(), weiXinUser.getUnionid()); } catch (UserAccountException e) { try { LogHelper.errorDetailInfo(e, null, "获取用户信息出错"); } catch (Exception e1) { e1.printStackTrace(); } } } else if (!StringUtil.isNullOrEmpty(tbOpenid)) { try { user = userAccountService.getUserInfoByTaoBaoOpenId(system.getAppid(), tbOpenid); } catch (UserAccountException e) { try { LogHelper.errorDetailInfo(e); } catch (Exception e1) { e1.printStackTrace(); } } } else if (!StringUtil.isNullOrEmpty(phone)) { try { user = userAccountService.getUserInfoByPhone(system.getAppid(), phone); } catch (UserAccountException e) { try { LogHelper.errorDetailInfo(e); } catch (Exception e1) { e1.printStackTrace(); } } } if (user == null) { out.print(JsonUtil.loadFalseResult(2, "用户尚未绑定")); return; } else { JSONObject data = new JSONObject(); data.put("uid", user.getId()); out.print(JsonUtil.loadTrueResult(data)); return; } } /** * 绑定电话号码 * * @param acceptData * @param vcode * @param phone * @param out */ @RequestMapping(value = "bindPhone") public void bindPhone(AcceptData acceptData, Long uid, String vcode, String phone, PrintWriter out) { System system = systemService.getSystemCache(acceptData.getPlatform(), acceptData.getPackages()); if (system == null) { out.print(JsonUtil.loadFalseResult("系统不存在")); return; } if (StringUtil.isNullOrEmpty(vcode)) { out.print(JsonUtil.loadFalseResult(3, "请上传验证码")); return; } if (StringUtil.isNullOrEmpty(phone)) { out.print(JsonUtil.loadFalseResult(3, "请上传电话号码")); return; } String oldVCode = redisManager.getSMSVCode(phone, SMSHistory.TYPE_LOGIN); if (!vcode.equalsIgnoreCase(oldVCode)) { out.print(JsonUtil.loadFalseResult(90001, "验证码错误")); return; } redisManager.clearSMSFrequencyLimit(phone, SMSHistory.TYPE_LOGIN); try { userAccountService.bindPhone(uid, phone); UserInfo user = userInfoService.getUserByIdWithMybatis(uid); JSONObject data = new JSONObject(); data.put("user", UserUtil.filterForClientUser(user)); out.print(JsonUtil.loadTrueResult(data)); } catch (UserAccountException e) { out.print(JsonUtil.loadFalseResult(e.getCode(), e.getMsg())); } } /** * 解绑电话号码 * * @param acceptData * @param uid * @param phone * @param out */ @RequestMapping(value = "unBindPhone") public void unBindPhone(AcceptData acceptData, Long uid, String phone, PrintWriter out) { System system = systemService.getSystemCache(acceptData.getPlatform(), acceptData.getPackages()); if (system == null) { out.print(JsonUtil.loadFalseResult("系统不存在")); return; } if (StringUtil.isNullOrEmpty(phone)) { out.print(JsonUtil.loadFalseResult(3, "请上传电话号码")); return; } try { userAccountService.unBindPhone(uid, phone); out.print(JsonUtil.loadTrueResult("解绑成功")); } catch (UserAccountException e) { out.print(JsonUtil.loadFalseResult(e.getCode(), e.getMsg())); } } /** * 绑定淘宝 * * @param acceptData * @param uid * @param tbOpenid * @param tbNickName * @param tbPortrait * @param out */ @RequestMapping(value = "bindTaoBao") public void bindTaoBao(AcceptData acceptData, Long uid, String tbOpenid, String tbNickName, String tbPortrait, PrintWriter out) { System system = systemService.getSystemCache(acceptData.getPlatform(), acceptData.getPackages()); if (system == null) { out.print(JsonUtil.loadFalseResult("系统不存在")); return; } try { userAccountService.bindTaoBao(uid, tbOpenid, tbNickName, tbPortrait); UserInfo user = userInfoService.getUserByIdWithMybatis(uid); JSONObject data = new JSONObject(); data.put("user", UserUtil.filterForClientUser(user)); out.print(JsonUtil.loadTrueResult(data)); } catch (UserAccountException e) { out.print(JsonUtil.loadFalseResult(e.getCode(), e.getMsg())); } } /** * 解绑淘宝 * * @param acceptData * @param uid * @param out */ @RequestMapping(value = "unBindTaoBao") public void unBindTaoBao(AcceptData acceptData, Long uid, PrintWriter out) { System system = systemService.getSystemCache(acceptData.getPlatform(), acceptData.getPackages()); if (system == null) { out.print(JsonUtil.loadFalseResult("系统不存在")); return; } try { userAccountService.unBindTaoBao(uid); out.print(JsonUtil.loadTrueResult("解绑成功")); } catch (UserAccountException e) { out.print(JsonUtil.loadFalseResult(e.getCode(), e.getMsg())); } } /** * 更改微信 * * @param acceptData * @param uid * @param code * @param out */ @RequestMapping(value = "changeWX") public void changeWX(AcceptData acceptData, Long uid, String code, PrintWriter out) { System system = systemService.getSystemCache(acceptData.getPlatform(), acceptData.getPackages()); if (system == null) { out.print(JsonUtil.loadFalseResult("系统不存在")); return; } if (StringUtil.isNullOrEmpty(code)) { out.print(JsonUtil.loadFalseResult(3, "请上传code")); return; } try { userAccountService.changeWXBind(uid, code); UserInfo user = userInfoService.getUserByIdWithMybatis(uid); JSONObject data = new JSONObject(); data.put("user", UserUtil.filterForClientUser(user)); out.print(JsonUtil.loadTrueResult(data)); } catch (UserAccountException e) { out.print(JsonUtil.loadFalseResult(e.getCode(), e.getMsg())); } } /** * 获取电话号码 * * @param acceptData * @param uid * @param out */ @RequestMapping(value = "getphone") public void getPhone(AcceptData acceptData, Long uid, 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; } UserInfo user = userInfoService.getUserByIdWithMybatis(uid); user = UserUtil.filterForClientUser(user); JSONObject data = new JSONObject(); data.put("phone", user.getPhone()); out.print(JsonUtil.loadTrueResult(data)); } @RequestMapping(value = "verifyvcodeforbind") public void verifyVcodeForbind(AcceptData acceptData, Long uid, String vcode, 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(vcode)) { out.print(JsonUtil.loadFalseResult(1, "请上传验证码")); return; } UserInfo user = userInfoService.getUserById(uid); if (StringUtil.isNullOrEmpty(user.getPhone())) { out.print(JsonUtil.loadFalseResult(1, "没有绑定电话号码")); return; } String code = redisManager.getSMSVCode(user.getPhone(), SMSHistory.TYPE_LOGIN); if (code == null || !code.equalsIgnoreCase(vcode)) { out.print(JsonUtil.loadFalseResult(90001, "验证码错误")); return; } redisManager.clearSMSFrequencyLimit(user.getPhone(), SMSHistory.TYPE_LOGIN); redisManager.saveBindAlipayAccountSMSState(user.getPhone()); out.print(JsonUtil.loadTrueResult("")); } /** * 支付宝绑定 * * @param acceptData * @param uid-用户ID * @param name-支付宝实名名称 * @param account * -支付宝账号 * @param out */ @RequestMapping(value = "bindalipay") public void bindAlipay(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(2, "服务器繁忙,请稍后重试")); return; } redisManager.cacheCommonString(key, "1", 120); // 更换绑定 try { BindingAccount bindingAccount = bindingAccountService.changeAlipayBinding(uid, name, account); out.print(JsonUtil.loadTrueResult(JsonUtil.getGson().toJson(bindingAccount))); } catch (Exception e) { try { LogHelper.errorDetailInfo(e); } catch (Exception e1) { e1.printStackTrace(); } out.print(JsonUtil.loadFalseResult(3, "服务器内部错误")); } finally { redisManager.removeCommonString(key); } } @RequestMapping(value = "bindalipaywithverify") public void bindAlipayWithVerify(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), "您的支付宝账号通过验证,可以正常提现")); } catch (AlipayTransferException e1) { if (e1.getSubCode().equalsIgnoreCase("PAYEE_NOT_EXIST")) { String msg = "无法搜索到该账号\n①请检查一下支付宝帐号和姓名是否填写正确。\n ②请在支付宝隐私设置中检查是否已开启“通过邮箱/手机号/会员名找到我”选项。"; 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, e3.getMsg())); return; // 提现次数限制 } else if (e3.getCode() == AlipayAccountException.CODE_TIMES_LIMIT) { out.print(JsonUtil.loadFalseResult(6, e3.getMsg())); 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); } } @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); } } /** * 获取用户资金详情 * * @param acceptData * @param uid * @param out */ @RequestMapping(value = "getusermoney") public void getMoneyDetail(AcceptData acceptData, Long uid, PrintWriter out) { UserInfo user = userInfoService.getUserByIdWithMybatis(uid); if (user == null) { out.print(JsonUtil.loadFalseResult(2, "用户不存在")); return; } BigDecimal moneyToday = inviteGetMoneyService.getMoneyToday(uid + ""); if (moneyToday == null) { moneyToday = new BigDecimal(0); } BigDecimal moneyMonth = inviteGetMoneyService.getMoneyMonth(uid + ""); if (moneyMonth == null) { moneyMonth = new BigDecimal(0); } BigDecimal moneyLastMonth = inviteGetMoneyService.getMoneyLastMonth(uid + ""); BigDecimal unOpenmoney = hongBaoService.getUnOpenHongBaoByUid(uid); BigDecimal totalFanMoney = hongBaoService.getMyTotalHongBaoByUid(user.getId()); JSONObject data = new JSONObject(); // IOS端数字按照字符串处理 if ("ios".equalsIgnoreCase(acceptData.getPlatform()) && Integer.parseInt(acceptData.getVersion()) > 33) { data.put("moneyToday", moneyToday.setScale(2, BigDecimal.ROUND_DOWN).toString()); data.put("moneyMonth", moneyMonth.setScale(2, BigDecimal.ROUND_DOWN).toString()); data.put("moneyLastMonth", moneyLastMonth.toString()); data.put("money", user.getMyHongBao().toString()); data.put("unGetMoney", unOpenmoney.toString()); data.put("totalFanLiMoney", totalFanMoney.toString());// 累计返利 data.put("totalTiChengMoney", hongBaoService.getTotalTiChengMoney(uid).toString());// 累计提成 data.put("totalUnGetTiChengMoney", hongBaoService.getUnGetTiChengMoney(uid).toString()); // 未到账提成 // 展示提成数据 data.put("showTiCheng", hongBaoService.getTotalTiChengCount(uid) > 0); } else { data.put("moneyToday", moneyToday.setScale(2, BigDecimal.ROUND_DOWN)); data.put("moneyMonth", moneyMonth.setScale(2, BigDecimal.ROUND_DOWN)); data.put("moneyLastMonth", moneyLastMonth); data.put("money", user.getMyHongBao()); data.put("unGetMoney", unOpenmoney); data.put("totalFanLiMoney", totalFanMoney);// 累计返利 data.put("totalTiChengMoney", hongBaoService.getTotalTiChengMoney(uid));// 累计提成 data.put("totalUnGetTiChengMoney", hongBaoService.getUnGetTiChengMoney(uid)); // 未到账提成 // 展示提成数据 data.put("showTiCheng", hongBaoService.getTotalTiChengCount(uid) > 0); } user.setNoOpenHongBao(unOpenmoney); out.print(JsonUtil.loadTrueResult(data)); } /** * 获取用户的PID信息 * * @param acceptData * @param uid * @param out */ @RequestMapping(value = "gettbpidinfo") public void getUserPid(AcceptData acceptData, String uid, PrintWriter out) { ClientTBPid clientTBPid = null; // 用户已经登录 if (!StringUtil.isNullOrEmpty(uid)) { TBPid tbPid = null; if (acceptData.getPlatform().equalsIgnoreCase("android")) { tbPid = tbPidService.getTBPid(Long.parseLong(uid), PidUser.TYPE_FANLI_ANDROID); 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.getAndroidDefault(); } } 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(); } } } else { if (acceptData.getPlatform().equalsIgnoreCase("android")) clientTBPid = tbPidService.getAndroidDefault(); else clientTBPid = tbPidService.getIOSDefault(); } JSONObject data = new JSONObject(); data.put("pidInfo", clientTBPid); out.print(JsonUtil.loadTrueResult(data)); } /** * 退出登录 * * @param acceptData * @param uid * -用户ID * @param out */ @RequestMapping(value = "logout") public void logOut(AcceptData acceptData, Long uid, PrintWriter out) { if (uid == null || uid == 0) return; // 需要解绑HW推送的用户绑定 if ("android".equalsIgnoreCase(acceptData.getPlatform())) deviceTokenHWService.unBindDeviceToken(acceptData.getDevice()); out.print(JsonUtil.loadTrueResult("")); } }