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/vip/UserVIPInfoServiceImpl.java | 786 +++++++++++++++++++++++++++---------------------------- 1 files changed, 390 insertions(+), 396 deletions(-) diff --git a/fanli/src/main/java/com/yeshi/fanli/service/impl/user/vip/UserVIPInfoServiceImpl.java b/fanli/src/main/java/com/yeshi/fanli/service/impl/user/vip/UserVIPInfoServiceImpl.java index b61f294..e8ea344 100644 --- a/fanli/src/main/java/com/yeshi/fanli/service/impl/user/vip/UserVIPInfoServiceImpl.java +++ b/fanli/src/main/java/com/yeshi/fanli/service/impl/user/vip/UserVIPInfoServiceImpl.java @@ -1,396 +1,390 @@ -package com.yeshi.fanli.service.impl.user.vip; - -import java.util.Date; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import javax.annotation.Resource; - -import com.yeshi.fanli.entity.SystemEnum; -import org.springframework.context.annotation.Lazy; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -import com.aliyun.openservices.ons.api.Message; -import com.aliyun.openservices.ons.api.Producer; -import com.yeshi.fanli.dao.mybatis.user.vip.UserVIPInfoMapper; -import com.yeshi.fanli.dto.mq.user.UserTopicTagEnum; -import com.yeshi.fanli.dto.mq.user.body.UserLevelChangedMQMsg; -import com.yeshi.fanli.entity.bus.user.ThreeSale; -import com.yeshi.fanli.entity.bus.user.UserInfo; -import com.yeshi.fanli.entity.bus.user.UserInviteValidNum; -import com.yeshi.fanli.entity.bus.user.vip.UserLevelEnum; -import com.yeshi.fanli.entity.bus.user.vip.UserLevelUpgradedNotify; -import com.yeshi.fanli.entity.bus.user.vip.UserVIPInfo; -import com.yeshi.fanli.entity.bus.user.vip.UserVIPPreInfo; -import com.yeshi.fanli.entity.common.Config; -import com.yeshi.fanli.entity.system.ConfigKeyEnum; -import com.yeshi.fanli.exception.user.vip.UserVIPInfoException; -import com.yeshi.fanli.exception.user.vip.UserVIPPreInfoException; -import com.yeshi.fanli.log.LogHelper; -import com.yeshi.fanli.service.inter.config.ConfigService; -import com.yeshi.fanli.service.inter.count.HongBaoV2CountService; -import com.yeshi.fanli.service.inter.user.UserInfoService; -import com.yeshi.fanli.service.inter.user.invite.ThreeSaleSerivce; -import com.yeshi.fanli.service.inter.user.invite.UserInviteMsgNotificationService; -import com.yeshi.fanli.service.inter.user.invite.UserInviteValidNumService; -import com.yeshi.fanli.service.inter.user.msg.UserAccountMsgNotificationService; -import com.yeshi.fanli.service.inter.user.vip.UserLevelUpgradedNotifyService; -import com.yeshi.fanli.service.inter.user.vip.UserVIPInfoService; -import com.yeshi.fanli.service.inter.user.vip.UserVIPPreInfoService; -import com.yeshi.fanli.service.inter.user.vip.UserVipConfigService; -import com.yeshi.fanli.service.manger.msg.RocketMQManager; -import com.yeshi.fanli.util.Constant; -import com.yeshi.fanli.util.StringUtil; -import com.yeshi.fanli.util.TimeUtil; -import com.yeshi.fanli.util.email.MailSenderUtil; -import com.yeshi.fanli.util.rocketmq.MQMsgBodyFactory; -import com.yeshi.fanli.util.rocketmq.MQTopicName; - -@Service -public class UserVIPInfoServiceImpl implements UserVIPInfoService { - - @Resource - private UserVIPInfoMapper userVIPInfoMapper; - - @Resource - private UserInfoService userInfoService; - - @Resource - private UserVipConfigService userVipConfigService; - - @Lazy - @Resource - private HongBaoV2CountService hongBaoV2CountService; - - @Resource - private ThreeSaleSerivce threeSaleSerivce; - - @Resource - private UserVIPPreInfoService userVIPPreInfoService; - - @Resource - private UserAccountMsgNotificationService userAccountMsgNotificationService; - - @Resource - private UserInviteValidNumService userInviteValidNumService; - - @Resource - private UserLevelUpgradedNotifyService userLevelUpgradedNotifyService; - - @Resource - private UserInviteMsgNotificationService userInviteMsgNotificationService; - - @Resource - private RocketMQManager rocketMQManager; - - @Resource - private ConfigService configService; - - @Override - @Transactional(rollbackFor = Exception.class) - public void addUserVIPInfo(UserVIPInfo info) throws UserVIPInfoException { - if (info.getId() == null) { - throw new UserVIPInfoException(1, "淇℃伅涓嶅畬鏁�"); - } - UserVIPInfo userInfo = userVIPInfoMapper.selectByPrimaryKey(info.getId()); - if (userInfo != null) { - throw new UserVIPInfoException(1, "淇℃伅宸插瓨鍦�"); - } - // 鍒濆鍖栫姸鎬� - info.setState(UserVIPInfo.STATE_INVALID); - info.setCreateTime(new Date()); - userVIPInfoMapper.insert(info); - } - - @Override - public boolean isVIP(Long uid) { - return isVIP(uid, System.currentTimeMillis()); - } - - @Override - public boolean isVIP(Long uid, Long time) { - UserVIPInfo userInfo = userVIPInfoMapper.selectByPrimaryKey(uid); - if (userInfo != null && userInfo.getState() == UserVIPInfo.STATE_SUCCESS - && userInfo.getSuccessTime().getTime() < time) - return true; - else - return false; - } - - @Override - public UserVIPInfo selectByUid(Long uid) { - UserVIPInfo userInfo = userVIPInfoMapper.selectByPrimaryKey(uid); - return userInfo; - } - - @Override - public Map<Long, Boolean> listByUids(List<Long> uids) { - if (uids == null || uids.size() == 0) - return new HashMap<>(); - List<UserVIPInfo> infoList = userVIPInfoMapper.listByUids(uids); - // 鏁寸悊鏁版嵁 - Map<Long, Boolean> map = new HashMap<>(); - if (infoList != null) - for (UserVIPInfo info : infoList) - if (info != null && info.getState() == UserVIPInfo.STATE_SUCCESS) - map.put(info.getId(), true); - else - map.put(info.getId(), false); - for (Long uid : uids) { - if (map.get(uid) == null) - map.put(uid, false); - } - return map; - } - - @Override - public List<UserVIPInfo> listQuery(int page, int count, String key, Integer state) { - return userVIPInfoMapper.listQuery((page - 1) * count, count, key, state); - } - - @Override - public long countQuery(String key, Integer state) { - return userVIPInfoMapper.countQuery(key, state); - } - - @Transactional(rollbackFor = Exception.class) - @Override - public void applyVIP(Long uid) throws UserVIPInfoException { - UserVIPPreInfo latestProcess = userVIPPreInfoService.getLatestProcessInfo(uid); - if (latestProcess == null || latestProcess.getProcess() != UserVIPPreInfo.PROCESS_2) { - throw new UserVIPInfoException(1, "璇峰厛鍗囩骇涓洪珮绾т細鍛�"); - } - - int verifyResult = verifyVip(uid); - if (verifyResult <= 0) - throw new UserVIPInfoException(1, "涓嶆弧瓒冲崌绾ф潯浠�"); - - UserVIPInfo userInfo = userVIPInfoMapper.selectByPrimaryKeyForUpdate(uid); - if (userInfo == null) { - userInfo = new UserVIPInfo(); - userInfo.setId(uid); - addUserVIPInfo(userInfo); - } - - if (userInfo.getState() != UserVIPInfo.STATE_INVALID) - throw new UserVIPInfoException(2, "绯荤粺宸叉敹鍒颁綘鐨勮秴绾т細鍛樺崌绾х敵璇凤紝灏嗕細灏藉揩瀹屾垚瀹℃牳"); - - SystemEnum system = userInfoService.getUserSystem(uid); - - UserVIPInfo info = new UserVIPInfo(); - info.setId(userInfo.getId()); - info.setApplyTime(new Date()); - info.setState(UserVIPInfo.STATE_VERIFING); - info.setUpdateTime(new Date()); - userVIPInfoMapper.updateByPrimaryKeySelective(info); - // 鍙戦�侀偖浠堕�氱煡 - try { - Config config = configService.getConfig(ConfigKeyEnum.extractCodeEmailFrom.getKey(), system); - String[] sts = config.getValue().split(","); - String account = sts[0]; - String pwd = sts[1]; - - String msg = String.format("鐢ㄦ埛ID:%s 鐢宠瓒呯骇浼氬憳", uid + ""); - String email = userVipConfigService.getValueByKey("apply_vip_email"); - String[] emails = email.split(","); - for (String e : emails) { - MailSenderUtil.sendEmail(e, account, pwd, msg, msg); - } - } catch (Exception e) { - LogHelper.errorDetailInfo(e); - } - } - - @Transactional(rollbackFor = Exception.class) - @Override - public void passVIPApply(Long uid) throws UserVIPInfoException { - UserVIPInfo userVIPInfo = userVIPInfoMapper.selectByPrimaryKeyForUpdate(uid); - if (userVIPInfo == null) { - throw new UserVIPInfoException(1, "鐢ㄦ埛淇℃伅涓嶅瓨鍦�"); - } - if (userVIPInfo.getState() != UserVIPInfo.STATE_VERIFING) { - throw new UserVIPInfoException(2, "鐢宠鏈浜庡鏍哥姸鎬�"); - } - - UserVIPPreInfo latestProcess = userVIPPreInfoService.getLatestProcessInfo(uid); - if (latestProcess == null || latestProcess.getProcess() != UserVIPPreInfo.PROCESS_2) { - throw new UserVIPInfoException(1, "璇ョ敤鎴疯繕涓嶆槸楂樼骇浼氬憳"); - } - - int verifyVipResult = verifyVip(uid); - - if (verifyVipResult <= 0) - throw new UserVIPInfoException(1, "绯荤粺楠岃瘉锛氫笉婊¤冻鍗囩骇鏉′欢"); - - Date upgradeTime = new Date(); - // 閫氳繃瓒呯骇浼氬憳 - UserVIPInfo info = new UserVIPInfo(); - info.setId(userVIPInfo.getId()); - info.setSuccessTime(upgradeTime); - info.setState(UserVIPInfo.STATE_SUCCESS); - info.setUpdateTime(upgradeTime); - userVIPInfoMapper.updateByPrimaryKeySelective(info); - - UserVIPPreInfo preInfo = new UserVIPPreInfo(); - preInfo.setCreateTime(new Date()); - preInfo.setProcess(UserLevelEnum.superVIP.getLevel()); - preInfo.setSourceType(verifyVipResult); - preInfo.setUid(uid); - - try { - userVIPPreInfoService.addUserVIPPreInfo(preInfo); - } catch (UserVIPPreInfoException e1) { - throw new UserVIPInfoException(100, "鍗囩骇澶辫触"); - } - - // 鍗囩骇寮规鎻愮ず - UserLevelUpgradedNotify notify = new UserLevelUpgradedNotify(); - notify.setUid(uid); - notify.setFromLevel(UserLevelEnum.highVIP); - notify.setToLevel(UserLevelEnum.superVIP); - notify.setValid(true); - notify.setCreateTime(new Date()); - userLevelUpgradedNotifyService.addUserLevelUpgradedNotify(notify); - - try { - // 鍗囩骇娑堟伅 - UserVIPPreInfo pre1 = userVIPPreInfoService.getVipByProcess(uid, UserVIPPreInfo.PROCESS_2); - userAccountMsgNotificationService.vipUpgradeSuccess(uid, - TimeUtil.getDayDifferenceCount(pre1.getCreateTime(), new Date())); - - // 鐩存帴绮変笣鍗囩骇鎻愰啋 - ThreeSale threeSale = threeSaleSerivce.getMyBoss(uid); - if (threeSale != null) { - Long bossId = threeSale.getBoss().getId(); - UserInfo userInfo = userInfoService.selectByPKey(uid); - userInviteMsgNotificationService.fansUpgrade(bossId, "瓒呯骇浼氬憳", userInfo.getNickName(), getPassItem(uid), - upgradeTime); - } - } catch (Exception e) { - e.printStackTrace(); - } - } - - /** - * 楠岃瘉鏄惁绗﹀悎VIP - * - * @param uid - * @return - */ - private String getPassItem(Long uid) { - // 鑷喘 + 鍒嗕韩璁㈠崟 - long doneOrder = hongBaoV2CountService.countMyDirectOrderByCashArrival(uid, Constant.VIP_ORDER_PAY); - // 鏈夋晥绮変笣 - int doneFirst = 0; - int doneSecond = 0; - UserInviteValidNum userInviteValidNum = userInviteValidNumService.selectByPrimaryKey(uid); - if (userInviteValidNum != null) { - doneFirst = userInviteValidNum.getNumFirst() == null ? 0 : userInviteValidNum.getNumFirst(); - doneSecond = userInviteValidNum.getNumSecond() == null ? 0 : userInviteValidNum.getNumSecond(); - } - - long limitOrder = 0; - String zigou = userVipConfigService.getValueByKey("vip_pre_10_order_count"); - if (!StringUtil.isNullOrEmpty(zigou)) { - limitOrder = Long.parseLong(zigou); - } - - long limitFirst = 0; - String first = userVipConfigService.getValueByKey("vip_pre_10_first_level_team_count"); - if (!StringUtil.isNullOrEmpty(first)) { - limitFirst = Long.parseLong(first); - } - - long limitSecond = 0; - String second = userVipConfigService.getValueByKey("vip_pre_10_second_level_team_count"); - if (!StringUtil.isNullOrEmpty(second)) { - limitSecond = Long.parseLong(second); - } - - String item = ""; - if (doneOrder >= limitOrder) { - item = "杩斿埄+鍒嗕韩璁㈠崟"; - } else if (doneFirst >= limitFirst && doneSecond >= limitSecond) { - item = "鐩存帴+闂存帴绮変笣"; - } - return item; - } - - /** - * 楠岃瘉鏄惁绗﹀悎VIP - * - * @param uid - * @return 0-涓嶇鍚� 1-璁㈠崟 2-鍥㈤槦 - * int 杩斿洖绫诲瀷 - * @throws - * @Title: verifyVip - * @Description: - */ - private int verifyVip(Long uid) { - // 鑷喘 + 鍒嗕韩璁㈠崟 - long doneOrder = hongBaoV2CountService.countMyDirectOrderByCashArrival(uid, Constant.VIP_ORDER_PAY); - // 鏈夋晥绮変笣 - int doneFirst = 0; - int doneSecond = 0; - UserInviteValidNum userInviteValidNum = userInviteValidNumService.selectByPrimaryKey(uid); - if (userInviteValidNum != null) { - doneFirst = userInviteValidNum.getNumFirst() == null ? 0 : userInviteValidNum.getNumFirst(); - doneSecond = userInviteValidNum.getNumSecond() == null ? 0 : userInviteValidNum.getNumSecond(); - } - long limitOrder = 0; - String zigou = userVipConfigService.getValueByKey("vip_pre_10_order_count"); - if (!StringUtil.isNullOrEmpty(zigou)) { - limitOrder = Long.parseLong(zigou); - } - - long limitFirst = 0; - String first = userVipConfigService.getValueByKey("vip_pre_10_first_level_team_count"); - if (!StringUtil.isNullOrEmpty(first)) { - limitFirst = Long.parseLong(first); - } - - long limitSecond = 0; - String second = userVipConfigService.getValueByKey("vip_pre_10_second_level_team_count"); - if (!StringUtil.isNullOrEmpty(second)) { - limitSecond = Long.parseLong(second); - } - - if (doneOrder >= limitOrder) { - return UserVIPPreInfo.SOURCE_TYPE_ORDER; - } - - if ((doneFirst >= limitFirst && doneSecond >= limitSecond)) - - return UserVIPPreInfo.SOURCE_TYPE_TEAM; - return 0; - } - - @Transactional(rollbackFor = Exception.class) - @Override - public void rejectVIPApply(Long uid, String reason) throws UserVIPInfoException { - UserVIPInfo userInfo = userVIPInfoMapper.selectByPrimaryKeyForUpdate(uid); - if (userInfo == null) { - throw new UserVIPInfoException(1, "鐢ㄦ埛淇℃伅涓嶅瓨鍦�"); - } - if (userInfo.getState() != UserVIPInfo.STATE_VERIFING) { - throw new UserVIPInfoException(2, "鐢宠鏈浜庡鏍哥姸鎬�"); - } - - UserVIPInfo info = new UserVIPInfo(); - info.setId(userInfo.getId()); - info.setState(UserVIPInfo.STATE_INVALID); - info.setUpdateTime(new Date()); - info.setBeiZhu(reason); - userVIPInfoMapper.updateByPrimaryKeySelective(info); - // 娑堟伅 - userAccountMsgNotificationService.vipUpgradeFail(uid, reason); - } - - @Override - public void deleteByPrimaryKey(Long id) { - userVIPInfoMapper.deleteByPrimaryKey(id); - } - -} +package com.yeshi.fanli.service.impl.user.vip; + +import java.util.Date; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import javax.annotation.Resource; + +import com.yeshi.fanli.entity.SystemEnum; +import org.springframework.context.annotation.Lazy; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import com.yeshi.fanli.dao.mybatis.user.vip.UserVIPInfoMapper; +import com.yeshi.fanli.entity.bus.user.ThreeSale; +import com.yeshi.fanli.entity.bus.user.UserInfo; +import com.yeshi.fanli.entity.bus.user.UserInviteValidNum; +import com.yeshi.fanli.entity.bus.user.vip.UserLevelEnum; +import com.yeshi.fanli.entity.bus.user.vip.UserLevelUpgradedNotify; +import com.yeshi.fanli.entity.bus.user.vip.UserVIPInfo; +import com.yeshi.fanli.entity.bus.user.vip.UserVIPPreInfo; +import com.yeshi.fanli.entity.common.Config; +import com.yeshi.fanli.entity.system.ConfigKeyEnum; +import com.yeshi.fanli.exception.user.vip.UserVIPInfoException; +import com.yeshi.fanli.exception.user.vip.UserVIPPreInfoException; +import com.yeshi.fanli.log.LogHelper; +import com.yeshi.fanli.service.inter.config.ConfigService; +import com.yeshi.fanli.service.inter.count.HongBaoV2CountService; +import com.yeshi.fanli.service.inter.user.UserInfoService; +import com.yeshi.fanli.service.inter.user.invite.ThreeSaleSerivce; +import com.yeshi.fanli.service.inter.user.invite.UserInviteMsgNotificationService; +import com.yeshi.fanli.service.inter.user.invite.UserInviteValidNumService; +import com.yeshi.fanli.service.inter.user.msg.UserAccountMsgNotificationService; +import com.yeshi.fanli.service.inter.user.vip.UserLevelUpgradedNotifyService; +import com.yeshi.fanli.service.inter.user.vip.UserVIPInfoService; +import com.yeshi.fanli.service.inter.user.vip.UserVIPPreInfoService; +import com.yeshi.fanli.service.inter.user.vip.UserVipConfigService; +import com.yeshi.fanli.service.manger.msg.RocketMQManager; +import com.yeshi.fanli.util.Constant; +import com.yeshi.fanli.util.StringUtil; +import org.yeshi.utils.TimeUtil; +import com.yeshi.fanli.util.email.MailSenderUtil; + +@Service +public class UserVIPInfoServiceImpl implements UserVIPInfoService { + + @Resource + private UserVIPInfoMapper userVIPInfoMapper; + + @Resource + private UserInfoService userInfoService; + + @Resource + private UserVipConfigService userVipConfigService; + + @Lazy + @Resource + private HongBaoV2CountService hongBaoV2CountService; + + @Resource + private ThreeSaleSerivce threeSaleSerivce; + + @Resource + private UserVIPPreInfoService userVIPPreInfoService; + + @Resource + private UserAccountMsgNotificationService userAccountMsgNotificationService; + + @Resource + private UserInviteValidNumService userInviteValidNumService; + + @Resource + private UserLevelUpgradedNotifyService userLevelUpgradedNotifyService; + + @Resource + private UserInviteMsgNotificationService userInviteMsgNotificationService; + + @Resource + private RocketMQManager rocketMQManager; + + @Resource + private ConfigService configService; + + @Override + @Transactional(rollbackFor = Exception.class) + public void addUserVIPInfo(UserVIPInfo info) throws UserVIPInfoException { + if (info.getId() == null) { + throw new UserVIPInfoException(1, "淇℃伅涓嶅畬鏁�"); + } + UserVIPInfo userInfo = userVIPInfoMapper.selectByPrimaryKey(info.getId()); + if (userInfo != null) { + throw new UserVIPInfoException(1, "淇℃伅宸插瓨鍦�"); + } + // 鍒濆鍖栫姸鎬� + info.setState(UserVIPInfo.STATE_INVALID); + info.setCreateTime(new Date()); + userVIPInfoMapper.insert(info); + } + + @Override + public boolean isVIP(Long uid) { + return isVIP(uid, System.currentTimeMillis()); + } + + @Override + public boolean isVIP(Long uid, Long time) { + UserVIPInfo userInfo = userVIPInfoMapper.selectByPrimaryKey(uid); + if (userInfo != null && userInfo.getState() == UserVIPInfo.STATE_SUCCESS + && userInfo.getSuccessTime().getTime() < time) + return true; + else + return false; + } + + @Override + public UserVIPInfo selectByUid(Long uid) { + UserVIPInfo userInfo = userVIPInfoMapper.selectByPrimaryKey(uid); + return userInfo; + } + + @Override + public Map<Long, Boolean> listByUids(List<Long> uids) { + if (uids == null || uids.size() == 0) + return new HashMap<>(); + List<UserVIPInfo> infoList = userVIPInfoMapper.listByUids(uids); + // 鏁寸悊鏁版嵁 + Map<Long, Boolean> map = new HashMap<>(); + if (infoList != null) + for (UserVIPInfo info : infoList) + if (info != null && info.getState() == UserVIPInfo.STATE_SUCCESS) + map.put(info.getId(), true); + else + map.put(info.getId(), false); + for (Long uid : uids) { + if (map.get(uid) == null) + map.put(uid, false); + } + return map; + } + + @Override + public List<UserVIPInfo> listQuery(int page, int count, String key, Integer state) { + return userVIPInfoMapper.listQuery((page - 1) * count, count, key, state); + } + + @Override + public long countQuery(String key, Integer state) { + return userVIPInfoMapper.countQuery(key, state); + } + + @Transactional(rollbackFor = Exception.class) + @Override + public void applyVIP(Long uid) throws UserVIPInfoException { + UserVIPPreInfo latestProcess = userVIPPreInfoService.getLatestProcessInfo(uid); + if (latestProcess == null || latestProcess.getProcess() != UserVIPPreInfo.PROCESS_2) { + throw new UserVIPInfoException(1, "璇峰厛鍗囩骇涓洪珮绾т細鍛�"); + } + + int verifyResult = verifyVip(uid); + if (verifyResult <= 0) + throw new UserVIPInfoException(1, "涓嶆弧瓒冲崌绾ф潯浠�"); + + UserVIPInfo userInfo = userVIPInfoMapper.selectByPrimaryKeyForUpdate(uid); + if (userInfo == null) { + userInfo = new UserVIPInfo(); + userInfo.setId(uid); + addUserVIPInfo(userInfo); + } + + if (userInfo.getState() != UserVIPInfo.STATE_INVALID) + throw new UserVIPInfoException(2, "绯荤粺宸叉敹鍒颁綘鐨勮秴绾т細鍛樺崌绾х敵璇凤紝灏嗕細灏藉揩瀹屾垚瀹℃牳"); + + SystemEnum system = userInfoService.getUserSystem(uid); + + UserVIPInfo info = new UserVIPInfo(); + info.setId(userInfo.getId()); + info.setApplyTime(new Date()); + info.setState(UserVIPInfo.STATE_VERIFING); + info.setUpdateTime(new Date()); + userVIPInfoMapper.updateByPrimaryKeySelective(info); + // 鍙戦�侀偖浠堕�氱煡 + try { + Config config = configService.getConfig(ConfigKeyEnum.extractCodeEmailFrom.getKey(), system); + String[] sts = config.getValue().split(","); + String account = sts[0]; + String pwd = sts[1]; + + String msg = String.format("鐢ㄦ埛ID:%s 鐢宠瓒呯骇浼氬憳", uid + ""); + String email = userVipConfigService.getValueByKey("apply_vip_email"); + String[] emails = email.split(","); + for (String e : emails) { + MailSenderUtil.sendEmail(e, account, pwd, msg, msg); + } + } catch (Exception e) { + LogHelper.errorDetailInfo(e); + } + } + + @Transactional(rollbackFor = Exception.class) + @Override + public void passVIPApply(Long uid) throws UserVIPInfoException { + UserVIPInfo userVIPInfo = userVIPInfoMapper.selectByPrimaryKeyForUpdate(uid); + if (userVIPInfo == null) { + throw new UserVIPInfoException(1, "鐢ㄦ埛淇℃伅涓嶅瓨鍦�"); + } + if (userVIPInfo.getState() != UserVIPInfo.STATE_VERIFING) { + throw new UserVIPInfoException(2, "鐢宠鏈浜庡鏍哥姸鎬�"); + } + + UserVIPPreInfo latestProcess = userVIPPreInfoService.getLatestProcessInfo(uid); + if (latestProcess == null || latestProcess.getProcess() != UserVIPPreInfo.PROCESS_2) { + throw new UserVIPInfoException(1, "璇ョ敤鎴疯繕涓嶆槸楂樼骇浼氬憳"); + } + + int verifyVipResult = verifyVip(uid); + + if (verifyVipResult <= 0) + throw new UserVIPInfoException(1, "绯荤粺楠岃瘉锛氫笉婊¤冻鍗囩骇鏉′欢"); + + Date upgradeTime = new Date(); + // 閫氳繃瓒呯骇浼氬憳 + UserVIPInfo info = new UserVIPInfo(); + info.setId(userVIPInfo.getId()); + info.setSuccessTime(upgradeTime); + info.setState(UserVIPInfo.STATE_SUCCESS); + info.setUpdateTime(upgradeTime); + userVIPInfoMapper.updateByPrimaryKeySelective(info); + + UserVIPPreInfo preInfo = new UserVIPPreInfo(); + preInfo.setCreateTime(new Date()); + preInfo.setProcess(UserLevelEnum.superVIP.getLevel()); + preInfo.setSourceType(verifyVipResult); + preInfo.setUid(uid); + + try { + userVIPPreInfoService.addUserVIPPreInfo(preInfo); + } catch (UserVIPPreInfoException e1) { + throw new UserVIPInfoException(100, "鍗囩骇澶辫触"); + } + + // 鍗囩骇寮规鎻愮ず + UserLevelUpgradedNotify notify = new UserLevelUpgradedNotify(); + notify.setUid(uid); + notify.setFromLevel(UserLevelEnum.highVIP); + notify.setToLevel(UserLevelEnum.superVIP); + notify.setValid(true); + notify.setCreateTime(new Date()); + userLevelUpgradedNotifyService.addUserLevelUpgradedNotify(notify); + + try { + // 鍗囩骇娑堟伅 + UserVIPPreInfo pre1 = userVIPPreInfoService.getVipByProcess(uid, UserVIPPreInfo.PROCESS_2); + userAccountMsgNotificationService.vipUpgradeSuccess(uid, + TimeUtil.getDayDifferenceCount(pre1.getCreateTime(), new Date())); + + // 鐩存帴绮変笣鍗囩骇鎻愰啋 + ThreeSale threeSale = threeSaleSerivce.getMyBoss(uid); + if (threeSale != null) { + Long bossId = threeSale.getBoss().getId(); + UserInfo userInfo = userInfoService.selectByPKey(uid); + userInviteMsgNotificationService.fansUpgrade(bossId, "瓒呯骇浼氬憳", userInfo.getNickName(), getPassItem(uid), + upgradeTime); + } + } catch (Exception e) { + e.printStackTrace(); + } + } + + /** + * 楠岃瘉鏄惁绗﹀悎VIP + * + * @param uid + * @return + */ + private String getPassItem(Long uid) { + // 鑷喘 + 鍒嗕韩璁㈠崟 + long doneOrder = hongBaoV2CountService.countMyDirectOrderByCashArrival(uid, Constant.VIP_ORDER_PAY); + // 鏈夋晥绮変笣 + int doneFirst = 0; + int doneSecond = 0; + UserInviteValidNum userInviteValidNum = userInviteValidNumService.selectByPrimaryKey(uid); + if (userInviteValidNum != null) { + doneFirst = userInviteValidNum.getNumFirst() == null ? 0 : userInviteValidNum.getNumFirst(); + doneSecond = userInviteValidNum.getNumSecond() == null ? 0 : userInviteValidNum.getNumSecond(); + } + + long limitOrder = 0; + String zigou = userVipConfigService.getValueByKey("vip_pre_10_order_count"); + if (!StringUtil.isNullOrEmpty(zigou)) { + limitOrder = Long.parseLong(zigou); + } + + long limitFirst = 0; + String first = userVipConfigService.getValueByKey("vip_pre_10_first_level_team_count"); + if (!StringUtil.isNullOrEmpty(first)) { + limitFirst = Long.parseLong(first); + } + + long limitSecond = 0; + String second = userVipConfigService.getValueByKey("vip_pre_10_second_level_team_count"); + if (!StringUtil.isNullOrEmpty(second)) { + limitSecond = Long.parseLong(second); + } + + String item = ""; + if (doneOrder >= limitOrder) { + item = "杩斿埄+鍒嗕韩璁㈠崟"; + } else if (doneFirst >= limitFirst && doneSecond >= limitSecond) { + item = "鐩存帴+闂存帴绮変笣"; + } + return item; + } + + /** + * 楠岃瘉鏄惁绗﹀悎VIP + * + * @param uid + * @return 0-涓嶇鍚� 1-璁㈠崟 2-鍥㈤槦 + * int 杩斿洖绫诲瀷 + * @throws + * @Title: verifyVip + * @Description: + */ + private int verifyVip(Long uid) { + // 鑷喘 + 鍒嗕韩璁㈠崟 + long doneOrder = hongBaoV2CountService.countMyDirectOrderByCashArrival(uid, Constant.VIP_ORDER_PAY); + // 鏈夋晥绮変笣 + int doneFirst = 0; + int doneSecond = 0; + UserInviteValidNum userInviteValidNum = userInviteValidNumService.selectByPrimaryKey(uid); + if (userInviteValidNum != null) { + doneFirst = userInviteValidNum.getNumFirst() == null ? 0 : userInviteValidNum.getNumFirst(); + doneSecond = userInviteValidNum.getNumSecond() == null ? 0 : userInviteValidNum.getNumSecond(); + } + long limitOrder = 0; + String zigou = userVipConfigService.getValueByKey("vip_pre_10_order_count"); + if (!StringUtil.isNullOrEmpty(zigou)) { + limitOrder = Long.parseLong(zigou); + } + + long limitFirst = 0; + String first = userVipConfigService.getValueByKey("vip_pre_10_first_level_team_count"); + if (!StringUtil.isNullOrEmpty(first)) { + limitFirst = Long.parseLong(first); + } + + long limitSecond = 0; + String second = userVipConfigService.getValueByKey("vip_pre_10_second_level_team_count"); + if (!StringUtil.isNullOrEmpty(second)) { + limitSecond = Long.parseLong(second); + } + + if (doneOrder >= limitOrder) { + return UserVIPPreInfo.SOURCE_TYPE_ORDER; + } + + if ((doneFirst >= limitFirst && doneSecond >= limitSecond)) + + return UserVIPPreInfo.SOURCE_TYPE_TEAM; + return 0; + } + + @Transactional(rollbackFor = Exception.class) + @Override + public void rejectVIPApply(Long uid, String reason) throws UserVIPInfoException { + UserVIPInfo userInfo = userVIPInfoMapper.selectByPrimaryKeyForUpdate(uid); + if (userInfo == null) { + throw new UserVIPInfoException(1, "鐢ㄦ埛淇℃伅涓嶅瓨鍦�"); + } + if (userInfo.getState() != UserVIPInfo.STATE_VERIFING) { + throw new UserVIPInfoException(2, "鐢宠鏈浜庡鏍哥姸鎬�"); + } + + UserVIPInfo info = new UserVIPInfo(); + info.setId(userInfo.getId()); + info.setState(UserVIPInfo.STATE_INVALID); + info.setUpdateTime(new Date()); + info.setBeiZhu(reason); + userVIPInfoMapper.updateByPrimaryKeySelective(info); + // 娑堟伅 + userAccountMsgNotificationService.vipUpgradeFail(uid, reason); + } + + @Override + public void deleteByPrimaryKey(Long id) { + userVIPInfoMapper.deleteByPrimaryKey(id); + } + +} -- Gitblit v1.8.0