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.AuditService; import com.github.pagehelper.PageInfo; import jakarta.servlet.http.HttpServletRequest; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.ResponseEntity; 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 AuditController * @description: 审核模块 * @author: Ethan * @create: 2025−06-19 17:30 * @Version 1.0 **/ @RestController @RequestMapping("/audit") @RequiredArgsConstructor @Slf4j @CrossOrigin public class AuditController { @Autowired private AuditService auditService; // 注入多语言转换工具类 @Autowired private LanguageTranslationUtil languageTranslationUtil; //审核订单 @Log("审核订单") @PostMapping("audit") public ResponseEntity auditOrder( @RequestBody AuditRequest request) { boolean result = auditService.auditOrder(request.getToken(), request.getOrderCode(), request.getAuditId(), request.getAction(), request.getRejectReason()); return ResponseEntity.ok(result); } //多条件查询充值审核订单列表 @Log("查询充值审核订单列表") @PostMapping("selectRecharge") public PageInfo searchRechargeAudit( @RequestBody Page page, @RequestHeader(defaultValue = "zh_CN") String lang) throws Exception { Integer pageNum = page.getPageNum(); Integer pageSize = page.getPageSize(); RechargeAudit rechargeAudit = page.getRechargeAudit(); //解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(",")); rechargeAudit.setMarkets(list); } PageInfo pageInfo = auditService.selectRechargeBy(pageNum, pageSize, rechargeAudit); // 对结果进行多语言转换 translateRechargeAuditResults(pageInfo, lang); return pageInfo; } //多条件查询退款审核订单列表 @Log("查询退款审核订单列表") @PostMapping("selectRefund") public PageInfo searchRefundAudit( @RequestBody Page page, @RequestHeader(defaultValue = "zh_CN") String lang) throws Exception { Integer pageNum = page.getPageNum(); Integer pageSize = page.getPageSize(); RefundAudit refundAudit = page.getRefundAudit(); //解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(",")); refundAudit.setMarkets(list); } PageInfo pageInfo = auditService.selectRefundBy(pageNum, pageSize, refundAudit); // 对结果进行多语言转换 translateRefundAuditResults(pageInfo, lang); return pageInfo; } //充值审核合计数 @Log("充值审核合计数") @PostMapping("sumRechargeGold") public Gold sumRechargeGold(@RequestBody Page page)throws Exception { Integer pageNum = page.getPageNum(); Integer pageSize = page.getPageSize(); RechargeAudit rechargeAudit = page.getRechargeAudit(); //解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(",")); rechargeAudit.setMarkets(list); } return auditService.sumRechargeGold(pageNum, pageSize, rechargeAudit); } //退款审核合计数 @Log("退款审核合计数") @PostMapping("sumRefundGold") public Gold sumRefundGold(@RequestBody Page page) throws Exception{ Integer pageNum = page.getPageNum(); Integer pageSize = page.getPageSize(); RefundAudit refundAudit = page.getRefundAudit(); //解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(",")); refundAudit.setMarkets(list); } return auditService.sumRefundGold(pageNum, pageSize, refundAudit); } /** * 转换充值审核结果的多语言字段 */ private void translateRechargeAuditResults(PageInfo pageInfo, String lang) { if (pageInfo != null && pageInfo.getList() != null) { for (RechargeAudit audit : pageInfo.getList()) { // 翻译市场名称 if (audit.getMarket() != null) { audit.setMarket(languageTranslationUtil.translate(audit.getMarket(), lang)); } // 翻译汇率名称 if (audit.getRateName() != null) { audit.setRateName(languageTranslationUtil.translate(audit.getRateName(), lang)); } // 翻译支付方式 if (audit.getPayModel() != null) { audit.setPayModel(languageTranslationUtil.translate(audit.getPayModel(), lang)); } // 翻译活动名称 if (audit.getActivity() != null) { audit.setActivity(languageTranslationUtil.translate(audit.getActivity(), lang)); } // 翻译备注 if (audit.getRemark() != null) { audit.setRemark(languageTranslationUtil.translate(audit.getRemark(), lang)); } } } } /** * 转换退款审核结果的多语言字段 */ private void translateRefundAuditResults(PageInfo pageInfo, String lang) { if (pageInfo != null && pageInfo.getList() != null) { for (RefundAudit audit : pageInfo.getList()) { // 翻译市场名称 if (audit.getMarket() != null) { audit.setMarket(languageTranslationUtil.translate(audit.getMarket(), lang)); } // 翻译商品名称 if (audit.getGoodsName() != null) { audit.setGoodsName(languageTranslationUtil.translate(audit.getGoodsName(), lang)); } // 翻译退款方式 if (audit.getRefundModel() != null) { // refundModel是数字,需要先转换为对应的中文描述再翻译 String refundModelDesc = convertRefundModelToString(audit.getRefundModel()); audit.setRefundModelDesc(languageTranslationUtil.translate(refundModelDesc, lang)); } // 翻译退款类型 if (audit.getRefundType() != null) { audit.setRefundType(languageTranslationUtil.translate(audit.getRefundType(), lang)); } // 翻译备注 if (audit.getRemark() != null) { audit.setRemark(languageTranslationUtil.translate(audit.getRemark(), lang)); } } } } /** * 将退款方式数字转换为中文描述 */ private String convertRefundModelToString(Integer refundModel) { if (refundModel == null) return ""; switch (refundModel) { case 0: return "全部退款"; case 1: return "部分退款"; default: return "未知退款方式"; } } }