src/main/java/cc/mrbird/febs/mall/service/impl/AgentServiceImpl.java
@@ -50,14 +50,9 @@ List<String> ids = StrUtil.split(member.getReferrerIds(), ','); List<MallMember> parentMembers = memberMapper.selectByInviteIds(ids); for (MallMember parent : parentMembers) { /** * 升级到董事就无法升级了 */ String nextLevelName = MemberLevelEnum.NORMAL.getNextLevel(parent.getLevel()); int levelCode = MemberLevelEnum.NORMAL.getLevelCode(nextLevelName); if(levelCode == 8){ //level为v6,升级董事,则看团队下有没有两个V6 List<MallMember> mallMemberTeamMembers = memberMapper.selectAllChildAgentListByInviteId(parent.getInviteId()); if(CollUtil.isNotEmpty(mallMemberTeamMembers)){ List<MallMember> levelV6List = mallMemberTeamMembers.stream() .filter(teamMember -> teamMember.getLevel().equals(MemberLevelEnum.V6.getType())) .collect(Collectors.toList()); @@ -68,6 +63,12 @@ } continue; } /** * 升级到董事就无法升级了 */ String nextLevelName = MemberLevelEnum.NORMAL.getNextLevel(parent.getLevel()); int levelCode = MemberLevelEnum.NORMAL.getLevelCode(nextLevelName); DataDictionaryCustom newLevelDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode("AGENT_PERK_SET", nextLevelName); @@ -294,32 +295,15 @@ */ if(StrUtil.isNotEmpty(mallMember.getReferrerIds())){ //团队补贴对象 List<MallMember> mallMemberTeamPerk = new ArrayList<>(); // List<MallMember> mallMemberTeamPerk = new ArrayList<>(); String referrerIds = mallMember.getReferrerIds(); List<String> referrerIdList = StrUtil.splitTrim(referrerIds, ","); if(CollUtil.isNotEmpty(referrerIdList)){ List<MallMember> mallMembers = mallMemberMapper.selectByInviteIds(referrerIdList); /** * 根据等级分组,获取对应的<级别,会员数组>map */ Map<String, List<MallMember>> collect = mallMembers.stream().collect(Collectors.groupingBy(MallMember::getLevel)); Set<String> set = collect.keySet(); // 得到所有key的集合 for (String key : set) { /** * 团队补贴从v1到v6 */ int compareMin = MemberLevelEnum.V1.compareLevel(key, MemberLevelEnum.V1.getType()); int compareMax = MemberLevelEnum.V1.compareLevel(MemberLevelEnum.V6.getType(), key); if(compareMin >= 1 && compareMax >= 1){ List<MallMember> value = collect.get(key); mallMemberTeamPerk.add(value.get(0)); } } } List<MallMember> mallMemberTeamPerk = mallMemberMapper.selectByInviteIds(referrerIdList); if(CollUtil.isNotEmpty(mallMemberTeamPerk)){ String levelNormal = MemberLevelEnum.NORMAL.getType(); String levelNormal = MemberLevelEnum.V1.getType(); BigDecimal cashPercentNormal = BigDecimal.ZERO; BigDecimal scorePercentNormal = BigDecimal.ZERO; @@ -330,11 +314,12 @@ for(MallMember teamPerkMember : mallMemberTeamPerk){ String level = teamPerkMember.getLevel(); //比较两个级别的大小,level大于levelNormal返回1 int compareLevel = MemberLevelEnum.V1.compareLevel(level, levelNormal); if(compareLevel == 1){ int compareMin = MemberLevelEnum.V1.compareLevel(level, levelNormal); int compareMax = MemberLevelEnum.V1.compareLevel(MemberLevelEnum.V6.getType(), level); if(compareMin >= 1 && compareMax >= 1){ Long teamPerkMemberId = teamPerkMember.getId(); DataDictionaryCustom teamPerkMemberDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode( MemberLevelEnum.V1.getType(), level); "AGENT_PERK_SET", level); AdminAgentInfo adminAgentInfo = JSONObject.parseObject(teamPerkMemberDic.getValue(), AdminAgentInfo.class); BigDecimal cashPercent = adminAgentInfo.getCashPercent().multiply(AppContants.PERCENTAGE); @@ -367,11 +352,34 @@ orderNo); } levelNormal = level; cashPercentNormal = cashPercent; scorePercentNormal = scorePercent; cashPercentNormal = adminAgentInfo.getCashPercent().multiply(AppContants.PERCENTAGE); scorePercentNormal = adminAgentInfo.getScorePercent().multiply(AppContants.PERCENTAGE); } } } // for(MallMember levelMember : mallMembers){ // String level = levelMember.getLevel(); // } // /** // * 根据等级分组,获取对应的<级别,会员数组>map todo 目前获取到的levelMember是无序的 // */ // Map<String, List<MallMember>> collect = mallMembers.stream().collect(Collectors.groupingBy(MallMember::getLevel)); // Set<String> set = collect.keySet(); // 得到所有key的集合 // for (String key : set) { // /** // * 团队补贴从v1到v6 // */ // int compareMin = MemberLevelEnum.V1.compareLevel(key, MemberLevelEnum.V1.getType()); // int compareMax = MemberLevelEnum.V1.compareLevel(MemberLevelEnum.V6.getType(), key); // if(compareMin >= 1 && compareMax >= 1){ // List<MallMember> value = collect.get(key); // mallMemberTeamPerk.add(value.get(0)); // } // } } } /** src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallMemberServiceImpl.java
@@ -107,16 +107,16 @@ throw new FebsException("邀请码不存在"); } /** * 设置成普通会员,则不允许推广 * 设置成粉丝,则不允许推广 */ if(inviteMember.getLevel().equals(MemberLevelEnum.FANS.getType())){ throw new FebsException("邀请码不能推广"); } //购买套餐产生业绩,才能推广会员 List<MallAchieveRecord> mallAchieveRecordList = mallAchieveRecordMapper.selectByMemberId(inviteMember.getId()); if(CollUtil.isEmpty(mallAchieveRecordList)){ throw new FebsException("邀请码不能推广"); } // List<MallAchieveRecord> mallAchieveRecordList = mallAchieveRecordMapper.selectByMemberId(inviteMember.getId()); // if(CollUtil.isEmpty(mallAchieveRecordList)){ // throw new FebsException("邀请码不能推广"); // } mallMember.setReferrerId(registerDto.getInviteId()); src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java
@@ -326,35 +326,10 @@ orderInfo.setStatus(OrderStatusEnum.WAIT_SHIPPING.getValue()); orderInfo.setPayTime(new Date()); orderInfo.setPayResult("1"); this.baseMapper.updateById(orderInfo); //新增业绩,第一次购买套餐则升级用户为普通会员 boolean hasTc = false; BigDecimal achieveAmount = BigDecimal.ZERO; List<MallOrderItem> orderItems = this.baseMapper.getMallOrderItemByOrderId(orderInfo.getId()); if (CollUtil.isNotEmpty(orderItems)) { for (MallOrderItem orderItem : orderItems) { MallGoods mallGoods = mallGoodsMapper.selectById(orderItem.getGoodsId()); MallGoodsSku sku = mallGoodsSkuMapper.selectById(orderItem.getSkuId()); if (mallGoods.getIsNormal() == 2) { hasTc = true; achieveAmount = achieveAmount.add(sku.getPresentPrice().multiply(new BigDecimal(orderItem.getCnt()))); } } } if (hasTc){ if(achieveAmount.compareTo(BigDecimal.ZERO) > 0) { // 添加业绩 MallAchieveRecord mallAchieveRecord = new MallAchieveRecord(); mallAchieveRecord.setMemberId(member.getId()); mallAchieveRecord.setAmount(achieveAmount); mallAchieveRecord.setAchieveTime(orderInfo.getPayTime()); mallAchieveRecord.setOrderId(orderInfo.getId()); mallAchieveRecord.setIsNormal(2); mallAchieveRecord.setPayTime(orderInfo.getPayTime()); mallAchieveRecordMapper.insert(mallAchieveRecord); } } addAchieveAndUpdateLevel(orderInfo.getId(),member.getId()); mallMoneyFlowService.addMoneyFlow(member.getId(), orderInfo.getAmount().negate(), MoneyFlowTypeEnum.PAY.getValue(), orderInfo.getOrderNo(), FlowTypeEnum.BALANCE.getValue()); agentProducer.sendAutoLevelUpMsg(member.getId()); @@ -451,6 +426,48 @@ return map; } /** * 新增业绩,第一次购买套餐则升级用户为普通会员 * @param orderId * @param memberId */ private void addAchieveAndUpdateLevel(Long orderId,Long memberId){ MallOrderInfo orderInfo = this.baseMapper.selectById(orderId); MallMember member = memberMapper.selectById(memberId); boolean hasTc = false; BigDecimal achieveAmount = BigDecimal.ZERO; List<MallOrderItem> orderItems = this.baseMapper.getMallOrderItemByOrderId(orderId); if (CollUtil.isNotEmpty(orderItems)) { for (MallOrderItem orderItem : orderItems) { MallGoods mallGoods = mallGoodsMapper.selectById(orderItem.getGoodsId()); MallGoodsSku sku = mallGoodsSkuMapper.selectById(orderItem.getSkuId()); if (mallGoods.getIsNormal() == 2) { hasTc = true; achieveAmount = achieveAmount.add(sku.getPresentPrice().multiply(new BigDecimal(orderItem.getCnt()))); } } } if (hasTc){ if(achieveAmount.compareTo(BigDecimal.ZERO) > 0) { // 添加业绩 MallAchieveRecord mallAchieveRecord = new MallAchieveRecord(); mallAchieveRecord.setMemberId(memberId); mallAchieveRecord.setAmount(achieveAmount); mallAchieveRecord.setAchieveTime(orderInfo.getPayTime()); mallAchieveRecord.setOrderId(orderInfo.getId()); mallAchieveRecord.setIsNormal(2); mallAchieveRecord.setPayTime(orderInfo.getPayTime()); mallAchieveRecordMapper.insert(mallAchieveRecord); } if(member.getLevel().equals(MemberLevelEnum.FANS.getType())){ member.setLevel(MemberLevelEnum.NORMAL.getType()); memberMapper.updateById(member); } } } public static void main(String[] args) { String str = "{\"biz_code\":\"JS000000\",\"biz_msg\":\"成功\",\"data\":\"{\\\"order_status\\\":\\\"P2000\\\",\\\"jp_order_no\\\":\\\"100120220826446740396081496064\\\",\\\"err_msg\\\":\\\"短信验证码不符\\\",\\\"err_code\\\":\\\"CP110026\\\",\\\"sign_no\\\":\\\"\\\",\\\"mch_order_no\\\":\\\"NO_2022082618263952399\\\"}\",\"mch_no\":\"888118000001971\",\"rand_str\":\"an2w7ulf5ru6upkk5bdg441kdi3gnpvu\",\"resp_code\":\"SUCCESS\",\"sec_key\":\"\",\"sign\":\"NiJXRTSIZ9xZMUOwEHiEHdZXmgL2cHUU5WUa1NbMRRzui0DIiuZSW4e31LjnBxwVwmy3uuPMP+tqhY8VLyC8uCFOdGdZI7e72VuRvyvaiW7/sqCrsfgPOBEjiGE/CmSMRoEXv9HmqCyNBF6iHSEhQJql5Yge30dQdyB6xFfqjk0=\",\"sign_type\":\"2\"}"; src/main/resources/mapper/modules/MallMemberMapper.xml
@@ -388,7 +388,7 @@ <where> 1=1 <if test="type == 1"> and director = 1 and level= 'V_DIRECTOR' </if> <if test="type == 2"> and store_master = 1 src/main/resources/mapper/modules/MallMemberWalletMapper.xml
@@ -3,7 +3,7 @@ <mapper namespace="cc.mrbird.febs.mall.mapper.MallMemberWalletMapper"> <select id="selectWalletByMemberId" resultType="cc.mrbird.febs.mall.entity.MallMemberWallet"> select * from mall_member_wallet where member_id=#{memberId} for update select * from mall_member_wallet where member_id=#{memberId} </select> <update id="updateBalanceWithVersion"> src/main/resources/mapper/modules/MallMoneyFlowMapper.xml
@@ -122,7 +122,7 @@ <select id="selectCommissionIncome" resultType="java.math.BigDecimal"> select ifnull(sum(amount),0) from mall_money_flow where flow_type = #{flowType} and member_id = #{memberId} where flow_type = #{flowType} and member_id = #{memberId} and amount > 0 <if test="type == 1"> and date_format(created_time, '%Y-%m-%d') = date_format(#{date}, '%Y-%m-%d') </if> src/test/java/cc/mrbird/febs/ProfitTest.java
@@ -42,7 +42,8 @@ @Test public void dynamicProfit() { memberProfitService.dynamicProfit(21L); // agentService.returnMoneyToAgent(578L); agentService.autoUpAgentLevel(640L); } @Test public void agentProfit() {