From 884971eaacee1c67a6756ade995da8c6f311b38b Mon Sep 17 00:00:00 2001 From: zt Date: Sat, 8 Feb 2025 14:20:08 +0800 Subject: [PATCH] =?UTF-8?q?=E9=87=91=E9=A2=9D=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/amount/AmountServiceImpl.java | 15 +- .../amount/CashRechargeServiceImpl.java | 46 ++-- .../service/amount/DeductionService.java | 7 +- .../service/amount/DeductionServiceImpl.java | 219 ++++++++++++------ .../service/amount/WxRechargeServiceImpl.java | 71 +----- .../diningplates/DiningPlatesServiceImpl.java | 13 +- .../service/group/MemberGroupService.java | 2 + .../service/group/MemberGroupServiceImpl.java | 10 + .../service/holiday/HolidayService.java | 6 + .../service/holiday/HolidayServiceImpl.java | 16 ++ .../service/order/OrderServiceImpl.java | 12 +- .../OrderSpaceCapsuleServiceImpl.java | 2 +- 12 files changed, 227 insertions(+), 192 deletions(-) diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/amount/AmountServiceImpl.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/amount/AmountServiceImpl.java index 741022ae..6962bb75 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/amount/AmountServiceImpl.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/amount/AmountServiceImpl.java @@ -69,22 +69,15 @@ public class AmountServiceImpl implements AmountService { if (memberUserDO == null) { throw exception(USER_NOT_EXISTS); } - MoneyDO moneyDO = moneyService.getMoney(userId, storeId); - BigDecimal cashAmount = BigDecimal.ZERO; - - if (moneyDO != null) { - cashAmount = moneyDO.getCashAmount(); - } - - return memberUserDO.getWxAmount().add(cashAmount); + return memberUserDO.getMoney(); } @Override public BigDecimal getCashAmount(Long userId,Long storeId) { - MoneyDO moneyDO = moneyService.getMoney(userId, storeId); - if (moneyDO == null) { + MemberUserDO memberUserDO = userMapper.selectById(userId); + if (memberUserDO == null) { return BigDecimal.ZERO; } - return moneyDO.getCashAmount(); + return memberUserDO.getCashAmount(); } } 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 d4dc3e0a..196b9d63 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 @@ -73,43 +73,27 @@ public class CashRechargeServiceImpl implements CashRechargeService { for (Long userId : memberList) { BigDecimal wxNewMoney; - BigDecimal giftNewMoney; + BigDecimal newMoney; BigDecimal cashNewAmount; String name; - BigDecimal computeMoney = money; - synchronized (getUserLock(userId)) { MemberUserDO memberUserDO = userMapper.selectById(userId); - MoneyDO moneyDO = moneyService.getMoney(userId, storeId); - BigDecimal debtAmount = BigDecimal.ZERO; - if (ObjectUtil.isEmpty(moneyDO)) { - MoneyDO add = new MoneyDO(); - add.setCashAmount(computeMoney); - add.setDebtAmount(debtAmount); - add.setUserId(userId); - add.setCarteenId(storeId); - moneyService.insertOne(add); - cashNewAmount = add.getCashAmount(); - } else { - debtAmount = moneyDO.getDebtAmount(); - //金额变动 - computeMoney = computeMoney.add(debtAmount); - if(computeMoney.compareTo(BigDecimal.ZERO) < 0){ - moneyDO.setCashAmount(BigDecimal.ZERO); - moneyDO.setDebtAmount(computeMoney); - cashNewAmount = BigDecimal.ZERO; - }else { - moneyDO.setCashAmount(computeMoney.add(moneyDO.getCashAmount())); - moneyDO.setDebtAmount(BigDecimal.ZERO); - cashNewAmount = moneyDO.getCashAmount(); - } + //金额变动 + BigDecimal oldMoney = memberUserDO.getMoney(); + newMoney = oldMoney.add(money); + memberUserDO.setMoney(newMoney); - moneyService.updateById(moneyDO); + if(newMoney.compareTo(BigDecimal.ZERO) >= 0){ + if(oldMoney.compareTo(BigDecimal.ZERO) < 0){ + memberUserDO.setCashAmount(newMoney); + }else { + memberUserDO.setCashAmount(memberUserDO.getCashAmount().add(money)); + } } wxNewMoney = memberUserDO.getWxAmount(); - giftNewMoney = memberUserDO.getGiftAmount(); + cashNewAmount = memberUserDO.getCashAmount(); name = memberUserDO.getNickname(); } @@ -121,7 +105,6 @@ public class CashRechargeServiceImpl implements CashRechargeService { add.setType(CostTypeEnum.ADMIN_PAY.getCode()); add.setCashAmount(cashNewAmount); add.setWxAmount(wxNewMoney); - add.setGiftAmount(giftNewMoney); add.setCarteenId(storeId); add.setGroupId(groupId); add.setGroupName(ObjectUtil.isNotEmpty(memberGroupDO)?memberGroupDO.getName():null); @@ -131,7 +114,7 @@ public class CashRechargeServiceImpl implements CashRechargeService { String redisKey = "USER_" + userId; AppUserInfoCardVO appUserInfoCardVO = new AppUserInfoCardVO(); appUserInfoCardVO.setName(name); - appUserInfoCardVO.setMoney(wxNewMoney); + appUserInfoCardVO.setMoney(newMoney); cashRechargeRedisTemplate.opsForValue().set(redisKey, JSONUtil.toJsonStr(appUserInfoCardVO)); } @@ -153,7 +136,8 @@ public class CashRechargeServiceImpl implements CashRechargeService { List dishOrderDOS = dishOrderMapper.selectList(Wrappers.lambdaQuery() .eq(DishOrderDO::getUserId, userId).eq(DishOrderDO::getOrderStatus, DishOrderDO.TOCOMPLETE) - .eq(DishOrderDO::getStoreId, storeId)); +// .eq(DishOrderDO::getStoreId, storeId) + ); if (CollectionUtil.isNotEmpty(dishOrderDOS)) { for (DishOrderDO dishOrderDO : dishOrderDOS) { diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/amount/DeductionService.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/amount/DeductionService.java index b7e8ecac..e0067ec4 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/amount/DeductionService.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/amount/DeductionService.java @@ -39,7 +39,12 @@ public interface DeductionService { /** * 扣款 */ - void deduct(Long userId, BigDecimal money,String type,Long storeId); + void deduct(Long userId, BigDecimal money,String type,Long storeId,String time); + + /** + * 太空舱扣款 + */ + void spaceDeduct(Long userId, BigDecimal money,String type,Long storeId); /** * 超市离线扣款 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 1346194b..96e82043 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 @@ -1,7 +1,6 @@ package cn.iocoder.yudao.module.member.service.amount; -import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import cn.hutool.json.JSONUtil; import cn.iocoder.yudao.module.member.controller.admin.business.vo.StatisticsVo; @@ -391,31 +390,37 @@ public class DeductionServiceImpl implements DeductionService { BigDecimal cashAmount = user.getCashAmount(); BigDecimal money = user.getMoney(); - - if (total.compareTo(money) > 0) { - return money.subtract(total); + BigDecimal judgeAmount; + boolean judge = judgeShopping(userId); + if (judge) { + judgeAmount = wxAmount; + } else { + judgeAmount = money; } - //计算金额 - if (total.compareTo(cashAmount) <= 0) { - user.setCashAmount(cashAmount.subtract(total)); + if (total.compareTo(judgeAmount) > 0) { + return judgeAmount.subtract(total); + } + + //扣除金额 + if (judge) { + user.setMoney(money.subtract(total)); + user.setWxAmount(wxAmount.subtract(total)); } else { - user.setCashAmount(BigDecimal.ZERO); - BigDecimal total1 = total.subtract(cashAmount); - if (total1.compareTo(giftAmount) <= 0) { - user.setGiftAmount(giftAmount.subtract(total1)); + if (total.compareTo(cashAmount) <= 0) { + user.setCashAmount(cashAmount.subtract(total)); } else { - user.setGiftAmount(BigDecimal.ZERO); - BigDecimal total2 = total1.subtract(giftAmount); - user.setWxAmount(wxAmount.subtract(total2)); + user.setCashAmount(BigDecimal.ZERO); + BigDecimal total1 = total.subtract(cashAmount); + user.setWxAmount(wxAmount.subtract(total1)); } } + userService.updateById(user); - moneyService.updateById(moneyDO); wxNewMoney = user.getWxAmount(); - giftNewMoney = user.getGiftAmount(); - cashNewMoney = moneyDO.getCashAmount(); + newMoney = user.getMoney(); + cashNewMoney = user.getCashAmount(); name = user.getNickname(); } @@ -426,7 +431,6 @@ public class DeductionServiceImpl implements DeductionService { cardDO.setType(CostTypeEnum.SHOPPING.getCode()); cardDO.setWxAmount(wxNewMoney); cardDO.setCashAmount(cashNewMoney); - cardDO.setGiftAmount(giftNewMoney); cardDO.setCarteenId(storeId); cardService.insertOne(cardDO); @@ -434,7 +438,7 @@ public class DeductionServiceImpl implements DeductionService { //更新redis updateRedis(userId, name, wxNewMoney); - return wxNewMoney.add(giftNewMoney).add(cashNewMoney); + return newMoney; } @@ -448,50 +452,47 @@ public class DeductionServiceImpl implements DeductionService { } @Override - public void deduct(Long userId, BigDecimal money, String type, Long storeId) { + public void deduct(Long userId, BigDecimal money, String type, Long storeId, String time) { BigDecimal wxNewMoney; - BigDecimal giftNewMoney; + BigDecimal newMoney; BigDecimal cashNewMoney; String name; synchronized (getUserLock(userId)) { MemberUserDO user = userService.getUser(userId); - MoneyDO moneyDO = moneyService.getMoney(userId, storeId); - BigDecimal total = moneyDO.getCashAmount().add(user.getWxAmount()).add(user.getGiftAmount()); + BigDecimal total = user.getMoney(); + user.setMoney(total.subtract(money)); if (total.compareTo(money) < 0) { - if (CHECK_LIST.contains(type)) { - throw exception(CASH_AMOUNT_NOT_ENOUGH); - } user.setWxAmount(BigDecimal.ZERO); - moneyDO.setCashAmount(BigDecimal.ZERO); - user.setGiftAmount(BigDecimal.ZERO); - moneyDO.setDebtAmount(total.subtract(money)); + user.setCashAmount(BigDecimal.ZERO); } else { BigDecimal wxAmount = user.getWxAmount(); - BigDecimal giftAmount = user.getGiftAmount(); - BigDecimal cashAmount = moneyDO.getCashAmount(); + BigDecimal cashAmount = user.getCashAmount(); //计算金额 - if (money.compareTo(cashAmount) <= 0) { - moneyDO.setCashAmount(cashAmount.subtract(money)); - } else { - moneyDO.setCashAmount(BigDecimal.ZERO); - BigDecimal total1 = money.subtract(cashAmount); - if (total1.compareTo(giftAmount) <= 0) { - user.setGiftAmount(giftAmount.subtract(total1)); + if (judge(userId, time)) { + if (money.compareTo(wxAmount) <= 0) { + user.setWxAmount(wxAmount.subtract(money)); } else { - user.setGiftAmount(BigDecimal.ZERO); - BigDecimal total2 = total1.subtract(giftAmount); - user.setWxAmount(wxAmount.subtract(total2)); + user.setWxAmount(BigDecimal.ZERO); + BigDecimal total1 = money.subtract(wxAmount); + user.setCashAmount(cashAmount.subtract(total1)); + } + } else { + if (money.compareTo(cashAmount) <= 0) { + user.setCashAmount(cashAmount.subtract(money)); + } else { + user.setCashAmount(BigDecimal.ZERO); + BigDecimal total1 = money.subtract(cashAmount); + user.setWxAmount(wxAmount.subtract(total1)); } } } userService.updateById(user); - moneyService.updateById(moneyDO); wxNewMoney = user.getWxAmount(); - giftNewMoney = user.getGiftAmount(); - cashNewMoney = moneyDO.getCashAmount(); + newMoney = user.getMoney(); + cashNewMoney = user.getCashAmount(); name = user.getNickname(); } @@ -501,13 +502,72 @@ public class DeductionServiceImpl implements DeductionService { cardDO.setChangeMoney(money); cardDO.setType(type); cardDO.setWxAmount(wxNewMoney); - cardDO.setGiftAmount(giftNewMoney); cardDO.setCashAmount(cashNewMoney); cardDO.setCarteenId(storeId); cardService.insertOne(cardDO); //更新redis - updateRedis(userId, name, wxNewMoney); + updateRedis(userId, name, newMoney); + } + + @Override + public void spaceDeduct(Long userId, BigDecimal money, String type, Long storeId) { + BigDecimal wxNewMoney; + BigDecimal newMoney; + BigDecimal cashNewMoney; + String name; + + synchronized (getUserLock(userId)) { + MemberUserDO user = userService.getUser(userId); + BigDecimal total = user.getMoney(); + if (total.compareTo(money) < 0) { + throw exception(CASH_AMOUNT_NOT_ENOUGH); + } else { + + BigDecimal wxAmount = user.getWxAmount(); + BigDecimal cashAmount = user.getCashAmount(); + user.setMoney(total.subtract(money)); + //计算金额 + if (judgeSpace(userId)) { + if (money.compareTo(wxAmount) <= 0) { + user.setWxAmount(wxAmount.subtract(money)); + } else { + user.setWxAmount(BigDecimal.ZERO); + BigDecimal total1 = money.subtract(wxAmount); + user.setCashAmount(cashAmount.subtract(total1)); + } + } else { + if (money.compareTo(cashAmount) <= 0) { + user.setCashAmount(cashAmount.subtract(money)); + } else { + user.setCashAmount(BigDecimal.ZERO); + BigDecimal total1 = money.subtract(cashAmount); + user.setWxAmount(wxAmount.subtract(total1)); + } + } + + + } + userService.updateById(user); + + wxNewMoney = user.getWxAmount(); + newMoney = user.getGiftAmount(); + cashNewMoney = user.getCashAmount(); + name = user.getNickname(); + } + + CardDO cardDO = new CardDO(); + cardDO.setUserId(userId); + cardDO.setFlag(CardDO.MINUS); + cardDO.setChangeMoney(money); + cardDO.setType(type); + cardDO.setWxAmount(wxNewMoney); + cardDO.setCashAmount(cashNewMoney); + cardDO.setCarteenId(storeId); + cardService.insertOne(cardDO); + + //更新redis + updateRedis(userId, name, newMoney); } @Override @@ -570,38 +630,47 @@ public class DeductionServiceImpl implements DeductionService { } - //判断先扣那个金额 - public boolean checkWay(Long userId) { - //获取用户所在组分类 - Integer type = memberGroupService.getGroupTypeByUserId(userId); - List typeList = Arrays.asList(GroupTypeEnum.ADMINISTRATIVE.getCode(), GroupTypeEnum.DISTRICT.getCode()); - //查询今天是否假期 - Boolean isHoliday = holidayService.checkHoliday(); - return isHoliday && typeList.contains(type); - } - - //获取门店的金额数据 - public MoneyDO getStoreMoney(List list, Long storeId, Long userId) { - Optional optionalDebt = list.stream() - .filter(debt -> storeId.equals(debt.getCarteenId())) - .findFirst(); - // 如果找到了匹配的元素,则返回,否则新建一个返回 - return optionalDebt.orElseGet(() -> { - MoneyDO add = new MoneyDO(); - add.setUserId(userId); - add.setCarteenId(storeId); - moneyService.insertOne(add); - return add; - }); - } - - //判断扣款顺序 + //判断食堂扣款顺序(true - 微信,false - 现金) public boolean judge(Long userId) { - Integer type = memberGroupService.getGroupTypeByUserId(userId); - List typeList = Arrays.asList(GroupTypeEnum.ADMINISTRATIVE.getCode(), GroupTypeEnum.DISTRICT.getCode()); + //获取用户所在组分类 + List types = memberGroupService.getGroupTypeListByUserId(userId); //查询今天是否假期 Boolean isHoliday = holidayService.checkHoliday(); - return isHoliday && typeList.contains(type); + return isHoliday && (types.contains(GroupTypeEnum.ADMINISTRATIVE.getCode()) || types.contains(GroupTypeEnum.DISTRICT.getCode())); + } + + //判断食堂扣款顺序(true - 微信,false - 现金) + public boolean judge(Long userId, String time) { + //获取用户所在组分类 + List types = memberGroupService.getGroupTypeListByUserId(userId); + //查询今天是否假期 + Boolean isHoliday = holidayService.checkHoliday(time); + return isHoliday && (types.contains(GroupTypeEnum.ADMINISTRATIVE.getCode()) || types.contains(GroupTypeEnum.DISTRICT.getCode())); + } + + //判断购物付款顺序(true - 微信,false - 现金) + public boolean judgeShopping(Long userId) { + //获取用户所在组分类 + List types = memberGroupService.getGroupTypeListByUserId(userId); + return (types.contains(GroupTypeEnum.YCLH.getCode()) || types.contains(GroupTypeEnum.DISTRICT.getCode())); + + } + + //判断太空舱付款顺序(true - 微信,false - 现金) + public boolean judgeSpace(Long userId) { + //获取用户所在组分类 + List types = memberGroupService.getGroupTypeListByUserId(userId); + //查询今天是否假期 + Boolean isHoliday = holidayService.checkHoliday(); + //盈创力和不允许 + if (types.contains(GroupTypeEnum.YCLH.getCode())) { + return true; + } + //行政服务中心只允许工作日 + if (isHoliday && types.contains(GroupTypeEnum.ADMINISTRATIVE.getCode())) { + return true; + } + return false; } } 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 0bca36d8..3c53c70f 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,77 +62,31 @@ public class WxRechargeServiceImpl implements WxRechargeService { BigDecimal wxNewMoney; - BigDecimal giftNewMoney; + BigDecimal newMoney; String name; synchronized (getUserLock(userId)) { //获取最新余额 MemberUserDO memberUserDO = userMapper.selectById(userId); - List allDebt = moneyService.getAllDebt(userId); - List debtId = new ArrayList<>(); - BigDecimal debtAmount = BigDecimal.ZERO; - if(CollectionUtil.isNotEmpty(allDebt)){ - debtAmount = allDebt.stream().map(MoneyDO::getDebtAmount).reduce(BigDecimal.ZERO, BigDecimal::add); - debtId= allDebt.stream().map(MoneyDO::getId).collect(Collectors.toList()); - } + BigDecimal wxOldMoney = memberUserDO.getWxAmount(); - BigDecimal giftOldMoney = memberUserDO.getGiftAmount(); - + BigDecimal oldMoney = memberUserDO.getMoney(); + newMoney = oldMoney.add(money); BigDecimal computeMoney = money; - //处理负债 - if( computeMoney.add(debtAmount).compareTo(BigDecimal.ZERO) < 0){ - memberUserDO.setWxAmount(BigDecimal.ZERO); - memberUserDO.setGiftAmount(BigDecimal.ZERO); - - BigDecimal computeWxMoney = wxAmount; - BigDecimal computeGiftMoney = giftAmount; - - for (MoneyDO moneyDO : allDebt) { - if (computeMoney.add(moneyDO.getDebtAmount()).compareTo(BigDecimal.ZERO) >= 0) { - BigDecimal debtAmount1 = moneyDO.getDebtAmount(); - computeMoney = computeMoney.add(debtAmount1); - moneyDO.setDebtAmount(BigDecimal.ZERO); - //处理未完全支付订单 - BigDecimal paramWxMoney = BigDecimal.ZERO; - BigDecimal paramGiftMoney = BigDecimal.ZERO; - - if(computeWxMoney.add(moneyDO.getDebtAmount()).compareTo(BigDecimal.ZERO)>=0){ - computeWxMoney = computeWxMoney.add(moneyDO.getDebtAmount()); - paramWxMoney = debtAmount1; - }else { - paramWxMoney = computeWxMoney; - paramGiftMoney = debtAmount1.abs().subtract(paramWxMoney); - computeWxMoney = BigDecimal.ZERO; - computeGiftMoney = computeGiftMoney.add(moneyDO.getDebtAmount()); - - } - handleOrderWx(userId, debtAmount1, paramWxMoney, paramGiftMoney,moneyDO.getCarteenId()); - }else { - moneyDO.setDebtAmount(computeMoney.add(moneyDO.getDebtAmount())); - - //处理未完全支付订单 - handleOrderWx(userId, computeMoney, computeWxMoney, computeGiftMoney,moneyDO.getCarteenId()); - break; - } - } - moneyService.updateList(allDebt); - }else { - moneyService.cleanDebt(debtId); - //处理未完全支付订单 - handleOrderWx(userId, money, wxAmount, giftAmount,null); - if(wxAmount.add(debtAmount).compareTo(BigDecimal.ZERO) >= 0){ - memberUserDO.setWxAmount(wxAmount.add(debtAmount).add(wxOldMoney)); - memberUserDO.setGiftAmount(giftAmount.add(giftOldMoney)); + memberUserDO.setMoney(newMoney); + if( newMoney.compareTo(BigDecimal.ZERO) >= 0){ + if(oldMoney.compareTo(BigDecimal.ZERO) < 0){ + memberUserDO.setWxAmount(newMoney); + //处理未完全支付订单 + handleOrderWx(userId, money, wxAmount, giftAmount,null); }else { - memberUserDO.setWxAmount(BigDecimal.ZERO); - memberUserDO.setGiftAmount(money.add(debtAmount)); + memberUserDO.setWxAmount(wxOldMoney.add(money)); } } userMapper.updateById(memberUserDO); wxNewMoney = memberUserDO.getWxAmount(); - giftNewMoney = memberUserDO.getGiftAmount(); name = memberUserDO.getNickname(); } @@ -143,7 +97,6 @@ public class WxRechargeServiceImpl implements WxRechargeService { cardDO.setFlag(CardDO.ADD); cardDO.setChangeMoney(money); cardDO.setType(CostTypeEnum.WX_PAY.getCode()); - cardDO.setGiftAmount(giftNewMoney); cardDO.setWxAmount(wxNewMoney); cardMapper.insert(cardDO); @@ -152,7 +105,7 @@ public class WxRechargeServiceImpl implements WxRechargeService { String redisKey = "USER_" + userId; AppUserInfoCardVO appUserInfoCardVO = new AppUserInfoCardVO(); appUserInfoCardVO.setName(name); - appUserInfoCardVO.setMoney(wxNewMoney); + appUserInfoCardVO.setMoney(newMoney); wxRechargeRedisTemplate.opsForValue().set(redisKey, JSONUtil.toJsonStr(appUserInfoCardVO)); } diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/diningplates/DiningPlatesServiceImpl.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/diningplates/DiningPlatesServiceImpl.java index 741337c4..dcb8668b 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/diningplates/DiningPlatesServiceImpl.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/diningplates/DiningPlatesServiceImpl.java @@ -364,13 +364,12 @@ public class DiningPlatesServiceImpl implements DiningPlatesService { public BigDecimal checkMoney(MemberUserDO memberUserDO,Long storeId) { //获取所有现金 - BigDecimal cashAmount = moneyService.getAllMoney(memberUserDO.getId()); + BigDecimal cashAmount = memberUserDO.getCashAmount(); //获取用户所在组分类 - Integer type = memberGroupService.getGroupTypeByUserId(memberUserDO.getId()); - List typeList = Arrays.asList(GroupTypeEnum.ADMINISTRATIVE.getCode(), GroupTypeEnum.DISTRICT.getCode()); + List types = memberGroupService.getGroupTypeListByUserId(memberUserDO.getId()); //查询今天是否假期 Boolean isHoliday = holidayService.checkHoliday(); - boolean typeHoliday = isHoliday && typeList.contains(type); + boolean typeHoliday = isHoliday && (types.contains(GroupTypeEnum.ADMINISTRATIVE.getCode()) || types.contains(GroupTypeEnum.DISTRICT.getCode())); if(typeHoliday){ cashAmount = BigDecimal.ZERO; } @@ -491,12 +490,10 @@ public class DiningPlatesServiceImpl implements DiningPlatesService { .last("limit 1")); MemberUserDO memberUserDO = memberUserMapper.selectById(diningPlatesDO.getUserId()); - BigDecimal cashAmount = moneyService.getAllMoney(memberUserDO.getId()); - AppUserInfo appUserInfo = new AppUserInfo(); appUserInfo.setNickname(StrUtil.isNotBlank(memberUserDO.getName())?memberUserDO.getName():memberUserDO.getNickname()) - .setMoney(memberUserDO.getWxAmount().add(cashAmount)) - .setOrderMoney(new BigDecimal(stringRedisTemplate.opsForValue().get(diningPlatesNum+"-"+storeId))) + .setMoney(memberUserDO.getMoney()) + .setOrderMoney(Optional.ofNullable(stringRedisTemplate.opsForValue().get(diningPlatesNum + "-" + storeId)).map(BigDecimal::new).orElse(BigDecimal.ZERO)) .setReception(memberUserDO.getReception()).setLimitAmount(memberUserDO.getLimitAmount()); return appUserInfo; } diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/group/MemberGroupService.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/group/MemberGroupService.java index 7ccea7f0..5bf79f28 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/group/MemberGroupService.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/group/MemberGroupService.java @@ -138,4 +138,6 @@ public interface MemberGroupService { * 获取用户所在组类别 */ Integer getGroupTypeByUserId(Long userId); + + List getGroupTypeListByUserId(Long userId); } diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/group/MemberGroupServiceImpl.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/group/MemberGroupServiceImpl.java index edfedd1f..397df9f1 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/group/MemberGroupServiceImpl.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/group/MemberGroupServiceImpl.java @@ -212,4 +212,14 @@ public class MemberGroupServiceImpl implements MemberGroupService { List collect = groupByUserId.stream().map(MemberGroupDO::getType).collect(Collectors.toList()); return collect.get(0); } + + @Override + public List getGroupTypeListByUserId(Long userId) { + + List groupByUserId = memberGroupMapper.getGroupByUserId(userId); + if (CollectionUtil.isEmpty(groupByUserId)) { + return Collections.singletonList(GroupTypeEnum.PERSON.getCode()); + } + return groupByUserId.stream().map(MemberGroupDO::getType).collect(Collectors.toList()); + } } diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/holiday/HolidayService.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/holiday/HolidayService.java index a518f407..896f0bcb 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/holiday/HolidayService.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/holiday/HolidayService.java @@ -1,5 +1,6 @@ package cn.iocoder.yudao.module.member.service.holiday; +import java.time.LocalDate; import java.util.*; import javax.validation.*; import cn.iocoder.yudao.module.member.controller.admin.holiday.vo.*; @@ -57,4 +58,9 @@ public interface HolidayService { * 判断今天是否是假期 */ Boolean checkHoliday(); + + /** + * 判断指定日期是否是假期 + */ + Boolean checkHoliday(String time); } \ No newline at end of file diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/holiday/HolidayServiceImpl.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/holiday/HolidayServiceImpl.java index c0d43abb..97541c5a 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/holiday/HolidayServiceImpl.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/holiday/HolidayServiceImpl.java @@ -116,4 +116,20 @@ public class HolidayServiceImpl implements HolidayService { } return isHoliday; } + + @Override + public Boolean checkHoliday(String time) { + // 创建 DateTimeFormatter 对象 + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); + LocalDate currentDate = LocalDate.parse(time, formatter); + DayOfWeek dayOfWeek =currentDate.getDayOfWeek(); + // 判断当天是否周末 + boolean isHoliday = dayOfWeek== DayOfWeek.SATURDAY || dayOfWeek == DayOfWeek.SUNDAY; + //获取假期 + HolidayDO holidayDO = holidayMapper.selectOne(new QueryWrapper().eq("date", time).last("LIMIT 1")); + if (holidayDO != null) { + isHoliday = holidayDO.getHoliday(); + } + return isHoliday; + } } \ No newline at end of file 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 782996e8..6000c185 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 @@ -500,16 +500,16 @@ public class OrderServiceImpl implements OrderService { if (memberUserDO == null) { throw exception(USER_NOT_EXISTS); } - + String dateTime = date; if(CostTypeEnum.MORNING.getCode().equals(type)){ - date = date+" 08:00:00"; + dateTime = dateTime+" 08:00:00"; }else if (CostTypeEnum.NOON.getCode().equals(type)){ - date = date+" 12:00:00"; + dateTime = dateTime+" 12:00:00"; }else if (CostTypeEnum.NIGHT.getCode().equals(type)){ - date = date+" 17:00:00"; + dateTime = dateTime+" 17:00:00"; } DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); - LocalDateTime now = LocalDateTime.parse(date, formatter); + LocalDateTime now = LocalDateTime.parse(dateTime, formatter); DishOrderDO dishOrderDO = new DishOrderDO(); @@ -532,7 +532,7 @@ public class OrderServiceImpl implements OrderService { orderDetailDO.setDishesId(-1L); orderDetailService.insertOne(orderDetailDO); //扣费处理 - deductionService.deduct(memberUserDO.getId(), money, type,carteenId); + deductionService.deduct(memberUserDO.getId(), money, type,carteenId,date); //更新营业数据 StatisticsVo statisticsVo = new StatisticsVo(); statisticsVo.setCarteenId(dishOrderDO.getStoreId()); 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 3f819513..ea2f8c7c 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.deduct(orderSpaceCapsule.getUserId(), orderSpaceCapsule.getMoney(), CostTypeEnum.SHOPPING.getCode(),createReqVO.getCarteenId()); + deductionService.spaceDeduct(orderSpaceCapsule.getUserId(), orderSpaceCapsule.getMoney(), CostTypeEnum.SHOPPING.getCode(),createReqVO.getCarteenId()); // 设置变动后的余额 orderSpaceCapsule.setEndMoney(initialMoney.subtract(orderSpaceCapsule.getMoney())); // 设置支付方式