|
|
package com.example.demo.serviceImpl.cash;
import com.example.demo.Util.GoldTistV2;import com.example.demo.config.RabbitMQConfig;import com.example.demo.domain.entity.CashRecord;import com.example.demo.domain.entity.User;import com.example.demo.domain.entity.UserGoldRecord;import com.example.demo.domain.vo.cash.CashCollectionMessage;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.RechargeMapper;import com.example.demo.service.cash.CashAuditService;import org.springframework.amqp.rabbit.core.RabbitTemplate;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Service;import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal;import java.time.LocalDate;import java.time.LocalDateTime;import java.time.ZoneOffset;import java.util.Date;
import static net.sf.jsqlparser.parser.feature.Feature.update;
/** * @program: gold-java * @ClassName CashAuditServiceImpl * @description: 处理收款订单的审核业务逻辑 * @author: Ethan * @create: 2025−10-08 10:09 * @Version 1.0 **/@Servicepublic class CashAuditServiceImpl implements CashAuditService { @Autowired private AuditMapper auditMapper; @Autowired private RechargeMapper rechargeMapper; @Autowired private CashCollectionMapper cashCollectionMapper; @Autowired private CashAuditMapper cashAuditMapper; @Autowired private RabbitTemplate rabbitTemplate;
@Transactional @Override public boolean auditCollection(String token, Integer auditId, String orderCode, Integer action, String rejectReason) { CashRecord order = cashCollectionMapper.selectAuditByOrderCode(orderCode); if (order == null || order.getStatus() != 0 ) { throw new IllegalArgumentException("订单不存在或已被审核"); } CashRecord updateOrder = new CashRecord(); //设置审核人
updateOrder.setAuditId(auditId); //判断是通过还是驳回,更新审核状态
updateOrder.setOrderCode(orderCode); String auditName = cashAuditMapper.getAuditName(auditId); if (action == 1) { //通过
updateOrder.setStatus(1); if (order.getGoodsName().equals("金币充值")) { //往金币订单表加一条充值记录
UserGoldRecord rechargeOrder = new UserGoldRecord(); rechargeOrder.setOrderCode(orderCode.replaceFirst("^XJ_", "XJCZ_")); rechargeOrder.setJwcode(order.getJwcode()); rechargeOrder.setActivity(order.getActivity()); rechargeOrder.setPermanentGold(order.getPermanentGold()); // 获取当前月份(1-12)
int currentMonth = LocalDate.now().getMonthValue(); // 根据当前月份设置对应字段
if (currentMonth >= 1 && currentMonth <= 6) { // 1-6月:设置12月额度,6月保持默认值
rechargeOrder.setFreeJune(0); rechargeOrder.setFreeDecember(order.getFreeGold()); } else { // 7-12月:设置6月额度,12月保持默认值
rechargeOrder.setFreeJune(order.getFreeGold()); rechargeOrder.setFreeDecember(0); } rechargeOrder.setSumGold(order.getPermanentGold() + order.getFreeGold()); rechargeOrder.setRateId(Integer.valueOf(order.getPaymentCurrency())); rechargeOrder.setMoney(order.getPaymentAmount().intValue()); rechargeOrder.setRemark(order.getRemark()); rechargeOrder.setVoucher(order.getVoucher()); rechargeOrder.setPayPlatform("金币系统"); rechargeOrder.setPayModel(order.getPayType()); //把时间转换成Date
Date date = Date.from(order.getPayTime().toInstant(ZoneOffset.ofHours(8))); rechargeOrder.setPayTime(date); rechargeOrder.setAdminId(order.getSubmitterId()); rechargeOrder.setAuditId(auditId); rechargeOrder.setType((byte) 0); rechargeOrder.setAuditStatus(1); rechargeOrder.setCreateTime(new Date()); rechargeMapper.add(rechargeOrder); //往ERP加一条充值数据
GoldTistV2.addCoinNew(order.getJwcode().toString(), 64, //充值永久金币
(double) (order.getPermanentGold()) / 100, order.getRemark(), (double) (order.getPermanentGold()) / 100, auditName, "金币充值"); GoldTistV2.addCoinNew(order.getJwcode().toString(), 63, //充值免费
(double) (order.getFreeGold()) / 100, order.getRemark(), 0, auditName, "金币充值"); //修改用户余额,添加金币
User user = new User(); user.setJwcode(order.getJwcode()); user.setSumConsumePermanent(BigDecimal.valueOf(order.getPermanentGold())); // 根据当前月份设置对应字段
if (currentMonth >= 1 && currentMonth <= 6) { // 1-6月:设置12月额度,6月保持默认值
user.setSumFreeJune(BigDecimal.valueOf(0)); user.setSumFreeDecember(BigDecimal.valueOf(order.getFreeGold())); user.setCurrentFreeDecember(BigDecimal.valueOf(order.getFreeGold())); } else { // 7-12月:设置6月额度,12月保持默认值
user.setSumFreeJune(BigDecimal.valueOf(order.getFreeGold())); user.setCurrentFreeJune(BigDecimal.valueOf(order.getFreeGold())); user.setSumFreeDecember(BigDecimal.valueOf(0)); } user.setCurrentPermanentGold(BigDecimal.valueOf(order.getPermanentGold())); user.setRechargeNum(1); //充值次数加一
auditMapper.updateUserGold(user); } } else if (action == 2) { //驳回
updateOrder.setStatus(2); updateOrder.setRejectReason(rejectReason); } //更新订单
cashAuditMapper.updateOrder(updateOrder); // 创建消息队列,用于发送审核结果通知
Messages message = new Messages(); 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.setTypeId(order.getId()); message.setMarket(Integer.valueOf(order.getMarket())); rabbitTemplate.convertAndSend(RabbitMQConfig.CASH_COLLECTION_EXCHANGE, "cash.collection.save", message); // 根据审核结果发送不同的消息
if (action == 1) { // 发送审核通过消息
rabbitTemplate.convertAndSend( RabbitMQConfig.CASH_COLLECTION_EXCHANGE, "collection.audited", message ); } else { // 发送审核驳回消息
rabbitTemplate.convertAndSend( RabbitMQConfig.CASH_COLLECTION_EXCHANGE, "collection.rejected", message ); } return true; }}
|