package com.yeshi.fanli.controller.client.v1;
|
|
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.springframework.web.bind.annotation.RequestMethod;
|
import org.yeshi.utils.JsonUtil;
|
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;
|
import com.yeshi.fanli.entity.bus.user.ForbiddenUserIdentifyCode.ForbiddenUserIdentifyCodeTypeEnum;
|
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.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;
|
import com.yeshi.fanli.entity.taobao.TBPid;
|
import com.yeshi.fanli.entity.taobao.TaoBaoUnionConfig;
|
import com.yeshi.fanli.exception.user.AlipayAccountException;
|
import com.yeshi.fanli.exception.user.AlipayTransferException;
|
import com.yeshi.fanli.exception.user.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.homemodule.HomeNavbarUserService;
|
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.ForbiddenUserIdentifyCodeService;
|
import com.yeshi.fanli.service.inter.user.ShamUserService;
|
import com.yeshi.fanli.service.inter.user.SpreadUserImgService;
|
import com.yeshi.fanli.service.inter.user.TBPidService;
|
import com.yeshi.fanli.service.inter.user.UserAccountBindingHistoryService;
|
import com.yeshi.fanli.service.inter.user.UserAccountService;
|
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.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;
|
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 HongBaoV2Service hongBaoV2Service;
|
|
@Resource
|
private BindingAccountService bindingAccountService;
|
|
@Resource
|
private ExtractService extractService;
|
|
@Resource
|
private ConfigService configService;
|
|
@Resource
|
private BusinessSystemService businessSystemService;
|
|
@Resource
|
private ShamUserService shamUserService;
|
|
@Resource
|
private ThreeSaleSerivce threeSaleSerivce;
|
|
@Resource
|
private LostOrderService lostOrderService;
|
|
@Resource
|
private HongBaoManageService hongBaoManageService;
|
|
@Resource
|
private UserAccountService userAccountService;
|
|
@Resource
|
private RedisManager redisManager;
|
|
@Resource
|
private TBPidService tbPidService;
|
|
@Resource
|
private DeviceTokenHWService deviceTokenHWService;
|
|
@Resource
|
private DeviceTokenOPPOService deviceTokenOPPOService;
|
|
@Resource
|
private DeviceTokenXMService deviceTokenXMService;
|
|
@Resource
|
private DeviceTokenVIVOService deviceTokenVIVOService;
|
|
@Resource
|
private TaoBaoUnionConfigService taoBaoUnionConfigService;
|
|
@Resource
|
private SpreadUserImgService spreadUserImgService;
|
|
@Resource
|
private UserShareGoodsRecordService userShareGoodsRecordService;
|
|
@Resource
|
private ForbiddenUserIdentifyCodeService forbiddenUserIdentifyCodeService;
|
|
@Resource
|
private UserSystemCouponService userSystemCouponService;
|
|
@Resource
|
private UserMoneyService userMoneyService;
|
|
@Resource
|
private UserAccountBindingHistoryService userAccountBindingHistoryService;
|
|
@Resource
|
private HomeNavbarUserService homeNavbarUserService;
|
|
@Resource
|
private UserInfoDeleteRecordService userInfoDeleteRecordService;
|
|
@Resource
|
private UserTaoLiJinOriginService userTaoLiJinOriginService;
|
|
@Resource
|
private UserInfoModifyRecordService userInfoModifyRecordService;
|
|
@Resource
|
private DeviceActiveService deviceActiveService;
|
|
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 tbSession(淘宝session数据,加密)
|
* @param out
|
*/
|
@RequestMapping(value = "login")
|
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) {
|
BusinessSystem system = businessSystemService.getBusinessSystemCache(acceptData.getPlatform(),
|
acceptData.getPackages());
|
if (system == null) {
|
out.print(JsonUtil.loadFalseResult("系统不存在"));
|
return;
|
}
|
|
if (loginType == 3 && !Constant.IS_TEST)// 验证短信验证码
|
{
|
// 苹果应用商店上线测试号码
|
if ("17316780233".equalsIgnoreCase(phone) && "258168".equalsIgnoreCase(vcode)) {
|
;
|
} else {
|
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();
|
if (!StringUtil.isNullOrEmpty(tbSession)) {
|
try {
|
tbSession = DESUtil.decode(tbSession.replace("\n", ""), StringUtil.getBase64String("YeShiFANLI889*+"),
|
StringUtil.getBase64String("*M#34f?,"));
|
} catch (Exception e) {
|
e.printStackTrace();
|
}
|
JSONObject tbs = JSONObject.fromObject(tbSession);
|
tbOpenid = tbs.optString("openId");
|
tbNickName = tbs.optString("nick");
|
tbPortrait = tbs.optString("avatarUrl");
|
// 淘宝ID
|
tbUserInfo.setTaoBaoUid(tbs.optString("taobao_user_id"));
|
}
|
|
tbUserInfo.setOpenid(tbOpenid);
|
tbUserInfo.setTbName(tbNickName);
|
tbUserInfo.setTbPic(tbPortrait);
|
|
try {
|
LoginResult result = userAccountService.login(request, acceptData, 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));
|
|
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());
|
// 绑定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();
|
}
|
}
|
});
|
|
} 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) {
|
BusinessSystem system = businessSystemService.getBusinessSystemCache(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()));
|
}
|
}
|
|
|
/**
|
* 获取用户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) {
|
BusinessSystem system = businessSystemService.getBusinessSystemCache(acceptData.getPlatform(),
|
acceptData.getPackages());
|
if (system == null) {
|
out.print(JsonUtil.loadFalseResult("系统不存在"));
|
return;
|
}
|
UserInfo user = null;
|
if (!StringUtil.isNullOrEmpty(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;
|
}
|
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) {
|
BusinessSystem system = businessSystemService.getBusinessSystemCache(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 (Constant.IS_OUTNET) {
|
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);
|
// 判断电话号码是否已经封禁
|
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) {
|
userAccountService.forbiddenUser(uid, "封禁:绑定被封禁的电话号码");
|
}
|
return;
|
}
|
|
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) {
|
BusinessSystem system = businessSystemService.getBusinessSystemCache(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 tbSession
|
* -淘宝授权session
|
* @param out
|
*/
|
|
@RequestMapping(value = "bindTaoBao")
|
public void bindTaoBao(AcceptData acceptData, Long uid, String tbOpenid, String tbNickName, String tbPortrait,
|
String tbSession, PrintWriter out) {
|
BusinessSystem system = businessSystemService.getBusinessSystemCache(acceptData.getPlatform(),
|
acceptData.getPackages());
|
if (system == null) {
|
out.print(JsonUtil.loadFalseResult("系统不存在"));
|
return;
|
}
|
|
String taoBaoUid = "";
|
|
if (!StringUtil.isNullOrEmpty(tbSession)) {
|
try {
|
tbSession = DESUtil.decode(tbSession.replace("\n", ""), StringUtil.getBase64String("YeShiFANLI889*+"),
|
StringUtil.getBase64String("*M#34f?,"));
|
} catch (Exception e) {
|
e.printStackTrace();
|
}
|
JSONObject session = JSONObject.fromObject(tbSession);
|
tbOpenid = session.optString("openId");
|
tbNickName = session.optString("nick");
|
tbPortrait = session.optString("avatarUrl");
|
taoBaoUid = session.optString("taobao_user_id");
|
}
|
|
try {
|
userAccountService.bindTaoBao(uid, tbOpenid, tbNickName, tbPortrait);
|
UserInfo user = userInfoService.getUserByIdWithMybatis(uid);
|
|
// 判断taoBaoUid是否已经封禁
|
if (!StringUtil.isNullOrEmpty(taoBaoUid)) {
|
ForbiddenUserIdentifyCode ic = forbiddenUserIdentifyCodeService
|
.listByTypeAndIdentifyCode(ForbiddenUserIdentifyCodeTypeEnum.taobaoUid, taoBaoUid);
|
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) {
|
userAccountService.forbiddenUser(uid, "封禁:绑定被封禁的淘宝号");
|
}
|
return;
|
}
|
}
|
|
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) {
|
BusinessSystem system = businessSystemService.getBusinessSystemCache(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) {
|
BusinessSystem system = businessSystemService.getBusinessSystemCache(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(acceptData, 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) {
|
userAccountService.forbiddenUser(uid, "封禁:绑定被封禁的微信号");
|
}
|
return;
|
}
|
|
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) {
|
BusinessSystem system = businessSystemService.getBusinessSystemCache(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) {
|
BusinessSystem system = businessSystemService.getBusinessSystemCache(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) {
|
BusinessSystem system = businessSystemService.getBusinessSystemCache(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 = RedisKeyEnum.getRedisKey(RedisKeyEnum.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) {
|
|
BusinessSystem system = businessSystemService.getBusinessSystemCache(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 = RedisKeyEnum.getRedisKey(RedisKeyEnum.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) {
|
|
BusinessSystem system = businessSystemService.getBusinessSystemCache(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 = RedisKeyEnum.getRedisKey(RedisKeyEnum.bindAlipay, uid + "");
|
if (!StringUtil.isNullOrEmpty(redisManager.getCommonString(key))) {
|
out.print(JsonUtil.loadFalseResult(1001, "服务器繁忙,请稍后重试"));
|
return;
|
}
|
redisManager.cacheCommonString(key, "1", 120);
|
|
// 支付宝绑定
|
ForbiddenUserIdentifyCode ic = forbiddenUserIdentifyCodeService
|
.listByTypeAndIdentifyCode(ForbiddenUserIdentifyCodeTypeEnum.alipayAccount, account);
|
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) {
|
userAccountService.forbiddenUser(uid, "封禁:绑定被封禁的支付宝");
|
}
|
return;
|
}
|
|
// 可以展示给用户看的错误码
|
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);
|
// 余额充足
|
if (balance.compareTo(new BigDecimal("0.1")) >= 0)
|
out.print(JsonUtil.loadTrue(0, JsonUtil.getGson().toJson(bindingAccount),
|
"系统已成功转账0.1元到提现账号中,提现账号验证通过,恭喜你!可以提现了。"));
|
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")) {
|
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) {
|
if (oldBindingAccount != null) {
|
out.print(JsonUtil.loadFalseResult(5, "当前账户没有余额,无需修改,请有余额后修改"));
|
} else {
|
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 = userMoneyService.getMoneyToday(uid);
|
if (moneyToday == null) {
|
moneyToday = new BigDecimal(0);
|
}
|
BigDecimal moneyMonth = userMoneyService.getMoneyMonth(uid);
|
if (moneyMonth == null) {
|
moneyMonth = new BigDecimal(0);
|
}
|
|
BigDecimal moneyLastMonth = userMoneyService.getMoneyLastMonth(uid);
|
BigDecimal unOpenmoney = hongBaoV2Service.getUnRecievedFanLiMoney(uid);
|
BigDecimal totalFanMoney = hongBaoV2Service.getTotalFanLiMoney(uid);
|
JSONObject data = new JSONObject();
|
int spreadImgCount = spreadUserImgService.countUserSpreadImg(uid);
|
long shareCount = userShareGoodsRecordService.countShareRecordByUid(uid);
|
|
// 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.setScale(2, BigDecimal.ROUND_DOWN).toString());
|
data.put("money", user.getMyHongBao().setScale(2, BigDecimal.ROUND_DOWN).toString());
|
data.put("unGetMoney", unOpenmoney.setScale(2, BigDecimal.ROUND_DOWN).toString());
|
data.put("totalFanLiMoney", totalFanMoney.setScale(2, BigDecimal.ROUND_DOWN).toString());// 累计返利
|
data.put("totalTiChengMoney",
|
hongBaoV2Service.getTotalTiChengMoney(uid).setScale(2, BigDecimal.ROUND_DOWN).toString());// 累计提成
|
data.put("totalUnGetTiChengMoney",
|
hongBaoV2Service.getUnGetTiChengMoney(uid).setScale(2, BigDecimal.ROUND_DOWN).toString()); // 未到账提成
|
// 展示提成数据
|
if (configService.iosOnLining(Integer.parseInt(acceptData.getVersion())))
|
data.put("showTiCheng", false);
|
else
|
data.put("showTiCheng", spreadImgCount + shareCount > 0);
|
} else {
|
data.put("moneyToday", moneyToday.setScale(2, BigDecimal.ROUND_DOWN));
|
data.put("moneyMonth", moneyMonth.setScale(2, BigDecimal.ROUND_DOWN));
|
data.put("moneyLastMonth", moneyLastMonth.setScale(2, BigDecimal.ROUND_DOWN));
|
data.put("money", user.getMyHongBao().setScale(2, BigDecimal.ROUND_DOWN));
|
data.put("unGetMoney", unOpenmoney.setScale(2, BigDecimal.ROUND_DOWN));
|
data.put("totalFanLiMoney", totalFanMoney.setScale(2, BigDecimal.ROUND_DOWN));// 累计返利
|
data.put("totalTiChengMoney",
|
hongBaoV2Service.getTotalTiChengMoney(uid).setScale(2, BigDecimal.ROUND_DOWN));// 累计提成
|
data.put("totalUnGetTiChengMoney",
|
hongBaoV2Service.getUnGetTiChengMoney(uid).setScale(2, BigDecimal.ROUND_DOWN)); // 未到账提成
|
// 展示提成数据
|
data.put("showTiCheng", spreadImgCount + shareCount > 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 {
|
|
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;
|
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(""));
|
}
|
|
/**
|
* 新版登录 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, acceptData, 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() {
|
String device = acceptData.getDevice();
|
try {
|
// 同步自定义导航
|
homeNavbarUserService.synchroDeviceToUser(uuser.getId(), device);
|
} catch (Exception e) {
|
LogHelper.errorDetailInfo(e);
|
}
|
|
/* 同步未登录之前设备抽奖数据 */
|
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, 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());
|
}
|
}
|
});
|
}
|
|
} 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) {
|
userAccountService.forbiddenUser(uid, "封禁:绑定被封禁的电话号码");
|
}
|
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(acceptData, 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) {
|
userAccountService.forbiddenUser(uid, "封禁:绑定被封禁的微信号");
|
}
|
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()));
|
}
|
}
|
|
}
|