admin
2025-02-25 30d8e227e8d823b6c38c3b9c90ac2df03b63befe
fanli/src/main/java/com/yeshi/fanli/service/impl/user/tb/UserExtraTaoBaoInfoServiceImpl.java
@@ -1,285 +1,353 @@
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.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.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;
@Service
public class UserExtraTaoBaoInfoServiceImpl implements UserExtraTaoBaoInfoService {
   @Resource
   private UserExtraTaoBaoInfoMapper userExtraTaoBaoInfoMapper;
   @Resource
   private ForbiddenUserIdentifyCodeService forbiddenUserIdentifyCodeService;
   @Resource
   private UserAccountBindingHistoryService userAccountBindingHistoryService;
   @Transactional
   @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
   @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
   @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);
      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));
            }
         }
      }
      // 加入绑定记录
      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);
   }
   /**
    * 验证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;
   }
}
package com.yeshi.fanli.service.impl.user.tb;
import java.util.Collections;
import java.util.Comparator;
import java.util.Date;
import java.util.List;
import javax.annotation.Resource;
import com.yeshi.fanli.entity.SystemEnum;
import com.yeshi.fanli.service.inter.user.UserInfoService;
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.service.manger.msg.RocketMQManager;
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
    private RocketMQManager rocketMQManager;
    @Resource
    private UserInfoService userInfoService;
    @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);
        }
        //清除该用户的授权信息
//        userExtraTaoBaoInfoMapper.clearUid(uid);
        SystemEnum system = userInfoService.getUserSystem(uid);
        List<UserExtraTaoBaoInfo> list = userExtraTaoBaoInfoMapper.listByTaoBaoUid(taoBaoUid, system);
        UserExtraTaoBaoInfo existInfo = null;
        if (list != null)
            for (UserExtraTaoBaoInfo tb : list) {
                SystemEnum se = userInfoService.getUserSystem(tb.getUser().getId());
                if (se == system) {
                    existInfo = tb;
                    break;
                }
            }
        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());
        if (existInfo == null) {
            // 新增
            taoBaoInfo.setCreateTime(new Date());
            userExtraTaoBaoInfoMapper.insertSelective(taoBaoInfo);
        } else {
            // 取第一个替换uid 等信息
            taoBaoInfo.setId(existInfo.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);
        }
//        userExtraTaoBaoInfoMapper.clearUid(uid);
        SystemEnum system = userInfoService.getUserSystem(uid);
        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, system);
        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);
        }
        SystemEnum system = userInfoService.getUserSystem(uid);
        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, system);
        // 判断之前用户是否绑定过
        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()));
        rocketMQManager.sendNormalMsg(message, null);
    }
    /**
     * 验证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, null);
        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, List<SystemEnum> systemList) {
        if (StringUtil.isNullOrEmpty(relationId))
            return null;
        return userExtraTaoBaoInfoMapper.selectByRelationIdWithUidNotNull(relationId, systemList);
    }
    @Override
    public UserExtraTaoBaoInfo getBySpecialId(String specialId, List<SystemEnum> systemList) {
        if (StringUtil.isNullOrEmpty(specialId))
            return null;
        List<UserExtraTaoBaoInfo> list = userExtraTaoBaoInfoMapper.selectBySpecialIdWithUidNotNull(specialId, systemList);
        if (list == null || list.size() == 0) {
            return null;
        }
        if (list.size() == 1) {
            return list.get(0);
        }
        //多个系统采用统一PID的情况
        //uid较小的在前
        Comparator<UserExtraTaoBaoInfo> comparator = new Comparator<UserExtraTaoBaoInfo>() {
            @Override
            public int compare(UserExtraTaoBaoInfo o1, UserExtraTaoBaoInfo o2) {
                //uid从小到大排列
                return (int) (o1.getUser().getId().longValue() - o2.getUser().getId().longValue());
            }
        };
        Collections.sort(list, comparator);
        return list.get(0);
    }
    @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;
    }
    @Override
    public String getSpecialIdByUid(Long uid) {
        UserExtraTaoBaoInfo extraInfo = getByUid(uid);
        String specialId = null;
        if (extraInfo != null && extraInfo.getSpecialId() != null && extraInfo.getSpecialValid() != null
                && extraInfo.getSpecialValid() == true)
            specialId = extraInfo.getSpecialId();
        return specialId;
    }
}