From 30d8e227e8d823b6c38c3b9c90ac2df03b63befe Mon Sep 17 00:00:00 2001
From: admin <weikou2014>
Date: 星期二, 25 二月 2025 16:41:22 +0800
Subject: [PATCH] 淘宝转链接口更新

---
 fanli/src/main/java/com/yeshi/fanli/service/impl/user/UserInfoExtraServiceImpl.java | 1721 +++++++++++++++++++++++++++++++----------------------------
 1 files changed, 900 insertions(+), 821 deletions(-)

diff --git a/fanli/src/main/java/com/yeshi/fanli/service/impl/user/UserInfoExtraServiceImpl.java b/fanli/src/main/java/com/yeshi/fanli/service/impl/user/UserInfoExtraServiceImpl.java
index bfaee97..eb98d63 100644
--- a/fanli/src/main/java/com/yeshi/fanli/service/impl/user/UserInfoExtraServiceImpl.java
+++ b/fanli/src/main/java/com/yeshi/fanli/service/impl/user/UserInfoExtraServiceImpl.java
@@ -1,821 +1,900 @@
-package com.yeshi.fanli.service.impl.user;
-
-import java.io.InputStream;
-import java.text.ParseException;
-import java.text.SimpleDateFormat;
-import java.util.ArrayList;
-import java.util.Calendar;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import javax.annotation.Resource;
-
-import org.springframework.stereotype.Service;
-import org.yeshi.utils.DateUtil;
-import org.yeshi.utils.HttpUtil;
-import org.yeshi.utils.entity.FileUploadResult;
-import org.yeshi.utils.tencentcloud.COSManager;
-
-import com.yeshi.fanli.dao.mybatis.user.UserInfoExtraMapper;
-import com.yeshi.fanli.dao.mybatis.user.UserRankRecordMapper;
-import com.yeshi.fanli.dto.wx.WXAccountInfoDTO;
-import com.yeshi.fanli.entity.bus.user.ThreeSale;
-import com.yeshi.fanli.entity.bus.user.UserInfo;
-import com.yeshi.fanli.entity.bus.user.UserInfoExtra;
-import com.yeshi.fanli.entity.bus.user.UserRank;
-import com.yeshi.fanli.entity.bus.user.UserRankRecord;
-import com.yeshi.fanli.entity.bus.user.WeiXinUser;
-import com.yeshi.fanli.exception.user.ThreeSaleException;
-import com.yeshi.fanli.exception.user.UserInfoExtraException;
-import com.yeshi.fanli.log.LogHelper;
-import com.yeshi.fanli.service.inter.config.ConfigService;
-import com.yeshi.fanli.service.inter.order.CommonOrderCountService;
-import com.yeshi.fanli.service.inter.user.ForbiddenUserIdentifyCodeService;
-import com.yeshi.fanli.service.inter.user.UserAccountService;
-import com.yeshi.fanli.service.inter.user.UserInfoExtraService;
-import com.yeshi.fanli.service.inter.user.UserInfoService;
-import com.yeshi.fanli.service.inter.user.UserInviteRecordService;
-import com.yeshi.fanli.service.inter.user.UserRankService;
-import com.yeshi.fanli.service.inter.user.invite.ThreeSaleSerivce;
-import com.yeshi.fanli.util.Constant;
-import com.yeshi.fanli.util.StringUtil;
-import com.yeshi.fanli.util.account.UserUtil;
-import com.yeshi.fanli.util.wx.WXLoginUtil;
-import com.yeshi.fanli.vo.user.UserInfoExtraVO;
-
-@Service
-public class UserInfoExtraServiceImpl implements UserInfoExtraService {
-
-	@Resource
-	private UserInfoExtraMapper userInfoExtraMapper;
-
-	@Resource
-	private UserRankRecordMapper userRankRecordMapper;
-
-	@Resource
-	private UserRankService userRankService;
-
-	@Resource
-	private CommonOrderCountService commonOrderCountService;
-
-	@Resource
-	private ConfigService configService;
-
-	@Resource
-	private ThreeSaleSerivce threeSaleSerivce;
-
-	@Resource
-	private UserInfoService userInfoService;
-
-	@Resource
-	private UserAccountService userAccountService;
-
-	@Resource
-	private ForbiddenUserIdentifyCodeService forbiddenUserIdentifyCodeService;
-
-	@Resource
-	private UserInviteRecordService userInviteRecordService;
-
-	@Override
-	public UserInfoExtraVO getRankInfo(Long uid) throws UserInfoExtraException, Exception {
-
-		UserInfoExtraVO extraVO = userInfoExtraMapper.getInfoExtraVOByUid(uid);
-		if (extraVO == null) {
-			throw new UserInfoExtraException(1, "鐢ㄦ埛闄勫姞淇℃伅涓嶅瓨鍦�");
-		}
-
-		// 绛夌骇瀵圭収琛�
-		String contrast = configService.get("user_rank_contrast");
-		extraVO.setRankContrast(contrast);
-		// 鐗瑰埆鎻愰啋
-		String rankTip = configService.get("user_rank_tip");
-		extraVO.setRankTip(rankTip);
-
-		Integer rankOrderNum = extraVO.getRankOrderNum();
-
-		UserRank userRank = extraVO.getUserRank();
-		// 闈掗摐绛夌骇涓嶈繑鍥炴伃鍠滆鍙� 娉細闈掗摐绛夌骇id 蹇呴』涓�1
-		if (userRank != null && userRank.getId() != null && userRank.getId() > 1) {
-
-			String rankMsg = null;
-			Integer rankSource = extraVO.getRankSource();
-			switch (rankSource) {
-			case Constant.TYPE_REBATE:
-				rankMsg = "杩斿埄璁㈠崟";
-				break;
-			case Constant.TYPE_SHAER:
-				rankMsg = "鍒嗕韩璁㈠崟";
-				break;
-			case Constant.TYPE_INVITE:
-				rankMsg = "閭�璇疯鍗�";
-				break;
-			default:
-				break;
-			}
-
-			List<Object> listMsg = new ArrayList<Object>();
-
-			if (rankMsg != null) {
-				String color_red = "#E5005C";
-				String color_black = "#333333";
-
-				Map<String, String> map1 = new HashMap<String, String>();
-				map1.put("content", "涓婃湀");
-				map1.put("color", color_black);
-				listMsg.add(map1);
-
-				Map<String, String> map2 = new HashMap<String, String>();
-				map2.put("content", rankMsg);
-				map2.put("color", color_red);
-				listMsg.add(map2);
-
-				Map<String, String> map3 = new HashMap<String, String>();
-				map3.put("content", "杈惧埌浜�");
-				map3.put("color", color_black);
-				listMsg.add(map3);
-
-				Map<String, String> map4 = new HashMap<String, String>();
-				map4.put("content", rankOrderNum + "");
-				map4.put("color", color_red);
-				listMsg.add(map4);
-
-				Map<String, String> map5 = new HashMap<String, String>();
-				map5.put("content", "鍗�");
-				map5.put("color", color_black);
-				listMsg.add(map5);
-				extraVO.setGalaMsg(listMsg);
-			}
-		}
-
-		return extraVO;
-	}
-
-	@Override
-	public void updateUserRankByUid(Long uid) throws UserInfoExtraException {
-		if (uid == null || uid == 0) {
-			return;
-		}
-
-		boolean isupdateRank = true;
-
-		UserInfoExtra userInfoExtra = userInfoExtraMapper.getInfoExtraByUid(uid);
-		if (userInfoExtra != null && userInfoExtra.getId() != null) {
-			// 鍒ゆ柇褰撴湀鏄惁宸叉洿鏂�
-			Date rankUpdateTime = userInfoExtra.getRankUpdateTime();
-			if (rankUpdateTime != null) {
-				SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM");
-				if (sdf.format(rankUpdateTime).equals(sdf.format(new Date()))) {
-					isupdateRank = false;
-				}
-			}
-		} else {
-			userInfoExtra = new UserInfoExtra();
-			userInfoExtra.setUserInfo(new UserInfo(uid));
-		}
-
-		// 鏇存柊绛夌骇
-		if (isupdateRank) {
-			updateRank(userInfoExtra);
-		}
-	}
-
-	@Override
-	public void createUserInfoExtra(Long uid) throws UserInfoExtraException {
-		UserInfoExtra userInfoExtra = userInfoExtraMapper.getInfoExtraByUid(uid);
-		if (userInfoExtra != null) {
-			return;
-		}
-
-		userInfoExtra = new UserInfoExtra();
-		userInfoExtra.setUserInfo(new UserInfo(uid));
-		userInfoExtra.setFirstLoginTime(new Date());
-		userInfoExtra.setCreateTime(new Date());
-		userInfoExtra.setUpdateTime(new Date());
-		userInfoExtraMapper.insertSelective(userInfoExtra);
-	}
-
-	@Override
-	public UserInfoExtra updateRank(UserInfoExtra userInfoExtra) throws UserInfoExtraException {
-		UserInfo userInfo = userInfoExtra.getUserInfo();
-		if (userInfo == null) {
-			throw new UserInfoExtraException(1, "鐢ㄦ埛涓嶅瓨鍦�");
-		}
-
-		Long uid = userInfo.getId();
-		if (uid == null) {
-			throw new UserInfoExtraException(1, "鐢ㄦ埛ID涓嶅瓨鍦�");
-		}
-
-		List<UserRank> listRank = userRankService.getAllRank();
-		if (listRank == null || listRank.size() == 0) {
-			throw new UserInfoExtraException(1, "绯荤粺绛夌骇涓嶅瓨鍦�");
-		}
-
-		int selfOrderNum = 0;
-		int sharedOrderNum = 0;
-		int inviteOrderNum = 0;
-		Map<String, Object> map = commonOrderCountService.lastMonthSettleOrderNumber(uid);
-		if (map != null) {
-			// 杩斿埄璁㈠崟
-			if (map.get("totalSelf") != null) {
-				selfOrderNum = Integer.parseInt(map.get("totalSelf").toString());
-			}
-
-			// 鍒嗕韩璁㈠崟
-			if (map.get("totalShared") != null) {
-				sharedOrderNum = Integer.parseInt(map.get("totalShared").toString());
-			}
-
-			// 閭�璇疯鍗�
-			if (map.get("totalInvite") != null) {
-				inviteOrderNum = Integer.parseInt(map.get("totalInvite").toString());
-			}
-		}
-
-		UserRank rank = null;
-		for (UserRank userRank : listRank) {
-			// 閭�璇锋弧瓒�
-			Integer inviteNum = userRank.getInviteNum();
-			if (inviteOrderNum >= inviteNum) {
-				rank = userRank;
-				userInfoExtra.setRankOrderNum(inviteOrderNum);
-				userInfoExtra.setRankSource(Constant.TYPE_INVITE);
-			}
-
-			// 鍒嗕韩婊¤冻
-			int shareNum = userRank.getShareNum();
-			if (sharedOrderNum >= shareNum) {
-				rank = userRank;
-				userInfoExtra.setRankOrderNum(sharedOrderNum);
-				userInfoExtra.setRankSource(Constant.TYPE_SHAER);
-			}
-
-			// 杩斿埄婊¤冻
-			int directNum = userRank.getRebateNum();
-			if (selfOrderNum >= directNum) {
-				rank = userRank;
-				userInfoExtra.setRankOrderNum(selfOrderNum);
-				userInfoExtra.setRankSource(Constant.TYPE_REBATE);
-			}
-
-			if (rank != null) {
-				userInfoExtra.setUserRank(rank);
-			} else {
-				rank = userRank;
-				// 榛樿鏈�浣庣瓑绾�:闈掗摐
-				userInfoExtra.setUserRank(rank);
-				userInfoExtra.setRankOrderNum(selfOrderNum);
-				userInfoExtra.setRankSource(Constant.TYPE_REBATE);
-				break;
-			}
-		}
-
-		// 绛夌骇鏇存柊鏃堕棿 褰撴湀1鍙�
-		Calendar calendar1 = Calendar.getInstance();
-		calendar1.set(Calendar.DAY_OF_MONTH, 1);
-		userInfoExtra.setRankUpdateTime(calendar1.getTime());
-
-		// 淇濆瓨淇℃伅骞惰繑鍥�
-		saveUserInfoExtra(userInfoExtra);
-
-		UserRankRecord userRankRecord = new UserRankRecord();
-		userRankRecord.setUid(uid);
-		userRankRecord.setRankId(rank.getId());
-		userRankRecord.setCreateTime(new Date());
-		userRankRecordMapper.insertSelective(userRankRecord);
-
-		return userInfoExtra;
-	}
-
-	@Override
-	public UserInfoExtra saveUserInfoExtra(UserInfoExtra userInfoExtra) throws UserInfoExtraException {
-
-		if (userInfoExtra == null) {
-			throw new UserInfoExtraException(1, "闄勫姞淇℃伅涓嶈兘涓虹┖");
-		}
-
-		Long extraId = userInfoExtra.getId();
-		if (extraId != null) {
-			userInfoExtra.setUpdateTime(new Date());
-			userInfoExtraMapper.updateByPrimaryKeySelective(userInfoExtra);
-		} else {
-			UserInfo userInfo = userInfoExtra.getUserInfo();
-			if (userInfo == null || userInfo.getId() == null) {
-				throw new UserInfoExtraException(1, "鐢ㄦ埛涓嶅瓨鍦�");
-			}
-
-			Long uid = userInfo.getId();
-			UserInfoExtra extra = userInfoExtraMapper.getInfoExtraByUid(uid);
-			if (extra != null && extra.getId() != null) {
-				userInfoExtra.setId(extra.getId());
-				userInfoExtra.setUpdateTime(new Date());
-				userInfoExtraMapper.updateByPrimaryKeySelective(userInfoExtra);
-			} else {
-				userInfoExtra.setCreateTime(new Date());
-				userInfoExtra.setUpdateTime(new Date());
-				userInfoExtraMapper.insertSelective(userInfoExtra);
-			}
-
-		}
-		return userInfoExtra;
-	}
-
-	@Override
-	public String activateInviteCode(Long uid, String inviteCode) throws UserInfoExtraException {
-		if (uid == null || inviteCode == null) {
-			throw new UserInfoExtraException(1, "鐢ㄦ埛id銆侀個璇风爜涓嶈兘涓虹┖");
-		}
-
-		// 琚個璇蜂汉淇℃伅
-		UserInfo invitee = userInfoService.selectByPKey(uid);
-		if (invitee == null) {
-			throw new UserInfoExtraException(1, "鐢ㄦ埛涓嶅瓨鍦�");
-		}
-
-		UserInfoExtra extra = userInfoExtraMapper.getInfoExtraByUid(uid);
-		if (extra != null) {
-			String inviteCodeHas = extra.getInviteCode();
-			if (inviteCodeHas != null && inviteCodeHas.trim().length() > 0) {
-				throw new UserInfoExtraException(1, "宸插瓨鍦ㄩ個璇风爜,璇峰埛鏂伴〉闈�");
-			}
-		}
-
-		// 閭�璇蜂汉淇℃伅
-		UserInfo inviter = userInfoService.getInfoByPhoneOrInviteCode(inviteCode, inviteCode);
-		if (inviter == null) {
-			throw new UserInfoExtraException(1, "涓婄骇閭�璇风爜涓嶅瓨鍦�");
-		}
-
-		// 缁戝畾鍏崇郴
-		try {
-			threeSaleSerivce.bindRelationshipByInviteCode(invitee, inviter);
-		} catch (ThreeSaleException e) {
-			try {
-				LogHelper.errorDetailInfo(e);
-			} catch (Exception e1) {
-				e1.printStackTrace();
-			}
-			throw new UserInfoExtraException(1, "婵�娲诲け璐�");
-		}
-
-		// 閭�璇风爜鏈夋晥銆佺敓鎴愰個璇风爜
-		String code = UserUtil.getInviteCode(uid);
-		if (code == null || code.trim().length() == 0) {
-			throw new UserInfoExtraException(1, "婵�娲荤爜鐢熸垚澶辫触");
-		}
-
-		UserInfoExtra userInfoExtra = new UserInfoExtra();
-		userInfoExtra.setUserInfo(invitee);
-		userInfoExtra.setInviteCode(code);
-
-		// 淇濆瓨棰濆淇℃伅
-		saveUserInfoExtra(userInfoExtra);
-
-		Long id = userInfoExtra.getId();
-		if (id == null) {
-			throw new UserInfoExtraException(1, "婵�娲荤爜鐢熸垚澶辫触");
-		}
-
-		return code;
-	}
-
-	@Override
-	public void activationInviteWX(WXAccountInfoDTO wxAccount, Long uid, String code) throws UserInfoExtraException {
-		if (uid == null || code == null) {
-			throw new UserInfoExtraException(1, "婵�娲讳俊鎭笉瀹屾暣");
-		}
-
-		// 鐢ㄦ埛淇℃伅
-		UserInfo invitee = userInfoService.selectByPKey(uid);
-		if (invitee == null) {
-			throw new UserInfoExtraException(1, "鐢ㄦ埛涓嶅瓨鍦�");
-		}
-
-		// 鐢ㄦ埛棰濆淇℃伅
-		UserInfoExtra extra = userInfoExtraMapper.getInfoExtraByUid(uid);
-		if (extra != null) {
-			String inviteCodeHas = extra.getInviteCode();
-			if (inviteCodeHas != null && inviteCodeHas.trim().length() > 0) {
-				throw new UserInfoExtraException(1, "宸茬粡婵�娲�, 鏃犻渶鍐嶆婵�娲�");
-			}
-		}
-
-		// 鑾峰彇寰俊淇℃伅
-		WeiXinUser weiXinUser = WXLoginUtil.getWeiXinUser(code, wxAccount.getAppId(),
-				wxAccount.getAppSecret());
-		if (weiXinUser == null) {
-			throw new UserInfoExtraException(1, "寰俊鎺堟潈澶辫触");
-		}
-		String wxUnionId = weiXinUser.getUnionid();
-		if (wxUnionId == null || wxUnionId.trim().length() == 0) {
-			throw new UserInfoExtraException(1, "寰俊鎺堟潈澶辫触");
-		}
-
-		// 楠岃瘉鏁版嵁
-		String wxUnionIdExist = invitee.getWxUnionId();
-		if (StringUtil.isNullOrEmpty(wxUnionIdExist)) {
-			UserInfo newUser = userInfoService.getEffectiveUserInfoByWXUnionId(weiXinUser.getUnionid());
-			if (newUser != null) {
-				throw new UserInfoExtraException(1, "姝ゅ井淇″凡琚叾浠栧笎鍙风粦瀹�");
-			}
-
-			// 鑷姩缁戝畾寰俊
-			UserInfo updateUserInfo = new UserInfo(uid);
-			updateUserInfo.setWxOpenId(weiXinUser.getOpenid());
-			updateUserInfo.setWxUnionId(weiXinUser.getUnionid());
-			updateUserInfo.setWxName(weiXinUser.getNickname());
-			updateUserInfo.setWxPic(weiXinUser.getHeadimgurl());
-
-			// 灏嗛粯璁ゆ樀绉版浛鎹㈡垚寰俊鏄电О
-			String defaultNickName = Constant.systemCommonConfig.getDefaultNickName();
-			if (!StringUtil.isNullOrEmpty(defaultNickName) && !StringUtil.isNullOrEmpty(weiXinUser.getNickname())) {
-				defaultNickName = defaultNickName + uid;
-				if ((defaultNickName.equals(invitee.getNickName()) || "杩斿埄鍒�".equals(invitee.getNickName())
-						|| invitee.getNickName().startsWith(Constant.systemCommonConfig.getDefaultNickName()))) {
-					updateUserInfo.setNickName(weiXinUser.getNickname());
-				}
-			}
-
-			// 灏嗛粯璁ゅご鍍忔浛鎹㈡垚寰俊澶村儚
-			String defaultPortrait = Constant.systemCommonConfig.getDefaultPortrait();
-			if (!StringUtil.isNullOrEmpty(weiXinUser.getHeadimgurl()) && !StringUtil.isNullOrEmpty(defaultPortrait)
-					&& defaultPortrait.equals(invitee.getPortrait())) {
-				String headimgurl = weiXinUser.getHeadimgurl();
-				InputStream asInputStream = HttpUtil.getAsInputStream(headimgurl);
-				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() + ""));
-					if (result != null && !StringUtil.isNullOrEmpty(result.getUrl())) {
-						headimgurl = result.getUrl();
-					} else {
-						LogHelper.test("寰俊澶村儚涓婁紶澶辫触: " +weiXinUser.getUnionid()+ " " + headimgurl);
-					}
-				}
-				updateUserInfo.setPortrait(headimgurl);
-			}
-
-			userInfoService.updateByPrimaryKeySelective(updateUserInfo);
-
-		} else if (!wxUnionId.equals(wxUnionIdExist)) {
-			throw new UserInfoExtraException(1, "缁戝畾寰俊涓庢縺娲诲井淇′笉涓�鑷�");
-		}
-
-		// 閭�璇蜂汉ID -1.5.3鏂扮増
-		Long inviterId = userInviteRecordService.getNewestInviterId(wxUnionId);
-
-		// 鍏煎1.5.3 涔嬪墠鐗堟湰
-		ThreeSale threeSale = threeSaleSerivce.getByWorkerId(uid);
-		if (inviterId == null && threeSale != null) {
-			Long bossId = threeSale.getBoss().getId();
-			UserInfoExtra inviterExtra = userInfoExtraMapper.getInfoExtraByUid(bossId);
-			if (inviterExtra != null && inviterExtra.getInviteCode() == null) {
-				// 鏇存柊閭�璇风爜
-				UserInfoExtra inviterInfoExtra = new UserInfoExtra();
-				inviterInfoExtra.setId(inviterExtra.getId());
-				inviterInfoExtra.setInviteCode(UserUtil.getInviteCode(bossId));
-				userInfoExtraMapper.updateByPrimaryKeySelective(inviterInfoExtra);
-			}
-		}
-
-		// 娌℃湁琚個璇疯繃
-		if (inviterId == null && threeSale == null) {
-			throw new UserInfoExtraException(1, "娌℃湁瀵瑰簲鐨勯個璇峰叧绯�");
-		}
-
-		// 缁戝畾鍏崇郴
-		try {
-			threeSaleSerivce.bindRelationshipByWX(invitee, inviterId, threeSale);
-		} catch (ThreeSaleException e) {
-			try {
-				LogHelper.errorDetailInfo(e);
-			} catch (Exception e1) {
-				e1.printStackTrace();
-			}
-			throw new UserInfoExtraException(1, "鍏崇郴缁戝畾鏃跺け璐�");
-		}
-
-		// 閭�璇风爜鏈夋晥銆佺敓鎴愰個璇风爜
-		String inviteCode = UserUtil.getInviteCode(uid);
-		if (inviteCode == null || inviteCode.trim().length() == 0) {
-			throw new UserInfoExtraException(1, "婵�娲荤爜鐢熸垚澶辫触");
-		}
-		// 淇濆瓨閭�璇风爜
-		UserInfoExtra userInfoExtra = new UserInfoExtra();
-		userInfoExtra.setUserInfo(invitee);
-		userInfoExtra.setInviteCode(inviteCode);
-		userInfoExtra.setUpdateTime(new Date());
-		if (extra != null) {
-			userInfoExtra.setId(extra.getId());
-			userInfoExtraMapper.updateByPrimaryKeySelective(userInfoExtra);
-		} else {
-			userInfoExtra.setCreateTime(new Date());
-			userInfoExtraMapper.insertSelective(userInfoExtra);
-		}
-	}
-
-	
-	@Override
-	public void activeInviteWX(Long uid, WeiXinUser weiXinUser) throws UserInfoExtraException {
-		if (uid == null || weiXinUser == null) {
-			throw new UserInfoExtraException(1, "婵�娲讳俊鎭笉瀹屾暣");
-		}
-
-		// 鐢ㄦ埛淇℃伅
-		UserInfo invitee = userInfoService.selectByPKey(uid);
-		if (invitee == null) {
-			throw new UserInfoExtraException(1, "鐢ㄦ埛涓嶅瓨鍦�");
-		}
-
-		// 鐢ㄦ埛棰濆淇℃伅
-		UserInfoExtra extra = userInfoExtraMapper.getInfoExtraByUid(uid);
-		if (extra != null) {
-			String inviteCodeHas = extra.getInviteCode();
-			if (inviteCodeHas != null && inviteCodeHas.trim().length() > 0) {
-				throw new UserInfoExtraException(1, "宸茬粡婵�娲�, 鏃犻渶鍐嶆婵�娲�");
-			}
-		}
-
-		String wxUnionId = weiXinUser.getUnionid();
-		if (wxUnionId == null || wxUnionId.trim().length() == 0) {
-			throw new UserInfoExtraException(1, "寰俊鎺堟潈澶辫触");
-		}
-
-		// 楠岃瘉鏁版嵁
-		String wxUnionIdExist = invitee.getWxUnionId();
-		if (StringUtil.isNullOrEmpty(wxUnionIdExist)) {
-			UserInfo newUser = userInfoService.getEffectiveUserInfoByWXUnionId(weiXinUser.getUnionid());
-			if (newUser != null) {
-				throw new UserInfoExtraException(1, "姝ゅ井淇″凡琚叾浠栧笎鍙风粦瀹�");
-			}
-
-			// 鑷姩缁戝畾寰俊
-			UserInfo updateUserInfo = new UserInfo(uid);
-			updateUserInfo.setWxOpenId(weiXinUser.getOpenid());
-			updateUserInfo.setWxUnionId(weiXinUser.getUnionid());
-			updateUserInfo.setWxName(weiXinUser.getNickname());
-			updateUserInfo.setWxPic(weiXinUser.getHeadimgurl());
-
-			// 灏嗛粯璁ゆ樀绉版浛鎹㈡垚寰俊鏄电О
-			String defaultNickName = Constant.systemCommonConfig.getDefaultNickName();
-			if (!StringUtil.isNullOrEmpty(defaultNickName) && !StringUtil.isNullOrEmpty(weiXinUser.getNickname())) {
-				defaultNickName = defaultNickName + uid;
-				if ((defaultNickName.equals(invitee.getNickName()) || "杩斿埄鍒�".equals(invitee.getNickName())
-						|| invitee.getNickName().startsWith(Constant.systemCommonConfig.getDefaultNickName()))) {
-					updateUserInfo.setNickName(weiXinUser.getNickname());
-				}
-			}
-
-			// 灏嗛粯璁ゅご鍍忔浛鎹㈡垚寰俊澶村儚
-			String defaultPortrait = Constant.systemCommonConfig.getDefaultPortrait();
-			if (!StringUtil.isNullOrEmpty(weiXinUser.getHeadimgurl()) && !StringUtil.isNullOrEmpty(defaultPortrait)
-					&& defaultPortrait.equals(invitee.getPortrait())) {
-				String headimgurl = weiXinUser.getHeadimgurl();
-				InputStream asInputStream = HttpUtil.getAsInputStream(headimgurl);
-				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() + ""));
-					if (result != null && !StringUtil.isNullOrEmpty(result.getUrl())) {
-						headimgurl = result.getUrl();
-					} else {
-						LogHelper.test("寰俊澶村儚涓婁紶澶辫触: " +weiXinUser.getUnionid()+ " " + headimgurl);
-					}
-				}
-				updateUserInfo.setPortrait(headimgurl);
-			}
-
-			userInfoService.updateByPrimaryKeySelective(updateUserInfo);
-
-		} else if (!wxUnionId.equals(wxUnionIdExist)) {
-			throw new UserInfoExtraException(1, "缁戝畾寰俊涓庢縺娲诲井淇′笉涓�鑷�");
-		}
-
-		// 閭�璇蜂汉ID -1.5.3鏂扮増
-		Long inviterId = userInviteRecordService.getNewestInviterId(wxUnionId);
-
-		// 鍏煎1.5.3 涔嬪墠鐗堟湰
-		ThreeSale threeSale = threeSaleSerivce.getByWorkerId(uid);
-		if (inviterId == null && threeSale != null) {
-			Long bossId = threeSale.getBoss().getId();
-			UserInfoExtra inviterExtra = userInfoExtraMapper.getInfoExtraByUid(bossId);
-			if (inviterExtra != null && inviterExtra.getInviteCode() == null) {
-				// 鏇存柊閭�璇风爜
-				UserInfoExtra inviterInfoExtra = new UserInfoExtra();
-				inviterInfoExtra.setId(inviterExtra.getId());
-				inviterInfoExtra.setInviteCode(UserUtil.getInviteCode(bossId));
-				userInfoExtraMapper.updateByPrimaryKeySelective(inviterInfoExtra);
-			}
-		}
-
-		// 娌℃湁琚個璇疯繃
-		if (inviterId == null && threeSale == null) {
-			throw new UserInfoExtraException(1, "娌℃湁瀵瑰簲鐨勯個璇峰叧绯�");
-		}
-
-		// 缁戝畾鍏崇郴
-		try {
-			threeSaleSerivce.bindRelationshipByWX(invitee, inviterId, threeSale);
-		} catch (ThreeSaleException e) {
-			try {
-				LogHelper.errorDetailInfo(e);
-			} catch (Exception e1) {
-				e1.printStackTrace();
-			}
-			throw new UserInfoExtraException(1, "鍏崇郴缁戝畾鏃跺け璐�");
-		}
-
-		// 閭�璇风爜鏈夋晥銆佺敓鎴愰個璇风爜
-		String inviteCode = UserUtil.getInviteCode(uid);
-		if (inviteCode == null || inviteCode.trim().length() == 0) {
-			throw new UserInfoExtraException(1, "婵�娲荤爜鐢熸垚澶辫触");
-		}
-		// 淇濆瓨閭�璇风爜
-		UserInfoExtra userInfoExtra = new UserInfoExtra();
-		userInfoExtra.setUserInfo(invitee);
-		userInfoExtra.setInviteCode(inviteCode);
-		userInfoExtra.setUpdateTime(new Date());
-		if (extra != null) {
-			userInfoExtra.setId(extra.getId());
-			userInfoExtraMapper.updateByPrimaryKeySelective(userInfoExtra);
-		} else {
-			userInfoExtra.setCreateTime(new Date());
-			userInfoExtraMapper.insertSelective(userInfoExtra);
-		}
-	}
-	
-	
-	@Override
-	public void updateActiveTime(Long uid, Date date) {
-		UserInfoExtra userInfoExtra = new UserInfoExtra();
-		userInfoExtra.setUserInfo(new UserInfo(uid));
-		userInfoExtra.setActiveTime(date);
-		userInfoExtraMapper.updateInfoExtraByUid(userInfoExtra);
-	}
-	
-	
-	@Override
-	public UserInfoExtra getUserInfoExtra(Long uid) {
-		return userInfoExtraMapper.getInfoExtraByUid(uid);
-	}
-	
-	@Override
-	public UserInfoExtra getUserALLInfo(Long uid) {
-		return userInfoExtraMapper.gerUserRank(uid);
-	}
-
-	
-	@Override
-	public UserInfoExtra getByUidForUpdate(Long uid) {
-		return userInfoExtraMapper.getByUidForUpdate(uid);
-	}
-	
-	@Override
-	public void updateGoldCoin(Long id, Integer goldCoin) {
-		userInfoExtraMapper.updateGoldCoin(id, goldCoin);
-	}
-	
-	@Override
-	public UserInfoExtraVO getInfoExtraVOByUid(Long uid) {
-		return userInfoExtraMapper.getInfoExtraVOByUid(uid);
-	}
-
-	@Override
-	public String getUserInviteCode(Long uid) throws UserInfoExtraException {
-
-		UserInfoExtra userInfoExtra = userInfoExtraMapper.getInfoExtraByUid(uid);
-		if (userInfoExtra == null) {
-			userInfoExtra = new UserInfoExtra();
-		}
-
-		// 閭�璇风爜
-		String inviteCode = userInfoExtra.getInviteCode();
-
-		if (inviteCode == null || inviteCode.trim().length() == 0) {
-			// 鍒ゆ柇鐢ㄦ埛
-			int relationshipNum = threeSaleSerivce.getSuccessRelationshipNum(uid);
-
-			if (relationshipNum > 0) {
-				// 閭�璇风爜鏈夋晥銆佺敓鎴愰個璇风爜
-				inviteCode = UserUtil.getInviteCode(uid);
-				if (inviteCode == null || inviteCode.trim().length() == 0) {
-					throw new UserInfoExtraException(1, "婵�娲荤爜鐢熸垚澶辫触");
-				}
-
-				// 淇濆瓨閭�璇风爜
-				userInfoExtra.setUserInfo(new UserInfo(uid));
-				userInfoExtra.setInviteCode(inviteCode);
-				// 淇濆瓨闄勫姞淇℃伅
-				saveUserInfoExtra(userInfoExtra);
-			}
-		}
-
-		return inviteCode;
-	}
-
-	@Override
-	public long countByRankId(Long rankId) {
-		return userInfoExtraMapper.countByRankId(rankId);
-	}
-
-	@Override
-	public boolean isNewUser(Long uid) {
-		boolean isNew = false;
-		if (uid == null) {
-			return isNew;
-		}
-
-		UserInfoExtra extra = userInfoExtraMapper.getInfoExtraByUid(uid);
-		if (extra != null && extra.getFirstLoginTime() != null) {
-			try {
-				int day = DateUtil.daysBetween(extra.getFirstLoginTime(), new Date());
-				if (day <= 15) {
-					isNew = true;
-				}
-			} catch (ParseException e) {
-				e.printStackTrace();
-			}
-		}
-		return isNew;
-	}
-
-	@Override
-	public UserRank gerUserRank(Long uid) {
-		if (uid == null) {
-			return null;
-		}
-
-		UserInfoExtra userInfoExtra = userInfoExtraMapper.gerUserRank(uid);
-		if (userInfoExtra == null) {
-			return null;
-		}
-		return userInfoExtra.getUserRank();
-	}
-
-	@Override
-	public UserInfo getUserByInviteCode(String inviteCode) throws UserInfoExtraException {
-		if (StringUtil.isNullOrEmpty(inviteCode)) {
-			throw new UserInfoExtraException(1, "閭�璇风爜涓嶈兘涓虹┖");
-		}
-		// 閭�璇蜂汉淇℃伅
-		UserInfo inviter = userInfoService.getInfoByPhoneOrInviteCode(inviteCode, inviteCode);
-		if (inviter == null) {
-			throw new UserInfoExtraException(1, "涓婄骇閭�璇风爜涓嶅瓨鍦�");
-		}
-		return inviter;
-	}
-
-	@Override
-	public UserInfo getInviterInfo(Long uid, String wxUnionId) throws UserInfoExtraException {
-		if (wxUnionId == null) {
-			throw new UserInfoExtraException(1, "unionId淇℃伅涓嶅畬鏁�");
-		}
-
-		// 鐢ㄦ埛淇℃伅
-		UserInfo invitee = userInfoService.selectByPKey(uid);
-		if (invitee == null) {
-			throw new UserInfoExtraException(1, "鐢ㄦ埛涓嶅瓨鍦�");
-		}
-
-		// 鐢ㄦ埛棰濆淇℃伅
-		UserInfoExtra extra = userInfoExtraMapper.getInfoExtraByUid(uid);
-		if (extra != null) {
-			String inviteCodeHas = extra.getInviteCode();
-			if (inviteCodeHas != null && inviteCodeHas.trim().length() > 0) {
-				throw new UserInfoExtraException(1, "宸茬粡婵�娲�, 鏃犻渶鍐嶆婵�娲�");
-			}
-		}
-
-		// 楠岃瘉鏁版嵁
-		String wxUnionIdExist = invitee.getWxUnionId();
-		if (StringUtil.isNullOrEmpty(wxUnionIdExist)) {
-			UserInfo newUser = userInfoService.getEffectiveUserInfoByWXUnionId(wxUnionId);
-			if (newUser != null) {
-				throw new UserInfoExtraException(1, "姝ゅ井淇″凡琚叾浠栧笎鍙风粦瀹�");
-			}
-		} else if (!wxUnionId.equals(wxUnionIdExist)) {
-			throw new UserInfoExtraException(1, "缁戝畾寰俊涓庢縺娲诲井淇′笉涓�鑷�");
-		}
-
-		// 閭�璇蜂汉ID
-		Long inviterId = userInviteRecordService.getNewestInviterId(wxUnionId);
-		if (inviterId == null) {
-			throw new UserInfoExtraException(1, "娌℃湁瀵瑰簲鐨勯個璇峰叧绯�");
-		}
-
-		UserInfo inviter = userInfoService.selectByPKey(inviterId);
-		if (inviter == null) {
-			throw new UserInfoExtraException(1, "瀵瑰簲鐨勯個璇峰叧绯讳笉瀛樺湪");
-		}
-		return inviter;
-	}
-
-	@Override
-	public void updateAutoExtract(Integer days) {
-		userInfoExtraMapper.updateAutoExtract(days);
-	}
-}
+package com.yeshi.fanli.service.impl.user;
+
+import java.io.File;
+import java.io.IOException;
+import java.io.InputStream;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Calendar;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.UUID;
+
+import javax.annotation.Resource;
+
+import com.yeshi.fanli.dao.user.UserGoodsChannelConfigDao;
+import com.yeshi.fanli.entity.SystemEnum;
+import com.yeshi.fanli.entity.config.SystemConfigKeyEnum;
+import com.yeshi.fanli.entity.goods.UserGoodsChannelConfig;
+import com.yeshi.fanli.service.inter.config.SystemConfigService;
+import com.yeshi.fanli.util.*;
+import org.springframework.context.annotation.Lazy;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.web.multipart.MultipartFile;
+import org.yeshi.utils.DateUtil;
+import org.yeshi.utils.FileUtil;
+import org.yeshi.utils.HttpUtil;
+import org.yeshi.utils.entity.FileUploadResult;
+import org.yeshi.utils.entity.wx.WeiXinUser;
+import org.yeshi.utils.tencentcloud.COSManager;
+
+import com.aliyun.openservices.ons.api.Message;
+import com.yeshi.fanli.dao.mybatis.user.UserInfoExtraMapper;
+import com.yeshi.fanli.dao.mybatis.user.UserRankRecordMapper;
+import com.yeshi.fanli.dto.mq.user.UserTopicTagEnum;
+import com.yeshi.fanli.dto.mq.user.body.InviteCodeActiveMQMsg;
+import com.yeshi.fanli.dto.mq.user.body.UserInfoUpdateMQMsg;
+import com.yeshi.fanli.dto.mq.user.body.UserInfoUpdateMQMsg.UserInfoUpdateTypeEnum;
+import com.yeshi.fanli.dto.wx.WXAccountInfoDTO;
+import com.yeshi.fanli.entity.bus.user.UserInfo;
+import com.yeshi.fanli.entity.bus.user.UserInfoExtra;
+import com.yeshi.fanli.entity.bus.user.UserRank;
+import com.yeshi.fanli.entity.bus.user.UserRankRecord;
+import com.yeshi.fanli.entity.bus.user.notify.UserActivedRecord;
+import com.yeshi.fanli.entity.system.ConfigKeyEnum;
+import com.yeshi.fanli.exception.user.ThreeSaleException;
+import com.yeshi.fanli.exception.user.UserInfoExtraException;
+import com.yeshi.fanli.log.LogHelper;
+import com.yeshi.fanli.service.inter.config.ConfigService;
+import com.yeshi.fanli.service.inter.order.CommonOrderCountService;
+import com.yeshi.fanli.service.inter.user.ForbiddenUserIdentifyCodeService;
+import com.yeshi.fanli.service.inter.user.UserAccountService;
+import com.yeshi.fanli.service.inter.user.UserInfoExtraService;
+import com.yeshi.fanli.service.inter.user.UserInfoService;
+import com.yeshi.fanli.service.inter.user.UserInviteRecordService;
+import com.yeshi.fanli.service.inter.user.UserRankService;
+import com.yeshi.fanli.service.inter.user.invite.ThreeSaleSerivce;
+import com.yeshi.fanli.service.inter.user.msg.UserAccountMsgNotificationService;
+import com.yeshi.fanli.service.inter.user.notify.UserActivedRecordService;
+import com.yeshi.fanli.service.manger.msg.RocketMQManager;
+import com.yeshi.fanli.util.account.UserUtil;
+import com.yeshi.fanli.util.rocketmq.MQMsgBodyFactory;
+import com.yeshi.fanli.util.rocketmq.MQTopicName;
+import com.yeshi.fanli.vo.user.UserInfoExtraVO;
+
+import net.coobird.thumbnailator.Thumbnails;
+import org.yeshi.utils.wx.WXAppLoginUtil;
+
+@Service
+public class UserInfoExtraServiceImpl implements UserInfoExtraService {
+
+    @Resource
+    private UserInfoExtraMapper userInfoExtraMapper;
+
+    @Resource
+    private UserRankRecordMapper userRankRecordMapper;
+
+    @Resource
+    private UserRankService userRankService;
+
+    @Resource
+    private CommonOrderCountService commonOrderCountService;
+
+    @Resource
+    private ConfigService configService;
+
+    @Resource
+    private ThreeSaleSerivce threeSaleSerivce;
+
+    @Resource
+    private UserInfoService userInfoService;
+
+    @Resource
+    private UserInviteRecordService userInviteRecordService;
+
+    @Resource
+    @Lazy
+    private UserActivedRecordService userActivedRecordService;
+
+    @Resource
+    private UserAccountMsgNotificationService userAccountMsgNotificationService;
+
+    @Resource
+    private RocketMQManager rocketMQManager;
+
+    @Resource
+    private SystemConfigService systemConfigService;
+
+    @Override
+    public UserInfoExtraVO getRankInfo(Long uid) throws UserInfoExtraException, Exception {
+
+        UserInfoExtraVO extraVO = userInfoExtraMapper.getInfoExtraVOByUid(uid);
+        if (extraVO == null) {
+            throw new UserInfoExtraException(1, "鐢ㄦ埛闄勫姞淇℃伅涓嶅瓨鍦�");
+        }
+
+        SystemEnum system = userInfoService.getUserSystem(uid);
+
+        // 绛夌骇瀵圭収琛�
+        String contrast = configService.getValue(ConfigKeyEnum.userRankContrast.getKey(), system);
+        extraVO.setRankContrast(contrast);
+        // 鐗瑰埆鎻愰啋
+        String rankTip = configService.getValue(ConfigKeyEnum.userRankTip.getKey(), system);
+        extraVO.setRankTip(rankTip);
+
+        Integer rankOrderNum = extraVO.getRankOrderNum();
+
+        UserRank userRank = extraVO.getUserRank();
+        // 闈掗摐绛夌骇涓嶈繑鍥炴伃鍠滆鍙� 娉細闈掗摐绛夌骇id 蹇呴』涓�1
+        if (userRank != null && userRank.getId() != null && userRank.getId() > 1) {
+
+            String rankMsg = null;
+            Integer rankSource = extraVO.getRankSource();
+            switch (rankSource) {
+                case Constant.TYPE_REBATE:
+                    rankMsg = "杩斿埄璁㈠崟";
+                    break;
+                case Constant.TYPE_SHAER:
+                    rankMsg = "鍒嗕韩璁㈠崟";
+                    break;
+                case Constant.TYPE_INVITE:
+                    rankMsg = "閭�璇疯鍗�";
+                    break;
+                default:
+                    break;
+            }
+
+            List<Object> listMsg = new ArrayList<Object>();
+
+            if (rankMsg != null) {
+                String color_red = "#E5005C";
+                String color_black = "#333333";
+
+                Map<String, String> map1 = new HashMap<String, String>();
+                map1.put("content", "涓婃湀");
+                map1.put("color", color_black);
+                listMsg.add(map1);
+
+                Map<String, String> map2 = new HashMap<String, String>();
+                map2.put("content", rankMsg);
+                map2.put("color", color_red);
+                listMsg.add(map2);
+
+                Map<String, String> map3 = new HashMap<String, String>();
+                map3.put("content", "杈惧埌浜�");
+                map3.put("color", color_black);
+                listMsg.add(map3);
+
+                Map<String, String> map4 = new HashMap<String, String>();
+                map4.put("content", rankOrderNum + "");
+                map4.put("color", color_red);
+                listMsg.add(map4);
+
+                Map<String, String> map5 = new HashMap<String, String>();
+                map5.put("content", "鍗�");
+                map5.put("color", color_black);
+                listMsg.add(map5);
+                extraVO.setGalaMsg(listMsg);
+            }
+        }
+
+        return extraVO;
+    }
+
+    @Override
+    public void updateUserRankByUid(Long uid) throws UserInfoExtraException {
+        if (uid == null || uid == 0) {
+            return;
+        }
+
+        boolean isupdateRank = true;
+        UserInfoExtra extra = new UserInfoExtra();
+
+        UserInfoExtra userInfoExtra = userInfoExtraMapper.getInfoExtraByUid(uid);
+        if (userInfoExtra != null && userInfoExtra.getId() != null) {
+            // 鍒ゆ柇褰撴湀鏄惁宸叉洿鏂�
+            Date rankUpdateTime = userInfoExtra.getRankUpdateTime();
+            if (rankUpdateTime != null) {
+                SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM");
+                if (sdf.format(rankUpdateTime).equals(sdf.format(new Date()))) {
+                    isupdateRank = false;
+                }
+            }
+            extra.setId(userInfoExtra.getId());
+        } else {
+            extra.setUserInfo(new UserInfo(uid));
+        }
+
+        // 鏇存柊绛夌骇
+        if (isupdateRank) {
+            List<UserRank> listRank = userRankService.getAllRank();
+            if (listRank == null || listRank.size() == 0) {
+                throw new UserInfoExtraException(1, "绯荤粺绛夌骇涓嶅瓨鍦�");
+            }
+
+            int selfOrderNum = 0;
+            int sharedOrderNum = 0;
+            int inviteOrderNum = 0;
+            Map<String, Object> map = commonOrderCountService.lastMonthSettleOrderNumber(uid);
+            if (map != null) {
+                // 杩斿埄璁㈠崟
+                if (map.get("totalSelf") != null) {
+                    selfOrderNum = Integer.parseInt(map.get("totalSelf").toString());
+                }
+
+                // 鍒嗕韩璁㈠崟
+                if (map.get("totalShared") != null) {
+                    sharedOrderNum = Integer.parseInt(map.get("totalShared").toString());
+                }
+
+                // 閭�璇疯鍗�
+                if (map.get("totalInvite") != null) {
+                    inviteOrderNum = Integer.parseInt(map.get("totalInvite").toString());
+                }
+            }
+
+            UserRank rank = null;
+            for (UserRank userRank : listRank) {
+                // 閭�璇锋弧瓒�
+                Integer inviteNum = userRank.getInviteNum();
+                if (inviteOrderNum >= inviteNum) {
+                    rank = userRank;
+                    extra.setRankOrderNum(inviteOrderNum);
+                    extra.setRankSource(Constant.TYPE_INVITE);
+                }
+
+                // 鍒嗕韩婊¤冻
+                int shareNum = userRank.getShareNum();
+                if (sharedOrderNum >= shareNum) {
+                    rank = userRank;
+                    extra.setRankOrderNum(sharedOrderNum);
+                    extra.setRankSource(Constant.TYPE_SHAER);
+                }
+
+                // 杩斿埄婊¤冻
+                int directNum = userRank.getRebateNum();
+                if (selfOrderNum >= directNum) {
+                    rank = userRank;
+                    extra.setRankOrderNum(selfOrderNum);
+                    extra.setRankSource(Constant.TYPE_REBATE);
+                }
+
+                if (rank != null) {
+                    extra.setUserRank(rank);
+                } else {
+                    rank = userRank;
+                    // 榛樿鏈�浣庣瓑绾�:闈掗摐
+                    extra.setUserRank(rank);
+                    extra.setRankOrderNum(selfOrderNum);
+                    extra.setRankSource(Constant.TYPE_REBATE);
+                    break;
+                }
+            }
+
+            // 绛夌骇鏇存柊鏃堕棿 褰撴湀1鍙�
+            Calendar calendar1 = Calendar.getInstance();
+            calendar1.set(Calendar.DAY_OF_MONTH, 1);
+            extra.setRankUpdateTime(calendar1.getTime());
+
+            // 淇濆瓨绛夌骇淇℃伅
+            saveUserInfoExtra(extra);
+
+            // 淇濆瓨绛夌骇鍙樺寲璁板綍
+            UserRankRecord userRankRecord = new UserRankRecord();
+            userRankRecord.setUid(uid);
+            userRankRecord.setRankId(rank.getId());
+            userRankRecord.setCreateTime(new Date());
+            userRankRecordMapper.insertSelective(userRankRecord);
+        }
+    }
+
+    @Override
+    public void createUserInfoExtra(Long uid) throws UserInfoExtraException {
+        UserInfoExtra userInfoExtra = userInfoExtraMapper.getInfoExtraByUid(uid);
+        if (userInfoExtra != null) {
+            return;
+        }
+
+        userInfoExtra = new UserInfoExtra();
+        userInfoExtra.setUserInfo(new UserInfo(uid));
+        userInfoExtra.setFirstLoginTime(new Date());
+        userInfoExtra.setCreateTime(new Date());
+        userInfoExtra.setUpdateTime(new Date());
+        userInfoExtra.setActiveTime(new Date());
+        userInfoExtraMapper.insertSelective(userInfoExtra);
+    }
+
+    @Override
+    public UserInfoExtra saveUserInfoExtra(UserInfoExtra userInfoExtra) throws UserInfoExtraException {
+
+        if (userInfoExtra == null) {
+            throw new UserInfoExtraException(1, "闄勫姞淇℃伅涓嶈兘涓虹┖");
+        }
+
+        Long extraId = userInfoExtra.getId();
+        if (extraId != null) {
+            userInfoExtra.setUpdateTime(new Date());
+            userInfoExtraMapper.updateByPrimaryKeySelective(userInfoExtra);
+        } else {
+            UserInfo userInfo = userInfoExtra.getUserInfo();
+            if (userInfo == null || userInfo.getId() == null) {
+                throw new UserInfoExtraException(1, "鐢ㄦ埛涓嶅瓨鍦�");
+            }
+
+            Long uid = userInfo.getId();
+            UserInfoExtra extra = userInfoExtraMapper.getInfoExtraByUid(uid);
+            if (extra != null && extra.getId() != null) {
+                userInfoExtra.setId(extra.getId());
+                userInfoExtra.setUpdateTime(new Date());
+                userInfoExtraMapper.updateByPrimaryKeySelective(userInfoExtra);
+            } else {
+                userInfoExtra.setCreateTime(new Date());
+                userInfoExtra.setUpdateTime(new Date());
+                userInfoExtraMapper.insertSelective(userInfoExtra);
+            }
+
+        }
+        return userInfoExtra;
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public String activateInviteCode(Long uid, String inviteCode) throws UserInfoExtraException {
+        if (uid == null || inviteCode == null)
+            throw new UserInfoExtraException(1, "婵�娲讳俊鎭笉鑳戒负绌�");
+
+        // 琚個璇蜂汉淇℃伅
+        UserInfo invitee = userInfoService.selectByPKey(uid);
+        if (invitee == null)
+            throw new UserInfoExtraException(1, "鐢ㄦ埛涓嶅瓨鍦�");
+
+        // 棰濆淇℃伅
+        UserInfoExtra extra = userInfoExtraMapper.getInfoExtraByUid(uid);
+        if (extra != null && !StringUtil.isNullOrEmpty(extra.getInviteCode()))
+            throw new UserInfoExtraException(1, "宸茬粡婵�娲�, 鏃犻渶鍐嶆婵�娲�");
+
+        inviteCode = inviteCode.toUpperCase();
+
+        // 閭�璇风爜瀵瑰簲鐢ㄦ埛淇℃伅
+        UserInfo boss = userInfoService.getUserInfoByInviteCode(inviteCode);
+        if (boss == null || boss.getState() != UserInfo.STATE_NORMAL)
+            throw new UserInfoExtraException(1, "涓婄骇閭�璇风爜涓嶅瓨鍦�");
+
+        // 鐢熸垚閭�璇峰叧绯�
+        return inviteCodeActive(uid, boss.getId());
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void activationInviteWX(WXAccountInfoDTO wxAccount, Long uid, String code) throws UserInfoExtraException {
+        if (uid == null || code == null)
+            throw new UserInfoExtraException(1, "婵�娲讳俊鎭笉瀹屾暣");
+
+        UserInfo invitee = userInfoService.selectByPKey(uid);
+        if (invitee == null)
+            throw new UserInfoExtraException(1, "鐢ㄦ埛涓嶅瓨鍦�");
+
+        // 棰濆淇℃伅
+        UserInfoExtra extra = userInfoExtraMapper.getInfoExtraByUid(uid);
+        if (extra != null && !StringUtil.isNullOrEmpty(extra.getInviteCode()))
+            throw new UserInfoExtraException(1, "宸茬粡婵�娲�, 鏃犻渶鍐嶆婵�娲�");
+
+        // 鑾峰彇寰俊淇℃伅
+        WeiXinUser weiXinUser = WXAppLoginUtil.getWeiXinUser(code, wxAccount.getAppId(), wxAccount.getAppSecret());
+        if (weiXinUser == null) {
+            throw new UserInfoExtraException(1, "寰俊鎺堟潈澶辫触");
+        }
+        String wxUnionId = weiXinUser.getUnionid();
+        if (wxUnionId == null || wxUnionId.trim().length() == 0) {
+            throw new UserInfoExtraException(1, "寰俊鎺堟潈澶辫触");
+        }
+
+        // 楠岃瘉鏁版嵁
+        String wxUnionIdExist = invitee.getWxUnionId();
+        if (StringUtil.isNullOrEmpty(wxUnionIdExist)) {
+            UserInfo newUser = userInfoService.getEffectiveUserInfoByWXUnionId(weiXinUser.getUnionid(), invitee.getSystem());
+            if (newUser != null) {
+                throw new UserInfoExtraException(1, "姝ゅ井淇″凡琚叾浠栧笎鍙风粦瀹�");
+            }
+
+            // 鑷姩缁戝畾寰俊
+            UserInfo updateUserInfo = new UserInfo(uid);
+            updateUserInfo.setWxOpenId(weiXinUser.getOpenid());
+            updateUserInfo.setWxUnionId(weiXinUser.getUnionid());
+            updateUserInfo.setWxName(weiXinUser.getNickname());
+            updateUserInfo.setWxPic(weiXinUser.getHeadimgurl());
+
+            // 灏嗛粯璁ゆ樀绉版浛鎹㈡垚寰俊鏄电О
+            String defaultNickName = systemConfigService.getValueCache(SystemConfigKeyEnum.defaultNickNamePrefix, invitee.getSystem());
+            if (!StringUtil.isNullOrEmpty(defaultNickName) && !StringUtil.isNullOrEmpty(weiXinUser.getNickname())) {
+                defaultNickName = defaultNickName + uid;
+                if ((defaultNickName.equals(invitee.getNickName()) || "杩斿埄鍒�".equals(invitee.getNickName())
+                        || invitee.getNickName().startsWith(defaultNickName))) {
+                    updateUserInfo.setNickName(weiXinUser.getNickname());
+                }
+            }
+
+            // 灏嗛粯璁ゅご鍍忔浛鎹㈡垚寰俊澶村儚
+            String defaultPortrait = systemConfigService.getValueCache(SystemConfigKeyEnum.defaultPortrait, invitee.getSystem());
+            if (!StringUtil.isNullOrEmpty(weiXinUser.getHeadimgurl()) && !StringUtil.isNullOrEmpty(defaultPortrait)
+                    && defaultPortrait.equals(invitee.getPortrait())) {
+                String headimgurl = weiXinUser.getHeadimgurl();
+                InputStream asInputStream = HttpUtil.getAsInputStream(headimgurl);
+                if (asInputStream == null) {
+                    LogHelper.test("寰俊澶村儚涓嬭浇澶辫触: " + weiXinUser.getUnionid() + " " + headimgurl);
+                } else {
+                    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 {
+                        LogHelper.test("寰俊澶村儚涓婁紶澶辫触: " + weiXinUser.getUnionid() + " " + headimgurl);
+                    }
+                }
+                updateUserInfo.setPortrait(headimgurl);
+            }
+
+            userInfoService.updateByPrimaryKeySelective(updateUserInfo);
+
+        } else if (!wxUnionId.equals(wxUnionIdExist)) {
+            throw new UserInfoExtraException(1, "缁戝畾寰俊涓庢縺娲诲井淇′笉涓�鑷�");
+        }
+
+        // 鏄惁瀛樺湪閭�璇蜂汉
+        Long inviterId = userInviteRecordService.getNewestInviterId(wxUnionId);
+        if (inviterId == null)
+            throw new UserInfoExtraException(1, "娌℃湁瀵瑰簲鐨勯個璇峰叧绯�");
+
+        UserInfo boss = userInfoService.selectByPKey(inviterId);
+        if (boss == null || boss.getState() != UserInfo.STATE_NORMAL) {
+            throw new UserInfoExtraException(1, "娌℃湁瀵瑰簲鐨勯個璇峰叧绯�");
+        }
+
+        // 閭�璇风爜婵�娲�
+        inviteCodeActive(uid, boss.getId());
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void activeInviteWX(Long uid, WeiXinUser weiXinUser) throws UserInfoExtraException {
+        if (uid == null || weiXinUser == null) {
+            throw new UserInfoExtraException(1, "婵�娲讳俊鎭笉瀹屾暣");
+        }
+
+        // 鐢ㄦ埛淇℃伅
+        UserInfo invitee = userInfoService.selectByPKey(uid);
+        if (invitee == null) {
+            throw new UserInfoExtraException(1, "鐢ㄦ埛涓嶅瓨鍦�");
+        }
+
+        String wxUnionId = weiXinUser.getUnionid();
+        if (wxUnionId == null || wxUnionId.trim().length() == 0) {
+            throw new UserInfoExtraException(1, "寰俊鎺堟潈澶辫触");
+        }
+
+        // 楠岃瘉鏁版嵁
+        String wxUnionIdExist = invitee.getWxUnionId();
+        if (StringUtil.isNullOrEmpty(wxUnionIdExist)) {
+            UserInfo newUser = userInfoService.getEffectiveUserInfoByWXUnionId(weiXinUser.getUnionid(), invitee.getSystem());
+            if (newUser != null) {
+                throw new UserInfoExtraException(1, "姝ゅ井淇″凡琚叾浠栧笎鍙风粦瀹�");
+            }
+
+            // 鑷姩缁戝畾寰俊
+            UserInfo updateUserInfo = new UserInfo(uid);
+            updateUserInfo.setWxOpenId(weiXinUser.getOpenid());
+            updateUserInfo.setWxUnionId(weiXinUser.getUnionid());
+            updateUserInfo.setWxName(weiXinUser.getNickname());
+            updateUserInfo.setWxPic(weiXinUser.getHeadimgurl());
+
+            // 灏嗛粯璁ゆ樀绉版浛鎹㈡垚寰俊鏄电О
+            String defaultNickName = systemConfigService.getValueCache(SystemConfigKeyEnum.defaultNickNamePrefix, invitee.getSystem());
+            if (!StringUtil.isNullOrEmpty(defaultNickName) && !StringUtil.isNullOrEmpty(weiXinUser.getNickname())) {
+                defaultNickName = defaultNickName + uid;
+                if ((defaultNickName.equals(invitee.getNickName()) || "杩斿埄鍒�".equals(invitee.getNickName())
+                        || invitee.getNickName().startsWith(defaultNickName))) {
+                    updateUserInfo.setNickName(weiXinUser.getNickname());
+                }
+            }
+
+            // 灏嗛粯璁ゅご鍍忔浛鎹㈡垚寰俊澶村儚
+            String defaultPortrait = systemConfigService.getValueCache(SystemConfigKeyEnum.defaultPortrait, invitee.getSystem());
+            if (!StringUtil.isNullOrEmpty(weiXinUser.getHeadimgurl()) && !StringUtil.isNullOrEmpty(defaultPortrait)
+                    && defaultPortrait.equals(invitee.getPortrait())) {
+                String headimgurl = weiXinUser.getHeadimgurl();
+                InputStream asInputStream = HttpUtil.getAsInputStream(headimgurl);
+                if (asInputStream == null) {
+                    LogHelper.test("寰俊澶村儚涓嬭浇澶辫触: " + weiXinUser.getUnionid() + " " + headimgurl);
+                } else {
+                    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 {
+                        LogHelper.test("寰俊澶村儚涓婁紶澶辫触: " + weiXinUser.getUnionid() + " " + headimgurl);
+                    }
+                }
+                updateUserInfo.setPortrait(headimgurl);
+            }
+
+            userInfoService.updateByPrimaryKeySelective(updateUserInfo);
+
+        } else if (!wxUnionId.equals(wxUnionIdExist)) {
+            throw new UserInfoExtraException(1, "缁戝畾寰俊涓庢縺娲诲井淇′笉涓�鑷�");
+        }
+
+        // 閭�璇蜂汉ID -1.5.3鏂扮増
+        Long inviterId = userInviteRecordService.getNewestInviterId(wxUnionId);
+        if (inviterId == null) {
+            throw new UserInfoExtraException(1, "娌℃湁瀵瑰簲鐨勯個璇峰叧绯�");
+        }
+
+        UserInfo boss = userInfoService.selectByPKey(inviterId);
+        if (boss == null || boss.getState() != UserInfo.STATE_NORMAL) {
+            throw new UserInfoExtraException(1, "娌℃湁瀵瑰簲鐨勯個璇峰叧绯�");
+        }
+
+        // 閭�璇风爜婵�娲�
+        inviteCodeActive(uid, boss.getId());
+    }
+
+
+    /**
+     * 閭�璇峰叧绯荤敓鎴愭縺娲荤爜
+     *
+     * @param uid
+     * @param bossId
+     * @return
+     * @throws UserInfoExtraException
+     */
+    private String inviteCodeActive(Long uid, Long bossId) throws UserInfoExtraException {
+        UserInfoExtra extra = userInfoExtraMapper.getInfoExtraByUid(uid);
+        if (extra != null && !StringUtil.isNullOrEmpty(extra.getInviteCode())) {
+            throw new UserInfoExtraException(1, "宸茬粡婵�娲�, 鏃犻渶鍐嶆婵�娲�");
+        }
+
+        // 缁戝畾鍏崇郴
+        try {
+            threeSaleSerivce.bindInviteRelationship(uid, bossId);
+        } catch (ThreeSaleException e) {
+            try {
+                LogHelper.errorDetailInfo(e);
+            } catch (Exception e1) {
+                e1.printStackTrace();
+            }
+            throw new UserInfoExtraException(1, "鍏崇郴缁戝畾鏃跺け璐�");
+        }
+
+        // 鐢熸垚閭�璇风爜
+        String inviteCode = createInviteCode(uid);
+        if (StringUtil.isNullOrEmpty(inviteCode))
+            throw new UserInfoExtraException(1, "婵�娲荤爜鐢熸垚澶辫触");
+
+        UserInfoExtra userInfoExtra = new UserInfoExtra();
+        userInfoExtra.setUserInfo(new UserInfo(uid));
+        userInfoExtra.setInviteCode(inviteCode);
+        userInfoExtra.setUpdateTime(new Date());
+        if (extra != null) {
+            userInfoExtra.setId(extra.getId());
+            userInfoExtraMapper.updateByPrimaryKeySelective(userInfoExtra);
+        } else {
+            userInfoExtra.setCreateTime(new Date());
+            userInfoExtraMapper.insertSelective(userInfoExtra);
+        }
+
+        userActivedRecordService.add(new UserActivedRecord(uid));
+
+        if (!Constant.IS_TEST) { // 鍙戦�佹縺娲绘垚鍔熸秷鎭�
+            Message message = MQMsgBodyFactory.create(MQTopicName.TOPIC_USER, UserTopicTagEnum.inviteCodeActive,
+                    new InviteCodeActiveMQMsg(uid, new Date()));
+            rocketMQManager.sendNormalMsg(message, null);
+        }
+
+        return inviteCode;
+    }
+
+
+    @Override
+    public void updateActiveTime(Long uid, Date date) {
+        UserInfoExtra userInfoExtra = new UserInfoExtra();
+        userInfoExtra.setUserInfo(new UserInfo(uid));
+        userInfoExtra.setActiveTime(date);
+        userInfoExtraMapper.updateInfoExtraByUid(userInfoExtra);
+    }
+
+    @Override
+    public UserInfoExtra getUserInfoExtra(Long uid) {
+        return userInfoExtraMapper.getInfoExtraByUid(uid);
+    }
+
+    @Override
+    public UserInfoExtra getUserALLInfo(Long uid) {
+        return userInfoExtraMapper.gerUserRank(uid);
+    }
+
+    @Override
+    @Transactional
+    public UserInfoExtra getByUidForUpdate(Long uid) {
+        return userInfoExtraMapper.getByUidForUpdate(uid);
+    }
+
+    @Override
+    @Transactional
+    public void updateGoldCoin(Long id, Integer goldCoin) {
+        userInfoExtraMapper.updateGoldCoin(id, goldCoin);
+    }
+
+    @Override
+    public void addGoldCoinByUid(Long uid, Integer goldCoin) {
+        userInfoExtraMapper.addGoldCoinByUid(uid, goldCoin);
+    }
+
+    @Override
+    public void updateByPrimaryKeySelective(UserInfoExtra record) {
+        userInfoExtraMapper.updateByPrimaryKeySelective(record);
+    }
+
+    @Override
+    public UserInfoExtraVO getInfoExtraVOByUid(Long uid) {
+        return userInfoExtraMapper.getInfoExtraVOByUid(uid);
+    }
+
+    @Override
+    public String getInviteCodeByUid(Long uid) {
+        UserInfoExtra userInfoExtra = userInfoExtraMapper.getInfoExtraByUid(uid);
+        if (userInfoExtra != null) {
+            // vip閭�璇风爜浼樺厛
+            if (!StringUtil.isNullOrEmpty(userInfoExtra.getInviteCodeVip()))
+                return userInfoExtra.getInviteCodeVip();
+
+            if (!StringUtil.isNullOrEmpty(userInfoExtra.getInviteCode()))
+                return userInfoExtra.getInviteCode();
+
+            // 鏄惁婊¤冻鐢熶骇閭�璇风爜
+            int relationshipNum = threeSaleSerivce.getSuccessRelationshipNum(uid);
+            if (relationshipNum > 0) {
+                try {
+                    String inviteCode = createInviteCode(uid);
+                    if (!StringUtil.isNullOrEmpty(inviteCode)) {
+                        UserInfoExtra extra = new UserInfoExtra();
+                        extra.setId(userInfoExtra.getId());
+                        extra.setInviteCode(inviteCode);
+                        userInfoExtraMapper.updateByPrimaryKeySelective(extra);
+                        return inviteCode;
+                    }
+                } catch (Exception e) {
+                    LogHelper.errorDetailInfo(e);
+                }
+            }
+        }
+        return "";
+    }
+
+    /**
+     * 鐢熶骇閭�璇风爜
+     *
+     * @param uid
+     * @return
+     */
+    private String createInviteCode(Long uid) {
+        String inviteCode = null;
+        for (int i = 1; i <= 5; i++) {
+            inviteCode = UserUtil.getInviteCode(i, uid);
+            long countCode = userInfoExtraMapper.countByInviteCode(inviteCode);
+            if (countCode <= 0)
+                break;
+        }
+        return inviteCode;
+    }
+
+    @Override
+    public long countByRankId(Long rankId) {
+        return userInfoExtraMapper.countByRankId(rankId);
+    }
+
+    @Override
+    public boolean isNewUser(Long uid) {
+        boolean isNew = false;
+        if (uid == null) {
+            return isNew;
+        }
+
+        UserInfoExtra extra = userInfoExtraMapper.getInfoExtraByUid(uid);
+        if (extra != null && extra.getFirstLoginTime() != null) {
+            try {
+                int day = DateUtil.daysBetween(extra.getFirstLoginTime(), new Date());
+                if (day <= 15) {
+                    isNew = true;
+                }
+            } catch (ParseException e) {
+                e.printStackTrace();
+            }
+        }
+        return isNew;
+    }
+
+    @Override
+    public UserRank gerUserRank(Long uid) {
+        if (uid == null) {
+            return null;
+        }
+
+        UserInfoExtra userInfoExtra = userInfoExtraMapper.gerUserRank(uid);
+        if (userInfoExtra == null) {
+            return null;
+        }
+        return userInfoExtra.getUserRank();
+    }
+
+    @Override
+    public UserInfo getUserByInviteCode(String inviteCode) throws UserInfoExtraException {
+        if (StringUtil.isNullOrEmpty(inviteCode))
+            throw new UserInfoExtraException(1, "閭�璇风爜涓嶈兘涓虹┖");
+
+        UserInfo inviter = userInfoService.getUserInfoByInviteCode(inviteCode);
+        if (inviter == null)
+            throw new UserInfoExtraException(1, "涓婄骇閭�璇风爜涓嶅瓨鍦�");
+
+        if (inviter.getState() != UserInfo.STATE_NORMAL) {
+            throw new UserInfoExtraException(1, "涓婄骇閭�璇风爜涓嶅瓨鍦�");
+        }
+
+        return inviter;
+    }
+
+    @Override
+    public UserInfo getInviterInfo(Long uid, String wxUnionId) throws UserInfoExtraException {
+        if (wxUnionId == null) {
+            throw new UserInfoExtraException(1, "unionId淇℃伅涓嶅畬鏁�");
+        }
+
+        // 鐢ㄦ埛淇℃伅
+        UserInfo invitee = userInfoService.selectByPKey(uid);
+        if (invitee == null) {
+            throw new UserInfoExtraException(1, "鐢ㄦ埛涓嶅瓨鍦�");
+        }
+
+        // 鐢ㄦ埛棰濆淇℃伅
+        UserInfoExtra extra = userInfoExtraMapper.getInfoExtraByUid(uid);
+        if (extra != null) {
+            String inviteCodeHas = extra.getInviteCode();
+            if (inviteCodeHas != null && inviteCodeHas.trim().length() > 0) {
+                throw new UserInfoExtraException(1, "宸茬粡婵�娲�, 鏃犻渶鍐嶆婵�娲�");
+            }
+        }
+
+        // 楠岃瘉鏁版嵁
+        String wxUnionIdExist = invitee.getWxUnionId();
+        if (StringUtil.isNullOrEmpty(wxUnionIdExist)) {
+            UserInfo newUser = userInfoService.getEffectiveUserInfoByWXUnionId(wxUnionId, invitee.getSystem());
+            if (newUser != null) {
+                throw new UserInfoExtraException(1, "姝ゅ井淇″凡琚叾浠栧笎鍙风粦瀹�");
+            }
+        } else if (!wxUnionId.equals(wxUnionIdExist)) {
+            throw new UserInfoExtraException(1, "缁戝畾寰俊涓庢縺娲诲井淇′笉涓�鑷�");
+        }
+
+        // 閭�璇蜂汉ID
+        Long inviterId = userInviteRecordService.getNewestInviterId(wxUnionId);
+        if (inviterId == null) {
+            throw new UserInfoExtraException(1, "娌℃湁瀵瑰簲鐨勯個璇峰叧绯�");
+        }
+
+        UserInfo inviter = userInfoService.selectByPKey(inviterId);
+        if (inviter == null) {
+            throw new UserInfoExtraException(1, "瀵瑰簲鐨勯個璇峰叧绯讳笉瀛樺湪");
+        }
+
+        if (inviter.getState() != UserInfo.STATE_NORMAL) {
+            throw new UserInfoExtraException(1, "瀵瑰簲鐨勯個璇峰叧绯讳笉瀛樺湪");
+        }
+
+        return inviter;
+    }
+
+
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public void updateInviteCodeVip(String inviteCodeVip, Long uid) throws UserInfoExtraException {
+        if (inviteCodeVip == null || inviteCodeVip.length() < 4 || inviteCodeVip.length() > 12)
+            throw new UserInfoExtraException(1, "閭�璇风爜蹇呴』涓�4鍒�12浣�");
+
+        UserInfoExtra extra = getUserInfoExtra(uid);
+        if (extra == null)
+            throw new UserInfoExtraException(2, "鐢ㄦ埛淇℃伅涓嶅瓨鍦�");
+
+        if (StringUtil.isNullOrEmpty(extra.getInviteCode()))
+            throw new UserInfoExtraException(3, "閭�璇风爜灏氭湭婵�娲�");
+
+        if (!StringUtil.isNullOrEmpty(extra.getInviteCodeVip()))
+            throw new UserInfoExtraException(4, "鍙兘淇敼涓�娆�");
+
+        // 杞崲鎴愬ぇ鍐�
+        inviteCodeVip = inviteCodeVip.toUpperCase();
+
+        // 楠岃瘉鐗规畩鐮�
+        if (InviteCodeFilterUtil.isSpecialCode(inviteCodeVip))
+            throw new UserInfoExtraException(5, "閭�璇风爜宸插瓨鍦�");
+
+        if (inviteCodeVip.equalsIgnoreCase(extra.getInviteCode()))
+            throw new UserInfoExtraException(5, "涓嶈兘涓哄師閭�璇风爜");
+
+        long count = userInfoExtraMapper.countByInviteCode(inviteCodeVip);
+        if (count > 0)
+            throw new UserInfoExtraException(6, "閭�璇风爜宸插瓨鍦�");
+
+        UserInfoExtra update = new UserInfoExtra();
+        update.setId(extra.getId());
+        update.setInviteCodeVip(inviteCodeVip);
+        update.setUpdateTime(new Date());
+        userInfoExtraMapper.updateByPrimaryKeySelective(update);
+
+        if (!Constant.IS_TEST) { // 鍙戦�侀個璇风爜鏇存敼鎴愬姛鐨勬秷鎭�
+            Message message = MQMsgBodyFactory.create(MQTopicName.TOPIC_USER, UserTopicTagEnum.userInfoUpdate,
+                    new UserInfoUpdateMQMsg(uid, UserInfoUpdateTypeEnum.inviteCode, inviteCodeVip,
+                            new Date()));
+            rocketMQManager.sendNormalMsg(message, null);
+        }
+
+        // 娑堟伅
+        userAccountMsgNotificationService.createChangeInviteCode(uid, extra.getInviteCode(), inviteCodeVip);
+    }
+
+    @Override
+    public void uploadERCode(MultipartFile file, Long uid) {
+        UserInfoExtra extra = userInfoExtraMapper.getInfoExtraByUid(uid);
+        if (extra == null)
+            return;
+
+        // 鍘嬬缉
+        String targetPath = FileUtil.getCacheDir() + "/erCode_" + uid + "_" + System.currentTimeMillis() + ".jpg";
+        try {
+            Thumbnails.of(file.getInputStream()).size(200, 200).toFile(targetPath);
+        } catch (IOException e) {
+            LogHelper.errorDetailInfo(e);
+            return;
+        }
+
+        // 鎵ц涓婁紶
+        String filePath = FilePathEnum.userERcode.getPath() + UUID.randomUUID().toString().replace("-", "") + ".jpg";
+        String fileLink = COSManager.getInstance().uploadFile(new File(targetPath), filePath).getUrl();
+
+        // 鍒犻櫎鏈湴鍥剧墖
+        if (new File(targetPath).exists()) {
+            new File(targetPath).delete();
+        }
+
+        // 鍘熶簩缁寸爜
+        String erCode = extra.getErCode();
+
+        UserInfoExtra update = new UserInfoExtra();
+        update.setId(extra.getId());
+        update.setErCode(fileLink);
+        userInfoExtraMapper.updateByPrimaryKeySelective(update);
+
+        // 鍘熶簩缁寸爜
+        if (!StringUtil.isNullOrEmpty(erCode)) {
+            COSManager.getInstance().deleteFile(erCode);
+        }
+    }
+
+    @Resource
+    private UserGoodsChannelConfigDao userGoodsChannelConfigDao;
+
+    @Override
+    public String getPddFanliCustomerParams(Long uid) {
+        UserGoodsChannelConfig config = userGoodsChannelConfigDao.get(uid);
+        if (config == null || StringUtil.isNullOrEmpty(config.getPddFanliCustomerParams())) {
+            return uid + "";
+        }
+        return config.getPddFanliCustomerParams();
+    }
+
+
+}

--
Gitblit v1.8.0