package com.yeshi.fanli.service.impl.user.tb;
|
|
import java.util.Date;
|
import java.util.List;
|
|
import javax.annotation.Resource;
|
|
import org.springframework.stereotype.Service;
|
import org.springframework.transaction.annotation.Transactional;
|
|
import com.aliyun.openservices.ons.api.Message;
|
import com.aliyun.openservices.ons.api.Producer;
|
import com.yeshi.fanli.dao.mybatis.user.UserExtraTaoBaoInfoMapper;
|
import com.yeshi.fanli.dto.mq.user.UserTopicTagEnum;
|
import com.yeshi.fanli.dto.mq.user.body.TaoBaoBindSuccessMQMsg;
|
import com.yeshi.fanli.entity.bus.user.ForbiddenUserIdentifyCode;
|
import com.yeshi.fanli.entity.bus.user.ForbiddenUserIdentifyCode.ForbiddenUserIdentifyCodeTypeEnum;
|
import com.yeshi.fanli.entity.bus.user.UserAccountBindingHistory;
|
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.UserAccountBindingHistoryService;
|
import com.yeshi.fanli.service.inter.user.tb.UserExtraTaoBaoInfoService;
|
import com.yeshi.fanli.util.Constant;
|
import com.yeshi.fanli.util.StringUtil;
|
import com.yeshi.fanli.util.rocketmq.MQMsgBodyFactory;
|
import com.yeshi.fanli.util.rocketmq.MQTopicName;
|
|
@Service
|
public class UserExtraTaoBaoInfoServiceImpl implements UserExtraTaoBaoInfoService {
|
|
@Resource
|
private UserExtraTaoBaoInfoMapper userExtraTaoBaoInfoMapper;
|
|
@Resource
|
private ForbiddenUserIdentifyCodeService forbiddenUserIdentifyCodeService;
|
|
@Resource
|
private UserAccountBindingHistoryService userAccountBindingHistoryService;
|
|
@Resource(name = "producer")
|
private Producer producer;
|
|
@Transactional(rollbackFor = Exception.class)
|
@Override
|
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());
|
|
userExtraTaoBaoInfoMapper.clearUid(uid);
|
|
List<UserExtraTaoBaoInfo> list = userExtraTaoBaoInfoMapper.listByTaoBaoUid(taoBaoUid);
|
if (list == null || list.size() == 0) {
|
// 新增
|
taoBaoInfo.setCreateTime(new Date());
|
userExtraTaoBaoInfoMapper.insertSelective(taoBaoInfo);
|
} else {
|
// 取第一个替换uid 等信息
|
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(rollbackFor = Exception.class)
|
@Override
|
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());
|
|
userExtraTaoBaoInfoMapper.clearUid(uid);
|
|
List<UserExtraTaoBaoInfo> list = userExtraTaoBaoInfoMapper.listByTaoBaoUid(taoBaoUid);
|
if (list == null || list.size() == 0) {
|
// 新增
|
taoBaoInfo.setCreateTime(new Date());
|
userExtraTaoBaoInfoMapper.insertSelective(taoBaoInfo);
|
} else {
|
// 取第一个替换uid 等信息
|
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(rollbackFor = Exception.class)
|
@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);
|
|
// 判断之前用户是否绑定过
|
UserExtraTaoBaoInfo info = userExtraTaoBaoInfoMapper.selectByUid(uid);
|
|
// 清除之前的用户ID
|
userExtraTaoBaoInfoMapper.clearUid(uid);
|
Long fromUid = null;
|
|
if (list == null || list.size() == 0) {
|
// 新增
|
taoBaoInfo.setCreateTime(new Date());
|
userExtraTaoBaoInfoMapper.insertSelective(taoBaoInfo);
|
} else {
|
if (list.get(0).getUser() != null)
|
fromUid = list.get(0).getUser().getId();
|
// 取第一个替换uid 等信息
|
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));
|
}
|
}
|
}
|
|
// 加入绑定记录
|
UserAccountBindingHistory history = new UserAccountBindingHistory();
|
history.setContent(taoBaoUid);
|
history.setType(UserAccountBindingHistory.TYPE_TB);
|
history.setUid(uid);
|
|
// 之前已经绑定电话号码
|
if (info != null)
|
history.setFirst(false);
|
else
|
history.setFirst(true);
|
userAccountBindingHistoryService.addUserAccountBindingHistory(history);
|
|
Message message = MQMsgBodyFactory.create(MQTopicName.TOPIC_USER, UserTopicTagEnum.taobaoBindSuccess,
|
new TaoBaoBindSuccessMQMsg(uid, fromUid, taoBaoUid, new Date()));
|
producer.send(message);
|
}
|
|
/**
|
* 验证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);
|
}
|
|
@Override
|
public void updateSelective(UserExtraTaoBaoInfo ue) {
|
if (ue == null || ue.getId() == null)
|
return;
|
userExtraTaoBaoInfoMapper.updateByPrimaryKeySelective(ue);
|
}
|
|
@Override
|
public void unBindUid(Long uid) {
|
userExtraTaoBaoInfoMapper.clearUid(uid);
|
}
|
|
@Override
|
public void bindTaoBaoOrderEnd6Num(String taoBaoUid, String orderId) {
|
if (taoBaoUid == null || StringUtil.isNullOrEmpty(orderId))
|
return;
|
UserExtraTaoBaoInfo extraInfo = userExtraTaoBaoInfoMapper.selectByTaoBaoUid(taoBaoUid);
|
if (extraInfo != null) {
|
UserExtraTaoBaoInfo update = new UserExtraTaoBaoInfo();
|
update.setId(extraInfo.getId());
|
update.setTaoBaoOrderEnd6Num(orderId);
|
update.setUpdateTime(new Date());
|
userExtraTaoBaoInfoMapper.updateByPrimaryKeySelective(update);
|
}
|
|
}
|
|
@Override
|
public UserExtraTaoBaoInfo getByRelationId(String relationId) {
|
if (StringUtil.isNullOrEmpty(relationId))
|
return null;
|
return userExtraTaoBaoInfoMapper.selectByRelationIdWithUidNotNull(relationId);
|
}
|
|
@Override
|
public UserExtraTaoBaoInfo getBySpecialId(String specialId) {
|
if (StringUtil.isNullOrEmpty(specialId))
|
return null;
|
return userExtraTaoBaoInfoMapper.selectBySpecialIdWithUidNotNull(specialId);
|
}
|
|
@Override
|
public String getRelationIdByUid(Long uid) {
|
UserExtraTaoBaoInfo extraInfo = getByUid(uid);
|
String relationId = null;
|
if (extraInfo != null && extraInfo.getRelationId() != null && extraInfo.getRelationValid() != null
|
&& extraInfo.getRelationValid() == true)
|
relationId = extraInfo.getRelationId();
|
return relationId;
|
}
|
|
}
|