From d2ee731b6a64fa002bceddebf0cc59c78b6c17ce Mon Sep 17 00:00:00 2001
From: admin <weikou2014>
Date: 星期三, 27 二月 2019 10:12:31 +0800
Subject: [PATCH] 邀请成功消息提醒

---
 fanli/src/main/java/com/yeshi/fanli/service/impl/user/UserAccountServiceImpl.java |  193 ++++++++++++++++++++++++++++++++++++++++++++---
 1 files changed, 179 insertions(+), 14 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 c437e29..4e3fad1 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
@@ -13,6 +13,8 @@
 
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
+import org.yeshi.utils.JsonUtil;
+import org.yeshi.utils.tencentcloud.COSManager;
 
 import com.google.gson.Gson;
 import com.qcloud.cos.model.COSObjectSummary;
@@ -31,6 +33,8 @@
 import com.yeshi.fanli.entity.bus.user.AccountDetails;
 import com.yeshi.fanli.entity.bus.user.AccountMessage;
 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.HongBao;
 import com.yeshi.fanli.entity.bus.user.LoginResult;
 import com.yeshi.fanli.entity.bus.user.MoneyRecord;
@@ -44,16 +48,20 @@
 import com.yeshi.fanli.exception.UserAccountException;
 import com.yeshi.fanli.log.LogHelper;
 import com.yeshi.fanli.service.inter.hongbao.HongBaoService;
+import com.yeshi.fanli.service.inter.msg.UserAccountMsgNotificationService;
+import com.yeshi.fanli.service.inter.user.ForbiddenUserIdentifyCodeService;
 import com.yeshi.fanli.service.inter.user.SpreadUserImgService;
 import com.yeshi.fanli.service.inter.user.UserAccountService;
+import com.yeshi.fanli.service.inter.user.UserExtraTaoBaoInfoService;
 import com.yeshi.fanli.util.Constant;
 import com.yeshi.fanli.util.FileUtil;
 import com.yeshi.fanli.util.StringUtil;
 import com.yeshi.fanli.util.TimeUtil;
 import com.yeshi.fanli.util.factory.AccountDetailsFactory;
+import com.yeshi.fanli.util.factory.msg.MsgAccountDetailFactory;
 import com.yeshi.fanli.util.wx.WXLoginUtil;
-import org.yeshi.utils.JsonUtil;
-import org.yeshi.utils.tencentcloud.COSManager;
+
+import net.sf.json.JSONObject;
 
 @Service
 public class UserAccountServiceImpl implements UserAccountService {
@@ -96,10 +104,29 @@
 	@Resource
 	private SpreadUserImgService spreadUserImgService;
 
+	@Resource
+	private UserAccountMsgNotificationService userAccountMsgNotificationService;
+
+	@Resource
+	private UserExtraTaoBaoInfoService userExtraTaoBaoInfoService;
+
+	@Resource
+	private ForbiddenUserIdentifyCodeService forbiddenUserIdentifyCodeService;
+
 	@Transactional
 	@Override
 	public LoginResult login(HttpServletRequest request, Boolean first, String appId, String code, String phone,
 			UserInfo tbUserInfo, boolean wxinstall, int loginType) throws UserAccountException {
+
+		JSONObject logInfo = new JSONObject();
+		logInfo.put("appId", appId);
+		logInfo.put("code", code);
+		logInfo.put("phone", phone);
+		if (tbUserInfo != null)
+			logInfo.put("tbUserInfo", tbUserInfo.getId());
+		logInfo.put("loginType", loginType);
+		LogHelper.lgoinInfo(logInfo.toString());
+
 		HttpSession session = request.getSession();
 		if (first != null && first == true)
 			session.removeAttribute("LAST_LOGIN_USER");
@@ -110,7 +137,20 @@
 			WeiXinUser weiXinUser = null;
 			switch (loginType) {
 			case 1:// 娣樺疂
+					// 鍒ゆ柇娣樺疂鏄惁琚皝绂�
+				if (!StringUtil.isNullOrEmpty(tbUserInfo.getTaoBaoUid())) {
+					ForbiddenUserIdentifyCode identifyCode = forbiddenUserIdentifyCodeService.listByTypeAndIdentifyCode(
+							ForbiddenUserIdentifyCodeTypeEnum.taobaoUid, tbUserInfo.getTaoBaoUid());
+					if (identifyCode != null && identifyCode.getEffective() != null && identifyCode.getEffective())
+						throw new UserAccountException(Constant.CODE_FORBIDDEN_USER,
+								Constant.FORBIDDEN_USER_REASON_DESC);
+				}
 				userInfo = getUserInfoByTaoBaoOpenId(appId, tbUserInfo.getOpenid());
+				// 鍒ゆ柇鐢ㄦ埛鏄惁琚垹闄�
+				if (userInfo != null && userInfo.getState() != null
+						&& (userInfo.getState() == UserInfo.STATE_DELETE_OUT_OF_DATE
+								|| userInfo.getState() == UserInfo.STATE_DELETE))
+					userInfo = null;
 				if (userInfo == null) {// 鍘熷厛鐨勮处鍙蜂笉瀛樺湪
 					userInfo = new UserInfo();
 					userInfo.setAppId(appId);
@@ -142,7 +182,18 @@
 				if (weiXinUser == null)
 					throw new UserAccountException(1001, "鏃犳硶鑾峰彇鍒板井淇′釜浜轰俊鎭�");
 				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);
+
 				userInfo = getUserInfoByWXUnionId(appId, weiXinUser.getUnionid());
+				// 鍒ゆ柇鐢ㄦ埛鏄惁琚垹闄�
+				if (userInfo != null && userInfo.getState() != null
+						&& (userInfo.getState() == UserInfo.STATE_DELETE_OUT_OF_DATE
+								|| userInfo.getState() == UserInfo.STATE_DELETE))
+					userInfo = null;
 				// 鐩存帴鐢ㄧ殑寰俊鐧诲綍
 				if (lastUser == null) {
 					if (userInfo != null) {
@@ -206,13 +257,17 @@
 							// 缁戝畾鍏崇郴
 							UserInfo updateUserInfo = new UserInfo(userInfo.getId());
 
-							if (!StringUtil.isNullOrEmpty(lastUser.getPhone()))
+							if (!StringUtil.isNullOrEmpty(lastUser.getPhone())) {
 								updateUserInfo.setPhone(lastUser.getPhone());
-
+								userAccountMsgNotificationService.bindingSuccess(userInfo.getId(),
+										MsgAccountDetailFactory.TYPE_PHONE);
+							}
 							if (!StringUtil.isNullOrEmpty(lastUser.getOpenid())) {
 								updateUserInfo.setOpenid(lastUser.getOpenid());
 								updateUserInfo.setTbName(lastUser.getTbName());
 								updateUserInfo.setTbPic(lastUser.getTbPic());
+								userAccountMsgNotificationService.bindingSuccess(userInfo.getId(),
+										MsgAccountDetailFactory.TYPE_TB);
 							}
 							updateUserInfo.setLastLoginTime(System.currentTimeMillis());
 							userInfoMapper.updateByPrimaryKeySelective(updateUserInfo);
@@ -264,7 +319,19 @@
 					}
 				}
 			case 3:// 鎵嬫満鍙风爜
+					// 鍒ゆ柇鎵嬫満鍙风爜鏄惁琚皝绂�
+				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);
+
 				userInfo = getUserInfoByPhone(appId, phone);
+				// 鍒ゆ柇鐢ㄦ埛鏄惁琚垹闄�
+				if (userInfo != null && userInfo.getState() != null
+						&& (userInfo.getState() == UserInfo.STATE_DELETE_OUT_OF_DATE
+								|| userInfo.getState() == UserInfo.STATE_DELETE))
+					userInfo = null;
+
 				if (userInfo == null) {// 鍘熷厛鐨勮处鍙蜂笉瀛樺湪
 					userInfo = new UserInfo();
 					userInfo.setAppId(appId);
@@ -303,10 +370,25 @@
 	@Override
 	public LoginResult loginNoInstallWX(String appId, String code, String phone, UserInfo tbUserInfo, int loginType)
 			throws UserAccountException {
+		JSONObject logInfo = new JSONObject();
+		logInfo.put("appId", appId);
+		logInfo.put("code", code);
+		logInfo.put("phone", phone);
+		if (tbUserInfo != null)
+			logInfo.put("tbUserInfo", tbUserInfo.getId());
+		logInfo.put("loginType", loginType);
+		LogHelper.lgoinInfo(logInfo.toString());
+
 		UserInfo userInfo = null;
 		WeiXinUser weiXinUser = null;
 		switch (loginType) {
 		case 1:// 娣樺疂
+			if (!StringUtil.isNullOrEmpty(tbUserInfo.getTaoBaoUid())) {
+				ForbiddenUserIdentifyCode identifyCode = forbiddenUserIdentifyCodeService.listByTypeAndIdentifyCode(
+						ForbiddenUserIdentifyCodeTypeEnum.taobaoUid, tbUserInfo.getTaoBaoUid());
+				if (identifyCode != null && identifyCode.getEffective() != null && identifyCode.getEffective())
+					throw new UserAccountException(Constant.CODE_FORBIDDEN_USER, Constant.FORBIDDEN_USER_REASON_DESC);
+			}
 			userInfo = getUserInfoByTaoBaoOpenId(appId, tbUserInfo.getOpenid());
 			break;
 		case 2:// 寰俊
@@ -314,12 +396,29 @@
 			weiXinUser = WXLoginUtil.getWeiXinUserWithSavePortrait(code);
 			if (weiXinUser == null)
 				throw new UserAccountException(1001, "鏃犳硶鑾峰彇鍒板井淇′釜浜轰俊鎭�");
+
+			// 鍒ゆ柇鏄惁琚皝绂�
+			ForbiddenUserIdentifyCode identifyCode = forbiddenUserIdentifyCodeService
+					.listByTypeAndIdentifyCode(ForbiddenUserIdentifyCodeTypeEnum.phone, phone);
+			if (identifyCode != null && identifyCode.getEffective() != null && identifyCode.getEffective())
+				throw new UserAccountException(Constant.CODE_FORBIDDEN_USER, Constant.FORBIDDEN_USER_REASON_DESC);
+
 			userInfo = getUserInfoByWXUnionId(appId, weiXinUser.getUnionid());
 			break;
 		case 3:// 鎵嬫満鍙风爜
+				// 鍒ゆ柇鏄惁琚皝绂�
+			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);
 			userInfo = getUserInfoByPhone(appId, phone);
 			break;
 		}
+
+		// 鍒ゆ柇鐢ㄦ埛鏄惁琚垹闄�
+		if (userInfo != null && userInfo.getState() != null && (userInfo.getState() == UserInfo.STATE_DELETE_OUT_OF_DATE
+				|| userInfo.getState() == UserInfo.STATE_DELETE))
+			userInfo = null;
 
 		if (userInfo != null) {
 			UserInfo updateUserInfo = new UserInfo(userInfo.getId());
@@ -400,9 +499,9 @@
 		if (!StringUtil.isNullOrEmpty(mainUser.getPhone()) && !StringUtil.isNullOrEmpty(lessUser.getPhone()))
 			throw new UserAccountException(9, "涓や釜璐﹀彿閮界粦瀹氫簡鎵嬫満鍙风爜锛岃瑙g粦鍏朵腑涓�涓�");
 
-		if (lessUser.getMyHongBao().compareTo(new BigDecimal("20")) >= 0
-				&& mainUser.getMyHongBao().compareTo(new BigDecimal("20")) > 0)
-			throw new UserAccountException(10, String.format("璐︽埛ID:%s 鐨勮祫閲戣秴杩�20鍏冿紝涓轰繚璇佽祫閲戝畨鍏ㄨ鑱旂郴瀹㈡湇鎵撻��", lessUser.getId() + ""));
+		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() + ""));
 
 		// 鍒ゅ畾鏄惁缁戝畾浜嗗悓涓�鏀粯瀹�
 		List<BindingAccount> mainUserAccountList = bindingAccountMapper.selectByUid(mainUser.getId());
@@ -510,6 +609,7 @@
 			moneyRecordMapper.insertSelective(moneyRecord);
 		}
 
+		userAccountMsgNotificationService.connectSuccess(mainUser.getId(), lessUser.getId());
 	}
 
 	/**
@@ -519,8 +619,25 @@
 	 * @param unionId
 	 * @return
 	 */
-	public UserInfo getUserInfoByWXUnionId(String appId, String unionId) {
-		return userInfoMapper.getUserInfoByAppIdAndWXUnionId(appId, unionId);
+	public UserInfo getUserInfoByWXUnionId(String appId, String unionId) throws UserAccountException {
+		if (StringUtil.isNullOrEmpty(appId))
+			throw new UserAccountException(1, "appId涓虹┖");
+		if (StringUtil.isNullOrEmpty(unionId))
+			throw new UserAccountException(2, "unionId涓虹┖");
+
+		List<UserInfo> list = userInfoMapper.listByAppIdAndWXUnionId(appId, unionId);
+		// 鍓旈櫎琚垹闄ゆ帀鐨勭敤鎴�
+		for (int i = 0; i < list.size(); i++) {
+			if (list.get(i).getState() == UserInfo.STATE_DELETE
+					|| list.get(i).getState() == UserInfo.STATE_DELETE_OUT_OF_DATE) {
+				list.remove(i);
+				i--;
+			}
+		}
+		if (list.size() > 0)
+			return list.get(list.size() - 1);
+		else
+			return null;
 	}
 
 	/**
@@ -530,9 +647,26 @@
 	 * @param openId
 	 * @return
 	 */
-	public UserInfo getUserInfoByTaoBaoOpenId(String appId, String openId) {
+	public UserInfo getUserInfoByTaoBaoOpenId(String appId, String openId) throws UserAccountException {
+		if (StringUtil.isNullOrEmpty(appId))
+			throw new UserAccountException(1, "appId涓虹┖");
+		if (StringUtil.isNullOrEmpty(openId))
+			throw new UserAccountException(2, "openId涓虹┖");
+		List<UserInfo> list = userInfoMapper.listByAppIdAndTaoBaoOpenId(appId, openId);
 
-		return userInfoMapper.getUserInfoByAppIdAndTaoBaoOpenId(appId, openId);
+		// 鍓旈櫎琚垹闄ゆ帀鐨勭敤鎴�
+		for (int i = 0; i < list.size(); i++) {
+			if (list.get(i).getState() == UserInfo.STATE_DELETE
+					|| list.get(i).getState() == UserInfo.STATE_DELETE_OUT_OF_DATE) {
+				list.remove(i);
+				i--;
+			}
+		}
+		if (list.size() > 0)
+			return list.get(list.size() - 1);
+		else
+			return null;
+
 	}
 
 	/**
@@ -542,9 +676,26 @@
 	 * @param phone
 	 * @return
 	 */
-	public UserInfo getUserInfoByPhone(String appId, String phone) {
+	public UserInfo getUserInfoByPhone(String appId, String phone) throws UserAccountException {
+		if (StringUtil.isNullOrEmpty(appId))
+			throw new UserAccountException(1, "appId涓虹┖");
+		if (StringUtil.isNullOrEmpty(phone))
+			throw new UserAccountException(2, "phone涓虹┖");
+		List<UserInfo> list = userInfoMapper.listByAppIdAndPhone(appId, phone);
 
-		return userInfoMapper.getUserInfoByAppIdAndPhone(appId, phone);
+		// 鍓旈櫎琚垹闄ゆ帀鐨勭敤鎴�
+		for (int i = 0; i < list.size(); i++) {
+			if (list.get(i).getState() == UserInfo.STATE_DELETE
+					|| list.get(i).getState() == UserInfo.STATE_DELETE_OUT_OF_DATE) {
+				list.remove(i);
+				i--;
+			}
+		}
+		if (list.size() > 0)
+			return list.get(list.size() - 1);
+		else
+			return null;
+
 	}
 
 	private void updateLatestLoginTime(Long uid) {
@@ -624,6 +775,7 @@
 		UserInfo update = new UserInfo(user.getId());
 		update.setPhone(phone);
 		userInfoMapper.updateByPrimaryKeySelective(update);
+		userAccountMsgNotificationService.bindingSuccess(uid, MsgAccountDetailFactory.TYPE_PHONE);
 	}
 
 	@Override
@@ -644,6 +796,7 @@
 		UserInfo updateUserInfo = new UserInfo(uid);
 		updateUserInfo.setPhone("");
 		userInfoMapper.updateByPrimaryKeySelective(updateUserInfo);
+		userAccountMsgNotificationService.unBindingSuccess(uid, MsgAccountDetailFactory.TYPE_PHONE);
 	}
 
 	@Override
@@ -653,8 +806,12 @@
 		if (user == null)
 			throw new UserAccountException(4, "鐢ㄦ埛涓嶅瓨鍦�");
 
-		if (!StringUtil.isNullOrEmpty(user.getOpenid()))
+		if (!StringUtil.isNullOrEmpty(user.getOpenid()) && !user.getOpenid().equalsIgnoreCase(tbOpenId))
 			throw new UserAccountException(5, "褰撳墠璐﹀彿宸茬粡缁戝畾浜嗘窐瀹濓紝璇峰厛瑙g粦");
+
+		// 缁戝畾鍚屼竴涓窐瀹濆彿
+		if (!StringUtil.isNullOrEmpty(user.getOpenid()) && user.getOpenid().equalsIgnoreCase(tbOpenId))
+			return;
 
 		UserInfo taoBaoUser = getUserInfoByTaoBaoOpenId(user.getAppId(), tbOpenId);
 		if (taoBaoUser != null)
@@ -669,6 +826,8 @@
 			update.setPortrait(tbPortrait);
 		}
 		userInfoMapper.updateByPrimaryKeySelective(update);
+
+		userAccountMsgNotificationService.bindingSuccess(uid, MsgAccountDetailFactory.TYPE_TB);
 	}
 
 	@Override
@@ -693,6 +852,10 @@
 		}
 
 		userInfoMapper.updateByPrimaryKeySelective(update);
+
+		userExtraTaoBaoInfoService.unBindUid(uid);
+
+		userAccountMsgNotificationService.unBindingSuccess(uid, MsgAccountDetailFactory.TYPE_TB);
 	}
 
 	@Override
@@ -725,6 +888,8 @@
 			updateUserInfo.setPortrait(Constant.systemCommonConfig.getDefaultPortrait());
 		}
 		userInfoMapper.updateByPrimaryKeySelective(updateUserInfo);
+
+		userAccountMsgNotificationService.changeBindingSuccess(uid, MsgAccountDetailFactory.TYPE_WX);
 	}
 
 	@Override

--
Gitblit v1.8.0