package com.example.demo.serviceImpl; import com.example.demo.domain.entity.UserGoldRecord; import com.example.demo.domain.vo.ConsumeUser; import com.example.demo.domain.vo.Gold; import com.example.demo.domain.vo.RefundUser; import com.example.demo.domain.vo.Result; import com.example.demo.mapper.ConsumeMapper; import com.example.demo.mapper.RefundMapper; import com.example.demo.mapper.UserMapper; import com.example.demo.service.RefundService; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.time.LocalDate; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.concurrent.atomic.AtomicInteger; /** * @program: gold-java * @ClassName RefundServiceImpl * @description: * @author: Double * @create: 2025−06-27 11:50 * @Version 1.0 **/ @Service public class RefundServiceImpl implements RefundService { @Autowired private RefundMapper refundMapper; @Autowired private UserMapper userMapper; @Override public PageInfo selectAll(Integer pageNum, Integer pageSize, RefundUser refundUser) { PageHelper.startPage(pageNum, pageSize); List refundUsers = refundMapper.selectAll(refundUser); return new PageInfo<>(refundUsers); } @Override public Gold statsGold(RefundUser refundUser) { Gold gold = new Gold(); List refundUsers = refundMapper.selectBy(refundUser); // 初始化累加器 int permanentGoldSum = 0; int freeGoldSum = 0; int taskGoldSum = 0; // 遍历推开记录并累加金币 for (RefundUser user : refundUsers) { // 累加永久金币 if (user.getPermanentGold() != null) { permanentGoldSum += user.getPermanentGold(); } // 累加免费金币 if (user.getFreeGold() != null) { freeGoldSum += user.getFreeGold(); } // 累加任务金币 if (user.getTaskGold() != null) { taskGoldSum += user.getTaskGold(); } } // 将累加结果设置到Gold对象 gold.setPermanentGolds(permanentGoldSum); gold.setFreeGolds(freeGoldSum); gold.setTaskGolds(taskGoldSum); return gold; } @Override public PageInfo selectBy(Integer pageNum, Integer pageSize, RefundUser refundUser) { PageHelper.startPage(pageNum, pageSize); List refundUsers = refundMapper.selectBy(refundUser); return new PageInfo<>(refundUsers); } @Override public Result add(RefundUser refundUser) { UserGoldRecord userGoldRecord = new UserGoldRecord(); String goodsNameWithOrder = refundUser.getGoodsName(); //订单号生成 if (goodsNameWithOrder != null && goodsNameWithOrder.contains("_")) { String[] parts = goodsNameWithOrder.split("_", 2); if (parts.length >= 2) { // 提取订单号(保留原始前缀) String orderCode = parts[0]; // XF202506281545524400006580 // 提取商品名(处理可能包含下划线的情况) String goodsName = parts[1]; // 商品A // 设置属性(添加退款前缀) userGoldRecord.setOrderCode("TK" + orderCode); // TKXF202506281545524400006580 userGoldRecord.setGoodsName(goodsName); // 商品A } } userGoldRecord.setJwcode(refundUser.getJwcode()); userGoldRecord.setRefundType(refundUser.getRefundType()); userGoldRecord.setRefundModel(refundUser.getRefundModel()); userGoldRecord.setPermanentGold(refundUser.getPermanentGold()); // 获取当前月份(1-12) int currentMonth = LocalDate.now().getMonthValue(); // 根据当前月份设置对应字段 if (currentMonth >= 1 && currentMonth <= 6) { // 1-6月:设置6月额度,12月保持默认值 userGoldRecord.setFreeJune(0); userGoldRecord.setFreeDecember(refundUser.getFreeGold()); } else { // 7-12月:设置12月额度,6月保持默认值 userGoldRecord.setFreeJune(refundUser.getFreeGold()); userGoldRecord.setFreeDecember(0); } userGoldRecord.setTaskGold(refundUser.getTaskGold()); userGoldRecord.setSumGold(refundUser.getSumGold()); userGoldRecord.setPayPlatform("金币系统"); userGoldRecord.setRemark(refundUser.getRemark()); userGoldRecord.setAdminId(refundUser.getAdminId()); userGoldRecord.setType((byte) 2); userGoldRecord.setAuditStatus(0); userGoldRecord.setCreateTime(new Date()); refundMapper.add(userGoldRecord); return Result.success(); } @Override public List getRefundType() { List list = refundMapper.getRefundType(); return list; } @Override public List selectGoods(Integer jwcode) { List refundUsers = refundMapper.selectGoods(jwcode); List list = new ArrayList<>(); for (RefundUser record : refundUsers) { if (record == null) { continue; } String orderCode = record.getOrderCode() != null ? record.getOrderCode() : "无订单号"; String goodsName = record.getGoodsName() != null ? record.getGoodsName() : "无商品名"; // 拼接格式:订单号_商品名(例如:XF20250629_商品BC) String combined = orderCode + "_" + goodsName; RefundUser refundUser = new RefundUser(); refundUser.setGoodsName(combined); refundUser.setPermanentGold(record.getPermanentGold()); refundUser.setFreeGold(record.getFreeGold()); refundUser.setTaskGold(record.getTaskGold()); list.add(refundUser); } return list; } }