From 28a0efc6ec16f3f82eb8e16e87269300d6744fd4 Mon Sep 17 00:00:00 2001
From: admin <weikou2014>
Date: 星期三, 25 九月 2019 19:18:17 +0800
Subject: [PATCH] 金币版本拦截与频率拦截bug修改

---
 fanli/src/main/java/com/yeshi/fanli/service/impl/user/UserAccountServiceImpl.java |  139 +++++++++++++++++++++++++++++++--------------
 1 files changed, 95 insertions(+), 44 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 9185a59..026e03c 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
@@ -12,6 +12,7 @@
 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.JsonUtil;
@@ -23,6 +24,8 @@
 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;
@@ -33,21 +36,23 @@
 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;
@@ -109,10 +114,15 @@
 	@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);
@@ -174,7 +184,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));
@@ -355,7 +367,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;
@@ -364,8 +376,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);
@@ -389,7 +401,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, "鏃犳硶鑾峰彇鍒板井淇′釜浜轰俊鎭�");
 
@@ -689,8 +703,9 @@
 		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());
@@ -703,6 +718,13 @@
 		} 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
@@ -712,7 +734,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, "鐢ㄦ埛涓嶅瓨鍦�");
 
@@ -727,11 +749,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, "鐢ㄦ埛涓嶅瓨鍦�");
 
@@ -753,7 +777,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, "鐢ㄦ埛涓嶅瓨鍦�");
 
@@ -783,7 +807,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()))
@@ -810,11 +834,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()))
@@ -822,25 +848,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
@@ -850,7 +886,7 @@
 				TimeUtil.getGernalTime(System.currentTimeMillis(), "yyyyMMddHHmmss"));
 
 		// 澶囦唤鐢ㄦ埛淇℃伅
-		UserInfo user = userInfoMapper.selectByPrimaryKey(uid);
+		UserInfo user = userInfoMapper.selectAvailableByPrimaryKey(uid);
 
 		// TODO 澶囦唤璧勯噾鏄庣粏
 
@@ -887,7 +923,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)
@@ -902,7 +938,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());
@@ -992,7 +1028,7 @@
 			if (exec == null || exec.size() == 0) {
 				throw new UserAccountException(10, "璇风◢鍚庡啀璇�");
 			} else {
-				
+
 				// 鏌ヨ鏄惁瀛樺湪璇ョ數璇濆巻鍙茬敤鎴�
 				UserInfo userInfo = userInfoMapper.getEffectiveUserInfoByPhone(phone);
 				if (userInfo != null) {
@@ -1001,7 +1037,7 @@
 				} else {
 					userInfo = new UserInfo();
 					userInfo.setAppId(appId);
-					userInfo.setNickName(Constant.systemCommonConfig.getDefaultNickName());
+					// userInfo.setNickName(Constant.systemCommonConfig.getDefaultNickName());
 					userInfo.setPortrait(Constant.systemCommonConfig.getDefaultPortrait());
 					userInfo.setPhone(phone);
 					userInfo.setLoginType(loginType);
@@ -1015,8 +1051,10 @@
 					} catch (Exception e) {
 						e.printStackTrace();
 					}
+
+					userInfoModifyRecordService.addModifyRecord(userInfo.getId(), ModifyTypeEnum.bindPhone, phone);
 				}
-			
+
 				return userInfo;
 			}
 		} catch (Exception e) {
@@ -1031,8 +1069,8 @@
 
 	@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);
@@ -1041,7 +1079,9 @@
 		LogHelper.lgoinInfo(logInfo.toString());
 
 		// 閫氳繃Code鎹㈠彇淇℃伅
-		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(1, "寰俊甯愬彿鎺堟潈澶辫触");
 		}
@@ -1099,6 +1139,9 @@
 					} catch (Exception e) {
 						e.printStackTrace();
 					}
+
+					userInfoModifyRecordService.addModifyRecord(userInfo.getId(), ModifyTypeEnum.bindWeiXin,
+							weiXinUser.getUnionid());
 				}
 				return userInfo;
 			}
@@ -1130,7 +1173,7 @@
 
 	@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, "鐢ㄦ埛涓嶅瓨鍦�");
 		}
@@ -1164,16 +1207,20 @@
 
 		// 鍙戦�佹秷鎭�
 		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.getWeiXinUserWithSavePortrait(code, wxAccount.getAppId(),
+				wxAccount.getAppSecret());
 		if (weiXinUser == null) {
 			throw new UserAccountException(2, "寰俊甯愬彿鎺堟潈澶辫触");
 		}
@@ -1205,9 +1252,11 @@
 
 		// 灏嗛粯璁ゆ樀绉版浛鎹㈡垚寰俊鏄电О
 		String defaultNickName = Constant.systemCommonConfig.getDefaultNickName();
-		if (!StringUtil.isNullOrEmpty(weiXinUser.getNickname()) && !StringUtil.isNullOrEmpty(defaultNickName)
-				&& defaultNickName.equals(user.getNickName())) {
-			updateUserInfo.setNickName(weiXinUser.getNickname());
+		if (!StringUtil.isNullOrEmpty(defaultNickName) && !StringUtil.isNullOrEmpty(weiXinUser.getNickname())) {
+			defaultNickName = defaultNickName + uid;
+			if ((defaultNickName.equals(user.getNickName()) || "鏉挎牀蹇渷".equals(user.getNickName()))) {
+				updateUserInfo.setNickName(weiXinUser.getNickname());
+			}
 		}
 
 		// 灏嗛粯璁ゅご鍍忔浛鎹㈡垚寰俊澶村儚
@@ -1232,6 +1281,8 @@
 		userAccountBindingHistoryService.addUserAccountBindingHistory(history);
 
 		userAccountMsgNotificationService.bindingSuccess(uid, MsgAccountDetailFactory.TYPE_WX);
+
+		userInfoModifyRecordService.addModifyRecord(uid, ModifyTypeEnum.bindWeiXin, wxUnionId);
 	}
 
 	@Override

--
Gitblit v1.8.0