Compare commits

..

14 Commits

Author SHA1 Message Date
cabbage 8eebb3fdfa ## 奖金明细、奖金汇总接口调整; 2025-06-13 14:22:05 +08:00
cabbage e064d87223 ## 使用BigDecimalFormat注解,默认不用四舍五入改为去尾; 2025-06-13 14:22:03 +08:00
sangelxiu1 dc70bc6db7 ## Opt - 我的->盒数
业绩除万,四位小数
2025-06-13 14:22:01 +08:00
cabbage c589c2461c ## 计算平级时,保留6位小数; 2025-06-13 14:22:00 +08:00
cabbage 99317636cc ## 查询昨日奖金汇总接口; 2025-06-13 14:21:58 +08:00
sangelxiu1 fea41d6ccd ## Opt - 我的->盒数
增加激活时间判断 & 计算达小区时包含注水,返回前台数据时剔出注水
2025-06-13 14:21:56 +08:00
sangelxiu1 3873adb2cd ## Fix - 新用户后台改等级 没有日结造成npe 2025-06-13 14:21:54 +08:00
cabbage d2188ab2b0 ## 后台办理业务手动激活推送秒结状态MQ; 2025-06-13 14:18:04 +08:00
sangelxiu1 1f8d4a2b50 ## Feat - 新增秒结补偿MQ逻辑
查当前ID伞下秒结表的sum(NEW_BOX_NUM)更新至当前用户的TEAM_NEW_BOX_NUM
2025-06-13 14:17:06 +08:00
cabbage dcead29539 ## 后台办理业务手动激活推送秒结状态MQ; 2025-06-13 14:17:04 +08:00
cabbage 44e36f5abe ## 升级订单添加激活MQ推送; 2025-06-13 14:17:02 +08:00
sangelxiu1 ccb3e91a54 ## Feat - 新增秒结补偿MQ定义 2025-06-13 14:16:59 +08:00
cabbage 896597ac53 ## get-info返回是否激活; 2025-06-13 14:16:58 +08:00
woody 3b87d98457 feat(MemberEmptyService): 空单注册不校验手机号 2025-06-13 14:16:56 +08:00
33 changed files with 472 additions and 472 deletions

View File

@ -32,49 +32,10 @@ import java.util.List;
public class ApiCuMemberBonusController extends BaseController { public class ApiCuMemberBonusController extends BaseController {
@Autowired @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") @PostMapping("/query-current-bonus")
public TableDataInfo listCurrentBonus(@RequestBody BonusParam bonusParam) { 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.setEndDate(DateUtils.afterDate(1, ChronoUnit.DAYS, DateUtils.currentDate()));
bonusParam.setGrantStatus(EGrantStatus.SETTLED.getValue()); bonusParam.setGrantStatus(EGrantStatus.SETTLED.getValue());
List<CuMemberBonusExt> cuMemberBonusList = cuMemberBonusService.queryMemberSecondBonusVoByCondition(bonusParam); List<CuMemberBonusExt> cuMemberBonusList = iCuMemberBonusService.queryMemberSecondBonusVoByCondition(bonusParam);
List<MemberBonusVO> memberBonusVOList = new ArrayList<>(); List<MemberBonusVO> memberBonusVOList = new ArrayList<>();
cuMemberBonusList.forEach(cuMemberBonus -> { cuMemberBonusList.forEach(cuMemberBonus -> {
if (ComputeUtil.compareValue(cuMemberBonus.getRealIncomeTotal())) { 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") @PostMapping("/query-bonus-total")
public TableDataInfo lisBonusTotal(@RequestBody BonusParam bonusParam) { public TableDataInfo lisBonusTotal(@RequestBody BonusParam bonusParam) {
bonusParam.setPkCountry(SecurityUtils.getPkCountry()); bonusParam.setPkCountry(SecurityUtils.getPkCountry());
bonusParam.setPkMember(SecurityUtils.getUserId()); bonusParam.setPkMember(SecurityUtils.getUserId());
// bonusParam.setStartDate(DateUtils.beforeDate(1, ChronoUnit.DAYS)); bonusParam.setEndDate(DateUtils.currentDate());
// bonusParam.setEndDate(DateUtils.currentDate()); bonusParam.setStartDate(DateUtils.beforeDate(1, ChronoUnit.DAYS, bonusParam.getEndDate()));
bonusParam.setStartDate(DateUtils.currentDate());
bonusParam.setGrantStatus(EGrantStatus.SETTLED.getValue()); List<CuMemberBonusExt> cuMemberBonusList = iCuMemberBonusService.queryMemberBonusTotalByCondition(bonusParam);
bonusParam.setEndDate(DateUtils.afterDate(1, ChronoUnit.DAYS));
List<CuMemberBonusExt> cuMemberBonusList = cuMemberBonusService.queryMemberBonusTotalByCondition(bonusParam);
MemberRealIncomeVO memberRealIncomeVO = new MemberRealIncomeVO(); MemberRealIncomeVO memberRealIncomeVO = new MemberRealIncomeVO();
if (CollectionUtil.isEmpty(cuMemberBonusList)) { if (CollectionUtil.isEmpty(cuMemberBonusList)) {
memberRealIncomeVO.setRealIncomeTotal(BigDecimal.ZERO); memberRealIncomeVO.setRealIncomeTotal(BigDecimal.ZERO);
} else { } 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)); return getDataTable(Collections.singletonList(memberRealIncomeVO));
} }
@ -129,7 +108,7 @@ public class ApiCuMemberBonusController extends BaseController {
@PostMapping("/query-bonus-repurchase") @PostMapping("/query-bonus-repurchase")
public TableDataInfo listRepurchaseBonus(@RequestBody BonusParam bonusParam) { public TableDataInfo listRepurchaseBonus(@RequestBody BonusParam bonusParam) {
setBonusParam(bonusParam); setBonusParam(bonusParam);
List<CuMemberBonusExt> cuMemberBonusList = cuMemberBonusService.queryMemberBonusVoByCondition(bonusParam); List<CuMemberBonusExt> cuMemberBonusList = iCuMemberBonusService.queryMemberBonusVoByCondition(bonusParam);
List<MemberBonusPurchaseVO> memberBonusPurchaseVoList = new ArrayList<>(); List<MemberBonusPurchaseVO> memberBonusPurchaseVoList = new ArrayList<>();
cuMemberBonusList.forEach(cuMemberBonus -> { cuMemberBonusList.forEach(cuMemberBonus -> {
MemberBonusPurchaseVO memberBonusPurchaseVO = BeanUtil.copyProperties(cuMemberBonus, MemberBonusPurchaseVO.class, "settleDate"); MemberBonusPurchaseVO memberBonusPurchaseVO = BeanUtil.copyProperties(cuMemberBonus, MemberBonusPurchaseVO.class, "settleDate");
@ -141,7 +120,6 @@ public class ApiCuMemberBonusController extends BaseController {
memberBonusPurchaseVO.getRetailRealSubtotal()); memberBonusPurchaseVO.getRetailRealSubtotal());
memberBonusPurchaseVO.setBackPoints(serviceSpend); memberBonusPurchaseVO.setBackPoints(serviceSpend);
memberBonusPurchaseVO.setRetailBenefitIncome(ComputeUtil.computeAdd(memberBonusPurchaseVO.getRetailBenefitIncome(), memberBonusPurchaseVO.getRetailBenefitAvgIncome())); memberBonusPurchaseVO.setRetailBenefitIncome(ComputeUtil.computeAdd(memberBonusPurchaseVO.getRetailBenefitIncome(), memberBonusPurchaseVO.getRetailBenefitAvgIncome()));
// memberBonusPurchaseVO.setServiceSpend(ComputeUtil.computeMultiplyHalf(serviceSpend));
memberBonusPurchaseVoList.add(memberBonusPurchaseVO); memberBonusPurchaseVoList.add(memberBonusPurchaseVO);
}); });
return getDataTable(memberBonusPurchaseVoList); return getDataTable(memberBonusPurchaseVoList);
@ -153,7 +131,7 @@ public class ApiCuMemberBonusController extends BaseController {
@PostMapping("/query-bonus-hi-fun") @PostMapping("/query-bonus-hi-fun")
public TableDataInfo listHiFunBonus(@RequestBody BonusParam bonusParam) { public TableDataInfo listHiFunBonus(@RequestBody BonusParam bonusParam) {
setBonusParam(bonusParam); setBonusParam(bonusParam);
List<CuMemberBonusExt> cuMemberBonusList = cuMemberBonusService.queryMemberBonusVoByCondition(bonusParam); List<CuMemberBonusExt> cuMemberBonusList = iCuMemberBonusService.queryMemberBonusVoByCondition(bonusParam);
List<MemberBonusHiFunVO> bonusHiFunVoList = new ArrayList<>(); List<MemberBonusHiFunVO> bonusHiFunVoList = new ArrayList<>();
cuMemberBonusList.forEach(cuMemberBonus -> { cuMemberBonusList.forEach(cuMemberBonus -> {
MemberBonusHiFunVO memberBonusHiFunVO = BeanUtil.copyProperties(cuMemberBonus, MemberBonusHiFunVO.class, "settleDate"); MemberBonusHiFunVO memberBonusHiFunVO = BeanUtil.copyProperties(cuMemberBonus, MemberBonusHiFunVO.class, "settleDate");
@ -177,6 +155,7 @@ public class ApiCuMemberBonusController extends BaseController {
private void setBonusParam(@RequestBody BonusParam bonusParam) { private void setBonusParam(@RequestBody BonusParam bonusParam) {
bonusParam.setPkCountry(SecurityUtils.getPkCountry()); bonusParam.setPkCountry(SecurityUtils.getPkCountry());
bonusParam.setPkMember(SecurityUtils.getUserId()); bonusParam.setPkMember(SecurityUtils.getUserId());
Date startDate = DateUtils.beforeDate(15, ChronoUnit.DAYS, DateUtils.currentDate()); Date startDate = DateUtils.beforeDate(15, ChronoUnit.DAYS, DateUtils.currentDate());
if (bonusParam.getStartDate() == null) { if (bonusParam.getStartDate() == null) {
bonusParam.setStartDate(startDate); bonusParam.setStartDate(startDate);
@ -197,14 +176,7 @@ public class ApiCuMemberBonusController extends BaseController {
public TableDataInfo listBonusSource(@RequestBody BonusParam bonusParam) { public TableDataInfo listBonusSource(@RequestBody BonusParam bonusParam) {
setBonusParam(bonusParam); setBonusParam(bonusParam);
startPage(); startPage();
// List<MemberBonusVO> memberBonusVoList = new ArrayList<>(); TableDataInfo tableDataInfo = iCuMemberBonusService.queryMemberBonusDetailVoByCondition(bonusParam);
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);
return tableDataInfo; return tableDataInfo;
} }

View File

@ -9,12 +9,7 @@ import org.apache.ibatis.annotations.Param;
import java.util.List; import java.util.List;
/** /**
* <p>
* 会员奖金-会员奖金汇总表 Mapper 接口 * 会员奖金-会员奖金汇总表 Mapper 接口
* </p>
*
* @author hzs
* @since 2022-11-11
*/ */
public interface CuMemberBonusMapper extends BaseMapper<CuMemberBonus> { public interface CuMemberBonusMapper extends BaseMapper<CuMemberBonus> {
@ -22,9 +17,6 @@ public interface CuMemberBonusMapper extends BaseMapper<CuMemberBonus> {
* 批量获取cuMemberBonus主键 * 批量获取cuMemberBonus主键
* *
* @param rowNum 数量 * @param rowNum 数量
* @return: List<Integer>
* @Author: sui q
* @Date: 2022/12/13 13:47
*/ */
List<Long> batchQueryCuMemberBonusSeq(Integer rowNum); List<Long> batchQueryCuMemberBonusSeq(Integer rowNum);
@ -32,9 +24,6 @@ public interface CuMemberBonusMapper extends BaseMapper<CuMemberBonus> {
* 根据查询条件查询会员奖金 * 根据查询条件查询会员奖金
* *
* @param bonusParam 查询条件 * @param bonusParam 查询条件
* @return: List<MemberBonusVO>
* @Author: sui q
* @Date: 2023/1/13 11:27
*/ */
List<CuMemberBonus> queryMemberBonusTotalByCondition(BonusParam bonusParam); List<CuMemberBonus> queryMemberBonusTotalByCondition(BonusParam bonusParam);
@ -42,9 +31,6 @@ public interface CuMemberBonusMapper extends BaseMapper<CuMemberBonus> {
* 根据查询条件查询会员奖金 * 根据查询条件查询会员奖金
* *
* @param bonusParam 查询条件 * @param bonusParam 查询条件
* @return: List<MemberBonusVO>
* @Author: sui q
* @Date: 2023/1/13 11:27
*/ */
List<CuMemberBonusExt> queryMemberBonusByCondition(BonusParam bonusParam); List<CuMemberBonusExt> queryMemberBonusByCondition(BonusParam bonusParam);
@ -52,30 +38,19 @@ public interface CuMemberBonusMapper extends BaseMapper<CuMemberBonus> {
* 根据查询条件查询会员奖金 * 根据查询条件查询会员奖金
* *
* @param bonusParam 查询条件 * @param bonusParam 查询条件
* @return: List<MemberBonusVO>
* @Author: sui q
* @Date: 2023/1/13 11:27
*/ */
List<CuMemberBonusExt> queryMemberBonusByConditionForServer(@Param("bonusParam") BonusParam bonusParam); 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); CuMemberBonusExt queryMemberBonusByConditionForServerSum(@Param("bonusParam") BonusParam bonusParam);
/** /**
* 根据查询条件查询会员奖金 * 根据查询条件查询会员奖金
* *
* @param bonusParam 查询条件 * @param bonusParam 查询条件
* @return: List<MemberBonusVO>
* @Author: sui q
* @Date: 2023/1/13 11:27
*/ */
List<CuMemberBonusExt> queryBonusTotalVoByConditionForServer(@Param("bonusParam") BonusParam bonusParam); List<CuMemberBonusExt> queryBonusTotalVoByConditionForServer(@Param("bonusParam") BonusParam bonusParam);
@ -83,9 +58,6 @@ public interface CuMemberBonusMapper extends BaseMapper<CuMemberBonus> {
* 删除会员奖金汇总表 * 删除会员奖金汇总表
* *
* @param period 结算期间 * @param period 结算期间
* @return: void
* @Author: sui q
* @Date: 2022/12/13 11:54
*/ */
void deleteCuMemberBonus(Integer period); void deleteCuMemberBonus(Integer period);
@ -93,9 +65,6 @@ public interface CuMemberBonusMapper extends BaseMapper<CuMemberBonus> {
* 批量插入会员奖金主表 * 批量插入会员奖金主表
* *
* @param cuMemberBonusList 会员奖金 * @param cuMemberBonusList 会员奖金
* @return: void
* @Author: sui q
* @Date: 2022/12/13 13:56
*/ */
void batchInsertCuMemberBonus(@Param("cuMemberBonusList") List<?> cuMemberBonusList); void batchInsertCuMemberBonus(@Param("cuMemberBonusList") List<?> cuMemberBonusList);
@ -103,9 +72,6 @@ public interface CuMemberBonusMapper extends BaseMapper<CuMemberBonus> {
* 批量插入会员奖金主表 * 批量插入会员奖金主表
* *
* @param cuMemberBonusList 会员奖金 * @param cuMemberBonusList 会员奖金
* @return: void
* @Author: sui q
* @Date: 2022/12/13 13:56
*/ */
void insertOrUpdateCuMemberBonus(@Param("cuMemberBonusList") List<CuMemberBonus> cuMemberBonusList); void insertOrUpdateCuMemberBonus(@Param("cuMemberBonusList") List<CuMemberBonus> cuMemberBonusList);
@ -114,27 +80,20 @@ public interface CuMemberBonusMapper extends BaseMapper<CuMemberBonus> {
* *
* @param grantStatus 发放状态 * @param grantStatus 发放状态
* @param oldGrantStatus 原来的发放状态 * @param oldGrantStatus 原来的发放状态
* @return: Boolean
* @Author: sui q
* @Date: 2023/3/20 17:21
*/ */
Integer updateCuMemberBonusStatus(@Param("pkCountry") Integer pkCountry, @Param("grantStatus") Integer grantStatus, Integer updateCuMemberBonusStatus(@Param("pkCountry") Integer pkCountry, @Param("grantStatus") Integer grantStatus,
@Param("oldGrantStatus") Integer oldGrantStatus, @Param("startPeriod") Integer startPeriod, @Param("oldGrantStatus") Integer oldGrantStatus, @Param("startPeriod") Integer startPeriod,
@Param("endPeriod") Integer endPeriod); @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); 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); List<CuMemberBonus> queryWeekMemberBonus(@Param("startPeriod") int startPeriod, @Param("endPeriod") int endPeriod);
void recalculateTeamNewBoxNum(@Param("pkId") Long pkId, @Param("retailsTableName") String retailsTableName);
} }

View File

@ -2,17 +2,12 @@ package com.hzs.bonus.bonus.param;
import com.hzs.common.core.web.domain.BaseAuthorityEntity; import com.hzs.common.core.web.domain.BaseAuthorityEntity;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
/** @EqualsAndHashCode(callSuper = true)
* @Description:
* @Author: sui q
* @Time: 2023/1/13 9:44
* @Classname: BonusParam
* @PackageName: com.hzs.member.bonus.param
*/
@Data @Data
public class BonusParam extends BaseAuthorityEntity { public class BonusParam extends BaseAuthorityEntity {

View File

@ -1,11 +1,11 @@
package com.hzs.bonus.bonus.service; package com.hzs.bonus.bonus.service;
import com.baomidou.mybatisplus.extension.service.IService; 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.core.web.page.TableDataInfo;
import com.hzs.common.domain.member.bonus.CuMemberBonus; import com.hzs.common.domain.member.bonus.CuMemberBonus;
import com.hzs.common.domain.member.ext.CuMemberBonusExt; 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.Date;
import java.util.List; import java.util.List;
@ -165,4 +165,12 @@ public interface ICuMemberBonusService extends IService<CuMemberBonus> {
void calculateBonusTotal(CuMemberBonusExt cuMemberBonusExt, CuMemberBonusExt memberBonusExt); void calculateBonusTotal(CuMemberBonusExt cuMemberBonusExt, CuMemberBonusExt memberBonusExt);
CuMemberBonusExt initCuMemberBonus(); CuMemberBonusExt initCuMemberBonus();
/**
* 用户激活后会抛出MQ
* 在此需要补偿该用户的当日秒结的团队新增
*
* @param pkIdList
*/
void recalculateTeamNewBoxNum(List<Long> pkIdList);
} }

View File

@ -1355,8 +1355,8 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
} }
continue; continue;
} }
// 平级收益商品价格 * 千分之五 -- 2位小数四舍五入 // 平级收益商品价格 * 千分之五 -- 6位小数四舍五入
sameBonusIncome = waresPrice.multiply(RetailConstants.SAME_RATIO).setScale(2, BigDecimal.ROUND_HALF_UP); sameBonusIncome = waresPrice.multiply(RetailConstants.SAME_RATIO).setScale(6, BigDecimal.ROUND_HALF_UP);
// 平级收益累计 // 平级收益累计
beforeSameBonus = beforeSameBonus.add(sameBonusIncome); beforeSameBonus = beforeSameBonus.add(sameBonusIncome);
// 平级等级代数等级 // 平级等级代数等级
@ -1601,7 +1601,7 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
// 计算业绩此处作为比例 // 计算业绩此处作为比例
BigDecimal calAchieve = BigDecimal.ZERO; BigDecimal calAchieve = BigDecimal.ZERO;
for (SaOrderWaresExt saOrderWaresExt : saOrder.getOrderWaresExtList()) { 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()); calAchieve = calAchieve.add(saOrderWaresExt.getWaresPrice());
} }
CuMemberBonusDetail cuMemberBonusDetail = packageBenefitIncome(bonusConfigDTO, period, cuMemberBonusMap, null, RetailConstants.SAME_RATIO, benefitIncome, CuMemberBonusDetail cuMemberBonusDetail = packageBenefitIncome(bonusConfigDTO, period, cuMemberBonusMap, null, RetailConstants.SAME_RATIO, benefitIncome,

View File

@ -1,10 +1,12 @@
package com.hzs.bonus.bonus.service.impl; package com.hzs.bonus.bonus.service.impl;
import cn.hutool.core.bean.BeanUtil; 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.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.github.pagehelper.PageInfo; 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.ICuMemberTreeService;
import com.hzs.bonus.achieve.service.impl.CuMemberBonusSettle; import com.hzs.bonus.achieve.service.impl.CuMemberBonusSettle;
import com.hzs.bonus.bonus.mapper.*; 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.MemberBonusDetailSerVO;
import com.hzs.bonus.bonus.vo.MemberBonusDetailVO; import com.hzs.bonus.bonus.vo.MemberBonusDetailVO;
import com.hzs.bonus.bonus.vo.MemberBonusVO; import com.hzs.bonus.bonus.vo.MemberBonusVO;
import com.hzs.common.core.constant.HttpStatus; import com.hzs.common.core.constant.*;
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.domain.R; import com.hzs.common.core.domain.R;
import com.hzs.common.core.enums.*; import com.hzs.common.core.enums.*;
import com.hzs.common.core.utils.ComputeUtil; import com.hzs.common.core.utils.ComputeUtil;
import com.hzs.common.core.utils.DateUtils; 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.core.web.page.TableDataInfo;
import com.hzs.common.domain.member.bonus.CuMemberBonus; import com.hzs.common.domain.member.bonus.CuMemberBonus;
import com.hzs.common.domain.member.ext.*; import com.hzs.common.domain.member.ext.*;
@ -38,6 +36,8 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.time.temporal.ChronoUnit; import java.time.temporal.ChronoUnit;
import java.util.*; import java.util.*;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@ -56,6 +56,9 @@ public class CuMemberBonusServiceImpl extends ServiceImpl<CuMemberBonusMapper, C
@DubboReference @DubboReference
IBonusItemsServiceApi iBonusItemsServiceApi; IBonusItemsServiceApi iBonusItemsServiceApi;
@Autowired
private ICuMemberSettlePeriodService iCuMemberSettlePeriodService;
private CuMemberBonusDetailMapper cuMemberBonusDetailMapper; private CuMemberBonusDetailMapper cuMemberBonusDetailMapper;
private CuMemberBonusPushMapper cuMemberBonusPushMapper; private CuMemberBonusPushMapper cuMemberBonusPushMapper;
@ -131,27 +134,28 @@ public class CuMemberBonusServiceImpl extends ServiceImpl<CuMemberBonusMapper, C
@Override @Override
public List<CuMemberBonusExt> queryMemberBonusVoByCondition(BonusParam bonusParam) { public List<CuMemberBonusExt> queryMemberBonusVoByCondition(BonusParam bonusParam) {
String value = iSystemConfigServiceApi.getBonusSystemConfig(bonusParam.getPkCountry(), ESystemConfig.EXPAND_CAP_METHOD.getKey()).getData(); // 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)) { // if (StringUtils.isNotEmpty(value) && Objects.equals(Integer.toString(EExpandCapMethod.WEEK_SETTLE.getValue()), value)) {
// 周结的话不能查询当前周的数据只能查询上周的数据 // // 周结的话不能查询当前周的数据只能查询上周的数据
bonusParam.setEndDate(DateUtils.parseStringToDate(DateUtils.getRecentlyTuesday(bonusParam.getEndDate()))); // bonusParam.setEndDate(DateUtils.parseStringToDate(DateUtils.getRecentlyTuesday(bonusParam.getEndDate())));
} // }
return handleMemberBonusPurchase(getCuMemberBonusExtList(bonusParam, value), bonusParam, value); return handleMemberBonusPurchase(getCuMemberBonusExtList(bonusParam), bonusParam);
} }
private List<CuMemberBonusExt> handleMemberBonusPurchase(List<CuMemberBonusExt> cuMemberBonusExtList, BonusParam bonusParam, String value) { private List<CuMemberBonusExt> handleMemberBonusPurchase(List<CuMemberBonusExt> cuMemberBonusExtList, BonusParam bonusParam) {
if (StringUtils.isNotEmpty(value) && Objects.equals(Integer.toString(EExpandCapMethod.WEEK_SETTLE.getValue()), value)) { // if (StringUtils.isNotEmpty(value) && Objects.equals(Integer.toString(EExpandCapMethod.WEEK_SETTLE.getValue()), value)) {
Collections.reverse(cuMemberBonusExtList); // Collections.reverse(cuMemberBonusExtList);
return cuMemberBonusExtList; // return cuMemberBonusExtList;
} // }
List<CuMemberBonusExt> memberBonusExtList = new ArrayList<>(); List<CuMemberBonusExt> memberBonusExtList = new ArrayList<>();
Map<String, CuMemberBonusExt> cuMemberBonusExtMap = new HashMap<>(); Map<String, CuMemberBonusExt> cuMemberBonusExtMap = new HashMap<>();
cuMemberBonusExtList.forEach(cuMemberBonusExt -> cuMemberBonusExtList.forEach(cuMemberBonusExt -> cuMemberBonusExtMap.put(DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD, cuMemberBonusExt.getSettleDate()), cuMemberBonusExt));
cuMemberBonusExtMap.put(DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD, cuMemberBonusExt.getSettleDate()), cuMemberBonusExt));
Date endDate = DateUtils.beforeDate(1, ChronoUnit.DAYS, bonusParam.getEndDate()); Date endDate = DateUtils.beforeDate(1, ChronoUnit.DAYS, bonusParam.getEndDate());
Date compareDate = DateUtils.parseStringToDateTime(DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD, DateUtils.currentDate()) + " 13:00:00"); 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); String date = DateUtils.parseDateToFormat(DateUtils.YYYY_MM_DD, endDate);
if (cuMemberBonusExtMap.containsKey(date)) { if (cuMemberBonusExtMap.containsKey(date)) {
memberBonusExtList.add(cuMemberBonusExtMap.get(date)); memberBonusExtList.add(cuMemberBonusExtMap.get(date));
@ -174,22 +178,14 @@ public class CuMemberBonusServiceImpl extends ServiceImpl<CuMemberBonusMapper, C
cuMemberBonusExt.setRepurRangeIncome(BigDecimal.ZERO); cuMemberBonusExt.setRepurRangeIncome(BigDecimal.ZERO);
cuMemberBonusExt.setRepurExpandIncome(BigDecimal.ZERO); cuMemberBonusExt.setRepurExpandIncome(BigDecimal.ZERO);
cuMemberBonusExt.setRepurRealSubtotal(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.setRepurCoupon(BigDecimal.ZERO);
cuMemberBonusExt.setRepurCouponShare(BigDecimal.ZERO); cuMemberBonusExt.setRepurCouponShare(BigDecimal.ZERO);
cuMemberBonusExt.setRepurCouponSubtotal(BigDecimal.ZERO); cuMemberBonusExt.setRepurCouponSubtotal(BigDecimal.ZERO);
cuMemberBonusExt.setMakerDirectIncome(BigDecimal.ZERO);
cuMemberBonusExt.setMakerShareIncome(BigDecimal.ZERO);
cuMemberBonusExt.setMakerRealSubtotal(BigDecimal.ZERO);
cuMemberBonusExt.setGlobalPoints(BigDecimal.ZERO); cuMemberBonusExt.setGlobalPoints(BigDecimal.ZERO);
cuMemberBonusExt.setCarAwardPoints(BigDecimal.ZERO); cuMemberBonusExt.setCarAwardPoints(BigDecimal.ZERO);
cuMemberBonusExt.setHiFunIncome(BigDecimal.ZERO);
cuMemberBonusExt.setHaiFunIncome(BigDecimal.ZERO);
cuMemberBonusExt.setRealIncomeTotal(BigDecimal.ZERO); cuMemberBonusExt.setRealIncomeTotal(BigDecimal.ZERO);
cuMemberBonusExt.setStoreIncome(BigDecimal.ZERO); cuMemberBonusExt.setStoreIncome(BigDecimal.ZERO);
cuMemberBonusExt.setRetailRangeIncome(BigDecimal.ZERO); cuMemberBonusExt.setRetailRangeIncome(BigDecimal.ZERO);
cuMemberBonusExt.setRetailSameLevelIncome(BigDecimal.ZERO); cuMemberBonusExt.setRetailSameLevelIncome(BigDecimal.ZERO);
cuMemberBonusExt.setRetailAreaIncome(BigDecimal.ZERO); cuMemberBonusExt.setRetailAreaIncome(BigDecimal.ZERO);
@ -207,16 +203,10 @@ public class CuMemberBonusServiceImpl extends ServiceImpl<CuMemberBonusMapper, C
@Override @Override
public List<CuMemberBonusExt> queryMemberSecondBonusVoByCondition(BonusParam bonusParam) { public List<CuMemberBonusExt> queryMemberSecondBonusVoByCondition(BonusParam bonusParam) {
String value = iSystemConfigServiceApi.getBonusSystemConfig(bonusParam.getPkCountry(), ESystemConfig.EXPAND_CAP_METHOD.getKey()).getData(); return getCuMemberBonusExtList(bonusParam);
// 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);
} }
private List<CuMemberBonusExt> getCuMemberBonusExtList(BonusParam bonusParam, String value) { private List<CuMemberBonusExt> getCuMemberBonusExtList(BonusParam bonusParam) {
if (bonusParam.getGrantStatus() == null) { if (bonusParam.getGrantStatus() == null) {
bonusParam.setGrantStatus(EGrantStatus.PUBLISHED.getValue()); bonusParam.setGrantStatus(EGrantStatus.PUBLISHED.getValue());
} }
@ -237,20 +227,11 @@ public class CuMemberBonusServiceImpl extends ServiceImpl<CuMemberBonusMapper, C
cuMemberBonusExt.setRepurRangeIncome(ComputeUtil.computeMultiply(cuMemberBonusExt.getRepurRangeIncome(), inExchangeRate)); cuMemberBonusExt.setRepurRangeIncome(ComputeUtil.computeMultiply(cuMemberBonusExt.getRepurRangeIncome(), inExchangeRate));
cuMemberBonusExt.setRepurExpandIncome(ComputeUtil.computeMultiply(cuMemberBonusExt.getRepurExpandIncome(), inExchangeRate)); cuMemberBonusExt.setRepurExpandIncome(ComputeUtil.computeMultiply(cuMemberBonusExt.getRepurExpandIncome(), inExchangeRate));
cuMemberBonusExt.setRepurRealSubtotal(ComputeUtil.computeMultiply(cuMemberBonusExt.getRepurRealSubtotal(), 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.setRepurCoupon(ComputeUtil.computeMultiply(cuMemberBonusExt.getRepurCoupon(), inExchangeRate));
cuMemberBonusExt.setRepurCouponShare(ComputeUtil.computeMultiply(cuMemberBonusExt.getRepurCouponShare(), inExchangeRate)); cuMemberBonusExt.setRepurCouponShare(ComputeUtil.computeMultiply(cuMemberBonusExt.getRepurCouponShare(), inExchangeRate));
cuMemberBonusExt.setRepurCouponSubtotal(ComputeUtil.computeMultiply(cuMemberBonusExt.getRepurCouponSubtotal(), 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.setGlobalPoints(ComputeUtil.computeMultiply(cuMemberBonusExt.getGlobalPoints(), inExchangeRate));
cuMemberBonusExt.setCarAwardPoints(ComputeUtil.computeMultiply(cuMemberBonusExt.getCarAwardPoints(), 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.setRealIncomeTotal(ComputeUtil.computeMultiply(cuMemberBonusExt.getRealIncomeTotal(), inExchangeRate));
cuMemberBonusExt.setStoreIncome(ComputeUtil.computeMultiply(cuMemberBonusExt.getStoreIncome(), inExchangeRate)); cuMemberBonusExt.setStoreIncome(ComputeUtil.computeMultiply(cuMemberBonusExt.getStoreIncome(), inExchangeRate));
cuMemberBonusExt.setRetailRangeIncome(ComputeUtil.computeMultiply(cuMemberBonusExt.getRetailRangeIncome(), 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.setRetailBenefitIncome(ComputeUtil.computeMultiply(cuMemberBonusExt.getRetailBenefitIncome(), inExchangeRate));
cuMemberBonusExt.setRetailRealSubtotal(ComputeUtil.computeMultiply(cuMemberBonusExt.getRetailRealSubtotal(), 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; return cuMemberBonusExtList;
} }
@ -323,13 +279,7 @@ public class CuMemberBonusServiceImpl extends ServiceImpl<CuMemberBonusMapper, C
@Override @Override
public List<CuMemberBonusExt> queryMemberBonusTotalByCondition(BonusParam bonusParam) { public List<CuMemberBonusExt> queryMemberBonusTotalByCondition(BonusParam bonusParam) {
String value = iSystemConfigServiceApi.getBonusSystemConfig(bonusParam.getPkCountry(), ESystemConfig.EXPAND_CAP_METHOD.getKey()).getData(); return getCuMemberBonusExtList(bonusParam);
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);
} }
@Override @Override
@ -693,4 +643,19 @@ public class CuMemberBonusServiceImpl extends ServiceImpl<CuMemberBonusMapper, C
cuMemberBonusList.forEach(cuMemberBonus -> cuMemberBonusMap.put(cuMemberBonus.getPkMember(), cuMemberBonus)); cuMemberBonusList.forEach(cuMemberBonus -> cuMemberBonusMap.put(cuMemberBonus.getPkMember(), cuMemberBonus));
return cuMemberBonusMap; 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;
}
} }

View File

@ -1,84 +1,111 @@
package com.hzs.bonus.bonus.vo; package com.hzs.bonus.bonus.vo;
import lombok.AllArgsConstructor; import com.hzs.common.core.annotation.BigDecimalFormat;
import lombok.Builder; import lombok.*;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.math.BigDecimal; 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 @Data
@Builder @Builder
@AllArgsConstructor @AllArgsConstructor
@NoArgsConstructor @NoArgsConstructor
public class MemberBonusFirstPurchaseVO extends PubMemberBonusVO { public class MemberBonusFirstPurchaseVO extends PubMemberBonusVO {
/** // /**
* 直推收益 // * 直推收益
*/ // */
private BigDecimal directIncome; // private BigDecimal directIncome;
//
/** // /**
* 拓展收益 // * 拓展收益
*/ // */
private BigDecimal expandIncome; // private BigDecimal expandIncome;
//
/** // /**
* 辅导收益 // * 辅导收益
*/ // */
private BigDecimal coachIncome; // private BigDecimal coachIncome;
//
/** // /**
* 分红收益 // * 分红收益
*/ // */
private BigDecimal shareIncome; // private BigDecimal shareIncome;
//
/** // /**
* 报单收益 // * 报单收益
*/ // */
private BigDecimal serviceIncome; // private BigDecimal serviceIncome;
/** /**
* 商城重消 * 商城重消
*/ */
@BigDecimalFormat
private BigDecimal backPoints; 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; @BigDecimalFormat
private BigDecimal realIncomeTotal;
/**
* 乐学直推收益
*/
private BigDecimal globalPoints;
} }

View File

@ -1,17 +1,13 @@
package com.hzs.bonus.bonus.vo; package com.hzs.bonus.bonus.vo;
import com.hzs.common.core.annotation.BigDecimalFormat;
import lombok.Data; import lombok.Data;
import java.io.Serializable; import java.io.Serializable;
import java.math.BigDecimal; 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 @Data
public class MemberRealIncomeVO implements Serializable { public class MemberRealIncomeVO implements Serializable {
@ -19,5 +15,6 @@ public class MemberRealIncomeVO implements Serializable {
/** /**
* 实发收益总计 * 实发收益总计
*/ */
@BigDecimalFormat
private BigDecimal realIncomeTotal; private BigDecimal realIncomeTotal;
} }

View File

@ -6,15 +6,11 @@ import java.io.Serializable;
import java.math.BigDecimal; import java.math.BigDecimal;
/** /**
* @description: 会员端奖金明细查询vo * 会员端奖金明细查询vo
* @author: sui q
* @time: 2023/7/17 14:58
* @classname: PubMemberBonusVO
* @package_name: com.hzs.member.bonus.vo
* version 1.0.0
*/ */
@Data @Data
public class PubMemberBonusVO implements Serializable { public class PubMemberBonusVO implements Serializable {
/** /**
* 结算日期 * 结算日期
*/ */
@ -24,4 +20,5 @@ public class PubMemberBonusVO implements Serializable {
* 平台服务费 * 平台服务费
*/ */
private BigDecimal serviceSpend; private BigDecimal serviceSpend;
} }

View File

@ -1,46 +1,28 @@
package com.hzs.bonus.detail.controller.manage; package com.hzs.bonus.detail.controller.manage;
import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.bean.BeanUtil;
import com.hzs.bonus.achieve.service.ICuMemberSettlePeriodService; 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.service.ICuRegionAssessService;
import com.hzs.bonus.detail.vo.CuRegionAssessDetailVO;
import com.hzs.bonus.detail.vo.CuRegionAssessExcelVO; import com.hzs.bonus.detail.vo.CuRegionAssessExcelVO;
import com.hzs.bonus.detail.vo.CuRegionAssessVO; import com.hzs.bonus.detail.vo.CuRegionAssessVO;
import com.hzs.bonus.param.CuRegionAssessParam; 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.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.utils.poi.ExcelUtil;
import com.hzs.common.core.web.controller.BaseController; import com.hzs.common.core.web.controller.BaseController;
import com.hzs.common.core.web.domain.AjaxResult; import com.hzs.common.core.web.domain.AjaxResult;
import com.hzs.common.core.web.page.TableDataInfo; import com.hzs.common.core.web.page.TableDataInfo;
import com.hzs.common.domain.member.detail.CuRegionAssessDetail; import com.hzs.common.domain.member.detail.CuRegionAssessDetail;
import com.hzs.common.domain.member.detail.ext.CuRegionAssessExt; 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 com.hzs.common.security.utils.SecurityUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays;
import java.util.List; import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/** /**
* <p>
* 新零售会员区域考核 前端控制器 * 新零售会员区域考核 前端控制器
* </p>
*
* @author hzs
* @since 2025-01-13
*/ */
@RestController @RestController
@RequestMapping("/manage/region") @RequestMapping("/manage/region")
@ -58,6 +40,7 @@ public class CuRegionAssessController extends BaseController {
/** /**
* 考核 * 考核
* 考核默认考核当月 * 考核默认考核当月
*
* @return AjaxResult * @return AjaxResult
*/ */
@GetMapping("/examine") @GetMapping("/examine")
@ -72,7 +55,7 @@ public class CuRegionAssessController extends BaseController {
* 查询会员昨天奖金的值 * 查询会员昨天奖金的值
*/ */
@PostMapping("/query") @PostMapping("/query")
public TableDataInfo listRegionAssess(@RequestBody CuRegionAssessParam cuRegionAssessParam){ public TableDataInfo listRegionAssess(@RequestBody CuRegionAssessParam cuRegionAssessParam) {
startPage(); startPage();
cuRegionAssessParam.setPkCountry(SecurityUtils.getPkCountry()); cuRegionAssessParam.setPkCountry(SecurityUtils.getPkCountry());
List<CuRegionAssessExt> cuRegionAssessExtList = regionAssessService.queryRegionAssessByCondition(cuRegionAssessParam); List<CuRegionAssessExt> cuRegionAssessExtList = regionAssessService.queryRegionAssessByCondition(cuRegionAssessParam);
@ -86,7 +69,7 @@ public class CuRegionAssessController extends BaseController {
* 分页查询会员某个时间段内的奖金汇总 * 分页查询会员某个时间段内的奖金汇总
*/ */
@PostMapping("/export") @PostMapping("/export")
public void exportRegionAssess(HttpServletResponse response, CuRegionAssessParam cuRegionAssessParam){ public void exportRegionAssess(HttpServletResponse response, CuRegionAssessParam cuRegionAssessParam) {
List<CuRegionAssessExt> cuRegionAssessExtList = regionAssessService.queryRegionAssessByCondition(cuRegionAssessParam); List<CuRegionAssessExt> cuRegionAssessExtList = regionAssessService.queryRegionAssessByCondition(cuRegionAssessParam);
List<CuRegionAssessExcelVO> cuRegionAssessVoList = new ArrayList<>(); List<CuRegionAssessExcelVO> cuRegionAssessVoList = new ArrayList<>();
for (CuRegionAssessExt cuRegionAssessExt : cuRegionAssessExtList) { for (CuRegionAssessExt cuRegionAssessExt : cuRegionAssessExtList) {

View File

@ -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);
}
}

View File

@ -272,21 +272,40 @@
</select> </select>
<select id="queryMemberBonusByCondition" resultMap="CuMemberBonus"> <select id="queryMemberBonusByCondition" resultMap="CuMemberBonus">
select cp.settle_date,cb.direct_income,cb.expand_income,cb.expand_no_capping, select cp.settle_date,
cb.expand_capping,cb.coach_income,cb.share_income,cb.service_income,cb.back_points,cb.service_spend, cb.direct_income,
cb.pur_real_subtotal,cb.repur_push_income,cb.repur_range_income,cb.repur_expand_income,cb.repur_real_subtotal, cb.expand_income,
cb.cloud_direct_income,cb.cloud_pur_income,cb.cloud_repur_income,cb.cloud_real_subtotal, cb.expand_no_capping,
cb.repur_coupon,cb.repur_coupon_share,cb.repur_coupon_subtotal,cb.store_income, cb.expand_capping,
cb.maker_direct_income,cb.maker_share_income,cb.maker_real_subtotal, cb.coach_income,
cb.global_points,cb.car_award_points,cb.hi_fun_income,cb.hai_fun_income, cb.share_income,
cb.retail_range_income,cb.retail_same_level_income,cb.retail_area_income, cb.service_income,
cb.retail_benefit_range_income,cb.retail_benefit_avg_income, cb.back_points,
cb.retail_benefit_income,cb.retail_real_subtotal, cb.service_spend,
cb.real_income_total from cu_member_bonus cb 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 inner join cu_member_settle_period cp
on cb.period = cp.pk_id on cb.period = cp.pk_id
where cb.del_flag=0 and cp.del_flag=0 where cb.del_flag = 0 and cp.del_flag = 0
and cb.pk_member=#{pkMember} and cb.pk_member = #{pkMember}
<if test="grantStatus != null"> <if test="grantStatus != null">
and cb.grant_status >= #{grantStatus} and cb.grant_status >= #{grantStatus}
</if> </if>
@ -574,4 +593,23 @@
group by cb.pk_member group by cb.pk_member
</select> </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> </mapper>

View File

@ -53,6 +53,7 @@ import com.hzs.system.config.IAwardsServiceApi;
import com.hzs.system.config.dto.AreaCurrencyDTO; import com.hzs.system.config.dto.AreaCurrencyDTO;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.dubbo.config.annotation.DubboReference; import org.apache.dubbo.config.annotation.DubboReference;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
@ -85,6 +86,8 @@ public class CuMemberBusinessServiceImpl implements ICuMemberBusinessService {
private ICuMemberAchieveService cuMemberAchieveService; private ICuMemberAchieveService cuMemberAchieveService;
@Autowired @Autowired
private RedisService redisService; private RedisService redisService;
@Autowired
private RabbitTemplate rabbitTemplate;
private ICuMemberService cuMemberService; private ICuMemberService cuMemberService;
@ -1516,6 +1519,9 @@ public class CuMemberBusinessServiceImpl implements ICuMemberBusinessService {
} }
this.handleRetailMemberAccount(saOrder, cuMemberAccountExt); 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) @Transactional(rollbackFor = Exception.class)

View File

@ -134,8 +134,8 @@ public class CuMemberServiceImpl extends ServiceImpl<CuMemberMapper, CuMember> i
save = true; save = true;
} }
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); log.error("saveMember error: {}", e.getMessage(), e);
throw new RuntimeException(e); throw new ServiceException(e.getMessage());
} }
return save; return save;
} }

View File

@ -116,12 +116,10 @@ public class MemberEmptyServiceImpl implements IMemberEmptyService {
public void importTemplate(List<MemberEmptyDetailDTO> resultList) { public void importTemplate(List<MemberEmptyDetailDTO> resultList) {
// 会员编号列表导入会员编号去重 // 会员编号列表导入会员编号去重
List<String> checkMemberList = new ArrayList<>(); List<String> checkMemberList = new ArrayList<>();
// 会员联系方式列表需要查库校验
List<String> checkPhoneList = new ArrayList<>();
// 遍历导入数据提取各种校验所需要的数据 // 遍历导入数据提取各种校验所需要的数据
for (MemberEmptyDetailDTO detail : resultList) { 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) { for (MemberEmptyDetailDTO detail : resultList) {
if (this.checkBase(detail, checkMemberList, checkPhoneList)) { if (this.checkBase(detail, checkMemberList)) {
// 已经存在异常直接返回 // 已经存在异常直接返回
return false; return false;
} }
@ -270,8 +268,8 @@ public class MemberEmptyServiceImpl implements IMemberEmptyService {
// 查询会员编号是否存在 // 查询会员编号是否存在
Map<String, Integer> checkCodeMap = iCuMemberService.checkMemberCodeExist(checkMemberList, true, pkMemberEmpty); 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<>(); final Map<String, Integer> checkParentCodeMap = new HashMap<>();
@ -290,15 +288,6 @@ public class MemberEmptyServiceImpl implements IMemberEmptyService {
bool[0] = false; 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) { if (!checkMemberList.contains(detail.getParentCode()) && checkParentCodeMap.get(detail.getParentCode()) == null) {
// 推荐编号不在本次导入的会员中也不在数据库中异常状态 // 推荐编号不在本次导入的会员中也不在数据库中异常状态
@ -568,9 +557,8 @@ public class MemberEmptyServiceImpl implements IMemberEmptyService {
* *
* @param detail 校验数据 * @param detail 校验数据
* @param checkMemberList 会员编号列表 * @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.setPointStatus(EPointStatus.NORMAL.getValue());
detail.setContentAbstract(""); detail.setContentAbstract("");
@ -601,16 +589,7 @@ public class MemberEmptyServiceImpl implements IMemberEmptyService {
// 导入数据中不重复的会员编号需要查库校验是否重复 // 导入数据中不重复的会员编号需要查库校验是否重复
checkMemberList.add(detail.getMemberCode()); 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; return hasError;
} }

View File

@ -62,9 +62,6 @@ import java.util.stream.Collectors;
/** /**
* 业务办理表 前端控制器 * 业务办理表 前端控制器
*
* @author zhangjing
* @since 2023-01-11
*/ */
@RestController @RestController
@RequestMapping("/manage/handle-business") @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") @AccessPermissions("BasicBusiness")
@Log(module = EOperationModule.HANDLE_BUSINESS, business = EOperationBusiness.BASE_BUSINESS, method = EOperationMethod.SELECT) @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) { public List<BusinessErrorVO> checkNamePhone(List<BusinessMemberVO> businessMemberList) {
//如果只有修改姓名业务或者修改手机业务 //如果只有修改姓名业务或者修改手机业务
@ -238,27 +227,8 @@ public class CuHandleBusinessController extends BaseController {
return errorList; 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") @PostMapping("/importData")
@Log(module = EOperationModule.HANDLE_BUSINESS, business = EOperationBusiness.BASE_BUSINESS, method = EOperationMethod.IMPORT) @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) @Log(module = EOperationModule.HANDLE_BUSINESS, business = EOperationBusiness.BASE_BUSINESS, method = EOperationMethod.SELECT)
@PostMapping("/businessCheck") @PostMapping("/businessCheck")
@ -432,7 +398,7 @@ public class CuHandleBusinessController extends BaseController {
nuc.setMemberCode(cov.getMemberCode()); nuc.setMemberCode(cov.getMemberCode());
nuc.setMemberName(cov.getMemberName()); nuc.setMemberName(cov.getMemberName());
nuc.setPhone(cov.getPhone()); nuc.setPhone(cov.getPhone());
if(StringUtils.isNotNull(uc.getEndValidityDate())){ if (StringUtils.isNotNull(uc.getEndValidityDate())) {
LocalDateTime localDateTime = uc.getEndValidityDate().toInstant() LocalDateTime localDateTime = uc.getEndValidityDate().toInstant()
.atZone(ZoneId.systemDefault()) .atZone(ZoneId.systemDefault())
.toLocalDateTime(); .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) @Log(module = EOperationModule.HANDLE_BUSINESS, business = EOperationBusiness.BASE_BUSINESS, method = EOperationMethod.SELECT)
@PostMapping("/balanceCheck") @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) { 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) @Log(module = EOperationModule.HANDLE_BUSINESS, business = EOperationBusiness.BASE_BUSINESS, method = EOperationMethod.SUBMIT)
@PostMapping("/againBusiness") @PostMapping("/againBusiness")
@ -1025,13 +979,12 @@ public class CuHandleBusinessController extends BaseController {
} }
/** /**
* yh
* 在线签呈(发起人) * 在线签呈(发起人)
* *
* @return * @return
*/ */
@Log(module = EOperationModule.HANDLE_BUSINESS, business = EOperationBusiness.BASE_BUSINESS, method = EOperationMethod.SUBMIT) @Log(module = EOperationModule.HANDLE_BUSINESS, business = EOperationBusiness.BASE_BUSINESS, method = EOperationMethod.SUBMIT)
@PostMapping("online-petition") @PostMapping("/online-petition")
public AjaxResult signOnline(@RequestBody OnlinePetitionVo linePetitionVo) { public AjaxResult signOnline(@RequestBody OnlinePetitionVo linePetitionVo) {
SysUser loginUser = userTokenService.getLoginUser().getLoginSysUser(); SysUser loginUser = userTokenService.getLoginUser().getLoginSysUser();

View File

@ -20,7 +20,6 @@ public interface ICuHandleBusinessService extends IService<CuHandleBusiness> {
**/ **/
List<HandleBusinessShowVO> queryHandleBusinessList(HandleBusinessShowVO handleBusinessVO); List<HandleBusinessShowVO> queryHandleBusinessList(HandleBusinessShowVO handleBusinessVO);
/** /**
* 保存业务办理信息 * 保存业务办理信息
* *

View File

@ -127,6 +127,7 @@ public class CuHandleBusinessServiceImpl extends ServiceImpl<CuHandleBusinessMap
//流程类型1 免签呈 2免付费 3免签呈+免付费 4 需要签呈需要付费 //流程类型1 免签呈 2免付费 3免签呈+免付费 4 需要签呈需要付费
//更新业务办理 //更新业务办理
if (processType.equals(EProcessType.AVOIDSIGNING.getValue()) || processType.equals(EProcessType.DOUBLEAVOID.getValue())) { if (processType.equals(EProcessType.AVOIDSIGNING.getValue()) || processType.equals(EProcessType.DOUBLEAVOID.getValue())) {
// 免签或全免
result = updateBusinessMember(handleBusinessVO, loginUser); result = updateBusinessMember(handleBusinessVO, loginUser);
} }
//扣手续费 //扣手续费
@ -522,11 +523,7 @@ public class CuHandleBusinessServiceImpl extends ServiceImpl<CuHandleBusinessMap
} }
/** /**
* @description: 校验 handleBusinessesList的getBusinessNo是否存在重复 * 校验 handleBusinessesList的getBusinessNo是否存在重复
* @author: zhang jing
* @date: 2024/7/10 14:37
* @param: [list]
* @return: boolean
**/ **/
public static boolean checkRepeat(List<CuHandleBusiness> list) { public static boolean checkRepeat(List<CuHandleBusiness> list) {
Map<String, Long> counts = list.stream() Map<String, Long> counts = list.stream()
@ -688,6 +685,23 @@ public class CuHandleBusinessServiceImpl extends ServiceImpl<CuHandleBusinessMap
saveMemberAwards(handleBusinessVO, loginUser); saveMemberAwards(handleBusinessVO, loginUser);
result = row > 0; 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; return result;
} }

View File

@ -6,21 +6,15 @@ import lombok.Data;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
import java.io.Serializable; import java.io.Serializable;
import java.math.BigDecimal;
import java.util.List; import java.util.List;
/** /**
* <p>
* 业务办理表Vo办理基础业务实体VO * 业务办理表Vo办理基础业务实体VO
* </p>
*
* @author zhangjing
* @since 2023-01-11
*/ */
@Data @Data
@AllArgsConstructor @AllArgsConstructor
@NoArgsConstructor @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; private BusinessTableVO btvo;
} }

View File

@ -5,13 +5,15 @@ import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.lang.tree.Tree; import cn.hutool.core.lang.tree.Tree;
import cn.hutool.core.lang.tree.TreeNodeConfig; import cn.hutool.core.lang.tree.TreeNodeConfig;
import cn.hutool.core.lang.tree.TreeUtil; import cn.hutool.core.lang.tree.TreeUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.json.JSONUtil; import cn.hutool.json.JSONUtil;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; 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.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.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.utils.PageUtils;
import com.hzs.common.core.web.controller.BaseController; import com.hzs.common.core.web.controller.BaseController;
import com.hzs.common.core.web.domain.AjaxResult; 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 org.springframework.web.bind.annotation.*;
import javax.validation.Valid; import javax.validation.Valid;
import java.math.BigDecimal;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
@ -60,11 +61,6 @@ public class RetailMemberController extends BaseController {
@DubboReference @DubboReference
IAreaServiceApi iAreaServiceApi; 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()){ if(EYesNo.YES.getIntValue() == cuMemberRetailRegionExt.getIsActivate()){
CuMemberRetailAchieveVO retailAchieve = iCuMemberRetailAchieveService.selectMemberSumAchieve(userId, pkCountry, systemType); CuMemberRetailAchieveVO retailAchieve = iCuMemberRetailAchieveService.selectMemberSumAchieve(userId, pkCountry, systemType);
log.info("retailAchieve : {}", JSONUtil.toJsonStr(retailAchieve)); 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() return AjaxResult.success(RetailMemberRegionVO.builder()
.regionStatus(EYesNo.YES.getIntValue()) .regionStatus(EYesNo.YES.getIntValue())
.build()); .build());
@ -175,7 +172,7 @@ public class RetailMemberController extends BaseController {
} }
if(EYesNo.YES.getIntValue() == cuMemberRetailRegionExt.getIsActivate()){ if(EYesNo.YES.getIntValue() == cuMemberRetailRegionExt.getIsActivate()){
CuMemberRetailAchieveVO retailAchieve = iCuMemberRetailAchieveService.selectMemberSumAchieve(userId, pkCountry, systemType); 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; canSet = true;
} }
} }

View File

@ -570,7 +570,8 @@ public class CuMemberRetailAchieveServiceImpl extends ServiceImpl<CuMemberRetail
.memberRetailSTable(memberSecondTable) .memberRetailSTable(memberSecondTable)
.pkMemberList(pkMemberList).systemType(systemType).build(); .pkMemberList(pkMemberList).systemType(systemType).build();
List<CuMemberRetailDataStatisticsDetailVO> statisticsDetailVOList = baseMapper.getRetailDataStatisticsDetail(memberAchieveVO); 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("statisticsDetailVOList: {}", JSONUtil.toJsonStr(statisticsDetailVOList));
log.info("calcMap -> {}", JSONUtil.toJsonStr(result)); log.info("calcMap -> {}", JSONUtil.toJsonStr(result));
return result; return result;

View File

@ -87,6 +87,7 @@ public class MemberRetailServiceImpl implements IMemberRetailService {
.systemType(cuMember.getSystemType()) .systemType(cuMember.getSystemType())
.pkCountry(cuMember.getPkCountry()) .pkCountry(cuMember.getPkCountry())
.pkSettleCountry(cuMember.getPkSettleCountry()) .pkSettleCountry(cuMember.getPkSettleCountry())
.isActivate(cuMember.getIsActivate())
.build(); .build();
} }
return null; return null;

View File

@ -1,11 +1,17 @@
package com.hzs.retail.member.utils; package com.hzs.retail.member.utils;
import cn.hutool.core.util.ObjectUtil; 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.CuMemberRetailDataStatisticsDetailVO;
import com.hzs.retail.member.vo.CuMemberRetailDataStatisticsResultVO; import com.hzs.retail.member.vo.CuMemberRetailDataStatisticsResultVO;
import java.math.BigDecimal; 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 BIG_RANGE_VIRTUAL_NAME = "注水大区虚拟分支";
private static final String SMALL_RANGE_VIRTUAL_NAME = "注水小区虚拟分支"; private static final String SMALL_RANGE_VIRTUAL_NAME = "注水小区虚拟分支";
public static CuMemberRetailDataStatisticsResultVO getCalcMap(List<CuMemberRetailDataStatisticsDetailVO> detailVOList, Long pkId){ public static CuMemberRetailDataStatisticsResultVO getCalcMap(List<CuMemberRetailDataStatisticsDetailVO> detailVOList, CuMember cuMember){
calcDetailVOTotalField(detailVOList); 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); addVirtualBranch(detailVOList, pkId);
CuMemberRetailDataStatisticsDetailVO total = getDetailVOByPKID(detailVOList, pkId); CuMemberRetailDataStatisticsDetailVO total = getDetailVOByPKID(detailVOList, pkId);
CuMemberRetailDataStatisticsDetailVO bigRange = getBigRangeDetailVO(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() return CuMemberRetailDataStatisticsResultVO.builder()
.totalBoxNum(total.getTotalBoxNum()) .totalBoxNum(total.getTotalBoxNum())
.totalPv(total.getTotalPv()) .totalPv(formatPV(total.getTotalPv()))
.bigRangeTotalBoxNum(bigRange.getTotalBoxNum()) .bigRangeTotalBoxNum(bigRange.getTotalBoxNum())
.bigRangeTotalPv(bigRange.getTotalPv()) .bigRangeTotalPv(formatPV(bigRange.getTotalPv()))
.smallRangeTotalBoxNum(total.getTotalBoxNum() - bigRange.getTotalBoxNum()) .smallRangeTotalBoxNum(smallRangeTotalBoxNum)
.smallRangeTotalPv(total.getTotalPv().subtract(bigRange.getTotalPv())) .smallRangeTotalPv(formatPV(smallRangeTotalPv))
.build(); .build();
} }
/** /**
* 计算集合内数据总数 * 计算集合内数据总数
* @param detailVOList * @param detailVOList
*/ */
public static void calcDetailVOTotalField(List<CuMemberRetailDataStatisticsDetailVO> detailVOList){ public static void calcDetailVOTotalField(List<CuMemberRetailDataStatisticsDetailVO> detailVOList, Long pkId){
detailVOList.parallelStream().forEach(detailVO -> { detailVOList.parallelStream().forEach(detailVO -> {
detailVO.setTotalBoxNum( detailVO.setTotalBoxNum(
detailVO.getConsumeBoxNum() // 个人累计消费盒数(日结) detailVO.getConsumeBoxNum() // 个人累计消费盒数(日结)
+ detailVO.getNewBoxNum() // 个人新增盒数(日结) // + detailVO.getNewBoxNum() // 个人新增盒数(日结)
+ detailVO.getTeamBoxNum() // 团队累计消费盒数(日结) + detailVO.getTeamBoxNum() // 团队累计消费盒数(日结)
+ detailVO.getTeamNewBoxNum() // 团队新增盒数(日结) // + detailVO.getTeamNewBoxNum() // 团队新增盒数(日结)
+ detailVO.getSNewBoxNum() // 个人新增消费盒数(秒结) + detailVO.getSNewBoxNum() // 个人新增消费盒数(秒结)
+ detailVO.getSTeamNewBoxNum() // 团队新增盒数(秒结) + detailVO.getSTeamNewBoxNum() // 团队新增盒数(秒结)
// - detailVO.getBigBoxNum() // 个人注水大区盒数(日结) // - detailVO.getBigBoxNum() // 个人注水大区盒数(日结)
// - detailVO.getSmallBoxNum() // 个人注水小区盒数(日结) // - detailVO.getSmallBoxNum() // 个人注水小区盒数(日结)
); );
detailVO.setTotalPv(detailVO.getConsumePv() detailVO.setTotalPv(
.add(detailVO.getNewConsumePv()) detailVO.getConsumePv()
// .add(detailVO.getNewConsumePv())
.add(detailVO.getTeamConsumePv()) .add(detailVO.getTeamConsumePv())
.add(detailVO.getTeamNewPv()) // .add(detailVO.getTeamNewPv())
.add(detailVO.getSNewConsumePv()) .add(detailVO.getSNewConsumePv())
.add(detailVO.getSTeamNewPv()) .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.自己的消费总数 * 1.自己的消费总数
@ -79,12 +143,16 @@ public class DataStatisticsUtil {
.memberCode(BIG_RANGE_VIRTUAL_NAME) .memberCode(BIG_RANGE_VIRTUAL_NAME)
.totalBoxNum(detailVO.getBigBoxNum()) .totalBoxNum(detailVO.getBigBoxNum())
.totalPv(BigDecimal.ZERO) .totalPv(BigDecimal.ZERO)
.bigBoxNum(0)
.smallBoxNum(0)
.build(); .build();
CuMemberRetailDataStatisticsDetailVO smallRangeVirtualDetailVO = CuMemberRetailDataStatisticsDetailVO.builder() CuMemberRetailDataStatisticsDetailVO smallRangeVirtualDetailVO = CuMemberRetailDataStatisticsDetailVO.builder()
.pkId(SMALL_RANGE_VIRTUAL_ID) .pkId(SMALL_RANGE_VIRTUAL_ID)
.memberCode(SMALL_RANGE_VIRTUAL_NAME) .memberCode(SMALL_RANGE_VIRTUAL_NAME)
.totalBoxNum(detailVO.getBigBoxNum()) .totalBoxNum(detailVO.getBigBoxNum())
.totalPv(BigDecimal.ZERO) .totalPv(BigDecimal.ZERO)
.bigBoxNum(0)
.smallBoxNum(0)
.build(); .build();
detailVOList.add(bigRangeVirtualDetailVO); detailVOList.add(bigRangeVirtualDetailVO);
detailVOList.add(smallRangeVirtualDetailVO); detailVOList.add(smallRangeVirtualDetailVO);
@ -107,6 +175,8 @@ public class DataStatisticsUtil {
.add(detailVO.getNewConsumePv()) .add(detailVO.getNewConsumePv())
.add(detailVO.getSNewConsumePv()) .add(detailVO.getSNewConsumePv())
) )
.bigBoxNum(0)
.smallBoxNum(0)
.build(); .build();
} }
@ -137,20 +207,27 @@ public class DataStatisticsUtil {
* @return * @return
*/ */
public static CuMemberRetailDataStatisticsDetailVO getDetailVOByPKID(List<CuMemberRetailDataStatisticsDetailVO> detailVOList, Long pkId){ 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) { private static Integer getMaxTotalBoxNum(List<CuMemberRetailDataStatisticsDetailVO> detailVOList) {
return detailVOList.stream() return detailVOList.parallelStream()
.map(CuMemberRetailDataStatisticsDetailVO::getTotalBoxNum) .map(CuMemberRetailDataStatisticsDetailVO::getTotalBoxNum)
.filter(Objects::nonNull) .filter(Objects::nonNull)
.max(Integer::compare) .max(Integer::compare)
.orElse(null); .orElse(null);
} }
private static CuMemberRetailDataStatisticsDetailVO getBigRangeDetailVO(List<CuMemberRetailDataStatisticsDetailVO> detailVOList, Long pkId){ private static CuMemberRetailDataStatisticsDetailVO getBigRangeDetailVO(List<CuMemberRetailDataStatisticsDetailVO> detailVOList, Long pkId){
return detailVOList.stream() return detailVOList.parallelStream()
.filter(vo -> vo.getTotalBoxNum() != null && !vo.getPkId().equals(pkId)) .filter(vo -> vo.getTotalBoxNum() != null && !vo.getPkId().equals(pkId))
.max(Comparator.comparingInt(CuMemberRetailDataStatisticsDetailVO::getTotalBoxNum)) .max(Comparator.comparingInt(CuMemberRetailDataStatisticsDetailVO::getTotalBoxNum))
.orElse(null); .orElse(null);
} }
public static BigDecimal formatPV(BigDecimal pv){
return pv.divide(
new BigDecimal("10000"),
4,
RoundingMode.FLOOR
);
}
} }

View File

@ -1,7 +1,6 @@
package com.hzs.retail.member.vo; package com.hzs.retail.member.vo;
import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.hzs.common.core.annotation.BigDecimalFormat; import com.hzs.common.core.annotation.BigDecimalFormat;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Builder; 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 @Data
@Builder @Builder

View File

@ -29,6 +29,11 @@ public class CuMemberRetailDataStatisticsDetailVO implements Serializable {
*/ */
private String memberCode; private String memberCode;
/**
* 激活状态
*/
private Integer enableStatus;
/** /**
* 日结表-个人累计消费pv * 日结表-个人累计消费pv
*/ */

View File

@ -1,5 +1,6 @@
package com.hzs.retail.member.vo; package com.hzs.retail.member.vo;
import com.hzs.common.core.annotation.BigDecimalFormat;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Builder; import lombok.Builder;
import lombok.Data; import lombok.Data;
@ -45,14 +46,17 @@ public class CuMemberRetailDataStatisticsResultVO implements Serializable {
/** /**
* 总业绩 * 总业绩
*/ */
@BigDecimalFormat
private BigDecimal totalPv; private BigDecimal totalPv;
/** /**
* 大区业绩 * 大区业绩
*/ */
@BigDecimalFormat
private BigDecimal bigRangeTotalPv; private BigDecimal bigRangeTotalPv;
/** /**
* 小区业绩 * 小区业绩
*/ */
@BigDecimalFormat
private BigDecimal smallRangeTotalPv; private BigDecimal smallRangeTotalPv;
} }

View File

@ -127,4 +127,9 @@ public class RetailMemberInfoVO implements Serializable {
*/ */
private Integer systemType; private Integer systemType;
/**
* 是否激活0=1=
*/
private Integer isActivate;
} }

View File

@ -841,6 +841,7 @@
SELECT SELECT
cu.pk_id, cu.pk_id,
cu.MEMBER_CODE, cu.MEMBER_CODE,
mr.ENABLE_STATUS,
NVL( mr.CONSUME_PV, 0 ) consumePv, NVL( mr.CONSUME_PV, 0 ) consumePv,
NVL( mr.NEW_CONSUME_PV, 0 ) newConsumePv, NVL( mr.NEW_CONSUME_PV, 0 ) newConsumePv,
NVL( mr.TEAM_CONSUME_PV, 0 ) teamConsumePv, NVL( mr.TEAM_CONSUME_PV, 0 ) teamConsumePv,

View File

@ -1,6 +1,5 @@
package com.hzs.common.core.config; package com.hzs.common.core.config;
import cn.hutool.json.JSONUtil;
import com.fasterxml.jackson.core.JsonGenerator; import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.databind.BeanProperty; import com.fasterxml.jackson.databind.BeanProperty;
import com.fasterxml.jackson.databind.JsonMappingException; 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.SerializerProvider;
import com.fasterxml.jackson.databind.ser.ContextualSerializer; import com.fasterxml.jackson.databind.ser.ContextualSerializer;
import com.hzs.common.core.annotation.BigDecimalFormat; 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 org.springframework.boot.jackson.JsonComponent;
import java.io.IOException; import java.io.IOException;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.math.RoundingMode;
import java.text.DecimalFormat; import java.text.DecimalFormat;
import java.util.Objects; import java.util.Objects;
@ -28,15 +24,6 @@ public class BigDecimalSerializer extends JsonSerializer<BigDecimal> implements
// 默认保留2位小数 // 默认保留2位小数
private String format = "#0.00"; 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 @Override
public void serialize(BigDecimal bigDecimal, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException { public void serialize(BigDecimal bigDecimal, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException {
// if(ComputeUtil.compareEqual(ComputeUtil.computeSubtract(bigDecimal, bigDecimal.setScale(0, RoundingMode.DOWN)), BigDecimal.ZERO)){ DecimalFormat decimalFormat = new DecimalFormat(format);
// jsonGenerator.writeString(new DecimalFormat(zeroFormat).format(bigDecimal)); // 改为使用去尾方式显示
// }else{ decimalFormat.setRoundingMode(RoundingMode.DOWN);
// jsonGenerator.writeString(bigDecimal.setScale(6, RoundingMode.HALF_UP).stripTrailingZeros().toString()); jsonGenerator.writeString(decimalFormat.format(bigDecimal));
jsonGenerator.writeString(new DecimalFormat(format).format(bigDecimal));
// }
} }
/** /**
@ -66,15 +51,13 @@ public class BigDecimalSerializer extends JsonSerializer<BigDecimal> implements
@Override @Override
public JsonSerializer<?> createContextual(SerializerProvider serializerProvider, BeanProperty beanProperty) throws JsonMappingException { public JsonSerializer<?> createContextual(SerializerProvider serializerProvider, BeanProperty beanProperty) throws JsonMappingException {
if (beanProperty != null) { if (beanProperty != null) {
Object bdCountry = redisService.getCacheObject(CacheConstants.BD_COUNTRY + SecurityContextHolder.getUserCountry());
if (Objects.equals(beanProperty.getType().getRawClass(), BigDecimal.class)) { if (Objects.equals(beanProperty.getType().getRawClass(), BigDecimal.class)) {
BigDecimalFormat bigDecimalFormat = beanProperty.getAnnotation((BigDecimalFormat.class)); BigDecimalFormat bigDecimalFormat = beanProperty.getAnnotation((BigDecimalFormat.class));
if (bigDecimalFormat == null) { if (bigDecimalFormat == null) {
bigDecimalFormat = beanProperty.getContextAnnotation(BigDecimalFormat.class); bigDecimalFormat = beanProperty.getContextAnnotation(BigDecimalFormat.class);
} }
BigDecimalSerializer bigDecimalSerializer = new BigDecimalSerializer(); BigDecimalSerializer bigDecimalSerializer = new BigDecimalSerializer();
int numberPlaces = Integer.parseInt(JSONUtil.parseObj(bdCountry).get("numberPlaces").toString()); bigDecimalSerializer.format = replaceNumber();
bigDecimalSerializer.format = replaceNumber(numberPlaces);
if (bigDecimalFormat != null) { if (bigDecimalFormat != null) {
bigDecimalSerializer.format = bigDecimalFormat.value(); bigDecimalSerializer.format = bigDecimalFormat.value();
} }
@ -85,11 +68,12 @@ public class BigDecimalSerializer extends JsonSerializer<BigDecimal> implements
return new BigDecimalSerializer(); return new BigDecimalSerializer();
} }
private String replaceNumber(int numberPlaces) { private String replaceNumber() {
StringBuilder number = new StringBuilder("#0."); StringBuilder number = new StringBuilder("#0.");
for (int i = 0; i < numberPlaces; i++) { for (int i = 0; i < 6; i++) {
number.append("0"); number.append("0");
} }
return number.toString(); return number.toString();
} }
} }

View File

@ -37,6 +37,21 @@ public class RabbitMqConstants {
*/ */
public static final String ORDER_SECOND_KEY = PREFIX + "order.second.key"; 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 * 活动 exchange
*/ */

View File

@ -4,12 +4,7 @@ import lombok.AllArgsConstructor;
import lombok.Getter; 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 @AllArgsConstructor
@Getter @Getter

View File

@ -5,11 +5,7 @@ import lombok.AllArgsConstructor;
import lombok.Getter; import lombok.Getter;
/** /**
* @Description: 签呈流程类型 * 签呈流程类型
* @Author: jiang chao
* @Time: 2022/11/10 17:35
* @Classname: ESignType
* @PackageName: com.hzs.common.core.enums
*/ */
@AllArgsConstructor @AllArgsConstructor
@Getter @Getter

View File

@ -5,11 +5,7 @@ import lombok.Data;
import java.util.List; import java.util.List;
/** /**
* @Description: 基础权限基数 * 基础权限基数
* @Author: jiang chao
* @Time: 2023/5/22 15:48
* @Classname: BaseAuthorityEntity
* @PackageName: com.hzs.common.core.web.domain
*/ */
@Data @Data
public class BaseAuthorityEntity { public class BaseAuthorityEntity {