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 45511448..42777176 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 @@ -56,6 +56,14 @@ public class OrderDetailsRespVO { @ExcelProperty("金额") private BigDecimal totalMoney; + @Schema(description = "现金金额") + @ExcelProperty("现金金额") + private BigDecimal cashAmount; + + @Schema(description = "微信金额") + @ExcelProperty("微信金额") + private BigDecimal wxAmount; + @Schema(description = "支付方式", example = "钱包") private String payMethods; diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/user/AppMemberUserController.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/user/AppMemberUserController.java index e350eea2..6d695cc8 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/user/AppMemberUserController.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/user/AppMemberUserController.java @@ -63,15 +63,10 @@ public class AppMemberUserController { UserExpandDO userExpandByuserId = userExpandService.getUserExpandByuserId(getLoginUserId()); AppMemberUserInfoRespVO convert = MemberUserConvert.INSTANCE.convert(user, level); convert.setUserExpandDO(userExpandByuserId); - if(carteenId!=null){ - MoneyDO moneyDO = moneyService.getMoney(user.getId(), carteenId); - if(ObjectUtil.isNotEmpty(moneyDO)){ - convert.setCashAmount(moneyDO.getCashAmount()); - convert.setDebtAmount(moneyDO.getDebtAmount()); - }else { - convert.setCashAmount(BigDecimal.ZERO); - convert.setDebtAmount(BigDecimal.ZERO); - } + convert.setCashAmount(user.getCashAmount()); + convert.setDebtAmount(BigDecimal.ZERO); + if(user.getMoney().compareTo(BigDecimal.ZERO) < 0 ){ + convert.setDebtAmount(user.getMoney()); } return success(convert); diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/convert/excel/OrderStatusConverter.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/convert/excel/OrderStatusConverter.java index 3d1eb1c4..27e3e8df 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/convert/excel/OrderStatusConverter.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/convert/excel/OrderStatusConverter.java @@ -49,6 +49,8 @@ public class OrderStatusConverter implements Converter { value = "待付款"; } else if ("1".equals(value)) { value = "已完成"; + }else { + value = "未完成"; } return new WriteCellData<>(value); diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/mysql/business/BusinessMapper.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/mysql/business/BusinessMapper.java index 0d2afe49..0826d2a7 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/mysql/business/BusinessMapper.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/mysql/business/BusinessMapper.java @@ -6,8 +6,10 @@ import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; import cn.iocoder.yudao.module.member.controller.admin.business.vo.BusinessPageReqVO; import cn.iocoder.yudao.module.member.dal.dataobject.business.BusinessDO; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; +import java.time.LocalDateTime; import java.util.List; /** @@ -39,4 +41,8 @@ public interface BusinessMapper extends BaseMapperX { @Select("select id from t_carteen where deleted = false") List getAllStoreId(); + + @Select("select * from t_business where carteen_id = #{carteenId} and create_time between #{startOfDay} and #{endOfDay} limit 1 for update") + BusinessDO getTodayBusiness(@Param("carteenId") Long carteenId, @Param("startOfDay") LocalDateTime startOfDay, @Param("endOfDay") LocalDateTime endOfDay); + } \ 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/mysql/card/CardMapper.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/mysql/card/CardMapper.java index 556bdc94..28edaf71 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/mysql/card/CardMapper.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/mysql/card/CardMapper.java @@ -62,8 +62,10 @@ public interface CardMapper extends BaseMapperX { @Select("select IFNULL(sum(change_money),0) as money,count(*) as count FROM member_card where user_id = #{userId} and flag = #{flag} and create_time BETWEEN #{startTime} and #{endTime}") AppCardMonthVO selectMonth(@Param("userId") Long userId,@Param("flag") String flag, @Param("startTime") LocalDateTime startTime, @Param("endTime")LocalDateTime endTime); - @Select("select SUM(change_money) from member_card where user_id= #{userId} and flag= #{flag} and carteen_id = #{carteenId}") - BigDecimal selectAddMoney(@Param("userId") Long userId,@Param("flag") String flag,@Param("carteenId") Long carteenId); + @Select("select SUM(change_money) from member_card where user_id= #{userId} and flag= #{flag} and type= '5'") + BigDecimal selectAddMoney(@Param("userId") Long userId,@Param("flag") String flag); + @Select("select SUM(change_money) from member_card where user_id= #{userId} and flag= #{flag}") + BigDecimal selectReduceMoney(@Param("userId") Long userId,@Param("flag") String flag); @Select("select sum(change_money) from member_card where user_id= #{userId} and type= '1'") BigDecimal selectWxMoney(@Param("userId") Long userId); diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/enums/CostTypeEnum.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/enums/CostTypeEnum.java index bebd0314..f65972ae 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/enums/CostTypeEnum.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/enums/CostTypeEnum.java @@ -21,6 +21,7 @@ public enum CostTypeEnum { WITHDRAW("7","微信提现"), CASH_WITHDRAW("8","现金提现"), SHOPPING("9","购物"), + SPACE("10","太空舱"), ; /** diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/amount/CashRechargeServiceImpl.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/amount/CashRechargeServiceImpl.java index 196b9d63..aa5a6669 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/amount/CashRechargeServiceImpl.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/amount/CashRechargeServiceImpl.java @@ -91,10 +91,11 @@ public class CashRechargeServiceImpl implements CashRechargeService { memberUserDO.setCashAmount(memberUserDO.getCashAmount().add(money)); } } - + userMapper.updateById(memberUserDO); wxNewMoney = memberUserDO.getWxAmount(); cashNewAmount = memberUserDO.getCashAmount(); name = memberUserDO.getNickname(); + } //记录明细 @@ -107,6 +108,7 @@ public class CashRechargeServiceImpl implements CashRechargeService { add.setWxAmount(wxNewMoney); add.setCarteenId(storeId); add.setGroupId(groupId); + add.setMoney(newMoney); add.setGroupName(ObjectUtil.isNotEmpty(memberGroupDO)?memberGroupDO.getName():null); addList.add(add); 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 96e82043..699f2320 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 @@ -176,6 +176,7 @@ public class DeductionServiceImpl implements DeductionService { cardDO.setCashAmount(cashNewMoney); cardDO.setWxAmount(wxNewMoney); cardDO.setCarteenId(dishOrderDO.getStoreId()); + cardDO.setMoney(newMoney); cardService.insertOne(cardDO); @@ -233,6 +234,7 @@ public class DeductionServiceImpl implements DeductionService { cardDO.setWxAmount(wxNewMoney); cardDO.setCashAmount(cashNewMoney); cardDO.setCarteenId(storeId); + cardDO.setMoney(newMoney); cardService.insertOne(cardDO); //更新redis @@ -269,6 +271,7 @@ public class DeductionServiceImpl implements DeductionService { cardDO.setType("7"); cardDO.setWxAmount(wxNewMoney); cardDO.setCashAmount(cashNewMoney); + cardDO.setMoney(newMoney); cardService.insertOne(cardDO); //更新redis @@ -335,6 +338,7 @@ public class DeductionServiceImpl implements DeductionService { cardDO.setWxAmount(wxNewMoney); cardDO.setCashAmount(cashNewMoney); cardDO.setCarteenId(dishOrderDO.getStoreId()); + cardDO.setMoney(newTotalMoney); cardService.insertOne(cardDO); //更新redis @@ -370,6 +374,7 @@ public class DeductionServiceImpl implements DeductionService { cardDO.setWxAmount(wxNewAmount); cardDO.setCashAmount(cashNewAmount); cardDO.setCarteenId(storeId); + cardDO.setMoney(newAmount); cardService.insertOne(cardDO); //更新redis @@ -403,8 +408,8 @@ public class DeductionServiceImpl implements DeductionService { } //扣除金额 + user.setMoney(money.subtract(total)); if (judge) { - user.setMoney(money.subtract(total)); user.setWxAmount(wxAmount.subtract(total)); } else { if (total.compareTo(cashAmount) <= 0) { @@ -432,6 +437,7 @@ public class DeductionServiceImpl implements DeductionService { cardDO.setWxAmount(wxNewMoney); cardDO.setCashAmount(cashNewMoney); cardDO.setCarteenId(storeId); + cardDO.setMoney(newMoney); cardService.insertOne(cardDO); @@ -504,6 +510,7 @@ public class DeductionServiceImpl implements DeductionService { cardDO.setWxAmount(wxNewMoney); cardDO.setCashAmount(cashNewMoney); cardDO.setCarteenId(storeId); + cardDO.setMoney(newMoney); cardService.insertOne(cardDO); //更新redis @@ -551,7 +558,7 @@ public class DeductionServiceImpl implements DeductionService { userService.updateById(user); wxNewMoney = user.getWxAmount(); - newMoney = user.getGiftAmount(); + newMoney = user.getMoney(); cashNewMoney = user.getCashAmount(); name = user.getNickname(); } @@ -564,6 +571,7 @@ public class DeductionServiceImpl implements DeductionService { cardDO.setWxAmount(wxNewMoney); cardDO.setCashAmount(cashNewMoney); cardDO.setCarteenId(storeId); + cardDO.setMoney(newMoney); cardService.insertOne(cardDO); //更新redis diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/amount/WxRechargeServiceImpl.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/amount/WxRechargeServiceImpl.java index 3c53c70f..ab029ac2 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/amount/WxRechargeServiceImpl.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/amount/WxRechargeServiceImpl.java @@ -62,6 +62,7 @@ public class WxRechargeServiceImpl implements WxRechargeService { BigDecimal wxNewMoney; + BigDecimal cashNewMoney; BigDecimal newMoney; String name; @@ -88,6 +89,7 @@ public class WxRechargeServiceImpl implements WxRechargeService { wxNewMoney = memberUserDO.getWxAmount(); name = memberUserDO.getNickname(); + cashNewMoney = memberUserDO.getCashAmount(); } @@ -98,6 +100,8 @@ public class WxRechargeServiceImpl implements WxRechargeService { cardDO.setChangeMoney(money); cardDO.setType(CostTypeEnum.WX_PAY.getCode()); cardDO.setWxAmount(wxNewMoney); + cardDO.setCashAmount(cashNewMoney); + cardDO.setMoney(newMoney); cardMapper.insert(cardDO); diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/business/BusinessServiceImpl.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/business/BusinessServiceImpl.java index e7d7eb24..10d7aeaf 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/business/BusinessServiceImpl.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/business/BusinessServiceImpl.java @@ -28,6 +28,7 @@ import org.springframework.stereotype.Service; import javax.annotation.Resource; +import org.springframework.transaction.annotation.Transactional; import org.springframework.validation.annotation.Validated; import cn.iocoder.yudao.framework.common.util.object.BeanUtils; @@ -109,81 +110,77 @@ public class BusinessServiceImpl implements BusinessService { } @Override - public void updateStatistics(StatisticsVo vo) { - synchronized(getStoreLock(vo.getCarteenId())){ - LocalDate now = LocalDate.now(); - if(vo.getTime()!=null){ - now = vo.getTime().toLocalDate(); + @Transactional + public void updateStatistics(StatisticsVo vo) { + + LocalDate now = LocalDate.now(); + if (vo.getTime() != null) { + now = vo.getTime().toLocalDate(); + } + // 获取今天的开始时间 + LocalDateTime startOfDay = now.atStartOfDay(); + // 获取今天的结束时间 (23:59:59.999) + LocalDateTime endOfDay = LocalDateTime.of(now, LocalTime.MAX); + + BusinessDO businessDO = businessMapper.getTodayBusiness(vo.getCarteenId(), startOfDay, endOfDay); + if (ObjectUtil.isNotEmpty(businessDO)) { + //重量 + if (ObjectUtil.isNotEmpty(vo.getOrderId())) { + List orderDetailDOS = orderDetailMapper.selectList(Wrappers.lambdaQuery().eq(OrderDetailDO::getOrderId, vo.getOrderId())); + if (CollectionUtil.isNotEmpty(orderDetailDOS)) { + BigDecimal reduce = orderDetailDOS.stream().map(OrderDetailDO::getWeight).reduce(BigDecimal.ZERO, BigDecimal::add); + businessDO.setWeigh(businessDO.getWeigh().add(reduce)); + } } - // 获取今天的开始时间 - LocalDateTime startOfDay =now.atStartOfDay(); - // 获取今天的结束时间 (23:59:59.999) - LocalDateTime endOfDay = LocalDateTime.of(now, LocalTime.MAX); + //订单数 + businessDO.setOrderSum(businessDO.getOrderSum() + vo.getOrderSum()); - List businessDOS = businessMapper.selectList(Wrappers.lambdaQuery() - .between(BusinessDO::getCreateTime, startOfDay, endOfDay) - .eq(BusinessDO::getCarteenId, vo.getCarteenId())); - if (CollectionUtil.isNotEmpty(businessDOS)) { - BusinessDO businessDO = businessDOS.get(0); - - //重量 - if(ObjectUtil.isNotEmpty(vo.getOrderId())){ - List orderDetailDOS = orderDetailMapper.selectList(Wrappers.lambdaQuery().eq(OrderDetailDO::getOrderId, vo.getOrderId())); - if (CollectionUtil.isNotEmpty(orderDetailDOS)) { - BigDecimal reduce = orderDetailDOS.stream().map(OrderDetailDO::getWeight).reduce(BigDecimal.ZERO, BigDecimal::add); - businessDO.setWeigh(businessDO.getWeigh().add(reduce)); - } - } - //订单数 - businessDO.setOrderSum(businessDO.getOrderSum() + vo.getOrderSum()); - - //营业额 - if(ObjectUtil.isNotEmpty(vo.getTotalMoney())){ - businessDO.setTurnover(businessDO.getTurnover().add(vo.getTotalMoney())); - } - - //客单价 - if(businessDO.getOrderSum() != 0){ - businessDO.setPriceAvg(businessDO.getTurnover().divide(new BigDecimal(businessDO.getOrderSum()), 2, RoundingMode.HALF_UP)); - }else{ - businessDO.setPriceAvg(BigDecimal.ZERO); - } - - //减免金额 - if(ObjectUtil.isNotEmpty(vo.getReduceMoney())){ - businessDO.setReduce(businessDO.getReduce().add(vo.getReduceMoney())); - } - - //早中晚金额 - if(ObjectUtil.isNotEmpty(vo.getTime())){ - String timePeriod = TimePeriodEnum.getTimePeriod(vo.getTime()); - - if(timePeriod.equals(CostTypeEnum.MORNING.getCode())){ - businessDO.setBreakfast(businessDO.getBreakfast().add(vo.getTotalMoney())); - businessDO.setBreakfastNum(businessDO.getBreakfastNum() + vo.getOrderSum()); - }else if (timePeriod.equals(CostTypeEnum.NOON.getCode())){ - businessDO.setLunch(businessDO.getLunch().add(vo.getTotalMoney())); - businessDO.setLunchNum(businessDO.getLunchNum() + vo.getOrderSum()); - }else if (timePeriod.equals(CostTypeEnum.NIGHT.getCode())){ - businessDO.setDinner(businessDO.getDinner().add(vo.getTotalMoney())); - businessDO.setDinnerNum(businessDO.getDinnerNum() + vo.getOrderSum()); - } - } - - //补贴金额 - if(ObjectUtil.isNotEmpty(vo.getSubsidyPurse())){ - businessDO.setSubsidyPurse(businessDO.getSubsidyPurse().add(vo.getSubsidyPurse())); - } - - businessMapper.updateById(businessDO); + //营业额 + if (ObjectUtil.isNotEmpty(vo.getTotalMoney())) { + businessDO.setTurnover(businessDO.getTurnover().add(vo.getTotalMoney())); } + + //客单价 + if (businessDO.getOrderSum() != 0) { + businessDO.setPriceAvg(businessDO.getTurnover().divide(new BigDecimal(businessDO.getOrderSum()), 2, RoundingMode.HALF_UP)); + } else { + businessDO.setPriceAvg(BigDecimal.ZERO); + } + + //减免金额 + if (ObjectUtil.isNotEmpty(vo.getReduceMoney())) { + businessDO.setReduce(businessDO.getReduce().add(vo.getReduceMoney())); + } + + //早中晚金额 + if (ObjectUtil.isNotEmpty(vo.getTime())) { + String timePeriod = TimePeriodEnum.getTimePeriod(vo.getTime()); + + if (timePeriod.equals(CostTypeEnum.MORNING.getCode())) { + businessDO.setBreakfast(businessDO.getBreakfast().add(vo.getTotalMoney())); + businessDO.setBreakfastNum(businessDO.getBreakfastNum() + vo.getOrderSum()); + } else if (timePeriod.equals(CostTypeEnum.NOON.getCode())) { + businessDO.setLunch(businessDO.getLunch().add(vo.getTotalMoney())); + businessDO.setLunchNum(businessDO.getLunchNum() + vo.getOrderSum()); + } else if (timePeriod.equals(CostTypeEnum.NIGHT.getCode())) { + businessDO.setDinner(businessDO.getDinner().add(vo.getTotalMoney())); + businessDO.setDinnerNum(businessDO.getDinnerNum() + vo.getOrderSum()); + } + } + + //补贴金额 + if (ObjectUtil.isNotEmpty(vo.getSubsidyPurse())) { + businessDO.setSubsidyPurse(businessDO.getSubsidyPurse().add(vo.getSubsidyPurse())); + } + + businessMapper.updateById(businessDO); } } @Override - public BusinessDataVO getDay(String time,Long carteenId) { + public BusinessDataVO getDay(String time, Long carteenId) { Integer nowDay = MemberTimeUtils.getDay(time); time = MemberTimeUtils.getYearMonth(time); @@ -191,7 +188,7 @@ public class BusinessServiceImpl implements BusinessService { BusinessDataVO businessDataVO = new BusinessDataVO(); LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); - wrapper.eq(BusinessDO::getCarteenId,carteenId); + wrapper.eq(BusinessDO::getCarteenId, carteenId); wrapper.orderByAsc(BusinessDO::getCreateTime); wrapper.apply("DATE_FORMAT(create_time, '%Y-%m') = {0}", time); List businessDOS = businessMapper.selectList(wrapper); @@ -224,33 +221,33 @@ public class BusinessServiceImpl implements BusinessService { LambdaQueryWrapper previousWrapper = new LambdaQueryWrapper<>(); - previousWrapper.eq(BusinessDO::getCarteenId,carteenId); + previousWrapper.eq(BusinessDO::getCarteenId, carteenId); previousWrapper.orderByAsc(BusinessDO::getCreateTime); previousWrapper.apply("DATE_FORMAT(create_time, '%Y-%m-%d') = {0}", formattedDate); List previousList = businessMapper.selectList(previousWrapper); BusinessRespVO old = new BusinessRespVO(); - if(CollectionUtil.isNotEmpty(previousList)){ + if (CollectionUtil.isNotEmpty(previousList)) { BeanUtil.copyProperties(previousList.get(0), old); - }else { + } else { old = getInitBusinessRespVO(); } // 循环遍历该月的每一天 for (int day = 1; day <= daysInMonth; day++) { BusinessRespVO bean = new BusinessRespVO(); - if(map.get(day) == null){ - bean = getInitBusinessRespVO().setTime(String.valueOf(day)); - }else { + if (map.get(day) == null) { + bean = getInitBusinessRespVO().setTime(String.valueOf(day)); + } else { bean = BeanUtils.toBean(map.get(day), BusinessRespVO.class); bean.setTime(String.valueOf(day)); } //计算差额 - if(day == 1){ - compare(bean,old); - }else { - compare(bean,monthData.get(day-1)); + if (day == 1) { + compare(bean, old); + } else { + compare(bean, monthData.get(day - 1)); } - monthData.put(day,bean); + monthData.put(day, bean); } businessDataVO.setNow(monthData.get(nowDay)); @@ -259,22 +256,22 @@ public class BusinessServiceImpl implements BusinessService { } @Override - public BusinessDataVO getWeek(String time,Long carteenId) { + public BusinessDataVO getWeek(String time, Long carteenId) { BusinessDataVO businessDataVO = new BusinessDataVO(); LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); - wrapper.eq(BusinessDO::getCarteenId,carteenId); + wrapper.eq(BusinessDO::getCarteenId, carteenId); wrapper.orderByAsc(BusinessDO::getCreateTime); wrapper.apply("DATE_FORMAT(create_time, '%Y-%m') = {0}", time); List businessDOS = businessMapper.selectList(wrapper); - Map map = new HashMap<>(); + Map map = new HashMap<>(); int totalWeeksOfMonth = MemberTimeUtils.getTotalWeeksOfMonth(time); for (int i = 1; i <= totalWeeksOfMonth; i++) { BusinessRespVO bean = getInitBusinessRespVO().setTime(String.valueOf(i)); - map.put(i,bean); + map.put(i, bean); } for (BusinessDO businessDO : businessDOS) { @@ -287,7 +284,7 @@ public class BusinessServiceImpl implements BusinessService { // 使用weekFields获取当前日期属于当月的第几周 int i = date.get(weekFields.weekOfMonth()); BusinessRespVO businessRespVO = map.get(i); - handleBusiness(businessDO,businessRespVO); + handleBusiness(businessDO, businessRespVO); } @@ -296,7 +293,7 @@ public class BusinessServiceImpl implements BusinessService { } @Override - public BusinessDataVO getMonth(String time,Long carteenId) { + public BusinessDataVO getMonth(String time, Long carteenId) { time = MemberTimeUtils.getYearMonth(time); BusinessDataVO businessDataVO = new BusinessDataVO(); @@ -304,17 +301,17 @@ public class BusinessServiceImpl implements BusinessService { int year = MemberTimeUtils.getYearFromYearMonthString(time); LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); - wrapper.eq(BusinessDO::getCarteenId,carteenId); + wrapper.eq(BusinessDO::getCarteenId, carteenId); wrapper.orderByAsc(BusinessDO::getCreateTime); wrapper.apply("DATE_FORMAT(create_time, '%Y') = {0}", year); List businessDOS = businessMapper.selectList(wrapper); - Map map = new HashMap<>(); + Map map = new HashMap<>(); //时间处理 for (int i = 1; i <= 12; i++) { BusinessRespVO bean = getInitBusinessRespVO(); bean.setTime(String.valueOf(i)); - map.put(i,bean); + map.put(i, bean); } //数据统计 for (BusinessDO businessDO : businessDOS) { @@ -324,26 +321,26 @@ public class BusinessServiceImpl implements BusinessService { // 当前日期属于哪月 int i = date.getMonthValue(); BusinessRespVO businessRespVO = map.get(i); - handleBusiness(businessDO,businessRespVO); + handleBusiness(businessDO, businessRespVO); } //上一年最后一月 int previousYear = year - 1; LambdaQueryWrapper previousWrapper = new LambdaQueryWrapper<>(); - previousWrapper.eq(BusinessDO::getCarteenId,carteenId); + previousWrapper.eq(BusinessDO::getCarteenId, carteenId); previousWrapper.orderByAsc(BusinessDO::getCreateTime); - previousWrapper.apply("DATE_FORMAT(create_time, '%Y-%m') = {0}", previousYear+"-12"); + previousWrapper.apply("DATE_FORMAT(create_time, '%Y-%m') = {0}", previousYear + "-12"); List previousList = businessMapper.selectList(previousWrapper); BusinessRespVO previousVO = getInitBusinessRespVO(); for (BusinessDO businessDO : previousList) { - handleBusiness(businessDO,previousVO); + handleBusiness(businessDO, previousVO); } //差额统计 for (int i = 1; i <= 12; i++) { - if(i == 1){ - compare(map.get(i),previousVO); - }else { - compare(map.get(i),map.get(i-1)); + if (i == 1) { + compare(map.get(i), previousVO); + } else { + compare(map.get(i), map.get(i - 1)); } } @@ -359,9 +356,9 @@ public class BusinessServiceImpl implements BusinessService { //营业额 businessRespVO.setTurnover(businessRespVO.getTurnover().add(businessDO.getTurnover())); //订单数 - businessRespVO.setOrderSum(businessRespVO.getOrderSum()+businessDO.getOrderSum()); + businessRespVO.setOrderSum(businessRespVO.getOrderSum() + businessDO.getOrderSum()); //均单价 - if(businessRespVO.getOrderSum()!=0){ + if (businessRespVO.getOrderSum() != 0) { businessRespVO.setPriceAvg(businessRespVO.getTurnover().divide(new BigDecimal(businessRespVO.getOrderSum().toString()), 2, RoundingMode.HALF_UP)); } //减免金额 @@ -370,20 +367,20 @@ public class BusinessServiceImpl implements BusinessService { businessRespVO.setWeigh(businessRespVO.getWeigh().add(businessDO.getWeigh())); //早 businessRespVO.setBreakfast(businessRespVO.getBreakfast().add(businessDO.getBreakfast())); - businessRespVO.setBreakfastNum(businessRespVO.getBreakfastNum()+businessDO.getBreakfastNum()); + businessRespVO.setBreakfastNum(businessRespVO.getBreakfastNum() + businessDO.getBreakfastNum()); //中 businessRespVO.setLunch(businessRespVO.getLunch().add(businessDO.getLunch())); - businessRespVO.setLunchNum(businessRespVO.getLunchNum()+businessDO.getLunchNum()); + businessRespVO.setLunchNum(businessRespVO.getLunchNum() + businessDO.getLunchNum()); //晚 businessRespVO.setDinner(businessRespVO.getDinner().add(businessDO.getDinner())); - businessRespVO.setDinnerNum(businessRespVO.getDinnerNum()+businessDO.getDinnerNum()); + businessRespVO.setDinnerNum(businessRespVO.getDinnerNum() + businessDO.getDinnerNum()); //门店 businessRespVO.setCarteenId(businessDO.getCarteenId()); } void compare(BusinessRespVO today, BusinessRespVO last) { today.setTurnoverCompare(today.getTurnover().subtract(last.getTurnover())); - today.setOrderSumCompare(today.getOrderSum()-last.getOrderSum()); + today.setOrderSumCompare(today.getOrderSum() - last.getOrderSum()); today.setPriceAvgCompare(today.getPriceAvg().subtract(last.getPriceAvg())); } @@ -405,17 +402,17 @@ public class BusinessServiceImpl implements BusinessService { List businessDOS = businessMapper.selectList(Wrappers.lambdaQuery() .between(BusinessDO::getCreateTime, startOfDay, endOfDay) .eq(BusinessDO::getCarteenId, carteenId)); - return CollectionUtil.isNotEmpty(businessDOS)?businessDOS.get(0):new BusinessDO(); + return CollectionUtil.isNotEmpty(businessDOS) ? businessDOS.get(0) : new BusinessDO(); } @Override public BusinessRespVO getTurnover(TurnoverVO turnoverVO) { List businessDOS = businessMapper.selectList(Wrappers.lambdaQuery() - .between(BusinessDO::getCreateTime,MemberTimeUtils.string2Time(turnoverVO.getStartTime()), MemberTimeUtils.string2Time(turnoverVO.getEndTime())) + .between(BusinessDO::getCreateTime, MemberTimeUtils.string2Time(turnoverVO.getStartTime()), MemberTimeUtils.string2Time(turnoverVO.getEndTime())) .eq(BusinessDO::getCarteenId, turnoverVO.getStoreId())); BusinessRespVO businessDO = getInitBusinessRespVO(); - if(CollectionUtil.isNotEmpty(businessDOS)){ + if (CollectionUtil.isNotEmpty(businessDOS)) { businessDO.setTurnover(businessDOS.stream().map(BusinessDO::getTurnover).reduce(BigDecimal.ZERO, BigDecimal::add)); businessDO.setOrderSum(businessDOS.stream().map(BusinessDO::getOrderSum).reduce(0, Integer::sum)); businessDO.setCustomerSum(businessDOS.stream().map(BusinessDO::getCustomerSum).reduce(0, Integer::sum)); @@ -437,9 +434,9 @@ public class BusinessServiceImpl implements BusinessService { LocalDate startDate = startTime.toLocalDate(); LocalDate endDate = endTime.toLocalDate(); - if(startDate.equals(endDate)){ + if (startDate.equals(endDate)) { // 获取本月开始时间:本月的第一天00:00:00 - startDate= startTime.with(TemporalAdjusters.firstDayOfMonth()).toLocalDate(); + startDate = startTime.with(TemporalAdjusters.firstDayOfMonth()).toLocalDate(); startTime = startDate.atStartOfDay(); // 获取本月结束时间:本月的最后一天23:59:59.999999999 @@ -447,13 +444,13 @@ public class BusinessServiceImpl implements BusinessService { endTime = endDate.atTime(LocalTime.MAX); } List businessDOS = businessMapper.selectList(Wrappers.lambdaQuery() - .between(BusinessDO::getCreateTime,startTime, endTime) + .between(BusinessDO::getCreateTime, startTime, endTime) .eq(BusinessDO::getCarteenId, turnoverVO.getStoreId())); Map map = businessDOS.stream() .filter(Objects::nonNull) // 过滤掉null值 .collect(Collectors.toMap( - vo->vo.getCreateTime().toLocalDate().atStartOfDay(), + vo -> vo.getCreateTime().toLocalDate().atStartOfDay(), vo -> vo, (existing, replacement) -> existing )); @@ -466,9 +463,9 @@ public class BusinessServiceImpl implements BusinessService { List completeRecords = new ArrayList<>(); for (LocalDateTime date : completeDates) { BusinessRespVO bean; - if(map.get(date) == null){ - bean = getInitBusinessRespVO().setTime(MemberTimeUtils.Time2String(date)); - }else { + if (map.get(date) == null) { + bean = getInitBusinessRespVO().setTime(MemberTimeUtils.Time2String(date)); + } else { bean = BeanUtils.toBean(map.get(date), BusinessRespVO.class); bean.setTime(MemberTimeUtils.Time2String(date)); } diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/order/OrderServiceImpl.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/order/OrderServiceImpl.java index 6000c185..7d4fcddd 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/order/OrderServiceImpl.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/order/OrderServiceImpl.java @@ -374,9 +374,6 @@ public class OrderServiceImpl implements OrderService { } /** - * @param userId - * @param carteenId - * @return * @Description: 根据会员编号,获得会员余额,充值金额,消费金额 * @Author: qjq * @Date: 2024/4/24 上午9:52 @@ -385,13 +382,13 @@ public class OrderServiceImpl implements OrderService { public OrderMoneyRespVO getUserMeney(Long userId, Long carteenId) { OrderMoneyRespVO orderMoneyRespVO = new OrderMoneyRespVO(); //获取充值的金额 - BigDecimal add = cardMapper.selectAddMoney(userId, CardDO.ADD,carteenId); + BigDecimal add = cardMapper.selectAddMoney(userId, CardDO.ADD); if (add == null) { add = BigDecimal.ZERO; } orderMoneyRespVO.setRechargeMoney(add); //消费的金额 - BigDecimal minus = cardMapper.selectAddMoney(userId, CardDO.MINUS,carteenId); + BigDecimal minus = cardMapper.selectReduceMoney(userId, CardDO.MINUS); if (minus == null) { minus = BigDecimal.ZERO; } @@ -400,15 +397,11 @@ public class OrderServiceImpl implements OrderService { MemberUserDO memberUserDO = memberUserMapper.selectById(userId); orderMoneyRespVO.setCurrentMoney(memberUserDO.getWxAmount()); orderMoneyRespVO.setUserId(userId); - - MoneyDO moneyDO = moneyService.getMoney(userId, carteenId); - orderMoneyRespVO.setCashMoney(BigDecimal.ZERO); + orderMoneyRespVO.setCashMoney(memberUserDO.getCashAmount()); orderMoneyRespVO.setDebtMoney(BigDecimal.ZERO); - if(ObjectUtil.isNotEmpty(moneyDO)){ - orderMoneyRespVO.setCashMoney(moneyDO.getCashAmount()); - orderMoneyRespVO.setDebtMoney(moneyDO.getDebtAmount()); + if(memberUserDO.getMoney().compareTo(BigDecimal.ZERO)<0){ + orderMoneyRespVO.setDebtMoney(memberUserDO.getMoney()); } - BigDecimal wxRechargeMoney = cardMapper.selectWxMoney(userId); orderMoneyRespVO.setWxRechargeMoney(wxRechargeMoney); return orderMoneyRespVO; diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/orderspacecapsule/OrderSpaceCapsuleServiceImpl.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/orderspacecapsule/OrderSpaceCapsuleServiceImpl.java index ea2f8c7c..2826dee7 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/orderspacecapsule/OrderSpaceCapsuleServiceImpl.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/orderspacecapsule/OrderSpaceCapsuleServiceImpl.java @@ -84,7 +84,7 @@ public class OrderSpaceCapsuleServiceImpl implements OrderSpaceCapsuleService { BigDecimal multiply = orderSpaceCapsule.getComboPrice().multiply(BigDecimal.valueOf(orderSpaceCapsule.getComboNum())); orderSpaceCapsule.setMoney(multiply); // 扣除余额 - deductionService.spaceDeduct(orderSpaceCapsule.getUserId(), orderSpaceCapsule.getMoney(), CostTypeEnum.SHOPPING.getCode(),createReqVO.getCarteenId()); + deductionService.spaceDeduct(orderSpaceCapsule.getUserId(), orderSpaceCapsule.getMoney(), CostTypeEnum.SPACE.getCode(),createReqVO.getCarteenId()); // 设置变动后的余额 orderSpaceCapsule.setEndMoney(initialMoney.subtract(orderSpaceCapsule.getMoney())); // 设置支付方式 diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/storeorder/StoreOrderServiceImpl.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/storeorder/StoreOrderServiceImpl.java index 79a6a688..20bca056 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/storeorder/StoreOrderServiceImpl.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/storeorder/StoreOrderServiceImpl.java @@ -234,13 +234,9 @@ public class StoreOrderServiceImpl implements StoreOrderService { BigDecimal totalMoney = BigDecimal.valueOf(sum); MemberUserDO user = userService.getUser(Long.valueOf(s)); - MoneyDO moneyDO = moneyService.getMoney(user.getId(), storeId); - BigDecimal cashAmount = BigDecimal.ZERO; - if(ObjectUtil.isNotEmpty(moneyDO)){ - cashAmount = moneyDO.getCashAmount(); - } + dto.setUserId(user.getId()); - if(user.getWxAmount().add(cashAmount).compareTo(totalMoney) < 0){ + if(user.getMoney().compareTo(totalMoney) < 0){ throw exception(AMOUNT_NOT_ENOUGH); }