Browse Source
Merge remote-tracking branch 'origin/milestone-20251016-现金管理' into milestone-20251016-现金管理
lijianlin/feature-202509231533026-现金管理-收款管理
Merge remote-tracking branch 'origin/milestone-20251016-现金管理' into milestone-20251016-现金管理
lijianlin/feature-202509231533026-现金管理-收款管理
8 changed files with 235 additions and 39 deletions
-
17src/main/java/com/example/demo/controller/cash/CashRefundController.java
-
142src/main/java/com/example/demo/controller/cash/RefundApprovalController.java
-
27src/main/java/com/example/demo/domain/DTO/RefundApprovalRequest.java
-
8src/main/java/com/example/demo/domain/vo/cash/User.java
-
39src/main/java/com/example/demo/service/cash/RefundApprovalService.java
-
2src/main/java/com/example/demo/service/cash/RefundService.java
-
24src/main/java/com/example/demo/serviceImpl/cash/CashRefundServiceImpl.java
-
15src/main/resources/cashMapper/CashRefundMapper.xml
@ -0,0 +1,142 @@ |
|||
package com.example.demo.controller.cash; |
|||
|
|||
|
|||
|
|||
import com.example.demo.domain.DTO.RefundApprovalRequest; |
|||
import com.example.demo.domain.vo.cash.CashRecord; |
|||
import com.example.demo.domain.vo.cash.User; |
|||
import com.example.demo.service.cash.RefundApprovalService; |
|||
import lombok.RequiredArgsConstructor; |
|||
import org.springframework.web.bind.annotation.*; |
|||
|
|||
import java.util.ArrayList; |
|||
import java.util.HashMap; |
|||
import java.util.List; |
|||
import java.util.Map; |
|||
|
|||
@RestController |
|||
@RequestMapping("/api/refund-approval") |
|||
@RequiredArgsConstructor |
|||
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") |
|||
public Map<String, Object> submitRefundApproval(@RequestBody RefundApprovalRequest request) { |
|||
boolean success = refundApprovalService.submitRefundApproval( |
|||
request.getUser(), |
|||
request.getCashRecord(), |
|||
request.getApprovalResult(), |
|||
request.getComments() |
|||
); |
|||
|
|||
Map<String, Object> response = new HashMap<>(); |
|||
response.put("success", success); |
|||
response.put("message", success ? "退款审批提交成功" : "退款审批提交失败,无权限"); |
|||
response.put("orderStatus", request.getCashRecord().getStatus()); |
|||
response.put("currentLevel", request.getCashRecord().getCurrentApprovalLevel()); |
|||
|
|||
return response; |
|||
} |
|||
|
|||
/** |
|||
* 撤回退款订单(在第一个审批节点前) |
|||
*/ |
|||
@PostMapping("/withdraw") |
|||
public Map<String, Object> withdrawRefundOrder(@RequestBody RefundApprovalRequest request) { |
|||
|
|||
boolean success = refundApprovalService.withdrawRefundOrder(request.getUser(),request.getCashRecord(), request.getWithdrawReason()); |
|||
|
|||
return Map.of( |
|||
"success", success, |
|||
"message", success ? "退款订单撤回成功" : "退款订单撤回失败", |
|||
"orderStatus", request.getCashRecord().getStatus() |
|||
); |
|||
} |
|||
|
|||
/** |
|||
* 重新提交撤回的退款订单 |
|||
*/ |
|||
@PostMapping("/resubmit") |
|||
public Map<String, Object> resubmitRefundOrder(@RequestBody RefundApprovalRequest request) { |
|||
|
|||
boolean success = refundApprovalService.resubmitRefundOrder(request.getUser(), request.getCashRecord()); |
|||
|
|||
return Map.of( |
|||
"success", success, |
|||
"message", success ? "退款订单重新提交成功" : "退款订单重新提交失败", |
|||
"orderStatus", request.getCashRecord().getStatus() |
|||
); |
|||
} |
|||
|
|||
/** |
|||
* 检查退款审批权限 |
|||
*/ |
|||
@GetMapping("/check-permission") |
|||
public Map<String, Object> checkPermission(@RequestBody RefundApprovalRequest request) { |
|||
|
|||
|
|||
boolean hasPermission = refundApprovalService.canUserApproveOrder(request.getUser(), request.getCashRecord()); |
|||
boolean canWithdraw = refundApprovalService.canUserWithdrawOrder(request.getUser(), request.getCashRecord()); |
|||
List<Integer> visibleStatuses = refundApprovalService.getUserVisibleStatuses(request.getUser(), request.getCashRecord()); |
|||
|
|||
return Map.of( |
|||
"hasApprovalPermission", hasPermission, |
|||
"canWithdraw", canWithdraw, |
|||
"visibleStatuses", visibleStatuses, |
|||
"currentLevel", request.getCashRecord().getCurrentApprovalLevel(), |
|||
"orderStatus", request.getCashRecord().getStatus() |
|||
); |
|||
} |
|||
|
|||
/** |
|||
* 获取用户可见的退款审批状态 |
|||
*/ |
|||
@GetMapping("/visible-statuses") |
|||
public List<Integer> getVisibleStatuses(@RequestBody RefundApprovalRequest request) { |
|||
|
|||
|
|||
return refundApprovalService.getUserVisibleStatuses(request.getUser(), request.getCashRecord()); |
|||
} |
|||
|
|||
// // 创建模拟用户(实际项目中应从数据库获取) |
|||
// private User createMockUser(Integer userId) { |
|||
// User user = new User(); |
|||
// user.setId(userId); |
|||
// user.setName("测试用户"); |
|||
// user.setMarket("北京"); |
|||
// user.setMarketId(4); // 假设4是北京的地区ID |
|||
// user.setRoles(Set.of(RefundApprovalService.ROLE_REGIONAL_FINANCE)); |
|||
// user.setManagedMarketIds(Set.of(4)); // 管辖北京地区 |
|||
// user.setManagedMarketNames(Set.of("北京")); |
|||
// return user; |
|||
// } |
|||
} |
|||
@ -0,0 +1,27 @@ |
|||
package com.example.demo.domain.DTO; |
|||
|
|||
import com.example.demo.domain.vo.cash.CashRecord; |
|||
import com.example.demo.domain.vo.cash.User; |
|||
import lombok.Data; |
|||
import lombok.NoArgsConstructor; |
|||
|
|||
import java.util.List; |
|||
|
|||
/** |
|||
* @program: GOLD |
|||
* @ClassName RefundApprovalRequest |
|||
* @description: |
|||
* @author: huangqizhen |
|||
* @create: 2025−10-14 15:02 |
|||
* @Version 1.0 |
|||
**/ |
|||
@Data |
|||
@NoArgsConstructor |
|||
public class RefundApprovalRequest { |
|||
private User user; |
|||
private CashRecord cashRecord; |
|||
private String approvalResult; |
|||
private String comments; |
|||
private String withdrawReason; |
|||
private List<CashRecord> orders; |
|||
} |
|||
Write
Preview
Loading…
Cancel
Save
Reference in new issue