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.
220 lines
10 KiB
220 lines
10 KiB
package com.example.demo.serviceImpl.cash;
|
|
|
|
import com.example.demo.Util.GoldTistV2;
|
|
import com.example.demo.domain.entity.User;
|
|
import com.example.demo.domain.entity.UserGoldRecord;
|
|
import com.example.demo.domain.vo.cash.CashRecordDone;
|
|
import com.example.demo.domain.vo.coin.Result;
|
|
import com.example.demo.mapper.cash.CashRefundMapper;
|
|
import com.example.demo.mapper.coin.AuditMapper;
|
|
import com.example.demo.mapper.coin.MarketMapper;
|
|
import com.example.demo.mapper.coin.RefundMapper;
|
|
import com.example.demo.service.cash.RefundService;
|
|
import com.github.pagehelper.PageHelper;
|
|
import com.github.pagehelper.PageInfo;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.stereotype.Service;
|
|
|
|
import java.math.BigDecimal;
|
|
import java.time.LocalDate;
|
|
import java.util.List;
|
|
import java.util.UUID;
|
|
|
|
import static org.apache.commons.lang3.StringUtils.substring;
|
|
|
|
/**
|
|
* @program: GOLD
|
|
* @ClassName CashRefundServiceImpl
|
|
* @description:
|
|
* @author: huangqizhen
|
|
* @create: 2025−09-28 15:02
|
|
* @Version 1.0
|
|
**/
|
|
@Service
|
|
|
|
public class CashRefundServiceImpl implements RefundService {
|
|
|
|
@Autowired
|
|
private CashRefundMapper cashRefundMapper;
|
|
@Autowired
|
|
private RefundMapper refundMapper;
|
|
@Autowired
|
|
private AuditMapper auditMapper;
|
|
@Autowired
|
|
private MarketMapper marketMapper;
|
|
@Override
|
|
public PageInfo<CashRecordDone> select(Integer pageNum, Integer pageSize, CashRecordDone cashRecordDone) {
|
|
PageHelper.startPage(pageNum, pageSize);
|
|
// System.out.println(goldDetail.getMarkets());
|
|
List<CashRecordDone> list = cashRefundMapper.select(cashRecordDone);
|
|
return new PageInfo<>(list);
|
|
}
|
|
|
|
@Override
|
|
public int add(CashRecordDone cashRecordDone) throws Exception {
|
|
if(cashRecordDone.getHandlingCharge()== null){
|
|
throw new Exception("未输入手续费") ;
|
|
}
|
|
if(cashRecordDone.getJwcode()==null){
|
|
throw new Exception("未输入精网号") ;
|
|
}
|
|
if(cashRecordDone.getPaymentAmount()== null){
|
|
throw new Exception("未输入付款金额") ;
|
|
}
|
|
if(cashRecordDone.getPaymentCurrency()== null){
|
|
throw new Exception("未输入付款币种") ;
|
|
}
|
|
if(cashRecordDone.getRefundModel()== null){
|
|
throw new Exception("请填充退款类型") ;
|
|
}
|
|
if(cashRecordDone.getRefundReason()== null){
|
|
throw new Exception("请填写退款理由") ;
|
|
}
|
|
CashRecordDone cashRecordDonetwo = new CashRecordDone();
|
|
cashRecordDonetwo.setAreaServise(cashRecordDone.getAreaServise());
|
|
cashRefundMapper.addAudit(cashRecordDonetwo);
|
|
cashRecordDone.setAuditId(cashRecordDonetwo.getId());
|
|
|
|
cashRecordDone.setOrderType(2);
|
|
cashRecordDone.setStatus(10);
|
|
//生成订单号后半部分
|
|
String orderNumber = cashRecordDone.getOrderCode();
|
|
//构建订单信息
|
|
cashRecordDone.setOrderCode("TK" + orderNumber); //订单号
|
|
cashRecordDone.setMarket(marketMapper.getMarketId(cashRecordDone.getMarket()));
|
|
cashRecordDone.setReceivedMarket(marketMapper.getMarketId(cashRecordDone.getReceivedMarket()));
|
|
cashRefundMapper.insert(cashRecordDone);
|
|
CashRecordDone cashRecordDone1 = new CashRecordDone();
|
|
cashRecordDone1.setId(cashRecordDone.getId());
|
|
cashRecordDone1.setStatus(6);
|
|
if (cashRecordDone1.getId()!=null||cashRecordDone1.getOrderCode()!= null)
|
|
return cashRefundMapper.updateStatus(cashRecordDone1);
|
|
else return Result.error("提交失败").getCode();
|
|
}
|
|
|
|
@Override
|
|
public int update(CashRecordDone cashRecordDone) throws Exception {
|
|
if (cashRecordDone.getJwcode()== null) {
|
|
throw new RuntimeException("未输入精网号");
|
|
}
|
|
if (cashRecordDone.getPaymentAmount()== null) {
|
|
throw new RuntimeException("未输入付款金额");
|
|
}
|
|
if (cashRecordDone.getPaymentCurrency()== null){
|
|
throw new RuntimeException("未输入付款币种");
|
|
}
|
|
if (cashRecordDone.getRefundModel()== null) {
|
|
throw new RuntimeException("请填写退款类型");
|
|
}
|
|
if (cashRecordDone.getRefundReason()== null) {
|
|
throw new RuntimeException("请填写退款理由");
|
|
}
|
|
int result = cashRefundMapper.update(cashRecordDone);
|
|
return (result > 0 ? Result.success("提交成功") : Result.error("提交失败")).getCode();
|
|
}
|
|
|
|
@Override
|
|
public int withdraw(CashRecordDone cashRecordDone) {
|
|
return cashRefundMapper.withdraw(cashRecordDone.getId());
|
|
}
|
|
|
|
@Override
|
|
public int review(CashRecordDone cashRecordDone) throws Exception {
|
|
if(cashRecordDone.getStatus()== 12|| cashRecordDone.getStatus()== 22){
|
|
if(cashRecordDone.getOrderCode()== null){
|
|
throw new RuntimeException("未输入订单号");
|
|
}
|
|
CashRecordDone cashRecordDone1 = new CashRecordDone();
|
|
cashRecordDone1.setOrderCode(cashRecordDone.getOrderCode().substring(2));
|
|
cashRecordDone1.setStatus(4);
|
|
if (cashRecordDone1.getId()!=null||cashRecordDone1.getOrderCode()!= null){
|
|
cashRefundMapper.updateStatus(cashRecordDone1);
|
|
}}
|
|
cashRefundMapper.updateAudit(cashRecordDone);
|
|
int result = cashRefundMapper.review(cashRecordDone);
|
|
return (result > 0 ? Result.success("提交成功") : Result.error("提交失败")).getCode();
|
|
}
|
|
|
|
@Override
|
|
public int executor(CashRecordDone cashRecordDone) throws Exception {
|
|
if(cashRecordDone.getRefundVoucher()== null){
|
|
throw new RuntimeException("未输入退款凭证");
|
|
}
|
|
if(cashRecordDone.getRefundTime()== null){
|
|
throw new RuntimeException("未输入退款时间");
|
|
}
|
|
if(cashRecordDone.getRefundRemark()== null){
|
|
throw new RuntimeException("未输入退款备注");
|
|
}
|
|
if(cashRecordDone.getRefundChannels()== null){
|
|
throw new RuntimeException("未输入退款途径");
|
|
}
|
|
if(cashRecordDone.getRefundCurrency()== null){
|
|
throw new RuntimeException("未输入退款币种");
|
|
}
|
|
if(cashRecordDone.getRefundAmount()== null){
|
|
throw new RuntimeException("未输入退款金额");
|
|
}
|
|
int result = cashRefundMapper.executor(cashRecordDone);
|
|
return (result > 0 ? Result.success("提交成功") : Result.error("提交失败")).getCode();
|
|
}
|
|
|
|
@Override
|
|
public int updateStatus(CashRecordDone cashRecordDone) {
|
|
return cashRefundMapper.updateStatus(cashRecordDone);
|
|
}
|
|
|
|
@Override
|
|
public int finalreview(CashRecordDone cashRecordDone) {
|
|
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("金币充值") ||
|
|
cashRecordDone.getGoodsName().contains("金币充值"))) {
|
|
UserGoldRecord userGoldRecord = new UserGoldRecord();
|
|
userGoldRecord.setOrderCode(cashRecordDone.getOrderCode());
|
|
userGoldRecord.setType((byte) 2);
|
|
userGoldRecord.setIsRefund((byte) 1);
|
|
userGoldRecord.setRefundType("金币退款");
|
|
userGoldRecord.setCrefundModel(cashRecordDone.getRefundModel());
|
|
userGoldRecord.setJwcode(cashRecordDone.getJwcode());
|
|
userGoldRecord.setSumGold(cashRecordDone.getPermanentGold()+cashRecordDone.getFreeGold());
|
|
userGoldRecord.setPermanentGold(cashRecordDone.getPermanentGold());
|
|
int currentMonth = LocalDate.now().getMonthValue();
|
|
if (currentMonth >= 1 && currentMonth <= 6) {
|
|
// 1-6月:设置12月额度,6月保持默认值
|
|
userGoldRecord.setFreeJune(0);
|
|
userGoldRecord.setFreeDecember(cashRecordDone.getFreeGold());
|
|
} else {
|
|
// 7-12月:设置6月额度,12月保持默认值
|
|
userGoldRecord.setFreeJune(cashRecordDone.getFreeGold());
|
|
userGoldRecord.setFreeDecember(0);
|
|
}
|
|
userGoldRecord.setGoodsName(cashRecordDone.getGoodsName());
|
|
userGoldRecord.setPayPlatform("金币系统");
|
|
userGoldRecord.setRemark(cashRecordDone.getRemark());
|
|
userGoldRecord.setAdminId(cashRecordDone.getAuditId());
|
|
userGoldRecord.setAuditStatus(1);
|
|
userGoldRecord.setTaskGold(0);
|
|
String auditName = auditMapper.getName(cashRecordDone.getAuditId());
|
|
refundMapper.add(userGoldRecord);
|
|
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,
|
|
userGoldRecord.getRemark(),(double) userGoldRecord.getPermanentGold() / 100, auditName, "退款金币充值");}
|
|
|
|
cashRefundMapper.updateAudit(cashRecordDone);
|
|
int result = cashRefundMapper.review(cashRecordDone);
|
|
return (result > 0 ? Result.success("提交成功") : Result.error("提交失败")).getCode();
|
|
}
|
|
}
|