From 08bc0a13c0c2e00658e5ea63839893e73902810f Mon Sep 17 00:00:00 2001
From: yujian <yujian@123.com>
Date: 星期五, 23 八月 2019 11:07:39 +0800
Subject: [PATCH] 金币任务
---
fanli/src/main/java/com/yeshi/fanli/service/impl/user/UserAccountServiceImpl.java | 313 +++++++++++++++++++++++++++++++++++++++++----------
1 files changed, 251 insertions(+), 62 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 c0a3b20..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
@@ -31,9 +31,11 @@
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.WeiXinUser;
import com.yeshi.fanli.exception.UserAccountException;
+import com.yeshi.fanli.exception.user.ForbiddenUserIdentifyCodeException;
import com.yeshi.fanli.log.LogHelper;
import com.yeshi.fanli.service.inter.hongbao.ThreeSaleSerivce;
import com.yeshi.fanli.service.inter.msg.UserAccountMsgNotificationService;
@@ -43,7 +45,9 @@
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.UserInfoService;
import com.yeshi.fanli.util.Constant;
import com.yeshi.fanli.util.FileUtil;
import com.yeshi.fanli.util.RedisManager;
@@ -53,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 {
@@ -62,6 +69,9 @@
@Resource
private UserInfoMapper userInfoMapper;
+
+ @Resource
+ private UserInfoService userInfoService;
@Resource
private BindingAccountService bindingAccountService;
@@ -92,6 +102,12 @@
@Resource
private UserAccountBindingHistoryService userAccountBindingHistoryService;
+
+ @Resource
+ private UserInfoDeleteRecordService userInfoDeleteRecordService;
+
+ @Resource
+ private JedisPool jedisPool;
@Transactional
@Override
@@ -537,6 +553,8 @@
int addCount = 0;
userAccountMsgNotificationService.connectSuccess(mainUser.getId(), lessUser.getId());
+
+ userInfoDeleteRecordService.addDeleteRecord(lessUser.getId(), UserInfo.STATE_DELETE, "鍒犻櫎锛氳处鍙疯鎵撻�氬垹闄�");
}
/**
@@ -657,6 +675,7 @@
@Override
public void addUser(UserInfo user) {
+
Long maxUid = userInfoMapper.getMaxUid();
if (maxUid == null)
maxUid = 100000L;
@@ -677,14 +696,13 @@
updateUserInfo.setNickName(Constant.systemCommonConfig.getDefaultNickName() + user.getId());
userInfoMapper.updateByPrimaryKeySelective(updateUserInfo);
}
-
+
try {
// 绗竴娆$櫥褰曟椂鍒涘缓鐢ㄦ埛棰濆淇℃伅
userInfoExtraService.createUserInfoExtra(user.getId());
} catch (Exception e) {
e.printStackTrace();
}
-
}
@Override
@@ -935,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();
@@ -958,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
@@ -1010,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, "璇风◢鍚庡啀璇�");
}
/**
@@ -1110,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);
@@ -1135,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)
@@ -1167,4 +1234,126 @@
userAccountMsgNotificationService.bindingSuccess(uid, MsgAccountDetailFactory.TYPE_WX);
}
+ @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