package cn.wisenergy.service.app.impl; import cn.wisenergy.mapper.*; import cn.wisenergy.model.app.*; import cn.wisenergy.model.enums.TradeRecordEnum; import cn.wisenergy.service.app.UserLevelService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.xxl.job.core.handler.annotation.XxlJob; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.annotation.Id; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.math.BigDecimal; import java.util.List; /** * @author zw * @ Description: 用户升级功能业务实现 * @ Author : zw * @ Date : 2021/2/24 17:06 */ @Service @Slf4j public class UserLevelServiceImpl extends ServiceImpl<UsersMapper,User> implements UserLevelService { @Autowired private UsersMapper usersMapper; @Autowired private RecommendUserMapper recommendUserMapper; @Autowired private TeamUserInfoMapper teamUserInfoMapper; @Autowired private TradeRecordMapper tradeRecordMapper; @Autowired private AccountMapper accountMapper; @Autowired private CultivatingPrizeMapper cultivatingPrizeMapper; @Autowired private CultivatingPrizeInfoMapper cultivatingPrizeInfoMapper; @Autowired private OrderMapper orderMapper; // public void //获取订单 @XxlJob(value = "userLevelUpjobhandler") @Override public void userLevelUp(){ //1.获取数据库订单数据 log.info("------------------------用户升级开始----------------------------------"); List<OrderInfo> ordersByLevelStatus = orderMapper.getByLevelStatus(0); for (OrderInfo orderInfo : ordersByLevelStatus) { String buyerId = orderInfo.getBuyerId(); userLevelUpgrade(buyerId); //当前订单升级状态置为1 orderInfo.setLevelStatus(1); orderMapper.updateById(orderInfo); } log.info("-------------------------用户升级结束--------------------------------------"); } @Override @Transactional public void userLevelUpgrade(String userId) { //当前用户对象 User user = usersMapper.getByUserId(userId); //当前用户直推表对象 RecommendUser recommendUser = recommendUserMapper.getByUserId(userId); //当前用户团队信息表对象 TeamUserInfo teamUserInfoMapperByUserId = teamUserInfoMapper.getByUserId(userId); //计算当前用户业绩 BigDecimal performanceByUserid = orderMapper.getPerformanceByUserid(userId); //当前用户等级 Integer userLevel = user.getUserLevel(); //当前用户的邀请码 String beInvitedCode = user.getBeInvitedCode(); // String inviteUserId = ""; RecommendUser inviteRecommendUser = new RecommendUser(); //若当前用户的推荐人邀请码是 “1” 时 则当前用户没有邀请人 if (!"1".equals(beInvitedCode)) { //通过当前用户推荐人邀请码获取邀请人的userId inviteUserId = usersMapper.getByBeInvitedCode(beInvitedCode).getUserId(); //邀请人的直推用户信息 inviteRecommendUser = recommendUserMapper.getByUserId(inviteUserId); } //用户等级升级为幼苗 1 //若当前用户等级为0(普通用户)且跨境额度(业绩消费金额)>= 3980 进行升级0-->1 //todo:根据业绩去计算 查一次表获取业绩 if (userLevel == 0 && performanceByUserid.intValue() >= 3980) { user.setUserLevel(1); usersMapper.updateById(user); //用户推荐人邀请码为 1 时 该用户没有邀请人 if ("1".equals(beInvitedCode)) { return; } else { //推荐人直推信息表数据维护 //若邀请人直推用户信息中的普通用户数量为0是则不用变化,否则普通用户数量-1 if (inviteRecommendUser.getNormalUserNum() == 0) { inviteRecommendUser.setNormalUserNum(inviteRecommendUser.getNormalUserNum()); } else { //普通用户-1 inviteRecommendUser.setNormalUserNum(inviteRecommendUser.getNormalUserNum() - 1); } //邀请人直推用户信息中的幼苗用户数量为+1 inviteRecommendUser.setSeedlingNum(inviteRecommendUser.getSeedlingNum() + 1); recommendUserMapper.updateById(inviteRecommendUser); //团队用户表数据维护 teamUserInfoNormalToSeed(inviteUserId); //上级用户获得幼苗等级的培育奖 int level = 1; cultivatingPrizeToInvitedUser(userId, inviteUserId, level); //用户升级成功时,进行邀请人等级自查是否达到升级条件 userLevelUpgrade(inviteUserId); } } //用户等级升级为青铜树 2 //当前用户等级为幼苗用户(1)时 且当前用户直推人数中幼苗等级>=5人<20人时 if (userLevel == 1 && recommendUser.getSeedlingNum() >= 5 && recommendUser.getSeedlingNum() < 20) { //用户升级成功 user.setUserLevel(2); usersMapper.updateById(user); //用户被邀请码为 1 时 该用户没有邀请人 if ("1".equals(user.getBeInvitedCode())) { return; } else { //若邀请人直推用户信息中的幼苗用户数量为0是则不用变化,否则幼苗用户数量-1 if (inviteRecommendUser.getSeedlingNum() == 0) { inviteRecommendUser.setSeedlingNum(inviteRecommendUser.getSeedlingNum()); } else { //幼苗用户-1 inviteRecommendUser.setSeedlingNum(inviteRecommendUser.getSeedlingNum() - 1); } //邀请人直推用户信息中的青铜树用户数量为+1 inviteRecommendUser.setBronzeTreeNum(inviteRecommendUser.getBronzeTreeNum() + 1); recommendUserMapper.updateById(inviteRecommendUser); //团队用户表数据维护 teamUserInfoSeedToBronze(inviteUserId); //上级用户获得幼苗等级的培育奖 int level = 2; cultivatingPrizeToInvitedUser(userId, inviteUserId, level); //用户升级成功时,进行邀请人等级自查是否达到升级条件 userLevelUpgrade(inviteUserId); } } //用户等级升级为白银树 3 if (userLevel == 2 && recommendUser.getSeedlingNum() >= 20 && recommendUser.getSeedlingNum() < 50) { user.setUserLevel(3); usersMapper.updateById(user); //用户被邀请码为 1 时 该用户没有邀请人 if ("1".equals(user.getBeInvitedCode())) { return; } else { //推荐人直推信息表数据维护 //若邀请人直推用户信息中的青铜树用户数量为0是则不用变化,否则青铜树用户数量-1 if (inviteRecommendUser.getBronzeTreeNum() == 0) { inviteRecommendUser.setBronzeTreeNum(inviteRecommendUser.getBronzeTreeNum()); } else { //青铜树用户-1 inviteRecommendUser.setBronzeTreeNum(inviteRecommendUser.getBronzeTreeNum() - 1); } //邀请人直推用户信息中的白银用户数量 + 1 inviteRecommendUser.setSilverTreeNum(inviteRecommendUser.getSilverTreeNum() + 1); recommendUserMapper.updateById(inviteRecommendUser); //团队用户表数据维护 teamUserInfoBronzeToSilver(inviteUserId); //上级用户获得幼苗等级的培育奖 int level = 3; cultivatingPrizeToInvitedUser(userId, inviteUserId, level); //用户升级成功时,进行邀请人等级自查是否达到升级条件 userLevelUpgrade(inviteUserId); } } //用户等级升级为黄金树 4 //:todo 条件:团队中青铜树数量>=20 if (userLevel == 3 && recommendUser.getSeedlingNum() >= 50 && recommendUser.getSilverTreeNum() >= 4 && teamUserInfoMapperByUserId.getBronzeTreeNum() >= 20) { user.setUserLevel(4); usersMapper.updateById(user); //用户被邀请码为 1 时 该用户没有邀请人 if ("1".equals(user.getBeInvitedCode())) { return; } else { //推荐人直推信息表数据维护 //若邀请人直推用户信息中的白银树用户数量为0是则不用变化,否则白银树用户数量-1 if (inviteRecommendUser.getSilverTreeNum() == 0) { inviteRecommendUser.setSilverTreeNum(inviteRecommendUser.getSilverTreeNum()); } else { //白银树用户-1 inviteRecommendUser.setSilverTreeNum(inviteRecommendUser.getSilverTreeNum() - 1); } //邀请人直推用户信息中的黄金用户数量 + 1 inviteRecommendUser.setGoldTreeNum(inviteRecommendUser.getGoldTreeNum() + 1); recommendUserMapper.updateById(inviteRecommendUser); //团队用户表数据维护 teamUserInfoSilverToGoldTree(inviteUserId); //上级用户获得幼苗等级的培育奖 int level = 4; cultivatingPrizeToInvitedUser(userId, inviteUserId, level); //用户升级成功时,进行邀请人等级自查是否达到升级条件 userLevelUpgrade(inviteUserId); } } //用户等级级升级为农场主 5 //:todo 条件:团队中白银树数量>=40 if (userLevel == 4 && recommendUser.getSeedlingNum() >= 70 && recommendUser.getGoldTreeNum() >= 5 && teamUserInfoMapperByUserId.getSilverTreeNum() >= 40) { user.setUserLevel(5); usersMapper.updateById(user); //用户被邀请码为 1 时 该用户没有邀请人 if ("1".equals(user.getBeInvitedCode())) { return; } else { //推荐人直推信息表数据维护 //若邀请人直推用户信息中的黄金树用户数量为0是则不用变化,否则黄金树用户数量-1 if (inviteRecommendUser.getGoldTreeNum() == 0) { inviteRecommendUser.setGoldTreeNum(inviteRecommendUser.getGoldTreeNum()); } else { //黄金树用户-1 inviteRecommendUser.setGoldTreeNum(inviteRecommendUser.getGoldTreeNum() - 1); } //邀请人直推用户信息中的农场主用户数量 + 1 inviteRecommendUser.setGoldTreeNum(inviteRecommendUser.getFarmerNum() + 1); recommendUserMapper.updateById(inviteRecommendUser); //团队用户表数据维护 teamUserInfoGoldTreeToFarmer(inviteUserId); //上级用户获得幼苗等级的培育奖 int level = 5; cultivatingPrizeToInvitedUser(userId, inviteUserId, level); //用户升级成功时,进行邀请人等级自查是否达到升级条件 userLevelUpgrade(inviteUserId); } } //用户等级升级为森林之星 6 // todo: 条件:团队中白银树数量>=70 && 条件:团队中黄金树数量>=30 if (userLevel == 5 && recommendUser.getSeedlingNum() >= 80 && recommendUser.getFarmerNum() >= 5 && teamUserInfoMapperByUserId.getSilverTreeNum() >= 70 && teamUserInfoMapperByUserId.getGoldTreeNum() >= 30) { user.setUserLevel(6); usersMapper.updateById(user); //用户被邀请码为 1 时 该用户没有邀请人 if ("1".equals(user.getBeInvitedCode())) { return; } else { //推荐人直推信息表数据维护 //若邀请人直推用户信息中的农场主用户数量为0是则不用变化,否则农场主用户数量-1 if (inviteRecommendUser.getFarmerNum() == 0) { inviteRecommendUser.setFarmerNum(inviteRecommendUser.getFarmerNum()); } else { //农场主用户-1 inviteRecommendUser.setFarmerNum(inviteRecommendUser.getFarmerNum() - 1); } //邀请人直推用户信息中的森林之星用户数量 + 1 inviteRecommendUser.setForestStartNum(inviteRecommendUser.getForestStartNum() + 1); recommendUserMapper.updateById(inviteRecommendUser); //团队用户表数据维护 teamUserInfoFarmerToForestStart(inviteUserId); //上级用户获得幼苗等级的培育奖 int level = 6; cultivatingPrizeToInvitedUser(userId, inviteUserId, level); //用户升级成功时,进行邀请人等级自查是否达到升级条件 userLevelUpgrade(inviteUserId); } } //用户等级升级为西田森合伙人 7 //:todo 条件:团队中白银树数量>=90 && 条件:团队中黄金树数量>=50 条件:团队中农场主数量>=30 if (userLevel == 6 && recommendUser.getSeedlingNum() >= 100 && recommendUser.getForestStartNum() >= 1 && teamUserInfoMapperByUserId.getSilverTreeNum() >= 90 && teamUserInfoMapperByUserId.getFarmerNum() >= 30) { user.setUserLevel(7); usersMapper.updateById(user); //用户被邀请码为 1 时 该用户没有邀请人 if ("1".equals(user.getBeInvitedCode())) { return; } else { //推荐人直推信息表数据维护 //若邀请人直推用户信息中的森林之星用户数量为0是则不用变化,否则森林之星用户数量-1 if (inviteRecommendUser.getForestStartNum() == 0) { inviteRecommendUser.setForestStartNum(inviteRecommendUser.getForestStartNum()); } else { //森林之星用户-1 inviteRecommendUser.setForestStartNum(inviteRecommendUser.getForestStartNum() - 1); } //邀请人直推用户信息中的西田森合伙人用户数量 + 1 inviteRecommendUser.setPartnerNum(inviteRecommendUser.getPartnerNum() + 1); recommendUserMapper.updateById(inviteRecommendUser); //团队用户表数据维护 teamUserInfoForestStartToPartner(inviteUserId); //上级用户获得幼苗等级的培育奖 int level = 7; cultivatingPrizeToInvitedUser(userId, inviteUserId, level); //用户升级成功时,进行邀请人等级自查是否达到升级条件 userLevelUpgrade(inviteUserId); } } } /** * 团队用户表数据维护(森林之星用户升级至西田森合伙人用户时) * * @param inviteUserId 邀请人userid */ private void teamUserInfoForestStartToPartner(String inviteUserId) { //邀请人的团队信息表对象 TeamUserInfo teamNumInfoBuyId = teamUserInfoMapper.getByUserId(inviteUserId); //邀请人的用户表对象 User byUserId = usersMapper.getByUserId(teamNumInfoBuyId.getUserId()); String beinvitedCodeUserId = ""; String inviteCode = byUserId.getBeInvitedCode(); if (!"1".equals(inviteCode)) { //通过邀请人的用户信息获取邀请人的推荐人邀请码 beinvitedCodeUserId = usersMapper.getByBeInvitedCode(inviteCode).getUserId(); } //通过邀请人的用户信息获取邀请人的推荐人邀请码 //String beinvitedCodeUserId = usersMapper.getByBeInvitedCode(byUserId.getBeInvitedCode()).getUserId(); //邀请人团队信息表中森林之星用户数量 = 0 时,森林之星用户数量不用变化,否则森林之星用户数量 - 1 if (teamNumInfoBuyId.getForestStartNum() == 0) { teamNumInfoBuyId.setForestStartNum(teamNumInfoBuyId.getForestStartNum()); } else { //森林之星用户数量 - 1 teamNumInfoBuyId.setForestStartNum(teamNumInfoBuyId.getForestStartNum() - 1); } //西田森合伙人用户数量 + 1 teamNumInfoBuyId.setPartnerNum(teamNumInfoBuyId.getPartnerNum() + 1); teamUserInfoMapper.updateById(teamNumInfoBuyId); if ("1".equals(byUserId.getBeInvitedCode())) { return; } teamUserInfoForestStartToPartner(beinvitedCodeUserId); } /** * 团队用户表数据维护(农场主用户升级至森林之星用户时) * * @param inviteUserId 邀请人userid */ private void teamUserInfoFarmerToForestStart(String inviteUserId) { //邀请人的团队信息表对象 TeamUserInfo teamNumInfoBuyId = teamUserInfoMapper.getByUserId(inviteUserId); //邀请人的用户表对象 User byUserId = usersMapper.getByUserId(teamNumInfoBuyId.getUserId()); String beinvitedCodeUserId = ""; String inviteCode = byUserId.getBeInvitedCode(); if (!"1".equals(inviteCode)) { //通过邀请人的用户信息获取邀请人的推荐人邀请码 beinvitedCodeUserId = usersMapper.getByBeInvitedCode(inviteCode).getUserId(); } //通过邀请人的用户信息获取邀请人的推荐人邀请码 //String beinvitedCodeUserId = usersMapper.getByBeInvitedCode(byUserId.getBeInvitedCode()).getUserId(); //邀请人团队信息表中农场主用户数量 = 0 时,农场主用户数量不用变化,否则农场主用户数量 - 1 if (teamNumInfoBuyId.getFarmerNum() == 0) { teamNumInfoBuyId.setFarmerNum(teamNumInfoBuyId.getFarmerNum()); } else { //农场主用户数量 - 1 teamNumInfoBuyId.setFarmerNum(teamNumInfoBuyId.getFarmerNum() - 1); } //森林之星用户数量 + 1 teamNumInfoBuyId.setForestStartNum(teamNumInfoBuyId.getForestStartNum() + 1); teamUserInfoMapper.updateById(teamNumInfoBuyId); if ("1".equals(byUserId.getBeInvitedCode())) { return; } //递归向上修改团队用户信息表 teamUserInfoFarmerToForestStart(beinvitedCodeUserId); } /** * 团队用户表数据维护(黄金树用户升级至农场主用户时) * * @param inviteUserId 邀请人userid */ private void teamUserInfoGoldTreeToFarmer(String inviteUserId) { //邀请人的团队信息表对象 TeamUserInfo teamNumInfoBuyId = teamUserInfoMapper.getByUserId(inviteUserId); //邀请人的用户表对象 User byUserId = usersMapper.getByUserId(teamNumInfoBuyId.getUserId()); String beinvitedCodeUserId = ""; String inviteCode = byUserId.getBeInvitedCode(); if (!"1".equals(inviteCode)) { //通过邀请人的用户信息获取邀请人的推荐人邀请码 beinvitedCodeUserId = usersMapper.getByBeInvitedCode(inviteCode).getUserId(); } //通过邀请人的用户信息获取邀请人的推荐人邀请码 // String beinvitedCodeUserId = usersMapper.getByBeInvitedCode(byUserId.getBeInvitedCode()).getUserId(); //邀请人团队信息表中黄金树用户数量 = 0 时,黄金树用户数量不用变化,否则黄金树用户数量 - 1 if (teamNumInfoBuyId.getGoldTreeNum() == 0) { teamNumInfoBuyId.setGoldTreeNum(teamNumInfoBuyId.getGoldTreeNum()); } else { //黄金树用户数量 - 1 teamNumInfoBuyId.setGoldTreeNum(teamNumInfoBuyId.getGoldTreeNum() - 1); } //农场主数量 + 1 teamNumInfoBuyId.setFarmerNum(teamNumInfoBuyId.getFarmerNum() + 1); teamUserInfoMapper.updateById(teamNumInfoBuyId); if ("1".equals(byUserId.getBeInvitedCode())) { return; } //递归向上修改团队用户信息表 teamUserInfoGoldTreeToFarmer(beinvitedCodeUserId); } /** * 团队用户表数据维护(白银树用户升级至黄金树用户时) * * @param inviteUserId 邀请人userid */ private void teamUserInfoSilverToGoldTree(String inviteUserId) { //邀请人的团队信息表对象 TeamUserInfo teamNumInfoBuyId = teamUserInfoMapper.getByUserId(inviteUserId); //邀请人的用户表对象 User byUserId = usersMapper.getByUserId(teamNumInfoBuyId.getUserId()); String beinvitedCodeUserId = ""; String inviteCode = byUserId.getBeInvitedCode(); if (!"1".equals(inviteCode)) { //通过邀请人的用户信息获取邀请人的推荐人邀请码 beinvitedCodeUserId = usersMapper.getByBeInvitedCode(inviteCode).getUserId(); } //通过邀请人的用户信息获取邀请人的推荐人邀请码 //String beinvitedCodeUserId = usersMapper.getByBeInvitedCode(byUserId.getBeInvitedCode()).getUserId(); //邀请人团队信息表中白银树用户数量 = 0 时,白银树用户数量不用变化,否则白银树用户数量 - 1 if (teamNumInfoBuyId.getSilverTreeNum() == 0) { teamNumInfoBuyId.setSilverTreeNum(teamNumInfoBuyId.getSilverTreeNum()); } else { //白银树用户数量 - 1 teamNumInfoBuyId.setSilverTreeNum(teamNumInfoBuyId.getSilverTreeNum() - 1); } //黄金树用户数量 - 1 teamNumInfoBuyId.setGoldTreeNum(teamNumInfoBuyId.getGoldTreeNum() + 1); teamUserInfoMapper.updateById(teamNumInfoBuyId); if ("1".equals(byUserId.getBeInvitedCode())) { return; } //递归向上修改团队用户信息表 teamUserInfoSilverToGoldTree(beinvitedCodeUserId); } /** * 团队用户表数据维护(青铜树用户升级至白银树用户时) * * @param inviteUserId 邀请人userid */ private void teamUserInfoBronzeToSilver(String inviteUserId) { //邀请人的团队信息表对象 TeamUserInfo teamNumInfoBuyId = teamUserInfoMapper.getByUserId(inviteUserId); //邀请人的用户表对象 User byUserId = usersMapper.getByUserId(teamNumInfoBuyId.getUserId()); String beinvitedCodeUserId = ""; String inviteCode = byUserId.getBeInvitedCode(); if (!"1".equals(inviteCode)) { //通过邀请人的用户信息获取邀请人的推荐人邀请码 beinvitedCodeUserId = usersMapper.getByBeInvitedCode(inviteCode).getUserId(); } //通过邀请人的用户信息获取邀请人的推荐人邀请码 //String beinvitedCodeUserId = usersMapper.getByBeInvitedCode(byUserId.getBeInvitedCode()).getUserId(); //邀请人团队信息表中青铜树用户数量 = 0 时,青铜树用户数量不用变化,否则青铜树用户数量 - 1 if (teamNumInfoBuyId.getBronzeTreeNum() == 0) { teamNumInfoBuyId.setBronzeTreeNum(teamNumInfoBuyId.getBronzeTreeNum()); } else { //青铜树用户数量 - 1 teamNumInfoBuyId.setBronzeTreeNum(teamNumInfoBuyId.getBronzeTreeNum() - 1); } //白银树用户数量+1 teamNumInfoBuyId.setSilverTreeNum(teamNumInfoBuyId.getSilverTreeNum() + 1); teamUserInfoMapper.updateById(teamNumInfoBuyId); if ("1".equals(byUserId.getBeInvitedCode())) { return; } //递归向上修改团队用户信息表 teamUserInfoBronzeToSilver(beinvitedCodeUserId); } /** * 团队用户表数据维护(幼苗用户升级至青铜用户时) * * @param inviteUserId 邀请人userid */ private void teamUserInfoSeedToBronze(String inviteUserId) { //邀请人的团队信息表对象 TeamUserInfo teamNumInfoBuyId = teamUserInfoMapper.getByUserId(inviteUserId); //邀请人的用户表对象 User byUserId = usersMapper.getByUserId(teamNumInfoBuyId.getUserId()); String beinvitedCodeUserId = ""; String inviteCode = byUserId.getBeInvitedCode(); if (!"1".equals(inviteCode)) { //通过邀请人的用户信息获取邀请人的推荐人邀请码 beinvitedCodeUserId = usersMapper.getByBeInvitedCode(inviteCode).getUserId(); } //通过邀请人的用户信息获取邀请人的推荐人邀请码 //String beinvitedCodeUserId = usersMapper.getByBeInvitedCode(byUserId.getBeInvitedCode()).getUserId(); //邀请人团队信息表中幼苗用户数量 = 0 时,幼苗用户数量不用变化,否则幼苗用户数量 - 1 if (teamNumInfoBuyId.getSeedlingNum() == 0) { teamNumInfoBuyId.setSeedlingNum(teamNumInfoBuyId.getSeedlingNum()); } else { //幼苗用户数量-1 teamNumInfoBuyId.setSeedlingNum(teamNumInfoBuyId.getSeedlingNum() - 1); } //邀请人的团队用户信息表中青铜树数量 + 1 teamNumInfoBuyId.setBronzeTreeNum(teamNumInfoBuyId.getBronzeTreeNum() + 1); teamUserInfoMapper.updateById(teamNumInfoBuyId); if ("1".equals(byUserId.getBeInvitedCode())) { return; } //递归向上修改团队用户信息表 teamUserInfoSeedToBronze(beinvitedCodeUserId); } /** * 团队用户表数据维护(普通用户升级至幼苗用户时) * * @param inviteUserId 邀请人userid */ private void teamUserInfoNormalToSeed(String inviteUserId) { //邀请人的团队信息表对象 TeamUserInfo teamNumInfoBuyId = teamUserInfoMapper.getByUserId(inviteUserId); //邀请人的用户表对象 User intiveUserByUserId = usersMapper.getByUserId(teamNumInfoBuyId.getUserId()); String beinvitedCodeUserId = ""; //邀请人的推荐人邀请码 String inviteCode = intiveUserByUserId.getBeInvitedCode(); if (!"1".equals(inviteCode)) { //通过邀请人的用户信息获取邀请人的推荐人邀请码 beinvitedCodeUserId = usersMapper.getByBeInvitedCode(inviteCode).getUserId(); } if (teamNumInfoBuyId.getNormalUserNum() == 0) { teamNumInfoBuyId.setNormalUserNum(teamNumInfoBuyId.getNormalUserNum()); } else { //普通用户数量-1 teamNumInfoBuyId.setNormalUserNum(teamNumInfoBuyId.getNormalUserNum() - 1); } //邀请人的团队用户信息表中幼苗数量 + 1 //第一波用户是谁邀请的 teamNumInfoBuyId.setSeedlingNum(teamNumInfoBuyId.getSeedlingNum() + 1); teamUserInfoMapper.updateById(teamNumInfoBuyId); if ("1".equals(intiveUserByUserId.getBeInvitedCode())) { return; } //递归向上修改团队用户信息表 teamUserInfoNormalToSeed(beinvitedCodeUserId); } /** * 培育奖给到上级用户 * * @param userid 当前用户id * @param inviteUserId 上级用户id * @param level 当前用户升级后的等级 */ public void cultivatingPrizeToInvitedUser(String userid, String inviteUserId, int level) { //当前用户的培育奖记录 CultivatingPrizeInfo cultivatingPrizeInfo = cultivatingPrizeInfoMapper.getOneByUserId(userid); if (1 == level) { int seedling = cultivatingPrizeInfo.getSeedling(); //用户等级对应的培育奖金额 BigDecimal cultivatingPrize = cultivatingPrizeMapper.getcultivatingPrizeByUserLevel(level).getCultivatingPrize(); if (1 != seedling) { //给上级用户幼苗等级培育奖 //1.上级用户本月收益 ++ AccountInfo beIntivedUserAccount = accountMapper.getByUserId(inviteUserId); BigDecimal earningsMonth = beIntivedUserAccount.getEarningsMonth(); earningsMonth = earningsMonth.add(cultivatingPrize); beIntivedUserAccount.setEarningsMonth(earningsMonth); BigDecimal earningsTotal = beIntivedUserAccount.getEarningsTotal(); earningsTotal = earningsTotal.add(cultivatingPrize); beIntivedUserAccount.setEarningsTotal(earningsTotal); accountMapper.updateEarningsMonthAndEarningsTotalByid(beIntivedUserAccount); //2.交易流水新增一条数据 TradeRecord tradeRecord = new TradeRecord(); tradeRecord.setUserId(inviteUserId); tradeRecord.setMoney(cultivatingPrize); tradeRecord.setTradeNo(null); tradeRecord.setTradeType(TradeRecordEnum.CULTIVATING_PRIZE.getCode()); tradeRecordMapper.add(tradeRecord); //3.修改培育奖记录状态 ==1 seedling = 1; cultivatingPrizeInfo.setSeedling(seedling); cultivatingPrizeInfoMapper.updateById(cultivatingPrizeInfo); } } else if (2 == level) { int bronzeTree = cultivatingPrizeInfo.getBronzeTree(); //用户等级对应的培育奖金额 BigDecimal cultivatingPrize = cultivatingPrizeMapper.getcultivatingPrizeByUserLevel(level).getCultivatingPrize(); if (1 != bronzeTree) { //给上级用户幼苗等级培育奖 //1.上级用户本月收益 ++ AccountInfo beIntivedUserAccount = accountMapper.getByUserId(inviteUserId); BigDecimal earningsMonth = beIntivedUserAccount.getEarningsMonth(); earningsMonth = earningsMonth.add(cultivatingPrize); beIntivedUserAccount.setEarningsMonth(earningsMonth); BigDecimal earningsTotal = beIntivedUserAccount.getEarningsTotal(); earningsTotal = earningsTotal.add(cultivatingPrize); beIntivedUserAccount.setEarningsTotal(earningsTotal); accountMapper.updateEarningsMonthAndEarningsTotalByid(beIntivedUserAccount); //2.交易流水新增一条数据 TradeRecord tradeRecord = new TradeRecord(); tradeRecord.setUserId(inviteUserId); tradeRecord.setMoney(cultivatingPrize); tradeRecord.setTradeNo(null); tradeRecord.setTradeType(TradeRecordEnum.CULTIVATING_PRIZE.getCode()); tradeRecordMapper.add(tradeRecord); //3.修改培育奖记录状态 ==1 bronzeTree = 1; cultivatingPrizeInfo.setSeedling(bronzeTree); cultivatingPrizeInfoMapper.updateById(cultivatingPrizeInfo); } } else if (3 == level) { int silverTree = cultivatingPrizeInfo.getSilverTree(); //用户等级对应的培育奖金额 BigDecimal cultivatingPrize = cultivatingPrizeMapper.getcultivatingPrizeByUserLevel(level).getCultivatingPrize(); if (1 != silverTree) { //给上级用户幼苗等级培育奖 //1.上级用户本月收益 ++ AccountInfo beIntivedUserAccount = accountMapper.getByUserId(inviteUserId); BigDecimal earningsMonth = beIntivedUserAccount.getEarningsMonth(); earningsMonth = earningsMonth.add(cultivatingPrize); beIntivedUserAccount.setEarningsMonth(earningsMonth); BigDecimal earningsTotal = beIntivedUserAccount.getEarningsTotal(); earningsTotal = earningsTotal.add(cultivatingPrize); beIntivedUserAccount.setEarningsTotal(earningsTotal); accountMapper.updateEarningsMonthAndEarningsTotalByid(beIntivedUserAccount); //2.交易流水新增一条数据 TradeRecord tradeRecord = new TradeRecord(); tradeRecord.setUserId(inviteUserId); tradeRecord.setMoney(cultivatingPrize); tradeRecord.setTradeNo(null); tradeRecord.setTradeType(TradeRecordEnum.CULTIVATING_PRIZE.getCode()); tradeRecordMapper.add(tradeRecord); //3.修改培育奖记录状态 ==1 silverTree = 1; cultivatingPrizeInfo.setSeedling(silverTree); cultivatingPrizeInfoMapper.updateById(cultivatingPrizeInfo); } } else if (4 == level) { int goldTree = cultivatingPrizeInfo.getGoldTree(); //用户等级对应的培育奖金额 BigDecimal cultivatingPrize = cultivatingPrizeMapper.getcultivatingPrizeByUserLevel(level).getCultivatingPrize(); if (1 != goldTree) { //给上级用户幼苗等级培育奖 //1.上级用户本月收益 ++ AccountInfo beIntivedUserAccount = accountMapper.getByUserId(inviteUserId); BigDecimal earningsMonth = beIntivedUserAccount.getEarningsMonth(); earningsMonth = earningsMonth.add(cultivatingPrize); beIntivedUserAccount.setEarningsMonth(earningsMonth); BigDecimal earningsTotal = beIntivedUserAccount.getEarningsTotal(); earningsTotal = earningsTotal.add(cultivatingPrize); beIntivedUserAccount.setEarningsTotal(earningsTotal); accountMapper.updateEarningsMonthAndEarningsTotalByid(beIntivedUserAccount); //2.交易流水新增一条数据 TradeRecord tradeRecord = new TradeRecord(); tradeRecord.setUserId(inviteUserId); tradeRecord.setMoney(cultivatingPrize); tradeRecord.setTradeNo(null); tradeRecord.setTradeType(TradeRecordEnum.CULTIVATING_PRIZE.getCode()); tradeRecordMapper.add(tradeRecord); //3.修改培育奖记录状态 ==1 goldTree = 1; cultivatingPrizeInfo.setSeedling(goldTree); cultivatingPrizeInfoMapper.updateById(cultivatingPrizeInfo); } } else if (5 == level) { int farmer = cultivatingPrizeInfo.getFarmer(); //用户等级对应的培育奖金额 BigDecimal cultivatingPrize = cultivatingPrizeMapper.getcultivatingPrizeByUserLevel(level).getCultivatingPrize(); if (1 != farmer) { //给上级用户幼苗等级培育奖 //1.上级用户本月收益 ++ AccountInfo beIntivedUserAccount = accountMapper.getByUserId(inviteUserId); BigDecimal earningsMonth = beIntivedUserAccount.getEarningsMonth(); earningsMonth = earningsMonth.add(cultivatingPrize); beIntivedUserAccount.setEarningsMonth(earningsMonth); BigDecimal earningsTotal = beIntivedUserAccount.getEarningsTotal(); earningsTotal = earningsTotal.add(cultivatingPrize); beIntivedUserAccount.setEarningsTotal(earningsTotal); accountMapper.updateEarningsMonthAndEarningsTotalByid(beIntivedUserAccount); //2.交易流水新增一条数据 TradeRecord tradeRecord = new TradeRecord(); tradeRecord.setUserId(inviteUserId); tradeRecord.setMoney(cultivatingPrize); tradeRecord.setTradeNo(null); tradeRecord.setTradeType(TradeRecordEnum.CULTIVATING_PRIZE.getCode()); tradeRecordMapper.add(tradeRecord); //3.修改培育奖记录状态 ==1 farmer = 1; cultivatingPrizeInfo.setSeedling(farmer); cultivatingPrizeInfoMapper.updateById(cultivatingPrizeInfo); } } else if (6 == level) { int forestStart = cultivatingPrizeInfo.getForestStart(); //用户等级对应的培育奖金额 BigDecimal cultivatingPrize = cultivatingPrizeMapper.getcultivatingPrizeByUserLevel(level).getCultivatingPrize(); if (1 != forestStart) { //给上级用户幼苗等级培育奖 //1.上级用户本月收益 ++ AccountInfo beIntivedUserAccount = accountMapper.getByUserId(inviteUserId); BigDecimal earningsMonth = beIntivedUserAccount.getEarningsMonth(); earningsMonth = earningsMonth.add(cultivatingPrize); beIntivedUserAccount.setEarningsMonth(earningsMonth); BigDecimal earningsTotal = beIntivedUserAccount.getEarningsTotal(); earningsTotal = earningsTotal.add(cultivatingPrize); beIntivedUserAccount.setEarningsTotal(earningsTotal); accountMapper.updateEarningsMonthAndEarningsTotalByid(beIntivedUserAccount); //2.交易流水新增一条数据 TradeRecord tradeRecord = new TradeRecord(); tradeRecord.setUserId(inviteUserId); tradeRecord.setMoney(cultivatingPrize); tradeRecord.setTradeNo(null); tradeRecord.setTradeType(TradeRecordEnum.CULTIVATING_PRIZE.getCode()); tradeRecordMapper.add(tradeRecord); //3.修改培育奖记录状态 ==1 forestStart = 1; cultivatingPrizeInfo.setSeedling(forestStart); cultivatingPrizeInfoMapper.updateById(cultivatingPrizeInfo); } } else if (7 == level) { int partner = cultivatingPrizeInfo.getPartner(); //用户等级对应的培育奖金额 BigDecimal cultivatingPrize = cultivatingPrizeMapper.getcultivatingPrizeByUserLevel(level).getCultivatingPrize(); if (1 != partner) { //给上级用户幼苗等级培育奖 //1.上级用户本月收益 ++ AccountInfo beIntivedUserAccount = accountMapper.getByUserId(inviteUserId); BigDecimal earningsMonth = beIntivedUserAccount.getEarningsMonth(); earningsMonth = earningsMonth.add(cultivatingPrize); beIntivedUserAccount.setEarningsMonth(earningsMonth); BigDecimal earningsTotal = beIntivedUserAccount.getEarningsTotal(); earningsTotal = earningsTotal.add(cultivatingPrize); beIntivedUserAccount.setEarningsTotal(earningsTotal); accountMapper.updateEarningsMonthAndEarningsTotalByid(beIntivedUserAccount); //2.交易流水新增一条数据 TradeRecord tradeRecord = new TradeRecord(); tradeRecord.setUserId(inviteUserId); tradeRecord.setMoney(cultivatingPrize); tradeRecord.setTradeNo(null); tradeRecord.setTradeType(TradeRecordEnum.CULTIVATING_PRIZE.getCode()); tradeRecordMapper.add(tradeRecord); //3.修改培育奖记录状态 ==1 partner = 1; cultivatingPrizeInfo.setSeedling(partner); cultivatingPrizeInfoMapper.updateById(cultivatingPrizeInfo); } } } }