|
|
package com.example.demo.Util;
import lombok.extern.slf4j.Slf4j;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Component;
import java.util.*;
/** * Excel表头翻译工具类 */@Component@Slf4jpublic class ExcelHeaderTranslator {
@Autowired private LanguageTranslationUtil languageTranslationUtil;
/** * 获取充值明细的Excel表头映射 * 返回 Map<字段名, 中文表头> */ public Map<String, String> getRechargeHeaders(String lang) { Map<String, String> headers = new LinkedHashMap<>();
// 定义所有表头的原始中文名称(对应 RechargeUser 类的字段)
headers.put("name", "姓名"); headers.put("orderCode", "订单号"); headers.put("jwcode", "精网号"); headers.put("market", "所属地区"); headers.put("activity", "活动名称"); headers.put("rateName", "货币名称"); headers.put("money", "充值金额"); headers.put("permanentGold", "永久金币"); headers.put("freeGold", "免费金币"); headers.put("payModel", "支付方式"); headers.put("payPlatform", "充值平台"); headers.put("isRefund", "是否已退款 0-未退款,1-已退款"); headers.put("remark", "备注"); headers.put("adminName", "提交人"); headers.put("auditTime", "充值时间");
// 如果需要翻译,则翻译表头
if (!isChineseLanguage(lang)) { return translateHeaders(headers, lang); }
return headers; }
/** * 获取表头顺序(与 RechargeUser 类中的 @ExcelProperty 注解顺序保持一致) */ public List<String> getRechargeColumnOrder() { return Arrays.asList( "name", "orderCode", "jwcode", "market", "activity", "rateName", "money", "permanentGold", "freeGold", "payModel", "payPlatform", "isRefund", "remark", "adminName", "auditTime" ); }
/** * 获取消费明细的Excel表头映射 * 返回 Map<字段名, 中文表头> */ public Map<String, String> getConsumeHeaders(String lang) { Map<String, String> headers = new LinkedHashMap<>();
// 定义所有表头的原始中文名称(对应 ConsumeUser 类的字段)
headers.put("name", "姓名"); headers.put("orderCode", "订单号"); headers.put("jwcode", "精网号"); headers.put("market", "所属地区"); headers.put("goodsName", "商品名称"); headers.put("payPlatform", "消耗平台"); headers.put("sumGold", "消耗金币总数"); headers.put("permanentGold", "永久金币"); headers.put("freeGold", "免费金币"); headers.put("taskGold", "任务金币"); headers.put("remark", "备注"); headers.put("adminName", "提交人"); headers.put("isRefund", "是否退款"); headers.put("createTime", "消耗时间"); headers.put("price", "折扣金币");
// 如果需要翻译,则翻译表头
if (!isChineseLanguage(lang)) { return translateHeaders(headers, lang); }
return headers; }
/** * 获取消费明细表头顺序 */ public List<String> getConsumeColumnOrder() { return Arrays.asList( "name", "orderCode", "jwcode", "market", "goodsName", "payPlatform", "sumGold", "permanentGold", "freeGold", "taskGold", "remark", "adminName", "isRefund", "createTime", "price" ); }
/** * 获取退款明细的Excel表头映射 * 返回 Map<字段名, 中文表头> */ public Map<String, String> getRefundHeaders(String lang) { Map<String, String> headers = new LinkedHashMap<>();
// 定义所有表头的原始中文名称(对应 RefundUser 类的字段)
headers.put("orderCode", "订单号"); headers.put("name", "姓名"); headers.put("jwcode", "精网号"); headers.put("market", "所属地区"); headers.put("goodsName", "商品名称"); headers.put("refundType", "退款类型"); headers.put("refundModelDesc", "退款方式"); headers.put("sumGold", "退款金币总数"); headers.put("permanentGold", "永久金币"); headers.put("freeGold", "免费金币"); headers.put("taskGold", "任务金币"); headers.put("remark", "退款原因"); headers.put("adminName", "提交人"); headers.put("auditTime", "退款时间");
// 如果需要翻译,则翻译表头
if (!isChineseLanguage(lang)) { return translateHeaders(headers, lang); }
return headers; }
/** * 获取退款明细表头顺序 */ public List<String> getRefundColumnOrder() { return Arrays.asList( "orderCode", "name", "jwcode", "market", "goodsName", "refundType", "refundModelDesc", "sumGold", "permanentGold", "freeGold", "taskGold", "remark", "adminName", "auditTime" ); }
/** * 获取直播消费明细的Excel表头映射 * 返回 Map<字段名, 中文表头> */ public Map<String, String> getBeanConsumeLiveHeaders(String lang) { Map<String, String> headers = new LinkedHashMap<>();
// 定义所有表头的原始中文名称(对应 BeanConsumeLive 类的字段)
headers.put("id", "ID"); headers.put("name", "姓名"); headers.put("jwcode", "精网号"); headers.put("dept", "地区"); headers.put("gift", "礼物"); headers.put("isBackpack", "是否为背包礼物"); headers.put("beanNum", "金豆数量"); headers.put("liveChannel", "频道"); headers.put("freeBean", "免费金豆"); headers.put("buyBean", "付费金豆"); headers.put("liveName", "直播间名称"); headers.put("consumeTime", "消费时间");
// 如果需要翻译,则翻译表头
if (!isChineseLanguage(lang)) { return translateHeaders(headers, lang); }
return headers; }
/** * 获取直播消费明细表头顺序 */ public List<String> getBeanConsumeLiveColumnOrder() { return Arrays.asList( "id", "name", "jwcode", "dept", "gift", "isBackpack", "beanNum", "liveChannel", "freeBean", "buyBean", "liveName", "consumeTime" ); }
/** * 获取在线充值明细的Excel表头映射 * 返回 Map<字段名, 中文表头> */ public Map<String, String> getBeanOnlineRechargeHeaders(String lang) { Map<String, String> headers = new LinkedHashMap<>();
// 定义所有表头的原始中文名称(对应 BeanOnlineRechargeInfo 类的字段)
headers.put("jwcode", "精网号"); headers.put("name", "姓名"); headers.put("market", "所属地区"); headers.put("money", "金额"); headers.put("num", "数量"); headers.put("orderNo", "订单号"); headers.put("platform", "充值平台 PC:1 手机:2"); headers.put("rechargeTime", "充值时间");
// 如果需要翻译,则翻译表头
if (!isChineseLanguage(lang)) { return translateHeaders(headers, lang); }
return headers; }
/** * 获取在线充值明细表头顺序 */ public List<String> getBeanOnlineRechargeColumnOrder() { return Arrays.asList( "jwcode", "name", "market", "money", "num", "orderNo", "platform", "rechargeTime" ); }
/** * 获取现金收款明细的Excel表头映射 * 返回 Map<字段名, 中文表头> */ public Map<String, String> getCashCollectionHeaders(String lang) { Map<String, String> headers = new LinkedHashMap<>();
// 定义所有表头的原始中文名称(对应 CashCollection 类的字段)
headers.put("id", "序号"); headers.put("jwcode", "精网号"); headers.put("name", "姓名"); headers.put("marketName", "所属地区"); headers.put("activity", "活动名称"); headers.put("orderCode", "金币订单号"); headers.put("bankCode", "银行流水订单号"); headers.put("goodsName", "商品名称"); headers.put("goodNum", "商品数量"); headers.put("numUnit", "数量单位"); headers.put("permanentGold", "永久金币数量"); headers.put("freeGold", "免费金币数量"); headers.put("paymentCurrency", "付款币种"); headers.put("paymentAmount", "付款金额"); headers.put("receivedCurrency", "到账币种"); headers.put("receivedAmount", "到账金额"); headers.put("handlingCharge", "手续费"); headers.put("receivedMarket", "到账地区"); headers.put("payType", "支付方式"); headers.put("payTime", "付款时间"); headers.put("receivedTime", "到账时间"); headers.put("submitterName", "提交人姓名"); headers.put("voucher", "转账凭证"); headers.put("remark", "备注"); headers.put("auditName", "审核人");
// 如果需要翻译,则翻译表头
if (!isChineseLanguage(lang)) { return translateHeaders(headers, lang); }
return headers; }
/** * 获取现金收款明细表头顺序 */ public List<String> getCashCollectionColumnOrder() { return Arrays.asList( "id", "jwcode", "name", "marketName", "activity", "orderCode", "bankCode", "goodsName", "goodNum", "numUnit", "permanentGold", "freeGold", "paymentCurrency", "paymentAmount", "receivedCurrency", "receivedAmount", "handlingCharge", "receivedMarket", "payType", "payTime", "receivedTime", "submitterName", "voucher", "remark", "auditName" ); }
/** * 获取现金退款记录的Excel表头映射 * 返回 Map<字段名, 中文表头> */ public Map<String, String> getCashRecordHeaders(String lang) { Map<String, String> headers = new LinkedHashMap<>();
// 定义所有表头的原始中文名称(对应 CashRecordDTO 类的字段)
headers.put("goodsName", "产品名称"); headers.put("goodsNum", "产品数量"); headers.put("numUnit", "产品单位"); headers.put("Submitter", "提交人"); headers.put("id", "序号"); headers.put("jwcode", "精网号"); headers.put("name", "姓名"); headers.put("market", "所属地区"); headers.put("status", "订单状态"); headers.put("remark", "备注"); headers.put("refundReason", "退款理由"); headers.put("refundModel", "退款方式");
// 如果需要翻译,则翻译表头
if (!isChineseLanguage(lang)) { return translateHeaders(headers, lang); }
return headers; }
/** * 获取现金退款记录表头顺序 */ public List<String> getCashRecordColumnOrder() { return Arrays.asList( "goodsName", "goodsNum", "numUnit", "Submitter", "id", "jwcode", "name", "market", "status", "remark", "refundReason", "refundModel" ); }
/** * 获取文章消费明细的Excel表头映射 * 返回 Map<字段名, 中文表头> */ public Map<String, String> getBeanConsumeArticleHeaders(String lang) { Map<String, String> headers = new LinkedHashMap<>();
// 定义所有表头的原始中文名称(对应 BeanConsumeArticle 类的字段)
headers.put("id", "ID"); headers.put("name", "姓名"); headers.put("jwcode", "精网号"); headers.put("dept", "地区"); headers.put("type", "类型 9-打赏 10-打赏 11-付费"); headers.put("beanNum", "金豆总数"); headers.put("buyBean", "付费金豆数"); headers.put("freeBean", "免费金豆数"); headers.put("articleId", "文章/视频ID"); headers.put("articleName", "文章/视频标题"); headers.put("author", "作者"); headers.put("consumeTime", "付费时间");
// 如果需要翻译,则翻译表头
if (!isChineseLanguage(lang)) { return translateHeaders(headers, lang); }
return headers; }
/** * 获取文章消费明细表头顺序 */ public List<String> getBeanConsumeArticleColumnOrder() { return Arrays.asList( "id", "name", "jwcode", "dept", "type", "beanNum", "buyBean", "freeBean", "articleId", "articleName", "author", "consumeTime" ); }
/** * 获取系统充值明细的Excel表头映射 * 返回 Map<字段名, 中文表头> */ public Map<String, String> getBeanSystemRechargeHeaders(String lang) { Map<String, String> headers = new LinkedHashMap<>();
// 定义所有表头的原始中文名称(对应 BeanSystemRechargeInfo 类的字段)
headers.put("id", "ID"); headers.put("jwcode", "精网号"); headers.put("name", "姓名"); headers.put("market", "所属地区"); headers.put("freeBean", "免费金豆"); headers.put("permanentBean", "付费金豆"); headers.put("remark", "备注"); headers.put("rechargeTime", "充值时间");
// 如果需要翻译,则翻译表头
if (!isChineseLanguage(lang)) { return translateHeaders(headers, lang); }
return headers; }
/** * 获取系统充值明细表头顺序 */ public List<String> getBeanSystemRechargeColumnOrder() { return Arrays.asList( "id","jwcode", "name", "market", "freeBean", "permanentBean", "remark", "rechargeTime" ); }
/** * 获取铁粉消费明细的Excel表头映射 * 返回 Map<字段名, 中文表头> */ public Map<String, String> getBeanConsumeFanHeaders(String lang) { Map<String, String> headers = new LinkedHashMap<>();
// 定义所有表头的原始中文名称(对应 BeanConsumeFan 类的字段)
headers.put("id", "ID"); headers.put("name", "姓名"); headers.put("jwcode", "精网号"); headers.put("dept", "地区"); headers.put("beanNum", "金豆数量"); headers.put("freeBean", "免费金豆数"); headers.put("buyBean", "付费金豆数"); headers.put("channel", "频道"); headers.put("type", "会员类型"); headers.put("consumeTime", "加入时间");
// 如果需要翻译,则翻译表头
if (!isChineseLanguage(lang)) { return translateHeaders(headers, lang); }
return headers; }
/** * 获取铁粉消费明细表头顺序 */ public List<String> getBeanConsumeFanColumnOrder() { return Arrays.asList( "id", "name", "jwcode", "dept", "beanNum", "freeBean", "buyBean", "channel", "type", "consumeTime" ); }
/** * 获取用户金币余额的Excel表头映射 * 返回 Map<字段名, 中文表头> */ public Map<String, String> getUserHeaders(String lang) { Map<String, String> headers = new LinkedHashMap<>();
// 定义所有表头的原始中文名称(对应 User 类的字段)
headers.put("id", "客户id"); headers.put("jwcode", "精网号"); headers.put("name", "姓名"); headers.put("market", "所属地区"); headers.put("sumGold", "金币总数"); headers.put("currentPermanentGold", "当前永久金币"); headers.put("currentFreeJune", "当前六月到期免费金币"); headers.put("currentFreeDecember", "当前十二月到期免费金币"); headers.put("currentTaskGold", "当前任务金币"); headers.put("rechargeNum", "充值次数(25年起)"); headers.put("consumeNum", "消费次数(25年起)"); headers.put("firstRecharge", "首充日期"); headers.put("createTime", "创建时间"); headers.put("updateTime", "更新时间");
// 如果需要翻译,则翻译表头
if (!isChineseLanguage(lang)) { return translateHeaders(headers, lang); }
return headers; }
/** * 获取用户金币余额表头顺序 */ public List<String> getUserColumnOrder() { return Arrays.asList( "id", "jwcode", "name", "market", "sumGold", "currentPermanentGold", "currentFreeJune", "currentFreeDecember", "currentTaskGold", "rechargeNum", "consumeNum", "firstRecharge", "createTime", "updateTime" ); }
/** * 获取金币明细的Excel表头映射 * 返回 Map<字段名, 中文表头> */ public Map<String, String> getGoldDetailHeaders(String lang) { Map<String, String> headers = new LinkedHashMap<>();
// 定义所有表头的原始中文名称(对应 GoldDetail 类的字段)
headers.put("name", "姓名"); headers.put("jwcode", "精网号"); headers.put("market", "所属地区"); headers.put("payPlatform", "平台信息"); headers.put("typeDesc", "更新类型"); headers.put("sumGold", "金币数量"); headers.put("permanentGold", "永久金币"); headers.put("freeGold", "免费金币"); headers.put("taskGold", "任务金币"); headers.put("adminName", "提交人"); headers.put("auditTime", "更新时间");
// 如果需要翻译,则翻译表头
if (!isChineseLanguage(lang)) { return translateHeaders(headers, lang); }
return headers; }
/** * 获取金币明细表头顺序 */ public List<String> getGoldDetailColumnOrder() { return Arrays.asList( "name", "jwcode", "market", "payPlatform", "typeDesc", "sumGold", "permanentGold", "freeGold", "taskGold", "adminName", "auditTime" ); }
/** * 翻译表头 */ private Map<String, String> translateHeaders(Map<String, String> headers, String lang) { log.info("开始翻译表头,目标语言: {}", lang); Map<String, String> translatedHeaders = new LinkedHashMap<>(); for (Map.Entry<String, String> entry : headers.entrySet()) { String translatedHeader = languageTranslationUtil.translate(entry.getValue(), lang); log.debug("表头翻译: {} -> {}", entry.getValue(), translatedHeader); translatedHeaders.put(entry.getKey(), translatedHeader); } return translatedHeaders; }
/** * 检查是否为中文语言 */ private boolean isChineseLanguage(String lang) { if (lang == null) return true; String langLower = lang.toLowerCase(); return langLower.startsWith("zh") || langLower.equals("zh_cn") || langLower.equals("zh-tw"); }}
|