|
|
|
@ -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); |
|
|
|
|