From 009e25b40c04d0a66d6d6554c19e542f0e6f9d18 Mon Sep 17 00:00:00 2001
From: admin <weikou2014>
Date: 星期二, 23 七月 2019 10:49:58 +0800
Subject: [PATCH] 根据粘贴板推荐修改
---
fanli/src/main/java/com/yeshi/fanli/service/impl/user/UserAccountServiceImpl.java | 208 ++++++++++++++++++++++++++++++++--------------------
1 files changed, 128 insertions(+), 80 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 fd9f289..9185a59 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
@@ -57,6 +57,9 @@
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 {
@@ -66,7 +69,7 @@
@Resource
private UserInfoMapper userInfoMapper;
-
+
@Resource
private UserInfoService userInfoService;
@@ -99,10 +102,12 @@
@Resource
private UserAccountBindingHistoryService userAccountBindingHistoryService;
-
+
@Resource
private UserInfoDeleteRecordService userInfoDeleteRecordService;
-
+
+ @Resource
+ private JedisPool jedisPool;
@Transactional
@Override
@@ -548,8 +553,7 @@
int addCount = 0;
userAccountMsgNotificationService.connectSuccess(mainUser.getId(), lessUser.getId());
-
-
+
userInfoDeleteRecordService.addDeleteRecord(lessUser.getId(), UserInfo.STATE_DELETE, "鍒犻櫎锛氳处鍙疯鎵撻�氬垹闄�");
}
@@ -671,6 +675,7 @@
@Override
public void addUser(UserInfo user) {
+
Long maxUid = userInfoMapper.getMaxUid();
if (maxUid == null)
maxUid = 100000L;
@@ -691,14 +696,13 @@
updateUserInfo.setNickName(Constant.systemCommonConfig.getDefaultNickName() + user.getId());
userInfoMapper.updateByPrimaryKeySelective(updateUserInfo);
}
-
+
try {
// 绗竴娆$櫥褰曟椂鍒涘缓鐢ㄦ埛棰濆淇℃伅
userInfoExtraService.createUserInfoExtra(user.getId());
} catch (Exception e) {
e.printStackTrace();
}
-
}
@Override
@@ -949,9 +953,12 @@
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);
+ }
}
JSONObject logInfo = new JSONObject();
@@ -972,31 +979,54 @@
// 娓呯悊娆℃暟
redisManager.removeCommonString("sendMSNLoginCount" + phone);
- // 鏌ヨ鏄惁瀛樺湪璇ョ數璇濆巻鍙茬敤鎴�
- 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);
+ // 閲囩敤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();
+ try {
+ // 绗竴娆$櫥褰曟椂鍒涘缓鐢ㄦ埛棰濆淇℃伅
+ userInfoExtraService.createUserInfoExtra(userInfo.getId());
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+
+ return userInfo;
}
+ } catch (Exception e) {
+ e.printStackTrace();
+ } finally {
+ jedis.del(watchKey);
+ jedis.unwatch();
+ jedisPool.returnResource(jedis);
}
-
- return userInfo;
+ throw new UserAccountException(10, "璇风◢鍚庡啀璇�");
}
@Transactional
@@ -1024,39 +1054,62 @@
throw new UserAccountException(Constant.CODE_FORBIDDEN_USER, Constant.FORBIDDEN_USER_REASON_DESC);
}
- 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());
- // 鍒涘缓鏂拌处鎴�
- 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);
+ // 閲囩敤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 {
- try {
- // 绗竴娆$櫥褰曟椂鍒涘缓鐢ㄦ埛棰濆淇℃伅
- userInfoExtraService.createUserInfoExtra(userInfo.getId());
- } catch (Exception e) {
- e.printStackTrace();
+ 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());
+ // 鍒涘缓鏂拌处鎴�
+ 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();
+ }
+ }
+ return userInfo;
}
+ } catch (Exception e) {
+ e.printStackTrace();
+ } finally {
+ jedis.del(watchKey);
+ jedis.unwatch();
+ jedisPool.returnResource(jedis);
}
- return userInfo;
+ throw new UserAccountException(10, "璇风◢鍚庡啀璇�");
}
/**
@@ -1124,12 +1177,12 @@
if (weiXinUser == null) {
throw new UserAccountException(2, "寰俊甯愬彿鎺堟潈澶辫触");
}
-
+
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);
@@ -1149,14 +1202,14 @@
updateUserInfo.setWxOpenId(weiXinUser.getOpenid());
updateUserInfo.setWxPic(weiXinUser.getHeadimgurl());
updateUserInfo.setWxUnionId(weiXinUser.getUnionid());
-
+
// 灏嗛粯璁ゆ樀绉版浛鎹㈡垚寰俊鏄电О
String defaultNickName = Constant.systemCommonConfig.getDefaultNickName();
if (!StringUtil.isNullOrEmpty(weiXinUser.getNickname()) && !StringUtil.isNullOrEmpty(defaultNickName)
&& defaultNickName.equals(user.getNickName())) {
updateUserInfo.setNickName(weiXinUser.getNickname());
- }
-
+ }
+
// 灏嗛粯璁ゅご鍍忔浛鎹㈡垚寰俊澶村儚
String defaultPortrait = Constant.systemCommonConfig.getDefaultPortrait();
if (!StringUtil.isNullOrEmpty(weiXinUser.getHeadimgurl()) && !StringUtil.isNullOrEmpty(defaultPortrait)
@@ -1181,8 +1234,6 @@
userAccountMsgNotificationService.bindingSuccess(uid, MsgAccountDetailFactory.TYPE_WX);
}
-
-
@Override
public void forbiddenUserAll(Long uid, String reason) {
UserInfo currentInfo = userInfoService.selectByPKey(uid);
@@ -1196,7 +1247,7 @@
currentInfo.setState(UserInfo.STATE_FORBIDDEN);
currentInfo.setStateDesc(reason);
userInfoService.updateByPrimaryKeySelective(currentInfo);
-
+
// 鎻掑叆璁板綍
userInfoDeleteRecordService.addDeleteRecord(uid, UserInfo.STATE_FORBIDDEN, reason);
@@ -1250,15 +1301,14 @@
}
}
}
-
-
+
@Override
public void forbiddenUser(Long uid, String reason) {
UserInfo currentInfo = userInfoService.selectByPKey(uid);
if (currentInfo == null) {
return;
}
-
+
if (currentInfo.getState() != UserInfo.STATE_NORMAL) {
return;
}
@@ -1266,19 +1316,18 @@
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;
}
@@ -1289,15 +1338,14 @@
// 鎻掑叆璁板綍
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;
}
--
Gitblit v1.8.0