From 1ef52d0816b460bb3807de95bcb6ac4a522d990a Mon Sep 17 00:00:00 2001 From: lijianlin Date: Tue, 9 Dec 2025 11:40:32 +0800 Subject: [PATCH 1/3] =?UTF-8?q?12-09=20=E9=A2=91=E9=81=93=E7=AE=A1?= =?UTF-8?q?=E7=90=86=E5=90=88=E8=AE=A1=E6=95=B0=E7=9A=84=E9=A2=91=E9=81=93?= =?UTF-8?q?=E6=9D=83=E9=99=90=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../example/demo/service/bean/BeanConsumeService.java | 2 +- .../demo/serviceImpl/bean/BeanConsumeServiceImpl.java | 17 +++++++++++++++++ .../serviceImpl/cash/CashCollectionServiceImpl.java | 4 ++-- 3 files changed, 20 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/example/demo/service/bean/BeanConsumeService.java b/src/main/java/com/example/demo/service/bean/BeanConsumeService.java index fcec04c..45c9faa 100644 --- a/src/main/java/com/example/demo/service/bean/BeanConsumeService.java +++ b/src/main/java/com/example/demo/service/bean/BeanConsumeService.java @@ -30,7 +30,7 @@ public interface BeanConsumeService { Object selectFanBy(Integer pageNum, Integer pageSize, BeanConsumeFan beanConsumeFan); //筛选查询文章消费 Object selectArticleBy(Integer pageNum, Integer pageSize, BeanConsumeArticle beanConsumeArticle); - //消费金币合计数 + //消费金豆合计数 BeanConsumeGold sumConsumeGold(Page page); //查询直播礼物 List getLiveGift(); diff --git a/src/main/java/com/example/demo/serviceImpl/bean/BeanConsumeServiceImpl.java b/src/main/java/com/example/demo/serviceImpl/bean/BeanConsumeServiceImpl.java index 25a3faf..36f49a7 100644 --- a/src/main/java/com/example/demo/serviceImpl/bean/BeanConsumeServiceImpl.java +++ b/src/main/java/com/example/demo/serviceImpl/bean/BeanConsumeServiceImpl.java @@ -213,10 +213,27 @@ public class BeanConsumeServiceImpl implements BeanConsumeService { public BeanConsumeGold sumConsumeGold(Page page) { BeanConsumeGold gold = new BeanConsumeGold(); Integer payType = page.getPayType(); + if (payType==1) { + //设置频道权限 + String channel=roleMapper.getChannel(page.getBeanConsumeLive().getRoleId()); + if (channel==null){ + page.getBeanConsumeLive().setLiveChannel(null); + } + if (!channel.equals("全部")){ + page.getBeanConsumeLive().setLiveChannel(channel); + } //直播消费合计 gold = liveMapper.selectSumLiveBy(page.getBeanConsumeLive()); }else if (payType==7) { + //设置频道权限 + String channel=roleMapper.getChannel(page.getBeanConsumeFan().getRoleId()); + if (channel==null){ + page.getBeanConsumeFan().setChannel(null); + } + if (!channel.equals("全部")){ + page.getBeanConsumeFan().setChannel(channel); + } //充值消费合计 gold = beanConsumeMapper.selectSumFansBy(page.getBeanConsumeFan()); }else if (payType==8) { 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 1541a4b..46e35f0 100644 --- a/src/main/java/com/example/demo/serviceImpl/cash/CashCollectionServiceImpl.java +++ b/src/main/java/com/example/demo/serviceImpl/cash/CashCollectionServiceImpl.java @@ -416,10 +416,10 @@ public User getNameAndMarket(Integer jwcode) { cashRecord.setPayload("Ipay88"); break; case 9: - cashRecord.setPayType("FistData"); + cashRecord.setPayType("FirstData"); cashRecord.setReceivedMarket("4"); cashRecord.setBankCode(gOrder.getFirstdataIpgTransactionId()); - cashRecord.setPayload("FistData"); + cashRecord.setPayload("FirstData"); break; default: break; From 9f80eb6c0a4529cf1aa2d69ba7c5ef90b76062c3 Mon Sep 17 00:00:00 2001 From: lijianlin Date: Wed, 10 Dec 2025 11:05:15 +0800 Subject: [PATCH 2/3] =?UTF-8?q?12-10=20=E6=94=B6=E6=AC=BE=E8=B5=A0?= =?UTF-8?q?=E9=80=81=E5=85=8D=E8=B4=B9=E9=87=91=E5=B8=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/cash/CashCollectionController.java | 9 ++++ .../demo/service/cash/CashCollectionService.java | 3 ++ .../serviceImpl/cash/CashAuditServiceImpl.java | 62 ++++++++++++++++++++-- .../cash/CashCollectionServiceImpl.java | 53 +++++++++++++++++- src/main/resources/mapper/WorkBenchMapper.xml | 2 +- 5 files changed, 122 insertions(+), 7 deletions(-) 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; From b16dbd191e1eed6d7b4dbb6c6289be826c5461ee Mon Sep 17 00:00:00 2001 From: lijianlin Date: Thu, 11 Dec 2025 15:02:46 +0800 Subject: [PATCH 3/3] =?UTF-8?q?12-11=20=E5=90=8C=E6=AD=A5=E5=AE=A1?= =?UTF-8?q?=E6=A0=B8=E5=AD=97=E6=AE=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/example/demo/domain/entity/CashRecord.java | 2 ++ .../demo/serviceImpl/cash/CashCollectionServiceImpl.java | 13 +++++++++---- src/main/resources/cashMapper/CashCollectionMapper.xml | 2 +- src/main/resources/mapper/WorkBenchMapper.xml | 2 +- 4 files changed, 13 insertions(+), 6 deletions(-) diff --git a/src/main/java/com/example/demo/domain/entity/CashRecord.java b/src/main/java/com/example/demo/domain/entity/CashRecord.java index 90e3377..2e4a895 100644 --- a/src/main/java/com/example/demo/domain/entity/CashRecord.java +++ b/src/main/java/com/example/demo/domain/entity/CashRecord.java @@ -55,6 +55,8 @@ public class CashRecord implements Serializable { private LocalDateTime payTime; // 付款日期(到秒) @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai") private LocalDateTime receivedTime; // 到账日期(到秒) + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai") + private LocalDateTime auditTime; // 状态 & 操作人 private Integer status; // 订单状态 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 a059fdc..98e177e 100644 --- a/src/main/java/com/example/demo/serviceImpl/cash/CashCollectionServiceImpl.java +++ b/src/main/java/com/example/demo/serviceImpl/cash/CashCollectionServiceImpl.java @@ -402,6 +402,9 @@ public User getNameAndMarket(Integer jwcode) { log.error("失败订单ID: {}", failedIds); // 可存入 error_log 表,供人工处理 + + + // 这里选择继续下一批(容忍部分失败) } @@ -452,17 +455,17 @@ public User getNameAndMarket(Integer jwcode) { cashRecord.setPayload("IOS"); break; case 5: - cashRecord.setPayType("Stripe-链接收款"); + cashRecord.setPayType("Stripe"); cashRecord.setReceivedMarket("13"); cashRecord.setPayload("Stripe"); break; case 6: - cashRecord.setPayType("PaymentAsia-链接收款"); + cashRecord.setPayType("PaymentAsia"); cashRecord.setReceivedMarket("13"); cashRecord.setPayload("PaymentAsia"); break; case 7: - cashRecord.setPayType("Ipay88-链接收款"); + cashRecord.setPayType("Ipay88"); cashRecord.setReceivedMarket("5"); cashRecord.setPayload("Ipay88"); break; @@ -479,7 +482,9 @@ public User getNameAndMarket(Integer jwcode) { cashRecord.setFreeGold(0); cashRecord.setPaymentCurrency(""); cashRecord.setPaymentAmount(BigDecimal.valueOf(0)); - cashRecord.setPayTime(LocalDateTime.ofEpochSecond(gOrder.getSuccessTime(), 0, ZoneOffset.UTC)); + //转换时间戳,加上时区偏移 + cashRecord.setPayTime(LocalDateTime.ofEpochSecond(gOrder.getSuccessTime(), 0, ZoneOffset.of("+08:00"))); + cashRecord.setAuditTime(LocalDateTime.ofEpochSecond(gOrder.getSuccessTime(), 0, ZoneOffset.of("+08:00"))); cashRecord.setStatus(3); cashRecord.setSubmitterId(99999); //存入现金库 diff --git a/src/main/resources/cashMapper/CashCollectionMapper.xml b/src/main/resources/cashMapper/CashCollectionMapper.xml index f534bc9..8fe3aeb 100644 --- a/src/main/resources/cashMapper/CashCollectionMapper.xml +++ b/src/main/resources/cashMapper/CashCollectionMapper.xml @@ -231,7 +231,7 @@ add_time,is_synced from g_order where is_synced=0 and state=1 and pay_style in(3,5,6,7,9) - and success_time>1665246960 + and success_time>=1763136000 limit #{size}