diff --git a/src/main/java/com/example/demo/RabbitMQ/BeanRechargeAspect.java b/src/main/java/com/example/demo/RabbitMQ/BeanRechargeAspect.java new file mode 100644 index 0000000..6beef6a --- /dev/null +++ b/src/main/java/com/example/demo/RabbitMQ/BeanRechargeAspect.java @@ -0,0 +1,97 @@ +package com.example.demo.RabbitMQ; + +import com.example.demo.Util.SecurityUtils; +import com.example.demo.config.RabbitMQConfig; +import com.example.demo.config.interfac.Message; +import com.example.demo.domain.DTO.MessageDTO; +import com.example.demo.domain.vo.coin.Messages; +import com.example.demo.mapper.coin.OperationLogMapper; +import com.example.demo.mapper.coin.UserMapper; +import com.fasterxml.jackson.databind.ObjectMapper; +import lombok.extern.slf4j.Slf4j; +import org.aspectj.lang.ProceedingJoinPoint; +import org.aspectj.lang.annotation.Around; +import org.aspectj.lang.annotation.Aspect; +import org.aspectj.lang.reflect.MethodSignature; +import org.springframework.amqp.rabbit.core.RabbitTemplate; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +/** + * @program: GOLD + * @ClassName BeanRechargeAspect + * @description: 金豆充值流程切面 + * @author: + * @create: + * @Version 1.0 + **/ +@Aspect +@Component +@Slf4j +public class BeanRechargeAspect { + @Autowired + private RabbitTemplate rabbitTemplate; + @Autowired + private UserMapper userMapper; + @Autowired + private OperationLogMapper operationLogMapper; + + @Around("@annotation(com.example.demo.config.interfac.Message)") + public Object logExecutionTime(ProceedingJoinPoint joinPoint) throws Throwable { + long startTime = System.currentTimeMillis(); + MethodSignature signature = (MethodSignature) joinPoint.getSignature(); + String methodName = signature.getName(); + String className = signature.getDeclaringTypeName(); + Object[] args = joinPoint.getArgs(); + + Message logAnnotation = signature.getMethod().getAnnotation(Message.class); + String action = logAnnotation.value(); + + // ✅ 使用 Spring Security 获取真实用户 + String username = SecurityUtils.getCurrentUsername(); + Integer userId = SecurityUtils.getCurrentUserId(); + String name = userMapper.selectUserByJwcode(Integer.valueOf(username)).getName(); + + // 添加空值检查 + if (userId == null) { + log.warn("无法获取当前用户ID,使用默认值 -1"); + userId = -1; // 或者使用其他默认值 + } + + ObjectMapper mapper = new ObjectMapper(); + String argsJson = "[]"; + try { + argsJson = mapper.writeValueAsString(args); + } catch (Exception e) { + argsJson = "serialize failed"; + } + + Object result; + try { + result = joinPoint.proceed(); + } catch (Exception e) { + log.error("方法执行异常: {}", e.getMessage()); + throw e; + } + + long duration = System.currentTimeMillis() - startTime; + + // ✅ 构造金豆充值消息 DTO + Messages messageDTO = new Messages(); + messageDTO.setJwcode(Integer.valueOf(username)); + messageDTO.setName(name); + messageDTO.setTitle(action); + messageDTO.setDesc(username + "有一条金豆充值消息需要处理"); + + // ✅ 发送消息到 RabbitMQ(不等待) + try { + rabbitTemplate.convertAndSend(RabbitMQConfig.Bean_RECHARGE_EXCHANGE, "bean.recharge.save", messageDTO); + log.info("📩 金豆充值消息已发送到 RabbitMQ: {}", action); + } catch (Exception e) { + log.error("发送金豆充值消息到 RabbitMQ 失败", e); + } + + log.info("✅ AOP 拦截完成: {} 执行 [{}] 耗时 {}ms", username, action, duration); + return result; + } +} diff --git a/src/main/java/com/example/demo/RabbitMQ/BeanRechargeConsumer.java b/src/main/java/com/example/demo/RabbitMQ/BeanRechargeConsumer.java new file mode 100644 index 0000000..12f6988 --- /dev/null +++ b/src/main/java/com/example/demo/RabbitMQ/BeanRechargeConsumer.java @@ -0,0 +1,31 @@ +package com.example.demo.RabbitMQ; + +import com.example.demo.config.RabbitMQConfig; +import com.example.demo.domain.vo.coin.Messages; +import com.example.demo.mapper.coin.OperationLogMapper; +import lombok.extern.slf4j.Slf4j; +import org.springframework.amqp.rabbit.annotation.RabbitListener; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +/** + * 金豆充值流程消息消费者 + * 监听金豆充值流程中各个状态变更的消息队列 + */ +@Component +@Slf4j +public class BeanRechargeConsumer { + @Autowired + private OperationLogMapper operationLogMapper; + + @RabbitListener(queues = RabbitMQConfig.Bean_RECHARGE_QUEUE) + public void consumeLog(Messages messages) { + try { + operationLogMapper.insertMessage(messages); + + } catch (Exception e) { + log.error("持久化金豆充值日志失败", e); + // 可以重试或记录到文件 + } + } +} diff --git a/src/main/java/com/example/demo/config/RabbitMQConfig.java b/src/main/java/com/example/demo/config/RabbitMQConfig.java index 71d58c2..314f917 100644 --- a/src/main/java/com/example/demo/config/RabbitMQConfig.java +++ b/src/main/java/com/example/demo/config/RabbitMQConfig.java @@ -19,12 +19,14 @@ public class RabbitMQConfig { public static final String LOG_EXCHANGE = "operation_log_exchange"; public static final String CASH_COLLECTION_QUEUE = "cash_collection_queue"; public static final String CASH_COLLECTION_EXCHANGE = "cash_collection_exchange"; - public static final String CASH_REFUND_QUEUE = "cash_collection_exchange"; + public static final String CASH_REFUND_QUEUE = "cash_refund_exchange"; public static final String CASH_REFUND_EXCHANGE = "cash_refund_exchange"; public static final String COIN_REFUND_QUEUE = "coin_refund_queue"; public static final String COIN_REFUND_EXCHANGE = "coin_refund_exchange"; public static final String COIN_RECHARGE_QUEUE = "coin_recharge_queue"; public static final String COIN_RECHARGE_EXCHANGE = "coin_recharge_exchange"; + public static final String Bean_RECHARGE_QUEUE = "bean_recharge_queue"; + public static final String Bean_RECHARGE_EXCHANGE = "bean_recharge_exchange"; @Bean public Queue logQueue() { return new Queue(LOG_QUEUE, true); @@ -114,6 +116,24 @@ public class RabbitMQConfig { .with("coin.recharge.*"); } + // 金豆充值队列和绑定(按照操作日志的标准) + @Bean + public Queue beanRechargeQueue() { + return new Queue(Bean_RECHARGE_QUEUE, true); + } + + @Bean + public TopicExchange beanRechargeExchange() { + return new TopicExchange(Bean_RECHARGE_EXCHANGE); + } + + @Bean + public Binding beanRechargeBinding() { + return BindingBuilder.bind(beanRechargeQueue()) + .to(beanRechargeExchange()) + .with("bean.recharge.*"); + } + @Bean public MessageConverter messageConverter() { return new Jackson2JsonMessageConverter(); 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 89e5388..3c1e41d 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/serviceImpl/bean/BeanRechargeServiceImpl.java b/src/main/java/com/example/demo/serviceImpl/bean/BeanRechargeServiceImpl.java index 3ff285b..858c3ff 100644 --- a/src/main/java/com/example/demo/serviceImpl/bean/BeanRechargeServiceImpl.java +++ b/src/main/java/com/example/demo/serviceImpl/bean/BeanRechargeServiceImpl.java @@ -1,24 +1,26 @@ package com.example.demo.serviceImpl.bean; import com.example.demo.domain.vo.bean.*; -import com.example.demo.domain.vo.coin.Gold; -import com.example.demo.domain.vo.coin.GoldUser; -import com.example.demo.domain.vo.coin.RechargeUser; -import com.example.demo.domain.vo.coin.Result; +import com.example.demo.domain.vo.coin.*; import com.example.demo.mapper.bean.BeanRechargeMapper2; import com.example.demo.mapper.bean.BeanUserMapper; import com.example.demo.mapper.coin.BeanRechargeMapper1; +import com.example.demo.mapper.coin.MarketMapper; import com.example.demo.mapper.coin.UserMapper; import com.example.demo.mapper.pay.BeanRechargeMapper3; import com.example.demo.service.bean.BeanRechargeService; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.amqp.rabbit.core.RabbitTemplate; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Service; import org.springframework.web.client.RestTemplate; import org.springframework.web.util.UriComponentsBuilder; +import com.example.demo.config.RabbitMQConfig; import java.math.BigDecimal; import java.math.RoundingMode; @@ -37,6 +39,7 @@ import java.util.stream.Collectors; **/ @Service @RequiredArgsConstructor +@Slf4j public class BeanRechargeServiceImpl implements BeanRechargeService { @Autowired @@ -46,7 +49,7 @@ public class BeanRechargeServiceImpl implements BeanRechargeService { private BeanRechargeMapper2 beanRechargeMapper2; @Autowired - private BeanRechargeMapper1 beanRechargeMapper1; + private BeanRechargeMapper1 beanRechargeMapper1; @Autowired private BeanRechargeMapper3 beanRechargeMapper3; @@ -56,6 +59,11 @@ public class BeanRechargeServiceImpl implements BeanRechargeService { @Autowired private BeanUserMapper beanUserMapper; + @Autowired + private MarketMapper marketMapper; + @Qualifier("rabbitTemplate") + @Autowired + private RabbitTemplate rabbitTemplate; //新增金豆 @Override @@ -65,8 +73,7 @@ public class BeanRechargeServiceImpl implements BeanRechargeService { if (recharge.getJwcode() == null || recharge.getJwcode().toString().isEmpty()) { return Result.error("精网号不能为空"); } - if(recharge.getJwcode()<10000000||recharge.getJwcode()>99999999) - { + if (recharge.getJwcode() < 10000000 || recharge.getJwcode() > 99999999) { return Result.error("精网号位数小于8位或大于8位"); } // 验证免费豆和永久豆是否为非负数 @@ -82,18 +89,55 @@ public class BeanRechargeServiceImpl implements BeanRechargeService { return Result.error("免费豆和永久豆不能同时为0"); } BeanUserCard user = beanUserMapper.userCard(String.valueOf(recharge.getJwcode())); - if(user==null){ + if (user == null) { return Result.error("用户查找不到"); } // 验证备注是否为空 if (recharge.getRemark() == null || recharge.getRemark().toString().isEmpty()) { return Result.error("备注不能为空"); } - if(recharge.getAdminName() == null || recharge.getAdminName().toString().isEmpty()){ + if (recharge.getAdminName() == null || recharge.getAdminName().toString().isEmpty()) { return Result.error("管理员名称不能为空"); } beanRechargeMapper1.add(recharge); + + // 创建消息队列,用于发送金豆审核通知 + try { + Messages message = new Messages(); + message.setJwcode(user.getJwcode()); + message.setName(user.getName()); + message.setStatus(30); + message.setType(0); + message.setDesc(user.getName() + "的金豆充值收款申请待审核,前往处理"); + message.setTitle("金币管理--财务审核--金豆审核"); + message.setTypeId(recharge.getId()); + + // 安全获取和设置市场信息 + String userMarketStr = user.getMarket(); + if (userMarketStr != null && !userMarketStr.isEmpty()) { + try { + Integer marketId = Integer.valueOf(userMarketStr); + message.setMarket(marketId); + + String marketName = marketMapper.getMarketNameById(String.valueOf(marketId)); + message.setMarketName(marketName != null ? marketName : ""); + } catch (NumberFormatException e) { + log.warn("无法解析市场ID: {}", userMarketStr); + message.setMarket(null); + message.setMarketName(""); + } + } else { + message.setMarket(null); + message.setMarketName(""); + } + + message.setQueryId(20); + rabbitTemplate.convertAndSend(RabbitMQConfig.Bean_RECHARGE_EXCHANGE, "bean.recharge.save", message); + } catch (Exception e) { + log.error("发送金豆充值消息失败", e); + // 消息发送失败不应该影响主业务逻辑,可以选择继续或记录日志 + } // String jwcode = recharge.getJwcode().toString(); // String op = "recharge"; // 操作类型(根据实际业务定义,例如"recharge"表示充值) // String content = recharge.getRemark(); // 备注作为content参数 @@ -123,7 +167,7 @@ public class BeanRechargeServiceImpl implements BeanRechargeService { //系统充值明细 @Override - public PageInfo selectBySystem(Integer pageNum, Integer pageSize, BeanSystemRechargeInfo beanSystemRechargeInfo){ + public PageInfo selectBySystem(Integer pageNum, Integer pageSize, BeanSystemRechargeInfo beanSystemRechargeInfo) { PageHelper.startPage(pageNum, pageSize); //必须要直接跟mapper List beanSystemRechargeInfos = beanRechargeMapper2.selectBySystem(beanSystemRechargeInfo); return new PageInfo<>(beanSystemRechargeInfos); @@ -134,22 +178,22 @@ public class BeanRechargeServiceImpl implements BeanRechargeService { public GoldBean statsSystemBean(BeanSystemRechargeInfo beanSystemRechargeInfo) { GoldBean gold = beanRechargeMapper2.selectSystemSum(beanSystemRechargeInfo); - if(gold==null){ + if (gold == null) { gold = new GoldBean(); } BigDecimal moneySum; - if(gold.getPermanentBean()==null){ + if (gold.getPermanentBean() == null) { gold.setPermanentBean(0); } - if(gold.getFreeBean()==null){ + if (gold.getFreeBean() == null) { gold.setFreeBean(0); } - if(gold.getNum()==null){ + if (gold.getNum() == null) { gold.setNum(0); } moneySum = new BigDecimal(gold.getPermanentBean()).divide(new BigDecimal("50"), 2, RoundingMode.HALF_UP); gold.setMoney(moneySum.doubleValue()); - gold.setBeanNum(gold.getPermanentBean()+gold.getFreeBean()); + gold.setBeanNum(gold.getPermanentBean() + gold.getFreeBean()); return gold; } @@ -166,7 +210,7 @@ public class BeanRechargeServiceImpl implements BeanRechargeService { //线上充值明细 @Override - public PageInfo selectByOnline(Integer pageNum, Integer pageSize, BeanOnlineRechargeInfo beanOnlineRechargeInfo){ + public PageInfo selectByOnline(Integer pageNum, Integer pageSize, BeanOnlineRechargeInfo beanOnlineRechargeInfo) { PageHelper.startPage(pageNum, pageSize); //必须要直接跟mapper List beanOnlineRechargeInfos = beanRechargeMapper3.selectByOnline(beanOnlineRechargeInfo); return new PageInfo<>(beanOnlineRechargeInfos); @@ -180,7 +224,6 @@ public class BeanRechargeServiceImpl implements BeanRechargeService { } - @Override public List onlineMarket() { List list = beanRechargeMapper3.onlineMarket(); 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 2b841d2..2a85e66 100644 --- a/src/main/java/com/example/demo/serviceImpl/cash/CashAuditServiceImpl.java +++ b/src/main/java/com/example/demo/serviceImpl/cash/CashAuditServiceImpl.java @@ -11,6 +11,7 @@ import com.example.demo.domain.vo.coin.Messages; import com.example.demo.mapper.cash.CashAuditMapper; import com.example.demo.mapper.cash.CashCollectionMapper; import com.example.demo.mapper.coin.AuditMapper; +import com.example.demo.mapper.coin.MarketMapper; import com.example.demo.mapper.coin.RechargeMapper; import com.example.demo.service.cash.CashAuditService; import org.springframework.amqp.rabbit.core.RabbitTemplate; @@ -46,6 +47,8 @@ public class CashAuditServiceImpl implements CashAuditService { private CashAuditMapper cashAuditMapper; @Autowired private RabbitTemplate rabbitTemplate; + @Autowired + private MarketMapper marketMapper; @Transactional @@ -68,7 +71,7 @@ public class CashAuditServiceImpl implements CashAuditService { updateOrder.setOrderCode(orderCode); String auditName = cashAuditMapper.getAuditName(auditId); if (action == 1) { //通过 - updateOrder.setStatus(1); + updateOrder.setStatus(10); if (order.getGoodsName().equals("金币充值")) { //往金币订单表加一条充值记录 UserGoldRecord rechargeOrder = new UserGoldRecord(); @@ -198,11 +201,14 @@ public class CashAuditServiceImpl implements CashAuditService { message.setJwcode(order.getJwcode()); message.setName(order.getName()); message.setStatus(updateOrder.getStatus()); - message.setDesc(order.getJwcode() + action==1?"收款记录需补充手续费,前往填写":"现金收款申请已被驳回,前往查看驳回理"); - message.setTitle(action==1?"收款订单审核通过":"收款订单审核驳回"); - message.setType(1); + message.setDesc(order.getName() + (action==1?"的收款记录需补充手续费,前往填写":"的现金收款申请已被驳回,前往查看驳回理由")); + message.setTitle(action==1?"现金管理--收款处理":"现金管理--收款提交"); + message.setType(0); message.setTypeId(order.getId()); message.setMarket(Integer.valueOf(order.getMarket())); + String marketName = marketMapper.getMarketNameById(String.valueOf(message.getMarket())); + message.setMarketName(marketName); + message.setQueryId(action==1?76:60); rabbitTemplate.convertAndSend(RabbitMQConfig.CASH_COLLECTION_EXCHANGE, "cash.collection.save", message); // 根据审核结果发送不同的消息 if (action == 1) { diff --git a/src/main/java/com/example/demo/serviceImpl/cash/CashCollectionServiceImpl.java b/src/main/java/com/example/demo/serviceImpl/cash/CashCollectionServiceImpl.java index 4825b9a..12afcce 100644 --- a/src/main/java/com/example/demo/serviceImpl/cash/CashCollectionServiceImpl.java +++ b/src/main/java/com/example/demo/serviceImpl/cash/CashCollectionServiceImpl.java @@ -140,7 +140,7 @@ public class CashCollectionServiceImpl implements CashCollectionService { message.setJwcode(cashRecord.getJwcode()); message.setName(cashRecord.getName()); message.setStatus(cashRecord.getStatus()); - message.setDesc(cashRecord.getJwcode()+"的现金收款申请待审核,请前往审核"); + message.setDesc(cashRecord.getName()+"的现金收款申请待审核,请前往审核"); message.setTitle("现金管理--收款处理"); message.setType(0); message.setTypeId(cashRecord.getId()); @@ -194,7 +194,7 @@ public class CashCollectionServiceImpl implements CashCollectionService { message.setJwcode(cashRecord.getJwcode()); message.setName(cashRecord.getName()); message.setStatus(cashRecord.getStatus()); - message.setDesc(cashRecord.getJwcode()+"用户的现金收款申请待审核,请前往审核"); + message.setDesc(cashRecord.getName()+"用户的现金收款申请待审核,请前往审核"); message.setTitle("现金收款--赠送免费金币"); message.setType(1); message.setTypeId(cashRecord.getId()); 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 527ae99..c55e79d 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.LanguageTranslationUtil; import com.example.demo.Util.SimpleIdGenerator; import com.example.demo.domain.entity.Admin; @@ -142,18 +143,17 @@ public class CashRefundServiceImpl implements RefundService { BigDecimal permanent = new BigDecimal(permanentGold).divide(new BigDecimal(100), 2, RoundingMode.HALF_UP); - item.setGold(permanent); item.setFree(free); item.setActivity(cashCollection.getActivity()); item.setPaymentCurrency(cashCollection.getPaymentCurrency()); - if(cashCollection.getPaymentCurrency() != null){ - item.setPaymentAmount(cashCollection.getPaymentAmount().divide(new BigDecimal(100), 2, RoundingMode.HALF_UP));} - else item.setPaymentAmount(cashCollection.getPaymentAmount()); + if (cashCollection.getPaymentCurrency() != null) { + item.setPaymentAmount(cashCollection.getPaymentAmount().divide(new BigDecimal(100), 2, RoundingMode.HALF_UP)); + } else item.setPaymentAmount(cashCollection.getPaymentAmount()); item.setReceivedCurrency(cashCollection.getReceivedCurrency()); - if (cashCollection.getReceivedCurrency() != null){ - item.setReceivedAmount(cashCollection.getReceivedAmount().divide(new BigDecimal(100), 2, RoundingMode.HALF_UP));} - else item.setReceivedAmount(cashCollection.getReceivedAmount()); + if (cashCollection.getReceivedCurrency() != null) { + item.setReceivedAmount(cashCollection.getReceivedAmount().divide(new BigDecimal(100), 2, RoundingMode.HALF_UP)); + } else item.setReceivedAmount(cashCollection.getReceivedAmount()); item.setPayType(cashCollection.getPayType()); item.setPayTime(cashCollection.getPayTime()); item.setPayBankCode(cashCollection.getBankCode()); @@ -174,18 +174,18 @@ public class CashRefundServiceImpl implements RefundService { } @Override - public int add(CashRecordRefund cashRecordRefund, @RequestHeader(defaultValue = "zh_CN") String lang) throws Exception { - if(cashRecordRefund.getJwcode()==null){ - throw new Exception("未输入精网号") ; + public int add(CashRecordRefund cashRecordRefund, @RequestHeader(defaultValue = "zh_CN") String lang) throws Exception { + if (cashRecordRefund.getJwcode() == null) { + throw new Exception("未输入精网号"); } - if(cashRecordRefund.getRefundModel()== null){ - throw new Exception("请填充退款类型") ; + if (cashRecordRefund.getRefundModel() == null) { + throw new Exception("请填充退款类型"); } - if(cashRecordRefund.getRefundReason()== null){ - throw new Exception("请填写退款理由") ; + if (cashRecordRefund.getRefundReason() == null) { + throw new Exception("请填写退款理由"); } - if (cashRecordRefund.getHandlingCharge()== null){ - throw new Exception("请先填写手续费") ; + if (cashRecordRefund.getHandlingCharge() == null) { + throw new Exception("请先填写手续费"); } CashRecordDone cashRecordDonetwo = new CashRecordDone(); cashRecordDonetwo.setAreaServise(cashRecordRefund.getAreaServise()); @@ -202,8 +202,8 @@ public class CashRefundServiceImpl implements RefundService { CashRecordDone cashRecordDone1 = new CashRecordDone(); cashRecordDone1.setId(cashRecordRefund.getOriginalOrderId()); cashRecordDone1.setStatus(6); - if (cashRecordDone1.getId()!=null||cashRecordDone1.getOrderCode()!= null) - cashRefundMapper.updateStatus(cashRecordDone1); + if (cashRecordDone1.getId() != null || cashRecordDone1.getOrderCode() != null) + cashRefundMapper.updateStatus(cashRecordDone1); else return Result.error("提交失败").getCode(); // 发送退款创建消息 @@ -211,13 +211,14 @@ public class CashRefundServiceImpl implements RefundService { message.setJwcode(cashRecordRefund.getJwcode()); message.setName(cashRecordRefund.getName()); message.setStatus(cashRecordRefund.getStatus()); - message.setDesc(cashRecordRefund.getJwcode()+"用户的客服退款申请待审核,前往处理"); + message.setDesc(cashRecordRefund.getName() + "的线上退款申请待审批,前往确认"); message.setTitle("现金退款--新增退款"); message.setType(0); message.setTypeId(cashRecordRefund.getId()); message.setMarket(Integer.valueOf(cashRecordRefund.getMarket())); String marketName = marketMapper.getMarketNameById(String.valueOf(message.getMarket())); message.setMarketName(marketName); + message.setQueryId(111); rabbitTemplate.convertAndSend(RabbitMQConfig.CASH_REFUND_EXCHANGE, "cash.refund.save", message); return Result.success("提交成功").getCode(); @@ -226,25 +227,25 @@ public class CashRefundServiceImpl implements RefundService { @Override public int update(CashRecordDone cashRecordDone, @RequestHeader(defaultValue = "zh_CN") String lang) throws Exception { - if (cashRecordDone.getJwcode()== null) { + if (cashRecordDone.getJwcode() == null) { throw new RuntimeException("未输入精网号"); } - if (cashRecordDone.getPaymentAmount()== null) { + if (cashRecordDone.getPaymentAmount() == null) { throw new RuntimeException("未输入付款金额"); } - if (cashRecordDone.getPaymentCurrency()== null){ - throw new RuntimeException("未输入付款币种"); + if (cashRecordDone.getPaymentCurrency() == null) { + throw new RuntimeException("未输入付款币种"); } - if (cashRecordDone.getRefundModel()== null) { + if (cashRecordDone.getRefundModel() == null) { throw new RuntimeException("请填写退款类型"); } - if (cashRecordDone.getRefundReason()== null) { + if (cashRecordDone.getRefundReason() == null) { throw new RuntimeException("请填写退款理由"); } - if(cashRecordDone.getNewRefundGold()== null){ + if (cashRecordDone.getNewRefundGold() == null) { cashRecordDone.setNewRefundGold(BigDecimal.valueOf(0)); } - if(cashRecordDone.getNewRefundFree()== null){ + if (cashRecordDone.getNewRefundFree() == null) { cashRecordDone.setNewRefundFree(BigDecimal.valueOf(0)); } int result = cashRefundMapper.update(cashRecordDone); @@ -255,16 +256,17 @@ public class CashRefundServiceImpl implements RefundService { message.setJwcode(cashRecordDTO.getJwcode()); message.setName(cashRecordDTO.getName()); message.setStatus(cashRecordDTO.getStatus()); - message.setDesc(cashRecordDTO.getJwcode() + "用户的退款申请待审核,前往处理"); - message.setTitle("现金退款--当地退款审核(编辑后提交)"); + message.setDesc(cashRecordDTO.getName() + "的退款申请待审核,前往处理"); + message.setTitle("现金管理--退款审批"); message.setType(1); message.setTypeId(cashRecordDTO.getId()); message.setMarket(cashRecordDTO.getMarket()); String marketName = marketMapper.getMarketNameById(String.valueOf(message.getMarket())); message.setMarketName(marketName); + message.setQueryId(103); rabbitTemplate.convertAndSend(RabbitMQConfig.CASH_REFUND_EXCHANGE, "cash.refund.save", message); } - return (result > 0 ? Result.success("提交成功") : Result.error("提交失败")).getCode(); + return (result > 0 ? Result.success("提交成功") : Result.error("提交失败")).getCode(); } @Override @@ -273,18 +275,19 @@ public class CashRefundServiceImpl implements RefundService { } @Override - public int review(CashRecordDone cashRecordDone, @RequestHeader(defaultValue = "zh_CN") String lang) throws Exception { - if(cashRecordDone.getStatus()== 12|| cashRecordDone.getStatus()== 22){ - if(cashRecordDone.getOrderCode()== null){ + public int review(CashRecordDone cashRecordDone, @RequestHeader(defaultValue = "zh_CN") String lang) throws Exception { + if (cashRecordDone.getStatus() == 12 || cashRecordDone.getStatus() == 22) { + if (cashRecordDone.getOrderCode() == null) { throw new RuntimeException("未输入订单号"); } -CashRecordDone cashRecordDone1 = new CashRecordDone(); + CashRecordDone cashRecordDone1 = new CashRecordDone(); cashRecordDone1.setId(cashRecordDone.getRelatedId()); cashRecordDone1.setOrderCode(cashRecordDone.getOrderCode().substring(2)); cashRecordDone1.setStatus(4); - if (cashRecordDone1.getId()!=null||cashRecordDone1.getOrderCode()!= null){ - cashRefundMapper.updateStatus(cashRecordDone1); - }} + if (cashRecordDone1.getId() != null || cashRecordDone1.getOrderCode() != null) { + cashRefundMapper.updateStatus(cashRecordDone1); + } + } cashRefundMapper.updateAudit(cashRecordDone); int result = cashRefundMapper.review(cashRecordDone); CashRecordDTO cashRecordDTO = cashRefundMapper.selectById(cashRecordDone.getId()); @@ -294,15 +297,16 @@ CashRecordDone cashRecordDone1 = new CashRecordDone(); message.setJwcode(cashRecordDTO.getJwcode()); message.setName(cashRecordDTO.getName()); message.setStatus(cashRecordDTO.getStatus()); - message.setDesc(cashRecordDTO.getJwcode()+cashRecordDTO.getStatus()!=12|| cashRecordDTO.getStatus()!=22?"用户的退款申请待审核,前往处理":"用户的现金退款申请已被驳回,前往查看详情"); - message.setTitle("现金退款--当地退款审核"); + message.setDesc(cashRecordDTO.getName()+(cashRecordDTO.getStatus()!=12 && cashRecordDTO.getStatus()!=22?"的退款申请待审核,前往处理":"的现金退款申请已被驳回,前往查看详情")); + message.setTitle(cashRecordDTO.getStatus()!=12 && cashRecordDTO.getStatus()!=22?"现金管理--退款审批":"现金管理--退款提交"); message.setType(1); message.setTypeId(cashRecordDTO.getId()); message.setMarket(cashRecordDTO.getMarket()); String marketName = marketMapper.getMarketNameById(String.valueOf(message.getMarket())); message.setMarketName(marketName); + message.setQueryId(cashRecordDTO.getStatus()!=12 && cashRecordDTO.getStatus()!=22?103:99); - rabbitTemplate.convertAndSend(RabbitMQConfig.CASH_REFUND_EXCHANGE, "cash.refund.save", message); + rabbitTemplate.convertAndSend(RabbitMQConfig.CASH_REFUND_EXCHANGE, "cash.refund.save", message); } @@ -311,22 +315,22 @@ CashRecordDone cashRecordDone1 = new CashRecordDone(); @Override public int executor(CashRecordDone cashRecordDone) throws Exception { - if(cashRecordDone.getRefundVoucher()== null){ + if (cashRecordDone.getRefundVoucher() == null) { throw new RuntimeException("未输入退款凭证"); } - if(cashRecordDone.getRefundTime()== null){ + if (cashRecordDone.getRefundTime() == null) { throw new RuntimeException("未输入退款时间"); } - if(cashRecordDone.getRefundRemark()== null){ + if (cashRecordDone.getRefundRemark() == null) { throw new RuntimeException("未输入退款备注"); } - if(cashRecordDone.getRefundChannels()== null){ + if (cashRecordDone.getRefundChannels() == null) { throw new RuntimeException("未输入退款途径"); } - if(cashRecordDone.getRefundCurrency()== null){ + if (cashRecordDone.getRefundCurrency() == null) { throw new RuntimeException("未输入退款币种"); } - if(cashRecordDone.getRefundAmount()== null){ + if (cashRecordDone.getRefundAmount() == null) { throw new RuntimeException("未输入退款金额"); } int result = cashRefundMapper.executor(cashRecordDone); @@ -340,21 +344,22 @@ CashRecordDone cashRecordDone1 = new CashRecordDone(); @Override public int finalreview(CashRecordDone cashRecordDone, @RequestHeader(defaultValue = "zh_CN") String lang) { - if(cashRecordDone.getPermanentGold()== null){ + if (cashRecordDone.getPermanentGold() == null) { cashRecordDone.setPermanentGold(0); } - if(cashRecordDone.getFreeGold()== null){ + if (cashRecordDone.getFreeGold() == null) { cashRecordDone.setFreeGold(0); } - if(cashRecordDone.getStatus()== 32){ + if (cashRecordDone.getStatus() == 32) { CashRecordDone cashRecordDone1 = new CashRecordDone(); cashRecordDone1.setOrderCode(cashRecordDone.getOrderCode().substring(2)); cashRecordDone1.setStatus(4); - if (cashRecordDone1.getId()!=null||cashRecordDone1.getOrderCode()!= null){ - cashRefundMapper.updateStatus(cashRecordDone1); - }} - if (cashRecordDone.getGoodsName() != null &&cashRecordDone.getStatus() ==40 && - (cashRecordDone.getGoodsName().equals(languageTranslationUtil.translate("金币充值", lang))|| + if (cashRecordDone1.getId() != null || cashRecordDone1.getOrderCode() != null) { + cashRefundMapper.updateStatus(cashRecordDone1); + } + } + if (cashRecordDone.getGoodsName() != null && cashRecordDone.getStatus() == 40 && + (cashRecordDone.getGoodsName().equals(languageTranslationUtil.translate("金币充值", lang)) || cashRecordDone.getGoodsName().contains(languageTranslationUtil.translate("金币充值", lang)))) { UserGoldRecord userGoldRecord = new UserGoldRecord(); userGoldRecord.setOrderCode(cashRecordDone.getOrderCode()); @@ -365,16 +370,15 @@ CashRecordDone cashRecordDone1 = new CashRecordDone(); userGoldRecord.setType((byte) 2); userGoldRecord.setIsRefund((byte) 1); userGoldRecord.setRefundType("金币退款"); - if (cashRecordDone.getRefundModel() == 1){ + if (cashRecordDone.getRefundModel() == 1) { userGoldRecord.setRefundModel(Byte.valueOf("1")); - } - else if (cashRecordDone.getRefundModel() == 0){ + } else if (cashRecordDone.getRefundModel() == 0) { userGoldRecord.setRefundModel(Byte.valueOf("0")); } userGoldRecord.setJwcode(cashRecordDone.getJwcode()); - userGoldRecord.setSumGold(cashRecordDone.getPermanentGold()+cashRecordDone.getFreeGold()); + userGoldRecord.setSumGold(cashRecordDone.getPermanentGold() + cashRecordDone.getFreeGold()); userGoldRecord.setPermanentGold(cashRecordDone.getPermanentGold()); int currentMonth = LocalDate.now().getMonthValue(); if (currentMonth >= 1 && currentMonth <= 6) { @@ -395,18 +399,34 @@ CashRecordDone cashRecordDone1 = new CashRecordDone(); userGoldRecord.setCreateTime(new Date()); userGoldRecord.setUpdateTime(new Date()); String auditName = auditMapper.getName(cashRecordDone.getAuditId()); - refundMapper.add(userGoldRecord); - cashRefundMapper.updategold(orderCode); - User user = new User(); - user.setJwcode(userGoldRecord.getJwcode()); + refundMapper.add(userGoldRecord); + cashRefundMapper.updategold(orderCode); + User user = new User(); + user.setJwcode(userGoldRecord.getJwcode()); user.setCurrentPermanentGold(BigDecimal.valueOf(-userGoldRecord.getPermanentGold())); //当前永久金币 user.setCurrentFreeJune(BigDecimal.valueOf(-userGoldRecord.getFreeJune())); //当前六月免费金币 user.setCurrentFreeDecember(BigDecimal.valueOf(-userGoldRecord.getFreeDecember())); //当前十二月免费金币 auditMapper.updateUserGold(user); - GoldTistV2.addCoinNew(userGoldRecord.getJwcode().toString(), 58, //退款免费+永久金币-充值 - (double) (userGoldRecord.getFreeDecember()+userGoldRecord.getFreeJune()+userGoldRecord.getPermanentGold() ) /100, SimpleIdGenerator.generateId(), - userGoldRecord.getRemark(),(double) userGoldRecord.getPermanentGold() / 100, auditName, "退款金币充值");} - + GoldTistV2.addCoinNew(userGoldRecord.getJwcode().toString(), 58, //退款免费+永久金币-充值 + (double) (userGoldRecord.getFreeDecember() + userGoldRecord.getFreeJune() + userGoldRecord.getPermanentGold()) / 100, SimpleIdGenerator.generateId(), + userGoldRecord.getRemark(), (double) userGoldRecord.getPermanentGold() / 100, auditName, "退款金币充值"); + } + + // 执行明细待填写消息 + Messages message1 = new Messages(); + message1.setJwcode(cashRecordDone.getJwcode()); + message1.setName(cashRecordDone.getName()); + message1.setStatus(cashRecordDone.getStatus()); + message1.setDesc(cashRecordDone.getName() + "的退款记录需填写执行明细,前往查看处理"); + message1.setTitle("现金管理--执行明细填写"); + message1.setType(1); + message1.setTypeId(cashRecordDone.getId()); + message1.setMarket(Integer.valueOf(cashRecordDone.getMarket())); + String marketName1 = marketMapper.getMarketNameById(String.valueOf(message1.getMarket())); + message1.setMarketName(marketName1); + message1.setQueryId(115); + + rabbitTemplate.convertAndSend(RabbitMQConfig.CASH_REFUND_EXCHANGE, "cash.refund.save", message1); cashRefundMapper.updateAudit(cashRecordDone); int result = cashRefundMapper.review(cashRecordDone); CashRecordDTO cashRecordDTO = cashRefundMapper.selectById(cashRecordDone.getId()); @@ -416,14 +436,16 @@ CashRecordDone cashRecordDone1 = new CashRecordDone(); message.setJwcode(cashRecordDTO.getJwcode()); message.setName(cashRecordDTO.getName()); message.setStatus(cashRecordDTO.getStatus()); - message.setDesc(cashRecordDTO.getJwcode()+cashRecordDTO.getStatus()!=32?"用户的退款申请待审核,前往处理":"用户的现金退款申请已被驳回,前往查看详情"); - message.setTitle("现金退款--执行人退款提交"); + message.setDesc(cashRecordDTO.getName() + (cashRecordDTO.getStatus() != 32 ? "的退款申请待审核,前往处理" : "的现金退款申请已被驳回,前往查看详情")); + message.setTitle(cashRecordDTO.getStatus() != 32 ? "现金管理--退款审批":"现金管理--退款提交"); message.setType(1); message.setTypeId(cashRecordDTO.getId()); message.setMarket(cashRecordDTO.getMarket()); String marketName = marketMapper.getMarketNameById(String.valueOf(message.getMarket())); message.setMarketName(marketName); + message.setQueryId(cashRecordDTO.getStatus() != 32 ? 103:99); + rabbitTemplate.convertAndSend(RabbitMQConfig.CASH_REFUND_EXCHANGE, "cash.refund.save", message); } return (result > 0 ? Result.success("提交成功") : Result.error("提交失败")).getCode(); } @@ -496,7 +518,7 @@ CashRecordDone cashRecordDone1 = new CashRecordDone(); } @Override - public PageInfo financeSelect2(Integer pageNum, Integer pageSize, CashRecordDTO cashRecordDTO) { + public PageInfo financeSelect2(Integer pageNum, Integer pageSize, CashRecordDTO cashRecordDTO) { PageHelper.startPage(pageNum, pageSize); //必须要直接跟mapper // System.out.println(goldDetail.getMarkets()); List list = cashRefundMapper.financeSelect(cashRecordDTO); @@ -567,7 +589,7 @@ CashRecordDone cashRecordDone1 = new CashRecordDone(); PageHelper.startPage(pageNum, pageSize); //必须要直接跟mapper // System.out.println(goldDetail.getMarkets()); List list = cashRefundMapper.exSelect(cashRecordDTO); - System.out.println( list); + System.out.println(list); if (list.isEmpty()) { return new PageInfo<>(list); } @@ -632,14 +654,14 @@ CashRecordDone cashRecordDone1 = new CashRecordDone(); @Override public void addOnline(CashRecordRefund cashRecordRefund) { - if(cashRecordRefund.getJwcode()==null){ - throw new BusinessException("未输入精网号") ; + if (cashRecordRefund.getJwcode() == null) { + throw new BusinessException("未输入精网号"); } - if(cashRecordRefund.getRefundModel()== null){ - throw new BusinessException("请填充退款类型") ; + if (cashRecordRefund.getRefundModel() == null) { + throw new BusinessException("请填充退款类型"); } - if(cashRecordRefund.getRefundReason()== null){ - throw new BusinessException("请填写退款理由") ; + if (cashRecordRefund.getRefundReason() == null) { + throw new BusinessException("请填写退款理由"); } CashRecordDone cashRecordDonetwo = new CashRecordDone(); cashRecordDonetwo.setAreaServise(cashRecordRefund.getAreaServise()); @@ -656,9 +678,9 @@ CashRecordDone cashRecordDone1 = new CashRecordDone(); CashRecordDone cashRecordDone1 = new CashRecordDone(); cashRecordDone1.setId(cashRecordRefund.getId()); cashRecordDone1.setStatus(6); - if (cashRecordDone1.getId()!=null||cashRecordDone1.getOrderCode()!= null) - cashRefundMapper.updateStatus(cashRecordDone1); - else throw new SystemException("提交失败") ; + if (cashRecordDone1.getId() != null || cashRecordDone1.getOrderCode() != null) + cashRefundMapper.updateStatus(cashRecordDone1); + else throw new SystemException("提交失败"); } @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 deb1e6e..036bf9f 100644 --- a/src/main/java/com/example/demo/serviceImpl/coin/RechargeServiceImpl.java +++ b/src/main/java/com/example/demo/serviceImpl/coin/RechargeServiceImpl.java @@ -157,7 +157,7 @@ public class RechargeServiceImpl implements RechargeService { message.setJwcode(rechargeUser.getJwcode()); message.setName(goldUser.getName()); message.setStatus(10); - message.setDesc(rechargeUser.getJwcode() + "的金币充值收款申请待审核,前往处理"); + message.setDesc(goldUser.getName() + "的金币充值收款申请待审核,前往处理"); message.setTitle("金币管理--金币审核--充值审核"); message.setType(0); message.setTypeId(userGoldRecord.getId()); diff --git a/src/main/java/com/example/demo/serviceImpl/coin/RefundServiceImpl.java b/src/main/java/com/example/demo/serviceImpl/coin/RefundServiceImpl.java index 7afef8e..14d3f3d 100644 --- a/src/main/java/com/example/demo/serviceImpl/coin/RefundServiceImpl.java +++ b/src/main/java/com/example/demo/serviceImpl/coin/RefundServiceImpl.java @@ -232,7 +232,7 @@ public class RefundServiceImpl implements RefundService { message.setJwcode(refundUser.getJwcode()); message.setName(goldUser.getName()); message.setStatus(10); - message.setDesc(refundUser.getJwcode() + "的金币退款申请待审核,前往确认"); + message.setDesc(goldUser.getName() + "的金币退款申请待审核,前往确认"); message.setTitle("金币管理--金币审核--退款审核"); message.setType(1); message.setTypeId(userGoldRecord.getId());