From 6c930b8374bf5b991bc423f02ed22420e78b85ff Mon Sep 17 00:00:00 2001
From: admin <weikou2014>
Date: 星期二, 12 十一月 2019 09:51:24 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/div' into div
---
fanli/src/main/java/com/yeshi/fanli/service/impl/user/UserAccountServiceImpl.java | 714 ++++++++++++++++++++++++++++++++++++++++++++++++----------
1 files changed, 586 insertions(+), 128 deletions(-)
diff --git a/fanli/src/main/java/com/yeshi/fanli/service/impl/user/UserAccountServiceImpl.java b/fanli/src/main/java/com/yeshi/fanli/service/impl/user/UserAccountServiceImpl.java
index 2a99246..a5fae9c 100644
--- a/fanli/src/main/java/com/yeshi/fanli/service/impl/user/UserAccountServiceImpl.java
+++ b/fanli/src/main/java/com/yeshi/fanli/service/impl/user/UserAccountServiceImpl.java
@@ -3,6 +3,7 @@
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
+import java.io.InputStream;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Date;
@@ -12,9 +13,12 @@
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
+import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
+import org.yeshi.utils.HttpUtil;
import org.yeshi.utils.JsonUtil;
+import org.yeshi.utils.entity.FileUploadResult;
import org.yeshi.utils.tencentcloud.COSManager;
import com.google.gson.Gson;
@@ -23,34 +27,48 @@
import com.yeshi.fanli.dao.mybatis.AccountMessageMapper;
import com.yeshi.fanli.dao.mybatis.UserConnectHistoryMapper;
import com.yeshi.fanli.dao.mybatis.UserInfoMapper;
+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.ThreeSale;
+import com.yeshi.fanli.entity.bus.user.UserAccountBindingHistory;
import com.yeshi.fanli.entity.bus.user.UserConnectHistory;
+import com.yeshi.fanli.entity.bus.user.UserExtraTaoBaoInfo;
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.exception.UserAccountException;
+import com.yeshi.fanli.exception.user.ForbiddenUserIdentifyCodeException;
+import com.yeshi.fanli.exception.user.UserAccountException;
import com.yeshi.fanli.log.LogHelper;
-import com.yeshi.fanli.service.inter.hongbao.ThreeSaleSerivce;
-import com.yeshi.fanli.service.inter.msg.UserAccountMsgNotificationService;
-import com.yeshi.fanli.service.inter.user.BindingAccountService;
+import com.yeshi.fanli.service.inter.money.extract.BindingAccountService;
import com.yeshi.fanli.service.inter.user.ForbiddenUserIdentifyCodeService;
import com.yeshi.fanli.service.inter.user.SpreadUserImgService;
+import com.yeshi.fanli.service.inter.user.UserAccountBindingHistoryService;
import com.yeshi.fanli.service.inter.user.UserAccountService;
-import com.yeshi.fanli.service.inter.user.UserExtraTaoBaoInfoService;
+import com.yeshi.fanli.service.inter.user.UserInfoDeleteRecordService;
import com.yeshi.fanli.service.inter.user.UserInfoExtraService;
+import com.yeshi.fanli.service.inter.user.UserInfoModifyRecordService;
+import com.yeshi.fanli.service.inter.user.UserInfoService;
+import com.yeshi.fanli.service.inter.user.invite.ThreeSaleSerivce;
+import com.yeshi.fanli.service.inter.user.msg.UserAccountMsgNotificationService;
+import com.yeshi.fanli.service.inter.user.tb.UserExtraTaoBaoInfoService;
import com.yeshi.fanli.util.Constant;
import com.yeshi.fanli.util.FileUtil;
import com.yeshi.fanli.util.RedisManager;
import com.yeshi.fanli.util.StringUtil;
+import com.yeshi.fanli.util.ThreadUtil;
import com.yeshi.fanli.util.TimeUtil;
import com.yeshi.fanli.util.factory.msg.MsgAccountDetailFactory;
import com.yeshi.fanli.util.wx.WXLoginUtil;
import net.sf.json.JSONObject;
+import redis.clients.jedis.Jedis;
+import redis.clients.jedis.JedisPool;
+import redis.clients.jedis.Transaction;
@Service
public class UserAccountServiceImpl implements UserAccountService {
@@ -60,6 +78,9 @@
@Resource
private UserInfoMapper userInfoMapper;
+
+ @Resource
+ private UserInfoService userInfoService;
@Resource
private BindingAccountService bindingAccountService;
@@ -84,14 +105,28 @@
@Resource
private ForbiddenUserIdentifyCodeService forbiddenUserIdentifyCodeService;
-
+
@Resource
private UserInfoExtraService userInfoExtraService;
+ @Resource
+ private UserAccountBindingHistoryService userAccountBindingHistoryService;
+
+ @Resource
+ private UserInfoDeleteRecordService userInfoDeleteRecordService;
+
+ @Resource
+ private JedisPool jedisPool;
+
+ @Lazy
+ @Resource
+ private UserInfoModifyRecordService userInfoModifyRecordService;
+
@Transactional
@Override
- public LoginResult login(HttpServletRequest request, Boolean first, String appId, String code, String phone,
- UserInfo tbUserInfo, boolean wxinstall, int loginType) throws UserAccountException {
+ public LoginResult login(HttpServletRequest request, AcceptData acceptData, Boolean first, String appId,
+ String code, String phone, UserInfo tbUserInfo, boolean wxinstall, int loginType)
+ throws UserAccountException {
JSONObject logInfo = new JSONObject();
logInfo.put("appId", appId);
@@ -153,7 +188,9 @@
case 2:// 寰俊
// 閫氳繃Code鎹㈠彇淇℃伅
- weiXinUser = WXLoginUtil.getWeiXinUserWithSavePortrait(code);
+ WXAccountInfoDTO wxAccount = Constant.getWXAccount(acceptData.getPlatform(), acceptData.getVersion());
+ weiXinUser = WXLoginUtil.getWeiXinUserWithSavePortrait(code, wxAccount.getAppId(),
+ wxAccount.getAppSecret());
if (weiXinUser == null)
throw new UserAccountException(1001, "鏃犳硶鑾峰彇鍒板井淇′釜浜轰俊鎭�");
LogHelper.test("寰俊鎺堟潈鐢ㄦ埛淇℃伅锛�" + new Gson().toJson(weiXinUser));
@@ -185,6 +222,8 @@
updateUserInfo.setLastLoginTime(System.currentTimeMillis());
updateUserInfo.setLoginType(loginType);
updateUserInfo.setLastLoginIp(request.getRemoteHost());
+ // 鏇存柊openId
+ updateUserInfo.setOpenid(weiXinUser.getOpenid());
userInfoMapper.updateByPrimaryKeySelective(updateUserInfo);
// 鍒犻櫎閭�璇峰浘鐗�
@@ -334,7 +373,7 @@
}
} else {// 娌℃湁瀹夎寰俊
- LoginResult result = loginNoInstallWX(appId, code, phone, tbUserInfo, loginType);
+ LoginResult result = loginNoInstallWX(acceptData, appId, code, phone, tbUserInfo, loginType);
if (result.getType() == LoginResult.TYPE_CREATE)
session.setAttribute("LAST_LOGIN_USER", result.getUser());
return result;
@@ -343,8 +382,8 @@
@Transactional
@Override
- public LoginResult loginNoInstallWX(String appId, String code, String phone, UserInfo tbUserInfo, int loginType)
- throws UserAccountException {
+ public LoginResult loginNoInstallWX(AcceptData acceptData, String appId, String code, String phone,
+ UserInfo tbUserInfo, int loginType) throws UserAccountException {
JSONObject logInfo = new JSONObject();
logInfo.put("appId", appId);
logInfo.put("code", code);
@@ -368,7 +407,9 @@
break;
case 2:// 寰俊
// 閫氳繃Code鎹㈠彇淇℃伅
- weiXinUser = WXLoginUtil.getWeiXinUserWithSavePortrait(code);
+ WXAccountInfoDTO wxAccount = Constant.getWXAccount(acceptData.getPlatform(), acceptData.getVersion());
+ weiXinUser = WXLoginUtil.getWeiXinUserWithSavePortrait(code, wxAccount.getAppId(),
+ wxAccount.getAppSecret());
if (weiXinUser == null)
throw new UserAccountException(1001, "鏃犳硶鑾峰彇鍒板井淇′釜浜轰俊鎭�");
@@ -532,6 +573,8 @@
int addCount = 0;
userAccountMsgNotificationService.connectSuccess(mainUser.getId(), lessUser.getId());
+
+ userInfoDeleteRecordService.addDeleteRecord(lessUser.getId(), UserInfo.STATE_DELETE, "鍒犻櫎锛氳处鍙疯鎵撻�氬垹闄�");
}
/**
@@ -650,8 +693,10 @@
addUser(userInfo);
}
+ @Transactional
@Override
public void addUser(UserInfo user) {
+
Long maxUid = userInfoMapper.getMaxUid();
if (maxUid == null)
maxUid = 100000L;
@@ -665,13 +710,28 @@
user.setRank(0);
if (StringUtil.isNullOrEmpty(user.getPortrait()))
user.setPortrait(Constant.systemCommonConfig.getDefaultPortrait());
-
userInfoMapper.insertSelective(user);
+
+ // 鏄电О涓虹┖鏃� 榛樿鏄电О
if (StringUtil.isNullOrEmpty(user.getNickName())) {
UserInfo updateUserInfo = new UserInfo(user.getId());
updateUserInfo.setNickName(Constant.systemCommonConfig.getDefaultNickName() + user.getId());
userInfoMapper.updateByPrimaryKeySelective(updateUserInfo);
}
+
+ try {
+ // 绗竴娆$櫥褰曟椂鍒涘缓鐢ㄦ埛棰濆淇℃伅
+ userInfoExtraService.createUserInfoExtra(user.getId());
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+
+ // 娣诲姞璐﹀彿缁戝畾鍘嗗彶
+ if (!StringUtil.isNullOrEmpty(user.getPhone()))
+ userInfoModifyRecordService.addModifyRecord(uid, ModifyTypeEnum.bindPhone, user.getPhone());
+
+ if (!StringUtil.isNullOrEmpty(user.getWxUnionId()))
+ userInfoModifyRecordService.addModifyRecord(uid, ModifyTypeEnum.bindWeiXin, user.getWxUnionId());
}
@Override
@@ -681,7 +741,7 @@
@Override
public void bindPhone(Long uid, String phone) throws UserAccountException {
- UserInfo user = userInfoMapper.selectByPrimaryKey(uid);
+ UserInfo user = userInfoMapper.selectAvailableByPrimaryKey(uid);
if (user == null)
throw new UserAccountException(4, "鐢ㄦ埛涓嶅瓨鍦�");
@@ -696,11 +756,13 @@
update.setPhone(phone);
userInfoMapper.updateByPrimaryKeySelective(update);
userAccountMsgNotificationService.bindingSuccess(uid, MsgAccountDetailFactory.TYPE_PHONE);
+
+ userInfoModifyRecordService.addModifyRecord(uid, ModifyTypeEnum.bindPhone, phone);
}
@Override
public void unBindPhone(Long uid, String phone) throws UserAccountException {
- UserInfo user = userInfoMapper.selectByPrimaryKey(uid);
+ UserInfo user = userInfoMapper.selectAvailableByPrimaryKey(uid);
if (user == null)
throw new UserAccountException(4, "鐢ㄦ埛涓嶅瓨鍦�");
@@ -722,7 +784,7 @@
@Override
public void bindTaoBao(Long uid, String tbOpenId, String tbNickName, String tbPortrait)
throws UserAccountException {
- UserInfo user = userInfoMapper.selectByPrimaryKey(uid);
+ UserInfo user = userInfoMapper.selectAvailableByPrimaryKey(uid);
if (user == null)
throw new UserAccountException(4, "鐢ㄦ埛涓嶅瓨鍦�");
@@ -752,7 +814,7 @@
@Override
public void unBindTaoBao(Long uid) throws UserAccountException {
- UserInfo user = userInfoMapper.selectByPrimaryKey(uid);
+ UserInfo user = userInfoMapper.selectAvailableByPrimaryKey(uid);
if (user == null)
throw new UserAccountException(4, "鐢ㄦ埛涓嶅瓨鍦�");
if (StringUtil.isNullOrEmpty(user.getOpenid()))
@@ -779,11 +841,13 @@
}
@Override
- public void changeWXBind(Long uid, String code) throws UserAccountException {
- UserInfo user = userInfoMapper.selectByPrimaryKey(uid);
+ public void changeWXBind(AcceptData acceptData, Long uid, String code) throws UserAccountException {
+ UserInfo user = userInfoMapper.selectAvailableByPrimaryKey(uid);
if (user == null)
throw new UserAccountException(4, "鐢ㄦ埛涓嶅瓨鍦�");
- WeiXinUser weiXinUser = WXLoginUtil.getWeiXinUserWithSavePortrait(code);
+ WXAccountInfoDTO wxAccount = Constant.getWXAccount(acceptData.getPlatform(), acceptData.getVersion());
+ WeiXinUser weiXinUser = WXLoginUtil.getWeiXinUserWithSavePortrait(code, wxAccount.getAppId(),
+ wxAccount.getAppSecret());
if (weiXinUser == null)
throw new UserAccountException(10, "鑾峰彇寰俊鐢ㄦ埛淇℃伅澶辫触");
if (weiXinUser.getUnionid().equalsIgnoreCase(user.getWxUnionId()))
@@ -791,25 +855,35 @@
UserInfo newUser = getUserInfoByWXUnionId(user.getAppId(), weiXinUser.getUnionid());
if (newUser != null)
- throw new UserAccountException(13, "浜诧紝浣犺鏇存崲缁戝畾鐨勫井淇″彿宸茶鍏朵粬璐﹀彿缁戝畾");
+ throw new UserAccountException(13, "璇ュ井淇″彿宸茶鍏朵粬璐﹀彿缁戝畾");
UserInfo updateUserInfo = new UserInfo(uid);
updateUserInfo.setWxName(weiXinUser.getNickname());
updateUserInfo.setWxOpenId(weiXinUser.getOpenid());
updateUserInfo.setWxPic(weiXinUser.getHeadimgurl());
updateUserInfo.setWxUnionId(weiXinUser.getUnionid());
- updateUserInfo.setNickName(weiXinUser.getNickname());
- updateUserInfo.setPortrait(weiXinUser.getHeadimgurl());
- if (StringUtil.isNullOrEmpty(weiXinUser.getNickname())) {
- updateUserInfo.setNickName(Constant.systemCommonConfig.getDefaultNickName());
+
+ // 灏嗛粯璁ゆ樀绉版浛鎹㈡垚寰俊鏄电О
+ String defaultNickName = Constant.systemCommonConfig.getDefaultNickName();
+ if (!StringUtil.isNullOrEmpty(defaultNickName) && !StringUtil.isNullOrEmpty(weiXinUser.getNickname())) {
+ defaultNickName = defaultNickName + uid;
+ if ((defaultNickName.equals(user.getNickName()) || "鏉挎牀蹇渷".equals(user.getNickName()))) {
+ updateUserInfo.setNickName(weiXinUser.getNickname());
+ }
}
- if (StringUtil.isNullOrEmpty(weiXinUser.getHeadimgurl())) {
- updateUserInfo.setPortrait(Constant.systemCommonConfig.getDefaultPortrait());
+ // 灏嗛粯璁ゅご鍍忔浛鎹㈡垚寰俊澶村儚
+ String defaultPortrait = Constant.systemCommonConfig.getDefaultPortrait();
+ if (!StringUtil.isNullOrEmpty(weiXinUser.getHeadimgurl()) && !StringUtil.isNullOrEmpty(defaultPortrait)
+ && defaultPortrait.equals(user.getPortrait())) {
+ updateUserInfo.setPortrait(weiXinUser.getHeadimgurl());
}
+
userInfoMapper.updateByPrimaryKeySelective(updateUserInfo);
userAccountMsgNotificationService.changeBindingSuccess(uid, MsgAccountDetailFactory.TYPE_WX);
+
+ userInfoModifyRecordService.addModifyRecord(uid, ModifyTypeEnum.bindWeiXin, weiXinUser.getUnionid());
}
@Override
@@ -819,7 +893,7 @@
TimeUtil.getGernalTime(System.currentTimeMillis(), "yyyyMMddHHmmss"));
// 澶囦唤鐢ㄦ埛淇℃伅
- UserInfo user = userInfoMapper.selectByPrimaryKey(uid);
+ UserInfo user = userInfoMapper.selectAvailableByPrimaryKey(uid);
// TODO 澶囦唤璧勯噾鏄庣粏
@@ -856,7 +930,7 @@
public void clearUserPortrait(Long uid) {
if (uid == null)
return;
- UserInfo user = userInfoMapper.selectByPrimaryKey(uid);
+ UserInfo user = userInfoMapper.selectAvailableByPrimaryKey(uid);
String prefix = String.format("/portrait/wx/%s_", user.getWxUnionId());
ObjectListing list = COSManager.getInstance().getObjectList(prefix, null, 30);
if (list != null && list.getObjectSummaries() != null)
@@ -871,7 +945,7 @@
public String repairPortrait(Long uid) {
if (uid == null)
return null;
- UserInfo user = userInfoMapper.selectByPrimaryKey(uid);
+ UserInfo user = userInfoMapper.selectAvailableByPrimaryKey(uid);
if (user == null)
return null;
String prefix = String.format("/portrait/wx/%s_", user.getWxUnionId());
@@ -900,21 +974,19 @@
return user.getPortrait();
}
-
-
@Transactional
@Override
- public UserInfo loginPhone(HttpServletRequest request,int loginType, String vcode, String phone,
- String appId) throws UserAccountException {
+ public UserInfo loginPhone(HttpServletRequest request, int loginType, String vcode, String phone, String appId)
+ throws UserAccountException {
// 绌洪娓呯悊
if (phone == null || phone.trim().length() == 0) {
throw new UserAccountException(1, "璇疯緭鍏ユ墜鏈哄彿鐮�");
}
phone = phone.replaceAll(" ", "");
-
+
// 鑻规灉搴旂敤鍟嗗簵涓婄嚎娴嬭瘯鍙风爜
- if ("17316780233".equalsIgnoreCase(phone) && "258168".equalsIgnoreCase(vcode)) {
+ if ("17316780233".equalsIgnoreCase(phone) && "2581".equalsIgnoreCase(vcode)) {
;
} else {
@@ -924,12 +996,14 @@
String oldVcode = redisManager.getSMSVCode(phone, SMSHistory.TYPE_LOGIN);
LogHelper.test("----------------------鐧诲綍楠岃瘉鐮侊細 " + oldVcode);
- if (StringUtil.isNullOrEmpty(oldVcode) || !oldVcode.equalsIgnoreCase(vcode)) {
- throw new UserAccountException(1, "楠岃瘉鐮侀敊璇紝閲嶆柊杈撳叆");
- }
+ if (!Constant.IS_TEST)
+ if (StringUtil.isNullOrEmpty(oldVcode) || !oldVcode.equalsIgnoreCase(vcode)) {
+ throw new UserAccountException(1, "楠岃瘉鐮侀敊璇紝閲嶆柊杈撳叆");
+ } else {// 楠岃瘉鐮佽緭鍏ユ纭�
+ redisManager.clearSMSVCode(phone, SMSHistory.TYPE_LOGIN);
+ }
}
- redisManager.clearSMSFrequencyLimit(phone, SMSHistory.TYPE_LOGIN);
-
+
JSONObject logInfo = new JSONObject();
logInfo.put("appId", appId);
logInfo.put("phone", phone);
@@ -943,37 +1017,67 @@
throw new UserAccountException(Constant.CODE_FORBIDDEN_USER, Constant.FORBIDDEN_USER_REASON_DESC);
}
- // 鏌ヨ鏄惁瀛樺湪璇ョ數璇濆巻鍙茬敤鎴�
- UserInfo userInfo = userInfoMapper.getEffectiveUserInfoByPhone(phone);
- if (userInfo != null) {
- // 鏇存柊璐︽埛鐧诲綍淇℃伅
- updateLonginInfo(userInfo, loginType, request);
- } else {
- userInfo = new UserInfo();
- userInfo.setAppId(appId);
- userInfo.setNickName(Constant.systemCommonConfig.getDefaultNickName());
- userInfo.setPortrait(Constant.systemCommonConfig.getDefaultPortrait());
- userInfo.setPhone(phone);
- userInfo.setLoginType(loginType);
- userInfo.setState(UserInfo.STATE_NORMAL);
- // 鍒涘缓鐢ㄦ埛
- addUser(userInfo);
-
-
- try {
- // 绗竴娆$櫥褰曟椂鍒涘缓鐢ㄦ埛棰濆淇℃伅
- userInfoExtraService.createUserInfoExtra(userInfo.getId());
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
+ // 娓呯┖闄愬埗
+ redisManager.clearSMSFrequencyLimit(phone, SMSHistory.TYPE_LOGIN);
+ // 娓呯悊娆℃暟
+ redisManager.removeCommonString("sendMSNLoginCount" + phone);
- return userInfo;
+ // 閲囩敤redis浜嬪姟闃叉涓�涓墜鏈哄彿澶氭娉ㄥ唽闂
+ String watchKey = StringUtil.Md5("REGISTER:" + phone);
+ Jedis jedis = jedisPool.getResource();
+ try {
+ jedis.watch(watchKey);
+ if (jedis.get(watchKey) != null && Integer.parseInt(jedis.get(watchKey)) > 1)
+ throw new UserAccountException(10, "璇风◢鍚庡啀璇�");
+ Transaction tran = jedis.multi();
+ tran.incr(watchKey);
+ List<Object> exec = tran.exec();
+ if (exec == null || exec.size() == 0) {
+ throw new UserAccountException(10, "璇风◢鍚庡啀璇�");
+ } else {
+
+ // 鏌ヨ鏄惁瀛樺湪璇ョ數璇濆巻鍙茬敤鎴�
+ UserInfo userInfo = userInfoMapper.getEffectiveUserInfoByPhone(phone);
+ if (userInfo != null) {
+ // 鏇存柊璐︽埛鐧诲綍淇℃伅
+ updateLonginInfo(userInfo, loginType, request);
+ } else {
+ userInfo = new UserInfo();
+ userInfo.setAppId(appId);
+ // userInfo.setNickName(Constant.systemCommonConfig.getDefaultNickName());
+ userInfo.setPortrait(Constant.systemCommonConfig.getDefaultPortrait());
+ userInfo.setPhone(phone);
+ userInfo.setLoginType(loginType);
+ userInfo.setState(UserInfo.STATE_NORMAL);
+ // 鍒涘缓鐢ㄦ埛
+ addUser(userInfo);
+
+ try {
+ // 绗竴娆$櫥褰曟椂鍒涘缓鐢ㄦ埛棰濆淇℃伅
+ userInfoExtraService.createUserInfoExtra(userInfo.getId());
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+
+ userInfoModifyRecordService.addModifyRecord(userInfo.getId(), ModifyTypeEnum.bindPhone, phone);
+ }
+
+ return userInfo;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ } finally {
+ jedis.del(watchKey);
+ jedis.unwatch();
+ jedisPool.returnResource(jedis);
+ }
+ throw new UserAccountException(10, "璇风◢鍚庡啀璇�");
}
-
+
@Transactional
@Override
- public UserInfo loginWinXin(HttpServletRequest request,int loginType, String code, String appId) throws UserAccountException {
+ public UserInfo loginWinXin(HttpServletRequest request, AcceptData acceptData, int loginType, String code,
+ String appId) throws UserAccountException {
// 鏃ュ織淇℃伅
JSONObject logInfo = new JSONObject();
logInfo.put("appId", appId);
@@ -982,7 +1086,113 @@
LogHelper.lgoinInfo(logInfo.toString());
// 閫氳繃Code鎹㈠彇淇℃伅
- WeiXinUser weiXinUser = WXLoginUtil.getWeiXinUserWithSavePortrait(code);
+ WXAccountInfoDTO wxAccount = Constant.getWXAccount(acceptData.getPlatform(), acceptData.getVersion());
+ WeiXinUser weiXinUser = WXLoginUtil.getWeiXinUser(code, wxAccount.getAppId(), wxAccount.getAppSecret());
+ if (weiXinUser == null) {
+ throw new UserAccountException(1, "寰俊甯愬彿鎺堟潈澶辫触");
+ }
+ LogHelper.test("寰俊鎺堟潈鐢ㄦ埛淇℃伅锛�" + new Gson().toJson(weiXinUser));
+
+ // 鍒ゆ柇寰俊unionid鏄惁琚皝绂�
+ ForbiddenUserIdentifyCode identifyCode = forbiddenUserIdentifyCodeService
+ .listByTypeAndIdentifyCode(ForbiddenUserIdentifyCodeTypeEnum.wxUnionId, weiXinUser.getUnionid());
+ if (identifyCode != null && identifyCode.getEffective() != null && identifyCode.getEffective()) {
+ throw new UserAccountException(Constant.CODE_FORBIDDEN_USER, Constant.FORBIDDEN_USER_REASON_DESC);
+ }
+
+ // 閲囩敤redis浜嬪姟闃叉涓�涓井淇″彿澶氭娉ㄥ唽闂
+ String watchKey = StringUtil.Md5("REGISTER:" + weiXinUser.getUnionid());
+ Jedis jedis = jedisPool.getResource();
+ try {
+ jedis.watch(watchKey);
+ if (jedis.get(watchKey) != null && Integer.parseInt(jedis.get(watchKey)) > 1)
+ throw new UserAccountException(10, "璇风◢鍚庡啀璇�");
+ Transaction tran = jedis.multi();
+ tran.incr(watchKey);
+ List<Object> exec = tran.exec();
+ if (exec == null || exec.size() == 0) {
+ throw new UserAccountException(10, "璇风◢鍚庡啀璇�");
+ } else {
+
+ UserInfo userInfo = userInfoMapper.getEffectiveUserInfoByWXUnionId(weiXinUser.getUnionid());
+ // 鐩存帴鐢ㄧ殑寰俊鐧诲綍
+ if (userInfo != null) {
+ LogHelper.test("寰俊unionID瀛樺湪:" + weiXinUser.getUnionid());
+ // 鏇存柊璐︽埛鐧诲綍淇℃伅
+ updateLonginInfo(userInfo, loginType, request);
+ // 鍒犻櫎閭�璇峰垎浜浘
+ spreadUserImgService.deleteImgUrl(userInfo.getId());
+ } else {
+ LogHelper.test("寰俊unionID涓嶅瓨鍦�:" + weiXinUser.getUnionid());
+
+ String portrait = null;
+ if (!StringUtil.isNullOrEmpty(weiXinUser.getHeadimgurl())) {
+ InputStream asInputStream = HttpUtil.getAsInputStream(weiXinUser.getHeadimgurl());
+ if (asInputStream != null) {
+ FileUploadResult result = COSManager.getInstance().uploadFile(asInputStream,
+ String.format("/portrait/wx/%s_%s.jpg", weiXinUser.getUnionid(),
+ System.currentTimeMillis() + ""));
+ if (result != null && !StringUtil.isNullOrEmpty(result.getUrl()))
+ portrait = result.getUrl();
+ } else {
+ portrait = weiXinUser.getHeadimgurl();
+ }
+ }
+
+ if (StringUtil.isNullOrEmpty(portrait))
+ portrait = Constant.systemCommonConfig.getDefaultPortrait();
+
+ // 鍒涘缓鏂拌处鎴�
+ userInfo = new UserInfo();
+ userInfo.setPortrait(portrait);
+ userInfo.setAppId(appId);
+ userInfo.setNickName(weiXinUser.getNickname());
+ userInfo.setWxName(weiXinUser.getNickname());
+ userInfo.setWxOpenId(weiXinUser.getOpenid());
+ userInfo.setWxUnionId(weiXinUser.getUnionid());
+ userInfo.setWxPic(weiXinUser.getHeadimgurl());
+ userInfo.setLastLoginTime(System.currentTimeMillis());
+ userInfo.setLoginType(loginType);
+ userInfo.setLastLoginIp(request.getRemoteHost());
+ userInfo.setState(UserInfo.STATE_NORMAL);
+ addUser(userInfo);
+
+ try {
+ // 绗竴娆$櫥褰曟椂鍒涘缓鐢ㄦ埛棰濆淇℃伅
+ userInfoExtraService.createUserInfoExtra(userInfo.getId());
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+
+ userInfoModifyRecordService.addModifyRecord(userInfo.getId(), ModifyTypeEnum.bindWeiXin,
+ weiXinUser.getUnionid());
+ }
+ return userInfo;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ } finally {
+ jedis.del(watchKey);
+ jedis.unwatch();
+ jedisPool.returnResource(jedis);
+ }
+ throw new UserAccountException(10, "璇风◢鍚庡啀璇�");
+ }
+
+ @Transactional
+ @Override
+ public UserInfo loginWeiXinNew(HttpServletRequest request, AcceptData acceptData, int loginType, String wxCode,
+ String appId) throws UserAccountException {
+ // 鏃ュ織淇℃伅
+ JSONObject logInfo = new JSONObject();
+ logInfo.put("appId", appId);
+ logInfo.put("wxCode", wxCode);
+ logInfo.put("loginType", loginType);
+ LogHelper.lgoinInfo(logInfo.toString());
+
+ // 閫氳繃Code鎹㈠彇淇℃伅
+ WXAccountInfoDTO wxAccount = Constant.getWXAccount(acceptData.getPlatform(), acceptData.getVersion());
+ WeiXinUser weiXinUser = WXLoginUtil.getWeiXinUser(wxCode, wxAccount.getAppId(), wxAccount.getAppSecret());
if (weiXinUser == null) {
throw new UserAccountException(1, "寰俊甯愬彿鎺堟潈澶辫触");
}
@@ -996,38 +1206,26 @@
}
UserInfo userInfo = userInfoMapper.getEffectiveUserInfoByWXUnionId(weiXinUser.getUnionid());
- // 鐩存帴鐢ㄧ殑寰俊鐧诲綍
- if (userInfo != null) {
- // 鏇存柊璐︽埛鐧诲綍淇℃伅
- updateLonginInfo(userInfo, loginType, request);
- } else {
- // 鍒涘缓鏂拌处鎴�
- userInfo = new UserInfo();
- userInfo.setPortrait(weiXinUser.getHeadimgurl());
- userInfo.setAppId(appId);
- userInfo.setNickName(weiXinUser.getNickname());
- userInfo.setWxName(weiXinUser.getNickname());
- userInfo.setWxOpenId(weiXinUser.getOpenid());
- userInfo.setWxUnionId(weiXinUser.getUnionid());
- userInfo.setWxPic(weiXinUser.getHeadimgurl());
- userInfo.setLastLoginTime(System.currentTimeMillis());
- userInfo.setLoginType(loginType);
- userInfo.setLastLoginIp(request.getRemoteHost());
- userInfo.setState(UserInfo.STATE_NORMAL);
- addUser(userInfo);
-
- try {
- // 绗竴娆$櫥褰曟椂鍒涘缓鐢ㄦ埛棰濆淇℃伅
- userInfoExtraService.createUserInfoExtra(userInfo.getId());
- } catch (Exception e) {
- e.printStackTrace();
- }
+ if (userInfo == null) {
+ String longinKey = StringUtil.Md5("WXLogin:" + weiXinUser.getUnionid());
+ redisManager.cacheCommonString(longinKey, JsonUtil.getSimpleGson().toJson(weiXinUser), 60 * 20);
+ throw new UserAccountException(101, longinKey);
}
+ // 鏇存柊璐︽埛鐧诲綍淇℃伅
+ updateLonginInfo(userInfo, loginType, request);
+ Long uid = userInfo.getId();
+ ThreadUtil.run(new Runnable() {
+ public void run() {
+ // 鍒犻櫎閭�璇峰垎浜浘
+ spreadUserImgService.deleteImgUrl(uid);
+ }
+ });
return userInfo;
}
-
+
/**
* 鏇存柊璐︽埛鐧诲綍淇℃伅
+ *
* @param userInfo
* @param loginType
* @param request
@@ -1040,15 +1238,14 @@
updateUserInfo.setLastLoginIp(request.getRemoteHost());
userInfoMapper.updateByPrimaryKeySelective(updateUserInfo);
}
-
-
+
@Override
public void bindPhoneNew(Long uid, String phone) throws UserAccountException {
- UserInfo user = userInfoMapper.selectByPrimaryKey(uid);
+ UserInfo user = userInfoMapper.selectAvailableByPrimaryKey(uid);
if (user == null) {
throw new UserAccountException(1, "鐢ㄦ埛涓嶅瓨鍦�");
}
-
+
String hasPhone = user.getPhone();
if (!StringUtil.isNullOrEmpty(hasPhone) && hasPhone.equals(phone)) {
throw new UserAccountException(2, "鎮ㄥ凡缁忕粦瀹氫簡璇ョ數璇濆彿鐮�");
@@ -1058,61 +1255,322 @@
if (phoneUser != null) {
throw new UserAccountException(2, "鍙风爜宸茬粡琚崰鐢�");
}
-
+
// 鏇存柊鐢佃瘽鍙风爜
UserInfo update = new UserInfo(user.getId());
update.setPhone(phone);
userInfoMapper.updateByPrimaryKeySelective(update);
-
+ // 鍔犲叆缁戝畾璁板綍
+ UserAccountBindingHistory history = new UserAccountBindingHistory();
+ history.setContent(phone);
+ history.setType(UserAccountBindingHistory.TYPE_PHONE);
+ history.setUid(uid);
+
+ // 涔嬪墠宸茬粡缁戝畾鐢佃瘽鍙风爜
+ if (!StringUtil.isNullOrEmpty(user.getPhone()))
+ history.setFirst(false);
+ else
+ history.setFirst(true);
+ userAccountBindingHistoryService.addUserAccountBindingHistory(history);
+
// 鍙戦�佹秷鎭�
userAccountMsgNotificationService.bindingSuccess(uid, MsgAccountDetailFactory.TYPE_PHONE);
+
+ userInfoModifyRecordService.addModifyRecord(uid, ModifyTypeEnum.bindPhone, phone);
+
}
-
-
+
@Override
- public void bindWeiXin(Long uid, String code) throws UserAccountException {
- UserInfo user = userInfoMapper.selectByPrimaryKey(uid);
+ public void bindWeiXin(AcceptData acceptData, Long uid, String code) throws UserAccountException {
+ UserInfo user = userInfoMapper.selectAvailableByPrimaryKey(uid);
if (user == null) {
throw new UserAccountException(1, "鐢ㄦ埛涓嶅瓨鍦�");
}
-
- WeiXinUser weiXinUser = WXLoginUtil.getWeiXinUserWithSavePortrait(code);
+ WXAccountInfoDTO wxAccount = Constant.getWXAccount(acceptData.getPlatform(), acceptData.getVersion());
+ WeiXinUser weiXinUser = WXLoginUtil.getWeiXinUser(code, wxAccount.getAppId(), wxAccount.getAppSecret());
if (weiXinUser == null) {
throw new UserAccountException(2, "寰俊甯愬彿鎺堟潈澶辫触");
}
-
- if (weiXinUser.getUnionid().equalsIgnoreCase(user.getWxUnionId())) {
+
+ String wxUnionId = weiXinUser.getUnionid();
+ if (StringUtil.isNullOrEmpty(wxUnionId)) {
+ throw new UserAccountException(2, "寰俊甯愬彿鎺堟潈澶辫触");
+ }
+
+ String wxUnionIdExist = user.getWxUnionId();
+ if (StringUtil.isNullOrEmpty(wxUnionIdExist)) {
+ UserInfo newUser = userInfoMapper.getEffectiveUserInfoByWXUnionId(wxUnionId);
+ if (newUser != null) {
+ throw new UserAccountException(4, "璇ュ井淇″彿宸茶鍏朵粬甯愬彿缁戝畾");
+ }
+ } else if (wxUnionId.equalsIgnoreCase(wxUnionIdExist)) {
throw new UserAccountException(3, "寰俊甯愬彿涓�鑷存棤闇�鏇存崲");
}
-
- UserInfo newUser = userInfoMapper.getEffectiveUserInfoByWXUnionId(weiXinUser.getUnionid());
- if (newUser != null) {
- throw new UserAccountException(4, "璇ュ井淇″彿宸茶鍏朵粬甯愬彿缁戝畾");
- }
-
- String wxUnionId = user.getWxUnionId();
- if (!StringUtil.isNullOrEmpty(wxUnionId) && StringUtil.isNullOrEmpty(user.getPhone())) {
+
+ if (StringUtil.isNullOrEmpty(user.getPhone())) {
throw new UserAccountException(5, "璇ュ笎鍙锋病鏈夌粦瀹氭墜鏈哄彿鐮侊紝闇�缁戝畾鎵嬫満鍙风爜鎵嶈兘瀹屾垚寰俊鏇存崲");
}
-
-
+
UserInfo updateUserInfo = new UserInfo(uid);
updateUserInfo.setWxName(weiXinUser.getNickname());
updateUserInfo.setWxOpenId(weiXinUser.getOpenid());
updateUserInfo.setWxPic(weiXinUser.getHeadimgurl());
updateUserInfo.setWxUnionId(weiXinUser.getUnionid());
- updateUserInfo.setNickName(weiXinUser.getNickname());
- updateUserInfo.setPortrait(weiXinUser.getHeadimgurl());
- if (StringUtil.isNullOrEmpty(weiXinUser.getNickname())) {
- updateUserInfo.setNickName(Constant.systemCommonConfig.getDefaultNickName());
+
+ // 灏嗛粯璁ゆ樀绉版浛鎹㈡垚寰俊鏄电О
+ String defaultNickName = Constant.systemCommonConfig.getDefaultNickName();
+ if (!StringUtil.isNullOrEmpty(defaultNickName) && !StringUtil.isNullOrEmpty(weiXinUser.getNickname())) {
+ defaultNickName = defaultNickName + uid;
+ if ((defaultNickName.equals(user.getNickName()) || "鏉挎牀蹇渷".equals(user.getNickName()))) {
+ updateUserInfo.setNickName(weiXinUser.getNickname());
+ }
}
- if (StringUtil.isNullOrEmpty(weiXinUser.getHeadimgurl())) {
- updateUserInfo.setPortrait(Constant.systemCommonConfig.getDefaultPortrait());
+ // 灏嗛粯璁ゅご鍍忔浛鎹㈡垚寰俊澶村儚
+ String defaultPortrait = Constant.systemCommonConfig.getDefaultPortrait();
+ if (!StringUtil.isNullOrEmpty(weiXinUser.getHeadimgurl()) && !StringUtil.isNullOrEmpty(defaultPortrait)
+ && defaultPortrait.equals(user.getPortrait())) {
+ String headimgurl = weiXinUser.getHeadimgurl();
+ InputStream asInputStream = HttpUtil.getAsInputStream(headimgurl);
+ if (asInputStream == null) {
+ LogHelper.test("寰俊澶村儚涓嬭浇澶辫触: " + weiXinUser.getUnionid() + " " + headimgurl);
+ } else {
+ FileUploadResult result = COSManager.getInstance().uploadFile(asInputStream, String
+ .format("/portrait/wx/%s_%s.jpg", weiXinUser.getUnionid(), System.currentTimeMillis() + ""));
+ if (result != null && !StringUtil.isNullOrEmpty(result.getUrl())) {
+ headimgurl = result.getUrl();
+ } else {
+ LogHelper.test("寰俊澶村儚涓婁紶澶辫触: " + weiXinUser.getUnionid() + " " + headimgurl);
+ }
+ }
+ updateUserInfo.setPortrait(headimgurl);
}
userInfoMapper.updateByPrimaryKeySelective(updateUserInfo);
+ // 鍔犲叆缁戝畾璁板綍
+ UserAccountBindingHistory history = new UserAccountBindingHistory();
+ history.setContent(weiXinUser.getUnionid());
+ history.setType(UserAccountBindingHistory.TYPE_WX);
+ history.setUid(uid);
+
+ // 涔嬪墠宸茬粡缁戝畾鐢佃瘽鍙风爜
+ if (!StringUtil.isNullOrEmpty(user.getWxUnionId()))
+ history.setFirst(false);
+ else
+ history.setFirst(true);
+ userAccountBindingHistoryService.addUserAccountBindingHistory(history);
+
userAccountMsgNotificationService.bindingSuccess(uid, MsgAccountDetailFactory.TYPE_WX);
+
+ userInfoModifyRecordService.addModifyRecord(uid, ModifyTypeEnum.bindWeiXin, wxUnionId);
}
-
+
+ @Override
+ public UserInfo bindPhoneToLogin(String phone, String key, String appId, HttpServletRequest request)
+ throws UserAccountException {
+ UserInfo phoneUser = userInfoMapper.getEffectiveUserInfoByPhone(phone);
+ if (phoneUser != null)
+ throw new UserAccountException(1, "鍙风爜宸茬粡琚崰鐢�");
+
+ // 鍒ゆ柇鎵嬫満鍙风爜鏄惁琚皝绂�
+ ForbiddenUserIdentifyCode identifyCode1 = forbiddenUserIdentifyCodeService
+ .listByTypeAndIdentifyCode(ForbiddenUserIdentifyCodeTypeEnum.phone, phone);
+ if (identifyCode1 != null && identifyCode1.getEffective() != null && identifyCode1.getEffective())
+ throw new UserAccountException(Constant.CODE_FORBIDDEN_USER, Constant.FORBIDDEN_USER_REASON_DESC);
+
+ String value = redisManager.getCommonString(key);
+ if (StringUtil.isNullOrEmpty(value))
+ throw new UserAccountException(1, "寰俊鎺堟潈澶辨晥锛岃浣跨敤寰俊閲嶆柊鐧诲綍");
+
+ WeiXinUser weiXinUser = JsonUtil.getSimpleGson().fromJson(value, WeiXinUser.class);
+ if (weiXinUser == null)
+ throw new UserAccountException(1, "寰俊鎺堟潈澶辨晥锛岃浣跨敤寰俊閲嶆柊鐧诲綍");
+
+ UserInfo userInfo = userInfoMapper.getEffectiveUserInfoByWXUnionId(weiXinUser.getUnionid());
+ // 鐩存帴鐢ㄧ殑寰俊鐧诲綍
+ if (userInfo != null)
+ throw new UserAccountException(10, "璇ュ井淇″彿宸茶鍗犵敤");
+
+ String portrait = null;
+ if (!StringUtil.isNullOrEmpty(weiXinUser.getHeadimgurl())) {
+ InputStream asInputStream = HttpUtil.getAsInputStream(weiXinUser.getHeadimgurl());
+ if (asInputStream != null) {
+ FileUploadResult result = COSManager.getInstance().uploadFile(asInputStream, String
+ .format("/portrait/wx/%s_%s.jpg", weiXinUser.getUnionid(), System.currentTimeMillis() + ""));
+ if (result != null && !StringUtil.isNullOrEmpty(result.getUrl()))
+ portrait = result.getUrl();
+ } else {
+ portrait = weiXinUser.getHeadimgurl();
+ }
+ }
+
+ if (StringUtil.isNullOrEmpty(portrait))
+ portrait = Constant.systemCommonConfig.getDefaultPortrait();
+
+ // 鍒涘缓鏂拌处鎴�
+ userInfo = new UserInfo();
+ userInfo.setPhone(phone);
+ userInfo.setPortrait(portrait);
+ userInfo.setAppId(appId);
+ userInfo.setNickName(weiXinUser.getNickname());
+ userInfo.setWxName(weiXinUser.getNickname());
+ userInfo.setWxOpenId(weiXinUser.getOpenid());
+ userInfo.setWxUnionId(weiXinUser.getUnionid());
+ userInfo.setWxPic(weiXinUser.getHeadimgurl());
+ userInfo.setLastLoginTime(System.currentTimeMillis());
+ userInfo.setLoginType(2);
+ userInfo.setLastLoginIp(request.getRemoteHost());
+ userInfo.setState(UserInfo.STATE_NORMAL);
+ addUser(userInfo);
+
+ Long uid = userInfo.getId();
+ ThreadUtil.run(new Runnable() {
+ public void run() {
+ try {
+ // 绗竴娆$櫥褰曟椂鍒涘缓鐢ㄦ埛棰濆淇℃伅
+ userInfoExtraService.createUserInfoExtra(uid);
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+
+ // 鍔犲叆缁戝畾璁板綍
+ UserAccountBindingHistory history = new UserAccountBindingHistory();
+ history.setContent(phone);
+ history.setType(UserAccountBindingHistory.TYPE_PHONE);
+ history.setUid(uid);
+ history.setFirst(true);
+ userAccountBindingHistoryService.addUserAccountBindingHistory(history);
+
+ userInfoModifyRecordService.addModifyRecord(uid, ModifyTypeEnum.bindPhone, phone);
+ userInfoModifyRecordService.addModifyRecord(uid, ModifyTypeEnum.bindWeiXin, weiXinUser.getUnionid());
+ }
+ });
+ // 鍒犻櫎缂撳瓨
+ redisManager.removeCommonString(key);
+
+ return userInfo;
+ }
+
+ @Override
+ public void forbiddenUserAll(Long uid, String reason) {
+ UserInfo currentInfo = userInfoService.selectByPKey(uid);
+ if (currentInfo == null) {
+ return;
+ }
+ if (currentInfo.getState() != UserInfo.STATE_NORMAL) {
+ return;
+ }
+
+ currentInfo.setState(UserInfo.STATE_FORBIDDEN);
+ currentInfo.setStateDesc(reason);
+ userInfoService.updateByPrimaryKeySelective(currentInfo);
+
+ // 鎻掑叆璁板綍
+ userInfoDeleteRecordService.addDeleteRecord(uid, UserInfo.STATE_FORBIDDEN, reason);
+
+ // 鍔犲叆灏佺鐨勮处鍙峰垪琛�
+ ForbiddenUserIdentifyCode forbiddenUserIdentifyCode = new ForbiddenUserIdentifyCode();
+ forbiddenUserIdentifyCode.setType(ForbiddenUserIdentifyCodeTypeEnum.wxUnionId);
+ forbiddenUserIdentifyCode.setIdentifyCode(currentInfo.getWxUnionId());
+ forbiddenUserIdentifyCode.setBeiZhu(currentInfo.getWxName());
+ try {
+ forbiddenUserIdentifyCodeService.forbiddenIdentifyCode(forbiddenUserIdentifyCode);
+ } catch (ForbiddenUserIdentifyCodeException e) {
+ e.printStackTrace();
+ }
+
+ // 鐢佃瘽鍙风爜
+ forbiddenUserIdentifyCode = new ForbiddenUserIdentifyCode();
+ forbiddenUserIdentifyCode.setType(ForbiddenUserIdentifyCodeTypeEnum.phone);
+ forbiddenUserIdentifyCode.setIdentifyCode(currentInfo.getPhone());
+ try {
+ forbiddenUserIdentifyCodeService.forbiddenIdentifyCode(forbiddenUserIdentifyCode);
+ } catch (ForbiddenUserIdentifyCodeException e) {
+ e.printStackTrace();
+ }
+
+ // 娣樺疂
+ UserExtraTaoBaoInfo taoBao = userExtraTaoBaoInfoService.getByUid(uid);
+ if (taoBao != null && !StringUtil.isNullOrEmpty(taoBao.getTaoBaoUid())) {
+ forbiddenUserIdentifyCode = new ForbiddenUserIdentifyCode();
+ forbiddenUserIdentifyCode.setType(ForbiddenUserIdentifyCodeTypeEnum.taobaoUid);
+ forbiddenUserIdentifyCode.setIdentifyCode(taoBao.getTaoBaoUid());
+ try {
+ forbiddenUserIdentifyCodeService.forbiddenIdentifyCode(forbiddenUserIdentifyCode);
+ } catch (ForbiddenUserIdentifyCodeException e) {
+ e.printStackTrace();
+ }
+ }
+
+ // 鏌ヨ鏀粯瀹濈粦瀹�
+ List<BindingAccount> list = bindingAccountService.getBindingAccountByUid(uid);
+ if (list != null) {
+ for (BindingAccount ba : list) {
+ forbiddenUserIdentifyCode = new ForbiddenUserIdentifyCode();
+ forbiddenUserIdentifyCode.setType(ForbiddenUserIdentifyCodeTypeEnum.alipayAccount);
+ forbiddenUserIdentifyCode.setIdentifyCode(ba.getAccount());
+ forbiddenUserIdentifyCode.setBeiZhu(ba.getName());
+ try {
+ forbiddenUserIdentifyCodeService.forbiddenIdentifyCode(forbiddenUserIdentifyCode);
+ } catch (ForbiddenUserIdentifyCodeException e) {
+ e.printStackTrace();
+ }
+ }
+ }
+ }
+
+ @Override
+ public void forbiddenUser(Long uid, String reason) {
+ UserInfo currentInfo = userInfoService.selectByPKey(uid);
+ if (currentInfo == null) {
+ return;
+ }
+
+ if (currentInfo.getState() != UserInfo.STATE_NORMAL) {
+ return;
+ }
+
+ currentInfo.setState(UserInfo.STATE_FORBIDDEN);
+ currentInfo.setStateDesc(reason);
+ userInfoService.updateByPrimaryKeySelective(currentInfo);
+
+ // 鎻掑叆璁板綍
+ userInfoDeleteRecordService.addDeleteRecord(uid, UserInfo.STATE_FORBIDDEN, reason);
+ }
+
+ @Override
+ public void DeleteUser(Long uid, String reason) {
+ UserInfo currentInfo = userInfoService.selectByPKey(uid);
+ if (currentInfo == null) {
+ return;
+ }
+
+ if (currentInfo.getState() != UserInfo.STATE_NORMAL) {
+ return;
+ }
+
+ currentInfo.setState(UserInfo.STATE_DELETE);
+ currentInfo.setStateDesc(reason);
+ userInfoService.updateByPrimaryKeySelective(currentInfo);
+ // 鎻掑叆璁板綍
+ userInfoDeleteRecordService.addDeleteRecord(uid, UserInfo.STATE_DELETE, reason);
+ }
+
+ @Override
+ public void DeleteUserOutOfDate(Long uid, String reason) {
+ UserInfo currentInfo = userInfoService.selectByPKey(uid);
+ if (currentInfo == null) {
+ return;
+ }
+
+ if (currentInfo.getState() != UserInfo.STATE_NORMAL) {
+ return;
+ }
+
+ currentInfo.setState(UserInfo.STATE_DELETE_OUT_OF_DATE);
+ currentInfo.setStateDesc(reason);
+ userInfoService.updateByPrimaryKeySelective(currentInfo);
+ // 鎻掑叆璁板綍
+ userInfoDeleteRecordService.addDeleteRecord(uid, UserInfo.STATE_DELETE_OUT_OF_DATE, reason);
+ }
}
--
Gitblit v1.8.0