From bd452d9ce42ef1ee4169d6ae1a09f6aaf1ef3505 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=9F=A9=E9=B9=8F=E8=BE=89?= <18322780655@163.com> Date: Mon, 20 May 2024 17:10:45 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E4=BC=9A=E5=91=98=E6=94=AF?= =?UTF-8?q?=E4=BB=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/PayController.java | 22 +++++ .../cashierservice/service/PayService.java | 85 +++++++++++++++++++ 2 files changed, 107 insertions(+) diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/controller/PayController.java b/src/main/java/com/chaozhanggui/system/cashierservice/controller/PayController.java index 58f7005..1c29eb1 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/controller/PayController.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/controller/PayController.java @@ -50,6 +50,28 @@ public class PayController { return Result.fail("支付失败"); } + + + + /** + * 储值卡支付 + * @param token + * @param loginName + * @param clientType + * @param orderId + * @param memberId + * @return + */ + @GetMapping("accountPay") + public Result accountPay(@RequestHeader("token") String token, + @RequestHeader("loginName") String loginName, + @RequestHeader("clientType") String clientType, + @RequestParam("orderId") String orderId, + @RequestParam("memberId") String memberId + ){ + return payService.accountPay(orderId,memberId,token); + } + @RequestMapping("groupOrderPay") public Result groupOrderPay(HttpServletRequest request, @RequestHeader String environment,@RequestHeader String token, @RequestBody Map map) { if (ObjectUtil.isEmpty(map) || map.size() <= 0 || !map.containsKey("orderId") || ObjectUtil.isEmpty(map.get("orderId"))) { diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/service/PayService.java b/src/main/java/com/chaozhanggui/system/cashierservice/service/PayService.java index ee5e796..43ff9f5 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/service/PayService.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/service/PayService.java @@ -277,6 +277,91 @@ public class PayService { return Result.fail("失败"); } + + + + + + + + @Transactional(rollbackFor = Exception.class) + public Result accountPay(String orderId, String memberId, String token) { + if (ObjectUtil.isEmpty(orderId) || ObjectUtil.isEmpty(memberId)) { + return Result.fail("参数错误"); + } + + TbOrderInfo orderInfo = tbOrderInfoMapper.selectByPrimaryKey(Integer.valueOf(orderId)); + if (ObjectUtil.isEmpty(orderInfo)) { + return Result.fail("订单信息不存在"); + } + + + if (!"unpaid".equals(orderInfo.getStatus())) { + return Result.fail("订单出状态异常"); + } + + + int count = tbShopPayTypeMapper.countSelectByShopIdAndPayType(orderInfo.getShopId(), "deposit"); + if (count < 1) { + return Result.fail("店铺未开通此支付方式"); + } + + + TbShopUser user = tbShopUserMapper.selectByPrimaryKey(memberId); + if (ObjectUtil.isEmpty(user) || !"1".equals(user.getIsVip().toString())) { + return Result.fail("用户非会员"); + } + + if (N.gt(orderInfo.getPayAmount(), user.getAmount())) { + return Result.fail("会员卡余额不足"); + } + + user.setAmount(user.getAmount().subtract(orderInfo.getOrderAmount())); + user.setConsumeAmount(user.getConsumeAmount().add(orderInfo.getPayAmount())); + user.setConsumeNumber(user.getConsumeNumber() + 1); + user.setUpdatedAt(System.currentTimeMillis()); + tbShopUserMapper.updateByPrimaryKeySelective(user); + + + TbShopUserFlow flow = new TbShopUserFlow(); + flow.setShopUserId(Integer.valueOf(user.getId())); + flow.setBizCode("accountPay"); + flow.setBizName("会员储值卡支付"); + flow.setAmount(orderInfo.getOrderAmount()); + flow.setBalance(user.getAmount()); + flow.setCreateTime(new Date()); + tbShopUserFlowMapper.insert(flow); + + + orderInfo.setPayAmount(orderInfo.getOrderAmount()); + orderInfo.setMemberId(memberId); + orderInfo.setPayType("deposit"); + orderInfo.setStatus("closed"); + orderInfo.setPayOrderNo("deposit".concat(SnowFlakeUtil.generateOrderNo())); + tbOrderInfoMapper.updateByPrimaryKeySelective(orderInfo); + //更新购物车状态 + int cartCount = tbCashierCartMapper.updateStatusByOrderId(orderId, "final"); + + + tbOrderDetailMapper.updateStatusByOrderId(Integer.valueOf(orderId), "closed"); + + tbOrderDetailMapper.updateStatusByOrderIdAndStatus(Integer.valueOf(orderId), "closed"); + + log.info("更新购物车:{}", cartCount); + + JSONObject jsonObject = new JSONObject(); + jsonObject.put("token", token); + jsonObject.put("type", "create"); + jsonObject.put("orderId", orderId); + + producer.putOrderCollect(jsonObject.toJSONString()); + + producer.printMechine(orderId); + + return Result.success(CodeEnum.SUCCESS); + } + + @Transactional(rollbackFor = Exception.class) public Result groupOrderPay(String orderId, String payType, String userId, String ip) throws JsonProcessingException { TbGroupOrderInfo orderInfo = tbGroupOrderInfoMapper.queryById(Integer.valueOf(orderId));