From d50fa4085b34bd4fe2eca55ea93853f50138108d Mon Sep 17 00:00:00 2001 From: cabbage <281119120@qq.com> Date: Fri, 13 Jun 2025 13:59:48 +0800 Subject: [PATCH 1/2] =?UTF-8?q?##=20=E4=BD=BF=E7=94=A8BigDecimalFormat?= =?UTF-8?q?=E6=B3=A8=E8=A7=A3=EF=BC=8C=E9=BB=98=E8=AE=A4=E4=B8=8D=E7=94=A8?= =?UTF-8?q?=E5=9B=9B=E8=88=8D=E4=BA=94=E5=85=A5=E6=94=B9=E4=B8=BA=E5=8E=BB?= =?UTF-8?q?=E5=B0=BE=EF=BC=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../core/config/BigDecimalSerializer.java | 34 +++++-------------- 1 file changed, 9 insertions(+), 25 deletions(-) diff --git a/bd-common/bd-common-core/src/main/java/com/hzs/common/core/config/BigDecimalSerializer.java b/bd-common/bd-common-core/src/main/java/com/hzs/common/core/config/BigDecimalSerializer.java index 37378e8e..18f9bdc8 100644 --- a/bd-common/bd-common-core/src/main/java/com/hzs/common/core/config/BigDecimalSerializer.java +++ b/bd-common/bd-common-core/src/main/java/com/hzs/common/core/config/BigDecimalSerializer.java @@ -1,6 +1,5 @@ package com.hzs.common.core.config; -import cn.hutool.json.JSONUtil; import com.fasterxml.jackson.core.JsonGenerator; import com.fasterxml.jackson.databind.BeanProperty; import com.fasterxml.jackson.databind.JsonMappingException; @@ -8,14 +7,11 @@ import com.fasterxml.jackson.databind.JsonSerializer; import com.fasterxml.jackson.databind.SerializerProvider; import com.fasterxml.jackson.databind.ser.ContextualSerializer; import com.hzs.common.core.annotation.BigDecimalFormat; -import com.hzs.common.core.constant.CacheConstants; -import com.hzs.common.core.context.SecurityContextHolder; -import com.hzs.common.core.service.RedisService; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.jackson.JsonComponent; import java.io.IOException; import java.math.BigDecimal; +import java.math.RoundingMode; import java.text.DecimalFormat; import java.util.Objects; @@ -28,15 +24,6 @@ public class BigDecimalSerializer extends JsonSerializer implements // 默认保留2位小数 private String format = "#0.00"; - private String zeroFormat = "#0"; - - private RedisService redisService; - - @Autowired - public void setRedisService(RedisService redisService) { - this.redisService = redisService; - } - /** * 序列化处理方式 * @@ -47,12 +34,10 @@ public class BigDecimalSerializer extends JsonSerializer implements */ @Override public void serialize(BigDecimal bigDecimal, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException { -// if(ComputeUtil.compareEqual(ComputeUtil.computeSubtract(bigDecimal, bigDecimal.setScale(0, RoundingMode.DOWN)), BigDecimal.ZERO)){ -// jsonGenerator.writeString(new DecimalFormat(zeroFormat).format(bigDecimal)); -// }else{ -// jsonGenerator.writeString(bigDecimal.setScale(6, RoundingMode.HALF_UP).stripTrailingZeros().toString()); - jsonGenerator.writeString(new DecimalFormat(format).format(bigDecimal)); -// } + DecimalFormat decimalFormat = new DecimalFormat(format); + // 改为使用去尾方式显示 + decimalFormat.setRoundingMode(RoundingMode.DOWN); + jsonGenerator.writeString(decimalFormat.format(bigDecimal)); } /** @@ -66,15 +51,13 @@ public class BigDecimalSerializer extends JsonSerializer implements @Override public JsonSerializer createContextual(SerializerProvider serializerProvider, BeanProperty beanProperty) throws JsonMappingException { if (beanProperty != null) { - Object bdCountry = redisService.getCacheObject(CacheConstants.BD_COUNTRY + SecurityContextHolder.getUserCountry()); if (Objects.equals(beanProperty.getType().getRawClass(), BigDecimal.class)) { BigDecimalFormat bigDecimalFormat = beanProperty.getAnnotation((BigDecimalFormat.class)); if (bigDecimalFormat == null) { bigDecimalFormat = beanProperty.getContextAnnotation(BigDecimalFormat.class); } BigDecimalSerializer bigDecimalSerializer = new BigDecimalSerializer(); - int numberPlaces = Integer.parseInt(JSONUtil.parseObj(bdCountry).get("numberPlaces").toString()); - bigDecimalSerializer.format = replaceNumber(numberPlaces); + bigDecimalSerializer.format = replaceNumber(); if (bigDecimalFormat != null) { bigDecimalSerializer.format = bigDecimalFormat.value(); } @@ -85,11 +68,12 @@ public class BigDecimalSerializer extends JsonSerializer implements return new BigDecimalSerializer(); } - private String replaceNumber(int numberPlaces) { + private String replaceNumber() { StringBuilder number = new StringBuilder("#0."); - for (int i = 0; i < numberPlaces; i++) { + for (int i = 0; i < 6; i++) { number.append("0"); } return number.toString(); } + } From 3f66820e553b504546dc0d16e7b7e16e9ec957de Mon Sep 17 00:00:00 2001 From: cabbage <281119120@qq.com> Date: Fri, 13 Jun 2025 14:16:09 +0800 Subject: [PATCH 2/2] =?UTF-8?q?##=20=E5=A5=96=E9=87=91=E6=98=8E=E7=BB=86?= =?UTF-8?q?=E3=80=81=E5=A5=96=E9=87=91=E6=B1=87=E6=80=BB=E6=8E=A5=E5=8F=A3?= =?UTF-8?q?=E8=B0=83=E6=95=B4=EF=BC=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../api/ApiCuMemberBonusController.java | 32 ++--- .../impl/CuMemberBonusServiceImpl.java | 42 +++--- .../bonus/vo/MemberBonusFirstPurchaseVO.java | 125 +++++++++++------- .../bonus/bonus/vo/MemberRealIncomeVO.java | 9 +- .../hzs/bonus/bonus/vo/PubMemberBonusVO.java | 2 + .../member/vo/CuMemberRetailAchieveVO.java | 7 - 6 files changed, 112 insertions(+), 105 deletions(-) diff --git a/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/bonus/controller/api/ApiCuMemberBonusController.java b/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/bonus/controller/api/ApiCuMemberBonusController.java index 0577ad47..11c790cc 100644 --- a/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/bonus/controller/api/ApiCuMemberBonusController.java +++ b/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/bonus/controller/api/ApiCuMemberBonusController.java @@ -32,7 +32,7 @@ import java.util.List; public class ApiCuMemberBonusController extends BaseController { @Autowired - private ICuMemberBonusService cuMemberBonusService; + private ICuMemberBonusService iCuMemberBonusService; /** * 新零售实时奖金:查询会员实时奖金,当日的奖金 @@ -45,7 +45,7 @@ public class ApiCuMemberBonusController extends BaseController { bonusParam.setEndDate(DateUtils.afterDate(1, ChronoUnit.DAYS, DateUtils.currentDate())); bonusParam.setGrantStatus(EGrantStatus.SETTLED.getValue()); - List cuMemberBonusList = cuMemberBonusService.queryMemberSecondBonusVoByCondition(bonusParam); + List cuMemberBonusList = iCuMemberBonusService.queryMemberSecondBonusVoByCondition(bonusParam); List memberBonusVOList = new ArrayList<>(); cuMemberBonusList.forEach(cuMemberBonus -> { if (ComputeUtil.compareValue(cuMemberBonus.getRealIncomeTotal())) { @@ -63,25 +63,19 @@ public class ApiCuMemberBonusController extends BaseController { } /** - * 查询会员某个时间段内的奖金,默认查询15天内,查询直推 + * 新零售实时奖金:查询会员奖金列表 */ @PostMapping("/query-bonus-first") public TableDataInfo listFirstRepurchaseBonus(@RequestBody BonusParam bonusParam) { setBonusParam(bonusParam); - List cuMemberBonusList = cuMemberBonusService.queryMemberBonusVoByCondition(bonusParam); + + startPage(); + List cuMemberBonusList = iCuMemberBonusService.queryMemberBonusVoByCondition(bonusParam); + List 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.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())); - memberBonusFirstPurchaseVO.setPurRealSubtotal(ComputeUtil.computeAdd(memberBonusFirstPurchaseVO.getPurRealSubtotal(), memberBonusFirstPurchaseVO.getGlobalPoints())); firstPurchaseVOList.add(memberBonusFirstPurchaseVO); }); return getDataTable(firstPurchaseVOList); @@ -97,12 +91,13 @@ public class ApiCuMemberBonusController extends BaseController { bonusParam.setEndDate(DateUtils.currentDate()); bonusParam.setStartDate(DateUtils.beforeDate(1, ChronoUnit.DAYS, bonusParam.getEndDate())); - List cuMemberBonusList = cuMemberBonusService.queryMemberBonusTotalByCondition(bonusParam); + List cuMemberBonusList = iCuMemberBonusService.queryMemberBonusTotalByCondition(bonusParam); MemberRealIncomeVO memberRealIncomeVO = new MemberRealIncomeVO(); if (CollectionUtil.isEmpty(cuMemberBonusList)) { memberRealIncomeVO.setRealIncomeTotal(BigDecimal.ZERO); } else { - memberRealIncomeVO.setRealIncomeTotal(ComputeUtil.computeAdd(cuMemberBonusList.get(0).getRealIncomeTotal(), cuMemberBonusList.get(0).getBackPoints())); +// memberRealIncomeVO.setRealIncomeTotal(ComputeUtil.computeAdd(cuMemberBonusList.get(0).getRealIncomeTotal(), cuMemberBonusList.get(0).getBackPoints())); + memberRealIncomeVO.setRealIncomeTotal(cuMemberBonusList.get(0).getRealIncomeTotal()); } return getDataTable(Collections.singletonList(memberRealIncomeVO)); } @@ -113,7 +108,7 @@ public class ApiCuMemberBonusController extends BaseController { @PostMapping("/query-bonus-repurchase") public TableDataInfo listRepurchaseBonus(@RequestBody BonusParam bonusParam) { setBonusParam(bonusParam); - List cuMemberBonusList = cuMemberBonusService.queryMemberBonusVoByCondition(bonusParam); + List cuMemberBonusList = iCuMemberBonusService.queryMemberBonusVoByCondition(bonusParam); List memberBonusPurchaseVoList = new ArrayList<>(); cuMemberBonusList.forEach(cuMemberBonus -> { MemberBonusPurchaseVO memberBonusPurchaseVO = BeanUtil.copyProperties(cuMemberBonus, MemberBonusPurchaseVO.class, "settleDate"); @@ -136,7 +131,7 @@ public class ApiCuMemberBonusController extends BaseController { @PostMapping("/query-bonus-hi-fun") public TableDataInfo listHiFunBonus(@RequestBody BonusParam bonusParam) { setBonusParam(bonusParam); - List cuMemberBonusList = cuMemberBonusService.queryMemberBonusVoByCondition(bonusParam); + List cuMemberBonusList = iCuMemberBonusService.queryMemberBonusVoByCondition(bonusParam); List bonusHiFunVoList = new ArrayList<>(); cuMemberBonusList.forEach(cuMemberBonus -> { MemberBonusHiFunVO memberBonusHiFunVO = BeanUtil.copyProperties(cuMemberBonus, MemberBonusHiFunVO.class, "settleDate"); @@ -160,6 +155,7 @@ public class ApiCuMemberBonusController extends BaseController { private void setBonusParam(@RequestBody BonusParam bonusParam) { bonusParam.setPkCountry(SecurityUtils.getPkCountry()); bonusParam.setPkMember(SecurityUtils.getUserId()); + Date startDate = DateUtils.beforeDate(15, ChronoUnit.DAYS, DateUtils.currentDate()); if (bonusParam.getStartDate() == null) { bonusParam.setStartDate(startDate); @@ -180,7 +176,7 @@ public class ApiCuMemberBonusController extends BaseController { public TableDataInfo listBonusSource(@RequestBody BonusParam bonusParam) { setBonusParam(bonusParam); startPage(); - TableDataInfo tableDataInfo = cuMemberBonusService.queryMemberBonusDetailVoByCondition(bonusParam); + TableDataInfo tableDataInfo = iCuMemberBonusService.queryMemberBonusDetailVoByCondition(bonusParam); return tableDataInfo; } diff --git a/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/bonus/service/impl/CuMemberBonusServiceImpl.java b/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/bonus/service/impl/CuMemberBonusServiceImpl.java index 9cc77e1e..206cedac 100644 --- a/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/bonus/service/impl/CuMemberBonusServiceImpl.java +++ b/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/bonus/service/impl/CuMemberBonusServiceImpl.java @@ -21,7 +21,6 @@ import com.hzs.common.core.domain.R; import com.hzs.common.core.enums.*; import com.hzs.common.core.utils.ComputeUtil; import com.hzs.common.core.utils.DateUtils; -import com.hzs.common.core.utils.StringUtils; import com.hzs.common.core.web.page.TableDataInfo; import com.hzs.common.domain.member.bonus.CuMemberBonus; import com.hzs.common.domain.member.ext.*; @@ -135,27 +134,28 @@ public class CuMemberBonusServiceImpl extends ServiceImpl queryMemberBonusVoByCondition(BonusParam bonusParam) { - String value = iSystemConfigServiceApi.getBonusSystemConfig(bonusParam.getPkCountry(), ESystemConfig.EXPAND_CAP_METHOD.getKey()).getData(); - if (StringUtils.isNotEmpty(value) && Objects.equals(Integer.toString(EExpandCapMethod.WEEK_SETTLE.getValue()), value)) { - // 周结的话不能查询当前周的数据,只能查询上周的数据 - bonusParam.setEndDate(DateUtils.parseStringToDate(DateUtils.getRecentlyTuesday(bonusParam.getEndDate()))); - } - return handleMemberBonusPurchase(getCuMemberBonusExtList(bonusParam), bonusParam, value); +// String value = iSystemConfigServiceApi.getBonusSystemConfig(bonusParam.getPkCountry(), ESystemConfig.EXPAND_CAP_METHOD.getKey()).getData(); +// if (StringUtils.isNotEmpty(value) && Objects.equals(Integer.toString(EExpandCapMethod.WEEK_SETTLE.getValue()), value)) { +// // 周结的话不能查询当前周的数据,只能查询上周的数据 +// bonusParam.setEndDate(DateUtils.parseStringToDate(DateUtils.getRecentlyTuesday(bonusParam.getEndDate()))); +// } + return handleMemberBonusPurchase(getCuMemberBonusExtList(bonusParam), bonusParam); } - private List handleMemberBonusPurchase(List cuMemberBonusExtList, BonusParam bonusParam, String value) { - if (StringUtils.isNotEmpty(value) && Objects.equals(Integer.toString(EExpandCapMethod.WEEK_SETTLE.getValue()), value)) { - Collections.reverse(cuMemberBonusExtList); - return cuMemberBonusExtList; - } + private List handleMemberBonusPurchase(List cuMemberBonusExtList, BonusParam bonusParam) { +// if (StringUtils.isNotEmpty(value) && Objects.equals(Integer.toString(EExpandCapMethod.WEEK_SETTLE.getValue()), value)) { +// Collections.reverse(cuMemberBonusExtList); +// return cuMemberBonusExtList; +// } + List memberBonusExtList = new ArrayList<>(); Map cuMemberBonusExtMap = new HashMap<>(); - cuMemberBonusExtList.forEach(cuMemberBonusExt -> - cuMemberBonusExtMap.put(DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD, cuMemberBonusExt.getSettleDate()), cuMemberBonusExt)); + cuMemberBonusExtList.forEach(cuMemberBonusExt -> cuMemberBonusExtMap.put(DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD, cuMemberBonusExt.getSettleDate()), cuMemberBonusExt)); Date endDate = DateUtils.beforeDate(1, ChronoUnit.DAYS, bonusParam.getEndDate()); Date compareDate = DateUtils.parseStringToDateTime(DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD, DateUtils.currentDate()) + " 13:00:00"); - while (DateUtils.compareDateAfter(endDate, bonusParam.getStartDate()) || - DateUtils.compareDateEqual(endDate, bonusParam.getStartDate())) { + + while (DateUtils.compareDateAfter(endDate, bonusParam.getStartDate()) + || DateUtils.compareDateEqual(endDate, bonusParam.getStartDate())) { String date = DateUtils.parseDateToFormat(DateUtils.YYYY_MM_DD, endDate); if (cuMemberBonusExtMap.containsKey(date)) { memberBonusExtList.add(cuMemberBonusExtMap.get(date)); @@ -178,22 +178,14 @@ public class CuMemberBonusServiceImpl extends ServiceImpl