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.

155 lines
5.7 KiB

1 month ago
1 month ago
  1. package com.example.demo.controller.cash;
  2. import com.example.demo.Util.JWTUtil;
  3. import com.example.demo.domain.entity.Admin;
  4. import com.example.demo.domain.vo.cash.CashRecordDone;
  5. import com.example.demo.domain.vo.coin.Page;
  6. import com.example.demo.domain.vo.coin.RechargeUser;
  7. import com.example.demo.domain.vo.coin.Result;
  8. import com.example.demo.service.cash.RefundService;
  9. import com.example.demo.service.coin.MarketService;
  10. import jakarta.annotation.Resource;
  11. import jakarta.servlet.http.HttpServletRequest;
  12. import lombok.RequiredArgsConstructor;
  13. import lombok.extern.slf4j.Slf4j;
  14. import org.apache.commons.lang3.StringUtils;
  15. import org.springframework.beans.factory.annotation.Autowired;
  16. import org.springframework.util.ObjectUtils;
  17. import org.springframework.web.bind.annotation.*;
  18. import org.springframework.web.context.request.RequestContextHolder;
  19. import org.springframework.web.context.request.ServletRequestAttributes;
  20. import java.util.Arrays;
  21. import java.util.List;
  22. /**
  23. * @program: GOLD
  24. * @ClassName RefundController
  25. * @description:
  26. * @author: huangqizhen
  27. * @create: 202509-26 14:15
  28. * @Version 1.0
  29. **/
  30. @RestController
  31. @RequestMapping("/Money")
  32. @RequiredArgsConstructor
  33. @Slf4j
  34. @CrossOrigin
  35. public class CashRefundController {
  36. @Autowired
  37. private RefundService refundService;
  38. @Autowired
  39. MarketService marketService;
  40. @PostMapping("/select")
  41. public Result select(@RequestBody Page page) throws Exception {
  42. // 获取当前请求对象
  43. HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
  44. String token = request.getHeader("token");
  45. // 解析 token 获取用户信息
  46. Admin admin = (Admin) JWTUtil.getUserDetailsList(String.valueOf(token), Admin.class);
  47. List<String> userMarkets = Arrays.asList(StringUtils.split(admin.getMarkets(), ","));
  48. List<String> markets = marketService.getMarketIds(userMarkets);
  49. // 校验分页参数
  50. if (ObjectUtils.isEmpty(page.getPageNum())) {
  51. return Result.error("页码数为空!");
  52. }
  53. if (ObjectUtils.isEmpty(page.getPageSize())) {
  54. return Result.error("页大小为空!");
  55. }
  56. // 获取传入的市场列表
  57. List<String> requestedMarkets = page.getCashRecordDone() != null ? page.getCashRecordDone().getMarkets() : null;
  58. // 权限校验逻辑
  59. if (markets.contains("9") || markets.contains("9999")) {
  60. // 特权市场:9 或 9999,跳过权限校验,直接放行传入的 markets
  61. // 如果业务需要,也可以在这里做空值处理
  62. if (page.getCashRecordDone() != null) {
  63. // 保持 requestedMarkets 不变,原样接受
  64. // 可选:如果 requestedMarkets 为 null,可设为默认值或保持 null
  65. }
  66. } else {
  67. // 普通用户:必须校验权限
  68. if (requestedMarkets == null || requestedMarkets.isEmpty()) {
  69. page.getCashRecordDone().setMarkets(requestedMarkets);
  70. }
  71. if (!markets.containsAll(requestedMarkets)) {
  72. return Result.error("无权限!请求的市场不在授权范围内。");
  73. }
  74. // 校验通过,保持 requestedMarkets 不变
  75. }
  76. return Result.success(refundService.select(page.getPageNum(), page.getPageSize(), page.getCashRecordDone()));
  77. }
  78. @PostMapping("/add")
  79. public Result add(@RequestBody CashRecordDone cashRecordDone) throws Exception {
  80. try {
  81. return Result.success(refundService.add(cashRecordDone));
  82. } catch (Exception e) {
  83. return Result.error(e.getMessage());
  84. }
  85. }
  86. @PostMapping("/selecta")
  87. public Result selecta(@RequestBody Page page) {
  88. // 校验分页参数
  89. if (ObjectUtils.isEmpty(page.getPageNum())) {
  90. return Result.error("页码数为空!");
  91. }
  92. if (ObjectUtils.isEmpty(page.getPageSize())) {
  93. return Result.error("页大小为空!");
  94. }
  95. // 获取传入的市场列表
  96. List<String> requestedMarkets = page.getCashRecordDone() != null ? page.getCashRecordDone().getMarkets() : null;
  97. return Result.success(refundService.select(page.getPageNum(), page.getPageSize(), page.getCashRecordDone()));
  98. }
  99. @PostMapping("/update")
  100. public Result update(@RequestBody CashRecordDone cashRecordDone)throws Exception {
  101. if (cashRecordDone.getStatus() == null) {
  102. return Result.error("状态为空");
  103. }
  104. if (cashRecordDone.getStatus() == 10) {
  105. return Result.success(refundService.withdraw(cashRecordDone));
  106. }
  107. else if (cashRecordDone.getStatus() == 11) {
  108. try {
  109. return Result.success(refundService.update(cashRecordDone));
  110. } catch (Exception e) {
  111. return Result.error(e.getMessage());
  112. }
  113. }
  114. else return Result.error("该订单状态无法支持此操作");
  115. }
  116. @PostMapping("/review")
  117. public Result review(@RequestBody CashRecordDone cashRecordDone){
  118. try {
  119. return Result.success(refundService.review(cashRecordDone));
  120. } catch (Exception e) {
  121. return Result.error(e.getMessage());
  122. }
  123. }
  124. @PostMapping("/finalReview")
  125. public Result finalReview(@RequestBody CashRecordDone cashRecordDone) {
  126. return Result.success(refundService.finalreview(cashRecordDone));
  127. }
  128. @PostMapping("/executor")
  129. public Result executor(@RequestBody CashRecordDone cashRecordDone) throws Exception {
  130. try {
  131. return Result.success(refundService.executor(cashRecordDone));
  132. }
  133. catch (Exception e) {
  134. return Result.error(e.getMessage());
  135. }
  136. }
  137. }