Browse Source

12月1日现金管理多语言配置,修改msg

wangguorui/feature-20251125171605-现金管理多语言配置
wangguorui 1 month ago
parent
commit
c00c460f84
  1. 26
      src/main/java/com/example/demo/controller/coin/AdminController.java
  2. 58
      src/main/java/com/example/demo/controller/coin/RefundController.java
  3. 5
      src/main/java/com/example/demo/service/coin/AdminService.java
  4. 7
      src/main/java/com/example/demo/service/coin/RefundService.java
  5. 45
      src/main/java/com/example/demo/serviceImpl/coin/AdminServiceImpl.java
  6. 2
      src/main/java/com/example/demo/serviceImpl/coin/ExportExcelServiceImpl.java
  7. 78
      src/main/java/com/example/demo/serviceImpl/coin/RefundServiceImpl.java

26
src/main/java/com/example/demo/controller/coin/AdminController.java

@ -46,7 +46,7 @@ public class AdminController {
@Log("用户登录")
@PostMapping("/login")
public Result login(@RequestBody Admin admin) {
public Result login(@RequestBody Admin admin, @RequestHeader(defaultValue = "zh") String lang) {
try {
admin = adminService.login(admin);
@ -58,14 +58,15 @@ public class AdminController {
} catch (Exception e) {
e.printStackTrace();
log.error(e.getMessage());
return Result.error(e.getMessage());
String translatedErrorMsg = languageTranslationUtil.translate(e.getMessage(), lang);
return Result.error(translatedErrorMsg);
}
}
@Log("查看用户信息")
@PostMapping("/userinfo")
public UserDetails getUserInfo(@RequestHeader("token") String token1,
@RequestHeader(defaultValue = "zh_CN") String lang) {
@RequestHeader(defaultValue = "zh") String lang) {
//String token = token1.getToken();
String token = token1;
@ -86,26 +87,28 @@ public class AdminController {
//获取管理员ID
@Log("获取用户ID")
@PostMapping("/adminId")
public Result selectId(@RequestBody Admin admin) {
public Result selectId(@RequestBody Admin admin, @RequestHeader(defaultValue = "zh") String lang) {
try {
String ID = adminService.getId(admin.getAccount());
return Result.success(ID);
} catch (Exception e) {
log.error(e.getMessage());
return Result.error(e.getMessage());
String translatedErrorMsg = languageTranslationUtil.translate(e.getMessage(), lang);
return Result.error(translatedErrorMsg);
}
}
//更新用户密码
@Log("更新用户密码")
@PostMapping("/password")
public Result updatePassword(@RequestBody Password password){
public Result updatePassword(@RequestBody Password password, @RequestHeader(defaultValue = "zh") String lang){
try {
return adminService.updatePassword(password);
return adminService.updatePassword(password, lang);
} catch (Exception e) {
return Result.error("服务器波动,请稍作等待");
String translatedErrorMsg = languageTranslationUtil.translate("服务器波动,请稍作等待", lang);
return Result.error(translatedErrorMsg);
}
}
@ -113,12 +116,13 @@ public class AdminController {
//更新用户密码
@Log("重置用户密码")
@PostMapping("/reset")
public Result resetPassword(@RequestBody Password password){
public Result resetPassword(@RequestBody Password password, @RequestHeader(defaultValue = "zh") String lang){
try {
return adminService.resetPassword(password);
return adminService.resetPassword(password, lang);
} catch (Exception e) {
return Result.error("重置失败");
String translatedErrorMsg = languageTranslationUtil.translate("重置失败", lang);
return Result.error(translatedErrorMsg);
}
}

58
src/main/java/com/example/demo/controller/coin/RefundController.java

@ -45,13 +45,15 @@ public class RefundController {
//退款明细
@Log("获取全部退款明细")
@PostMapping("/selectAll")
public Result selcetAll(@RequestBody Page page) {
public Result selectAll(@RequestBody Page page, @RequestHeader(defaultValue = "zh") String lang) {
try {
if (ObjectUtils.isEmpty(page.getPageNum())) {
return Result.error("页码数为空!");
String errorMsg = languageTranslationUtil.translate("页码数为空!", lang);
return Result.error(errorMsg);
}
if (ObjectUtils.isEmpty(page.getPageSize())) {
return Result.error("页大小为空!");
String errorMsg = languageTranslationUtil.translate("页大小为空!", lang);
return Result.error(errorMsg);
} else {
//解token权限
HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
@ -61,12 +63,14 @@ public class RefundController {
List<String> list = Arrays.asList(admin.getMarkets().split(","));
page.getRefundUser().setMarkets(list);
} else {
return Result.error("角色为空");
String errorMsg = languageTranslationUtil.translate("角色为空", lang);
return Result.error(errorMsg);
}
return Result.success(refundService.selectAll(page.getPageNum(), page.getPageSize(), page.getRefundUser()));
}
} catch (Exception e) {
return Result.error("请检查筛选数据的格式");
String errorMsg = languageTranslationUtil.translate("请检查筛选数据的格式", lang);
return Result.error(errorMsg);
}
}
@ -74,13 +78,15 @@ public class RefundController {
//退款筛选
@Log("退款明细筛选")
@PostMapping("/selectBy")
public Result selcetBy(@RequestBody Page page, @RequestHeader(defaultValue = "zh_CN") String lang) {
public Result selectBy(@RequestBody Page page, @RequestHeader(defaultValue = "zh") String lang) {
try {
if (ObjectUtils.isEmpty(page.getPageNum())) {
return Result.error("页码数为空!");
String errorMsg = languageTranslationUtil.translate("页码数为空!", lang);
return Result.error(errorMsg);
}
if (ObjectUtils.isEmpty(page.getPageSize())) {
return Result.error("页大小为空!");
String errorMsg = languageTranslationUtil.translate("页大小为空!", lang);
return Result.error(errorMsg);
} else {
//解token权限
if(page.getRefundUser().getMarkets()==null||page.getRefundUser().getMarkets().isEmpty()) {
@ -99,7 +105,8 @@ public class RefundController {
return result;
}
} catch (Exception e) {
return Result.error("请检查筛选数据的格式");
String errorMsg = languageTranslationUtil.translate("请检查筛选数据的格式", lang);
return Result.error(errorMsg);
}
}
@ -107,7 +114,7 @@ public class RefundController {
//退款金币统计
@Log("退款金币合计数统计")
@PostMapping("/statsGold")
public Result statsGold(@RequestBody RefundUser refundUser) {
public Result statsGold(@RequestBody RefundUser refundUser, @RequestHeader(defaultValue = "zh") String lang) {
try {
//解token权限
if(refundUser.getMarkets()==null||refundUser.getMarkets().isEmpty()) {
@ -120,15 +127,16 @@ public class RefundController {
Gold gold = refundService.statsGold(refundUser);
return Result.success(gold);
} catch (Exception e) {
return Result.error("请检查数据的格式");
String errorMsg = languageTranslationUtil.translate("请检查数据的格式", lang);
return Result.error(errorMsg);
}
}
//获取退款类型
@Log("获取退款类型")
@PostMapping("/refundType")
public Result getRefundType(@RequestHeader(defaultValue = "zh_CN") String lang) {
List<String> list = refundService.getRefundType();
public Result getRefundType(@RequestHeader(defaultValue = "zh") String lang) {
List<String> list = refundService.getRefundType(lang);
// 对退款类型进行多语言转换
translateRefundTypes(list, lang);
return Result.success(list);
@ -137,36 +145,40 @@ public class RefundController {
//筛选产品
// @Log("筛选商品")
@PostMapping("/selectGoods")
public Result getSelectGoods(@RequestBody RefundUser refundUser) {
List<RefundUser> list = refundService.selectGoods(refundUser);
public Result getSelectGoods(@RequestBody RefundUser refundUser, @RequestHeader(defaultValue = "zh") String lang) {
List<RefundUser> list = refundService.selectGoods(refundUser, lang);
return Result.success(list);
}
//消耗金币退款
@Log("新增金币退款")
@PostMapping("/add")
public Result add(@RequestBody RefundUser refundUser) {
public Result add(@RequestBody RefundUser refundUser, @RequestHeader(defaultValue = "zh") String lang) {
try {
return refundService.add(refundUser);
return refundService.add(refundUser, lang);
} catch (Exception e) {
e.printStackTrace();
return Result.error(e.getMessage());
String errorMsg = languageTranslationUtil.translate(e.getMessage(), lang);
return Result.error(errorMsg);
}
}
public Result selcet(@RequestBody Page page) {
public Result select(@RequestBody Page page, @RequestHeader(defaultValue = "zh") String lang) {
try {
if (ObjectUtils.isEmpty(page.getPageNum())) {
return Result.error("页码数为空!");
String errorMsg = languageTranslationUtil.translate("页码数为空!", lang);
return Result.error(errorMsg);
}
if (ObjectUtils.isEmpty(page.getPageSize())) {
return Result.error("页大小为空!");
String errorMsg = languageTranslationUtil.translate("页大小为空!", lang);
return Result.error(errorMsg);
} else {
return Result.success(refundService.selectBy(page.getPageNum(), page.getPageSize(), page.getRefundUser()));
}
} catch (Exception e) {
e.printStackTrace();
return Result.error("请检查筛选数据的格式");
String errorMsg = languageTranslationUtil.translate("请检查筛选数据的格式", lang);
return Result.error(errorMsg);
}
}

5
src/main/java/com/example/demo/service/coin/AdminService.java

@ -20,12 +20,11 @@ public interface AdminService {
String getName(String account);
//更新密码
Result updatePassword(Password password);
Result updatePassword(Password password, String lang);
//重置密码
Result resetPassword(Password password);
Result resetPassword(Password password, String lang);
//获取当前登录的管理员账号
String getCurrentAdminAccount();
}

7
src/main/java/com/example/demo/service/coin/RefundService.java

@ -1,6 +1,5 @@
package com.example.demo.service.coin;
import com.example.demo.domain.vo.coin.ConsumeUser;
import com.example.demo.domain.vo.coin.Gold;
import com.example.demo.domain.vo.coin.RefundUser;
@ -30,12 +29,12 @@ public interface RefundService {
PageInfo<RefundUser> selectBy(Integer pageNum, Integer pageSize, RefundUser refundUser)throws Exception;
//添加退款记录
Result add(RefundUser refundUser);
Result add(RefundUser refundUser, String lang);
//获取退款类型
List<String> getRefundType();
List<String> getRefundType(String lang);
//查找退款商品
List<RefundUser> selectGoods(RefundUser refundUser);
List<RefundUser> selectGoods(RefundUser refundUser, String lang);
}

45
src/main/java/com/example/demo/serviceImpl/coin/AdminServiceImpl.java

@ -5,6 +5,7 @@ import com.example.demo.domain.vo.coin.Password;
import com.example.demo.domain.vo.coin.Result;
import com.example.demo.mapper.coin.AdminMapper;
import com.example.demo.service.coin.AdminService;
import com.example.demo.Util.LanguageTranslationUtil;
import lombok.RequiredArgsConstructor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.authentication.AuthenticationManager;
@ -27,6 +28,10 @@ public class AdminServiceImpl implements AdminService {
private AuthenticationManager authenticationManager;
private final AdminMapper adminMapper;
// 注入多语言工具类
@Autowired
private LanguageTranslationUtil languageTranslationUtil;
@Override
public Admin login(Admin admin) throws Exception {
String account = admin.getAccount();
@ -93,29 +98,34 @@ public class AdminServiceImpl implements AdminService {
//更新密码
@Override
public Result updatePassword(Password password) {
public Result updatePassword(Password password, String lang) {
String oldPassword = password.getOldPassword();
String newPassword = password.getNewPassword();
String againPassword = password.getAgainPassword();
// 校验输入参数是否为空账号旧密码新密码确认密码均不可为空
if(oldPassword == null || newPassword == null || againPassword == null ||password.getAccount() == null) {
return Result.error("输入不能为空");
String errorMsg = languageTranslationUtil.translate("输入不能为空", lang);
return Result.error(errorMsg);
}
// 检查两次输入的新密码是否一致
if (!newPassword.equals(againPassword)) {
return Result.error("两次输入的新密码不一致,请核对后重新输入");
String errorMsg = languageTranslationUtil.translate("两次输入的新密码不一致,请核对后重新输入", lang);
return Result.error(errorMsg);
}
// 检查新密码是否符合复杂度要求
if (!PASSWORD_PATTERN.matcher(newPassword).matches()) {
return Result.error("新密码必须为8-16位数字、字母或符号组成,且至少包含其中两种");
String errorMsg = languageTranslationUtil.translate("新密码必须为8-16位数字、字母或符号组成,且至少包含其中两种", lang);
return Result.error(errorMsg);
}
if(adminMapper.getAdmin(password.getAccount())==null)
{
return Result.error("用户不存在");
String errorMsg = languageTranslationUtil.translate("用户不存在", lang);
return Result.error(errorMsg);
}
// 校验新密码是否与旧密码相同不允许相同
if (oldPassword.equals(newPassword)) {
return Result.error("新密码与历史密码重复");
String errorMsg = languageTranslationUtil.translate("新密码与历史密码重复", lang);
return Result.error(errorMsg);
}
try {
// 创建认证令牌并验证旧密码
@ -136,29 +146,34 @@ public class AdminServiceImpl implements AdminService {
admin.setPassword(encodedPassword);
admin.setUpdateTime(new Date()); // 更新修改时间
adminMapper.updatePassword(admin);
return Result.success("密码修改成功");
String successMsg = languageTranslationUtil.translate("密码修改成功", lang);
return Result.success(successMsg);
} catch (BadCredentialsException e) {
// 旧密码验证失败
return Result.error("原密码错误,请重新输入");
String errorMsg = languageTranslationUtil.translate("原密码错误,请重新输入", lang);
return Result.error(errorMsg);
}
catch (Exception e) {
return Result.error("密码更新失败");
String errorMsg = languageTranslationUtil.translate("密码更新失败", lang);
return Result.error(errorMsg);
}
}
//重置密码
@Override
public Result resetPassword(Password password) {
public Result resetPassword(Password password, String lang) {
String newPassword = "123456";
if(password.getAccount() == null) {
return Result.error("账户未输入");
String errorMsg = languageTranslationUtil.translate("账户未输入", lang);
return Result.error(errorMsg);
}
if(adminMapper.getAdmin(password.getAccount())==null)
{
return Result.error("账户查找不到");
String errorMsg = languageTranslationUtil.translate("账户查找不到", lang);
return Result.error(errorMsg);
}
try {
// 获取认证后的用户信息
@ -173,10 +188,12 @@ public class AdminServiceImpl implements AdminService {
admin.setUpdateTime(new Date()); // 更新修改时间
adminMapper.updatePassword(admin);
return Result.success("密码重置成功");
String successMsg = languageTranslationUtil.translate("密码重置成功", lang);
return Result.success(successMsg);
}
catch (Exception e) {
return Result.error("其他错误");
String errorMsg = languageTranslationUtil.translate("其他错误", lang);
return Result.error(errorMsg);
}
}

2
src/main/java/com/example/demo/serviceImpl/coin/ExportExcelServiceImpl.java

@ -187,7 +187,7 @@ public class ExportExcelServiceImpl implements ExportExcelService {
List<String> markets = Arrays.asList(StringUtils.split(admin.getMarkets(), ","));
refundUser.setMarkets(markets);
page.setRefundUser(refundUser);
return refundController.selcet(page);
return refundController.select(page, String.join(",", markets));
} catch (Exception e) {
throw new RuntimeException(e);
}

78
src/main/java/com/example/demo/serviceImpl/coin/RefundServiceImpl.java

@ -4,6 +4,7 @@ import com.example.demo.domain.entity.UserGoldRecord;
import com.example.demo.mapper.coin.*;
import com.example.demo.service.coin.MarketService;
import com.example.demo.service.coin.RefundService;
import com.example.demo.Util.LanguageTranslationUtil;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import org.springframework.beans.factory.annotation.Autowired;
@ -40,12 +41,16 @@ public class RefundServiceImpl implements RefundService {
@Autowired
private UserMapper userMapper;
@Autowired
private MarketMapper marketMapper;
@Autowired
private RechargeMapper rechargeMapper;
// 注入多语言工具类
@Autowired
private LanguageTranslationUtil languageTranslationUtil;
//查找全部退款
@Override
public PageInfo<RefundUser> selectAll(Integer pageNum, Integer pageSize, RefundUser refundUser) throws Exception {
@ -84,29 +89,34 @@ public class RefundServiceImpl implements RefundService {
//添加退款记录
@Transactional
@Override
public Result add(RefundUser refundUser) {
public Result add(RefundUser refundUser, String lang) {
if (refundUser.getTaskGold() == null || refundUser.getFreeGold() == null || refundUser.getPermanentGold() == null) {
return Result.error("金币不能为空");
String errorMsg = languageTranslationUtil.translate("金币不能为空", lang);
return Result.error(errorMsg);
}
if (refundUser.getTaskGold().compareTo(BigDecimal.ZERO) < 0 ||
refundUser.getFreeGold().compareTo(BigDecimal.ZERO) < 0 ||
refundUser.getPermanentGold().compareTo(BigDecimal.ZERO) < 0) {
return Result.error("金币不能为负数");
String errorMsg = languageTranslationUtil.translate("金币不能为负数", lang);
return Result.error(errorMsg);
}
if (refundUser.getJwcode() < 10000000 || refundUser.getJwcode() > 99999999) {
return Result.error("精网号位数小于8位或大于8位");
String errorMsg = languageTranslationUtil.translate("精网号位数小于8位或大于8位", lang);
return Result.error(errorMsg);
}
GoldUser goldUser = userMapper.selectUser(refundUser.getJwcode().toString());
if (goldUser == null) {
return Result.error("用户不存在");
String errorMsg = languageTranslationUtil.translate("用户不存在", lang);
return Result.error(errorMsg);
}
UserGoldRecord userGoldRecord = new UserGoldRecord();
if(refundUser.getOrderCode()==null|| refundUser.getOrderCode().isEmpty()){
return Result.error("订单号不能为空");
String errorMsg = languageTranslationUtil.translate("订单号不能为空", lang);
return Result.error(errorMsg);
}
String goodsName = "";
if(refundUser.getGoodsName()==null|| refundUser.getGoodsName().isEmpty()){
goodsName = "空";
goodsName = languageTranslationUtil.translate("空", lang);
}else {
goodsName = refundUser.getGoodsName();
}
@ -138,7 +148,8 @@ public class RefundServiceImpl implements RefundService {
if (refundUser.getFreeGold().compareTo(gold.getNowFreeDecember().add(gold.getNowFreeJune())) > 0
|| refundUser.getPermanentGold().compareTo(gold.getNowPermanentGold()) > 0
|| refundUser.getTaskGold().compareTo(gold.getNowTaskGold()) > 0) {
return Result.error("金币数量不足");
String errorMsg = languageTranslationUtil.translate("金币数量不足", lang);
return Result.error(errorMsg);
}
// 根据当前月份设置对应字段
if (currentMonth >= 1 && currentMonth <= 6) {
@ -166,8 +177,6 @@ public class RefundServiceImpl implements RefundService {
userGoldRecord.setSumGold(-refundUser.getSumGold().intValue());
}
userGoldRecord.setPayPlatform("金币系统");
userGoldRecord.setRemark(refundUser.getRemark());
userGoldRecord.setAdminId(refundUser.getAdminId());
@ -178,49 +187,57 @@ public class RefundServiceImpl implements RefundService {
List<ConsumeUser> list1 = consumeMapper.selectOrderCodeByJwcode(refundUser);
List<RechargeUser> list2 = rechargeMapper.selectOrderCodeByJwcode(refundUser);
if(Objects.equals(refundUser.getRefundType(), "商品退款")){
//消费订单号校验
if (list1 == null || list1.isEmpty()) {
return Result.error("该用户没有该订单号");
} else if (list1.size() == 1) {
ConsumeUser consumeUser = list1.getFirst();
if (consumeUser.getIsRefund().equals(1)) {
return Result.error("该订单已被退款或待审核");
//消费订单号校验
if (list1 == null || list1.isEmpty()) {
String errorMsg = languageTranslationUtil.translate("该用户没有该订单号", lang);
return Result.error(errorMsg);
} else if (list1.size() == 1) {
ConsumeUser consumeUser = list1.getFirst();
if (consumeUser.getIsRefund().equals(1)) {
String errorMsg = languageTranslationUtil.translate("该订单已被退款或待审核", lang);
return Result.error(errorMsg);
}
} else {
String errorMsg = languageTranslationUtil.translate("订单重复", lang);
return Result.error(errorMsg);
}
} else {
return Result.error("订单重复");
}
}else{
//充值订单号校验
if (list2 == null || list2.isEmpty()) {
return Result.error("该用户没有该订单号");
String errorMsg = languageTranslationUtil.translate("该用户没有该订单号", lang);
return Result.error(errorMsg);
} else if (list2.size() == 1) {
RechargeUser rechargeUser = list2.getFirst();
if (rechargeUser.getIsRefund().equals(1)) {
return Result.error("该订单已被退款或待审核");
String errorMsg = languageTranslationUtil.translate("该订单已被退款或待审核", lang);
return Result.error(errorMsg);
}
} else {
return Result.error("订单重复");
String errorMsg = languageTranslationUtil.translate("订单重复", lang);
return Result.error(errorMsg);
}
}
refundMapper.add(userGoldRecord);
consumeMapper.updateIsRefund(orderCode);
return Result.success();
String successMsg = languageTranslationUtil.translate("操作成功", lang);
return Result.success(successMsg);
}
//获取退款类型
@Override
public List<String> getRefundType() {
public List<String> getRefundType(String lang) {
List<String> list = refundMapper.getRefundType();
List<String> filteredList = list.stream()
.filter(Objects::nonNull) // 过滤掉 null
.filter(str -> !str.trim().isEmpty()) // 过滤掉空字符串和仅包含空白字符的字符串
.map(type -> languageTranslationUtil.translate(type, lang)) // 翻译每个类型
.collect(Collectors.toList());
return filteredList;
}
//查找退款商品
@Override
public List<RefundUser> selectGoods(RefundUser refundUser) {
public List<RefundUser> selectGoods(RefundUser refundUser, String lang) {
List<RefundUser> refundUsers = refundMapper.selectGoods(refundUser);
List<RefundUser> list = new ArrayList<>();
for (RefundUser record : refundUsers) {
@ -228,16 +245,13 @@ public class RefundServiceImpl implements RefundService {
continue;
}
String orderCode = record.getOrderCode() != null ? record.getOrderCode() : "无订单号";
String goodsName = record.getGoodsName() != null ? record.getGoodsName() : "无商品名";
String orderCode = record.getOrderCode() != null ? record.getOrderCode() : languageTranslationUtil.translate("无订单号", lang);
String goodsName = record.getGoodsName() != null ? record.getGoodsName() : languageTranslationUtil.translate("无商品名", lang);
BigDecimal permanentGold = record.getPermanentGold() != null ? record.getPermanentGold() : BigDecimal.ZERO;
BigDecimal freeGold = record.getFreeGold() != null ? record.getFreeGold() : BigDecimal.ZERO;
BigDecimal taskGold = record.getTaskGold() != null ? record.getTaskGold() : BigDecimal.ZERO;
// 计算总和
// 拼接格式订单号_商品名例如XF20250629_商品BC
String combined = orderCode + "_" + goodsName;
RefundUser newRefundUser = new RefundUser();
newRefundUser.setOrderCode(orderCode);
newRefundUser.setGoodsName(goodsName);

Loading…
Cancel
Save