You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
162 lines
7.7 KiB
162 lines
7.7 KiB
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
|
|
**/
|
|
@Service
|
|
public 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;
|
|
}
|
|
}
|