Compare commits
	
		
			14 Commits
		
	
	
		
			849f8e6128
			...
			8eebb3fdfa
		
	
	| Author | SHA1 | Date | 
|---|---|---|
|  | 8eebb3fdfa | |
|  | e064d87223 | |
|  | dc70bc6db7 | |
|  | c589c2461c | |
|  | 99317636cc | |
|  | fea41d6ccd | |
|  | 3873adb2cd | |
|  | d2188ab2b0 | |
|  | 1f8d4a2b50 | |
|  | dcead29539 | |
|  | 44e36f5abe | |
|  | ccb3e91a54 | |
|  | 896597ac53 | |
|  | 3b87d98457 | 
|  | @ -32,49 +32,10 @@ import java.util.List; | |||
| public class ApiCuMemberBonusController extends BaseController { | ||||
| 
 | ||||
|     @Autowired | ||||
|     private ICuMemberBonusService cuMemberBonusService; | ||||
|     private ICuMemberBonusService iCuMemberBonusService; | ||||
| 
 | ||||
|     /** | ||||
|      * 查询会员某个时间段内的奖金,默认查询15天内,查询直推 | ||||
|      */ | ||||
|     @PostMapping("/query-bonus-first") | ||||
|     public TableDataInfo listFirstRepurchaseBonus(@RequestBody BonusParam bonusParam) { | ||||
|         setBonusParam(bonusParam); | ||||
|         List<CuMemberBonusExt> cuMemberBonusList = cuMemberBonusService.queryMemberBonusVoByCondition(bonusParam); | ||||
|         List<MemberBonusFirstPurchaseVO> firstPurchaseVOList = new ArrayList<>(); | ||||
|         cuMemberBonusList.forEach(cuMemberBonus -> { | ||||
|             MemberBonusFirstPurchaseVO memberBonusFirstPurchaseVO = BeanUtil.copyProperties(cuMemberBonus, MemberBonusFirstPurchaseVO.class, "settleDate"); | ||||
|             packageSettleDate(cuMemberBonus, memberBonusFirstPurchaseVO); | ||||
| //            BigDecimal serviceSpend = ComputeUtil.computeSubtract(ComputeUtil.computeAddNum(memberBonusFirstPurchaseVO.getDirectIncome(), memberBonusFirstPurchaseVO.getExpandIncome(), | ||||
| //                            memberBonusFirstPurchaseVO.getCoachIncome(), memberBonusFirstPurchaseVO.getServiceIncome(), memberBonusFirstPurchaseVO.getShareIncome()), | ||||
| //                    memberBonusFirstPurchaseVO.getPurRealSubtotal()); | ||||
| //            memberBonusFirstPurchaseVO.setBackPoints(ComputeUtil.computeMultiplyHalf(serviceSpend)); | ||||
| //            memberBonusFirstPurchaseVO.setServiceSpend(ComputeUtil.computeMultiplyHalf(serviceSpend)); | ||||
|             //            if(DateUtils.compareDate(cuMemberBonus.getSettleDate(), DateUtils.parseStringToDate("2024-09-09"))>0) { | ||||
|             BigDecimal serviceSpend = ComputeUtil.computeSubtract(ComputeUtil.computeAddNum(memberBonusFirstPurchaseVO.getDirectIncome(), memberBonusFirstPurchaseVO.getExpandIncome(), | ||||
|                     memberBonusFirstPurchaseVO.getCoachIncome(), memberBonusFirstPurchaseVO.getServiceIncome(), memberBonusFirstPurchaseVO.getShareIncome(), | ||||
|                     memberBonusFirstPurchaseVO.getRepurExpandIncome(), memberBonusFirstPurchaseVO.getRepurRangeIncome(), memberBonusFirstPurchaseVO.getRepurPushIncome()), | ||||
|                     ComputeUtil.computeAdd(memberBonusFirstPurchaseVO.getPurRealSubtotal(), memberBonusFirstPurchaseVO.getRepurRealSubtotal())); | ||||
|             memberBonusFirstPurchaseVO.setBackPoints(ComputeUtil.computeMultiplyHalf(serviceSpend)); | ||||
|             memberBonusFirstPurchaseVO.setServiceSpend(ComputeUtil.computeMultiplyHalf(serviceSpend)); | ||||
|             memberBonusFirstPurchaseVO.setExpandIncome(ComputeUtil.computeAddNum(memberBonusFirstPurchaseVO.getExpandIncome(), memberBonusFirstPurchaseVO.getRepurExpandIncome(), memberBonusFirstPurchaseVO.getRepurPushIncome())); | ||||
|             memberBonusFirstPurchaseVO.setPurRealSubtotal(ComputeUtil.computeAdd(memberBonusFirstPurchaseVO.getPurRealSubtotal(), memberBonusFirstPurchaseVO.getRepurRealSubtotal())); | ||||
| //            }else{ | ||||
| //                BigDecimal serviceSpend = ComputeUtil.computeSubtract(ComputeUtil.computeAddNum(memberBonusFirstPurchaseVO.getDirectIncome(), memberBonusFirstPurchaseVO.getExpandIncome(), | ||||
| //                                memberBonusFirstPurchaseVO.getCoachIncome(), memberBonusFirstPurchaseVO.getServiceIncome(), memberBonusFirstPurchaseVO.getShareIncome(), | ||||
| //                                memberBonusFirstPurchaseVO.getRepurExpandIncome(), memberBonusFirstPurchaseVO.getRepurExpandIncome()), | ||||
| //                        ComputeUtil.computeAdd(memberBonusFirstPurchaseVO.getPurRealSubtotal(), memberBonusFirstPurchaseVO.getRepurRealSubtotal())); | ||||
| //                memberBonusFirstPurchaseVO.setBackPoints(ComputeUtil.computeMultiplyHalf(serviceSpend)); | ||||
| //                memberBonusFirstPurchaseVO.setServiceSpend(ComputeUtil.computeMultiplyHalf(serviceSpend)); | ||||
| //            } | ||||
|             memberBonusFirstPurchaseVO.setPurRealSubtotal(ComputeUtil.computeAdd(memberBonusFirstPurchaseVO.getPurRealSubtotal(), memberBonusFirstPurchaseVO.getGlobalPoints())); | ||||
|             firstPurchaseVOList.add(memberBonusFirstPurchaseVO); | ||||
|         }); | ||||
|         return getDataTable(firstPurchaseVOList); | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * 查询会员实时奖金,当日的奖金 | ||||
|      * 新零售实时奖金:查询会员实时奖金,当日的奖金 | ||||
|      */ | ||||
|     @PostMapping("/query-current-bonus") | ||||
|     public TableDataInfo listCurrentBonus(@RequestBody BonusParam bonusParam) { | ||||
|  | @ -84,7 +45,7 @@ public class ApiCuMemberBonusController extends BaseController { | |||
|         bonusParam.setEndDate(DateUtils.afterDate(1, ChronoUnit.DAYS, DateUtils.currentDate())); | ||||
|         bonusParam.setGrantStatus(EGrantStatus.SETTLED.getValue()); | ||||
| 
 | ||||
|         List<CuMemberBonusExt> cuMemberBonusList = cuMemberBonusService.queryMemberSecondBonusVoByCondition(bonusParam); | ||||
|         List<CuMemberBonusExt> cuMemberBonusList = iCuMemberBonusService.queryMemberSecondBonusVoByCondition(bonusParam); | ||||
|         List<MemberBonusVO> memberBonusVOList = new ArrayList<>(); | ||||
|         cuMemberBonusList.forEach(cuMemberBonus -> { | ||||
|             if (ComputeUtil.compareValue(cuMemberBonus.getRealIncomeTotal())) { | ||||
|  | @ -102,23 +63,41 @@ public class ApiCuMemberBonusController extends BaseController { | |||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * 查询会员昨天奖金的值 | ||||
|      * 新零售实时奖金:查询会员奖金列表 | ||||
|      */ | ||||
|     @PostMapping("/query-bonus-first") | ||||
|     public TableDataInfo listFirstRepurchaseBonus(@RequestBody BonusParam bonusParam) { | ||||
|         setBonusParam(bonusParam); | ||||
| 
 | ||||
|         startPage(); | ||||
|         List<CuMemberBonusExt> cuMemberBonusList = iCuMemberBonusService.queryMemberBonusVoByCondition(bonusParam); | ||||
| 
 | ||||
|         List<MemberBonusFirstPurchaseVO> firstPurchaseVOList = new ArrayList<>(); | ||||
|         cuMemberBonusList.forEach(cuMemberBonus -> { | ||||
|             MemberBonusFirstPurchaseVO memberBonusFirstPurchaseVO = BeanUtil.copyProperties(cuMemberBonus, MemberBonusFirstPurchaseVO.class, "settleDate"); | ||||
|             packageSettleDate(cuMemberBonus, memberBonusFirstPurchaseVO); | ||||
|             firstPurchaseVOList.add(memberBonusFirstPurchaseVO); | ||||
|         }); | ||||
|         return getDataTable(firstPurchaseVOList); | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * 新零售实时奖金:查询会员昨日奖金汇总 | ||||
|      */ | ||||
|     @PostMapping("/query-bonus-total") | ||||
|     public TableDataInfo lisBonusTotal(@RequestBody BonusParam bonusParam) { | ||||
|         bonusParam.setPkCountry(SecurityUtils.getPkCountry()); | ||||
|         bonusParam.setPkMember(SecurityUtils.getUserId()); | ||||
| //        bonusParam.setStartDate(DateUtils.beforeDate(1, ChronoUnit.DAYS)); | ||||
| //        bonusParam.setEndDate(DateUtils.currentDate()); | ||||
|         bonusParam.setStartDate(DateUtils.currentDate()); | ||||
|         bonusParam.setGrantStatus(EGrantStatus.SETTLED.getValue()); | ||||
|         bonusParam.setEndDate(DateUtils.afterDate(1, ChronoUnit.DAYS)); | ||||
|         List<CuMemberBonusExt> cuMemberBonusList = cuMemberBonusService.queryMemberBonusTotalByCondition(bonusParam); | ||||
|         bonusParam.setEndDate(DateUtils.currentDate()); | ||||
|         bonusParam.setStartDate(DateUtils.beforeDate(1, ChronoUnit.DAYS, bonusParam.getEndDate())); | ||||
| 
 | ||||
|         List<CuMemberBonusExt> cuMemberBonusList = iCuMemberBonusService.queryMemberBonusTotalByCondition(bonusParam); | ||||
|         MemberRealIncomeVO memberRealIncomeVO = new MemberRealIncomeVO(); | ||||
|         if (CollectionUtil.isEmpty(cuMemberBonusList)) { | ||||
|             memberRealIncomeVO.setRealIncomeTotal(BigDecimal.ZERO); | ||||
|         } else { | ||||
|             memberRealIncomeVO.setRealIncomeTotal(ComputeUtil.computeAdd(cuMemberBonusList.get(0).getRealIncomeTotal(), cuMemberBonusList.get(0).getBackPoints())); | ||||
| //            memberRealIncomeVO.setRealIncomeTotal(ComputeUtil.computeAdd(cuMemberBonusList.get(0).getRealIncomeTotal(), cuMemberBonusList.get(0).getBackPoints())); | ||||
|             memberRealIncomeVO.setRealIncomeTotal(cuMemberBonusList.get(0).getRealIncomeTotal()); | ||||
|         } | ||||
|         return getDataTable(Collections.singletonList(memberRealIncomeVO)); | ||||
|     } | ||||
|  | @ -129,7 +108,7 @@ public class ApiCuMemberBonusController extends BaseController { | |||
|     @PostMapping("/query-bonus-repurchase") | ||||
|     public TableDataInfo listRepurchaseBonus(@RequestBody BonusParam bonusParam) { | ||||
|         setBonusParam(bonusParam); | ||||
|         List<CuMemberBonusExt> cuMemberBonusList = cuMemberBonusService.queryMemberBonusVoByCondition(bonusParam); | ||||
|         List<CuMemberBonusExt> cuMemberBonusList = iCuMemberBonusService.queryMemberBonusVoByCondition(bonusParam); | ||||
|         List<MemberBonusPurchaseVO> memberBonusPurchaseVoList = new ArrayList<>(); | ||||
|         cuMemberBonusList.forEach(cuMemberBonus -> { | ||||
|             MemberBonusPurchaseVO memberBonusPurchaseVO = BeanUtil.copyProperties(cuMemberBonus, MemberBonusPurchaseVO.class, "settleDate"); | ||||
|  | @ -141,7 +120,6 @@ public class ApiCuMemberBonusController extends BaseController { | |||
|                     memberBonusPurchaseVO.getRetailRealSubtotal()); | ||||
|             memberBonusPurchaseVO.setBackPoints(serviceSpend); | ||||
|             memberBonusPurchaseVO.setRetailBenefitIncome(ComputeUtil.computeAdd(memberBonusPurchaseVO.getRetailBenefitIncome(), memberBonusPurchaseVO.getRetailBenefitAvgIncome())); | ||||
| //            memberBonusPurchaseVO.setServiceSpend(ComputeUtil.computeMultiplyHalf(serviceSpend)); | ||||
|             memberBonusPurchaseVoList.add(memberBonusPurchaseVO); | ||||
|         }); | ||||
|         return getDataTable(memberBonusPurchaseVoList); | ||||
|  | @ -153,7 +131,7 @@ public class ApiCuMemberBonusController extends BaseController { | |||
|     @PostMapping("/query-bonus-hi-fun") | ||||
|     public TableDataInfo listHiFunBonus(@RequestBody BonusParam bonusParam) { | ||||
|         setBonusParam(bonusParam); | ||||
|         List<CuMemberBonusExt> cuMemberBonusList = cuMemberBonusService.queryMemberBonusVoByCondition(bonusParam); | ||||
|         List<CuMemberBonusExt> cuMemberBonusList = iCuMemberBonusService.queryMemberBonusVoByCondition(bonusParam); | ||||
|         List<MemberBonusHiFunVO> bonusHiFunVoList = new ArrayList<>(); | ||||
|         cuMemberBonusList.forEach(cuMemberBonus -> { | ||||
|             MemberBonusHiFunVO memberBonusHiFunVO = BeanUtil.copyProperties(cuMemberBonus, MemberBonusHiFunVO.class, "settleDate"); | ||||
|  | @ -177,6 +155,7 @@ public class ApiCuMemberBonusController extends BaseController { | |||
|     private void setBonusParam(@RequestBody BonusParam bonusParam) { | ||||
|         bonusParam.setPkCountry(SecurityUtils.getPkCountry()); | ||||
|         bonusParam.setPkMember(SecurityUtils.getUserId()); | ||||
| 
 | ||||
|         Date startDate = DateUtils.beforeDate(15, ChronoUnit.DAYS, DateUtils.currentDate()); | ||||
|         if (bonusParam.getStartDate() == null) { | ||||
|             bonusParam.setStartDate(startDate); | ||||
|  | @ -197,14 +176,7 @@ public class ApiCuMemberBonusController extends BaseController { | |||
|     public TableDataInfo listBonusSource(@RequestBody BonusParam bonusParam) { | ||||
|         setBonusParam(bonusParam); | ||||
|         startPage(); | ||||
| //        List<MemberBonusVO> memberBonusVoList = new ArrayList<>(); | ||||
|         TableDataInfo tableDataInfo = cuMemberBonusService.queryMemberBonusDetailVoByCondition(bonusParam); | ||||
| //        cuMemberBonusList.forEach(cuMemberBonus -> { | ||||
| //            MemberBonusVO memberBonusVO = BeanUtil.copyProperties(cuMemberBonus, MemberBonusVO.class); | ||||
| //            memberBonusVoList.add(memberBonusVO); | ||||
| //        }); | ||||
| //        TableDataInfo dataTable = getDataTable(cuMemberBonusList); | ||||
| //        dataTable.setRows(memberBonusVoList); | ||||
|         TableDataInfo tableDataInfo = iCuMemberBonusService.queryMemberBonusDetailVoByCondition(bonusParam); | ||||
|         return tableDataInfo; | ||||
|     } | ||||
| 
 | ||||
|  |  | |||
|  | @ -9,12 +9,7 @@ import org.apache.ibatis.annotations.Param; | |||
| import java.util.List; | ||||
| 
 | ||||
| /** | ||||
|  * <p> | ||||
|  * 会员奖金-会员奖金汇总表 Mapper 接口 | ||||
|  * </p> | ||||
|  * | ||||
|  * @author hzs | ||||
|  * @since 2022-11-11 | ||||
|  */ | ||||
| public interface CuMemberBonusMapper extends BaseMapper<CuMemberBonus> { | ||||
| 
 | ||||
|  | @ -22,9 +17,6 @@ public interface CuMemberBonusMapper extends BaseMapper<CuMemberBonus> { | |||
|      * 批量获取cuMemberBonus主键 | ||||
|      * | ||||
|      * @param rowNum 数量 | ||||
|      * @return: List<Integer> | ||||
|      * @Author: sui q | ||||
|      * @Date: 2022/12/13 13:47 | ||||
|      */ | ||||
|     List<Long> batchQueryCuMemberBonusSeq(Integer rowNum); | ||||
| 
 | ||||
|  | @ -32,9 +24,6 @@ public interface CuMemberBonusMapper extends BaseMapper<CuMemberBonus> { | |||
|      * 根据查询条件查询会员奖金 | ||||
|      * | ||||
|      * @param bonusParam 查询条件 | ||||
|      * @return: List<MemberBonusVO> | ||||
|      * @Author: sui q | ||||
|      * @Date: 2023/1/13 11:27 | ||||
|      */ | ||||
|     List<CuMemberBonus> queryMemberBonusTotalByCondition(BonusParam bonusParam); | ||||
| 
 | ||||
|  | @ -42,9 +31,6 @@ public interface CuMemberBonusMapper extends BaseMapper<CuMemberBonus> { | |||
|      * 根据查询条件查询会员奖金 | ||||
|      * | ||||
|      * @param bonusParam 查询条件 | ||||
|      * @return: List<MemberBonusVO> | ||||
|      * @Author: sui q | ||||
|      * @Date: 2023/1/13 11:27 | ||||
|      */ | ||||
|     List<CuMemberBonusExt> queryMemberBonusByCondition(BonusParam bonusParam); | ||||
| 
 | ||||
|  | @ -52,30 +38,19 @@ public interface CuMemberBonusMapper extends BaseMapper<CuMemberBonus> { | |||
|      * 根据查询条件查询会员奖金 | ||||
|      * | ||||
|      * @param bonusParam 查询条件 | ||||
|      * @return: List<MemberBonusVO> | ||||
|      * @Author: sui q | ||||
|      * @Date: 2023/1/13 11:27 | ||||
|      */ | ||||
|     List<CuMemberBonusExt> queryMemberBonusByConditionForServer(@Param("bonusParam") BonusParam bonusParam); | ||||
| 
 | ||||
|     /** | ||||
|      * @description: 查询奖金明细合计(最后一行) | ||||
|      * @author: zhang jing | ||||
|      * @date: 2024/10/12 14:06 | ||||
|      * @param: [bonusParam] | ||||
|      * @return: com.hzs.common.domain.member.ext.CuMemberBonusExt | ||||
|      * 查询奖金明细合计(最后一行) | ||||
|      **/ | ||||
|     CuMemberBonusExt queryMemberBonusByConditionForServerSum(@Param("bonusParam") BonusParam bonusParam); | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
|     /** | ||||
|      * 根据查询条件查询会员奖金 | ||||
|      * | ||||
|      * @param bonusParam 查询条件 | ||||
|      * @return: List<MemberBonusVO> | ||||
|      * @Author: sui q | ||||
|      * @Date: 2023/1/13 11:27 | ||||
|      */ | ||||
|     List<CuMemberBonusExt> queryBonusTotalVoByConditionForServer(@Param("bonusParam") BonusParam bonusParam); | ||||
| 
 | ||||
|  | @ -83,9 +58,6 @@ public interface CuMemberBonusMapper extends BaseMapper<CuMemberBonus> { | |||
|      * 删除会员奖金汇总表 | ||||
|      * | ||||
|      * @param period 结算期间 | ||||
|      * @return: void | ||||
|      * @Author: sui q | ||||
|      * @Date: 2022/12/13 11:54 | ||||
|      */ | ||||
|     void deleteCuMemberBonus(Integer period); | ||||
| 
 | ||||
|  | @ -93,9 +65,6 @@ public interface CuMemberBonusMapper extends BaseMapper<CuMemberBonus> { | |||
|      * 批量插入会员奖金主表 | ||||
|      * | ||||
|      * @param cuMemberBonusList 会员奖金 | ||||
|      * @return: void | ||||
|      * @Author: sui q | ||||
|      * @Date: 2022/12/13 13:56 | ||||
|      */ | ||||
|     void batchInsertCuMemberBonus(@Param("cuMemberBonusList") List<?> cuMemberBonusList); | ||||
| 
 | ||||
|  | @ -103,9 +72,6 @@ public interface CuMemberBonusMapper extends BaseMapper<CuMemberBonus> { | |||
|      * 批量插入会员奖金主表 | ||||
|      * | ||||
|      * @param cuMemberBonusList 会员奖金 | ||||
|      * @return: void | ||||
|      * @Author: sui q | ||||
|      * @Date: 2022/12/13 13:56 | ||||
|      */ | ||||
|     void insertOrUpdateCuMemberBonus(@Param("cuMemberBonusList") List<CuMemberBonus> cuMemberBonusList); | ||||
| 
 | ||||
|  | @ -114,27 +80,20 @@ public interface CuMemberBonusMapper extends BaseMapper<CuMemberBonus> { | |||
|      * | ||||
|      * @param grantStatus    发放状态 | ||||
|      * @param oldGrantStatus 原来的发放状态 | ||||
|      * @return: Boolean | ||||
|      * @Author: sui q | ||||
|      * @Date: 2023/3/20 17:21 | ||||
|      */ | ||||
|     Integer updateCuMemberBonusStatus(@Param("pkCountry") Integer pkCountry, @Param("grantStatus") Integer grantStatus, | ||||
|                                       @Param("oldGrantStatus") Integer oldGrantStatus, @Param("startPeriod") Integer startPeriod, | ||||
|                                       @Param("endPeriod") Integer endPeriod); | ||||
| 
 | ||||
|     /* | ||||
|      * @description: 回退极差奖金 | ||||
|      * @author: sui q | ||||
|      * @date: 2024/12/25 17:06 | ||||
|      * @param: null null | ||||
|      **/ | ||||
|     /** | ||||
|      * 回退极差奖金 | ||||
|      */ | ||||
|     void mergeBackRangeBonusIncome(@Param("pkOrder") Long pkOrder, @Param("bonusValue") Integer bonusValue); | ||||
| 
 | ||||
|     /* | ||||
|      * @description: 查询会员一周周期的拓展累计,复购拓展累计 | ||||
|      * @author: sui q | ||||
|      * @date: 2023/7/15 14:26 | ||||
|      * @param: null null | ||||
|      **/ | ||||
|     /** | ||||
|      * 查询会员一周周期的拓展累计,复购拓展累计 | ||||
|      */ | ||||
|     List<CuMemberBonus> queryWeekMemberBonus(@Param("startPeriod") int startPeriod, @Param("endPeriod") int endPeriod); | ||||
| 
 | ||||
|     void recalculateTeamNewBoxNum(@Param("pkId") Long pkId, @Param("retailsTableName") String retailsTableName); | ||||
| } | ||||
|  |  | |||
|  | @ -2,17 +2,12 @@ package com.hzs.bonus.bonus.param; | |||
| 
 | ||||
| import com.hzs.common.core.web.domain.BaseAuthorityEntity; | ||||
| import lombok.Data; | ||||
| import lombok.EqualsAndHashCode; | ||||
| 
 | ||||
| import java.util.Date; | ||||
| import java.util.List; | ||||
| 
 | ||||
| /** | ||||
|  * @Description: | ||||
|  * @Author: sui q | ||||
|  * @Time: 2023/1/13 9:44 | ||||
|  * @Classname: BonusParam | ||||
|  * @PackageName: com.hzs.member.bonus.param | ||||
|  */ | ||||
| @EqualsAndHashCode(callSuper = true) | ||||
| @Data | ||||
| public class BonusParam extends BaseAuthorityEntity { | ||||
| 
 | ||||
|  |  | |||
|  | @ -1,11 +1,11 @@ | |||
| package com.hzs.bonus.bonus.service; | ||||
| 
 | ||||
| import com.baomidou.mybatisplus.extension.service.IService; | ||||
| import com.hzs.bonus.bonus.param.BonusParam; | ||||
| import com.hzs.bonus.bonus.vo.MemberBonusVO; | ||||
| import com.hzs.common.core.web.page.TableDataInfo; | ||||
| import com.hzs.common.domain.member.bonus.CuMemberBonus; | ||||
| import com.hzs.common.domain.member.ext.CuMemberBonusExt; | ||||
| import com.hzs.bonus.bonus.param.BonusParam; | ||||
| import com.hzs.bonus.bonus.vo.MemberBonusVO; | ||||
| 
 | ||||
| import java.util.Date; | ||||
| import java.util.List; | ||||
|  | @ -165,4 +165,12 @@ public interface ICuMemberBonusService extends IService<CuMemberBonus> { | |||
|     void calculateBonusTotal(CuMemberBonusExt cuMemberBonusExt, CuMemberBonusExt memberBonusExt); | ||||
| 
 | ||||
|     CuMemberBonusExt initCuMemberBonus(); | ||||
| 
 | ||||
|     /** | ||||
|      * 用户激活后会抛出MQ | ||||
|      * 在此需要补偿该用户的当日秒结的团队新增 | ||||
|      * | ||||
|      * @param pkIdList | ||||
|      */ | ||||
|     void recalculateTeamNewBoxNum(List<Long> pkIdList); | ||||
| } | ||||
|  |  | |||
|  | @ -1355,8 +1355,8 @@ public class BonusSettleRangeHandle extends BonusSettleHandle { | |||
|                     } | ||||
|                     continue; | ||||
|                 } | ||||
|                 // 平级收益(商品价格 * 千分之五) -- 2位小数,四舍五入 | ||||
|                 sameBonusIncome = waresPrice.multiply(RetailConstants.SAME_RATIO).setScale(2, BigDecimal.ROUND_HALF_UP); | ||||
|                 // 平级收益(商品价格 * 千分之五) -- 6位小数,四舍五入 | ||||
|                 sameBonusIncome = waresPrice.multiply(RetailConstants.SAME_RATIO).setScale(6, BigDecimal.ROUND_HALF_UP); | ||||
|                 // 平级收益累计 | ||||
|                 beforeSameBonus = beforeSameBonus.add(sameBonusIncome); | ||||
|                 // 平级等级代数等级 | ||||
|  | @ -1601,7 +1601,7 @@ public class BonusSettleRangeHandle extends BonusSettleHandle { | |||
|         // 计算业绩(此处作为比例) | ||||
|         BigDecimal calAchieve = BigDecimal.ZERO; | ||||
|         for (SaOrderWaresExt saOrderWaresExt : saOrder.getOrderWaresExtList()) { | ||||
|             benefitIncome = benefitIncome.add(saOrderWaresExt.getWaresPrice().multiply(RetailConstants.SAME_RATIO)).setScale(2, BigDecimal.ROUND_HALF_UP); | ||||
|             benefitIncome = benefitIncome.add(saOrderWaresExt.getWaresPrice().multiply(RetailConstants.SAME_RATIO)).setScale(6, BigDecimal.ROUND_HALF_UP); | ||||
|             calAchieve = calAchieve.add(saOrderWaresExt.getWaresPrice()); | ||||
|         } | ||||
|         CuMemberBonusDetail cuMemberBonusDetail = packageBenefitIncome(bonusConfigDTO, period, cuMemberBonusMap, null, RetailConstants.SAME_RATIO, benefitIncome, | ||||
|  |  | |||
|  | @ -1,10 +1,12 @@ | |||
| package com.hzs.bonus.bonus.service.impl; | ||||
| 
 | ||||
| import cn.hutool.core.bean.BeanUtil; | ||||
| import cn.hutool.json.JSONUtil; | ||||
| import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; | ||||
| import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; | ||||
| import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; | ||||
| import com.github.pagehelper.PageInfo; | ||||
| import com.hzs.bonus.achieve.service.ICuMemberSettlePeriodService; | ||||
| import com.hzs.bonus.achieve.service.ICuMemberTreeService; | ||||
| import com.hzs.bonus.achieve.service.impl.CuMemberBonusSettle; | ||||
| import com.hzs.bonus.bonus.mapper.*; | ||||
|  | @ -14,15 +16,11 @@ import com.hzs.bonus.bonus.service.ICuMemberBonusService; | |||
| import com.hzs.bonus.bonus.vo.MemberBonusDetailSerVO; | ||||
| import com.hzs.bonus.bonus.vo.MemberBonusDetailVO; | ||||
| import com.hzs.bonus.bonus.vo.MemberBonusVO; | ||||
| import com.hzs.common.core.constant.HttpStatus; | ||||
| import com.hzs.common.core.constant.MemberBonusFieldConstants; | ||||
| import com.hzs.common.core.constant.MemberFieldConstants; | ||||
| import com.hzs.common.core.constant.SystemFieldConstants; | ||||
| import com.hzs.common.core.constant.*; | ||||
| import com.hzs.common.core.domain.R; | ||||
| import com.hzs.common.core.enums.*; | ||||
| import com.hzs.common.core.utils.ComputeUtil; | ||||
| import com.hzs.common.core.utils.DateUtils; | ||||
| import com.hzs.common.core.utils.StringUtils; | ||||
| import com.hzs.common.core.web.page.TableDataInfo; | ||||
| import com.hzs.common.domain.member.bonus.CuMemberBonus; | ||||
| import com.hzs.common.domain.member.ext.*; | ||||
|  | @ -38,6 +36,8 @@ import org.springframework.beans.factory.annotation.Autowired; | |||
| import org.springframework.stereotype.Service; | ||||
| 
 | ||||
| import java.math.BigDecimal; | ||||
| import java.time.LocalDate; | ||||
| import java.time.format.DateTimeFormatter; | ||||
| import java.time.temporal.ChronoUnit; | ||||
| import java.util.*; | ||||
| import java.util.stream.Collectors; | ||||
|  | @ -56,6 +56,9 @@ public class CuMemberBonusServiceImpl extends ServiceImpl<CuMemberBonusMapper, C | |||
|     @DubboReference | ||||
|     IBonusItemsServiceApi iBonusItemsServiceApi; | ||||
| 
 | ||||
|     @Autowired | ||||
|     private ICuMemberSettlePeriodService iCuMemberSettlePeriodService; | ||||
| 
 | ||||
|     private CuMemberBonusDetailMapper cuMemberBonusDetailMapper; | ||||
| 
 | ||||
|     private CuMemberBonusPushMapper cuMemberBonusPushMapper; | ||||
|  | @ -131,27 +134,28 @@ public class CuMemberBonusServiceImpl extends ServiceImpl<CuMemberBonusMapper, C | |||
| 
 | ||||
|     @Override | ||||
|     public List<CuMemberBonusExt> queryMemberBonusVoByCondition(BonusParam bonusParam) { | ||||
|         String value = iSystemConfigServiceApi.getBonusSystemConfig(bonusParam.getPkCountry(), ESystemConfig.EXPAND_CAP_METHOD.getKey()).getData(); | ||||
|         if (StringUtils.isNotEmpty(value) && Objects.equals(Integer.toString(EExpandCapMethod.WEEK_SETTLE.getValue()), value)) { | ||||
|             // 周结的话不能查询当前周的数据,只能查询上周的数据 | ||||
|             bonusParam.setEndDate(DateUtils.parseStringToDate(DateUtils.getRecentlyTuesday(bonusParam.getEndDate()))); | ||||
|         } | ||||
|         return handleMemberBonusPurchase(getCuMemberBonusExtList(bonusParam, value), bonusParam, value); | ||||
| //        String value = iSystemConfigServiceApi.getBonusSystemConfig(bonusParam.getPkCountry(), ESystemConfig.EXPAND_CAP_METHOD.getKey()).getData(); | ||||
| //        if (StringUtils.isNotEmpty(value) && Objects.equals(Integer.toString(EExpandCapMethod.WEEK_SETTLE.getValue()), value)) { | ||||
| //            // 周结的话不能查询当前周的数据,只能查询上周的数据 | ||||
| //            bonusParam.setEndDate(DateUtils.parseStringToDate(DateUtils.getRecentlyTuesday(bonusParam.getEndDate()))); | ||||
| //        } | ||||
|         return handleMemberBonusPurchase(getCuMemberBonusExtList(bonusParam), bonusParam); | ||||
|     } | ||||
| 
 | ||||
|     private List<CuMemberBonusExt> handleMemberBonusPurchase(List<CuMemberBonusExt> cuMemberBonusExtList, BonusParam bonusParam, String value) { | ||||
|         if (StringUtils.isNotEmpty(value) && Objects.equals(Integer.toString(EExpandCapMethod.WEEK_SETTLE.getValue()), value)) { | ||||
|             Collections.reverse(cuMemberBonusExtList); | ||||
|             return cuMemberBonusExtList; | ||||
|         } | ||||
|     private List<CuMemberBonusExt> handleMemberBonusPurchase(List<CuMemberBonusExt> cuMemberBonusExtList, BonusParam bonusParam) { | ||||
| //        if (StringUtils.isNotEmpty(value) && Objects.equals(Integer.toString(EExpandCapMethod.WEEK_SETTLE.getValue()), value)) { | ||||
| //            Collections.reverse(cuMemberBonusExtList); | ||||
| //            return cuMemberBonusExtList; | ||||
| //        } | ||||
| 
 | ||||
|         List<CuMemberBonusExt> memberBonusExtList = new ArrayList<>(); | ||||
|         Map<String, CuMemberBonusExt> cuMemberBonusExtMap = new HashMap<>(); | ||||
|         cuMemberBonusExtList.forEach(cuMemberBonusExt -> | ||||
|                 cuMemberBonusExtMap.put(DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD, cuMemberBonusExt.getSettleDate()), cuMemberBonusExt)); | ||||
|         cuMemberBonusExtList.forEach(cuMemberBonusExt -> cuMemberBonusExtMap.put(DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD, cuMemberBonusExt.getSettleDate()), cuMemberBonusExt)); | ||||
|         Date endDate = DateUtils.beforeDate(1, ChronoUnit.DAYS, bonusParam.getEndDate()); | ||||
|         Date compareDate = DateUtils.parseStringToDateTime(DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD, DateUtils.currentDate()) + " 13:00:00"); | ||||
|         while (DateUtils.compareDateAfter(endDate, bonusParam.getStartDate()) || | ||||
|                 DateUtils.compareDateEqual(endDate, bonusParam.getStartDate())) { | ||||
| 
 | ||||
|         while (DateUtils.compareDateAfter(endDate, bonusParam.getStartDate()) | ||||
|                 || DateUtils.compareDateEqual(endDate, bonusParam.getStartDate())) { | ||||
|             String date = DateUtils.parseDateToFormat(DateUtils.YYYY_MM_DD, endDate); | ||||
|             if (cuMemberBonusExtMap.containsKey(date)) { | ||||
|                 memberBonusExtList.add(cuMemberBonusExtMap.get(date)); | ||||
|  | @ -174,22 +178,14 @@ public class CuMemberBonusServiceImpl extends ServiceImpl<CuMemberBonusMapper, C | |||
|                     cuMemberBonusExt.setRepurRangeIncome(BigDecimal.ZERO); | ||||
|                     cuMemberBonusExt.setRepurExpandIncome(BigDecimal.ZERO); | ||||
|                     cuMemberBonusExt.setRepurRealSubtotal(BigDecimal.ZERO); | ||||
|                     cuMemberBonusExt.setCloudDirectIncome(BigDecimal.ZERO); | ||||
|                     cuMemberBonusExt.setCloudPurIncome(BigDecimal.ZERO); | ||||
|                     cuMemberBonusExt.setCloudRepurIncome(BigDecimal.ZERO); | ||||
|                     cuMemberBonusExt.setCloudRealSubtotal(BigDecimal.ZERO); | ||||
|                     cuMemberBonusExt.setRepurCoupon(BigDecimal.ZERO); | ||||
|                     cuMemberBonusExt.setRepurCouponShare(BigDecimal.ZERO); | ||||
|                     cuMemberBonusExt.setRepurCouponSubtotal(BigDecimal.ZERO); | ||||
|                     cuMemberBonusExt.setMakerDirectIncome(BigDecimal.ZERO); | ||||
|                     cuMemberBonusExt.setMakerShareIncome(BigDecimal.ZERO); | ||||
|                     cuMemberBonusExt.setMakerRealSubtotal(BigDecimal.ZERO); | ||||
|                     cuMemberBonusExt.setGlobalPoints(BigDecimal.ZERO); | ||||
|                     cuMemberBonusExt.setCarAwardPoints(BigDecimal.ZERO); | ||||
|                     cuMemberBonusExt.setHiFunIncome(BigDecimal.ZERO); | ||||
|                     cuMemberBonusExt.setHaiFunIncome(BigDecimal.ZERO); | ||||
|                     cuMemberBonusExt.setRealIncomeTotal(BigDecimal.ZERO); | ||||
|                     cuMemberBonusExt.setStoreIncome(BigDecimal.ZERO); | ||||
| 
 | ||||
|                     cuMemberBonusExt.setRetailRangeIncome(BigDecimal.ZERO); | ||||
|                     cuMemberBonusExt.setRetailSameLevelIncome(BigDecimal.ZERO); | ||||
|                     cuMemberBonusExt.setRetailAreaIncome(BigDecimal.ZERO); | ||||
|  | @ -207,16 +203,10 @@ public class CuMemberBonusServiceImpl extends ServiceImpl<CuMemberBonusMapper, C | |||
| 
 | ||||
|     @Override | ||||
|     public List<CuMemberBonusExt> queryMemberSecondBonusVoByCondition(BonusParam bonusParam) { | ||||
|         String value = iSystemConfigServiceApi.getBonusSystemConfig(bonusParam.getPkCountry(), ESystemConfig.EXPAND_CAP_METHOD.getKey()).getData(); | ||||
| //        if (StringUtils.isNotEmpty(value) && Objects.equals(Integer.toString(EExpandCapMethod.WEEK_SETTLE.getValue()), value)) { | ||||
| //            // 周结的话不能查询当前周的数据,只能查询上周的数据 | ||||
| //            bonusParam.setStartDate(DateUtils.parseStringToDate(DateUtils.getRecentlyTuesday(bonusParam.getStartDate()))); | ||||
| //            bonusParam.setEndDate(DateUtils.parseStringToDate(DateUtils.getRecentlyMonday(bonusParam.getStartDate()))); | ||||
| //        } | ||||
|         return getCuMemberBonusExtList(bonusParam, value); | ||||
|         return getCuMemberBonusExtList(bonusParam); | ||||
|     } | ||||
| 
 | ||||
|     private List<CuMemberBonusExt> getCuMemberBonusExtList(BonusParam bonusParam, String value) { | ||||
|     private List<CuMemberBonusExt> getCuMemberBonusExtList(BonusParam bonusParam) { | ||||
|         if (bonusParam.getGrantStatus() == null) { | ||||
|             bonusParam.setGrantStatus(EGrantStatus.PUBLISHED.getValue()); | ||||
|         } | ||||
|  | @ -237,20 +227,11 @@ public class CuMemberBonusServiceImpl extends ServiceImpl<CuMemberBonusMapper, C | |||
|             cuMemberBonusExt.setRepurRangeIncome(ComputeUtil.computeMultiply(cuMemberBonusExt.getRepurRangeIncome(), inExchangeRate)); | ||||
|             cuMemberBonusExt.setRepurExpandIncome(ComputeUtil.computeMultiply(cuMemberBonusExt.getRepurExpandIncome(), inExchangeRate)); | ||||
|             cuMemberBonusExt.setRepurRealSubtotal(ComputeUtil.computeMultiply(cuMemberBonusExt.getRepurRealSubtotal(), inExchangeRate)); | ||||
|             cuMemberBonusExt.setCloudDirectIncome(ComputeUtil.computeMultiply(cuMemberBonusExt.getCloudDirectIncome(), inExchangeRate)); | ||||
|             cuMemberBonusExt.setCloudPurIncome(ComputeUtil.computeMultiply(cuMemberBonusExt.getCloudPurIncome(), inExchangeRate)); | ||||
|             cuMemberBonusExt.setCloudRepurIncome(ComputeUtil.computeMultiply(cuMemberBonusExt.getCloudRepurIncome(), inExchangeRate)); | ||||
|             cuMemberBonusExt.setCloudRealSubtotal(ComputeUtil.computeMultiply(cuMemberBonusExt.getCloudRealSubtotal(), inExchangeRate)); | ||||
|             cuMemberBonusExt.setRepurCoupon(ComputeUtil.computeMultiply(cuMemberBonusExt.getRepurCoupon(), inExchangeRate)); | ||||
|             cuMemberBonusExt.setRepurCouponShare(ComputeUtil.computeMultiply(cuMemberBonusExt.getRepurCouponShare(), inExchangeRate)); | ||||
|             cuMemberBonusExt.setRepurCouponSubtotal(ComputeUtil.computeMultiply(cuMemberBonusExt.getRepurCouponSubtotal(), inExchangeRate)); | ||||
|             cuMemberBonusExt.setMakerDirectIncome(ComputeUtil.computeMultiply(cuMemberBonusExt.getMakerDirectIncome(), inExchangeRate)); | ||||
|             cuMemberBonusExt.setMakerShareIncome(ComputeUtil.computeMultiply(cuMemberBonusExt.getMakerShareIncome(), inExchangeRate)); | ||||
|             cuMemberBonusExt.setMakerRealSubtotal(ComputeUtil.computeMultiply(cuMemberBonusExt.getMakerRealSubtotal(), inExchangeRate)); | ||||
|             cuMemberBonusExt.setGlobalPoints(ComputeUtil.computeMultiply(cuMemberBonusExt.getGlobalPoints(), inExchangeRate)); | ||||
|             cuMemberBonusExt.setCarAwardPoints(ComputeUtil.computeMultiply(cuMemberBonusExt.getCarAwardPoints(), inExchangeRate)); | ||||
|             cuMemberBonusExt.setHiFunIncome(ComputeUtil.computeMultiply(cuMemberBonusExt.getHiFunIncome(), inExchangeRate)); | ||||
|             cuMemberBonusExt.setHaiFunIncome(ComputeUtil.computeMultiply(cuMemberBonusExt.getHaiFunIncome(), inExchangeRate)); | ||||
|             cuMemberBonusExt.setRealIncomeTotal(ComputeUtil.computeMultiply(cuMemberBonusExt.getRealIncomeTotal(), inExchangeRate)); | ||||
|             cuMemberBonusExt.setStoreIncome(ComputeUtil.computeMultiply(cuMemberBonusExt.getStoreIncome(), inExchangeRate)); | ||||
|             cuMemberBonusExt.setRetailRangeIncome(ComputeUtil.computeMultiply(cuMemberBonusExt.getRetailRangeIncome(), inExchangeRate)); | ||||
|  | @ -261,31 +242,6 @@ public class CuMemberBonusServiceImpl extends ServiceImpl<CuMemberBonusMapper, C | |||
|             cuMemberBonusExt.setRetailBenefitIncome(ComputeUtil.computeMultiply(cuMemberBonusExt.getRetailBenefitIncome(), inExchangeRate)); | ||||
|             cuMemberBonusExt.setRetailRealSubtotal(ComputeUtil.computeMultiply(cuMemberBonusExt.getRetailRealSubtotal(), inExchangeRate)); | ||||
|         } | ||||
| //        if (StringUtils.isNotEmpty(value) && Objects.equals(Integer.toString(EExpandCapMethod.WEEK_SETTLE.getValue()), value)) { | ||||
| //            Map<String, List<CuMemberBonusExt>> weekDateMap = new TreeMap<>(); | ||||
| //            // 计算周开始和结束 | ||||
| //            for (CuMemberBonusExt cuMemberBonusExt : cuMemberBonusExtList) { | ||||
| //                String startDateStr = DateUtils.getRecentlyTuesday(cuMemberBonusExt.getSettleDate()); | ||||
| //                if (weekDateMap.containsKey(startDateStr)) { | ||||
| //                    weekDateMap.get(startDateStr).add(cuMemberBonusExt); | ||||
| //                } else { | ||||
| //                    List<CuMemberBonusExt> cuMemberBonusExtList1 = new ArrayList<>(); | ||||
| //                    cuMemberBonusExtList1.add(cuMemberBonusExt); | ||||
| //                    weekDateMap.put(startDateStr, cuMemberBonusExtList1); | ||||
| //                } | ||||
| //            } | ||||
| //            List<CuMemberBonusExt> cuMemberBonusExtList1 = new ArrayList<>(); | ||||
| //            for (String key : weekDateMap.keySet()) { | ||||
| //                CuMemberBonusExt cuMemberBonusExt = initCuMemberBonus(); | ||||
| //                cuMemberBonusExt.setSettleDate(DateUtils.parseStringToDate(key)); | ||||
| //                cuMemberBonusExt.setEndSettleDate(DateUtils.afterDate(6, ChronoUnit.DAYS, cuMemberBonusExt.getSettleDate())); | ||||
| //                for (CuMemberBonusExt memberBonusExt : weekDateMap.get(key)) { | ||||
| //                    calculateBonusTotal(cuMemberBonusExt, memberBonusExt); | ||||
| //                } | ||||
| //                cuMemberBonusExtList1.add(cuMemberBonusExt); | ||||
| //            } | ||||
| //            return cuMemberBonusExtList1; | ||||
| //        } | ||||
|         return cuMemberBonusExtList; | ||||
|     } | ||||
| 
 | ||||
|  | @ -323,13 +279,7 @@ public class CuMemberBonusServiceImpl extends ServiceImpl<CuMemberBonusMapper, C | |||
| 
 | ||||
|     @Override | ||||
|     public List<CuMemberBonusExt> queryMemberBonusTotalByCondition(BonusParam bonusParam) { | ||||
|         String value = iSystemConfigServiceApi.getBonusSystemConfig(bonusParam.getPkCountry(), ESystemConfig.EXPAND_CAP_METHOD.getKey()).getData(); | ||||
|         if (StringUtils.isNotEmpty(value) && Objects.equals(Integer.toString(EExpandCapMethod.WEEK_SETTLE.getValue()), value)) { | ||||
|             // 周结的话不能查询当前周 | ||||
|             bonusParam.setEndDate(DateUtils.parseStringToDate(DateUtils.getRecentlyTuesday(bonusParam.getEndDate()))); | ||||
|             bonusParam.setStartDate(DateUtils.beforeDate(7, ChronoUnit.DAYS, bonusParam.getEndDate())); | ||||
|         } | ||||
|         return getCuMemberBonusExtList(bonusParam, value); | ||||
|         return getCuMemberBonusExtList(bonusParam); | ||||
|     } | ||||
| 
 | ||||
|     @Override | ||||
|  | @ -693,4 +643,19 @@ public class CuMemberBonusServiceImpl extends ServiceImpl<CuMemberBonusMapper, C | |||
|         cuMemberBonusList.forEach(cuMemberBonus -> cuMemberBonusMap.put(cuMemberBonus.getPkMember(), cuMemberBonus)); | ||||
|         return cuMemberBonusMap; | ||||
|     } | ||||
| 
 | ||||
|     @Override | ||||
|     public void recalculateTeamNewBoxNum(List<Long> pkIdList) { | ||||
|         String retailsTableName = getDayTableName(); | ||||
|         log.info("recalculateTeamNewBoxNum: pkIdList: {}, tableName: {}", JSONUtil.toJsonStr(pkIdList), retailsTableName); | ||||
|         for (Long pkId : pkIdList) { | ||||
|             baseMapper.recalculateTeamNewBoxNum(pkId, retailsTableName); | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|     private String getDayTableName() { | ||||
|         String localDate = LocalDate.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd")); | ||||
|         int period = iCuMemberSettlePeriodService.getCuMemberSettlePeriodByDate(localDate).getPkId(); | ||||
|         return TableNameConstants.CU_MEMBER_RETAIL_S + period; | ||||
|     } | ||||
| } | ||||
|  |  | |||
|  | @ -1,84 +1,111 @@ | |||
| package com.hzs.bonus.bonus.vo; | ||||
| 
 | ||||
| import lombok.AllArgsConstructor; | ||||
| import lombok.Builder; | ||||
| import lombok.Data; | ||||
| import lombok.NoArgsConstructor; | ||||
| import com.hzs.common.core.annotation.BigDecimalFormat; | ||||
| import lombok.*; | ||||
| 
 | ||||
| import java.math.BigDecimal; | ||||
| 
 | ||||
| /** | ||||
|  * @description: 查询首购奖金 | ||||
|  * @author: sui q | ||||
|  * @time: 2023/4/28 10:33 | ||||
|  * @classname: MemberBonusDirectVO | ||||
|  * @package_name: com.hzs.member.bonus.vo | ||||
|  * version 1.0.0 | ||||
|  * 查询首购奖金 | ||||
|  */ | ||||
| @EqualsAndHashCode(callSuper = true) | ||||
| @Data | ||||
| @Builder | ||||
| @AllArgsConstructor | ||||
| @NoArgsConstructor | ||||
| public class MemberBonusFirstPurchaseVO extends PubMemberBonusVO { | ||||
| 
 | ||||
|     /** | ||||
|      * 直推收益 | ||||
|      */ | ||||
|     private BigDecimal directIncome; | ||||
| 
 | ||||
|     /** | ||||
|      * 拓展收益 | ||||
|      */ | ||||
|     private BigDecimal expandIncome; | ||||
| 
 | ||||
|     /** | ||||
|      * 辅导收益 | ||||
|      */ | ||||
|     private BigDecimal coachIncome; | ||||
| 
 | ||||
|     /** | ||||
|      * 分红收益 | ||||
|      */ | ||||
|     private BigDecimal shareIncome; | ||||
| 
 | ||||
|     /** | ||||
|      * 报单收益 | ||||
|      */ | ||||
|     private BigDecimal serviceIncome; | ||||
| //    /** | ||||
| //     * 直推收益 | ||||
| //     */ | ||||
| //    private BigDecimal directIncome; | ||||
| // | ||||
| //    /** | ||||
| //     * 拓展收益 | ||||
| //     */ | ||||
| //    private BigDecimal expandIncome; | ||||
| // | ||||
| //    /** | ||||
| //     * 辅导收益 | ||||
| //     */ | ||||
| //    private BigDecimal coachIncome; | ||||
| // | ||||
| //    /** | ||||
| //     * 分红收益 | ||||
| //     */ | ||||
| //    private BigDecimal shareIncome; | ||||
| // | ||||
| //    /** | ||||
| //     * 报单收益 | ||||
| //     */ | ||||
| //    private BigDecimal serviceIncome; | ||||
| 
 | ||||
|     /** | ||||
|      * 商城重消 | ||||
|      */ | ||||
|     @BigDecimalFormat | ||||
|     private BigDecimal backPoints; | ||||
| // | ||||
| //    /** | ||||
| //     * 首购实发小计 | ||||
| //     */ | ||||
| //    private BigDecimal purRealSubtotal; | ||||
| // | ||||
| //    /** | ||||
| //     * 复购推荐收益 | ||||
| //     */ | ||||
| //    private BigDecimal repurPushIncome; | ||||
| // | ||||
| //    /** | ||||
| //     * 复购拓展收益 | ||||
| //     */ | ||||
| //    private BigDecimal repurExpandIncome; | ||||
| // | ||||
| //    /** | ||||
| //     * 复购级差收益 | ||||
| //     */ | ||||
| //    private BigDecimal repurRangeIncome; | ||||
| // | ||||
| //    /** | ||||
| //     * 复购实发小计 | ||||
| //     */ | ||||
| //    private BigDecimal repurRealSubtotal; | ||||
| // | ||||
| //    /** | ||||
| //     * 乐学直推收益 | ||||
| //     */ | ||||
| //    private BigDecimal globalPoints; | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
|     /** | ||||
|      * 首购实发小计 | ||||
|      * 新零售直推收益 | ||||
|      */ | ||||
|     private BigDecimal purRealSubtotal; | ||||
|     @BigDecimalFormat | ||||
|     private BigDecimal retailRangeIncome; | ||||
| 
 | ||||
|     /** | ||||
|      * 复购推荐收益 | ||||
|      * 新零售平级收益 | ||||
|      */ | ||||
|     private BigDecimal repurPushIncome; | ||||
|     @BigDecimalFormat | ||||
|     private BigDecimal retailSameLevelIncome; | ||||
| 
 | ||||
|     /** | ||||
|      * 复购拓展收益 | ||||
|      * 新零售区域分红 | ||||
|      */ | ||||
|     private BigDecimal repurExpandIncome; | ||||
|     @BigDecimalFormat | ||||
|     private BigDecimal retailAreaIncome; | ||||
| 
 | ||||
|     /** | ||||
|      * 复购级差收益 | ||||
|      * 新零售收益小计 | ||||
|      */ | ||||
|     private BigDecimal repurRangeIncome; | ||||
|     @BigDecimalFormat | ||||
|     private BigDecimal retailRealSubtotal; | ||||
| 
 | ||||
|     /** | ||||
|      * 复购实发小计 | ||||
|      * 实发收益总计 | ||||
|      */ | ||||
|     private BigDecimal repurRealSubtotal; | ||||
| 
 | ||||
|     /** | ||||
|      * 乐学直推收益 | ||||
|      */ | ||||
|     private BigDecimal globalPoints; | ||||
|     @BigDecimalFormat | ||||
|     private BigDecimal realIncomeTotal; | ||||
| 
 | ||||
| } | ||||
|  |  | |||
|  | @ -1,17 +1,13 @@ | |||
| package com.hzs.bonus.bonus.vo; | ||||
| 
 | ||||
| import com.hzs.common.core.annotation.BigDecimalFormat; | ||||
| import lombok.Data; | ||||
| 
 | ||||
| import java.io.Serializable; | ||||
| import java.math.BigDecimal; | ||||
| 
 | ||||
| /** | ||||
|  * @description: 会员实发收益 | ||||
|  * @author: sui q | ||||
|  * @time: 2023/7/6 14:25 | ||||
|  * @classname: MemberRealIncomeVO | ||||
|  * @package_name: com.hzs.member.bonus.vo | ||||
|  * version 1.0.0 | ||||
|  * 会员实发收益 | ||||
|  */ | ||||
| @Data | ||||
| public class MemberRealIncomeVO implements Serializable { | ||||
|  | @ -19,5 +15,6 @@ public class MemberRealIncomeVO implements Serializable { | |||
|     /** | ||||
|      * 实发收益总计 | ||||
|      */ | ||||
|     @BigDecimalFormat | ||||
|     private BigDecimal realIncomeTotal; | ||||
| } | ||||
|  |  | |||
|  | @ -6,15 +6,11 @@ import java.io.Serializable; | |||
| import java.math.BigDecimal; | ||||
| 
 | ||||
| /** | ||||
|  * @description: 会员端奖金明细查询vo | ||||
|  * @author: sui q | ||||
|  * @time: 2023/7/17 14:58 | ||||
|  * @classname: PubMemberBonusVO | ||||
|  * @package_name: com.hzs.member.bonus.vo | ||||
|  * version 1.0.0 | ||||
|  * 会员端奖金明细查询vo | ||||
|  */ | ||||
| @Data | ||||
| public class PubMemberBonusVO implements Serializable { | ||||
| 
 | ||||
|     /** | ||||
|      * 结算日期 | ||||
|      */ | ||||
|  | @ -24,4 +20,5 @@ public class PubMemberBonusVO implements Serializable { | |||
|      * 平台服务费 | ||||
|      */ | ||||
|     private BigDecimal serviceSpend; | ||||
| 
 | ||||
| } | ||||
|  |  | |||
|  | @ -1,46 +1,28 @@ | |||
| package com.hzs.bonus.detail.controller.manage; | ||||
| 
 | ||||
| 
 | ||||
| import cn.hutool.core.bean.BeanUtil; | ||||
| import com.hzs.bonus.achieve.service.ICuMemberSettlePeriodService; | ||||
| import com.hzs.bonus.bonus.param.BonusParam; | ||||
| import com.hzs.bonus.bonus.vo.BonusTotalVO; | ||||
| import com.hzs.bonus.detail.service.ICuRegionAssessService; | ||||
| import com.hzs.bonus.detail.vo.CuRegionAssessDetailVO; | ||||
| import com.hzs.bonus.detail.vo.CuRegionAssessExcelVO; | ||||
| import com.hzs.bonus.detail.vo.CuRegionAssessVO; | ||||
| import com.hzs.bonus.param.CuRegionAssessParam; | ||||
| import com.hzs.common.core.annotation.Log; | ||||
| import com.hzs.common.core.constant.TableNameConstants; | ||||
| import com.hzs.common.core.enums.EOperationBusiness; | ||||
| import com.hzs.common.core.enums.EOperationMethod; | ||||
| import com.hzs.common.core.enums.EOperationModule; | ||||
| import com.hzs.common.core.utils.StringUtils; | ||||
| import com.hzs.common.core.utils.poi.ExcelUtil; | ||||
| import com.hzs.common.core.web.controller.BaseController; | ||||
| import com.hzs.common.core.web.domain.AjaxResult; | ||||
| import com.hzs.common.core.web.page.TableDataInfo; | ||||
| import com.hzs.common.domain.member.detail.CuRegionAssessDetail; | ||||
| import com.hzs.common.domain.member.detail.ext.CuRegionAssessExt; | ||||
| import com.hzs.common.domain.member.ext.CuMemberBonusExt; | ||||
| import com.hzs.common.security.utils.SecurityUtils; | ||||
| import org.springframework.beans.factory.annotation.Autowired; | ||||
| import org.springframework.web.bind.annotation.*; | ||||
| 
 | ||||
| import javax.servlet.http.HttpServletResponse; | ||||
| import java.util.ArrayList; | ||||
| import java.util.Arrays; | ||||
| import java.util.List; | ||||
| import java.util.Map; | ||||
| import java.util.stream.Collectors; | ||||
| 
 | ||||
| /** | ||||
|  * <p> | ||||
|  * 新零售会员区域考核 前端控制器 | ||||
|  * </p> | ||||
|  * | ||||
|  * @author hzs | ||||
|  * @since 2025-01-13 | ||||
|  */ | ||||
| @RestController | ||||
| @RequestMapping("/manage/region") | ||||
|  | @ -58,6 +40,7 @@ public class CuRegionAssessController extends BaseController { | |||
|     /** | ||||
|      * 考核 | ||||
|      * 考核默认考核当月 | ||||
|      * | ||||
|      * @return AjaxResult | ||||
|      */ | ||||
|     @GetMapping("/examine") | ||||
|  | @ -72,7 +55,7 @@ public class CuRegionAssessController extends BaseController { | |||
|      * 查询会员昨天奖金的值 | ||||
|      */ | ||||
|     @PostMapping("/query") | ||||
|     public TableDataInfo listRegionAssess(@RequestBody CuRegionAssessParam cuRegionAssessParam){ | ||||
|     public TableDataInfo listRegionAssess(@RequestBody CuRegionAssessParam cuRegionAssessParam) { | ||||
|         startPage(); | ||||
|         cuRegionAssessParam.setPkCountry(SecurityUtils.getPkCountry()); | ||||
|         List<CuRegionAssessExt> cuRegionAssessExtList = regionAssessService.queryRegionAssessByCondition(cuRegionAssessParam); | ||||
|  | @ -86,7 +69,7 @@ public class CuRegionAssessController extends BaseController { | |||
|      * 分页查询会员某个时间段内的奖金汇总 | ||||
|      */ | ||||
|     @PostMapping("/export") | ||||
|     public void exportRegionAssess(HttpServletResponse response, CuRegionAssessParam cuRegionAssessParam){ | ||||
|     public void exportRegionAssess(HttpServletResponse response, CuRegionAssessParam cuRegionAssessParam) { | ||||
|         List<CuRegionAssessExt> cuRegionAssessExtList = regionAssessService.queryRegionAssessByCondition(cuRegionAssessParam); | ||||
|         List<CuRegionAssessExcelVO> cuRegionAssessVoList = new ArrayList<>(); | ||||
|         for (CuRegionAssessExt cuRegionAssessExt : cuRegionAssessExtList) { | ||||
|  |  | |||
|  | @ -0,0 +1,46 @@ | |||
| package com.hzs.bonus.listener; | ||||
| 
 | ||||
| import cn.hutool.json.JSONUtil; | ||||
| import com.hzs.bonus.bonus.service.IBonusSettleService; | ||||
| import com.hzs.bonus.bonus.service.ICuMemberBonusService; | ||||
| import com.hzs.bonus.bonus.service.ICuMemberRetailLogService; | ||||
| import com.hzs.common.core.constant.CountryConstants; | ||||
| import com.hzs.common.core.constant.MagicNumberConstants; | ||||
| import com.hzs.common.core.constant.RabbitMqConstants; | ||||
| import com.hzs.common.core.enums.EYesNo; | ||||
| import com.hzs.common.domain.member.bonus.CuMemberRetailLog; | ||||
| import com.hzs.common.domain.sale.ext.SaOrderExt; | ||||
| import com.rabbitmq.client.Channel; | ||||
| import lombok.extern.slf4j.Slf4j; | ||||
| import org.springframework.amqp.rabbit.annotation.*; | ||||
| import org.springframework.amqp.support.AmqpHeaders; | ||||
| import org.springframework.beans.factory.annotation.Autowired; | ||||
| import org.springframework.messaging.Message; | ||||
| import org.springframework.stereotype.Component; | ||||
| 
 | ||||
| import java.util.List; | ||||
| 
 | ||||
| /** | ||||
|  * 订单秒接 | ||||
|  */ | ||||
| @Slf4j | ||||
| @Component | ||||
| public class SaOrderSecondActivateCompensationListener { | ||||
|     @Autowired | ||||
|     private ICuMemberBonusService memberBonusService; | ||||
| 
 | ||||
|     @RabbitListener(bindings = @QueueBinding( | ||||
|             exchange = @Exchange(value = RabbitMqConstants.ORDER_SECOND_ACTIVATE_COMPENSATION_EXCHANGE, type = "topic"), | ||||
|             value = @Queue(value = RabbitMqConstants.ORDER_SECOND_ACTIVATE_COMPENSATION_QUEUE, durable = "true", autoDelete = "false"), | ||||
|             key = RabbitMqConstants.ORDER_SECOND_ACTIVATE_COMPENSATION_KEY)) | ||||
|     @RabbitHandler | ||||
|     public void onMessage(Message<List<Long>> message, Channel channel) throws Exception { | ||||
|         List<Long> activateCompensationIdList = message.getPayload(); | ||||
|         log.info("秒结开始消费,接收到的参数:{}", JSONUtil.toJsonStr(activateCompensationIdList)); | ||||
| 
 | ||||
|         Long deliveryTag = (Long) message.getHeaders().get(AmqpHeaders.DELIVERY_TAG); | ||||
|         channel.basicAck(deliveryTag, false); | ||||
| 
 | ||||
|         memberBonusService.recalculateTeamNewBoxNum(activateCompensationIdList); | ||||
|     } | ||||
| } | ||||
|  | @ -272,21 +272,40 @@ | |||
|     </select> | ||||
| 
 | ||||
|     <select id="queryMemberBonusByCondition" resultMap="CuMemberBonus"> | ||||
|         select cp.settle_date,cb.direct_income,cb.expand_income,cb.expand_no_capping, | ||||
|         cb.expand_capping,cb.coach_income,cb.share_income,cb.service_income,cb.back_points,cb.service_spend, | ||||
|         cb.pur_real_subtotal,cb.repur_push_income,cb.repur_range_income,cb.repur_expand_income,cb.repur_real_subtotal, | ||||
|         cb.cloud_direct_income,cb.cloud_pur_income,cb.cloud_repur_income,cb.cloud_real_subtotal, | ||||
|         cb.repur_coupon,cb.repur_coupon_share,cb.repur_coupon_subtotal,cb.store_income, | ||||
|         cb.maker_direct_income,cb.maker_share_income,cb.maker_real_subtotal, | ||||
|         cb.global_points,cb.car_award_points,cb.hi_fun_income,cb.hai_fun_income, | ||||
|         cb.retail_range_income,cb.retail_same_level_income,cb.retail_area_income, | ||||
|         cb.retail_benefit_range_income,cb.retail_benefit_avg_income, | ||||
|         cb.retail_benefit_income,cb.retail_real_subtotal, | ||||
|         cb.real_income_total from cu_member_bonus cb | ||||
|         select cp.settle_date, | ||||
|         cb.direct_income, | ||||
|         cb.expand_income, | ||||
|         cb.expand_no_capping, | ||||
|         cb.expand_capping, | ||||
|         cb.coach_income, | ||||
|         cb.share_income, | ||||
|         cb.service_income, | ||||
|         cb.back_points, | ||||
|         cb.service_spend, | ||||
|         cb.pur_real_subtotal, | ||||
|         cb.repur_push_income, | ||||
|         cb.repur_range_income, | ||||
|         cb.repur_expand_income, | ||||
|         cb.repur_real_subtotal, | ||||
|         cb.repur_coupon, | ||||
|         cb.repur_coupon_share, | ||||
|         cb.repur_coupon_subtotal, | ||||
|         cb.store_income, | ||||
|         cb.global_points, | ||||
|         cb.car_award_points, | ||||
|         cb.retail_range_income, | ||||
|         cb.retail_same_level_income, | ||||
|         cb.retail_area_income, | ||||
|         cb.retail_benefit_range_income, | ||||
|         cb.retail_benefit_avg_income, | ||||
|         cb.retail_benefit_income, | ||||
|         cb.retail_real_subtotal, | ||||
|         cb.real_income_total | ||||
|         from cu_member_bonus cb | ||||
|         inner join cu_member_settle_period cp | ||||
|         on cb.period = cp.pk_id | ||||
|         where cb.del_flag=0 and cp.del_flag=0 | ||||
|         and cb.pk_member=#{pkMember} | ||||
|         where cb.del_flag = 0 and cp.del_flag = 0 | ||||
|         and cb.pk_member = #{pkMember} | ||||
|         <if test="grantStatus != null"> | ||||
|             and cb.grant_status >= #{grantStatus} | ||||
|         </if> | ||||
|  | @ -574,4 +593,23 @@ | |||
|         group by cb.pk_member | ||||
|     </select> | ||||
| 
 | ||||
|     <update id="recalculateTeamNewBoxNum"> | ||||
|         UPDATE ${retailsTableName} | ||||
|         SET ENABLE_STATUS = 0, TEAM_NEW_BOX_NUM = ( | ||||
|             SELECT SUM(boxNum) | ||||
|             FROM ( | ||||
|                      SELECT b.PK_ID, NVL(s.NEW_BOX_NUM, 0) AS boxNum | ||||
|                      FROM ${retailsTableName} s | ||||
|                               RIGHT JOIN ( | ||||
|                          SELECT cm.PK_ID | ||||
|                          FROM cu_member cm | ||||
|                          WHERE cm.PK_ID != #{pkId} | ||||
|                          START WITH cm.PK_ID = #{pkId} | ||||
|                          CONNECT BY PRIOR cm.pk_id = cm.pk_parent | ||||
|                          ORDER BY LEVEL | ||||
|                      ) b ON s.PK_MEMBER = b.PK_ID | ||||
|                  ) c | ||||
|         ) | ||||
|         WHERE PK_MEMBER = #{pkId} | ||||
|     </update> | ||||
| </mapper> | ||||
|  |  | |||
|  | @ -53,6 +53,7 @@ import com.hzs.system.config.IAwardsServiceApi; | |||
| import com.hzs.system.config.dto.AreaCurrencyDTO; | ||||
| import lombok.extern.slf4j.Slf4j; | ||||
| import org.apache.dubbo.config.annotation.DubboReference; | ||||
| import org.springframework.amqp.rabbit.core.RabbitTemplate; | ||||
| import org.springframework.beans.factory.annotation.Autowired; | ||||
| import org.springframework.stereotype.Service; | ||||
| import org.springframework.transaction.annotation.Transactional; | ||||
|  | @ -85,6 +86,8 @@ public class CuMemberBusinessServiceImpl implements ICuMemberBusinessService { | |||
|     private ICuMemberAchieveService cuMemberAchieveService; | ||||
|     @Autowired | ||||
|     private RedisService redisService; | ||||
|     @Autowired | ||||
|     private RabbitTemplate rabbitTemplate; | ||||
| 
 | ||||
|     private ICuMemberService cuMemberService; | ||||
| 
 | ||||
|  | @ -1516,6 +1519,9 @@ public class CuMemberBusinessServiceImpl implements ICuMemberBusinessService { | |||
|         } | ||||
| 
 | ||||
|         this.handleRetailMemberAccount(saOrder, cuMemberAccountExt); | ||||
| 
 | ||||
|         // 推送会员激活处理 | ||||
|         rabbitTemplate.convertAndSend(RabbitMqConstants.ORDER_SECOND_ACTIVATE_COMPENSATION_EXCHANGE, RabbitMqConstants.ORDER_SECOND_ACTIVATE_COMPENSATION_KEY, Collections.singletonList(cuMember.getPkId())); | ||||
|     } | ||||
| 
 | ||||
|     @Transactional(rollbackFor = Exception.class) | ||||
|  |  | |||
|  | @ -134,8 +134,8 @@ public class CuMemberServiceImpl extends ServiceImpl<CuMemberMapper, CuMember> i | |||
|                 save = true; | ||||
|             } | ||||
|         } catch (Exception e) { | ||||
|             e.printStackTrace(); | ||||
|             throw new RuntimeException(e); | ||||
|             log.error("saveMember error: {}", e.getMessage(), e); | ||||
|             throw new ServiceException(e.getMessage()); | ||||
|         } | ||||
|         return save; | ||||
|     } | ||||
|  |  | |||
|  | @ -116,12 +116,10 @@ public class MemberEmptyServiceImpl implements IMemberEmptyService { | |||
|     public void importTemplate(List<MemberEmptyDetailDTO> resultList) { | ||||
|         // 会员编号列表(导入会员编号去重) | ||||
|         List<String> checkMemberList = new ArrayList<>(); | ||||
|         // 会员联系方式列表(需要查库校验) | ||||
|         List<String> checkPhoneList = new ArrayList<>(); | ||||
| 
 | ||||
|         // 遍历导入数据,提取各种校验所需要的数据 | ||||
|         for (MemberEmptyDetailDTO detail : resultList) { | ||||
|             this.checkBase(detail, checkMemberList, checkPhoneList); | ||||
|             this.checkBase(detail, checkMemberList); | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|  | @ -255,7 +253,7 @@ public class MemberEmptyServiceImpl implements IMemberEmptyService { | |||
| 
 | ||||
|         // 遍历导入数据,提取各种校验所需要的数据 | ||||
|         for (MemberEmptyDetailDTO detail : resultList) { | ||||
|             if (this.checkBase(detail, checkMemberList, checkPhoneList)) { | ||||
|             if (this.checkBase(detail, checkMemberList)) { | ||||
|                 // 已经存在异常,直接返回 | ||||
|                 return false; | ||||
|             } | ||||
|  | @ -270,8 +268,8 @@ public class MemberEmptyServiceImpl implements IMemberEmptyService { | |||
| 
 | ||||
|         // 查询会员编号是否存在 | ||||
|         Map<String, Integer> checkCodeMap = iCuMemberService.checkMemberCodeExist(checkMemberList, true, pkMemberEmpty); | ||||
|         // 查询联系方式是否存在 | ||||
|         Map<String, Integer> checkPhoneMap = iCuMemberService.checkMemberPhoneExist(checkPhoneList, true, pkMemberEmpty, systemType); | ||||
| //        // 查询联系方式是否存在 | ||||
| //        Map<String, Integer> checkPhoneMap = iCuMemberService.checkMemberPhoneExist(checkPhoneList, true, pkMemberEmpty, systemType); | ||||
| 
 | ||||
|         // 查询推荐编号是否存在(在本次推荐数据中的直接排除掉) | ||||
|         final Map<String, Integer> checkParentCodeMap = new HashMap<>(); | ||||
|  | @ -290,15 +288,6 @@ public class MemberEmptyServiceImpl implements IMemberEmptyService { | |||
|                     bool[0] = false; | ||||
|                 } | ||||
|             } | ||||
|             if (checkPhoneMap.size() > 0) { | ||||
|                 if (null != checkPhoneMap.get(detail.getPhone()) && checkPhoneMap.get(detail.getPhone()) >= 1) { | ||||
|                     // 导入的会员联系方式已经存在数据库中,异常状态 | ||||
|                     detail.setPointStatus(EPointStatus.ABNORMAL.getValue()); | ||||
|                     // 会员联系方式存在重复 | ||||
|                     detail.setContentAbstract(detail.getContentAbstract().replace(TransactionUtils.getContent(MemberMsgConstants.EMPTY_PHONE_NOT), "") + TransactionUtils.getContent(MemberMsgConstants.EMPTY_PHONE_NOT) + ";"); | ||||
|                     bool[0] = false; | ||||
|                 } | ||||
|             } | ||||
|             // 处理校验推荐编号是否存在 | ||||
|             if (!checkMemberList.contains(detail.getParentCode()) && checkParentCodeMap.get(detail.getParentCode()) == null) { | ||||
|                 // 推荐编号不在本次导入的会员中,也不在数据库中,异常状态 | ||||
|  | @ -568,9 +557,8 @@ public class MemberEmptyServiceImpl implements IMemberEmptyService { | |||
|      * | ||||
|      * @param detail          校验数据 | ||||
|      * @param checkMemberList 会员编号列表 | ||||
|      * @param checkPhoneList  会员联系方式列表 | ||||
|      */ | ||||
|     private boolean checkBase(MemberEmptyDetailDTO detail, List<String> checkMemberList, List<String> checkPhoneList) { | ||||
|     private boolean checkBase(MemberEmptyDetailDTO detail, List<String> checkMemberList) { | ||||
|         // 校验之前先为空 | ||||
|         detail.setPointStatus(EPointStatus.NORMAL.getValue()); | ||||
|         detail.setContentAbstract(""); | ||||
|  | @ -601,16 +589,7 @@ public class MemberEmptyServiceImpl implements IMemberEmptyService { | |||
|             // 导入数据中不重复的会员编号,需要查库校验是否重复 | ||||
|             checkMemberList.add(detail.getMemberCode()); | ||||
|         } | ||||
|         if (checkPhoneList.contains(detail.getPhone())) { | ||||
|             // 导入的数据存在重复联系方式,异常状态 | ||||
|             detail.setPointStatus(EPointStatus.ABNORMAL.getValue()); | ||||
|             // 联系方式存在重复 | ||||
|             detail.setContentAbstract(detail.getContentAbstract() + TransactionUtils.getContent(MemberMsgConstants.EMPTY_PHONE_NOT) + ";"); | ||||
|             hasError = true; | ||||
|         } else { | ||||
|             // 导入数据中不重复的联系方式,需要查库校验是否重复 | ||||
|             checkPhoneList.add(detail.getPhone()); | ||||
|         } | ||||
| 
 | ||||
|         return hasError; | ||||
|     } | ||||
| 
 | ||||
|  |  | |||
|  | @ -62,9 +62,6 @@ import java.util.stream.Collectors; | |||
| 
 | ||||
| /** | ||||
|  * 业务办理表 前端控制器 | ||||
|  * | ||||
|  * @author zhangjing | ||||
|  * @since 2023-01-11 | ||||
|  */ | ||||
| @RestController | ||||
| @RequestMapping("/manage/handle-business") | ||||
|  | @ -102,11 +99,7 @@ public class CuHandleBusinessController extends BaseController { | |||
| 
 | ||||
| 
 | ||||
|     /** | ||||
|      * @description: 查询办理业务列表 | ||||
|      * @author: zhang jing | ||||
|      * @date: 2023/1/12 14:58 | ||||
|      * @param: [handleBusinessVO] | ||||
|      * @return: com.hzs.common.core.web.page.TableDataInfo | ||||
|      * 查询办理业务列表 | ||||
|      **/ | ||||
|     @AccessPermissions("BasicBusiness") | ||||
|     @Log(module = EOperationModule.HANDLE_BUSINESS, business = EOperationBusiness.BASE_BUSINESS, method = EOperationMethod.SELECT) | ||||
|  | @ -154,11 +147,7 @@ public class CuHandleBusinessController extends BaseController { | |||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * @description: 校验同姓名同手机号是否满足规则 | ||||
|      * @author: zhang jing | ||||
|      * @date: 2024/12/19 14:27 | ||||
|      * @param: [handleBusinessList] | ||||
|      * @return: java.lang.String | ||||
|      * 校验同姓名同手机号是否满足规则 | ||||
|      **/ | ||||
|     public List<BusinessErrorVO> checkNamePhone(List<BusinessMemberVO> businessMemberList) { | ||||
|         //如果只有修改姓名业务或者修改手机业务 | ||||
|  | @ -238,27 +227,8 @@ public class CuHandleBusinessController extends BaseController { | |||
|         return errorList; | ||||
|     } | ||||
| 
 | ||||
| 
 | ||||
|     /** | ||||
|      * @param CuHandleBusinessVO | ||||
|      * @return | ||||
|      */ | ||||
|     @Log(module = EOperationModule.HANDLE_BUSINESS, method = EOperationMethod.SELECT) | ||||
|     @PostMapping("/confirm") | ||||
|     public AjaxResult confirmHandleBusiness(@RequestBody HandleBusinessVO CuHandleBusinessVO) { | ||||
|         Integer pkCountry = SecurityUtils.getPkCountry(); | ||||
| 
 | ||||
| 
 | ||||
|         return null; | ||||
|     } | ||||
| 
 | ||||
| 
 | ||||
|     /** | ||||
|      * @description: 业务办理导入数据 | ||||
|      * @author: zhang jing | ||||
|      * @date: 2023/1/21 9:26 | ||||
|      * @param: [file, updateSupport] | ||||
|      * @return: com.hzs.common.core.web.domain.AjaxResult | ||||
|      * 业务办理导入数据 | ||||
|      **/ | ||||
|     @PostMapping("/importData") | ||||
|     @Log(module = EOperationModule.HANDLE_BUSINESS, business = EOperationBusiness.BASE_BUSINESS, method = EOperationMethod.IMPORT) | ||||
|  | @ -303,11 +273,7 @@ public class CuHandleBusinessController extends BaseController { | |||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * @description: 办理业务-基础业务校验 | ||||
|      * @author: zhang jing | ||||
|      * @date: 2023/1/21 10:31 | ||||
|      * @param: [businessSingleVO] | ||||
|      * @return: com.hzs.common.core.web.domain.AjaxResult | ||||
|      * 办理业务-基础业务校验 | ||||
|      **/ | ||||
|     @Log(module = EOperationModule.HANDLE_BUSINESS, business = EOperationBusiness.BASE_BUSINESS, method = EOperationMethod.SELECT) | ||||
|     @PostMapping("/businessCheck") | ||||
|  | @ -432,7 +398,7 @@ public class CuHandleBusinessController extends BaseController { | |||
|                         nuc.setMemberCode(cov.getMemberCode()); | ||||
|                         nuc.setMemberName(cov.getMemberName()); | ||||
|                         nuc.setPhone(cov.getPhone()); | ||||
|                         if(StringUtils.isNotNull(uc.getEndValidityDate())){ | ||||
|                         if (StringUtils.isNotNull(uc.getEndValidityDate())) { | ||||
|                             LocalDateTime localDateTime = uc.getEndValidityDate().toInstant() | ||||
|                                     .atZone(ZoneId.systemDefault()) | ||||
|                                     .toLocalDateTime(); | ||||
|  | @ -938,11 +904,7 @@ public class CuHandleBusinessController extends BaseController { | |||
| 
 | ||||
| 
 | ||||
|     /** | ||||
|      * @description: 校验用户余额是否充足 | ||||
|      * @author: zhang jing | ||||
|      * @date: 2023/6/7 11:33 | ||||
|      * @param: [businessSingleVO] | ||||
|      * @return: com.hzs.common.core.web.domain.AjaxResult | ||||
|      * 校验用户余额是否充足 | ||||
|      **/ | ||||
|     @Log(module = EOperationModule.HANDLE_BUSINESS, business = EOperationBusiness.BASE_BUSINESS, method = EOperationMethod.SELECT) | ||||
|     @PostMapping("/balanceCheck") | ||||
|  | @ -974,11 +936,7 @@ public class CuHandleBusinessController extends BaseController { | |||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * @description: 更新新值 | ||||
|      * @author: zhang jing | ||||
|      * @date: 2023/3/20 12:11 | ||||
|      * @param: [] | ||||
|      * @return: java.lang.String | ||||
|      * 更新新值 | ||||
|      **/ | ||||
|     private String newValue(List<Integer> businessValueList) { | ||||
|         //更新会员新值 | ||||
|  | @ -999,11 +957,7 @@ public class CuHandleBusinessController extends BaseController { | |||
| 
 | ||||
| 
 | ||||
|     /** | ||||
|      * @description: 重新申请办理业务 | ||||
|      * @author: zhang jing | ||||
|      * @date: 2023/2/1 21:47 | ||||
|      * @param: [businessMemberVO] | ||||
|      * @return: com.hzs.common.core.web.domain.AjaxResult | ||||
|      * 重新申请办理业务 | ||||
|      **/ | ||||
|     @Log(module = EOperationModule.HANDLE_BUSINESS, business = EOperationBusiness.BASE_BUSINESS, method = EOperationMethod.SUBMIT) | ||||
|     @PostMapping("/againBusiness") | ||||
|  | @ -1025,13 +979,12 @@ public class CuHandleBusinessController extends BaseController { | |||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * yh | ||||
|      * 在线签呈(发起人) | ||||
|      * | ||||
|      * @return | ||||
|      */ | ||||
|     @Log(module = EOperationModule.HANDLE_BUSINESS, business = EOperationBusiness.BASE_BUSINESS, method = EOperationMethod.SUBMIT) | ||||
|     @PostMapping("online-petition") | ||||
|     @PostMapping("/online-petition") | ||||
|     public AjaxResult signOnline(@RequestBody OnlinePetitionVo linePetitionVo) { | ||||
|         SysUser loginUser = userTokenService.getLoginUser().getLoginSysUser(); | ||||
| 
 | ||||
|  |  | |||
|  | @ -20,7 +20,6 @@ public interface ICuHandleBusinessService extends IService<CuHandleBusiness> { | |||
|      **/ | ||||
|     List<HandleBusinessShowVO> queryHandleBusinessList(HandleBusinessShowVO handleBusinessVO); | ||||
| 
 | ||||
| 
 | ||||
|     /** | ||||
|      * 保存业务办理信息 | ||||
|      * | ||||
|  |  | |||
|  | @ -127,6 +127,7 @@ public class CuHandleBusinessServiceImpl extends ServiceImpl<CuHandleBusinessMap | |||
|         //流程类型(1 免签呈 2免付费 3免签呈+免付费 4 需要签呈需要付费) | ||||
|         //更新业务办理 | ||||
|         if (processType.equals(EProcessType.AVOIDSIGNING.getValue()) || processType.equals(EProcessType.DOUBLEAVOID.getValue())) { | ||||
|             // 免签或全免 | ||||
|             result = updateBusinessMember(handleBusinessVO, loginUser); | ||||
|         } | ||||
|         //扣手续费 | ||||
|  | @ -522,11 +523,7 @@ public class CuHandleBusinessServiceImpl extends ServiceImpl<CuHandleBusinessMap | |||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * @description: 校验  handleBusinessesList的getBusinessNo是否存在重复 | ||||
|      * @author: zhang jing | ||||
|      * @date: 2024/7/10 14:37 | ||||
|      * @param: [list] | ||||
|      * @return: boolean | ||||
|      * 校验  handleBusinessesList的getBusinessNo是否存在重复 | ||||
|      **/ | ||||
|     public static boolean checkRepeat(List<CuHandleBusiness> list) { | ||||
|         Map<String, Long> counts = list.stream() | ||||
|  | @ -688,6 +685,23 @@ public class CuHandleBusinessServiceImpl extends ServiceImpl<CuHandleBusinessMap | |||
|             saveMemberAwards(handleBusinessVO, loginUser); | ||||
|             result = row > 0; | ||||
|         } | ||||
| 
 | ||||
|         if (result) { | ||||
|             // 修改是否激活,旧值为未激活,新值为激活的会员需要推MQ处理秒结状态 | ||||
|             List<Long> pkMemberList = handleBusinessVO.getBusinessMemberList().stream() | ||||
|                     .filter( | ||||
|                             tmpData -> EApprovalBusiness.IS_ACTIVATE.getValue() == tmpData.getBusinessType() | ||||
|                                     && tmpData.getOldValue().equals(EYesNo.NO.getIntValue() + "") | ||||
|                                     && tmpData.getNewValue().equals(EYesNo.YES.getIntValue() + "") | ||||
|                     ) | ||||
|                     .map(BusinessMemberVO::getPkMember) | ||||
|                     .collect(Collectors.toList()); | ||||
|             if (CollectionUtil.isNotEmpty(pkMemberList)) { | ||||
|                 // 推送会员激活处理 | ||||
|                 rabbitTemplate.convertAndSend(RabbitMqConstants.ORDER_SECOND_ACTIVATE_COMPENSATION_EXCHANGE, RabbitMqConstants.ORDER_SECOND_ACTIVATE_COMPENSATION_KEY, pkMemberList); | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
|         return result; | ||||
|     } | ||||
| 
 | ||||
|  |  | |||
|  | @ -6,24 +6,18 @@ import lombok.Data; | |||
| import lombok.NoArgsConstructor; | ||||
| 
 | ||||
| import java.io.Serializable; | ||||
| import java.math.BigDecimal; | ||||
| import java.util.List; | ||||
| 
 | ||||
| /** | ||||
|  * <p> | ||||
|  * 业务办理表Vo办理基础业务实体VO | ||||
|  * </p> | ||||
|  * | ||||
|  * @author zhangjing | ||||
|  * @since 2023-01-11 | ||||
|  */ | ||||
| @Data | ||||
| @AllArgsConstructor | ||||
| @NoArgsConstructor | ||||
| public class HandleBusinessVO implements Serializable{ | ||||
| public class HandleBusinessVO implements Serializable { | ||||
| 
 | ||||
| 
 | ||||
|     private  long serialVersionUID = -7461122780634685808L; | ||||
|     private long serialVersionUID = -7461122780634685808L; | ||||
| 
 | ||||
|     /** | ||||
|      * 会员信息集合 | ||||
|  | @ -101,6 +95,4 @@ public class HandleBusinessVO implements Serializable{ | |||
|     private BusinessTableVO btvo; | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| } | ||||
|  |  | |||
|  | @ -5,13 +5,15 @@ import cn.hutool.core.collection.CollectionUtil; | |||
| import cn.hutool.core.lang.tree.Tree; | ||||
| import cn.hutool.core.lang.tree.TreeNodeConfig; | ||||
| import cn.hutool.core.lang.tree.TreeUtil; | ||||
| import cn.hutool.core.util.ObjectUtil; | ||||
| import cn.hutool.json.JSONUtil; | ||||
| import com.baomidou.mybatisplus.core.toolkit.Wrappers; | ||||
| import com.hzs.bonus.settle.IMemberSettleBonusApi; | ||||
| import com.hzs.common.core.annotation.RepeatSubmitSimple; | ||||
| import com.hzs.common.core.config.BdConfig; | ||||
| import com.hzs.common.core.constant.SysConstants; | ||||
| import com.hzs.common.core.constant.msg.AreaConstants; | ||||
| import com.hzs.common.core.enums.*; | ||||
| import com.hzs.common.core.enums.EGrade; | ||||
| import com.hzs.common.core.enums.ENoticeWebsiteType; | ||||
| import com.hzs.common.core.enums.EYesNo; | ||||
| import com.hzs.common.core.utils.PageUtils; | ||||
| import com.hzs.common.core.web.controller.BaseController; | ||||
| import com.hzs.common.core.web.domain.AjaxResult; | ||||
|  | @ -37,7 +39,6 @@ import org.springframework.beans.factory.annotation.Autowired; | |||
| import org.springframework.web.bind.annotation.*; | ||||
| 
 | ||||
| import javax.validation.Valid; | ||||
| import java.math.BigDecimal; | ||||
| import java.util.ArrayList; | ||||
| import java.util.List; | ||||
| 
 | ||||
|  | @ -60,11 +61,6 @@ public class RetailMemberController extends BaseController { | |||
| 
 | ||||
|     @DubboReference | ||||
|     IAreaServiceApi iAreaServiceApi; | ||||
|     @DubboReference | ||||
|     IMemberSettleBonusApi iMemberSettleBonusApi; | ||||
| 
 | ||||
|     // 2025年6月11日 判断可选择收益区域的伞下+自身业绩阈值 (30万) | ||||
|     private static final BigDecimal REGIONAL_PERFORMANCE_THRESHOLD = new BigDecimal("300000"); | ||||
|     /** | ||||
|      * 获取登录会员信息 | ||||
|      * | ||||
|  | @ -117,7 +113,8 @@ public class RetailMemberController extends BaseController { | |||
|             if(EYesNo.YES.getIntValue() == cuMemberRetailRegionExt.getIsActivate()){ | ||||
|                 CuMemberRetailAchieveVO retailAchieve = iCuMemberRetailAchieveService.selectMemberSumAchieve(userId, pkCountry, systemType); | ||||
|                 log.info("retailAchieve : {}", JSONUtil.toJsonStr(retailAchieve)); | ||||
|                 if(retailAchieve.getArealPv().compareTo(REGIONAL_PERFORMANCE_THRESHOLD) >= 0){ | ||||
|                 if(ObjectUtil.isNotEmpty(retailAchieve.getArealPv()) | ||||
|                         && retailAchieve.getArealPv().compareTo(SysConstants.TOTAL_AREA_PV) >= 0){ | ||||
|                     return AjaxResult.success(RetailMemberRegionVO.builder() | ||||
|                             .regionStatus(EYesNo.YES.getIntValue()) | ||||
|                             .build()); | ||||
|  | @ -175,7 +172,7 @@ public class RetailMemberController extends BaseController { | |||
|             } | ||||
|             if(EYesNo.YES.getIntValue() == cuMemberRetailRegionExt.getIsActivate()){ | ||||
|                 CuMemberRetailAchieveVO retailAchieve = iCuMemberRetailAchieveService.selectMemberSumAchieve(userId, pkCountry, systemType); | ||||
|                 if(retailAchieve.getArealPv().compareTo(REGIONAL_PERFORMANCE_THRESHOLD) >= 0){ | ||||
|                 if(retailAchieve.getArealPv().compareTo(SysConstants.TOTAL_AREA_PV) >= 0){ | ||||
|                     canSet = true; | ||||
|                 } | ||||
|             } | ||||
|  |  | |||
|  | @ -570,7 +570,8 @@ public class CuMemberRetailAchieveServiceImpl extends ServiceImpl<CuMemberRetail | |||
|                 .memberRetailSTable(memberSecondTable) | ||||
|                 .pkMemberList(pkMemberList).systemType(systemType).build(); | ||||
|         List<CuMemberRetailDataStatisticsDetailVO> statisticsDetailVOList = baseMapper.getRetailDataStatisticsDetail(memberAchieveVO); | ||||
|         CuMemberRetailDataStatisticsResultVO result = DataStatisticsUtil.getCalcMap(statisticsDetailVOList, userId); | ||||
|         CuMember cuMember = iCuMemberService.queryMember(userId); | ||||
|         CuMemberRetailDataStatisticsResultVO result = DataStatisticsUtil.getCalcMap(statisticsDetailVOList, cuMember); | ||||
|         log.info("statisticsDetailVOList: {}", JSONUtil.toJsonStr(statisticsDetailVOList)); | ||||
|         log.info("calcMap -> {}", JSONUtil.toJsonStr(result)); | ||||
|         return result; | ||||
|  |  | |||
|  | @ -87,6 +87,7 @@ public class MemberRetailServiceImpl implements IMemberRetailService { | |||
|                     .systemType(cuMember.getSystemType()) | ||||
|                     .pkCountry(cuMember.getPkCountry()) | ||||
|                     .pkSettleCountry(cuMember.getPkSettleCountry()) | ||||
|                     .isActivate(cuMember.getIsActivate()) | ||||
|                     .build(); | ||||
|         } | ||||
|         return null; | ||||
|  |  | |||
|  | @ -1,11 +1,17 @@ | |||
| package com.hzs.retail.member.utils; | ||||
| 
 | ||||
| import cn.hutool.core.util.ObjectUtil; | ||||
| import com.hzs.common.core.enums.EYesNo; | ||||
| import com.hzs.common.domain.member.base.CuMember; | ||||
| import com.hzs.retail.member.vo.CuMemberRetailDataStatisticsDetailVO; | ||||
| import com.hzs.retail.member.vo.CuMemberRetailDataStatisticsResultVO; | ||||
| 
 | ||||
| import java.math.BigDecimal; | ||||
| import java.util.*; | ||||
| import java.math.RoundingMode; | ||||
| import java.util.ArrayList; | ||||
| import java.util.Comparator; | ||||
| import java.util.List; | ||||
| import java.util.Objects; | ||||
| 
 | ||||
| /** | ||||
|  * 用户统计数据工具 | ||||
|  | @ -21,46 +27,104 @@ public class DataStatisticsUtil { | |||
|     private static final String BIG_RANGE_VIRTUAL_NAME = "注水大区虚拟分支"; | ||||
|     private static final String SMALL_RANGE_VIRTUAL_NAME = "注水小区虚拟分支"; | ||||
| 
 | ||||
|     public static CuMemberRetailDataStatisticsResultVO getCalcMap(List<CuMemberRetailDataStatisticsDetailVO> detailVOList, Long pkId){ | ||||
|         calcDetailVOTotalField(detailVOList); | ||||
|     public static CuMemberRetailDataStatisticsResultVO getCalcMap(List<CuMemberRetailDataStatisticsDetailVO> detailVOList, CuMember cuMember){ | ||||
|         Long pkId = cuMember.getPkId(); | ||||
|         // 非激活直接返0 | ||||
|         // 激活判断上一天的ENABLE_STATUS 0为正常 1为当天激活 不计算日结数据 | ||||
|         if(EYesNo.NO.getIntValue() == cuMember.getIsActivate()){ | ||||
|             return CuMemberRetailDataStatisticsResultVO.builder() | ||||
|                     .totalBoxNum(0) | ||||
|                     .totalPv(BigDecimal.ZERO) | ||||
|                     .bigRangeTotalBoxNum(0) | ||||
|                     .bigRangeTotalPv(BigDecimal.ZERO) | ||||
|                     .smallRangeTotalBoxNum(0) | ||||
|                     .smallRangeTotalPv(BigDecimal.ZERO) | ||||
|                     .build(); | ||||
|         } | ||||
|         calcDetailVOTotalField(detailVOList, pkId); | ||||
|         addVirtualBranch(detailVOList, pkId); | ||||
|         CuMemberRetailDataStatisticsDetailVO total = getDetailVOByPKID(detailVOList, pkId); | ||||
|         CuMemberRetailDataStatisticsDetailVO bigRange = getBigRangeDetailVO(detailVOList, pkId); | ||||
|         if(EYesNo.NO.getIntValue() == cuMember.getIsActivate()){ | ||||
|             // 昨日非激活 排除昨日日结表数据 | ||||
|             excludeDailySettlementData(detailVOList); | ||||
|         }else{ | ||||
|             // 排除注水数据 | ||||
|             excludeWaterInjectionData(detailVOList); | ||||
|         } | ||||
|         Integer smallRangeTotalBoxNum = total.getTotalBoxNum() - bigRange.getTotalBoxNum(); | ||||
|         if(smallRangeTotalBoxNum < 0){ | ||||
|             smallRangeTotalBoxNum = 0; | ||||
|         } | ||||
|         BigDecimal smallRangeTotalPv = total.getTotalPv().subtract(bigRange.getTotalPv()); | ||||
|         if(smallRangeTotalPv.compareTo(BigDecimal.ZERO) < 0){ | ||||
|             smallRangeTotalPv = BigDecimal.ZERO; | ||||
|         } | ||||
|         return CuMemberRetailDataStatisticsResultVO.builder() | ||||
|                 .totalBoxNum(total.getTotalBoxNum()) | ||||
|                 .totalPv(total.getTotalPv()) | ||||
|                 .totalPv(formatPV(total.getTotalPv())) | ||||
|                 .bigRangeTotalBoxNum(bigRange.getTotalBoxNum()) | ||||
|                 .bigRangeTotalPv(bigRange.getTotalPv()) | ||||
|                 .smallRangeTotalBoxNum(total.getTotalBoxNum() - bigRange.getTotalBoxNum()) | ||||
|                 .smallRangeTotalPv(total.getTotalPv().subtract(bigRange.getTotalPv())) | ||||
|                 .bigRangeTotalPv(formatPV(bigRange.getTotalPv())) | ||||
|                 .smallRangeTotalBoxNum(smallRangeTotalBoxNum) | ||||
|                 .smallRangeTotalPv(formatPV(smallRangeTotalPv)) | ||||
|                 .build(); | ||||
|     } | ||||
|     /** | ||||
|      * 计算集合内数据总数 | ||||
|      * @param detailVOList | ||||
|      */ | ||||
|     public static void calcDetailVOTotalField(List<CuMemberRetailDataStatisticsDetailVO> detailVOList){ | ||||
|     public static void calcDetailVOTotalField(List<CuMemberRetailDataStatisticsDetailVO> detailVOList, Long pkId){ | ||||
|         detailVOList.parallelStream().forEach(detailVO -> { | ||||
|             detailVO.setTotalBoxNum( | ||||
|                     detailVO.getConsumeBoxNum()         // 个人累计消费盒数(日结) | ||||
|                      + detailVO.getNewBoxNum()          // 个人新增盒数(日结) | ||||
| //                     + detailVO.getNewBoxNum()          // 个人新增盒数(日结) | ||||
|                      + detailVO.getTeamBoxNum()         // 团队累计消费盒数(日结) | ||||
|                      + detailVO.getTeamNewBoxNum()      // 团队新增盒数(日结) | ||||
| //                     + detailVO.getTeamNewBoxNum()      // 团队新增盒数(日结) | ||||
|                      + detailVO.getSNewBoxNum()         // 个人新增消费盒数(秒结) | ||||
|                      + detailVO.getSTeamNewBoxNum()     // 团队新增盒数(秒结) | ||||
| //                     - detailVO.getBigBoxNum()          // 个人注水大区盒数(日结) | ||||
| //                     - detailVO.getSmallBoxNum()        // 个人注水小区盒数(日结) | ||||
|             ); | ||||
|             detailVO.setTotalPv(detailVO.getConsumePv() | ||||
|                     .add(detailVO.getNewConsumePv()) | ||||
|             detailVO.setTotalPv( | ||||
|                     detailVO.getConsumePv() | ||||
| //                    .add(detailVO.getNewConsumePv()) | ||||
|                     .add(detailVO.getTeamConsumePv()) | ||||
|                     .add(detailVO.getTeamNewPv()) | ||||
| //                    .add(detailVO.getTeamNewPv()) | ||||
|                     .add(detailVO.getSNewConsumePv()) | ||||
|                     .add(detailVO.getSTeamNewPv()) | ||||
|             ); | ||||
|         }); | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * 排除昨日日结数据 | ||||
|      * @param detailVOList | ||||
|      */ | ||||
|     public static void excludeDailySettlementData(List<CuMemberRetailDataStatisticsDetailVO> detailVOList){ | ||||
|         detailVOList.parallelStream().forEach(detailVO -> { | ||||
|             detailVO.setTotalBoxNum( | ||||
|                     detailVO.getTotalBoxNum() | ||||
|                     - detailVO.getTeamBoxNum()          // 团队累计消费盒数(日结) | ||||
|             ); | ||||
|             detailVO.setTotalPv( | ||||
|                     detailVO.getTotalPv().subtract(detailVO.getTeamConsumePv()) | ||||
|             ); | ||||
|         }); | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * 排除昨日日结注水数据 | ||||
|      * @param detailVOList | ||||
|      */ | ||||
|     public static void excludeWaterInjectionData(List<CuMemberRetailDataStatisticsDetailVO> detailVOList){ | ||||
|         detailVOList.parallelStream().forEach(detailVO -> { | ||||
|             detailVO.setTotalBoxNum( | ||||
|                     detailVO.getTotalBoxNum() | ||||
|                             - detailVO.getBigBoxNum()               // 注水大区 | ||||
|                             - detailVO.getSmallBoxNum()             // 注水小区 | ||||
|             ); | ||||
|         }); | ||||
|     } | ||||
|     /** | ||||
|      * 增加虚拟分支 主要为 | ||||
|      * 1.自己的消费总数 | ||||
|  | @ -79,12 +143,16 @@ public class DataStatisticsUtil { | |||
|                         .memberCode(BIG_RANGE_VIRTUAL_NAME) | ||||
|                         .totalBoxNum(detailVO.getBigBoxNum()) | ||||
|                         .totalPv(BigDecimal.ZERO) | ||||
|                         .bigBoxNum(0) | ||||
|                         .smallBoxNum(0) | ||||
|                         .build(); | ||||
|                 CuMemberRetailDataStatisticsDetailVO smallRangeVirtualDetailVO = CuMemberRetailDataStatisticsDetailVO.builder() | ||||
|                         .pkId(SMALL_RANGE_VIRTUAL_ID) | ||||
|                         .memberCode(SMALL_RANGE_VIRTUAL_NAME) | ||||
|                         .totalBoxNum(detailVO.getBigBoxNum()) | ||||
|                         .totalPv(BigDecimal.ZERO) | ||||
|                         .bigBoxNum(0) | ||||
|                         .smallBoxNum(0) | ||||
|                         .build(); | ||||
|                 detailVOList.add(bigRangeVirtualDetailVO); | ||||
|                 detailVOList.add(smallRangeVirtualDetailVO); | ||||
|  | @ -107,6 +175,8 @@ public class DataStatisticsUtil { | |||
|                                 .add(detailVO.getNewConsumePv()) | ||||
|                                 .add(detailVO.getSNewConsumePv()) | ||||
|                 ) | ||||
|                 .bigBoxNum(0) | ||||
|                 .smallBoxNum(0) | ||||
|                 .build(); | ||||
|     } | ||||
| 
 | ||||
|  | @ -137,20 +207,27 @@ public class DataStatisticsUtil { | |||
|      * @return | ||||
|      */ | ||||
|     public static CuMemberRetailDataStatisticsDetailVO getDetailVOByPKID(List<CuMemberRetailDataStatisticsDetailVO> detailVOList, Long pkId){ | ||||
|         return detailVOList.stream().filter(o -> o.getPkId().equals(pkId)).findFirst().orElse(null); | ||||
|         return detailVOList.parallelStream().filter(o -> o.getPkId().equals(pkId)).findFirst().orElse(null); | ||||
|     } | ||||
| 
 | ||||
|     private static Integer getMaxTotalBoxNum(List<CuMemberRetailDataStatisticsDetailVO> detailVOList) { | ||||
|         return detailVOList.stream() | ||||
|         return detailVOList.parallelStream() | ||||
|                 .map(CuMemberRetailDataStatisticsDetailVO::getTotalBoxNum) | ||||
|                 .filter(Objects::nonNull) | ||||
|                 .max(Integer::compare) | ||||
|                 .orElse(null); | ||||
|     } | ||||
|     private static CuMemberRetailDataStatisticsDetailVO getBigRangeDetailVO(List<CuMemberRetailDataStatisticsDetailVO> detailVOList, Long pkId){ | ||||
|         return detailVOList.stream() | ||||
|         return detailVOList.parallelStream() | ||||
|                 .filter(vo -> vo.getTotalBoxNum() != null && !vo.getPkId().equals(pkId)) | ||||
|                 .max(Comparator.comparingInt(CuMemberRetailDataStatisticsDetailVO::getTotalBoxNum)) | ||||
|                 .orElse(null); | ||||
|     } | ||||
|     public static BigDecimal formatPV(BigDecimal pv){ | ||||
|         return pv.divide( | ||||
|                 new BigDecimal("10000"), | ||||
|                 4, | ||||
|                 RoundingMode.FLOOR | ||||
|         ); | ||||
|     } | ||||
| } | ||||
|  |  | |||
|  | @ -1,7 +1,6 @@ | |||
| package com.hzs.retail.member.vo; | ||||
| 
 | ||||
| import com.fasterxml.jackson.annotation.JsonFormat; | ||||
| import com.fasterxml.jackson.annotation.JsonIgnore; | ||||
| import com.hzs.common.core.annotation.BigDecimalFormat; | ||||
| import lombok.AllArgsConstructor; | ||||
| import lombok.Builder; | ||||
|  | @ -17,12 +16,6 @@ import java.util.List; | |||
| 
 | ||||
| /** | ||||
|  * 会员业绩 | ||||
|  * | ||||
|  * @Description: | ||||
|  * @Author: ljc | ||||
|  * @Time: 2023/5/5 20:08 | ||||
|  * @Classname: CuMemberAwardsUnderVO | ||||
|  * @Package_name: com.hzs.member.achieve.vo | ||||
|  */ | ||||
| @Data | ||||
| @Builder | ||||
|  |  | |||
|  | @ -29,6 +29,11 @@ public class CuMemberRetailDataStatisticsDetailVO implements Serializable { | |||
|      */ | ||||
|     private String memberCode; | ||||
| 
 | ||||
|     /** | ||||
|      * 激活状态 | ||||
|      */ | ||||
|     private Integer enableStatus; | ||||
| 
 | ||||
|     /** | ||||
|      * 日结表-个人累计消费pv | ||||
|      */ | ||||
|  |  | |||
|  | @ -1,5 +1,6 @@ | |||
| package com.hzs.retail.member.vo; | ||||
| 
 | ||||
| import com.hzs.common.core.annotation.BigDecimalFormat; | ||||
| import lombok.AllArgsConstructor; | ||||
| import lombok.Builder; | ||||
| import lombok.Data; | ||||
|  | @ -45,14 +46,17 @@ public class CuMemberRetailDataStatisticsResultVO implements Serializable { | |||
|     /** | ||||
|      * 总业绩 | ||||
|      */ | ||||
|     @BigDecimalFormat | ||||
|     private BigDecimal totalPv; | ||||
|     /** | ||||
|      * 大区业绩 | ||||
|      */ | ||||
|     @BigDecimalFormat | ||||
|     private BigDecimal bigRangeTotalPv; | ||||
|     /** | ||||
|      * 小区业绩 | ||||
|      */ | ||||
|     @BigDecimalFormat | ||||
|     private BigDecimal smallRangeTotalPv; | ||||
| } | ||||
| 
 | ||||
|  |  | |||
|  | @ -127,4 +127,9 @@ public class RetailMemberInfoVO implements Serializable { | |||
|      */ | ||||
|     private Integer systemType; | ||||
| 
 | ||||
|     /** | ||||
|      * 是否激活(0=是,1=否) | ||||
|      */ | ||||
|     private Integer isActivate; | ||||
| 
 | ||||
| } | ||||
|  |  | |||
|  | @ -841,6 +841,7 @@ | |||
|         SELECT | ||||
|             cu.pk_id, | ||||
|             cu.MEMBER_CODE, | ||||
|             mr.ENABLE_STATUS, | ||||
|             NVL( mr.CONSUME_PV, 0 ) consumePv, | ||||
|             NVL( mr.NEW_CONSUME_PV, 0 ) newConsumePv, | ||||
|             NVL( mr.TEAM_CONSUME_PV, 0 ) teamConsumePv, | ||||
|  |  | |||
|  | @ -1,6 +1,5 @@ | |||
| package com.hzs.common.core.config; | ||||
| 
 | ||||
| import cn.hutool.json.JSONUtil; | ||||
| import com.fasterxml.jackson.core.JsonGenerator; | ||||
| import com.fasterxml.jackson.databind.BeanProperty; | ||||
| import com.fasterxml.jackson.databind.JsonMappingException; | ||||
|  | @ -8,14 +7,11 @@ import com.fasterxml.jackson.databind.JsonSerializer; | |||
| import com.fasterxml.jackson.databind.SerializerProvider; | ||||
| import com.fasterxml.jackson.databind.ser.ContextualSerializer; | ||||
| import com.hzs.common.core.annotation.BigDecimalFormat; | ||||
| import com.hzs.common.core.constant.CacheConstants; | ||||
| import com.hzs.common.core.context.SecurityContextHolder; | ||||
| import com.hzs.common.core.service.RedisService; | ||||
| import org.springframework.beans.factory.annotation.Autowired; | ||||
| import org.springframework.boot.jackson.JsonComponent; | ||||
| 
 | ||||
| import java.io.IOException; | ||||
| import java.math.BigDecimal; | ||||
| import java.math.RoundingMode; | ||||
| import java.text.DecimalFormat; | ||||
| import java.util.Objects; | ||||
| 
 | ||||
|  | @ -28,15 +24,6 @@ public class BigDecimalSerializer extends JsonSerializer<BigDecimal> implements | |||
|     // 默认保留2位小数 | ||||
|     private String format = "#0.00"; | ||||
| 
 | ||||
|     private String zeroFormat = "#0"; | ||||
| 
 | ||||
|     private RedisService redisService; | ||||
| 
 | ||||
|     @Autowired | ||||
|     public void setRedisService(RedisService redisService) { | ||||
|         this.redisService = redisService; | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * 序列化处理方式 | ||||
|      * | ||||
|  | @ -47,12 +34,10 @@ public class BigDecimalSerializer extends JsonSerializer<BigDecimal> implements | |||
|      */ | ||||
|     @Override | ||||
|     public void serialize(BigDecimal bigDecimal, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException { | ||||
| //        if(ComputeUtil.compareEqual(ComputeUtil.computeSubtract(bigDecimal, bigDecimal.setScale(0, RoundingMode.DOWN)), BigDecimal.ZERO)){ | ||||
| //            jsonGenerator.writeString(new DecimalFormat(zeroFormat).format(bigDecimal)); | ||||
| //        }else{ | ||||
| //            jsonGenerator.writeString(bigDecimal.setScale(6, RoundingMode.HALF_UP).stripTrailingZeros().toString()); | ||||
|         jsonGenerator.writeString(new DecimalFormat(format).format(bigDecimal)); | ||||
| //        } | ||||
|         DecimalFormat decimalFormat = new DecimalFormat(format); | ||||
|         // 改为使用去尾方式显示 | ||||
|         decimalFormat.setRoundingMode(RoundingMode.DOWN); | ||||
|         jsonGenerator.writeString(decimalFormat.format(bigDecimal)); | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|  | @ -66,15 +51,13 @@ public class BigDecimalSerializer extends JsonSerializer<BigDecimal> implements | |||
|     @Override | ||||
|     public JsonSerializer<?> createContextual(SerializerProvider serializerProvider, BeanProperty beanProperty) throws JsonMappingException { | ||||
|         if (beanProperty != null) { | ||||
|             Object bdCountry = redisService.getCacheObject(CacheConstants.BD_COUNTRY + SecurityContextHolder.getUserCountry()); | ||||
|             if (Objects.equals(beanProperty.getType().getRawClass(), BigDecimal.class)) { | ||||
|                 BigDecimalFormat bigDecimalFormat = beanProperty.getAnnotation((BigDecimalFormat.class)); | ||||
|                 if (bigDecimalFormat == null) { | ||||
|                     bigDecimalFormat = beanProperty.getContextAnnotation(BigDecimalFormat.class); | ||||
|                 } | ||||
|                 BigDecimalSerializer bigDecimalSerializer = new BigDecimalSerializer(); | ||||
|                 int numberPlaces = Integer.parseInt(JSONUtil.parseObj(bdCountry).get("numberPlaces").toString()); | ||||
|                 bigDecimalSerializer.format = replaceNumber(numberPlaces); | ||||
|                 bigDecimalSerializer.format = replaceNumber(); | ||||
|                 if (bigDecimalFormat != null) { | ||||
|                     bigDecimalSerializer.format = bigDecimalFormat.value(); | ||||
|                 } | ||||
|  | @ -85,11 +68,12 @@ public class BigDecimalSerializer extends JsonSerializer<BigDecimal> implements | |||
|         return new BigDecimalSerializer(); | ||||
|     } | ||||
| 
 | ||||
|     private String replaceNumber(int numberPlaces) { | ||||
|     private String replaceNumber() { | ||||
|         StringBuilder number = new StringBuilder("#0."); | ||||
|         for (int i = 0; i < numberPlaces; i++) { | ||||
|         for (int i = 0; i < 6; i++) { | ||||
|             number.append("0"); | ||||
|         } | ||||
|         return number.toString(); | ||||
|     } | ||||
| 
 | ||||
| } | ||||
|  |  | |||
|  | @ -37,6 +37,21 @@ public class RabbitMqConstants { | |||
|      */ | ||||
|     public static final String ORDER_SECOND_KEY = PREFIX + "order.second.key"; | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
|     /** | ||||
|      * 奖金秒接-激活补偿 exchange | ||||
|      */ | ||||
|     public static final String ORDER_SECOND_ACTIVATE_COMPENSATION_EXCHANGE = PREFIX + "order.second_activate_compensation.exchange"; | ||||
|     /** | ||||
|      * 奖金秒接-激活补偿 queue | ||||
|      */ | ||||
|     public static final String ORDER_SECOND_ACTIVATE_COMPENSATION_QUEUE = PREFIX + "order.second_activate_compensation.queue"; | ||||
|     /** | ||||
|      * 奖金秒接-激活补偿 key | ||||
|      */ | ||||
|     public static final String ORDER_SECOND_ACTIVATE_COMPENSATION_KEY = PREFIX + "order.second_activate_compensation.key"; | ||||
| 
 | ||||
|     /** | ||||
|      * 活动 exchange | ||||
|      */ | ||||
|  |  | |||
|  | @ -4,12 +4,7 @@ import lombok.AllArgsConstructor; | |||
| import lombok.Getter; | ||||
| 
 | ||||
| /** | ||||
|  * @description: 封顶方式 | ||||
|  * @author: sui q | ||||
|  * @time: 2023/7/15 15:08 | ||||
|  * @classname: ExpandCapMethod | ||||
|  * @package_name: com.hzs.common.core.enums | ||||
|  * version 1.0.0 | ||||
|  * 封顶方式 | ||||
|  */ | ||||
| @AllArgsConstructor | ||||
| @Getter | ||||
|  |  | |||
|  | @ -5,11 +5,7 @@ import lombok.AllArgsConstructor; | |||
| import lombok.Getter; | ||||
| 
 | ||||
| /** | ||||
|  * @Description: 签呈流程类型 | ||||
|  * @Author: jiang chao | ||||
|  * @Time: 2022/11/10 17:35 | ||||
|  * @Classname: ESignType | ||||
|  * @PackageName: com.hzs.common.core.enums | ||||
|  * 签呈流程类型 | ||||
|  */ | ||||
| @AllArgsConstructor | ||||
| @Getter | ||||
|  |  | |||
|  | @ -5,11 +5,7 @@ import lombok.Data; | |||
| import java.util.List; | ||||
| 
 | ||||
| /** | ||||
|  * @Description: 基础权限基数 | ||||
|  * @Author: jiang chao | ||||
|  * @Time: 2023/5/22 15:48 | ||||
|  * @Classname: BaseAuthorityEntity | ||||
|  * @PackageName: com.hzs.common.core.web.domain | ||||
|  * 基础权限基数 | ||||
|  */ | ||||
| @Data | ||||
| public class BaseAuthorityEntity { | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue