From 1da17d215d48e3e3aa9e8d7a3ef526904764f408 Mon Sep 17 00:00:00 2001
From: yujian <yujian>
Date: 星期一, 08 四月 2019 14:06:12 +0800
Subject: [PATCH] 1.5.3部分需求 提交

---
 fanli/src/main/java/com/yeshi/fanli/service/impl/user/UserExtraTaoBaoInfoServiceImpl.java |  208 ++++++++++++++++++++++++++++++++++++++++++----------
 1 files changed, 168 insertions(+), 40 deletions(-)

diff --git a/fanli/src/main/java/com/yeshi/fanli/service/impl/user/UserExtraTaoBaoInfoServiceImpl.java b/fanli/src/main/java/com/yeshi/fanli/service/impl/user/UserExtraTaoBaoInfoServiceImpl.java
index 99e97d3..ff1d4af 100644
--- a/fanli/src/main/java/com/yeshi/fanli/service/impl/user/UserExtraTaoBaoInfoServiceImpl.java
+++ b/fanli/src/main/java/com/yeshi/fanli/service/impl/user/UserExtraTaoBaoInfoServiceImpl.java
@@ -1,15 +1,22 @@
 package com.yeshi.fanli.service.impl.user;
 
 import java.util.Date;
+import java.util.List;
 
 import javax.annotation.Resource;
+import javax.transaction.Transactional;
 
 import org.springframework.stereotype.Service;
 
 import com.yeshi.fanli.dao.mybatis.user.UserExtraTaoBaoInfoMapper;
+import com.yeshi.fanli.entity.bus.user.ForbiddenUserIdentifyCode;
+import com.yeshi.fanli.entity.bus.user.ForbiddenUserIdentifyCode.ForbiddenUserIdentifyCodeTypeEnum;
 import com.yeshi.fanli.entity.bus.user.UserExtraTaoBaoInfo;
 import com.yeshi.fanli.entity.bus.user.UserInfo;
+import com.yeshi.fanli.exception.user.UserExtraTaoBaoInfoException;
+import com.yeshi.fanli.service.inter.user.ForbiddenUserIdentifyCodeService;
 import com.yeshi.fanli.service.inter.user.UserExtraTaoBaoInfoService;
+import com.yeshi.fanli.util.Constant;
 import com.yeshi.fanli.util.StringUtil;
 
 @Service
@@ -17,57 +24,178 @@
 
 	@Resource
 	private UserExtraTaoBaoInfoMapper userExtraTaoBaoInfoMapper;
+	
+	@Resource
+	private ForbiddenUserIdentifyCodeService forbiddenUserIdentifyCodeService;
+	
 
+	@Transactional
 	@Override
-	public void addRelationId(Long uid, String relationId, String taoBaoUid, boolean valid) {
-		if (uid == null || relationId == null)
-			return;
-		UserExtraTaoBaoInfo info = getByUid(uid);
-		if (info == null) {
-			info = new UserExtraTaoBaoInfo();
-			info.setUser(new UserInfo(uid));
-			info.setCreateTime(new Date());
-			info.setRelationId(relationId);
-			info.setRelationUpdateTime(new Date());
-			info.setRelationValid(valid);
-			info.setTaoBaoUid(taoBaoUid);
-			userExtraTaoBaoInfoMapper.insertSelective(info);
+	public void addRelationId(Long uid, String relationId, String taoBaoUid,String nickName, 
+			boolean valid) throws UserExtraTaoBaoInfoException{
+		
+		if (uid == null || StringUtil.isNullOrEmpty(relationId) || StringUtil.isNullOrEmpty(taoBaoUid)) {
+			throw new UserExtraTaoBaoInfoException(1, "浼犻�掑弬鏁颁负绌�");
+		}
+		
+		// 楠岃瘉taoBaoUid鏄惁琚皝绂�
+		if(validateTaoBaoUidForbidden(taoBaoUid)) {
+			throw new UserExtraTaoBaoInfoException(Constant.CODE_FORBIDDEN_USER, Constant.FORBIDDEN_USER_REASON_DESC);
+		}
+				
+		UserExtraTaoBaoInfo taoBaoInfo = new UserExtraTaoBaoInfo();
+		taoBaoInfo.setUser(new UserInfo(uid));
+		taoBaoInfo.setTaoBaoNickName(nickName);
+		taoBaoInfo.setTaoBaoUid(taoBaoUid);
+		taoBaoInfo.setRelationId(relationId);
+		taoBaoInfo.setRelationValid(valid);
+		taoBaoInfo.setRelationUpdateTime(new Date());
+		
+		List<UserExtraTaoBaoInfo> list = userExtraTaoBaoInfoMapper.listByTaoBaoUid(taoBaoUid);
+		if (list == null || list.size() == 0) {
+			//鏂板
+			taoBaoInfo.setCreateTime(new Date());
+			userExtraTaoBaoInfoMapper.insertSelective(taoBaoInfo);
 		} else {
-			UserExtraTaoBaoInfo update = new UserExtraTaoBaoInfo();
-			update.setId(info.getId());
-			update.setRelationId(relationId);
-			update.setRelationValid(valid);
-			update.setRelationUpdateTime(new Date());
-			update.setTaoBaoUid(taoBaoUid);
-			userExtraTaoBaoInfoMapper.updateByPrimaryKeySelective(update);
+			// 鍙栫涓�涓浛鎹id 绛変俊鎭�
+			taoBaoInfo.setId(list.get(0).getId());
+			taoBaoInfo.setUpdateTime(new Date());
+			userExtraTaoBaoInfoMapper.updateByPrimaryKeySelective(taoBaoInfo);
+			
+			// 娓呯┖澶氫綑宸茬粦瀹氭暟鎹�
+			if (list.size() > 1) {
+				for (int i = 1; i < list.size(); i++) {
+					clearTaoBaoInfo(list.get(i));
+				}
+			}
 		}
 	}
 
+	@Transactional
 	@Override
-	public void addSpecialId(Long uid, String specialId, String taoBaoUid, boolean valid) {
-		if (uid == null || specialId == null)
-			return;
-		UserExtraTaoBaoInfo info = getByUid(uid);
-		if (info == null) {
-			info = new UserExtraTaoBaoInfo();
-			info.setUser(new UserInfo(uid));
-			info.setCreateTime(new Date());
-			info.setSpecialId(specialId);
-			info.setSpecialUpdateTime(new Date());
-			info.setSpecialValid(valid);
-			info.setTaoBaoUid(taoBaoUid);
-			userExtraTaoBaoInfoMapper.insertSelective(info);
+	public void addSpecialId(Long uid, String specialId, String taoBaoUid, String nickName,
+			boolean valid) throws UserExtraTaoBaoInfoException{
+		
+		if (uid == null || StringUtil.isNullOrEmpty(specialId) || StringUtil.isNullOrEmpty(taoBaoUid)) {
+			throw new UserExtraTaoBaoInfoException(1, "浼犻�掑弬鏁颁负绌�");
+		}
+		
+		// 楠岃瘉taoBaoUid鏄惁琚皝绂�
+		if(validateTaoBaoUidForbidden(taoBaoUid)) {
+			throw new UserExtraTaoBaoInfoException(Constant.CODE_FORBIDDEN_USER, Constant.FORBIDDEN_USER_REASON_DESC);
+		}
+				
+		UserExtraTaoBaoInfo taoBaoInfo = new UserExtraTaoBaoInfo();
+		taoBaoInfo.setUser(new UserInfo(uid));
+		taoBaoInfo.setTaoBaoNickName(nickName);
+		taoBaoInfo.setTaoBaoUid(taoBaoUid);
+		taoBaoInfo.setSpecialValid(valid);
+		taoBaoInfo.setSpecialId(specialId);
+		taoBaoInfo.setSpecialUpdateTime(new Date());
+		
+		List<UserExtraTaoBaoInfo> list = userExtraTaoBaoInfoMapper.listByTaoBaoUid(taoBaoUid);
+		if (list == null || list.size() == 0) {
+			//鏂板
+			taoBaoInfo.setCreateTime(new Date());
+			userExtraTaoBaoInfoMapper.insertSelective(taoBaoInfo);
 		} else {
-			UserExtraTaoBaoInfo update = new UserExtraTaoBaoInfo();
-			update.setId(info.getId());
-			update.setSpecialId(specialId);
-			update.setSpecialUpdateTime(new Date());
-			update.setSpecialValid(valid);
-			update.setTaoBaoUid(taoBaoUid);
-			userExtraTaoBaoInfoMapper.updateByPrimaryKeySelective(update);
+			// 鍙栫涓�涓浛鎹id 绛変俊鎭�
+			taoBaoInfo.setId(list.get(0).getId());
+			taoBaoInfo.setUpdateTime(new Date());
+			userExtraTaoBaoInfoMapper.updateByPrimaryKeySelective(taoBaoInfo);
+			
+			// 娓呯┖澶氫綑宸茬粦瀹氭暟鎹�
+			if (list.size() > 1) {
+				for (int i = 1; i < list.size(); i++) {
+					clearTaoBaoInfo(list.get(i));
+				}
+			}
 		}
 	}
 
+	@Transactional
+	@Override
+	public void saveUserTaoBaoInfo(Long uid, String relationId, String specialId, String taoBaoUid,
+			String nickName, boolean valid) throws UserExtraTaoBaoInfoException {
+		
+		if (uid == null || StringUtil.isNullOrEmpty(relationId) || StringUtil.isNullOrEmpty(specialId)
+				|| StringUtil.isNullOrEmpty(taoBaoUid)) {
+			throw new UserExtraTaoBaoInfoException(1, "浼犻�掑弬鏁伴儴鍒嗕负绌�");
+		}
+		
+		// 楠岃瘉taoBaoUid鏄惁琚皝绂�
+		if(validateTaoBaoUidForbidden(taoBaoUid)) {
+			throw new UserExtraTaoBaoInfoException(Constant.CODE_FORBIDDEN_USER, Constant.FORBIDDEN_USER_REASON_DESC);
+		}
+		
+		UserExtraTaoBaoInfo taoBaoInfo = new UserExtraTaoBaoInfo();
+		taoBaoInfo.setTaoBaoUid(taoBaoUid);
+		taoBaoInfo.setTaoBaoNickName(nickName);
+		taoBaoInfo.setUser(new UserInfo(uid));
+		// 娓犻亾
+		taoBaoInfo.setRelationValid(valid);
+		taoBaoInfo.setRelationId(relationId);
+		taoBaoInfo.setRelationUpdateTime(new Date());
+		// 缁戝畾
+		taoBaoInfo.setSpecialValid(valid);
+		taoBaoInfo.setSpecialId(specialId);
+		taoBaoInfo.setSpecialUpdateTime(new Date());
+
+		List<UserExtraTaoBaoInfo> list = userExtraTaoBaoInfoMapper.listByTaoBaoUid(taoBaoUid);
+		if (list == null || list.size() == 0) {
+			//鏂板
+			taoBaoInfo.setCreateTime(new Date());
+			userExtraTaoBaoInfoMapper.insertSelective(taoBaoInfo);
+		} else {
+			// 鍙栫涓�涓浛鎹id 绛変俊鎭�
+			taoBaoInfo.setId(list.get(0).getId());
+			taoBaoInfo.setUpdateTime(new Date());
+			userExtraTaoBaoInfoMapper.updateByPrimaryKeySelective(taoBaoInfo);
+			
+			// 娓呯┖澶氫綑宸茬粦瀹氭暟鎹�
+			if (list.size() > 1) {
+				for (int i = 1; i < list.size(); i++) {
+					clearTaoBaoInfo(list.get(i));
+				}
+			}
+		}
+	}
+
+	/**
+	 * 楠岃瘉taoBaoUid  鏄惁琚皝
+	 * @param taoBaoUid
+	 * @return
+	 */
+	public boolean validateTaoBaoUidForbidden(String taoBaoUid) {
+		boolean validate = false;
+		ForbiddenUserIdentifyCode identifyCode = forbiddenUserIdentifyCodeService.listByTypeAndIdentifyCode(
+				ForbiddenUserIdentifyCodeTypeEnum.taobaoUid, taoBaoUid);
+		// 璐﹀彿琚皝
+		if (identifyCode != null && identifyCode.getEffective() != null && identifyCode.getEffective()) {
+			validate = true;
+		}
+		return validate;
+	}
+	
+	/**
+	 * 娓呯┖澶氫綑缁戝畾娣樺疂璐﹀彿淇℃伅
+	 * @param otherInfo
+	 */
+	public void clearTaoBaoInfo(UserExtraTaoBaoInfo otherInfo ) {
+		otherInfo.setUser(null);
+		otherInfo.setTaoBaoUid(null);
+		otherInfo.setTaoBaoNickName(null);
+		
+		otherInfo.setRelationValid(null);
+		otherInfo.setRelationId(null);
+		otherInfo.setRelationUpdateTime(null);
+		
+		otherInfo.setSpecialValid(null);
+		otherInfo.setSpecialId(null);
+		otherInfo.setSpecialUpdateTime(new Date());
+		userExtraTaoBaoInfoMapper.updateByPrimaryKey(otherInfo);
+	}
+	
 	@Override
 	public UserExtraTaoBaoInfo getByUid(Long uid) {
 		return userExtraTaoBaoInfoMapper.selectByUid(uid);

--
Gitblit v1.8.0