diff --git a/src/main/java/com/example/demo/controller/coin/ConsumeController.java b/src/main/java/com/example/demo/controller/coin/ConsumeController.java index 8d27478..e0ca116 100644 --- a/src/main/java/com/example/demo/controller/coin/ConsumeController.java +++ b/src/main/java/com/example/demo/controller/coin/ConsumeController.java @@ -154,6 +154,25 @@ public class ConsumeController { } } + //消耗金币增加 + @Log("充值退款(消耗版)") + @PostMapping("/addRefund") + public Result addRefund(@RequestBody ConsumeUser consumeUser) { + try { + return consumeService.addRefund(consumeUser); +// if(consumeUser.getJwcode().equals(94226013)) +// { +// return consumeService.add(consumeUser); +// }else { +// return Result.error("不是测试的精网号,无法添加消费"); +// } +// + } catch (Exception e) { + e.printStackTrace(); + return Result.error("请检查数据的格式"); + } + } + public Result select(@RequestBody Page page) { try { //页码校验 diff --git a/src/main/java/com/example/demo/mapper/coin/ConsumeMapper.java b/src/main/java/com/example/demo/mapper/coin/ConsumeMapper.java index a8d899b..b7c4520 100644 --- a/src/main/java/com/example/demo/mapper/coin/ConsumeMapper.java +++ b/src/main/java/com/example/demo/mapper/coin/ConsumeMapper.java @@ -29,6 +29,9 @@ public interface ConsumeMapper { //添加消费订单 void add(UserGoldRecord userGoldRecord); + //添加退款订单 + void addRefund(UserGoldRecord userGoldRecord); + //更新退款状态 void updateIsRefund(String orderCode); diff --git a/src/main/java/com/example/demo/service/coin/ConsumeService.java b/src/main/java/com/example/demo/service/coin/ConsumeService.java index c478efa..bf3fff6 100644 --- a/src/main/java/com/example/demo/service/coin/ConsumeService.java +++ b/src/main/java/com/example/demo/service/coin/ConsumeService.java @@ -28,4 +28,8 @@ public interface ConsumeService { //增加消费订单 Result add(ConsumeUser consumeUser); + + //增加退款订单 + Result addRefund(ConsumeUser consumeUser); + } diff --git a/src/main/java/com/example/demo/serviceImpl/coin/ConsumeServiceImpl.java b/src/main/java/com/example/demo/serviceImpl/coin/ConsumeServiceImpl.java index ac8c6af..b719d8b 100644 --- a/src/main/java/com/example/demo/serviceImpl/coin/ConsumeServiceImpl.java +++ b/src/main/java/com/example/demo/serviceImpl/coin/ConsumeServiceImpl.java @@ -174,4 +174,93 @@ public class ConsumeServiceImpl implements ConsumeService { // } return Result.success(); } + + + //新增消耗 + @Transactional + @Override + public Result addRefund(ConsumeUser consumeUser) { + if (consumeUser.getTaskGold() == null || consumeUser.getFreeGold() == null || consumeUser.getPermanentGold() == null) { + return Result.error("金币数量不能为空"); + } + if (consumeUser.getTaskGold().compareTo(BigDecimal.ZERO) < 0 || consumeUser.getFreeGold().compareTo(BigDecimal.ZERO) < 0 || consumeUser.getPermanentGold().compareTo(BigDecimal.ZERO) < 0) { + return Result.error("金币不能为负数"); + } + if(consumeUser.getJwcode()<10000000||consumeUser.getJwcode()>99999999) + { + return Result.error("精网号位数小于8位或大于8位"); + } + if(consumeUser.getAdminName()==null){ + return Result.error("管理员不能为空"); + } + GoldUser goldUser = userMapper.selectUser(consumeUser.getJwcode().toString()); + if (goldUser == null) { + return Result.error("用户不存在"); + } + UserGoldRecord userGoldRecord = new UserGoldRecord(); + + String orderNumber = UUID.randomUUID().toString().replaceAll("-", ""); + //订单号生成 + userGoldRecord.setOrderCode("TKCZ_" + orderNumber); + userGoldRecord.setJwcode(consumeUser.getJwcode()); + userGoldRecord.setGoodsName(consumeUser.getGoodsName()); + userGoldRecord.setSumGold(-consumeUser.getSumGold().intValue()); + userGoldRecord.setPermanentGold(-consumeUser.getPermanentGold().intValue()); + // 获取当前月份(1-12) + int currentMonth = LocalDate.now().getMonthValue(); + GoldUser gold = userMapper.selectGold(consumeUser.getJwcode().toString()); + if (consumeUser.getFreeGold().compareTo(gold.getNowFreeDecember().add(gold.getNowFreeJune())) > 0 + || consumeUser.getPermanentGold().compareTo(gold.getNowPermanentGold()) > 0 + || consumeUser.getTaskGold().compareTo(gold.getNowTaskGold()) > 0) { + return Result.error("金币数量不足"); + } + // 根据当前月份设置对应字段 + if (currentMonth >= 1 && currentMonth <= 6) { + // 1-6月:设置6月额度,12月保持默认值 + if (consumeUser.getFreeGold().compareTo(gold.getNowFreeJune()) > 0) { + userGoldRecord.setFreeJune(-gold.getNowFreeJune().intValue()); + userGoldRecord.setFreeDecember(-(consumeUser.getFreeGold().subtract(gold.getNowFreeJune())).intValue()); + } else { + userGoldRecord.setFreeJune(-consumeUser.getFreeGold().intValue()); + userGoldRecord.setFreeDecember(0); + } + } else { + // 7-12月:设置12月额度,6月保持默认值 + if (consumeUser.getFreeGold().compareTo(gold.getNowFreeDecember()) > 0) { + userGoldRecord.setFreeDecember(-gold.getNowFreeDecember().intValue()); + userGoldRecord.setFreeJune(-(consumeUser.getFreeGold().subtract(gold.getNowFreeDecember())).intValue()); + } else { + userGoldRecord.setFreeDecember(-consumeUser.getFreeGold().intValue()); + userGoldRecord.setFreeJune(0); + } + } + //信息输入 + userGoldRecord.setTaskGold(-consumeUser.getTaskGold().intValue()); + userGoldRecord.setRemark(consumeUser.getRemark()); + userGoldRecord.setType((byte) 2); + userGoldRecord.setAuditStatus(0); + userGoldRecord.setPayPlatform("金币系统"); + userGoldRecord.setAdminId(consumeUser.getAdminId()); + userGoldRecord.setCreateTime(new Date()); + userGoldRecord.setPayTime(new Date()); + consumeMapper.add(userGoldRecord); + consumeMapper.updateUserGold(userGoldRecord); + User user = new User(); + user.setJwcode(userGoldRecord.getJwcode()); + user.setCurrentPermanentGold(BigDecimal.valueOf(gold.getNowPermanentGold().intValue() - consumeUser.getPermanentGold().intValue())); + user.setCurrentFreeJune(BigDecimal.valueOf(gold.getNowFreeJune().intValue() + userGoldRecord.getFreeJune())); + user.setCurrentFreeDecember(BigDecimal.valueOf(gold.getNowFreeDecember().intValue() + userGoldRecord.getFreeDecember())); + user.setCurrentTaskGold(BigDecimal.valueOf(gold.getNowTaskGold().intValue() - consumeUser.getTaskGold().intValue())); + user.setConsumeNum(gold.getConsumeNum().intValue() + 1); + user.setSumConsumePermanent(BigDecimal.valueOf(-consumeUser.getPermanentGold().intValue())); + user.setSumConsumeFree(BigDecimal.valueOf(-consumeUser.getFreeGold().intValue())); + user.setSumConsumeTask(BigDecimal.valueOf(-consumeUser.getTaskGold().intValue())); + userMapper.updateGold(user); + // if(consumeUser.getJwcode().equals(94226013)){ + GoldTistV2.addCoinNew(userGoldRecord.getJwcode().toString(), 65, + (double) (userGoldRecord.getPermanentGold() + userGoldRecord.getFreeDecember() + userGoldRecord.getFreeJune() + userGoldRecord.getTaskGold()) / 100, + userGoldRecord.getRemark(), ((double) userGoldRecord.getPermanentGold() / 100), consumeUser.getAdminName(), userGoldRecord.getGoodsName()); + // } + return Result.success(); + } } diff --git a/src/main/resources/mapper/ConsumeMapper.xml b/src/main/resources/mapper/ConsumeMapper.xml index 905243a..4858652 100644 --- a/src/main/resources/mapper/ConsumeMapper.xml +++ b/src/main/resources/mapper/ConsumeMapper.xml @@ -253,7 +253,45 @@ #{payTime} - + + INSERT INTO user_gold_record + + order_code, + jwcode, + sum_gold, + permanent_gold, + free_june, + free_december, + task_gold, + goods_name, + remark, + type, + pay_platform, + admin_id, + audit_status, + create_time, + pay_time + + VALUES + + #{orderCode}, + #{jwcode}, + #{sumGold}, + #{permanentGold}, + #{freeJune}, + #{freeDecember}, + #{taskGold}, + #{goodsName}, + #{remark}, + #{type}, + #{payPlatform}, + #{adminId}, + #{auditStatus}, + #{createTime}, + #{payTime} + + UPDATE user_gold_record SET is_refund = 1