|
|
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")@RequiredArgsConstructorpublic class RefundApprovalController {
private final RefundApprovalService refundApprovalService;
/** * 提交退款审批 */ @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;
// }
}
|