From 74cbeb10683e30a0017502fd7ed63aba27ff4486 Mon Sep 17 00:00:00 2001 From: zt Date: Wed, 15 Jan 2025 11:36:55 +0800 Subject: [PATCH] =?UTF-8?q?=E6=A0=87=E7=AD=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../admin/group/vo/MemberGroupBaseVO.java | 2 + .../admin/order/vo/OrderDetailsRespVO.java | 5 + .../admin/tag/vo/MemberTagBaseVO.java | 26 +- .../app/order/vo/AppOrderRespVO.java | 5 + .../dal/dataobject/group/MemberGroupDO.java | 5 + .../dal/dataobject/order/DishOrderDO.java | 5 + .../dal/dataobject/tag/MemberTagDO.java | 25 ++ .../service/amount/DeductionServiceImpl.java | 6 +- .../service/user/MemberUserServiceImpl.java | 348 ++++++++++-------- 9 files changed, 271 insertions(+), 156 deletions(-) diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/group/vo/MemberGroupBaseVO.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/group/vo/MemberGroupBaseVO.java index 84aa86da..bc9879c3 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/group/vo/MemberGroupBaseVO.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/group/vo/MemberGroupBaseVO.java @@ -32,4 +32,6 @@ public class MemberGroupBaseVO { @Schema(description = "食堂Id", example = "1") private Long carteenId; + @Schema(description = "类型", example = "1") + private Integer type; } diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/order/vo/OrderDetailsRespVO.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/order/vo/OrderDetailsRespVO.java index 6107ea8d..45511448 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/order/vo/OrderDetailsRespVO.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/order/vo/OrderDetailsRespVO.java @@ -91,4 +91,9 @@ public class OrderDetailsRespVO { private BigDecimal refundAmount; private String faceData; + + /** + * 补贴金额 + */ + private BigDecimal subsidyAmount; } diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/tag/vo/MemberTagBaseVO.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/tag/vo/MemberTagBaseVO.java index d5fabbf2..810055a1 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/tag/vo/MemberTagBaseVO.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/tag/vo/MemberTagBaseVO.java @@ -21,7 +21,6 @@ public class MemberTagBaseVO { * 减免类型:1-比例,2-固定金额 */ @Schema(description = "减免类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") - @NotNull(message = "减免类型不能为空") private String type; /** * 比例 @@ -52,5 +51,28 @@ public class MemberTagBaseVO { * 晚 */ private BigDecimal night; - + /** + * 早餐比例 + */ + private Integer morningProportion; + /** + * 午餐比例 + */ + private Integer noonProportion; + /** + * 晚餐比例 + */ + private Integer nightProportion; + /** + * 早上基础价钱 + */ + private BigDecimal morningBase; + /** + * 中午基础价钱 + */ + private BigDecimal noonBase; + /** + * 晚上基础价钱 + */ + private BigDecimal nightBase; } diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/order/vo/AppOrderRespVO.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/order/vo/AppOrderRespVO.java index a5bab8d7..80b98116 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/order/vo/AppOrderRespVO.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/order/vo/AppOrderRespVO.java @@ -80,4 +80,9 @@ public class AppOrderRespVO { private BigDecimal refundAmount; private String faceData; + + /** + * 补贴金额 + */ + private BigDecimal subsidyAmount; } \ No newline at end of file diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/dataobject/group/MemberGroupDO.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/dataobject/group/MemberGroupDO.java index 05957dd7..1b820809 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/dataobject/group/MemberGroupDO.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/dataobject/group/MemberGroupDO.java @@ -50,4 +50,9 @@ public class MemberGroupDO extends BaseDO { * 食堂Id */ private Long carteenId; + + /** + * 1-行政服务中心,2-区管单位,3-盈创力和,4-私人,5-其他单位 + */ + private Integer type; } diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/dataobject/order/DishOrderDO.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/dataobject/order/DishOrderDO.java index 0fde6c23..132cfd74 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/dataobject/order/DishOrderDO.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/dataobject/order/DishOrderDO.java @@ -109,4 +109,9 @@ public class DishOrderDO extends BaseDO { private Boolean billingExist; private String billingNum; + + /** + * 补贴金额 + */ + private BigDecimal subsidyAmount; } \ No newline at end of file diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/dataobject/tag/MemberTagDO.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/dataobject/tag/MemberTagDO.java index acf4425c..d7690b0c 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/dataobject/tag/MemberTagDO.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/dataobject/tag/MemberTagDO.java @@ -66,4 +66,29 @@ public class MemberTagDO extends BaseDO { */ private BigDecimal night; + /** + * 早餐比例 + */ + private Integer morningProportion; + /** + * 午餐比例 + */ + private Integer noonProportion; + /** + * 晚餐比例 + */ + private Integer nightProportion; + /** + * 早上基础价钱 + */ + private BigDecimal morningBase; + /** + * 中午基础价钱 + */ + private BigDecimal noonBase; + /** + * 晚上基础价钱 + */ + private BigDecimal nightBase; + } diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/amount/DeductionServiceImpl.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/amount/DeductionServiceImpl.java index d3392c22..a67e1bc5 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/amount/DeductionServiceImpl.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/amount/DeductionServiceImpl.java @@ -79,9 +79,12 @@ public class DeductionServiceImpl implements DeductionService { //BigDecimal money = user.getMoney(); //计算减免价格 BigDecimal reductionAmount = BigDecimal.ZERO; + //补贴 + BigDecimal subsidyAmount = BigDecimal.ZERO; if (total.compareTo(BigDecimal.ZERO) > 0) { - reductionAmount = userService.getReductionAmount(userId, total, dishOrderDO.getCreateTime()); + subsidyAmount = userService.getReductionAmount(userId, total, dishOrderDO.getCreateTime()); } + dishOrderDO.setSubsidyAmount(subsidyAmount); if (dishOrderDO.getReductionAmount().compareTo(BigDecimal.ZERO) > 0) { reductionAmount = reductionAmount.add(dishOrderDO.getReductionAmount()); dishOrderDO.setReductionAmount(reductionAmount); @@ -90,6 +93,7 @@ public class DeductionServiceImpl implements DeductionService { } dishOrderDO.setReductionState(reductionAmount.compareTo(BigDecimal.ZERO) > 0 ? "1" : "0"); //计算减免后的总价 + reductionAmount = reductionAmount.add(subsidyAmount); if (total.compareTo(reductionAmount) < 0) { total = BigDecimal.ZERO; } else { diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/user/MemberUserServiceImpl.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/user/MemberUserServiceImpl.java index 780784cd..a5965e45 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/user/MemberUserServiceImpl.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/user/MemberUserServiceImpl.java @@ -65,6 +65,7 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.databind.ObjectMapper; import com.google.common.annotations.VisibleForTesting; +import com.sun.org.apache.bcel.internal.generic.NEW; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; @@ -255,13 +256,13 @@ public class MemberUserServiceImpl implements MemberUserService { validateMobileUnique(userId, reqVO.getMobile()); //修改人脸手机号 - if (StrUtil.isNotBlank(reqVO.getMobile())){ - memberUserMapper.updateFace(userId,reqVO.getMobile(),reqVO.getNickname()); + if (StrUtil.isNotBlank(reqVO.getMobile())) { + memberUserMapper.updateFace(userId, reqVO.getMobile(), reqVO.getNickname()); } MemberUserDO updateObj = BeanUtils.toBean(reqVO, MemberUserDO.class).setId(userId); memberUserMapper.updateById(updateObj); - userExpandService.updateUserExpandByuserId(userId,reqVO); + userExpandService.updateUserExpandByuserId(userId, reqVO); } @Override @@ -358,23 +359,23 @@ public class MemberUserServiceImpl implements MemberUserService { validateMobileUnique(updateReqVO.getId(), updateReqVO.getMobile()); //修改人脸手机号 - if (StrUtil.isNotBlank(updateReqVO.getMobile())){ - memberUserMapper.updateFace(updateReqVO.getId(),updateReqVO.getMobile(),updateReqVO.getNickname()); + if (StrUtil.isNotBlank(updateReqVO.getMobile())) { + memberUserMapper.updateFace(updateReqVO.getId(), updateReqVO.getMobile(), updateReqVO.getNickname()); } // 校验卡号 - if(StringUtils.isNotBlank(updateReqVO.getCardId())){ + if (StringUtils.isNotBlank(updateReqVO.getCardId())) { adminCardService.checkCard(updateReqVO.getCardId()); List memberUserDOS = memberUserMapper.selectList(Wrappers.lambdaQuery() .eq(MemberUserDO::getCardId, updateReqVO.getCardId()) - .ne(MemberUserDO::getId,updateReqVO.getId())); - if(memberUserDOS.size()>0){ + .ne(MemberUserDO::getId, updateReqVO.getId())); + if (memberUserDOS.size() > 0) { throw exception(CARD_ALREADY_BIND); } } // 更新 MemberUserDO updateObj = MemberUserConvert.INSTANCE.convert(updateReqVO); - updateObj.setCardId(StringUtils.isBlank(updateReqVO.getCardId())?"":updateReqVO.getCardId()); + updateObj.setCardId(StringUtils.isBlank(updateReqVO.getCardId()) ? "" : updateReqVO.getCardId()); memberUserMapper.updateById(updateObj); } @@ -410,7 +411,7 @@ public class MemberUserServiceImpl implements MemberUserService { @Override public PageResult getUserPage(MemberUserPageReqVO pageReqVO) { - if(pageReqVO.getGroupId()!=null){ + if (pageReqVO.getGroupId() != null) { pageReqVO.setUserIds(memberGroupMapper.getMemberList(pageReqVO.getGroupId())); } return memberUserMapper.selectPage(pageReqVO); @@ -455,7 +456,7 @@ public class MemberUserServiceImpl implements MemberUserService { public Boolean bindCard(String cardId) { adminCardService.checkCard(cardId); List memberUserDOS = memberUserMapper.selectList(Wrappers.lambdaQuery().eq(MemberUserDO::getCardId, cardId)); - if(memberUserDOS.size()>0){ + if (memberUserDOS.size() > 0) { throw exception(CARD_ALREADY_BIND); } MemberUserDO memberUserDO = memberUserMapper.selectById(SecurityFrameworkUtils.getLoginUserId()); @@ -481,23 +482,23 @@ public class MemberUserServiceImpl implements MemberUserService { List moIds = new ArrayList<>(); List miIds = new ArrayList<>(); List niIds = new ArrayList<>(); - for (DishOrderDO orderDO : dishOrderDOS){ + for (DishOrderDO orderDO : dishOrderDOS) { int hour = orderDO.getCreateTime().getHour(); //早 - if(TimePeriodEnum.MORNING.getStartInt()<=hour && hour<=TimePeriodEnum.MORNING.getEndInt()){ + if (TimePeriodEnum.MORNING.getStartInt() <= hour && hour <= TimePeriodEnum.MORNING.getEndInt()) { moIds.add(orderDO.getId()); - } else if (TimePeriodEnum.MIDDAY.getStartInt()<=hour && hour<=TimePeriodEnum.MIDDAY.getEndInt()){ + } else if (TimePeriodEnum.MIDDAY.getStartInt() <= hour && hour <= TimePeriodEnum.MIDDAY.getEndInt()) { miIds.add(orderDO.getId()); - }else{ + } else { niIds.add(orderDO.getId()); } } - if(CollectionUtil.isNotEmpty(moIds)){ + if (CollectionUtil.isNotEmpty(moIds)) { List orderDetailDOS = orderDetailService.selectListByOrderIds(moIds); AppNutritionDayVo appNutritionDayVo = new AppNutritionDayVo(); BigDecimal reduce = orderDetailDOS.stream() - .filter(f-> ObjectUtil.isNotEmpty(f.getHeat())) - .map(m->BigDecimal.valueOf(m.getHeat())) + .filter(f -> ObjectUtil.isNotEmpty(f.getHeat())) + .map(m -> BigDecimal.valueOf(m.getHeat())) .reduce(BigDecimal.ZERO, BigDecimal::add).setScale(2, RoundingMode.HALF_UP); appNutritionDayVo.setIntake(reduce); appNutritionDayVo.setProposeIntake(MemberConstants.PROPOSE_MORNING); @@ -505,12 +506,12 @@ public class MemberUserServiceImpl implements MemberUserService { appNutritionDayVo.setDetailList(orderDetailDOS); result.add(appNutritionDayVo); } - if(CollectionUtil.isNotEmpty(miIds)){ + if (CollectionUtil.isNotEmpty(miIds)) { List orderDetailDOS = orderDetailService.selectListByOrderIds(miIds); AppNutritionDayVo appNutritionDayVo = new AppNutritionDayVo(); BigDecimal reduce = orderDetailDOS.stream() - .filter(f-> ObjectUtil.isNotEmpty(f.getHeat())) - .map(m->BigDecimal.valueOf(m.getHeat())) + .filter(f -> ObjectUtil.isNotEmpty(f.getHeat())) + .map(m -> BigDecimal.valueOf(m.getHeat())) .reduce(BigDecimal.ZERO, BigDecimal::add).setScale(2, RoundingMode.HALF_UP); appNutritionDayVo.setIntake(reduce); appNutritionDayVo.setProposeIntake(MemberConstants.PROPOSE_NOON); @@ -518,12 +519,12 @@ public class MemberUserServiceImpl implements MemberUserService { appNutritionDayVo.setDetailList(orderDetailDOS); result.add(appNutritionDayVo); } - if(CollectionUtil.isNotEmpty(niIds)){ + if (CollectionUtil.isNotEmpty(niIds)) { List orderDetailDOS = orderDetailService.selectListByOrderIds(niIds); AppNutritionDayVo appNutritionDayVo = new AppNutritionDayVo(); BigDecimal reduce = orderDetailDOS.stream() - .filter(f-> ObjectUtil.isNotEmpty(f.getHeat())) - .map(m->BigDecimal.valueOf(m.getHeat())) + .filter(f -> ObjectUtil.isNotEmpty(f.getHeat())) + .map(m -> BigDecimal.valueOf(m.getHeat())) .reduce(BigDecimal.ZERO, BigDecimal::add).setScale(2, RoundingMode.HALF_UP); appNutritionDayVo.setIntake(reduce); appNutritionDayVo.setProposeIntake(MemberConstants.PROPOSE_NIGHT); @@ -558,7 +559,7 @@ public class MemberUserServiceImpl implements MemberUserService { if (CollectionUtil.isNotEmpty(ids)) { List orderDetailDOS = orderDetailService.selectListByOrderIds(ids); mondayVO.setDetailList(orderDetailDOS); - mondayVO.setIntake(orderDetailDOS.stream().filter(vo->vo!=null && vo.getHeat()!=null).map(OrderDetailDO::getHeat).reduce(0d, Double::sum)); + mondayVO.setIntake(orderDetailDOS.stream().filter(vo -> vo != null && vo.getHeat() != null).map(OrderDetailDO::getHeat).reduce(0d, Double::sum)); } result.add(mondayVO); } @@ -575,20 +576,21 @@ public class MemberUserServiceImpl implements MemberUserService { } @Override - public List getUserHeat(Long userId, LocalDateTime startDate,LocalDateTime endDate,Long orderId) { - if(ObjectUtil.isNotEmpty(orderId)){ - return suggestion(userId,null,null,Boolean.FALSE,orderId); - }else{ - return suggestion(userId,startDate,endDate,Boolean.TRUE,null); + public List getUserHeat(Long userId, LocalDateTime startDate, LocalDateTime endDate, Long orderId) { + if (ObjectUtil.isNotEmpty(orderId)) { + return suggestion(userId, null, null, Boolean.FALSE, orderId); + } else { + return suggestion(userId, startDate, endDate, Boolean.TRUE, null); } } - public List suggestion(Long userId,LocalDateTime startDate,LocalDateTime endDate,Boolean bol,Long orderId) { + + public List suggestion(Long userId, LocalDateTime startDate, LocalDateTime endDate, Boolean bol, Long orderId) { //查询今天的订单 - List collect= new ArrayList<>(); - if(ObjectUtil.isNotEmpty(orderId)){ - collect= Collections.singletonList(orderId); + List collect = new ArrayList<>(); + if (ObjectUtil.isNotEmpty(orderId)) { + collect = Collections.singletonList(orderId); } - if(ObjectUtil.isNotEmpty(userId)){ + if (ObjectUtil.isNotEmpty(userId)) { collect = dishOrderMapper.selectList(new LambdaQueryWrapperX() .eqIfPresent(DishOrderDO::getUserId, userId) .eq(DishOrderDO::getOrderStatus, DishOrderDO.COMPLETE) @@ -597,25 +599,25 @@ public class MemberUserServiceImpl implements MemberUserService { .map(DishOrderDO::getId) .collect(Collectors.toList()); } - if(ObjectUtil.isEmpty(collect)){ + if (ObjectUtil.isEmpty(collect)) { return Collections.emptyList(); } //获取今天购买的菜品id List orderDetailDOS = orderDetailMapper.selectList(new LambdaQueryWrapperX() .inIfPresent(OrderDetailDO::getOrderId, collect)); - if(ObjectUtil.isEmpty(orderDetailDOS)){ + if (ObjectUtil.isEmpty(orderDetailDOS)) { return Collections.emptyList(); } List collect3 = orderDetailDOS.stream().filter(a -> a.getDishesId() != null).collect(Collectors.toList()); - if(ObjectUtil.isEmpty(collect3)){ + if (ObjectUtil.isEmpty(collect3)) { return Collections.emptyList(); } Map> collect2 = collect3.stream().collect(Collectors.groupingBy(OrderDetailDO::getDishesId)); //热量求和统计方便 科学膳食小建议 double sum = orderDetailDOS - .stream().filter(vo->vo!=null && vo.getHeat()!=null) + .stream().filter(vo -> vo != null && vo.getHeat() != null) .mapToDouble(OrderDetailDO::getHeat).sum(); - List list=new ArrayList<>(); + List list = new ArrayList<>(); for (Map.Entry> entry1 : collect2.entrySet()) { List value1 = entry1.getValue(); //获取菜品id @@ -623,15 +625,15 @@ public class MemberUserServiceImpl implements MemberUserService { .map(OrderDetailDO::getDishesId) .collect(Collectors.toList()); //获取菜品营养信息 - List dishesList=new ArrayList<>(); - collect1.forEach(x-> { + List dishesList = new ArrayList<>(); + collect1.forEach(x -> { List dishesList1 = dishesNutritionApil.getDishesList(x); - if ( CollectionUtil.isNotEmpty(dishesList1)){ + if (CollectionUtil.isNotEmpty(dishesList1)) { dishesList.addAll(dishesList1); } }); //根据营养名称进行分组 - if(ObjUtil.isNotEmpty(dishesList)){ + if (ObjUtil.isNotEmpty(dishesList)) { BigDecimal reduce = value1.stream() .map(OrderDetailDO::getWeight) .filter(ObjectUtil::isNotEmpty) @@ -649,14 +651,14 @@ public class MemberUserServiceImpl implements MemberUserService { //转map List maps = BeanUtil.copyToList(list, Map.class); //判断是否需要 科学膳食小建议 - if(Boolean.TRUE.equals(bol)){ + if (Boolean.TRUE.equals(bol)) { Map build = MapUtil.builder(new HashMap()).build(); - if(sum<=MemberConstants.STANDARDS){ - build.put("prompt",MemberConstants.INSUFFICIENT_PROPOSAL); - }else if(sum groupingBy(List list){ - List list1=new ArrayList<>(); + public List groupingBy(List list) { + List list1 = new ArrayList<>(); Map> collect = list.stream() .collect(Collectors.groupingBy(DishesNutritionRespDTO::getNutritionName)); for (Map.Entry> entry : collect.entrySet()) { - DishesNutritionRespDTO dto=new DishesNutritionRespDTO(); + DishesNutritionRespDTO dto = new DishesNutritionRespDTO(); BigDecimal reduce = entry.getValue() .stream() .filter(f -> ObjectUtil.isNotEmpty(f.getNutritionNumber())) @@ -701,39 +703,40 @@ public class MemberUserServiceImpl implements MemberUserService { } return list1; } - public void computePercentage(List list){ + + public void computePercentage(List list) { //获取所有营养数量 BigDecimal sum = list.stream() - .filter(f-> ObjectUtil.isNotEmpty(f.getNutritionNumber())) - .map(m-> new BigDecimal(m.getNutritionNumber())) - .reduce(BigDecimal.ZERO,BigDecimal::add); + .filter(f -> ObjectUtil.isNotEmpty(f.getNutritionNumber())) + .map(m -> new BigDecimal(m.getNutritionNumber())) + .reduce(BigDecimal.ZERO, BigDecimal::add); BigDecimal bigDecimal = new BigDecimal(0); for (int i = 0; i < list.size(); i++) { - if(i < (list.size()-1)){ + if (i < (list.size() - 1)) { DishesNutritionRespDTO dto = list.get(i); BigDecimal bigDecimal1 = new BigDecimal(dto.getNutritionNumber()); BigDecimal div = NumberUtil.div(bigDecimal1, sum, 4); BigDecimal mul = NumberUtil.mul(div, 100); - bigDecimal=bigDecimal.add(mul); - list.get(i).setNutritionPer(mul.floatValue()+"%"); - }else{ - list.get(i).setNutritionPer(NumberUtil.sub(100,bigDecimal).doubleValue()+"%"); + bigDecimal = bigDecimal.add(mul); + list.get(i).setNutritionPer(mul.floatValue() + "%"); + } else { + list.get(i).setNutritionPer(NumberUtil.sub(100, bigDecimal).doubleValue() + "%"); } } } @Override - public Boolean bindFace(Long userId,Long faceId) { + public Boolean bindFace(Long userId, Long faceId) { MemberUserDO memberUserDO = memberUserMapper.selectById(userId); - if(memberUserDO == null){ + if (memberUserDO == null) { throw exception(USER_NOT_EXISTS); } // if(memberUserDO.getFaceId()!=null){ // memberUserMapper.deleteFace(memberUserDO.getFaceId()); // } memberUserDO.setFaceId(faceId); - return memberUserMapper.updateById(memberUserDO)>0; + return memberUserMapper.updateById(memberUserDO) > 0; } @@ -745,23 +748,23 @@ public class MemberUserServiceImpl implements MemberUserService { * @Date: 2024/4/10 下午2:30 */ @Override - public Map getDishesList(String platesNum) { + public Map getDishesList(String platesNum) { DiningPlatesDO diningPlatesDO = diningPlatesMapper.selectOne(new LambdaQueryWrapperX() - .eq(DiningPlatesDO::getDiningPlatesNum,platesNum)); + .eq(DiningPlatesDO::getDiningPlatesNum, platesNum)); //获取用户id Long userId = diningPlatesDO.getUserId(); //获取用户名称 MemberUserDO memberUserDO = memberUserMapper.selectById(userId); - BigDecimal moneyByUserId = cardService.getMoneyByUserId(userId,diningPlatesDO.getStoreId()); + BigDecimal moneyByUserId = cardService.getMoneyByUserId(userId, diningPlatesDO.getStoreId()); Map map = new HashMap<>(); - map.put("name",memberUserDO.getName()); + map.put("name", memberUserDO.getName()); map.put("money", String.valueOf(moneyByUserId)); return map; } @Override public MemberUserDO create(MemberUserAddVO addVO) { - if(StringUtils.isNotBlank(addVO.getCardId())){ + if (StringUtils.isNotBlank(addVO.getCardId())) { adminCardService.checkCard(addVO.getCardId()); } // 用户已经存在 @@ -774,7 +777,7 @@ public class MemberUserServiceImpl implements MemberUserService { String password = IdUtil.fastSimpleUUID(); // 插入用户 MemberUserDO user = new MemberUserDO(); - BeanUtil.copyProperties(addVO,user); + BeanUtil.copyProperties(addVO, user); user.setStatus(CommonStatusEnum.ENABLE.getStatus()); // 默认开启 user.setPassword(encodePassword(password)); // 加密密码 memberUserMapper.insert(user); @@ -788,32 +791,32 @@ public class MemberUserServiceImpl implements MemberUserService { @Override public String getCardId(Long userId) { - if(userId == null){ - userId = getLoginUserId(); + if (userId == null) { + userId = getLoginUserId(); } MemberUserDO memberUserDO = memberUserMapper.selectById(userId); return memberUserDO.getCardId(); } @Override - public BigDecimal getReductionAmount(Long userId, BigDecimal money,LocalDateTime time) { + public BigDecimal getReductionAmount(Long userId, BigDecimal money, LocalDateTime time) { String timePeriod = TimePeriodEnum.getTimePeriod(time); MemberUserDO memberUserDO = memberUserMapper.selectById(userId); List tagIds = memberUserDO.getTagIds(); - if (CollectionUtil.isEmpty(tagIds)){ + if (CollectionUtil.isEmpty(tagIds)) { return BigDecimal.ZERO; } List tagList = memberTagService.getTagList(tagIds); - if(tagList.size()>1){ + if (tagList.size() > 1) { //排序 List collect = tagList.stream().sorted(Comparator.comparing(MemberTagDO::getState)) .collect(Collectors.toList()); - return countAmount(collect.get(0),money,timePeriod); - }else { - return countAmount(tagList.get(0),money,timePeriod); + return countAmount(collect.get(0), money, timePeriod); + } else { + return countAmount(tagList.get(0), money, timePeriod); } } @@ -829,90 +832,128 @@ public class MemberUserServiceImpl implements MemberUserService { @Override public MemberUserDO getByFaceId(Long faceId) { - return memberUserMapper.selectOne(new LambdaQueryWrapper().eq(MemberUserDO::getFaceId,faceId).last("limit 1")); + return memberUserMapper.selectOne(new LambdaQueryWrapper().eq(MemberUserDO::getFaceId, faceId).last("limit 1")); } + @Override public MemberUserDO getByMobile(Long mobile) { - return memberUserMapper.selectOne(new LambdaQueryWrapper().eq(MemberUserDO::getMobile,mobile).last("limit 1")); + return memberUserMapper.selectOne(new LambdaQueryWrapper().eq(MemberUserDO::getMobile, mobile).last("limit 1")); } @Override public MemberUserDO getByCardId(String cardId) { - return memberUserMapper.selectOne(new LambdaQueryWrapper().eq(MemberUserDO::getCardId,cardId).last("limit 1")); + return memberUserMapper.selectOne(new LambdaQueryWrapper().eq(MemberUserDO::getCardId, cardId).last("limit 1")); } @Override - public Map getInfoByCard(String cardId,Long mobile,Long storeId) { + public Map getInfoByCard(String cardId, Long mobile, Long storeId) { HashMap map = new HashMap<>(); - if(ObjectUtil.isNotEmpty(cardId)){ + if (ObjectUtil.isNotEmpty(cardId)) { MemberUserDO byCardId = getByCardId(cardId); - if(ObjectUtil.isEmpty(byCardId)){ + if (ObjectUtil.isEmpty(byCardId)) { throw exception(CARD_USER_NOT_EXISTS); } - BigDecimal money = cardService.getMoneyByUserId(byCardId.getId(),storeId); - map.put("money",money); - map.put("userName",byCardId.getNickname()); + BigDecimal money = cardService.getMoneyByUserId(byCardId.getId(), storeId); + map.put("money", money); + map.put("userName", byCardId.getNickname()); } - if(ObjectUtil.isNotEmpty(mobile)){ + if (ObjectUtil.isNotEmpty(mobile)) { MemberUserDO byFaceId = getByMobile(mobile); - if(ObjectUtil.isEmpty(byFaceId)){ + if (ObjectUtil.isEmpty(byFaceId)) { throw exception(FACE_USER_NOT_EXISTS); } - BigDecimal money = cardService.getMoneyByUserId(byFaceId.getId(),storeId); - map.put("money",money); - map.put("userName",byFaceId.getNickname()); + BigDecimal money = cardService.getMoneyByUserId(byFaceId.getId(), storeId); + map.put("money", money); + map.put("userName", byFaceId.getNickname()); } return map; } - public BigDecimal countAmount(MemberTagDO memberTagDO, BigDecimal money, String timePeriod ){ - if(memberTagDO.getType().equals("1")){ - if (memberTagDO.getTimeFlag().equals("0")){ - return money.multiply(memberTagDO.getProportion()).setScale(2, RoundingMode.HALF_UP); - }else { - BigDecimal bigDecimal; - switch (timePeriod){ - case "2": - bigDecimal = money.multiply(memberTagDO.getMorning()).setScale(2, RoundingMode.HALF_UP); - break; - case "3": - bigDecimal = money.multiply(memberTagDO.getNoon()).setScale(2, RoundingMode.HALF_UP); - break; - case "4": - bigDecimal = money.multiply(memberTagDO.getNight()).setScale(2, RoundingMode.HALF_UP); - break; - default: - bigDecimal = BigDecimal.ZERO; - break; - } - return bigDecimal; - } +// public BigDecimal countAmount(MemberTagDO memberTagDO, BigDecimal money, String timePeriod ){ +// if(memberTagDO.getType().equals("1")){ +// if (memberTagDO.getTimeFlag().equals("0")){ +// return money.multiply(memberTagDO.getProportion()).setScale(2, RoundingMode.HALF_UP); +// }else { +// BigDecimal bigDecimal; +// switch (timePeriod){ +// case "2": +// bigDecimal = money.multiply(memberTagDO.getMorning()).setScale(2, RoundingMode.HALF_UP); +// break; +// case "3": +// bigDecimal = money.multiply(memberTagDO.getNoon()).setScale(2, RoundingMode.HALF_UP); +// break; +// case "4": +// bigDecimal = money.multiply(memberTagDO.getNight()).setScale(2, RoundingMode.HALF_UP); +// break; +// default: +// bigDecimal = BigDecimal.ZERO; +// break; +// } +// return bigDecimal; +// } +// +// } +// if(memberTagDO.getType().equals("2")){ +// if (memberTagDO.getTimeFlag().equals("0")){ +// return memberTagDO.getAmount(); +// }else { +// BigDecimal bigDecimal; +// switch (timePeriod){ +// case "2": +// bigDecimal = memberTagDO.getMorning(); +// break; +// case "3": +// bigDecimal = memberTagDO.getNoon(); +// break; +// case "4": +// bigDecimal = memberTagDO.getNight(); +// break; +// default: +// bigDecimal = BigDecimal.ZERO; +// break; +// } +// return bigDecimal; +// } +// +// } +// return BigDecimal.ZERO; +// } - } - if(memberTagDO.getType().equals("2")){ - if (memberTagDO.getTimeFlag().equals("0")){ - return memberTagDO.getAmount(); - }else { - BigDecimal bigDecimal; - switch (timePeriod){ - case "2": - bigDecimal = memberTagDO.getMorning(); - break; - case "3": - bigDecimal = memberTagDO.getNoon(); - break; - case "4": - bigDecimal = memberTagDO.getNight(); - break; - default: - bigDecimal = BigDecimal.ZERO; - break; + public BigDecimal countAmount(MemberTagDO memberTagDO, BigDecimal money, String timePeriod) { + BigDecimal bigDecimal= BigDecimal.ZERO; + BigDecimal oneHundred = new BigDecimal("100"); + switch (timePeriod) { + case "2": + if(money.compareTo(memberTagDO.getMorningBase())>0){ + BigDecimal subsidy = money.multiply(new BigDecimal(memberTagDO.getMorningProportion())).divide(oneHundred, 2, RoundingMode.HALF_UP); + if(subsidy.compareTo(memberTagDO.getMorning())>0){ + subsidy = memberTagDO.getMorning(); + } + bigDecimal = subsidy; } - return bigDecimal; - } - + break; + case "3": + if(money.compareTo(memberTagDO.getNoonBase())>0){ + BigDecimal subsidy = money.multiply(new BigDecimal(memberTagDO.getNoonProportion())).divide(oneHundred, 2, RoundingMode.HALF_UP); + if(subsidy.compareTo(memberTagDO.getNoon())>0){ + subsidy = memberTagDO.getNoon(); + } + bigDecimal = subsidy; + } + break; + case "4": + if(money.compareTo(memberTagDO.getNightBase())>0){ + BigDecimal subsidy = money.multiply(new BigDecimal(memberTagDO.getNightProportion())).divide(oneHundred, 2, RoundingMode.HALF_UP); + if(subsidy.compareTo(memberTagDO.getNight())>0){ + subsidy = memberTagDO.getNight(); + } + bigDecimal = subsidy; + } + break; + default: + break; } - return BigDecimal.ZERO; + return bigDecimal; } @Override @@ -920,7 +961,7 @@ public class MemberUserServiceImpl implements MemberUserService { public boolean delete(Long userId) { int i = memberUserMapper.deleteById(userId); memberUserMapper.deleteFace(userId); - return i>0; + return i > 0; } @Override @@ -931,13 +972,13 @@ public class MemberUserServiceImpl implements MemberUserService { // if(StrUtil.isNotEmpty(url)){ // return url; // } - String encode = DigestUtil.md5Hex(userId.toString()+System.currentTimeMillis()); - encode = QRCodeWithJWTUtil.QR_PREFIX_ZF+encode; + String encode = DigestUtil.md5Hex(userId.toString() + System.currentTimeMillis()); + encode = QRCodeWithJWTUtil.QR_PREFIX_ZF + encode; String fileName = "QRCode_" + userId + ".png"; - String path = QRCodeWithJWTUtil.BASE_PATH+fileName; + String path = QRCodeWithJWTUtil.BASE_PATH + fileName; String s = QRCodeWithJWTUtil.generateQRCode(encode, 350, 350, path);// 生 // memberUserRedisTemplate.opsForValue().set(redisKey,path,180, TimeUnit.SECONDS); - memberUserRedisTemplate.opsForValue().set(encode,userId.toString(),180, TimeUnit.SECONDS); + memberUserRedisTemplate.opsForValue().set(encode, userId.toString(), 180, TimeUnit.SECONDS); return s; } @@ -955,14 +996,15 @@ public class MemberUserServiceImpl implements MemberUserService { } @Override - public void jsonCreate(String filePath,Long storeId) { + public void jsonCreate(String filePath, Long storeId) { ObjectMapper objectMapper = new ObjectMapper(); try { // 读取 JSON 文件并转换为 List - List people = objectMapper.readValue(new File(filePath), new TypeReference>() {}); + List people = objectMapper.readValue(new File(filePath), new TypeReference>() { + }); ArrayList updateList = new ArrayList<>(); - for(UserJson userJson : people) { + for (UserJson userJson : people) { // 用户已经存在 MemberUserDO userSelect = memberUserMapper.selectByMobile(userJson.getPhone_number()); @@ -982,9 +1024,9 @@ public class MemberUserServiceImpl implements MemberUserService { user.setRegisterIp("null"); memberUserMapper.insert(user); - Long id = user.getId(); + Long id = user.getId(); - if(StringUtils.isNotBlank(userJson.getOrigin_data_url())){ + if (StringUtils.isNotBlank(userJson.getOrigin_data_url())) { String s = downloadImage(userJson); UserJsonDto userJsonDto = new UserJsonDto(); userJsonDto.setUserNickname(userJson.getUser_nickname()); @@ -997,7 +1039,7 @@ public class MemberUserServiceImpl implements MemberUserService { updateList.add(user); } } - if(CollectionUtil.isNotEmpty(updateList)){ + if (CollectionUtil.isNotEmpty(updateList)) { memberUserMapper.updateBatch(updateList); } } catch (Exception e) { @@ -1005,7 +1047,7 @@ public class MemberUserServiceImpl implements MemberUserService { } } - public String downloadImage(UserJson userJson) { + public String downloadImage(UserJson userJson) { String saveDir = "facedata/"; try { // 创建 URL 对象