From 744594ef1a2f530fc3e86ea9dc48b62247f79420 Mon Sep 17 00:00:00 2001
From: admin <weikou2014>
Date: 星期二, 19 五月 2020 17:13:23 +0800
Subject: [PATCH] 饿了么绘图,添加口碑

---
 fanli/src/main/java/com/yeshi/fanli/service/impl/user/UserAccountServiceImpl.java |  269 +++++++++++------------------------------------------
 1 files changed, 56 insertions(+), 213 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 2af722f..3b02d4f 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
@@ -1,12 +1,6 @@
 package com.yeshi.fanli.service.impl.user;
 
-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;
 import java.util.List;
 
 import javax.annotation.Resource;
@@ -24,11 +18,7 @@
 import com.google.gson.Gson;
 import com.qcloud.cos.model.COSObjectSummary;
 import com.qcloud.cos.model.ObjectListing;
-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.user.wx.WXMPLoginData;
-import com.yeshi.fanli.dto.user.wx.WXMPLoginResult;
 import com.yeshi.fanli.dto.wx.WXAccountInfoDTO;
 import com.yeshi.fanli.entity.accept.AcceptData;
 import com.yeshi.fanli.entity.bus.user.BindingAccount;
@@ -36,15 +26,12 @@
 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.user.ForbiddenUserIdentifyCodeException;
-import com.yeshi.fanli.exception.user.ThreeSaleException;
 import com.yeshi.fanli.exception.user.UserAccountException;
 import com.yeshi.fanli.log.LogHelper;
 import com.yeshi.fanli.service.inter.money.extract.BindingAccountService;
@@ -60,11 +47,11 @@
 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.FilePathEnum;
+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.TimeUtil;
 import com.yeshi.fanli.util.factory.msg.MsgAccountDetailFactory;
 import com.yeshi.fanli.util.wx.WXLoginUtil;
 
@@ -89,13 +76,7 @@
 	private BindingAccountService bindingAccountService;
 
 	@Resource
-	private UserConnectHistoryMapper userConnectHistoryMapper;
-
-	@Resource
 	private ThreeSaleSerivce threeSaleSerivce;
-
-	@Resource
-	private AccountMessageMapper accountMessageMapper;
 
 	@Resource
 	private SpreadUserImgService spreadUserImgService;
@@ -160,8 +141,7 @@
 				}
 				userInfo = getUserInfoByTaoBaoOpenId(appId, tbUserInfo.getOpenid());
 				// 鍒ゆ柇鐢ㄦ埛鏄惁琚垹闄�
-				if (userInfo != null && userInfo.getState() != null
-						&& (userInfo.getState() != UserInfo.STATE_NORMAL))
+				if (userInfo != null && userInfo.getState() != null && (userInfo.getState() != UserInfo.STATE_NORMAL))
 					userInfo = null;
 				if (userInfo == null) {// 鍘熷厛鐨勮处鍙蜂笉瀛樺湪
 					userInfo = new UserInfo();
@@ -204,9 +184,7 @@
 
 				userInfo = getUserInfoByWXUnionId(appId, weiXinUser.getUnionid());
 				// 鍒ゆ柇鐢ㄦ埛鏄惁琚垹闄�
-				if (userInfo != null && userInfo.getState() != null
-						&& (userInfo.getState() != UserInfo.STATE_NORMAL
-							))
+				if (userInfo != null && userInfo.getState() != null && (userInfo.getState() != UserInfo.STATE_NORMAL))
 					userInfo = null;
 				// 鐩存帴鐢ㄧ殑寰俊鐧诲綍
 				if (lastUser == null) {
@@ -343,8 +321,7 @@
 
 				userInfo = getUserInfoByPhone(appId, phone);
 				// 鍒ゆ柇鐢ㄦ埛鏄惁琚垹闄�
-				if (userInfo != null && userInfo.getState() != null
-						&& (userInfo.getState() != UserInfo.STATE_NORMAL))
+				if (userInfo != null && userInfo.getState() != null && (userInfo.getState() != UserInfo.STATE_NORMAL))
 					userInfo = null;
 
 				if (userInfo == null) {// 鍘熷厛鐨勮处鍙蜂笉瀛樺湪
@@ -470,113 +447,6 @@
 		}
 	}
 
-	@Override
-	public void connectUsers(HttpSession session) throws UserAccountException {
-		UserInfo mainUser = (UserInfo) session.getAttribute("WEIXIN_USERINFO");
-		UserInfo lessUser = (UserInfo) session.getAttribute("LAST_LOGIN_USER");
-
-		int lessUserLoginType = lessUser.getLoginType();
-
-		if (mainUser == null || lessUser == null || mainUser.getId() == null || lessUser.getId() == null)
-			throw new UserAccountException(30001, "缂哄皯鎵撻�氳处鍙�");
-
-		mainUser = userInfoMapper.selectByPrimaryKeyForUpdate(mainUser.getId());
-		lessUser = userInfoMapper.selectByPrimaryKeyForUpdate(lessUser.getId());
-
-		session.removeAttribute("WEIXIN_USERINFO");
-		session.removeAttribute("LAST_LOGIN_USER");
-
-		if (mainUser == null || lessUser == null)
-			throw new UserAccountException(30002, "缂哄皯鎵撻�氳处鍙�");
-
-		// 鍒ゆ柇鏄惁鏈夌粦瀹氱浉鍚岀被鍨嬬殑璐﹀彿
-		if (lessUserLoginType == 1) {// 娆¤处鍙蜂互娣樺疂鐧诲綍
-			if (!StringUtil.isNullOrEmpty(mainUser.getPhone()) && !StringUtil.isNullOrEmpty(lessUser.getPhone())
-					&& !lessUser.getPhone().equalsIgnoreCase(mainUser.getPhone()))
-				throw new UserAccountException(30003, "璇峰厛瑙i櫎鍏朵腑涓�涓处鍙风殑鎵嬫満缁戝畾");
-
-		} else if (lessUserLoginType == 3) {// 娆¤处鍙蜂互鎵嬫満鍙风櫥褰�
-			if (!StringUtil.isNullOrEmpty(mainUser.getOpenid()) && !StringUtil.isNullOrEmpty(lessUser.getOpenid())
-					&& !lessUser.getOpenid().equalsIgnoreCase(mainUser.getOpenid()))
-				throw new UserAccountException(30003, "璇峰厛瑙i櫎鍏朵腑涓�涓处鍙风殑娣樺疂缁戝畾");
-		}
-		connectUsers(mainUser, lessUser);
-	}
-
-	@Transactional(rollbackFor = Exception.class)
-	@Override
-	public void connectUsers(UserInfo mainUser, UserInfo lessUser) throws UserAccountException {
-		mainUser = userInfoMapper.selectByPrimaryKeyForUpdate(mainUser.getId());
-		lessUser = userInfoMapper.selectByPrimaryKeyForUpdate(lessUser.getId());
-
-		if (!StringUtil.isNullOrEmpty(mainUser.getOpenid()) && !StringUtil.isNullOrEmpty(lessUser.getOpenid()))
-			throw new UserAccountException(9, "涓や釜璐﹀彿閮界粦瀹氫簡娣樺疂锛岃瑙g粦鍏朵腑涓�涓�");
-
-		if (!StringUtil.isNullOrEmpty(mainUser.getPhone()) && !StringUtil.isNullOrEmpty(lessUser.getPhone()))
-			throw new UserAccountException(9, "涓や釜璐﹀彿閮界粦瀹氫簡鎵嬫満鍙风爜锛岃瑙g粦鍏朵腑涓�涓�");
-
-		if (lessUser.getMyHongBao().compareTo(new BigDecimal("10")) >= 0
-				&& mainUser.getMyHongBao().compareTo(new BigDecimal("10")) > 0)
-			throw new UserAccountException(10, String.format("璐︽埛ID:%s 鐨勮祫閲戣秴杩�10鍏冿紝涓轰繚璇佽祫閲戝畨鍏ㄨ鑱旂郴瀹㈡湇鎵撻��", lessUser.getId() + ""));
-
-		// 鍒ゅ畾鏄惁缁戝畾浜嗗悓涓�鏀粯瀹�
-		BindingAccount mainUserAccount = bindingAccountService.getBindingAccountByUidAndType(mainUser.getId(),
-				BindingAccount.TYPE_ALIPAY);
-
-		BindingAccount lessUserAccount = bindingAccountService.getBindingAccountByUidAndType(lessUser.getId(),
-				BindingAccount.TYPE_ALIPAY);
-
-		// 鏈変笉鍚岀殑鏀粯瀹濊处鍙�
-		boolean hasDiffrentAlipayAccount = false;
-		if (mainUserAccount != null && lessUserAccount != null) {
-			if (!mainUserAccount.getAccount().equalsIgnoreCase(lessUserAccount.getAccount()))
-				hasDiffrentAlipayAccount = true;
-		}
-
-		if (hasDiffrentAlipayAccount)
-			throw new UserAccountException(10, "涓や釜璐︽埛閮界粦瀹氫簡鏀粯瀹濓紝璇峰厛瑙g粦鍏朵腑涓�涓�");
-
-		// 鍒ゅ畾鏄惁鏈夐噸鍙犵殑璐﹀彿
-		UserInfo updateUser = new UserInfo(mainUser.getId());
-		if (!StringUtil.isNullOrEmpty(lessUser.getOpenid())) {
-			updateUser.setOpenid(lessUser.getOpenid());
-			updateUser.setTbName(lessUser.getTbName());
-			updateUser.setTbPic(lessUser.getTbPic());
-		}
-
-		if (!StringUtil.isNullOrEmpty(lessUser.getPhone())) {
-			updateUser.setPhone(lessUser.getPhone());
-		}
-
-		// 澶囦唤鍘熸潵鐨勭敤鎴蜂俊鎭�
-		String logUrl = backupUserImportantInfo(lessUser.getId());
-
-		// 娣诲姞鎵撻�氳褰�
-		UserConnectHistory userConnectHistory = new UserConnectHistory();
-		userConnectHistory.setCreateTime(new Date());
-		userConnectHistory.setLessUser(lessUser);
-		userConnectHistory.setMainUser(mainUser);
-		userConnectHistory.setLogUrl(logUrl);
-		userConnectHistoryMapper.insertSelective(userConnectHistory);
-
-		userInfoMapper.updateByPrimaryKeySelective(updateUser);
-		// 鍒犻櫎鍘熸潵鐨勮处鍙�
-		UserInfo updateLessUser = new UserInfo(lessUser.getId());
-		updateLessUser.setState(UserInfo.STATE_DELETE);
-		updateLessUser.setStateDesc("璐﹀彿琚墦閫氬垹闄�");
-		userInfoMapper.updateByPrimaryKeySelective(updateLessUser);
-		// 铻嶅悎涓氬姟
-		userInfoMapper.connectUser(mainUser.getId(), lessUser.getId());
-
-		// 鏌ヨ鏄惁鏈夊浣欑殑鏂颁汉绾㈠寘
-		int subCount = 0;
-		int addCount = 0;
-
-		userAccountMsgNotificationService.connectSuccess(mainUser.getId(), lessUser.getId());
-
-		userInfoDeleteRecordService.addDeleteRecord(lessUser.getId(), UserInfo.STATE_DELETE, "鍒犻櫎锛氳处鍙疯鎵撻�氬垹闄�");
-	}
-
 	/**
 	 * 鏍规嵁绯荤粺涓巙nionid瀵绘壘鐢ㄦ埛
 	 * 
@@ -649,7 +519,7 @@
 
 		// 鍓旈櫎琚垹闄ゆ帀鐨勭敤鎴�
 		for (int i = 0; i < list.size(); i++) {
-			if (list.get(i).getState() !=UserInfo.STATE_NORMAL) {
+			if (list.get(i).getState() != UserInfo.STATE_NORMAL) {
 				list.remove(i);
 				i--;
 			}
@@ -885,46 +755,6 @@
 	}
 
 	@Override
-	public String backupUserImportantInfo(Long uid) {
-
-		String logPath = String.format(FileUtil.getCacheDir() + "/benfen_%s_" + uid + ".log",
-				TimeUtil.getGernalTime(System.currentTimeMillis(), "yyyyMMddHHmmss"));
-
-		// 澶囦唤鐢ㄦ埛淇℃伅
-		UserInfo user = userInfoMapper.selectAvailableByPrimaryKey(uid);
-
-		// TODO 澶囦唤璧勯噾鏄庣粏
-
-		// 澶囦唤閭�璇峰叧绯�
-		List<ThreeSale> threeSaleList = new ArrayList<>();
-
-		FileWriter fw = null;
-		try {
-			// 璁剧疆涓�:True,琛ㄧず鍐欏叆鐨勬椂鍊欒拷鍔犳暟鎹�
-			fw = new FileWriter(new File(logPath), true);
-
-			fw.write("#UserInfo" + "\r\n");
-			fw.write(JsonUtil.getSimpleGsonWithDate().toJson(user) + "\r\n");
-
-			fw.write("#ThreeSale" + "\r\n");
-			fw.write(JsonUtil.getSimpleGsonWithDate().toJson(threeSaleList) + "\r\n");
-
-			fw.close();
-
-			String logUrl = COSManager.getInstance()
-					.uploadFile(new File(logPath), "beifen/" + new File(logPath).getName()).getUrl();
-			return logUrl;
-		} catch (IOException e) {
-			e.printStackTrace();
-		} finally {
-			if (new File(logPath).exists())
-				new File(logPath).delete();
-		}
-
-		return null;
-	}
-
-	@Override
 	public void clearUserPortrait(Long uid) {
 		if (uid == null)
 			return;
@@ -1018,7 +848,8 @@
 		// 娓呯┖闄愬埗
 		redisManager.clearSMSFrequencyLimit(phone, SMSHistory.TYPE_LOGIN);
 		// 娓呯悊娆℃暟
-		redisManager.removeCommonString("sendMSNLoginCount" + phone);
+		String key = RedisKeyEnum.getRedisKey(RedisKeyEnum.SMSLoginCount, phone);
+		redisManager.removeCommonString(key);
 
 		// 閲囩敤redis浜嬪姟闃叉涓�涓墜鏈哄彿澶氭娉ㄥ唽闂
 		String watchKey = StringUtil.Md5("REGISTER:" + phone);
@@ -1128,8 +959,8 @@
 						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() + ""));
+									String.format(FilePathEnum.userWXPortrait.getPath() + "%s_%s.jpg",
+											weiXinUser.getUnionid(), System.currentTimeMillis() + ""));
 							if (result != null && !StringUtil.isNullOrEmpty(result.getUrl()))
 								portrait = result.getUrl();
 						} else {
@@ -1205,9 +1036,10 @@
 
 		UserInfo userInfo = userInfoMapper.getEffectiveUserInfoByWXUnionId(weiXinUser.getUnionid());
 		if (userInfo == null) {
-			String longinKey = StringUtil.Md5("WXLogin:" + weiXinUser.getUnionid());
-			redisManager.cacheCommonString(longinKey, JsonUtil.getSimpleGson().toJson(weiXinUser), 60 * 20);
-			throw new UserAccountException(101, longinKey);
+			String key = RedisKeyEnum.getRedisKey(RedisKeyEnum.emptyKey,
+					StringUtil.Md5("WXLogin:" + weiXinUser.getUnionid()));
+			redisManager.cacheCommonString(key, JsonUtil.getSimpleGson().toJson(weiXinUser), 60 * 20);
+			throw new UserAccountException(101, key);
 		}
 		// 鏇存柊璐︽埛鐧诲綍淇℃伅
 		updateLonginInfo(userInfo, loginType, request);
@@ -1278,7 +1110,7 @@
 
 	}
 
-	@Transactional(rollbackFor=UserAccountException.class)
+	@Transactional(rollbackFor = UserAccountException.class)
 	@Override
 	public void bindWeiXin(AcceptData acceptData, Long uid, String code) throws UserAccountException {
 		WXAccountInfoDTO wxAccount = Constant.getWXAccount(acceptData.getPlatform(), acceptData.getVersion());
@@ -1293,18 +1125,15 @@
 		}
 		bindWeiXin(uid, weiXinUser);
 	}
-	
-	
-	
-	
-	@Transactional(rollbackFor=UserAccountException.class)
+
+	@Transactional(rollbackFor = UserAccountException.class)
 	@Override
-	public void bindWeiXin(Long uid,WeiXinUser weiXinUser) throws UserAccountException {
+	public void bindWeiXin(Long uid, WeiXinUser weiXinUser) throws UserAccountException {
 		UserInfo user = userInfoMapper.selectAvailableByPrimaryKey(uid);
 		if (user == null) {
 			throw new UserAccountException(1, "鐢ㄦ埛涓嶅瓨鍦�");
 		}
-		
+
 		if (weiXinUser == null) {
 			throw new UserAccountException(2, "寰俊甯愬彿鎺堟潈澶辫触");
 		}
@@ -1352,8 +1181,9 @@
 			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() + ""));
+				FileUploadResult result = COSManager.getInstance().uploadFile(asInputStream,
+						String.format(FilePathEnum.userWXPortrait.getPath() + "%s_%s.jpg", weiXinUser.getUnionid(),
+								System.currentTimeMillis() + ""));
 				if (result != null && !StringUtil.isNullOrEmpty(result.getUrl())) {
 					headimgurl = result.getUrl();
 				} else {
@@ -1385,9 +1215,6 @@
 	@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
@@ -1412,8 +1239,9 @@
 		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() + ""));
+				FileUploadResult result = COSManager.getInstance().uploadFile(asInputStream,
+						String.format(FilePathEnum.userWXPortrait.getPath() + "%s_%s.jpg", weiXinUser.getUnionid(),
+								System.currentTimeMillis() + ""));
 				if (result != null && !StringUtil.isNullOrEmpty(result.getUrl()))
 					portrait = result.getUrl();
 			} else {
@@ -1424,21 +1252,37 @@
 		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);
+		// 鏄惁闇�瑕佸垱寤烘柊璐︽埛
+		UserInfo phoneUser = userInfoMapper.getEffectiveUserInfoByPhone(phone);
+		if (phoneUser != null) {
+			// 缁戝畾寰俊
+			if (StringUtil.isNullOrEmpty(phoneUser.getWxUnionId())) {
+				try {
+					bindWeiXin(phoneUser.getId(), weiXinUser);
+				} catch (Exception e) {
+					throw new UserAccountException(1, "寰俊缁戝畾澶辫触");
+				}
+			} else {
+				throw new UserAccountException(1, "璇ュ井淇″凡琚粦瀹�");
+			}
+			userInfo = userInfoMapper.selectAvailableByPrimaryKey(phoneUser.getId());
+		} else {
+			// 鍒涘缓鏂拌处鎴�
+			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() {
@@ -1590,6 +1434,5 @@
 		// 鎻掑叆璁板綍
 		userInfoDeleteRecordService.addDeleteRecord(uid, UserInfo.STATE_DELETE_OUT_OF_DATE, reason);
 	}
-
 
 }

--
Gitblit v1.8.0