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 | 1821 +++++++++++++++++++++++++++++----------------------------- 1 files changed, 900 insertions(+), 921 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 1dc815a..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,921 +1,900 @@ -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 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.tencentcloud.COSManager; - -import com.aliyun.openservices.ons.api.Message; -import com.aliyun.openservices.ons.api.Producer; -import com.google.gson.Gson; -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.WeiXinUser; -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.notify.UserActivedRecordService; -import com.yeshi.fanli.util.Constant; -import com.yeshi.fanli.util.FilePathEnum; -import com.yeshi.fanli.util.InviteCodeFilterUtil; -import com.yeshi.fanli.util.StringUtil; -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.util.wx.WXLoginUtil; -import com.yeshi.fanli.vo.user.UserInfoExtraVO; - -import net.coobird.thumbnailator.Thumbnails; - -@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; - - @Resource - @Lazy - private UserActivedRecordService userActivedRecordService; - - @Resource(name = "producer") - private Producer producer; - - @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(ConfigKeyEnum.userRankContrast.getKey()); - extraVO.setRankContrast(contrast); - // 鐗瑰埆鎻愰啋 - String rankTip = configService.get(ConfigKeyEnum.userRankTip.getKey()); - 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 inviter = userInfoService.getUserInfoByInviteCode(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 mycode = createInviteCode(uid); - if (StringUtil.isNullOrEmpty(mycode)) - throw new UserInfoExtraException(1, "婵�娲荤爜鐢熸垚澶辫触"); - - UserInfoExtra userInfoExtra = new UserInfoExtra(); - userInfoExtra.setUserInfo(invitee); - userInfoExtra.setInviteCode(mycode); - 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 Gson().toJson(new InviteCodeActiveMQMsg(uid, new Date()))); - producer.send(message); - } - - return mycode; - } - - @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 = 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(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, "娌℃湁瀵瑰簲鐨勯個璇峰叧绯�"); - - // 缁戝畾鍏崇郴 - try { - threeSaleSerivce.bindRelationshipByWX(invitee, inviterId); - } 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(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); - } - userActivedRecordService.add(new UserActivedRecord(uid)); - - - if (!Constant.IS_TEST) { // 鍙戦�佹縺娲绘垚鍔熸秷鎭� - Message message = MQMsgBodyFactory.create(MQTopicName.TOPIC_USER, UserTopicTagEnum.inviteCodeActive, - new Gson().toJson(new InviteCodeActiveMQMsg(uid, new Date()))); - producer.send(message); - } - } - - @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, "鐢ㄦ埛涓嶅瓨鍦�"); - } - - // 鐢ㄦ埛棰濆淇℃伅 - 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(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, "娌℃湁瀵瑰簲鐨勯個璇峰叧绯�"); - } - - // 缁戝畾鍏崇郴 - try { - threeSaleSerivce.bindRelationshipByWX(invitee, inviterId); - } 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(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); - } - - userActivedRecordService.add(new UserActivedRecord(uid)); - - if (!Constant.IS_TEST) { // 鍙戦�佹縺娲绘垚鍔熸秷鎭� - Message message = MQMsgBodyFactory.create(MQTopicName.TOPIC_USER, UserTopicTagEnum.inviteCodeActive, - new Gson().toJson(new InviteCodeActiveMQMsg(uid, new Date()))); - producer.send(message); - } - } - - @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, "涓婄骇閭�璇风爜涓嶅瓨鍦�"); - - 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); - } - - @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 Gson().toJson(new UserInfoUpdateMQMsg(uid, UserInfoUpdateTypeEnum.inviteCode, inviteCodeVip, - new Date()))); - producer.send(message); - } - } - - @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); - } - } - -} +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