package com.example.demo.controller.coin; import com.example.demo.Util.JWTUtil; import com.example.demo.Util.LanguageTranslationUtil; import com.example.demo.config.interfac.Log; import com.example.demo.domain.entity.Admin; import com.example.demo.service.coin.RefundService; import com.github.pagehelper.PageInfo; import jakarta.servlet.http.HttpServletRequest; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.util.ObjectUtils; import org.springframework.web.bind.annotation.*; import org.springframework.web.context.request.RequestContextHolder; import org.springframework.web.context.request.ServletRequestAttributes; import com.example.demo.domain.vo.coin.*; import java.util.Arrays; import java.util.List; /** * @program: gold-java * @ClassName RefundMapper.xml * @description: * @author: Double * @create: 2025−06-26 11:28 * @Version 1.0 **/ @RestController @RequestMapping("/refund") @RequiredArgsConstructor @Slf4j @CrossOrigin public class RefundController { @Autowired private RefundService refundService; // 注入多语言转换工具类 @Autowired private LanguageTranslationUtil languageTranslationUtil; //退款明细 @Log("获取全部退款明细") @PostMapping("/selectAll") public Result selcetAll(@RequestBody Page page) { try { if (ObjectUtils.isEmpty(page.getPageNum())) { return Result.error("页码数为空!"); } if (ObjectUtils.isEmpty(page.getPageSize())) { return Result.error("页大小为空!"); } else { //解token权限 HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest(); String token = request.getHeader("token"); Admin admin = (Admin) JWTUtil.getUserDetailsList(String.valueOf(token), Admin.class); if (admin != null) { List list = Arrays.asList(admin.getMarkets().split(",")); page.getRefundUser().setMarkets(list); } else { return Result.error("角色为空"); } return Result.success(refundService.selectAll(page.getPageNum(), page.getPageSize(), page.getRefundUser())); } } catch (Exception e) { return Result.error("请检查筛选数据的格式"); } } //退款筛选 @Log("退款明细筛选") @PostMapping("/selectBy") public Result selcetBy(@RequestBody Page page, @RequestHeader(defaultValue = "zh_CN") String lang) { try { if (ObjectUtils.isEmpty(page.getPageNum())) { return Result.error("页码数为空!"); } if (ObjectUtils.isEmpty(page.getPageSize())) { return Result.error("页大小为空!"); } else { //解token权限 if(page.getRefundUser().getMarkets()==null||page.getRefundUser().getMarkets().isEmpty()) { HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest(); String token = request.getHeader("token"); Admin admin = (Admin) JWTUtil.getUserDetailsList(String.valueOf(token), Admin.class); List markets = Arrays.asList(StringUtils.split(admin.getMarkets(), ",")); page.getRefundUser().setMarkets(markets); } Result result = Result.success(refundService.selectBy(page.getPageNum(), page.getPageSize(), page.getRefundUser())); // 对返回结果进行多语言转换 if (result.getCode() == 200 && result.getData() instanceof PageInfo) { PageInfo pageInfo = (PageInfo) result.getData(); translateRefundUsers(pageInfo, lang); } return result; } } catch (Exception e) { return Result.error("请检查筛选数据的格式"); } } //退款金币统计 @Log("退款金币合计数统计") @PostMapping("/statsGold") public Result statsGold(@RequestBody RefundUser refundUser) { try { //解token权限 if(refundUser.getMarkets()==null||refundUser.getMarkets().isEmpty()) { HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest(); String token = request.getHeader("token"); Admin admin = (Admin) JWTUtil.getUserDetailsList(String.valueOf(token), Admin.class); List markets = Arrays.asList(StringUtils.split(admin.getMarkets(), ",")); refundUser.setMarkets(markets); } Gold gold = refundService.statsGold(refundUser); return Result.success(gold); } catch (Exception e) { return Result.error("请检查数据的格式"); } } //获取退款类型 @Log("获取退款类型") @PostMapping("/refundType") public Result getRefundType(@RequestHeader(defaultValue = "zh_CN") String lang) { List list = refundService.getRefundType(); // 对退款类型进行多语言转换 translateRefundTypes(list, lang); return Result.success(list); } //筛选产品 // @Log("筛选商品") @PostMapping("/selectGoods") public Result getSelectGoods(@RequestBody RefundUser refundUser) { List list = refundService.selectGoods(refundUser); return Result.success(list); } //消耗金币退款 @Log("新增金币退款") @PostMapping("/add") public Result add(@RequestBody RefundUser refundUser) { try { return refundService.add(refundUser); } catch (Exception e) { e.printStackTrace(); return Result.error(e.getMessage()); } } public Result selcet(@RequestBody Page page) { try { if (ObjectUtils.isEmpty(page.getPageNum())) { return Result.error("页码数为空!"); } if (ObjectUtils.isEmpty(page.getPageSize())) { return Result.error("页大小为空!"); } else { return Result.success(refundService.selectBy(page.getPageNum(), page.getPageSize(), page.getRefundUser())); } } catch (Exception e) { e.printStackTrace(); return Result.error("请检查筛选数据的格式"); } } /** * 转换退款用户信息的多语言字段 */ private void translateRefundUsers(PageInfo pageInfo, String lang) { if (pageInfo != null && pageInfo.getList() != null) { for (RefundUser user : pageInfo.getList()) { // 翻译市场名称 if (user.getMarket() != null) { user.setMarket(languageTranslationUtil.translate(user.getMarket(), lang)); } // 翻译商品名称 if (user.getGoodsName() != null) { user.setGoodsName(languageTranslationUtil.translate(user.getGoodsName(), lang)); } // 翻译退款类型 if (user.getRefundType() != null) { user.setRefundType(languageTranslationUtil.translate(user.getRefundType(), lang)); } // 翻译退款模型描述 if (user.getRefundModel() != null) { String refundModelDesc = convertRefundModelToString(user.getRefundModel()); user.setRefundModelDesc(languageTranslationUtil.translate(refundModelDesc, lang)); } } } } /** * 转换退款类型列表的多语言字段 */ private void translateRefundTypes(List refundTypes, String lang) { if (refundTypes != null && !refundTypes.isEmpty()) { for (int i = 0; i < refundTypes.size(); i++) { String translatedType = languageTranslationUtil.translate(refundTypes.get(i), lang); refundTypes.set(i, translatedType); } } } /** * 将退款模型数字转换为中文描述 */ private String convertRefundModelToString(Byte refundModel) { if (refundModel == null) return ""; switch (refundModel) { case 0: return "全部退款"; case 1: return "部分退款"; default: return "未知退款方式"; } } }