From 6ee01a0282d010e0a87e4ee9743019a49dbf005b Mon Sep 17 00:00:00 2001 From: huangqizhen <15552608129@163.com> Date: Wed, 4 Feb 2026 13:32:26 +0800 Subject: [PATCH 1/2] =?UTF-8?q?2.4=20=E9=87=91=E5=B8=81=E9=87=91=E8=B1=86D?= =?UTF-8?q?C=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/example/demo/Util/GoldTistV2.java | 2 +- .../demo/controller/coin/AdminController.java | 40 +++++++++++----------- .../demo/controller/coin/ConsumeController.java | 9 +++++ .../demo/controller/coin/UserController.java | 8 +++++ .../com/example/demo/domain/entity/DCUser.java | 29 ++++++++++++++++ .../com/example/demo/security/SecurityConfig.java | 2 +- .../example/demo/service/coin/ConsumeService.java | 2 ++ .../com/example/demo/service/coin/UserService.java | 3 ++ .../demo/serviceImpl/coin/ConsumeServiceImpl.java | 19 ++++++++++ .../demo/serviceImpl/coin/UserServiceImpl.java | 27 +++++++++++++++ src/main/resources/application-dev.yml | 6 ++-- 11 files changed, 122 insertions(+), 25 deletions(-) create mode 100644 src/main/java/com/example/demo/domain/entity/DCUser.java diff --git a/src/main/java/com/example/demo/Util/GoldTistV2.java b/src/main/java/com/example/demo/Util/GoldTistV2.java index 42d3c74..d113b6b 100644 --- a/src/main/java/com/example/demo/Util/GoldTistV2.java +++ b/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"); } //初始化类型 diff --git a/src/main/java/com/example/demo/controller/coin/AdminController.java b/src/main/java/com/example/demo/controller/coin/AdminController.java index 3c1e41d..733e458 100644 --- a/src/main/java/com/example/demo/controller/coin/AdminController.java +++ b/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); diff --git a/src/main/java/com/example/demo/controller/coin/ConsumeController.java b/src/main/java/com/example/demo/controller/coin/ConsumeController.java index 8e2cb76..d28b884 100644 --- a/src/main/java/com/example/demo/controller/coin/ConsumeController.java +++ b/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 { //页码校验 diff --git a/src/main/java/com/example/demo/controller/coin/UserController.java b/src/main/java/com/example/demo/controller/coin/UserController.java index 439cd30..16511b4 100644 --- a/src/main/java/com/example/demo/controller/coin/UserController.java +++ b/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") diff --git a/src/main/java/com/example/demo/domain/entity/DCUser.java b/src/main/java/com/example/demo/domain/entity/DCUser.java new file mode 100644 index 0000000..7a00b23 --- /dev/null +++ b/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: 2026−02-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; +} diff --git a/src/main/java/com/example/demo/security/SecurityConfig.java b/src/main/java/com/example/demo/security/SecurityConfig.java index b288eb0..49babd7 100644 --- a/src/main/java/com/example/demo/security/SecurityConfig.java +++ b/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/**" diff --git a/src/main/java/com/example/demo/service/coin/ConsumeService.java b/src/main/java/com/example/demo/service/coin/ConsumeService.java index cf657ea..81372b8 100644 --- a/src/main/java/com/example/demo/service/coin/ConsumeService.java +++ b/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); diff --git a/src/main/java/com/example/demo/service/coin/UserService.java b/src/main/java/com/example/demo/service/coin/UserService.java index 7d0be9c..6d1e802 100644 --- a/src/main/java/com/example/demo/service/coin/UserService.java +++ b/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); } 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 e751410..daa1045 100644 --- a/src/main/java/com/example/demo/serviceImpl/coin/ConsumeServiceImpl.java +++ b/src/main/java/com/example/demo/serviceImpl/coin/ConsumeServiceImpl.java @@ -256,6 +256,25 @@ public class ConsumeServiceImpl implements ConsumeService { // } return Result.success("XF_" + orderNumber); } + + @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 // @Override diff --git a/src/main/java/com/example/demo/serviceImpl/coin/UserServiceImpl.java b/src/main/java/com/example/demo/serviceImpl/coin/UserServiceImpl.java index b88dafd..93ed455 100644 --- a/src/main/java/com/example/demo/serviceImpl/coin/UserServiceImpl.java +++ b/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) { diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml index a7af526..b54d463 100644 --- a/src/main/resources/application-dev.yml +++ b/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 From 21cae8ea4db041673cd7418eba3c32fd34edcf1f Mon Sep 17 00:00:00 2001 From: lijianlin Date: Wed, 4 Feb 2026 14:32:12 +0800 Subject: [PATCH 2/2] =?UTF-8?q?02-04=20=E6=96=B0=E5=A2=9E=E5=85=85?= =?UTF-8?q?=E5=80=BC/=E6=B6=88=E8=B4=B9=20=E8=BF=94=E5=9B=9E=E8=AE=A2?= =?UTF-8?q?=E5=8D=95=E5=8F=B7=E4=B8=8E=E5=88=9B=E5=BB=BA=E6=97=B6=E9=97=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../example/demo/domain/vo/coin/OrderResultVO.java | 28 ++++++++++++++++++++++ .../demo/serviceImpl/coin/ConsumeServiceImpl.java | 9 ++++--- .../demo/serviceImpl/coin/RechargeServiceImpl.java | 5 ++-- 3 files changed, 35 insertions(+), 7 deletions(-) create mode 100644 src/main/java/com/example/demo/domain/vo/coin/OrderResultVO.java diff --git a/src/main/java/com/example/demo/domain/vo/coin/OrderResultVO.java b/src/main/java/com/example/demo/domain/vo/coin/OrderResultVO.java new file mode 100644 index 0000000..d4827db --- /dev/null +++ b/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; + } +} \ No newline at end of file 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 daa1045..376081b 100644 --- a/src/main/java/com/example/demo/serviceImpl/coin/ConsumeServiceImpl.java +++ b/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,9 @@ 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 diff --git a/src/main/java/com/example/demo/serviceImpl/coin/RechargeServiceImpl.java b/src/main/java/com/example/demo/serviceImpl/coin/RechargeServiceImpl.java index 83383fd..2a0f2a9 100644 --- a/src/main/java/com/example/demo/serviceImpl/coin/RechargeServiceImpl.java +++ b/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