From fe311e80b8dda3cad175c2677584b46d92e25151 Mon Sep 17 00:00:00 2001 From: huangqizhen <15552608129@163.com> Date: Wed, 7 Jan 2026 10:15:22 +0800 Subject: [PATCH] =?UTF-8?q?1.7=20=E7=BA=A2=E5=8C=85=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E5=90=8C=E6=AD=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/example/demo/Util/SimpleIdGenerator.java | 29 ++++++++++++++++++++++ .../com/example/demo/domain/entity/CashRecord.java | 2 ++ .../example/demo/domain/entity/UserGoldRecord.java | 2 ++ .../example/demo/service/Temporary/RedService.java | 4 +-- .../demo/serviceImpl/Temporary/RedServiceImpl.java | 8 +++--- .../serviceImpl/cash/CashAuditServiceImpl.java | 9 +++++-- .../serviceImpl/cash/CashRefundServiceImpl.java | 3 ++- .../demo/serviceImpl/coin/AuditServiceImpl.java | 20 ++++++++------- .../demo/serviceImpl/coin/ConsumeServiceImpl.java | 8 +++--- src/main/resources/mapper/RechargeMapper.xml | 6 +++-- 10 files changed, 68 insertions(+), 23 deletions(-) create mode 100644 src/main/java/com/example/demo/Util/SimpleIdGenerator.java diff --git a/src/main/java/com/example/demo/Util/SimpleIdGenerator.java b/src/main/java/com/example/demo/Util/SimpleIdGenerator.java new file mode 100644 index 0000000..d2d15a8 --- /dev/null +++ b/src/main/java/com/example/demo/Util/SimpleIdGenerator.java @@ -0,0 +1,29 @@ +package com.example.demo.Util; +import java.util.Random; +/** + * @program: GOLD + * @ClassName SimpleIdGenerator + * @description: + * @author: huangqizhen + * @create: 2026−01-07 09:23 + * @Version 1.0 + **/ + public class SimpleIdGenerator { + // 生成10位数字ID + public static String generateId() { + // 时间戳后6位 + 随机数4位 + long timestamp = System.currentTimeMillis() % 1000000; // 取后6位 + int random = new Random().nextInt(10000); // 4位随机数 + + // 组合成10位,不足前面补0 + return String.format("%06d%04d", timestamp, random); + } + + // 使用示例 + public static void main(String[] args) { + for (int i = 0; i < 10; i++) { + System.out.println(generateId()); // 如:4587123456 + } + } + } + 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..6f2de17 100644 --- a/src/main/java/com/example/demo/domain/entity/CashRecord.java +++ b/src/main/java/com/example/demo/domain/entity/CashRecord.java @@ -84,4 +84,6 @@ public class CashRecord implements Serializable { private LocalDateTime createTime; @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai") private LocalDateTime updateTime; + @JsonFormat + private String linkId; } diff --git a/src/main/java/com/example/demo/domain/entity/UserGoldRecord.java b/src/main/java/com/example/demo/domain/entity/UserGoldRecord.java index 8c4aaaa..7e0411b 100644 --- a/src/main/java/com/example/demo/domain/entity/UserGoldRecord.java +++ b/src/main/java/com/example/demo/domain/entity/UserGoldRecord.java @@ -51,4 +51,6 @@ public class UserGoldRecord implements Serializable { @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai") private Date auditTime; // 审核时间 + @JsonFormat + private String LinkId; } \ No newline at end of file diff --git a/src/main/java/com/example/demo/service/Temporary/RedService.java b/src/main/java/com/example/demo/service/Temporary/RedService.java index 8d7f250..cb0cb82 100644 --- a/src/main/java/com/example/demo/service/Temporary/RedService.java +++ b/src/main/java/com/example/demo/service/Temporary/RedService.java @@ -16,8 +16,8 @@ public interface RedService { BigDecimal selectSum(Integer jwcode, Integer type); void addAmount(Integer jwcode,BigDecimal sum, Integer type); - String sendJwcode(Integer jwcode); + String sendJwcode(Integer jwcode,String orderId); BigDecimal selectRedSum(Integer jwcode); - String sendConsumeJwcode(Integer jwcode, BigDecimal price); + String sendConsumeJwcode(Integer jwcode, BigDecimal price,String orderId); } diff --git a/src/main/java/com/example/demo/serviceImpl/Temporary/RedServiceImpl.java b/src/main/java/com/example/demo/serviceImpl/Temporary/RedServiceImpl.java index 0260142..f91447e 100644 --- a/src/main/java/com/example/demo/serviceImpl/Temporary/RedServiceImpl.java +++ b/src/main/java/com/example/demo/serviceImpl/Temporary/RedServiceImpl.java @@ -91,9 +91,9 @@ public class RedServiceImpl implements RedService { */ @Override - public String sendJwcode(Integer jwcode) { + public String sendJwcode(Integer jwcode,String orderId) { try { - String body = JSON.toJSONString(java.util.Map.of("jwcode", jwcode)); + String body = JSON.toJSONString(java.util.Map.of("jwcode", jwcode,"order_id",orderId)); HttpRequest request = HttpRequest.newBuilder() .uri(URI.create(BASE_URLProd + PATH)) //URL记得换 @@ -113,9 +113,9 @@ public class RedServiceImpl implements RedService { } } @Override - public String sendConsumeJwcode(Integer jwcode, BigDecimal price) { + public String sendConsumeJwcode(Integer jwcode, BigDecimal price,String orderId) { try { - String body = JSON.toJSONString(java.util.Map.of("jwcode", jwcode,"discount",price)); + String body = JSON.toJSONString(java.util.Map.of("jwcode", jwcode,"discount",price,"order_id",orderId)); HttpRequest request = HttpRequest.newBuilder() .uri(URI.create(BASE_URLProd + CONSUME_PATH)) //URL记得换 .header("Content-Type", "application/json") 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 025f344..b9357f3 100644 --- a/src/main/java/com/example/demo/serviceImpl/cash/CashAuditServiceImpl.java +++ b/src/main/java/com/example/demo/serviceImpl/cash/CashAuditServiceImpl.java @@ -1,6 +1,7 @@ package com.example.demo.serviceImpl.cash; import com.example.demo.Util.GoldTistV2; +import com.example.demo.Util.SimpleIdGenerator; import com.example.demo.config.RabbitMQConfig; import com.example.demo.domain.entity.CashRecord; import com.example.demo.domain.entity.User; @@ -46,6 +47,7 @@ public class CashAuditServiceImpl implements CashAuditService { @Autowired private RabbitTemplate rabbitTemplate; + @Transactional @Override public boolean auditCollection(String token, Integer auditId, String orderCode, Integer action, String rejectReason) { @@ -101,13 +103,16 @@ public class CashAuditServiceImpl implements CashAuditService { rechargeOrder.setType((byte) 0); rechargeOrder.setAuditStatus(1); rechargeOrder.setCreateTime(new Date()); + order.setLinkId(SimpleIdGenerator.generateId()); + rechargeOrder.setLinkId(order.getLinkId()); rechargeMapper.add(rechargeOrder); + //往ERP加一条充值数据 GoldTistV2.addCoinNew(order.getJwcode().toString(), 64, //充值永久金币 - (double) (order.getPermanentGold()) / 100, + (double) (order.getPermanentGold()) / 100,order.getLinkId(), order.getRemark(), (double) (order.getPermanentGold()) / 100, auditName, "金币充值"); GoldTistV2.addCoinNew(order.getJwcode().toString(), 63, //充值免费 - (double) (order.getFreeGold()) / 100, + (double) (order.getFreeGold()) / 100,order.getLinkId(), order.getRemark(), 0, auditName, "金币充值"); //修改用户余额,添加金币 User user = new User(); diff --git a/src/main/java/com/example/demo/serviceImpl/cash/CashRefundServiceImpl.java b/src/main/java/com/example/demo/serviceImpl/cash/CashRefundServiceImpl.java index 2e9cc66..9df81be 100644 --- a/src/main/java/com/example/demo/serviceImpl/cash/CashRefundServiceImpl.java +++ b/src/main/java/com/example/demo/serviceImpl/cash/CashRefundServiceImpl.java @@ -1,4 +1,5 @@ package com.example.demo.serviceImpl.cash; +import com.example.demo.Util.SimpleIdGenerator; import com.example.demo.domain.entity.Admin; import com.example.demo.Util.BusinessException; import com.example.demo.Util.GoldTistV2; @@ -379,7 +380,7 @@ CashRecordDone cashRecordDone1 = new CashRecordDone(); user.setCurrentFreeDecember(BigDecimal.valueOf(-userGoldRecord.getFreeDecember())); //当前十二月免费金币 auditMapper.updateUserGold(user); GoldTistV2.addCoinNew(userGoldRecord.getJwcode().toString(), 58, //退款免费+永久金币-充值 - (double) (userGoldRecord.getFreeDecember()+userGoldRecord.getFreeJune()+userGoldRecord.getPermanentGold() ) /100, + (double) (userGoldRecord.getFreeDecember()+userGoldRecord.getFreeJune()+userGoldRecord.getPermanentGold() ) /100, SimpleIdGenerator.generateId(), userGoldRecord.getRemark(),(double) userGoldRecord.getPermanentGold() / 100, auditName, "退款金币充值");} cashRefundMapper.updateAudit(cashRecordDone); diff --git a/src/main/java/com/example/demo/serviceImpl/coin/AuditServiceImpl.java b/src/main/java/com/example/demo/serviceImpl/coin/AuditServiceImpl.java index d54eed7..e394849 100644 --- a/src/main/java/com/example/demo/serviceImpl/coin/AuditServiceImpl.java +++ b/src/main/java/com/example/demo/serviceImpl/coin/AuditServiceImpl.java @@ -1,6 +1,7 @@ package com.example.demo.serviceImpl.coin; import com.example.demo.Util.GoldTistV2; +import com.example.demo.Util.SimpleIdGenerator; import com.example.demo.domain.entity.User; import com.example.demo.domain.entity.UserGoldRecord; import com.example.demo.domain.vo.coin.Gold; @@ -105,6 +106,7 @@ public class AuditServiceImpl implements AuditService { update.setCurrentFreeDecember(BigDecimal.valueOf(order.getFreeDecember())); //当前十二月免费金币 update.setCurrentTaskGold(BigDecimal.valueOf(order.getTaskGold())); //当前任务金币 update.setRechargeNum(1); //充值次数加一 + order.setLinkId(SimpleIdGenerator.generateId()); /* 判断是否更新首充时间 1.用户当前首充时间为空 @@ -130,7 +132,7 @@ public class AuditServiceImpl implements AuditService { log.warn("红包累加失败,主流程继续 | jwcode={}", order.getJwcode(), e); } try { - redService.sendJwcode(order.getJwcode()); + redService.sendJwcode(order.getJwcode(),order.getLinkId()); log.info("精网号发送成功 | jwcode={}", order.getJwcode()); }catch (Exception e){ log.warn("精网号发送失败,主流程继续 | jwcode={}", order.getJwcode(), e); @@ -140,10 +142,10 @@ public class AuditServiceImpl implements AuditService { //erp增加充值数据 GoldTistV2.addCoinNew(order.getJwcode().toString(), 64, //充值永久金币 - (double) (order.getPermanentGold() ) /100, - order.getRemark(),(double) (order.getPermanentGold() ) /100, auditName, "金币充值"); + (double) (order.getPermanentGold() ) /100, order.getLinkId() + ,order.getRemark(),(double) (order.getPermanentGold() ) /100, auditName, "金币充值"); GoldTistV2.addCoinNew(order.getJwcode().toString(), 63, //充值免费 - (double) (order.getFreeDecember()+order.getFreeJune() ) /100, + (double) (order.getFreeDecember()+order.getFreeJune() ) /100, order.getLinkId(), order.getRemark(),0, auditName, "金币充值"); }else if (order.getType()==2) { //退款 @@ -161,22 +163,22 @@ public class AuditServiceImpl implements AuditService { //erp增加退款数据 if(oldOrder.getType()==1){ //消费 GoldTistV2.addCoinNew(order.getJwcode().toString(), 55, //退款免费-商品 - (double) (order.getFreeDecember()+order.getFreeJune()) /100, + (double) (order.getFreeDecember()+order.getFreeJune()) /100,SimpleIdGenerator.generateId(), order.getRemark(),0, auditName, "退款商品"+order.getGoodsName()); GoldTistV2.addCoinNew(order.getJwcode().toString(), 56, //退款永久-商品 - (double) (order.getPermanentGold()) /100, + (double) (order.getPermanentGold()) /100,SimpleIdGenerator.generateId(), order.getRemark(),order.getPermanentGold(), auditName, "退款商品"+order.getGoodsName()); GoldTistV2.addCoinNew(order.getJwcode().toString(), 57, //退款任务-商品 - (double) (order.getTaskGold() ) /100, + (double) (order.getTaskGold() ) /100,SimpleIdGenerator.generateId(), order.getRemark(),0, auditName, "退款商品"+order.getGoodsName()); } else if (oldOrder.getType()==0){//充值金币 if(order.getTaskGold()==0){ //无任务金币统一走免费+永久 GoldTistV2.addCoinNew(order.getJwcode().toString(), 58, //退款免费+永久金币-充值 - (double) (order.getFreeDecember()+order.getFreeJune()+order.getPermanentGold() ) /100, + (double) (order.getFreeDecember()+order.getFreeJune()+order.getPermanentGold() ) /100,SimpleIdGenerator.generateId(), order.getRemark(),(double) order.getPermanentGold() / 100, auditName, "退款金币充值");} if (order.getTaskGold()!=0) GoldTistV2.addCoinNew(order.getJwcode().toString(), 59, //退款任务+永久金币-充值 - (double) (order.getTaskGold()+order.getPermanentGold() ) /100, + (double) (order.getTaskGold()+order.getPermanentGold() ) /100,SimpleIdGenerator.generateId(), order.getRemark(),(double) order.getPermanentGold() / 100, auditName, "退款金币充值"); } 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 5c0ad1c..d902835 100644 --- a/src/main/java/com/example/demo/serviceImpl/coin/ConsumeServiceImpl.java +++ b/src/main/java/com/example/demo/serviceImpl/coin/ConsumeServiceImpl.java @@ -1,6 +1,7 @@ package com.example.demo.serviceImpl.coin; import com.example.demo.Util.GoldTistV2; +import com.example.demo.Util.SimpleIdGenerator; import com.example.demo.domain.entity.User; import com.example.demo.domain.entity.UserGoldRecord; import com.example.demo.domain.vo.coin.ConsumeUser; @@ -161,11 +162,12 @@ public class ConsumeServiceImpl implements ConsumeService { userGoldRecord.setAuditStatus(1); userGoldRecord.setCreateTime(new Date()); userGoldRecord.setPayTime(new Date()); + userGoldRecord.setLinkId(SimpleIdGenerator.generateId()); // if(consumeUser.getJwcode().equals(94226013)){ String result= GoldTistV2.addCoinNew(userGoldRecord.getJwcode().toString(), 65, (double) (userGoldRecord.getPermanentGold() + userGoldRecord.getFreeDecember() + userGoldRecord.getFreeJune() + userGoldRecord.getTaskGold()) / 100, - userGoldRecord.getRemark(),0, consumeUser.getAdminName(), userGoldRecord.getGoodsName()); + userGoldRecord.getLinkId(), userGoldRecord.getRemark(),0, consumeUser.getAdminName(), userGoldRecord.getGoodsName()); // System.out.println("9"+result+"9"); result = result.replaceAll("[\r\n]", ""); @@ -173,7 +175,7 @@ public class ConsumeServiceImpl implements ConsumeService { if(!result.equals("2")){ result= GoldTistV2.addCoinNew(userGoldRecord.getJwcode().toString(), 65, (double) (userGoldRecord.getPermanentGold() + userGoldRecord.getFreeDecember() + userGoldRecord.getFreeJune() + userGoldRecord.getTaskGold()) / 100, - userGoldRecord.getRemark(), 0, consumeUser.getAdminName(), userGoldRecord.getGoodsName()); + userGoldRecord.getLinkId(), userGoldRecord.getRemark(), 0, consumeUser.getAdminName(), userGoldRecord.getGoodsName()); //返回状态1加成功2减成功其他失败 -5 金币不足 -6 类型错误 -7签名错误 if(!result.equals("2")){ String errorMsg = "减金币失败,数据未进erp,返回状态:" + result; @@ -206,7 +208,7 @@ public class ConsumeServiceImpl implements ConsumeService { } - redService.sendConsumeJwcode(consumeUser.getJwcode(),(consumeUser.getPrice().subtract(consumeUser.getSumGold())).divide(BigDecimal.valueOf(100), 2, RoundingMode.HALF_UP)); + redService.sendConsumeJwcode(consumeUser.getJwcode(),(consumeUser.getPrice().subtract(consumeUser.getSumGold())).divide(BigDecimal.valueOf(100), 2, RoundingMode.HALF_UP),userGoldRecord.getLinkId()); // } return Result.success(); } diff --git a/src/main/resources/mapper/RechargeMapper.xml b/src/main/resources/mapper/RechargeMapper.xml index 73f1f17..bb8aca2 100644 --- a/src/main/resources/mapper/RechargeMapper.xml +++ b/src/main/resources/mapper/RechargeMapper.xml @@ -226,7 +226,8 @@ type, audit_status, create_time, - is_refund + is_refund, + link_id VALUES @@ -248,7 +249,8 @@ #{type}, #{auditStatus}, #{createTime}, - 0 + 0, + #{linkId}