Browse Source

Merge remote-tracking branch 'origin/milestone-20260128-金币日常优化1.0' into milestone-20260128-金币日常优化1.0

dev
wangguorui 3 weeks ago
parent
commit
94283f7b33
  1. 2
      src/main/java/com/example/demo/Util/GoldTistV2.java
  2. 40
      src/main/java/com/example/demo/controller/coin/AdminController.java
  3. 9
      src/main/java/com/example/demo/controller/coin/ConsumeController.java
  4. 8
      src/main/java/com/example/demo/controller/coin/UserController.java
  5. 29
      src/main/java/com/example/demo/domain/entity/DCUser.java
  6. 28
      src/main/java/com/example/demo/domain/vo/coin/OrderResultVO.java
  7. 2
      src/main/java/com/example/demo/security/SecurityConfig.java
  8. 2
      src/main/java/com/example/demo/service/coin/ConsumeService.java
  9. 3
      src/main/java/com/example/demo/service/coin/UserService.java
  10. 28
      src/main/java/com/example/demo/serviceImpl/coin/ConsumeServiceImpl.java
  11. 5
      src/main/java/com/example/demo/serviceImpl/coin/RechargeServiceImpl.java
  12. 27
      src/main/java/com/example/demo/serviceImpl/coin/UserServiceImpl.java
  13. 6
      src/main/resources/application-dev.yml

2
src/main/java/com/example/demo/Util/GoldTistV2.java

@ -269,7 +269,7 @@ public class GoldTistV2 {
public static void main(String[] args) throws Exception {
//调用demo
addDCCoinNew("94629784",67,20,"123","测试",0,"黄其振","文章11");
addDCCoinNew("90039082",65,-20,"123","测试",0,"黄其振","文章11");
}
//初始化类型

40
src/main/java/com/example/demo/controller/coin/AdminController.java

@ -52,26 +52,26 @@ public class AdminController {
@PostMapping("/login")
public Result login(@RequestBody Admin admin, @RequestHeader(defaultValue = "zh_CN") String lang) {
try {
// // ====== 新增验证码校验逻辑 ======
// if (admin.getCaptcha() == null || admin.getUuid() == null) {
// String errorMsg = "验证码或验证码ID缺失";
// String translatedErrorMsg = languageTranslationUtil.translate(errorMsg, lang);
// return Result.error(translatedErrorMsg);
// }
//
// String cacheCode = redisTemplate.opsForValue().get("CAPTCHA:" + admin.getUuid());
// if (cacheCode == null) {
// String errorMsg = "验证码已过期,请重新获取";
// String translatedErrorMsg = languageTranslationUtil.translate(errorMsg, lang);
// return Result.error(translatedErrorMsg);
// }
//
// if (!cacheCode.equalsIgnoreCase(admin.getCaptcha())) {
// String errorMsg = "验证码错误";
// String translatedErrorMsg = languageTranslationUtil.translate(errorMsg, lang);
// return Result.error(translatedErrorMsg);
// }
// // ====== 验证码校验结束 ======
// ====== 新增验证码校验逻辑 ======
if (admin.getCaptcha() == null || admin.getUuid() == null) {
String errorMsg = "验证码或验证码ID缺失";
String translatedErrorMsg = languageTranslationUtil.translate(errorMsg, lang);
return Result.error(translatedErrorMsg);
}
String cacheCode = redisTemplate.opsForValue().get("CAPTCHA:" + admin.getUuid());
if (cacheCode == null) {
String errorMsg = "验证码已过期,请重新获取";
String translatedErrorMsg = languageTranslationUtil.translate(errorMsg, lang);
return Result.error(translatedErrorMsg);
}
if (!cacheCode.equalsIgnoreCase(admin.getCaptcha())) {
String errorMsg = "验证码错误,请重新输入";
String translatedErrorMsg = languageTranslationUtil.translate(errorMsg, lang);
return Result.error(translatedErrorMsg);
}
// ====== 验证码校验结束 ======
// 解析语言代码
String languageCode = parseLanguageCode(lang);

9
src/main/java/com/example/demo/controller/coin/ConsumeController.java

@ -212,6 +212,15 @@ public class ConsumeController {
// }
// }
@PostMapping("/DCadd")
public Result DCadd(@RequestBody ConsumeUser consumeUser) {
try {
return consumeService.addDC(consumeUser);
} catch (Exception e) {
return Result.error(e.getMessage());
}
}
public Result select(@RequestBody Page page, @RequestHeader(defaultValue = "zh_CN") String lang) {
try {
//页码校验

8
src/main/java/com/example/demo/controller/coin/UserController.java

@ -1,6 +1,7 @@
package com.example.demo.controller.coin;
import com.example.demo.config.interfac.Log;
import com.example.demo.domain.entity.DCUser;
import com.example.demo.domain.entity.User;
import com.example.demo.domain.vo.coin.GoldUser;
import com.example.demo.domain.vo.coin.Result;
@ -37,6 +38,13 @@ public class UserController {
@Autowired
private LanguageTranslationUtil languageTranslationUtil;
// 查找用户
@PostMapping("/DCSelectUser")
public Result DCSelectUser(@RequestBody DCUser dcUser) {
return userService.DCSelectUser(dcUser);
}
//查找用户
@Log("查找客户")
@PostMapping("/selectUser")

29
src/main/java/com/example/demo/domain/entity/DCUser.java

@ -0,0 +1,29 @@
package com.example.demo.domain.entity;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.math.BigDecimal;
/**
* @program: GOLD
* @ClassName DCUser
* @description:
* @author: huangqizhen
* @create: 202602-03 16:21
* @Version 1.0
**/
@Data
@AllArgsConstructor
@NoArgsConstructor
public class DCUser {
private String jwcode;
private String name;
private BigDecimal permanentBean;
private BigDecimal freeBean;
private BigDecimal nowFreeGold;
private BigDecimal nowPermanentGold;
private BigDecimal nowTaskGold;
private BigDecimal nowSumGold;
}

28
src/main/java/com/example/demo/domain/vo/coin/OrderResultVO.java

@ -0,0 +1,28 @@
package com.example.demo.domain.vo.coin;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.Date;
/**
* 新增充值消费返回前端的VO类
*/
@Data
public class OrderResultVO {
// 订单号原有的核心字段
private String orderCoder;
// 时间格式化为前端易读的字符串也可保留LocalDateTime类型
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai")
private Date createTime;
// 快捷构建方法可选简化代码
public static OrderResultVO build(String orderCode, Date time) {
OrderResultVO vo = new OrderResultVO();
vo.setOrderCoder(orderCode); // 拼接前缀
// 格式化时间为yyyy-MM-dd HH:mm:ss格式也可根据前端需求调整
vo.setCreateTime(time);
return vo;
}
}

2
src/main/java/com/example/demo/security/SecurityConfig.java

@ -60,7 +60,7 @@ public class SecurityConfig {
request
.requestMatchers( HttpMethod.POST,
// 用户不登录就可以访问的路径
"/admin/login","/upload/**","/detailY/ERP","/home/java/haiwaiyanfa/gold1/**","/home/java/haiwaiyanfa/**","/statistics/**","/Mysql/**","/Temporary/**","/beanRecharge/addBeanDC","/recharge/addDC","/recharge/addFree","/cashCollection/syncToCashRecord").permitAll()
"/admin/login","/upload/**","/detailY/ERP","/home/java/haiwaiyanfa/gold1/**","/home/java/haiwaiyanfa/**","/statistics/**","/Mysql/**","/Temporary/**","/beanRecharge/addBeanDC","/recharge/addDC","/recharge/addFree","/cashCollection/syncToCashRecord","/user/DCSelectUser","/consume/DCadd").permitAll()
.requestMatchers(HttpMethod.GET, "/captcha").permitAll()
.requestMatchers(
"/error","alipay/**","/upload/**","/home/java/haiwaiyanfa/gold1/**","/home/java/haiwaiyanfa/**"

2
src/main/java/com/example/demo/service/coin/ConsumeService.java

@ -29,6 +29,8 @@ public interface ConsumeService {
//增加消费订单
Result add(ConsumeUser consumeUser);
Result addDC(ConsumeUser consumeUser);
// //增加退款订单
// Result addRefund(ConsumeUser consumeUser);

3
src/main/java/com/example/demo/service/coin/UserService.java

@ -1,5 +1,6 @@
package com.example.demo.service.coin;
import com.example.demo.domain.entity.DCUser;
import com.example.demo.domain.entity.User;
import com.example.demo.domain.vo.coin.Gold;
import com.example.demo.domain.vo.coin.GoldUser;
@ -33,4 +34,6 @@ public interface UserService {
//更新用户的首充时间
void updateFirstRecharge();
Result DCSelectUser(DCUser dcUser);
}

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

@ -4,10 +4,7 @@ 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;
import com.example.demo.domain.vo.coin.Gold;
import com.example.demo.domain.vo.coin.GoldUser;
import com.example.demo.domain.vo.coin.Result;
import com.example.demo.domain.vo.coin.*;
import com.example.demo.exception.SystemException;
import com.example.demo.mapper.coin.ConsumeMapper;
import com.example.demo.mapper.coin.MarketMapper;
@ -254,7 +251,28 @@ public class ConsumeServiceImpl implements ConsumeService {
redService.sendConsumeJwcode(consumeUser.getJwcode(),consumeUser.getRedIds(),userGoldRecord.getLinkId());
// }
return Result.success("XF_" + orderNumber);
//data返回订单号和创建时间
OrderResultVO resultVO = OrderResultVO.build("XF_" + orderNumber,new Date());
return Result.success(resultVO);
}
@Override
public Result addDC(ConsumeUser consumeUser) {
if (consumeUser.getJwcode()==null||consumeUser.getJwcode()<10000000||consumeUser.getJwcode()>99999999){
throw new SystemException("精网号位数小于8位或大于8位");
}
if (consumeUser.getSumGold()==null||consumeUser.getSumGold().compareTo(BigDecimal.ZERO)<0){
throw new SystemException("消费金币不能小于0");
}
String result = GoldTistV2.addDCCoinNew(consumeUser.getJwcode().toString(),68,-consumeUser.getSumGold().doubleValue(),"","DC金币消耗",0,"DC","DC金币消耗");
String cleanResult = result.replaceAll("\\s+", "");
if ("2".equals(cleanResult)) {
return Result.success();
} else {
throw new SystemException(String.format("金币发放失败:类型错误(%S),jwcode=%s", result,consumeUser.getJwcode()));
}
}
//
// @Transactional

5
src/main/java/com/example/demo/serviceImpl/coin/RechargeServiceImpl.java

@ -170,8 +170,9 @@ public class RechargeServiceImpl implements RechargeService {
// 发送到RabbitMQ
rabbitTemplate.convertAndSend(RabbitMQConfig.COIN_RECHARGE_EXCHANGE, "coin.recharge.save", message);
return Result.success("CZ_" + orderNumber);
//data返回订单号和创建时间
OrderResultVO resultVO = OrderResultVO.build("CZ_" + orderNumber,new Date());
return Result.success(resultVO);
}
//根据订单单号获取订单信息重复充值/消费提示
@Override

27
src/main/java/com/example/demo/serviceImpl/coin/UserServiceImpl.java

@ -3,10 +3,13 @@ package com.example.demo.serviceImpl.coin;
import com.example.demo.Util.JWTUtil;
import com.example.demo.Util.LanguageTranslationUtil;
import com.example.demo.domain.entity.Admin;
import com.example.demo.domain.entity.DCUser;
import com.example.demo.domain.entity.User;
import com.example.demo.domain.vo.bean.BeanUserCard;
import com.example.demo.domain.vo.coin.Gold;
import com.example.demo.domain.vo.coin.GoldUser;
import com.example.demo.domain.vo.coin.Result;
import com.example.demo.mapper.bean.BeanUserMapper;
import com.example.demo.mapper.coin.MarketMapper;
import com.example.demo.mapper.coin.UserMapper;
import com.example.demo.service.Temporary.RedService;
@ -44,6 +47,8 @@ public class UserServiceImpl implements UserService {
private RedService redService;
@Autowired
private LanguageTranslationUtil languageTranslationUtil;
@Autowired
private BeanUserMapper beanUserMapper;
//查找用户部分信息
@Override
@ -151,6 +156,28 @@ public class UserServiceImpl implements UserService {
}
}
@Override
public Result DCSelectUser(DCUser dcUser) {
if(dcUser.getJwcode() == null||dcUser.getJwcode().equals("")){
return Result.error("精网号有误!请检查");
}
int userCount = userMapper.checkUserExists(dcUser.getJwcode());
if (userCount == 0) {
return Result.error("精网号有误!请检查");
}
GoldUser goldUser = userMapper.selectUser(dcUser.getJwcode());
BeanUserCard user = beanUserMapper.userCard(dcUser.getJwcode());
dcUser.setJwcode(String.valueOf(goldUser.getJwcode()));
dcUser.setName(goldUser.getName());
dcUser.setPermanentBean(BigDecimal.valueOf(user.getPermanentBean()));
dcUser.setFreeBean(BigDecimal.valueOf(user.getFreeBean()));
dcUser.setNowFreeGold(goldUser.getNowFreeGold());
dcUser.setNowPermanentGold(goldUser.getNowPermanentGold());
dcUser.setNowTaskGold(goldUser.getNowTaskGold());
dcUser.setNowSumGold(goldUser.getNowSumGold());
return Result.success(dcUser);
}
//查找用户金币
@Override
public GoldUser selectgold(String jwcode) {

6
src/main/resources/application-dev.yml

@ -81,9 +81,9 @@ spring:
rabbitmq:
host: 54.255.212.181
port: 5672
username: gold
password: gold
virtual-host: /
username: dong
password: 123
virtual-host: mq
listener:
simple:
trusted-packages: com.example.demo.domain.DTO

Loading…
Cancel
Save