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.MoneyRecordService;
|
import com.yeshi.fanli.service.inter.user.PassWordErrorRecordService;
|
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 MoneyRecordService moneyRecordService;
|
|
@Resource
|
private BindingAccountService bindingAccountService;
|
|
@Resource
|
private ExtractService extractService;
|
|
@Resource
|
private PassWordErrorRecordService passWordErrorRecordService;
|
|
@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(""));
|
}
|
}
|