Browse Source

1.7 红包数据同步

huangqizheng/feature-20260106155423-红包修改
huangqizhen 4 days ago
parent
commit
fe311e80b8
  1. 29
      src/main/java/com/example/demo/Util/SimpleIdGenerator.java
  2. 2
      src/main/java/com/example/demo/domain/entity/CashRecord.java
  3. 2
      src/main/java/com/example/demo/domain/entity/UserGoldRecord.java
  4. 4
      src/main/java/com/example/demo/service/Temporary/RedService.java
  5. 8
      src/main/java/com/example/demo/serviceImpl/Temporary/RedServiceImpl.java
  6. 9
      src/main/java/com/example/demo/serviceImpl/cash/CashAuditServiceImpl.java
  7. 3
      src/main/java/com/example/demo/serviceImpl/cash/CashRefundServiceImpl.java
  8. 20
      src/main/java/com/example/demo/serviceImpl/coin/AuditServiceImpl.java
  9. 8
      src/main/java/com/example/demo/serviceImpl/coin/ConsumeServiceImpl.java
  10. 6
      src/main/resources/mapper/RechargeMapper.xml

29
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: 202601-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
}
}
}

2
src/main/java/com/example/demo/domain/entity/CashRecord.java

@ -84,4 +84,6 @@ public class CashRecord implements Serializable {
private LocalDateTime createTime; private LocalDateTime createTime;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai")
private LocalDateTime updateTime; private LocalDateTime updateTime;
@JsonFormat
private String linkId;
} }

2
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") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai")
private Date auditTime; // 审核时间 private Date auditTime; // 审核时间
@JsonFormat
private String LinkId;
} }

4
src/main/java/com/example/demo/service/Temporary/RedService.java

@ -16,8 +16,8 @@ public interface RedService {
BigDecimal selectSum(Integer jwcode, Integer type); BigDecimal selectSum(Integer jwcode, Integer type);
void addAmount(Integer jwcode,BigDecimal sum, Integer type); void addAmount(Integer jwcode,BigDecimal sum, Integer type);
String sendJwcode(Integer jwcode);
String sendJwcode(Integer jwcode,String orderId);
BigDecimal selectRedSum(Integer jwcode); BigDecimal selectRedSum(Integer jwcode);
String sendConsumeJwcode(Integer jwcode, BigDecimal price);
String sendConsumeJwcode(Integer jwcode, BigDecimal price,String orderId);
} }

8
src/main/java/com/example/demo/serviceImpl/Temporary/RedServiceImpl.java

@ -91,9 +91,9 @@ public class RedServiceImpl implements RedService {
*/ */
@Override @Override
public String sendJwcode(Integer jwcode) {
public String sendJwcode(Integer jwcode,String orderId) {
try { 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() HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create(BASE_URLProd + PATH)) //URL记得换 .uri(URI.create(BASE_URLProd + PATH)) //URL记得换
@ -113,9 +113,9 @@ public class RedServiceImpl implements RedService {
} }
} }
@Override @Override
public String sendConsumeJwcode(Integer jwcode, BigDecimal price) {
public String sendConsumeJwcode(Integer jwcode, BigDecimal price,String orderId) {
try { 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() HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create(BASE_URLProd + CONSUME_PATH)) //URL记得换 .uri(URI.create(BASE_URLProd + CONSUME_PATH)) //URL记得换
.header("Content-Type", "application/json") .header("Content-Type", "application/json")

9
src/main/java/com/example/demo/serviceImpl/cash/CashAuditServiceImpl.java

@ -1,6 +1,7 @@
package com.example.demo.serviceImpl.cash; package com.example.demo.serviceImpl.cash;
import com.example.demo.Util.GoldTistV2; import com.example.demo.Util.GoldTistV2;
import com.example.demo.Util.SimpleIdGenerator;
import com.example.demo.config.RabbitMQConfig; import com.example.demo.config.RabbitMQConfig;
import com.example.demo.domain.entity.CashRecord; import com.example.demo.domain.entity.CashRecord;
import com.example.demo.domain.entity.User; import com.example.demo.domain.entity.User;
@ -46,6 +47,7 @@ public class CashAuditServiceImpl implements CashAuditService {
@Autowired @Autowired
private RabbitTemplate rabbitTemplate; private RabbitTemplate rabbitTemplate;
@Transactional @Transactional
@Override @Override
public boolean auditCollection(String token, Integer auditId, String orderCode, Integer action, String rejectReason) { 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.setType((byte) 0);
rechargeOrder.setAuditStatus(1); rechargeOrder.setAuditStatus(1);
rechargeOrder.setCreateTime(new Date()); rechargeOrder.setCreateTime(new Date());
order.setLinkId(SimpleIdGenerator.generateId());
rechargeOrder.setLinkId(order.getLinkId());
rechargeMapper.add(rechargeOrder); rechargeMapper.add(rechargeOrder);
//往ERP加一条充值数据 //往ERP加一条充值数据
GoldTistV2.addCoinNew(order.getJwcode().toString(), 64, //充值永久金币 GoldTistV2.addCoinNew(order.getJwcode().toString(), 64, //充值永久金币
(double) (order.getPermanentGold()) / 100,
(double) (order.getPermanentGold()) / 100,order.getLinkId(),
order.getRemark(), (double) (order.getPermanentGold()) / 100, auditName, "金币充值"); order.getRemark(), (double) (order.getPermanentGold()) / 100, auditName, "金币充值");
GoldTistV2.addCoinNew(order.getJwcode().toString(), 63, //充值免费 GoldTistV2.addCoinNew(order.getJwcode().toString(), 63, //充值免费
(double) (order.getFreeGold()) / 100,
(double) (order.getFreeGold()) / 100,order.getLinkId(),
order.getRemark(), 0, auditName, "金币充值"); order.getRemark(), 0, auditName, "金币充值");
//修改用户余额添加金币 //修改用户余额添加金币
User user = new User(); User user = new User();

3
src/main/java/com/example/demo/serviceImpl/cash/CashRefundServiceImpl.java

@ -1,4 +1,5 @@
package com.example.demo.serviceImpl.cash; package com.example.demo.serviceImpl.cash;
import com.example.demo.Util.SimpleIdGenerator;
import com.example.demo.domain.entity.Admin; import com.example.demo.domain.entity.Admin;
import com.example.demo.Util.BusinessException; import com.example.demo.Util.BusinessException;
import com.example.demo.Util.GoldTistV2; import com.example.demo.Util.GoldTistV2;
@ -379,7 +380,7 @@ CashRecordDone cashRecordDone1 = new CashRecordDone();
user.setCurrentFreeDecember(BigDecimal.valueOf(-userGoldRecord.getFreeDecember())); //当前十二月免费金币 user.setCurrentFreeDecember(BigDecimal.valueOf(-userGoldRecord.getFreeDecember())); //当前十二月免费金币
auditMapper.updateUserGold(user); auditMapper.updateUserGold(user);
GoldTistV2.addCoinNew(userGoldRecord.getJwcode().toString(), 58, //退款免费+永久金币-充值 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, "退款金币充值");} userGoldRecord.getRemark(),(double) userGoldRecord.getPermanentGold() / 100, auditName, "退款金币充值");}
cashRefundMapper.updateAudit(cashRecordDone); cashRefundMapper.updateAudit(cashRecordDone);

20
src/main/java/com/example/demo/serviceImpl/coin/AuditServiceImpl.java

@ -1,6 +1,7 @@
package com.example.demo.serviceImpl.coin; package com.example.demo.serviceImpl.coin;
import com.example.demo.Util.GoldTistV2; 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.User;
import com.example.demo.domain.entity.UserGoldRecord; import com.example.demo.domain.entity.UserGoldRecord;
import com.example.demo.domain.vo.coin.Gold; import com.example.demo.domain.vo.coin.Gold;
@ -105,6 +106,7 @@ public class AuditServiceImpl implements AuditService {
update.setCurrentFreeDecember(BigDecimal.valueOf(order.getFreeDecember())); //当前十二月免费金币 update.setCurrentFreeDecember(BigDecimal.valueOf(order.getFreeDecember())); //当前十二月免费金币
update.setCurrentTaskGold(BigDecimal.valueOf(order.getTaskGold())); //当前任务金币 update.setCurrentTaskGold(BigDecimal.valueOf(order.getTaskGold())); //当前任务金币
update.setRechargeNum(1); //充值次数加一 update.setRechargeNum(1); //充值次数加一
order.setLinkId(SimpleIdGenerator.generateId());
/* /*
判断是否更新首充时间 判断是否更新首充时间
1.用户当前首充时间为空 1.用户当前首充时间为空
@ -130,7 +132,7 @@ public class AuditServiceImpl implements AuditService {
log.warn("红包累加失败,主流程继续 | jwcode={}", order.getJwcode(), e); log.warn("红包累加失败,主流程继续 | jwcode={}", order.getJwcode(), e);
} }
try { try {
redService.sendJwcode(order.getJwcode());
redService.sendJwcode(order.getJwcode(),order.getLinkId());
log.info("精网号发送成功 | jwcode={}", order.getJwcode()); log.info("精网号发送成功 | jwcode={}", order.getJwcode());
}catch (Exception e){ }catch (Exception e){
log.warn("精网号发送失败,主流程继续 | jwcode={}", order.getJwcode(), e); log.warn("精网号发送失败,主流程继续 | jwcode={}", order.getJwcode(), e);
@ -140,10 +142,10 @@ public class AuditServiceImpl implements AuditService {
//erp增加充值数据 //erp增加充值数据
GoldTistV2.addCoinNew(order.getJwcode().toString(), 64, //充值永久金币 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, //充值免费 GoldTistV2.addCoinNew(order.getJwcode().toString(), 63, //充值免费
(double) (order.getFreeDecember()+order.getFreeJune() ) /100,
(double) (order.getFreeDecember()+order.getFreeJune() ) /100, order.getLinkId(),
order.getRemark(),0, auditName, "金币充值"); order.getRemark(),0, auditName, "金币充值");
}else if (order.getType()==2) { //退款 }else if (order.getType()==2) { //退款
@ -161,22 +163,22 @@ public class AuditServiceImpl implements AuditService {
//erp增加退款数据 //erp增加退款数据
if(oldOrder.getType()==1){ //消费 if(oldOrder.getType()==1){ //消费
GoldTistV2.addCoinNew(order.getJwcode().toString(), 55, //退款免费-商品 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()); order.getRemark(),0, auditName, "退款商品"+order.getGoodsName());
GoldTistV2.addCoinNew(order.getJwcode().toString(), 56, //退款永久-商品 GoldTistV2.addCoinNew(order.getJwcode().toString(), 56, //退款永久-商品
(double) (order.getPermanentGold()) /100,
(double) (order.getPermanentGold()) /100,SimpleIdGenerator.generateId(),
order.getRemark(),order.getPermanentGold(), auditName, "退款商品"+order.getGoodsName()); order.getRemark(),order.getPermanentGold(), auditName, "退款商品"+order.getGoodsName());
GoldTistV2.addCoinNew(order.getJwcode().toString(), 57, //退款任务-商品 GoldTistV2.addCoinNew(order.getJwcode().toString(), 57, //退款任务-商品
(double) (order.getTaskGold() ) /100,
(double) (order.getTaskGold() ) /100,SimpleIdGenerator.generateId(),
order.getRemark(),0, auditName, "退款商品"+order.getGoodsName()); order.getRemark(),0, auditName, "退款商品"+order.getGoodsName());
} else if (oldOrder.getType()==0){//充值金币 } else if (oldOrder.getType()==0){//充值金币
if(order.getTaskGold()==0){ //无任务金币统一走免费+永久 if(order.getTaskGold()==0){ //无任务金币统一走免费+永久
GoldTistV2.addCoinNew(order.getJwcode().toString(), 58, //退款免费+永久金币-充值 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, "退款金币充值");} order.getRemark(),(double) order.getPermanentGold() / 100, auditName, "退款金币充值");}
if (order.getTaskGold()!=0) if (order.getTaskGold()!=0)
GoldTistV2.addCoinNew(order.getJwcode().toString(), 59, //退款任务+永久金币-充值 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, "退款金币充值"); order.getRemark(),(double) order.getPermanentGold() / 100, auditName, "退款金币充值");
} }

8
src/main/java/com/example/demo/serviceImpl/coin/ConsumeServiceImpl.java

@ -1,6 +1,7 @@
package com.example.demo.serviceImpl.coin; package com.example.demo.serviceImpl.coin;
import com.example.demo.Util.GoldTistV2; 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.User;
import com.example.demo.domain.entity.UserGoldRecord; import com.example.demo.domain.entity.UserGoldRecord;
import com.example.demo.domain.vo.coin.ConsumeUser; import com.example.demo.domain.vo.coin.ConsumeUser;
@ -161,11 +162,12 @@ public class ConsumeServiceImpl implements ConsumeService {
userGoldRecord.setAuditStatus(1); userGoldRecord.setAuditStatus(1);
userGoldRecord.setCreateTime(new Date()); userGoldRecord.setCreateTime(new Date());
userGoldRecord.setPayTime(new Date()); userGoldRecord.setPayTime(new Date());
userGoldRecord.setLinkId(SimpleIdGenerator.generateId());
// if(consumeUser.getJwcode().equals(94226013)){ // if(consumeUser.getJwcode().equals(94226013)){
String result= GoldTistV2.addCoinNew(userGoldRecord.getJwcode().toString(), 65, String result= GoldTistV2.addCoinNew(userGoldRecord.getJwcode().toString(), 65,
(double) (userGoldRecord.getPermanentGold() + userGoldRecord.getFreeDecember() + userGoldRecord.getFreeJune() + userGoldRecord.getTaskGold()) / 100, (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"); // System.out.println("9"+result+"9");
result = result.replaceAll("[\r\n]", ""); result = result.replaceAll("[\r\n]", "");
@ -173,7 +175,7 @@ public class ConsumeServiceImpl implements ConsumeService {
if(!result.equals("2")){ if(!result.equals("2")){
result= GoldTistV2.addCoinNew(userGoldRecord.getJwcode().toString(), 65, result= GoldTistV2.addCoinNew(userGoldRecord.getJwcode().toString(), 65,
(double) (userGoldRecord.getPermanentGold() + userGoldRecord.getFreeDecember() + userGoldRecord.getFreeJune() + userGoldRecord.getTaskGold()) / 100, (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签名错误 //返回状态1加成功2减成功其他失败 -5 金币不足 -6 类型错误 -7签名错误
if(!result.equals("2")){ if(!result.equals("2")){
String errorMsg = "减金币失败,数据未进erp,返回状态:" + result; 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(); return Result.success();
} }

6
src/main/resources/mapper/RechargeMapper.xml

@ -226,7 +226,8 @@
type, type,
audit_status, audit_status,
create_time, create_time,
is_refund
is_refund,
link_id
</trim> </trim>
VALUES VALUES
<trim prefix="(" suffix=")" suffixOverrides=","> <trim prefix="(" suffix=")" suffixOverrides=",">
@ -248,7 +249,8 @@
#{type}, #{type},
#{auditStatus}, #{auditStatus},
#{createTime}, #{createTime},
0
0,
#{linkId}
</trim> </trim>
</insert> </insert>

Loading…
Cancel
Save