From 2ae099b572feda2c53fd7325a669f4293ef4a9b1 Mon Sep 17 00:00:00 2001 From: zengtao01 Date: Wed, 9 Oct 2024 18:22:27 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../yudao/module/member/api/card/CardApi.java | 2 +- .../module/member/api/card/CardApiImpl.java | 7 ++-- .../controller/admin/card/CardController.java | 3 +- .../AppDiningPlatesController.java | 2 +- .../dal/dataobject/order/DishOrderDO.java | 7 ++-- .../member/job/BalanceDeductionJob.java | 6 ++++ .../member/service/card/CardService.java | 2 +- .../member/service/card/CardServiceImpl.java | 4 +-- .../diningplates/DiningPlatesService.java | 2 +- .../diningplates/DiningPlatesServiceImpl.java | 32 ++++++++++++++----- .../service/order/OrderServiceImpl.java | 6 ++-- .../admin/notify/PayNotifyController.java | 4 ++- .../service/order/PayOrderServiceImpl.java | 4 ++- 13 files changed, 55 insertions(+), 26 deletions(-) diff --git a/yudao-module-member/yudao-module-member-api/src/main/java/cn/iocoder/yudao/module/member/api/card/CardApi.java b/yudao-module-member/yudao-module-member-api/src/main/java/cn/iocoder/yudao/module/member/api/card/CardApi.java index 3b88a406..dd0a99c6 100644 --- a/yudao-module-member/yudao-module-member-api/src/main/java/cn/iocoder/yudao/module/member/api/card/CardApi.java +++ b/yudao-module-member/yudao-module-member-api/src/main/java/cn/iocoder/yudao/module/member/api/card/CardApi.java @@ -9,5 +9,5 @@ import java.math.BigDecimal; */ public interface CardApi { - Boolean recharge(BigDecimal money); + Boolean recharge(BigDecimal money,Long userId); } diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/api/card/CardApiImpl.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/api/card/CardApiImpl.java index a647b2c9..04f9cbf9 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/api/card/CardApiImpl.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/api/card/CardApiImpl.java @@ -24,13 +24,14 @@ public class CardApiImpl implements CardApi{ @Override - public Boolean recharge(BigDecimal money){ + public Boolean recharge(BigDecimal money,Long userId){ + money = money.divide(new BigDecimal("100")); RechargeAmountDO recharge = rechargeAmountService.getRecharge(money); BigDecimal giftMoney = BigDecimal.ZERO; if(ObjectUtil.isNotEmpty(recharge.getDonateMoney())){ giftMoney = giftMoney.add(recharge.getDonateMoney()); } - money = money.divide(new BigDecimal("100")); - return cardService.recharge(money, CardDO.ADD,giftMoney); + + return cardService.recharge(money, CardDO.ADD,giftMoney,userId); } } diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/card/CardController.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/card/CardController.java index ee51461e..6566d2a8 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/card/CardController.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/card/CardController.java @@ -6,6 +6,7 @@ import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.common.util.object.BeanUtils; import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog; +import cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils; import cn.iocoder.yudao.module.member.controller.admin.card.vo.CardPageReqVO; import cn.iocoder.yudao.module.member.controller.admin.card.vo.CardRespVO; import cn.iocoder.yudao.module.member.controller.admin.card.vo.CardSaveReqVO; @@ -144,7 +145,7 @@ public class CardController { @Operation(summary = "充值") //@PreAuthorize("@ss.hasPermission('member:card:update')") public CommonResult recharge(BigDecimal money,BigDecimal giftMoney) { - return success(cardService.recharge(money, CardDO.ADD,giftMoney)); + return success(cardService.recharge(money, CardDO.ADD,giftMoney, SecurityFrameworkUtils.getLoginUserId())); } @GetMapping("/getMoney") diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/diningplates/AppDiningPlatesController.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/diningplates/AppDiningPlatesController.java index 27562b9b..05f5a0a3 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/diningplates/AppDiningPlatesController.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/diningplates/AppDiningPlatesController.java @@ -62,7 +62,7 @@ public class AppDiningPlatesController { @GetMapping("/checkBind") @Operation(summary = "验证餐盘绑定") - public CommonResult checkBind(String diningPlatesNum,Long storeId) { + public CommonResult checkBind(String diningPlatesNum, Long storeId) { storeId = getCarteen(storeId); return success(diningPlatesService.appCheckBind(diningPlatesNum,storeId)); } 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 6c4d5371..fbfdcb84 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 @@ -28,9 +28,10 @@ import java.math.BigDecimal; @AllArgsConstructor public class DishOrderDO extends BaseDO { - public final static String COMPLETE = "1"; - public final static String INCOMPLETE = "0"; - public final static String TOCOMPLETE = "2"; + public final static String COMPLETE = "1"; //完成 + public final static String INCOMPLETE = "0"; //未完成 + public final static String TOCOMPLETE = "2"; //未支付 + public final static String LOSE_EFFICACY = "3"; //已失效 /** diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/job/BalanceDeductionJob.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/job/BalanceDeductionJob.java index 241e2942..a4ec8c72 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/job/BalanceDeductionJob.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/job/BalanceDeductionJob.java @@ -150,6 +150,12 @@ public class BalanceDeductionJob implements JobHandler { cardDO.setChangeMoney(total); cardDO.setFlag(CardDO.MINUS); cardService.insertOne(cardDO); + String redisData = stringRedisTemplate.opsForValue().get("DATA-money"+ userId); + + if(StrUtil.isNotBlank(redisData)){ + stringRedisTemplate.opsForValue().set("DATA-money"+userId, cardDO.getMoney().toString()); + + } list.add(cardDO); dishOrderDO.setTotalMoney(total); diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/card/CardService.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/card/CardService.java index 5eb7bd93..36f097b5 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/card/CardService.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/card/CardService.java @@ -69,7 +69,7 @@ public interface CardService { /** * 余额变动 */ - Boolean recharge(BigDecimal money, String flag,BigDecimal giftMoney); + Boolean recharge(BigDecimal money, String flag,BigDecimal giftMoney,Long userId); /** * 获取余额 diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/card/CardServiceImpl.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/card/CardServiceImpl.java index fea2db20..4882f8d9 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/card/CardServiceImpl.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/card/CardServiceImpl.java @@ -123,11 +123,11 @@ public class CardServiceImpl implements CardService { @Override - public Boolean recharge(BigDecimal money, String flag, BigDecimal giftMoney) { + public Boolean recharge(BigDecimal money, String flag, BigDecimal giftMoney,Long userId) { //获取最新余额 CardDO lastCardDO = getLastCardDO(); CardDO cardDO = new CardDO(); - cardDO.setUserId(SecurityFrameworkUtils.getLoginUserId()); + cardDO.setUserId(userId); cardDO.setFlag(flag); cardDO.setChangeMoney(money); cardDO.setType(CostTypeEnum.WX_PAY.getCode()); diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/diningplates/DiningPlatesService.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/diningplates/DiningPlatesService.java index 9548acef..0feb1c83 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/diningplates/DiningPlatesService.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/diningplates/DiningPlatesService.java @@ -90,7 +90,7 @@ public interface DiningPlatesService { Boolean checkBind(String diningPlatesNum,Long storeId); - AppUserInfoCardVO appCheckBind(String diningPlatesNum,Long storeId); + AppUserInfoCardVO appCheckBind(String diningPlatesNum, Long storeId); List getDiningPlatesNum(LocalDateTime localDateTime, Integer time); 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 6af967bf..1bd61026 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 @@ -41,6 +41,7 @@ import java.time.LocalDateTime; import java.time.LocalTime; import java.util.ArrayList; import java.util.List; +import java.util.concurrent.CompletableFuture; import java.util.stream.Collectors; import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; @@ -288,15 +289,30 @@ public class DiningPlatesServiceImpl implements DiningPlatesService { if (diningPlatesDO == null || diningPlatesDO.getUserId() == null) { throw exception(DINING_PLATES_NOT_BIND); } - //刷新绑定时间 - diningPlatesDO.setBindingTime(LocalDateTime.now()); - diningPlatesMapper.updateById(diningPlatesDO); - + AppUserInfoCardVO appUserInfoCardVO = new AppUserInfoCardVO(); + String name = stringRedisTemplate.opsForValue().get("DATA-name" + diningPlatesDO.getUserId()); + String money = stringRedisTemplate.opsForValue().get("DATA-money" + diningPlatesDO.getUserId()); + if(StrUtil.isNotBlank(name)&& StrUtil.isNotBlank(money)){ + appUserInfoCardVO.setName(name); + appUserInfoCardVO.setMoney(new BigDecimal(money)); + return appUserInfoCardVO; + } MemberUserDO memberUserDO = memberUserMapper.selectById(diningPlatesDO.getUserId()); - AppUserInfoCardVO data = new AppUserInfoCardVO(); - data.setName(memberUserDO.getNickname()); - data.setMoney(cardService.getMoneyByUserId(memberUserDO.getId())); - return data; + stringRedisTemplate.opsForValue().set("DATA-name"+diningPlatesDO.getUserId(), memberUserDO.getNickname()); + stringRedisTemplate.opsForValue().set("DATA-money"+diningPlatesDO.getUserId(), cardService.getMoneyByUserId(memberUserDO.getId()).toString()); + //刷新绑定时间 + CompletableFuture.supplyAsync(() -> { + int i = 0; + try { + // 模拟耗时操作,这里可以替换为实际的代码逻辑 + diningPlatesDO.setBindingTime(LocalDateTime.now()); + i = diningPlatesMapper.updateById(diningPlatesDO); + } catch (Exception e) { + e.printStackTrace(); + } + return i>0; + }); + return appUserInfoCardVO; } public void checkDiningPlates(DiningPlatesDO diningPlatesDO) { 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 84ac6d13..df2824a4 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 @@ -458,9 +458,9 @@ public class OrderServiceImpl implements OrderService { BigDecimal oldCashAmount = lastCardDO.getCashAmount(); BigDecimal oldGiftAmount = lastCardDO.getGiftAmount(); - cardDO.setGiftAmount(oldWxAmount.add(wxAmount)); - cardDO.setWxAmount(oldCashAmount.add(cashAmount)); - cardDO.setWxAmount(oldGiftAmount.add(giftAmount)); + cardDO.setWxAmount(oldWxAmount.add(wxAmount)); + cardDO.setCashAmount(oldCashAmount.add(cashAmount)); + cardDO.setGiftAmount(oldGiftAmount.add(giftAmount)); cardMapper.insert(cardDO); }else{ diff --git a/yudao-module-pay/yudao-module-pay-biz/src/main/java/cn/iocoder/yudao/module/pay/controller/admin/notify/PayNotifyController.java b/yudao-module-pay/yudao-module-pay-biz/src/main/java/cn/iocoder/yudao/module/pay/controller/admin/notify/PayNotifyController.java index 66a3f18c..e0ef546c 100644 --- a/yudao-module-pay/yudao-module-pay-biz/src/main/java/cn/iocoder/yudao/module/pay/controller/admin/notify/PayNotifyController.java +++ b/yudao-module-pay/yudao-module-pay-biz/src/main/java/cn/iocoder/yudao/module/pay/controller/admin/notify/PayNotifyController.java @@ -109,7 +109,9 @@ public class PayNotifyController { String re = notifyRedisTemplate.opsForValue().get("ADD" + notify.getOutTradeNo()); if(StringUtils.isNotBlank(re)){ log.info("开始进行余额增加,获取的金额:"+re); - cardApi.recharge(new BigDecimal(re)); + int index = re.indexOf("-"); + String userId = re.substring(index + 1); + cardApi.recharge(new BigDecimal(re.substring(0,index)),Long.valueOf(userId)); notifyRedisTemplate.delete("ADD" + notify.getOutTradeNo()); } return "success"; diff --git a/yudao-module-pay/yudao-module-pay-biz/src/main/java/cn/iocoder/yudao/module/pay/service/order/PayOrderServiceImpl.java b/yudao-module-pay/yudao-module-pay-biz/src/main/java/cn/iocoder/yudao/module/pay/service/order/PayOrderServiceImpl.java index 94ab9ca7..8f00b145 100644 --- a/yudao-module-pay/yudao-module-pay-biz/src/main/java/cn/iocoder/yudao/module/pay/service/order/PayOrderServiceImpl.java +++ b/yudao-module-pay/yudao-module-pay-biz/src/main/java/cn/iocoder/yudao/module/pay/service/order/PayOrderServiceImpl.java @@ -50,6 +50,7 @@ import java.util.Objects; import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; import static cn.iocoder.yudao.framework.common.util.json.JsonUtils.toJsonString; +import static cn.iocoder.yudao.framework.web.core.util.WebFrameworkUtils.getLoginUserId; import static cn.iocoder.yudao.module.pay.enums.ErrorCodeConstants.*; /** @@ -174,7 +175,8 @@ public class PayOrderServiceImpl implements PayOrderService { // 订单相关字段 .setPrice(order.getPrice()).setExpireTime(order.getExpireTime()); PayOrderRespDTO unifiedOrderResp = client.unifiedOrder(unifiedOrderReqDTO); - payRedis.opsForValue().set("ADD"+unifiedOrderReqDTO.getOutTradeNo(),unifiedOrderReqDTO.getPrice().toString()); + payRedis.opsForValue().set("ADD"+unifiedOrderReqDTO.getOutTradeNo() + ,unifiedOrderReqDTO.getPrice().toString()+"-"+getLoginUserId()); log.info("REDISID:"+"ADD"+unifiedOrderReqDTO.getOutTradeNo()+" 总金额:"+unifiedOrderReqDTO.getPrice().toString()); // 4. 如果调用直接支付成功,则直接更新支付单状态为成功。例如说:付款码支付,免密支付时,就直接验证支付成功 if (unifiedOrderResp != null) {