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;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai")
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")
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);
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);
}

8
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")

9
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();

3
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);

20
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, "退款金币充值");
}

8
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();
}

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

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

Loading…
Cancel
Save