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.

224 lines
8.7 KiB

6 months ago
6 months ago
6 months ago
7 months ago
6 months ago
6 months ago
7 months ago
7 months ago
7 months ago
7 months ago
6 months ago
7 months ago
7 months ago
7 months ago
6 months ago
7 months ago
7 months ago
6 months ago
6 months ago
7 months ago
7 months ago
6 months ago
7 months ago
7 months ago
7 months ago
6 months ago
6 months ago
7 months ago
7 months ago
7 months ago
6 months ago
6 months ago
6 months ago
4 months ago
3 months ago
3 months ago
  1. package com.example.demo.controller.coin;
  2. import com.example.demo.Util.JWTUtil;
  3. import com.example.demo.Util.LanguageTranslationUtil;
  4. import com.example.demo.config.interfac.Log;
  5. import com.example.demo.domain.entity.Admin;
  6. import com.example.demo.service.coin.RefundService;
  7. import com.github.pagehelper.PageInfo;
  8. import jakarta.servlet.http.HttpServletRequest;
  9. import lombok.RequiredArgsConstructor;
  10. import lombok.extern.slf4j.Slf4j;
  11. import org.apache.commons.lang3.StringUtils;
  12. import org.springframework.beans.factory.annotation.Autowired;
  13. import org.springframework.util.ObjectUtils;
  14. import org.springframework.web.bind.annotation.*;
  15. import org.springframework.web.context.request.RequestContextHolder;
  16. import org.springframework.web.context.request.ServletRequestAttributes;
  17. import com.example.demo.domain.vo.coin.*;
  18. import java.util.Arrays;
  19. import java.util.List;
  20. /**
  21. * @program: gold-java
  22. * @ClassName RefundMapper.xml
  23. * @description:
  24. * @author: Double
  25. * @create: 202506-26 11:28
  26. * @Version 1.0
  27. **/
  28. @RestController
  29. @RequestMapping("/refund")
  30. @RequiredArgsConstructor
  31. @Slf4j
  32. @CrossOrigin
  33. public class RefundController {
  34. @Autowired
  35. private RefundService refundService;
  36. // 注入多语言转换工具类
  37. @Autowired
  38. private LanguageTranslationUtil languageTranslationUtil;
  39. //退款明细
  40. @Log("获取全部退款明细")
  41. @PostMapping("/selectAll")
  42. public Result selcetAll(@RequestBody Page page) {
  43. try {
  44. if (ObjectUtils.isEmpty(page.getPageNum())) {
  45. return Result.error("页码数为空!");
  46. }
  47. if (ObjectUtils.isEmpty(page.getPageSize())) {
  48. return Result.error("页大小为空!");
  49. } else {
  50. //解token权限
  51. HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
  52. String token = request.getHeader("token");
  53. Admin admin = (Admin) JWTUtil.getUserDetailsList(String.valueOf(token), Admin.class);
  54. if (admin != null) {
  55. List<String> list = Arrays.asList(admin.getMarkets().split(","));
  56. page.getRefundUser().setMarkets(list);
  57. } else {
  58. return Result.error("角色为空");
  59. }
  60. return Result.success(refundService.selectAll(page.getPageNum(), page.getPageSize(), page.getRefundUser()));
  61. }
  62. } catch (Exception e) {
  63. return Result.error("请检查筛选数据的格式");
  64. }
  65. }
  66. //退款筛选
  67. @Log("退款明细筛选")
  68. @PostMapping("/selectBy")
  69. public Result selcetBy(@RequestBody Page page, @RequestHeader(defaultValue = "zh_CN") String lang) {
  70. try {
  71. if (ObjectUtils.isEmpty(page.getPageNum())) {
  72. return Result.error("页码数为空!");
  73. }
  74. if (ObjectUtils.isEmpty(page.getPageSize())) {
  75. return Result.error("页大小为空!");
  76. } else {
  77. //解token权限
  78. if(page.getRefundUser().getMarkets()==null||page.getRefundUser().getMarkets().isEmpty()) {
  79. HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
  80. String token = request.getHeader("token");
  81. Admin admin = (Admin) JWTUtil.getUserDetailsList(String.valueOf(token), Admin.class);
  82. List<String> markets = Arrays.asList(StringUtils.split(admin.getMarkets(), ","));
  83. page.getRefundUser().setMarkets(markets);
  84. }
  85. Result result = Result.success(refundService.selectBy(page.getPageNum(), page.getPageSize(), page.getRefundUser()));
  86. // 对返回结果进行多语言转换
  87. if (result.getCode() == 200 && result.getData() instanceof PageInfo) {
  88. PageInfo<RefundUser> pageInfo = (PageInfo<RefundUser>) result.getData();
  89. translateRefundUsers(pageInfo, lang);
  90. }
  91. return result;
  92. }
  93. } catch (Exception e) {
  94. return Result.error("请检查筛选数据的格式");
  95. }
  96. }
  97. //退款金币统计
  98. @Log("退款金币合计数统计")
  99. @PostMapping("/statsGold")
  100. public Result statsGold(@RequestBody RefundUser refundUser) {
  101. try {
  102. //解token权限
  103. if(refundUser.getMarkets()==null||refundUser.getMarkets().isEmpty()) {
  104. HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
  105. String token = request.getHeader("token");
  106. Admin admin = (Admin) JWTUtil.getUserDetailsList(String.valueOf(token), Admin.class);
  107. List<String> markets = Arrays.asList(StringUtils.split(admin.getMarkets(), ","));
  108. refundUser.setMarkets(markets);
  109. }
  110. Gold gold = refundService.statsGold(refundUser);
  111. return Result.success(gold);
  112. } catch (Exception e) {
  113. return Result.error("请检查数据的格式");
  114. }
  115. }
  116. //获取退款类型
  117. @Log("获取退款类型")
  118. @PostMapping("/refundType")
  119. public Result getRefundType(@RequestHeader(defaultValue = "zh_CN") String lang) {
  120. List<String> list = refundService.getRefundType();
  121. // 对退款类型进行多语言转换
  122. translateRefundTypes(list, lang);
  123. return Result.success(list);
  124. }
  125. //筛选产品
  126. // @Log("筛选商品")
  127. @PostMapping("/selectGoods")
  128. public Result getSelectGoods(@RequestBody RefundUser refundUser) {
  129. List<RefundUser> list = refundService.selectGoods(refundUser);
  130. return Result.success(list);
  131. }
  132. //消耗金币退款
  133. @Log("新增金币退款")
  134. @PostMapping("/add")
  135. public Result add(@RequestBody RefundUser refundUser) {
  136. try {
  137. return refundService.add(refundUser);
  138. } catch (Exception e) {
  139. e.printStackTrace();
  140. return Result.error(e.getMessage());
  141. }
  142. }
  143. public Result selcet(@RequestBody Page page) {
  144. try {
  145. if (ObjectUtils.isEmpty(page.getPageNum())) {
  146. return Result.error("页码数为空!");
  147. }
  148. if (ObjectUtils.isEmpty(page.getPageSize())) {
  149. return Result.error("页大小为空!");
  150. } else {
  151. return Result.success(refundService.selectBy(page.getPageNum(), page.getPageSize(), page.getRefundUser()));
  152. }
  153. } catch (Exception e) {
  154. e.printStackTrace();
  155. return Result.error("请检查筛选数据的格式");
  156. }
  157. }
  158. /**
  159. * 转换退款用户信息的多语言字段
  160. */
  161. private void translateRefundUsers(PageInfo<RefundUser> pageInfo, String lang) {
  162. if (pageInfo != null && pageInfo.getList() != null) {
  163. for (RefundUser user : pageInfo.getList()) {
  164. // 翻译市场名称
  165. if (user.getMarket() != null) {
  166. user.setMarket(languageTranslationUtil.translate(user.getMarket(), lang));
  167. }
  168. // 翻译商品名称
  169. if (user.getGoodsName() != null) {
  170. user.setGoodsName(languageTranslationUtil.translate(user.getGoodsName(), lang));
  171. }
  172. // 翻译退款类型
  173. if (user.getRefundType() != null) {
  174. user.setRefundType(languageTranslationUtil.translate(user.getRefundType(), lang));
  175. }
  176. // 翻译退款模型描述
  177. if (user.getRefundModel() != null) {
  178. String refundModelDesc = convertRefundModelToString(user.getRefundModel());
  179. user.setRefundModelDesc(languageTranslationUtil.translate(refundModelDesc, lang));
  180. }
  181. }
  182. }
  183. }
  184. /**
  185. * 转换退款类型列表的多语言字段
  186. */
  187. private void translateRefundTypes(List<String> refundTypes, String lang) {
  188. if (refundTypes != null && !refundTypes.isEmpty()) {
  189. for (int i = 0; i < refundTypes.size(); i++) {
  190. String translatedType = languageTranslationUtil.translate(refundTypes.get(i), lang);
  191. refundTypes.set(i, translatedType);
  192. }
  193. }
  194. }
  195. /**
  196. * 将退款模型数字转换为中文描述
  197. */
  198. private String convertRefundModelToString(Byte refundModel) {
  199. if (refundModel == null) return "";
  200. switch (refundModel) {
  201. case 0: return "全部退款";
  202. case 1: return "部分退款";
  203. default: return "未知退款方式";
  204. }
  205. }
  206. }