You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
package com.example.demo.serviceImpl.coin;
import com.example.demo.Util.GoldTistV2; import com.example.demo.domain.entity.User; import com.example.demo.domain.entity.UserGoldRecord; import com.example.demo.domain.vo.coin.ConsumeUser; import com.example.demo.domain.vo.coin.Gold; import com.example.demo.domain.vo.coin.GoldUser; import com.example.demo.domain.vo.coin.Result; import com.example.demo.mapper.coin.ConsumeMapper; import com.example.demo.mapper.coin.MarketMapper; import com.example.demo.mapper.coin.UserMapper; import com.example.demo.service.coin.ConsumeService; import com.example.demo.service.coin.MarketService; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal; import java.time.LocalDate; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; import java.util.Date; import java.util.List; import java.util.Random;
/** * @program: gold-java * @ClassName ConsumeServiceImpl * @description: 消费模块 * @author: Double * @create: 2025−06-23 13:58 * @Version 1.0 **/
@Service public class ConsumeServiceImpl implements ConsumeService {
@Autowired private ConsumeMapper consumeMapper;
@Autowired private UserMapper userMapper;
@Autowired private MarketMapper marketMapper;
//消耗明细
@Override public PageInfo<ConsumeUser> selectAll(Integer pageNum, Integer pageSize, ConsumeUser consumeUser){ //获取市场id
List<String> markets = marketMapper.getMarketIds(consumeUser.getMarkets()); consumeUser.setMarkets(markets); PageHelper.startPage(pageNum, pageSize); List<ConsumeUser> consumeUsers = consumeMapper.selectAll(consumeUser); return new PageInfo<>(consumeUsers); }
//消耗金币统计
@Override public Gold statsGold(ConsumeUser consumeUser) { //获取市场id
List<String> markets = marketMapper.getMarketIds(consumeUser.getMarkets()); if (markets.contains("9") || markets.contains("9999")){ markets=null; } consumeUser.setMarkets(markets); Gold gold = new Gold(); List<ConsumeUser> consumeUsers = consumeMapper.selectBy(consumeUser);
// 初始化累加器
BigDecimal permanentGoldSum = BigDecimal.valueOf(0); BigDecimal freeGoldSum = BigDecimal.valueOf(0); BigDecimal taskGoldSum = BigDecimal.valueOf(0);
// 遍历消费记录并累加金币
for (ConsumeUser user : consumeUsers) { // 累加永久金币
if (user.getPermanentGold() != null) { permanentGoldSum = permanentGoldSum.add(user.getPermanentGold()); } // 累加免费金币
if (user.getFreeGold() != null) { freeGoldSum = freeGoldSum.add(user.getFreeGold()); } // 累加任务金币
if (user.getTaskGold() != null) { taskGoldSum = taskGoldSum.add(user.getTaskGold()); } }
// 将累加结果设置到Gold对象
gold.setPermanentGolds(permanentGoldSum); gold.setFreeGolds(freeGoldSum); gold.setTaskGolds(taskGoldSum);
return gold; }
//消耗明细筛选
@Override public PageInfo<ConsumeUser> selectBy(Integer pageNum, Integer pageSize, ConsumeUser consumeUser) { //获取市场id
List<String> markets = marketMapper.getMarketIds(consumeUser.getMarkets()); if (markets.contains("9") || markets.contains("9999")){ markets=null; } consumeUser.setMarkets(markets); PageHelper.startPage(pageNum, pageSize); List<ConsumeUser> consumeUsers = consumeMapper.selectBy(consumeUser); return new PageInfo<>(consumeUsers); }
//新增消耗
@Transactional @Override public Result add(ConsumeUser consumeUser) { if (consumeUser.getTaskGold() == null || consumeUser.getFreeGold() == null || consumeUser.getPermanentGold() == null) { return Result.error("金币数量不能为空"); } if (consumeUser.getTaskGold().compareTo(BigDecimal.ZERO) < 0 || consumeUser.getFreeGold().compareTo(BigDecimal.ZERO) < 0 || consumeUser.getPermanentGold().compareTo(BigDecimal.ZERO) < 0) { return Result.error("金币不能为负数"); } if(consumeUser.getJwcode()<10000000||consumeUser.getJwcode()>99999999) { return Result.error("精网号位数小于8位或大于8位"); } GoldUser goldUser = userMapper.selectUser(consumeUser.getJwcode().toString()); if (goldUser == null) { return Result.error("用户不存在"); } UserGoldRecord userGoldRecord = new UserGoldRecord();
// 获取当前时间戳部分
String timestampPart = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmssSSS")); // 获取自增计数器部分(三位数,不足补零)
Random random = new Random(); int randomNumber = random.nextInt(900) + 100; //订单号生成
userGoldRecord.setOrderCode("XF" + timestampPart + randomNumber); userGoldRecord.setJwcode(consumeUser.getJwcode()); userGoldRecord.setGoodsName(consumeUser.getGoodsName()); userGoldRecord.setSumGold(-consumeUser.getSumGold().intValue()); userGoldRecord.setPermanentGold(-consumeUser.getPermanentGold().intValue()); // 获取当前月份(1-12)
int currentMonth = LocalDate.now().getMonthValue(); GoldUser gold = userMapper.selectGold(consumeUser.getJwcode().toString()); if (consumeUser.getFreeGold().compareTo(gold.getNowFreeDecember().add(gold.getNowFreeJune())) > 0 || consumeUser.getPermanentGold().compareTo(gold.getNowPermanentGold()) > 0 || consumeUser.getTaskGold().compareTo(gold.getNowTaskGold()) > 0) { return Result.error("金币数量不足"); } // 根据当前月份设置对应字段
if (currentMonth >= 1 && currentMonth <= 6) { // 1-6月:设置6月额度,12月保持默认值
if (consumeUser.getFreeGold().compareTo(gold.getNowFreeJune()) > 0) { userGoldRecord.setFreeJune(-gold.getNowFreeJune().intValue()); userGoldRecord.setFreeDecember(-(consumeUser.getFreeGold().subtract(gold.getNowFreeJune())).intValue()); } else { userGoldRecord.setFreeJune(-consumeUser.getFreeGold().intValue()); userGoldRecord.setFreeDecember(0); } } else { // 7-12月:设置12月额度,6月保持默认值
if (consumeUser.getFreeGold().compareTo(gold.getNowFreeDecember()) > 0) { userGoldRecord.setFreeDecember(-gold.getNowFreeDecember().intValue()); userGoldRecord.setFreeJune(-(consumeUser.getFreeGold().subtract(gold.getNowFreeDecember())).intValue()); } else { userGoldRecord.setFreeDecember(-consumeUser.getFreeGold().intValue()); userGoldRecord.setFreeJune(0); } } //信息输入
userGoldRecord.setTaskGold(-consumeUser.getTaskGold().intValue()); userGoldRecord.setRemark(consumeUser.getRemark()); userGoldRecord.setType((byte) 1); userGoldRecord.setIsRefund((byte) 0); userGoldRecord.setPayPlatform("金币系统"); userGoldRecord.setAdminId(consumeUser.getAdminId()); userGoldRecord.setAuditStatus(1); userGoldRecord.setCreateTime(new Date()); userGoldRecord.setPayTime(new Date()); consumeMapper.add(userGoldRecord); consumeMapper.updateUserGold(userGoldRecord); User user = new User(); user.setJwcode(userGoldRecord.getJwcode()); user.setCurrentPermanentGold(gold.getNowPermanentGold().intValue() - consumeUser.getPermanentGold().intValue()); user.setCurrentFreeJune(gold.getNowFreeJune().intValue() + userGoldRecord.getFreeJune()); user.setCurrentFreeDecember(gold.getNowFreeDecember().intValue() + userGoldRecord.getFreeDecember()); user.setCurrentTaskGold(gold.getNowTaskGold().intValue() - consumeUser.getTaskGold().intValue()); user.setConsumeNum(gold.getConsumeNum().intValue() + 1); user.setSumConsume(-(consumeUser.getPermanentGold().intValue() + consumeUser.getFreeGold().intValue() + consumeUser.getTaskGold().intValue())); userMapper.updateGold(user); // if(consumeUser.getJwcode().equals(94226013)){
GoldTistV2.addCoinNew(userGoldRecord.getJwcode().toString(), 65, (double) (userGoldRecord.getPermanentGold() + userGoldRecord.getFreeDecember() + userGoldRecord.getFreeJune() + userGoldRecord.getTaskGold()) / 100, userGoldRecord.getRemark(), ((double) userGoldRecord.getPermanentGold() / 100), userGoldRecord.getPayPlatform(), userGoldRecord.getGoodsName()); // }
return Result.success(); } }
|