Browse Source

10.15退款相关接口口完成

lijianlin/feature-202509231533026-现金管理-收款管理
huangqizhen 1 month ago
parent
commit
2f335b2c04
  1. 30
      src/main/java/com/example/demo/controller/cash/CashRefundController.java
  2. 25
      src/main/java/com/example/demo/controller/cash/RefundApprovalController.java
  3. 4
      src/main/java/com/example/demo/domain/vo/cash/CashRecordDone.java
  4. 5
      src/main/java/com/example/demo/mapper/cash/CashRefundMapper.java
  5. 21
      src/main/java/com/example/demo/service/cash/RefundApprovalService.java
  6. 3
      src/main/java/com/example/demo/service/cash/RefundService.java
  7. 56
      src/main/java/com/example/demo/serviceImpl/cash/CashRefundServiceImpl.java
  8. 50
      src/main/resources/cashMapper/CashRefundMapper.xml

30
src/main/java/com/example/demo/controller/cash/CashRefundController.java

@ -5,6 +5,7 @@ import com.example.demo.Util.JWTUtil;
import com.example.demo.domain.entity.Admin;
import com.example.demo.domain.vo.cash.CashRecordDone;
import com.example.demo.domain.vo.coin.Page;
import com.example.demo.domain.vo.coin.RechargeUser;
import com.example.demo.domain.vo.coin.Result;
import com.example.demo.service.cash.RefundService;
import com.example.demo.service.coin.MarketService;
@ -83,18 +84,39 @@ public class CashRefundController {
}
// 校验通过保持 requestedMarkets 不变
}
return Result.success(refundService.select(page.getPageNum(),page.getPageSize(),page.getCashRecordDone()));
return Result.success(refundService.select(page.getPageNum(), page.getPageSize(), page.getCashRecordDone()));
}
@PostMapping("/add")
public Result add(@RequestBody CashRecordDone cashRecordDone){
public Result add(@RequestBody CashRecordDone cashRecordDone) {
try {
return Result.success(refundService.add(cashRecordDone));
} catch (Exception e) {
return Result.error("请检查数据的格式");
}
}
@PostMapping("/update")
public Result update(@RequestBody CashRecordDone cashRecordDone){
return Result.success(refundService.update(cashRecordDone));
public Result update(@RequestBody CashRecordDone cashRecordDone) {
if (cashRecordDone.getStatus() == 10) {
return Result.success(refundService.withdraw(cashRecordDone));
}
else if (cashRecordDone.getStatus() == 11) {
return Result.success(refundService.update(cashRecordDone));
}
else return Result.error("该订单状态无法支持此操作");
}
@PostMapping("/review")
public Result review(@RequestBody CashRecordDone cashRecordDone) {
return Result.success(refundService.review(cashRecordDone));
}
// @PostMapping("/finalReview")
// public Result finalReview(@RequestBody CashRecordDone cashRecordDone) {
// return Result.success(refundService.review(cashRecordDone));
// }
@PostMapping("/executor")
public Result executor(@RequestBody CashRecordDone cashRecordDone) {
return Result.success(refundService.executor(cashRecordDone));
}
}

25
src/main/java/com/example/demo/controller/cash/RefundApprovalController.java

@ -22,31 +22,6 @@ public class RefundApprovalController {
private final RefundApprovalService refundApprovalService;
/**
* 获取用户可审批的退款订单列表
*/
@PostMapping("/approvable-orders")
public Map<String, Object> getApprovableRefundOrders(@RequestBody User user) {
try {
List<CashRecord> approvableOrders = refundApprovalService.getApprovableRefundOrders(user);
Map<String, Object> response = new HashMap<>();
response.put("success", true);
response.put("message", "获取可审批订单成功");
response.put("data", approvableOrders);
response.put("total", approvableOrders.size());
return response;
} catch (Exception e) {
Map<String, Object> response = new HashMap<>();
response.put("success", false);
response.put("message", "获取可审批订单失败: " + e.getMessage());
response.put("data", new ArrayList<>());
response.put("total", 0);
return response;
}
}
/**
* 提交退款审批
*/
@PostMapping("/submit")

4
src/main/java/com/example/demo/domain/vo/cash/CashRecordDone.java

@ -49,7 +49,9 @@ public class CashRecordDone {
private String payType;
/** 到账地区 */
private String receivedMarket;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai")
private Date payTime; // 付款时间
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai")
private Date receivedTime; // 到账时间
/** 商品数量 */
private Integer goodNum;
@ -93,6 +95,8 @@ public class CashRecordDone {
private String submitterName;
private String auditName;
private String executorName;
private String refundCurrency;
private String refundAmount;
private String processInstanceId; // 流程实例ID
private String currentTaskId; // 当前任务ID

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

@ -20,4 +20,9 @@ public interface CashRefundMapper {
List<CashCollection> select(CashRecordDone cashRecordDone);
int update(CashRecordDone cashRecordDone);
int insert(CashRecordDone cashRecordDone);
int withdraw(Integer id);
int review(CashRecordDone cashRecordDone);
int executor(CashRecordDone cashRecordDone);
}

21
src/main/java/com/example/demo/service/cash/RefundApprovalService.java

@ -147,27 +147,6 @@ public class RefundApprovalService {
return isSubmitter && cashRecord.canWithdraw();
}
public List<CashRecord> getApprovableRefundOrders(User user) {
// // 1. 获取用户管辖的所有具体市场ID
// Set<Integer> userManagedMarketIds = marketService.getUserManagedSpecificMarketIds(user);
//
// if (userManagedMarketIds.isEmpty()) {
// log.warn("用户{}没有管辖的市场", user.getId());
// return new ArrayList<>();
// }
//
// // 2. 从数据库查询待审批的退款订单
// List<CashRecord> pendingOrders = cashRecordRepository.findByStatusAndMarketIdIn(
// "PENDING_APPROVAL",
// userManagedMarketIds
// );
//
// // 3. 过滤出用户有权限审批的订单
// return pendingOrders.stream()
// .filter(order -> order.isRefundOrder() && canUserApproveOrder(user, order))
// .collect(Collectors.toList());
return null;
}
// 提交退款审批
public boolean submitRefundApproval(User user, CashRecord cashRecord, String approvalResult, String comments) {
if (!canUserApproveOrder(user, cashRecord)) {

3
src/main/java/com/example/demo/service/cash/RefundService.java

@ -16,5 +16,8 @@ public interface RefundService {
PageInfo<CashCollection> select(Integer pageNum, Integer pageSize, CashRecordDone cashRecordDone);
int add(CashRecordDone cashRecordDone) throws Exception;
int update(CashRecordDone cashRecordDone);
int withdraw(CashRecordDone cashRecordDone);
int review(CashRecordDone cashRecordDone);
int executor(CashRecordDone cashRecordDone);
}

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

@ -3,6 +3,7 @@ package com.example.demo.serviceImpl.cash;
import com.example.demo.domain.entity.CashRecord;
import com.example.demo.domain.vo.cash.CashCollection;
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.service.cash.RefundService;
import com.github.pagehelper.PageHelper;
@ -37,6 +38,9 @@ public class CashRefundServiceImpl implements RefundService {
@Override
public int add(CashRecordDone cashRecordDone) throws Exception {
if(cashRecordDone.getHandlingCharge()== null){
throw new Exception("未输入手续费") ;
}
if(cashRecordDone.getJwcode()==null){
throw new Exception("未输入精网号") ;
}
@ -62,6 +66,56 @@ public class CashRefundServiceImpl implements RefundService {
@Override
public int update(CashRecordDone cashRecordDone) {
return cashRefundMapper.update(cashRecordDone);
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) {
int result = cashRefundMapper.review(cashRecordDone);
return (result > 0 ? Result.success("重新提交成功") : Result.error("重新提交失败")).getCode();
}
@Override
public int executor(CashRecordDone cashRecordDone) {
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();
}
}

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

@ -16,6 +16,7 @@
payment_amount,
received_currency,
received_amount,
handling_charge,
received_market,
pay_type,
pay_time,
@ -71,31 +72,30 @@
</insert>
<update id="update">
update cash_record
<set>
<if test="status!=null">
status = #{status},
</if>
</set>
<if test="status != null">
status = #{status},
</if>
<if test="rejectReason!=null">
reject_reason = #{rejectReason},
</if>
<if test="refundReason != null">
refund_reason = #{refundReason},
</if>
<if test="refundCurrency != null">
refund_currency = #{refundCurrency},
</if>
<if test="refundAmount != null">
refund_amount = #{refundAmount},
</if>
<if test="refundRemark != null">
refund_remark = #{refundRemark},
</if>
update cash_record
set
status = 10,
refund_model = #{refundModel},
refund_reason = #{refundReason}
where id = #{id}
</update>
<update id="withdraw">
update cash_record set status = 11
where order_code =2 and id = #{id}
</update>
<update id="review">
update cash_record set status = #{status},executor = #{executor},reject_reason = #{rejectReason}
where order_code =2 and id = #{id}
</update>
<update id="executor">
update cash_record set refund_currency = #{refundCurrency},
refund_amount = #{refundAmount},
refund_channels = #{refundChannels},
refund_time = #{refundTime},
refund_remark = #{refundRemark},
refund_voucher = #{refundVoucher},
status = #{status}
where order_code =2 and id = #{id}
</update>

Loading…
Cancel
Save