diff --git a/src/main/java/com/example/demo/controller/cash/CashCollectionController.java b/src/main/java/com/example/demo/controller/cash/CashCollectionController.java index 0316c0e..e218c2e 100644 --- a/src/main/java/com/example/demo/controller/cash/CashCollectionController.java +++ b/src/main/java/com/example/demo/controller/cash/CashCollectionController.java @@ -66,6 +66,15 @@ public class CashCollectionController { return Result.error(e.getMessage()); } } + //新增赠送免费金币 + @PostMapping("/addFreeCoin") + public Result addFreeCoin(@RequestBody CashCollection cashCollection) { + try { + return Result.success(cashCollectionService.addFreeCoin(cashCollection)); + } catch (Exception e) { + return Result.error(e.getMessage()); + } + } //撤回未审核的收款订单 @PostMapping("/cancel") public Result cancel(@RequestBody CashCollection cashRecord) { diff --git a/src/main/java/com/example/demo/service/cash/CashCollectionService.java b/src/main/java/com/example/demo/service/cash/CashCollectionService.java index 36c1f1a..68254d1 100644 --- a/src/main/java/com/example/demo/service/cash/CashCollectionService.java +++ b/src/main/java/com/example/demo/service/cash/CashCollectionService.java @@ -22,6 +22,8 @@ import java.util.List; public interface CashCollectionService { //新增收款订单 String add(CashCollection cashCollection); + //赠送免费金币 + String addFreeCoin(CashCollection cashCollection); //撤回未审核的收款订单 String cancel(String orderCode); //编辑并重新提交收款订单 @@ -42,4 +44,5 @@ public interface CashCollectionService { CashCollection selectByGoldCoinOrderCode(String orderNo); //同步事务方法 void processBatch(List gOrders); + } diff --git a/src/main/java/com/example/demo/serviceImpl/cash/CashAuditServiceImpl.java b/src/main/java/com/example/demo/serviceImpl/cash/CashAuditServiceImpl.java index 3a5e484..0189379 100644 --- a/src/main/java/com/example/demo/serviceImpl/cash/CashAuditServiceImpl.java +++ b/src/main/java/com/example/demo/serviceImpl/cash/CashAuditServiceImpl.java @@ -78,13 +78,13 @@ public class CashAuditServiceImpl implements CashAuditService { int currentMonth = LocalDate.now().getMonthValue(); // 根据当前月份设置对应字段 if (currentMonth >= 1 && currentMonth <= 6) { - // 1-6月:设置12月额度,6月保持默认值 - rechargeOrder.setFreeJune(0); - rechargeOrder.setFreeDecember(order.getFreeGold()); - } else { - // 7-12月:设置6月额度,12月保持默认值 + // 1-6月:设置6月额度,12月保持默认值 rechargeOrder.setFreeJune(order.getFreeGold()); rechargeOrder.setFreeDecember(0); + } else { + // 7-12月:设置12月额度,6月保持默认值 + rechargeOrder.setFreeJune(0); + rechargeOrder.setFreeDecember(order.getFreeGold()); } rechargeOrder.setSumGold(order.getPermanentGold() + order.getFreeGold()); rechargeOrder.setRateId(Integer.valueOf(order.getPaymentCurrency())); @@ -129,6 +129,58 @@ public class CashAuditServiceImpl implements CashAuditService { user.setRechargeNum(1); //充值次数加一 auditMapper.updateUserGold(user); } + if (order.getGoodsName().equals("免费金币赠送")) { + //往金币订单表加一条充值记录 + UserGoldRecord rechargeOrder = new UserGoldRecord(); + rechargeOrder.setOrderCode(orderCode.replaceFirst("^XJ_", "XJCZ_")); + rechargeOrder.setJwcode(order.getJwcode()); + rechargeOrder.setActivity(order.getActivity()); + rechargeOrder.setPermanentGold(0); + // 获取当前月份(1-12) + int currentMonth = LocalDate.now().getMonthValue(); + // 根据当前月份设置对应字段 + if (currentMonth >= 1 && currentMonth <= 6) { + // 1-6月:设置6月额度,12月保持默认值 + rechargeOrder.setFreeJune(order.getFreeGold()); + rechargeOrder.setFreeDecember(0); + } else { + // 7-12月:设置12月额度,6月保持默认值 + rechargeOrder.setFreeJune(0); + rechargeOrder.setFreeDecember(order.getFreeGold()); + } + rechargeOrder.setSumGold(order.getFreeGold()); + rechargeOrder.setRemark(order.getRemark()); + rechargeOrder.setPayPlatform("金币系统"); + rechargeOrder.setAdminId(order.getSubmitterId()); + rechargeOrder.setAuditId(auditId); + rechargeOrder.setType((byte) 0); + rechargeOrder.setAuditStatus(1); + rechargeOrder.setCreateTime(new Date()); + rechargeMapper.add(rechargeOrder); + //往ERP加一条充值数据 + GoldTistV2.addCoinNew(order.getJwcode().toString(), 63, //充值免费 + (double) (order.getFreeGold()) / 100, + order.getRemark(), 0, auditName, "金币充值"); + //修改用户余额,添加金币 + User user = new User(); + user.setJwcode(order.getJwcode()); + user.setSumConsumePermanent(BigDecimal.valueOf(0)); + // 根据当前月份设置对应字段 + if (currentMonth >= 1 && currentMonth <= 6) { + // 1-6月:设置6月额度,12月保持默认值 + user.setSumFreeJune(BigDecimal.valueOf(order.getFreeGold())); + user.setSumFreeJune(BigDecimal.valueOf(order.getFreeGold())); + user.setCurrentFreeDecember(BigDecimal.valueOf(0)); + } else { + // 7-12月:设置12月额度,6月保持默认值 + user.setSumFreeJune(BigDecimal.valueOf(0)); + user.setSumFreeDecember(BigDecimal.valueOf(order.getFreeGold())); + user.setSumFreeDecember(BigDecimal.valueOf(order.getFreeGold())); + } + user.setCurrentPermanentGold(BigDecimal.valueOf(0)); + user.setRechargeNum(1); //充值次数加一 + auditMapper.updateUserGold(user); + } } else if (action == 2) { //驳回 updateOrder.setStatus(2); updateOrder.setRejectReason(rejectReason); diff --git a/src/main/java/com/example/demo/serviceImpl/cash/CashCollectionServiceImpl.java b/src/main/java/com/example/demo/serviceImpl/cash/CashCollectionServiceImpl.java index 46e35f0..a059fdc 100644 --- a/src/main/java/com/example/demo/serviceImpl/cash/CashCollectionServiceImpl.java +++ b/src/main/java/com/example/demo/serviceImpl/cash/CashCollectionServiceImpl.java @@ -69,7 +69,7 @@ public class CashCollectionServiceImpl implements CashCollectionService { throw new IllegalArgumentException("活动不能为空"); } if (cashCollection.getGoodsName() == null|| cashCollection.getGoodsName().isEmpty()) { - throw new IllegalArgumentException("商品名不能为空"); + throw new IllegalArgumentException("产品名称不能为空"); } if (cashCollection.getGoodsName().equals("金币充值")) { if (cashCollection.getPermanentGold() == 0 && cashCollection.getFreeGold() == 0) { @@ -142,6 +142,57 @@ public class CashCollectionServiceImpl implements CashCollectionService { return "添加成功"; } + @Override + public String addFreeCoin(CashCollection cashCollection) { + if (cashCollection.getJwcode() == null) { + throw new IllegalArgumentException("精网号不能为空"); + } + if (cashCollection.getJwcode() < 10000000 || cashCollection.getJwcode() > 99999999) { + throw new IllegalArgumentException("精网号必须为8位"); + } + if (cashCollection.getName() == null || cashCollection.getName().isEmpty()){ + throw new IllegalArgumentException("客户姓名不能为空"); + } + if (cashCollection.getActivity() == null || cashCollection.getActivity().isEmpty()) { + throw new IllegalArgumentException("活动不能为空"); + } + if (cashCollection.getFreeGold() == 0) { + throw new IllegalArgumentException("免费金币数量不能为空"); + } + //生成订单号后半部分 + String orderNumber = UUID.randomUUID().toString().replaceAll("-", ""); + CashRecord cashRecord = new CashRecord(); + //构建订单信息 + cashRecord.setOrderCode("XJ_" + orderNumber); //订单号 + cashRecord.setJwcode(cashCollection.getJwcode()); //精网号 + cashRecord.setName(cashCollection.getName()); //客户姓名 + cashRecord.setActivity(cashCollection.getActivity()); // 活动 + cashRecord.setGoodsName("免费金币赠送"); //商品名称 + cashRecord.setFreeGold(cashCollection.getFreeGold()); //免费金币 + cashRecord.setRemark(cashCollection.getRemark()); //备注 + cashRecord.setStatus(0); //订单状态:付款线下财务待审核 + cashRecord.setSubmitterId(cashCollection.getSubmitterId()); //提交人ID + cashRecord.setSubmitterMarket(cashCollection.getSubmitterMarket()); + cashRecord.setOrderType(1); //订单类型:1-收款 + cashRecord.setMarket(cashCollection.getMarket()); + //地区,根据jwcode插入 + //cashRecord.setMarket(cashCollectionMapper.getMarketByJwcode(cashRecord.getJwcode())); + //插入新收款订单 + cashCollectionMapper.add(cashRecord); + // 发送收款创建消息 + Messages message = new Messages(); + message.setJwcode(cashRecord.getJwcode()); + message.setName(cashRecord.getName()); + message.setStatus(cashRecord.getStatus()); + message.setDesc(cashRecord.getJwcode()+"用户的现金收款申请待审核,请前往审核"); + message.setTitle("现金收款--赠送免费金币"); + message.setType(1); + message.setTypeId(cashRecord.getId()); + message.setMarket(Integer.valueOf(cashRecord.getMarket())); + rabbitTemplate.convertAndSend(RabbitMQConfig.CASH_COLLECTION_EXCHANGE, "cash.collection.save", message); + return "添加成功"; + } + //撤回未审核的订单 @Override public String cancel(String orderCode) { diff --git a/src/main/resources/mapper/WorkBenchMapper.xml b/src/main/resources/mapper/WorkBenchMapper.xml index c319ab5..b51d5e1 100644 --- a/src/main/resources/mapper/WorkBenchMapper.xml +++ b/src/main/resources/mapper/WorkBenchMapper.xml @@ -187,7 +187,7 @@ #{market} AND cr.audit_time BETWEEN #{startDate} AND #{endDate} AND cr.order_type=1 - AND cr.status IN (1,3,4) + AND cr.status IN (0,1,3,4,6) GROUP BY m.name;