Browse Source

Merge branch 'milestone-20251104-现金管理二期' of http://39.101.133.168:8807/huangqizhen/gold-java into lijianlin/feature-20251104110749-现金管理二期

sunjiabei/feature-20251021102635-银行接口
lijianlin 7 days ago
parent
commit
bcaa35085d
  1. 2
      src/main/java/com/example/demo/mapper/cash/CashCollectionMapper.java
  2. 2
      src/main/java/com/example/demo/mapper/cash/CashRefundMapper.java
  3. 2
      src/main/java/com/example/demo/mapper/coin/AuditMapper.java
  4. 1
      src/main/java/com/example/demo/mapper/coin/MarketMapper.java
  5. 356
      src/main/java/com/example/demo/serviceImpl/cash/CashRefundServiceImpl.java
  6. 1
      src/main/resources/cashMapper/CashCollectionMapper.xml
  7. 2
      src/main/resources/cashMapper/CashRefundMapper.xml
  8. 1
      src/main/resources/mapper/MarketMapper.xml

2
src/main/java/com/example/demo/mapper/cash/CashCollectionMapper.java

@ -21,7 +21,7 @@ import java.util.Set;
**/ **/
@Mapper @Mapper
public interface CashCollectionMapper { public interface CashCollectionMapper {
//ceshi
//根据jwcode获取所属地区 //根据jwcode获取所属地区
String getMarketByJwcode(@Param("jwcode") Integer jwcode); String getMarketByJwcode(@Param("jwcode") Integer jwcode);
//新增收款订单 //新增收款订单

2
src/main/java/com/example/demo/mapper/cash/CashRefundMapper.java

@ -34,7 +34,7 @@ public interface CashRefundMapper {
//获取各阶段审核人 //获取各阶段审核人
LhlAudit getAudit(Integer id); LhlAudit getAudit(Integer id);
List<CashRecordDTO> exSelect(CashRecordDTO cashRecordDTO); List<CashRecordDTO> exSelect(CashRecordDTO cashRecordDTO);
//获取审核人
List<LhlAudit> getAuditBatch(Set<Integer> auditIds); List<LhlAudit> getAuditBatch(Set<Integer> auditIds);
//根据id查订单信息 //根据id查订单信息
CashRecordDTO selectById(Integer id); CashRecordDTO selectById(Integer id);

2
src/main/java/com/example/demo/mapper/coin/AuditMapper.java

@ -49,6 +49,6 @@ public interface AuditMapper {
String getName(Integer auditId); String getName(Integer auditId);
//更新首充日期 //更新首充日期
void updateFirstRecharge(Integer jwcode); void updateFirstRecharge(Integer jwcode);
//获取审核人id对应人名
List<Admin> getNamesByIds(Set<Integer> submitterIds); List<Admin> getNamesByIds(Set<Integer> submitterIds);
} }

1
src/main/java/com/example/demo/mapper/coin/MarketMapper.java

@ -18,5 +18,6 @@ public interface MarketMapper {
Market getMarketIdDao(String country); Market getMarketIdDao(String country);
Market getMarketIdBytype(String market); Market getMarketIdBytype(String market);
String getMarketById(String market); String getMarketById(String market);
//获取市场id
List<Market> getMarketByIds(@Param("marketIds") Set<Integer> marketIds); List<Market> getMarketByIds(@Param("marketIds") Set<Integer> marketIds);
} }

356
src/main/java/com/example/demo/serviceImpl/cash/CashRefundServiceImpl.java

@ -1,15 +1,16 @@
package com.example.demo.serviceImpl.cash; package com.example.demo.serviceImpl.cash;
import com.example.demo.domain.entity.Admin;
import com.example.demo.Util.BusinessException;
import com.example.demo.Util.GoldTistV2; import com.example.demo.Util.GoldTistV2;
import com.example.demo.config.RabbitMQConfig; import com.example.demo.config.RabbitMQConfig;
import com.example.demo.domain.entity.Market;
import com.example.demo.domain.entity.User; import com.example.demo.domain.entity.User;
import com.example.demo.domain.entity.UserGoldRecord; import com.example.demo.domain.entity.UserGoldRecord;
import com.example.demo.domain.vo.cash.CashRecordDTO;
import com.example.demo.domain.vo.cash.CashRecordDone;
import com.example.demo.domain.vo.cash.CashRecordRefund;
import com.example.demo.domain.vo.cash.CashRefundMessage;
import com.example.demo.domain.vo.cash.*;
import com.example.demo.domain.vo.coin.Messages; import com.example.demo.domain.vo.coin.Messages;
import com.example.demo.domain.vo.coin.Result; import com.example.demo.domain.vo.coin.Result;
import com.example.demo.exception.SystemException;
import com.example.demo.mapper.cash.CashCollectionMapper;
import com.example.demo.mapper.cash.CashRefundMapper; import com.example.demo.mapper.cash.CashRefundMapper;
import com.example.demo.mapper.coin.AuditMapper; import com.example.demo.mapper.coin.AuditMapper;
import com.example.demo.mapper.coin.MarketMapper; import com.example.demo.mapper.coin.MarketMapper;
@ -18,31 +19,29 @@ import com.example.demo.mapper.coin.RefundMapper;
import com.example.demo.service.cash.RefundService; import com.example.demo.service.cash.RefundService;
import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo; import com.github.pagehelper.PageInfo;
import jakarta.servlet.http.HttpServletRequest;
import org.springframework.amqp.rabbit.core.RabbitTemplate; import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.math.RoundingMode;
import java.time.LocalDate; import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.Date;
import java.util.List;
import java.util.UUID;
import java.util.*;
import java.util.function.Function;
import java.util.stream.Collectors;
import static org.apache.commons.lang3.StringUtils.substring; import static org.apache.commons.lang3.StringUtils.substring;
/** /**
* @program: GOLD * @program: GOLD
* @ClassName CashRefundServiceImpl * @ClassName CashRefundServiceImpl
* @description: 处理退款相关业务逻辑
* @description:
* @author: huangqizhen * @author: huangqizhen
* @create: 202509-28 15:02 * @create: 202509-28 15:02
* @Version 1.0 * @Version 1.0
**/ **/
@Service @Service
@Transactional
public class CashRefundServiceImpl implements RefundService { public class CashRefundServiceImpl implements RefundService {
@Autowired @Autowired
@ -57,33 +56,120 @@ public class CashRefundServiceImpl implements RefundService {
private RabbitTemplate rabbitTemplate; private RabbitTemplate rabbitTemplate;
@Autowired @Autowired
private OperationLogMapper operationLogMapper; private OperationLogMapper operationLogMapper;
@Autowired
private CashCollectionMapper cashCollectionMapper;
@Override @Override
public PageInfo<CashRecordDTO> select(Integer pageNum, Integer pageSize, CashRecordDTO cashRecordDTO) { public PageInfo<CashRecordDTO> select(Integer pageNum, Integer pageSize, CashRecordDTO cashRecordDTO) {
PageHelper.startPage(pageNum, pageSize); PageHelper.startPage(pageNum, pageSize);
// System.out.println(goldDetail.getMarkets());
List<CashRecordDTO> list = cashRefundMapper.select(cashRecordDTO); List<CashRecordDTO> list = cashRefundMapper.select(cashRecordDTO);
if (list.isEmpty()) {
return new PageInfo<>(list); return new PageInfo<>(list);
} }
System.out.println("135");
// 批量收集ID
Set<Integer> relatedIds = new HashSet<>();
Set<Integer> marketIds = new HashSet<>();
Set<Integer> submitterIds = new HashSet<>();
Set<Integer> auditIds = new HashSet<>();
list.forEach(item -> {
if (item.getRelatedId() != null) relatedIds.add(item.getRelatedId());
if (item.getMarket() != null) marketIds.add(item.getMarket());
if (item.getSubmitterId() != null) submitterIds.add(item.getSubmitterId());
if (item.getAuditId() != null) auditIds.add(item.getAuditId());
});
// 批量查询
Map<Integer, CashCollection> cashCollectionMap = cashCollectionMapper.selectBatchIds(relatedIds)
.stream().collect(Collectors.toMap(CashCollection::getId, Function.identity()));
Map<Integer, String> marketNameMap = marketMapper.getMarketByIds(marketIds)
.stream().collect(Collectors.toMap(Market::getId, Market::getName));
Map<Integer, String> submitterNameMap = auditMapper.getNamesByIds(submitterIds)
.stream().collect(Collectors.toMap(Admin::getId, Admin::getAdminName));
Map<Integer, LhlAudit> auditMap = cashRefundMapper.getAuditBatch(auditIds)
.stream().collect(Collectors.toMap(LhlAudit::getId, Function.identity()));
// 处理数据
list.forEach(item -> {
CashCollection cashCollection = cashCollectionMap.get(item.getRelatedId());
if (cashCollection != null) {
processCashCollection(item, cashCollection);
}
String marketName = marketNameMap.get(item.getMarket());
String submitter = submitterNameMap.get(item.getSubmitterId());
LhlAudit lhlAudit = auditMap.get(item.getAuditId());
item.setMarketName(marketName != null ? marketName : "");
item.setSubmitter(submitter != null ? submitter : "");
if (lhlAudit != null) {
item.setAreaServise(lhlAudit.getAreaServise());
item.setAreaFinance(lhlAudit.getAreaFinance());
item.setAreaCharge(lhlAudit.getAreaCharge());
item.setHeadFinance(lhlAudit.getHeadFinace());
}
});
return new PageInfo<>(list);
}
private void processCashCollection(CashRecordDTO item, CashCollection cashCollection) {
// 设置默认值
Integer freeGold = cashCollection.getFreeGold() != null ? cashCollection.getFreeGold() : 0;
Integer permanentGold = cashCollection.getPermanentGold() != null ? cashCollection.getPermanentGold() : 0;
BigDecimal free = new BigDecimal(freeGold).divide(new BigDecimal(100), 2, RoundingMode.HALF_UP);
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());
item.setPaymentAmount(cashCollection.getPaymentAmount());
item.setReceivedCurrency(cashCollection.getReceivedCurrency());
item.setReceivedAmount(cashCollection.getReceivedAmount());
item.setPayType(cashCollection.getPayType());
item.setPayTime(cashCollection.getPayTime());
item.setPayBankCode(cashCollection.getBankCode());
item.setPaySubmitter(cashCollection.getSubmitterName());
item.setAudit(cashCollection.getAuditName());
item.setReceivedTime(cashCollection.getReceivedTime());
item.setPayVoucher(cashCollection.getVoucher());
item.setPayRemark(cashCollection.getRemark());
item.setHandlingCharge(cashCollection.getHandlingCharge());
// 处理金币金额
if (item.getPermanentGold() != null) {
item.setPermanentGold(item.getPermanentGold().divide(new BigDecimal(100), 2, RoundingMode.HALF_UP));
}
if (item.getFreeGold() != null) {
item.setFreeGold(item.getFreeGold().divide(new BigDecimal(100), 2, RoundingMode.HALF_UP));
}
}
// 添加退款订单
@Override @Override
public int add(CashRecordRefund cashRecordRefund) throws Exception { public int add(CashRecordRefund cashRecordRefund) throws Exception {
if (cashRecordRefund.getJwcode() == null) {
throw new 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("请填写退款理由") ;
} }
CashRecordDone cashRecordDonetwo = new CashRecordDone(); CashRecordDone cashRecordDonetwo = new CashRecordDone();
cashRecordDonetwo.setAreaServise(cashRecordRefund.getAreaServise()); cashRecordDonetwo.setAreaServise(cashRecordRefund.getAreaServise());
cashRefundMapper.addAudit(cashRecordDonetwo); cashRefundMapper.addAudit(cashRecordDonetwo);
cashRecordRefund.setAuditId(cashRecordDonetwo.getId()); cashRecordRefund.setAuditId(cashRecordDonetwo.getId());
// cashRecordRefund.setStatus(10);
cashRecordRefund.setStatus(10);
//生成订单号后半部分 //生成订单号后半部分
String orderNumber = cashRecordRefund.getOrderCode(); String orderNumber = cashRecordRefund.getOrderCode();
//构建订单信息 //构建订单信息
@ -91,9 +177,9 @@ public class CashRefundServiceImpl implements RefundService {
cashRecordRefund.setMarket(String.valueOf(Integer.valueOf(marketMapper.getMarketId(cashRecordRefund.getMarket())))); cashRecordRefund.setMarket(String.valueOf(Integer.valueOf(marketMapper.getMarketId(cashRecordRefund.getMarket()))));
cashRefundMapper.insert(cashRecordRefund); cashRefundMapper.insert(cashRecordRefund);
CashRecordDone cashRecordDone1 = new CashRecordDone(); CashRecordDone cashRecordDone1 = new CashRecordDone();
cashRecordDone1.setId(cashRecordRefund.getId());
cashRecordDone1.setId(cashRecordRefund.getOriginalOrderId());
cashRecordDone1.setStatus(6); cashRecordDone1.setStatus(6);
if (cashRecordDone1.getId() != null || cashRecordDone1.getOrderCode() != null)
if (cashRecordDone1.getId()!=null||cashRecordDone1.getOrderCode()!= null)
cashRefundMapper.updateStatus(cashRecordDone1); cashRefundMapper.updateStatus(cashRecordDone1);
else return Result.error("提交失败").getCode(); else return Result.error("提交失败").getCode();
@ -110,50 +196,47 @@ public class CashRefundServiceImpl implements RefundService {
rabbitTemplate.convertAndSend(RabbitMQConfig.CASH_REFUND_EXCHANGE, "cash.refund.save", message); rabbitTemplate.convertAndSend(RabbitMQConfig.CASH_REFUND_EXCHANGE, "cash.refund.save", message);
return Result.success("提交成功").getCode(); return Result.success("提交成功").getCode();
} }
// 更新退款订单信息
@Override @Override
public int update(CashRecordDone cashRecordDone) throws Exception { public int update(CashRecordDone cashRecordDone) throws Exception {
if (cashRecordDone.getJwcode() == null) {
if (cashRecordDone.getJwcode()== null) {
throw new RuntimeException("未输入精网号"); throw new RuntimeException("未输入精网号");
} }
if (cashRecordDone.getPaymentAmount() == null) {
if (cashRecordDone.getPaymentAmount()== null) {
throw new RuntimeException("未输入付款金额"); throw new RuntimeException("未输入付款金额");
} }
if (cashRecordDone.getPaymentCurrency() == null) {
if (cashRecordDone.getPaymentCurrency()== null){
throw new RuntimeException("未输入付款币种"); throw new RuntimeException("未输入付款币种");
} }
if (cashRecordDone.getRefundModel() == null) {
if (cashRecordDone.getRefundModel()== null) {
throw new RuntimeException("请填写退款类型"); throw new RuntimeException("请填写退款类型");
} }
if (cashRecordDone.getRefundReason() == null) {
if (cashRecordDone.getRefundReason()== null) {
throw new RuntimeException("请填写退款理由"); throw new RuntimeException("请填写退款理由");
} }
int result = cashRefundMapper.update(cashRecordDone); int result = cashRefundMapper.update(cashRecordDone);
return (result > 0 ? Result.success("提交成功") : Result.error("提交失败")).getCode(); return (result > 0 ? Result.success("提交成功") : Result.error("提交失败")).getCode();
} }
// 撤回退款订单
@Override @Override
public int withdraw(CashRecordDone cashRecordDone) { public int withdraw(CashRecordDone cashRecordDone) {
return cashRefundMapper.withdraw(cashRecordDone.getId()); return cashRefundMapper.withdraw(cashRecordDone.getId());
} }
// 审核退款订单
@Override @Override
public int review(CashRecordDone cashRecordDone) throws Exception { public int review(CashRecordDone cashRecordDone) throws Exception {
if (cashRecordDone.getStatus() == 12 || cashRecordDone.getStatus() == 22) {
if (cashRecordDone.getOrderCode() == null) {
if(cashRecordDone.getStatus()== 12|| cashRecordDone.getStatus()== 22){
if(cashRecordDone.getOrderCode()== null){
throw new RuntimeException("未输入订单号"); throw new RuntimeException("未输入订单号");
} }
CashRecordDone cashRecordDone1 = new CashRecordDone();
CashRecordDone cashRecordDone1 = new CashRecordDone();
cashRecordDone1.setOrderCode(cashRecordDone.getOrderCode().substring(2)); cashRecordDone1.setOrderCode(cashRecordDone.getOrderCode().substring(2));
cashRecordDone1.setStatus(4); cashRecordDone1.setStatus(4);
if (cashRecordDone1.getId() != null || cashRecordDone1.getOrderCode() != null) {
if (cashRecordDone1.getId()!=null||cashRecordDone1.getOrderCode()!= null){
cashRefundMapper.updateStatus(cashRecordDone1); cashRefundMapper.updateStatus(cashRecordDone1);
}
}
}}
cashRefundMapper.updateAudit(cashRecordDone); cashRefundMapper.updateAudit(cashRecordDone);
int result = cashRefundMapper.review(cashRecordDone); int result = cashRefundMapper.review(cashRecordDone);
CashRecordDTO cashRecordDTO = cashRefundMapper.selectById(cashRecordDone.getId()); CashRecordDTO cashRecordDTO = cashRefundMapper.selectById(cashRecordDone.getId());
@ -164,7 +247,7 @@ public class CashRefundServiceImpl implements RefundService {
message.setName(cashRecordDTO.getName()); message.setName(cashRecordDTO.getName());
message.setStatus(cashRecordDTO.getStatus()); message.setStatus(cashRecordDTO.getStatus());
message.setDesc(cashRecordDTO.getJwcode()+"用户有条退款订单需审核"); message.setDesc(cashRecordDTO.getJwcode()+"用户有条退款订单需审核");
message.setTitle("现金退款--新增退款");
message.setTitle("现金退款--当地退款审核");
message.setType(1); message.setType(1);
message.setTypeId(cashRecordDTO.getId()); message.setTypeId(cashRecordDTO.getId());
message.setMarket(cashRecordDTO.getMarket()); message.setMarket(cashRecordDTO.getMarket());
@ -177,56 +260,51 @@ public class CashRefundServiceImpl implements RefundService {
return (result > 0 ? Result.success("提交成功") : Result.error("提交失败")).getCode(); return (result > 0 ? Result.success("提交成功") : Result.error("提交失败")).getCode();
} }
// 执行退款操作
@Override @Override
public int executor(CashRecordDone cashRecordDone) throws Exception { public int executor(CashRecordDone cashRecordDone) throws Exception {
if (cashRecordDone.getRefundVoucher() == null) {
if(cashRecordDone.getRefundVoucher()== null){
throw new RuntimeException("未输入退款凭证"); throw new RuntimeException("未输入退款凭证");
} }
if (cashRecordDone.getRefundTime() == null) {
if(cashRecordDone.getRefundTime()== null){
throw new RuntimeException("未输入退款时间"); throw new RuntimeException("未输入退款时间");
} }
if (cashRecordDone.getRefundRemark() == null) {
if(cashRecordDone.getRefundRemark()== null){
throw new RuntimeException("未输入退款备注"); throw new RuntimeException("未输入退款备注");
} }
if (cashRecordDone.getRefundChannels() == null) {
if(cashRecordDone.getRefundChannels()== null){
throw new RuntimeException("未输入退款途径"); throw new RuntimeException("未输入退款途径");
} }
if (cashRecordDone.getRefundCurrency() == null) {
if(cashRecordDone.getRefundCurrency()== null){
throw new RuntimeException("未输入退款币种"); throw new RuntimeException("未输入退款币种");
} }
if (cashRecordDone.getRefundAmount() == null) {
if(cashRecordDone.getRefundAmount()== null){
throw new RuntimeException("未输入退款金额"); throw new RuntimeException("未输入退款金额");
} }
int result = cashRefundMapper.executor(cashRecordDone); int result = cashRefundMapper.executor(cashRecordDone);
return (result > 0 ? Result.success("提交成功") : Result.error("提交失败")).getCode(); return (result > 0 ? Result.success("提交成功") : Result.error("提交失败")).getCode();
} }
// 更新退款订单状态
@Override @Override
public int updateStatus(CashRecordDone cashRecordDone) { public int updateStatus(CashRecordDone cashRecordDone) {
return cashRefundMapper.updateStatus(cashRecordDone); return cashRefundMapper.updateStatus(cashRecordDone);
} }
// 最终审核退款订单
@Override @Override
public int finalreview(CashRecordDone cashRecordDone) { public int finalreview(CashRecordDone cashRecordDone) {
if (cashRecordDone.getPermanentGold() == null) {
if(cashRecordDone.getPermanentGold()== null){
cashRecordDone.setPermanentGold(0); cashRecordDone.setPermanentGold(0);
} }
if (cashRecordDone.getFreeGold() == null) {
if(cashRecordDone.getFreeGold()== null){
cashRecordDone.setFreeGold(0); cashRecordDone.setFreeGold(0);
} }
if (cashRecordDone.getStatus() == 32) {
if(cashRecordDone.getStatus()== 32){
CashRecordDone cashRecordDone1 = new CashRecordDone(); CashRecordDone cashRecordDone1 = new CashRecordDone();
cashRecordDone1.setOrderCode(cashRecordDone.getOrderCode().substring(2)); cashRecordDone1.setOrderCode(cashRecordDone.getOrderCode().substring(2));
cashRecordDone1.setStatus(4); cashRecordDone1.setStatus(4);
if (cashRecordDone1.getId() != null || cashRecordDone1.getOrderCode() != null) {
if (cashRecordDone1.getId()!=null||cashRecordDone1.getOrderCode()!= null){
cashRefundMapper.updateStatus(cashRecordDone1); cashRefundMapper.updateStatus(cashRecordDone1);
}
}
if (cashRecordDone.getGoodsName() != null && cashRecordDone.getStatus() == 40 &&
}}
if (cashRecordDone.getGoodsName() != null &&cashRecordDone.getStatus() ==40 &&
(cashRecordDone.getGoodsName().equals("金币充值") || (cashRecordDone.getGoodsName().equals("金币充值") ||
cashRecordDone.getGoodsName().contains("金币充值"))) { cashRecordDone.getGoodsName().contains("金币充值"))) {
UserGoldRecord userGoldRecord = new UserGoldRecord(); UserGoldRecord userGoldRecord = new UserGoldRecord();
@ -236,7 +314,7 @@ public class CashRefundServiceImpl implements RefundService {
userGoldRecord.setRefundType("金币退款"); userGoldRecord.setRefundType("金币退款");
userGoldRecord.setCrefundModel(cashRecordDone.getRefundModel()); userGoldRecord.setCrefundModel(cashRecordDone.getRefundModel());
userGoldRecord.setJwcode(cashRecordDone.getJwcode()); userGoldRecord.setJwcode(cashRecordDone.getJwcode());
userGoldRecord.setSumGold(cashRecordDone.getPermanentGold() + cashRecordDone.getFreeGold());
userGoldRecord.setSumGold(cashRecordDone.getPermanentGold()+cashRecordDone.getFreeGold());
userGoldRecord.setPermanentGold(cashRecordDone.getPermanentGold()); userGoldRecord.setPermanentGold(cashRecordDone.getPermanentGold());
int currentMonth = LocalDate.now().getMonthValue(); int currentMonth = LocalDate.now().getMonthValue();
if (currentMonth >= 1 && currentMonth <= 6) { if (currentMonth >= 1 && currentMonth <= 6) {
@ -265,9 +343,8 @@ public class CashRefundServiceImpl implements RefundService {
user.setCurrentFreeDecember(BigDecimal.valueOf(-userGoldRecord.getFreeDecember())); //当前十二月免费金币 user.setCurrentFreeDecember(BigDecimal.valueOf(-userGoldRecord.getFreeDecember())); //当前十二月免费金币
auditMapper.updateUserGold(user); auditMapper.updateUserGold(user);
GoldTistV2.addCoinNew(userGoldRecord.getJwcode().toString(), 58, //退款免费+永久金币-充值 GoldTistV2.addCoinNew(userGoldRecord.getJwcode().toString(), 58, //退款免费+永久金币-充值
(double) (userGoldRecord.getFreeDecember() + userGoldRecord.getFreeJune() + userGoldRecord.getPermanentGold()) / 100,
userGoldRecord.getRemark(), (double) userGoldRecord.getPermanentGold() / 100, auditName, "退款金币充值");
}
(double) (userGoldRecord.getFreeDecember()+userGoldRecord.getFreeJune()+userGoldRecord.getPermanentGold() ) /100,
userGoldRecord.getRemark(),(double) userGoldRecord.getPermanentGold() / 100, auditName, "退款金币充值");}
cashRefundMapper.updateAudit(cashRecordDone); cashRefundMapper.updateAudit(cashRecordDone);
int result = cashRefundMapper.review(cashRecordDone); int result = cashRefundMapper.review(cashRecordDone);
@ -279,7 +356,7 @@ public class CashRefundServiceImpl implements RefundService {
message.setName(cashRecordDTO.getName()); message.setName(cashRecordDTO.getName());
message.setStatus(cashRecordDTO.getStatus()); message.setStatus(cashRecordDTO.getStatus());
message.setDesc(cashRecordDTO.getJwcode()+"用户有条退款订单需审核"); message.setDesc(cashRecordDTO.getJwcode()+"用户有条退款订单需审核");
message.setTitle("现金退款--新增退款");
message.setTitle("现金退款--执行人退款提交");
message.setType(1); message.setType(1);
message.setTypeId(cashRecordDTO.getId()); message.setTypeId(cashRecordDTO.getId());
message.setMarket(cashRecordDTO.getMarket()); message.setMarket(cashRecordDTO.getMarket());
@ -291,51 +368,154 @@ public class CashRefundServiceImpl implements RefundService {
return (result > 0 ? Result.success("提交成功") : Result.error("提交失败")).getCode(); return (result > 0 ? Result.success("提交成功") : Result.error("提交失败")).getCode();
} }
// 辅助方法根据状态码获取状态描述
private String getStatusDescription(Integer status) {
switch (status) {
case 10:
return "地区财务待审核";
case 11:
return "地区财务手动撤回待编辑提交";
case 12:
return "地区财务驳回";
case 20:
return "地区负责人待审核";
case 22:
return "地区负责人驳回";
case 30:
return "总部财务待审核";
case 32:
return "总部财务驳回";
case 40:
return "执行人待处理";
case 41:
return "执行人已处理,退款结束";
default:
return "未知状态";
}
}
// 财务查询退款订单列表
@Override @Override
public PageInfo<CashRecordDTO> financeSelect(Integer pageNum, Integer pageSize, CashRecordDTO cashRecordDTO) { public PageInfo<CashRecordDTO> financeSelect(Integer pageNum, Integer pageSize, CashRecordDTO cashRecordDTO) {
PageHelper.startPage(pageNum, pageSize); PageHelper.startPage(pageNum, pageSize);
// System.out.println(goldDetail.getMarkets()); // System.out.println(goldDetail.getMarkets());
List<CashRecordDTO> list = cashRefundMapper.financeSelect(cashRecordDTO); List<CashRecordDTO> list = cashRefundMapper.financeSelect(cashRecordDTO);
if (list.isEmpty()) {
return new PageInfo<>(list);
}
// 批量收集ID
Set<Integer> relatedIds = new HashSet<>();
Set<Integer> marketIds = new HashSet<>();
Set<Integer> submitterIds = new HashSet<>();
Set<Integer> auditIds = new HashSet<>();
list.forEach(item -> {
if (item.getRelatedId() != null) relatedIds.add(item.getRelatedId());
if (item.getMarket() != null) marketIds.add(item.getMarket());
if (item.getSubmitterId() != null) submitterIds.add(item.getSubmitterId());
if (item.getAuditId() != null) auditIds.add(item.getAuditId());
});
// 批量查询
Map<Integer, CashCollection> cashCollectionMap = cashCollectionMapper.selectBatchIds(relatedIds)
.stream().collect(Collectors.toMap(CashCollection::getId, Function.identity()));
Map<Integer, String> marketNameMap = marketMapper.getMarketByIds(marketIds)
.stream().collect(Collectors.toMap(Market::getId, Market::getName));
Map<Integer, String> submitterNameMap = auditMapper.getNamesByIds(submitterIds)
.stream().collect(Collectors.toMap(Admin::getId, Admin::getAdminName));
Map<Integer, LhlAudit> auditMap = cashRefundMapper.getAuditBatch(auditIds)
.stream().collect(Collectors.toMap(LhlAudit::getId, Function.identity()));
// 处理数据
list.forEach(item -> {
CashCollection cashCollection = cashCollectionMap.get(item.getRelatedId());
if (cashCollection != null) {
processCashCollection(item, cashCollection);
}
String marketName = marketNameMap.get(item.getMarket());
String submitter = submitterNameMap.get(item.getSubmitterId());
LhlAudit lhlAudit = auditMap.get(item.getAuditId());
item.setMarketName(marketName != null ? marketName : "");
item.setSubmitter(submitter != null ? submitter : "");
if (lhlAudit != null) {
item.setAreaServise(lhlAudit.getAreaServise());
item.setAreaFinance(lhlAudit.getAreaFinance());
item.setAreaCharge(lhlAudit.getAreaCharge());
item.setHeadFinance(lhlAudit.getHeadFinace());
}
});
return new PageInfo<>(list); return new PageInfo<>(list);
} }
@Override @Override
public PageInfo<CashRecordDTO> exSelect(Integer pageNum, Integer pageSize, CashRecordDTO cashRecordDTO) { public PageInfo<CashRecordDTO> exSelect(Integer pageNum, Integer pageSize, CashRecordDTO cashRecordDTO) {
PageHelper.startPage(pageNum, pageSize); PageHelper.startPage(pageNum, pageSize);
// System.out.println(goldDetail.getMarkets());
List<CashRecordDTO> list = cashRefundMapper.exSelect(cashRecordDTO); List<CashRecordDTO> list = cashRefundMapper.exSelect(cashRecordDTO);
if (list.isEmpty()) {
return new PageInfo<>(list); return new PageInfo<>(list);
} }
// 批量收集ID
Set<Integer> relatedIds = new HashSet<>();
Set<Integer> marketIds = new HashSet<>();
Set<Integer> submitterIds = new HashSet<>();
Set<Integer> auditIds = new HashSet<>();
list.forEach(item -> {
if (item.getRelatedId() != null) relatedIds.add(item.getRelatedId());
if (item.getMarket() != null) marketIds.add(item.getMarket());
if (item.getSubmitterId() != null) submitterIds.add(item.getSubmitterId());
if (item.getAuditId() != null) auditIds.add(item.getAuditId());
});
// 批量查询
Map<Integer, CashCollection> cashCollectionMap = cashCollectionMapper.selectBatchIds(relatedIds)
.stream().collect(Collectors.toMap(CashCollection::getId, Function.identity()));
Map<Integer, String> marketNameMap = marketMapper.getMarketByIds(marketIds)
.stream().collect(Collectors.toMap(Market::getId, Market::getName));
Map<Integer, String> submitterNameMap = auditMapper.getNamesByIds(submitterIds)
.stream().collect(Collectors.toMap(Admin::getId, Admin::getAdminName));
Map<Integer, LhlAudit> auditMap = cashRefundMapper.getAuditBatch(auditIds)
.stream().collect(Collectors.toMap(LhlAudit::getId, Function.identity()));
// 处理数据
list.forEach(item -> {
CashCollection cashCollection = cashCollectionMap.get(item.getRelatedId());
if (cashCollection != null) {
processCashCollection(item, cashCollection);
}
String marketName = marketNameMap.get(item.getMarket());
String submitter = submitterNameMap.get(item.getSubmitterId());
LhlAudit lhlAudit = auditMap.get(item.getAuditId());
item.setMarketName(marketName != null ? marketName : "");
item.setSubmitter(submitter != null ? submitter : "");
if (lhlAudit != null) {
item.setAreaServise(lhlAudit.getAreaServise());
item.setAreaFinance(lhlAudit.getAreaFinance());
item.setAreaCharge(lhlAudit.getAreaCharge());
item.setHeadFinance(lhlAudit.getHeadFinace());
}
});
return new PageInfo<>(list);
}
@Override @Override
public void addOnline(CashRecordRefund cashRecordRefund) { public void addOnline(CashRecordRefund cashRecordRefund) {
if(cashRecordRefund.getJwcode()==null){
throw new BusinessException("未输入精网号") ;
}
if(cashRecordRefund.getRefundModel()== null){
throw new BusinessException("请填充退款类型") ;
}
if(cashRecordRefund.getRefundReason()== null){
throw new BusinessException("请填写退款理由") ;
}
CashRecordDone cashRecordDonetwo = new CashRecordDone();
cashRecordDonetwo.setAreaServise(cashRecordRefund.getAreaServise());
cashRefundMapper.addAudit(cashRecordDonetwo);
cashRecordRefund.setAuditId(cashRecordDonetwo.getId());
cashRecordRefund.setStatus(20);
//生成订单号后半部分
String orderNumber = cashRecordRefund.getOrderCode();
//构建订单信息
cashRecordRefund.setOrderCode("TK" + orderNumber); //订单号
cashRecordRefund.setMarket(String.valueOf(Integer.valueOf(marketMapper.getMarketId(cashRecordRefund.getMarket()))));
cashRefundMapper.insert(cashRecordRefund);
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("提交失败") ;
} }
} }

1
src/main/resources/cashMapper/CashCollectionMapper.xml

@ -254,6 +254,7 @@
left join recharge_activity ra on ra.id = cr.activity left join recharge_activity ra on ra.id = cr.activity
where cr.id=#{id} where cr.id=#{id}
</select> </select>
<!--根据id查询收款订单-->
<select id="selectBatchIds" resultType="com.example.demo.domain.vo.cash.CashCollection"> <select id="selectBatchIds" resultType="com.example.demo.domain.vo.cash.CashCollection">
select select
cr.id, cr.jwcode, cr.name, cr.market, cr.id, cr.jwcode, cr.name, cr.market,

2
src/main/resources/cashMapper/CashRefundMapper.xml

@ -383,7 +383,7 @@
</otherwise> </otherwise>
</choose> </choose>
</select> </select>
<!-- 批量获取审核人信息 -->
<select id="getAuditBatch" resultType="com.example.demo.domain.vo.cash.LhlAudit"> <select id="getAuditBatch" resultType="com.example.demo.domain.vo.cash.LhlAudit">
SELECT * SELECT *
FROM lhl_audit FROM lhl_audit

1
src/main/resources/mapper/MarketMapper.xml

@ -38,6 +38,7 @@
<select id="getMarketById" resultType="java.lang.String"> <select id="getMarketById" resultType="java.lang.String">
select name from market where id=#{market} select name from market where id=#{market}
</select> </select>
<!-- 根据ID列表查询市场名称 -->
<select id="getMarketByIds" resultType="com.example.demo.domain.entity.Market"> <select id="getMarketByIds" resultType="com.example.demo.domain.entity.Market">
select id, name from market select id, name from market
where 1 = 0 where 1 = 0

Loading…
Cancel
Save