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.
267 lines
14 KiB
267 lines
14 KiB
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;
|
|
import java.util.UUID;
|
|
|
|
/**
|
|
* @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 = consumeMapper.sumGold(consumeUser);
|
|
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位");
|
|
}
|
|
if(consumeUser.getAdminName()==null){
|
|
return Result.error("管理员不能为空");
|
|
}
|
|
GoldUser goldUser = userMapper.selectUser(consumeUser.getJwcode().toString());
|
|
if (goldUser == null) {
|
|
return Result.error("用户不存在");
|
|
}
|
|
UserGoldRecord userGoldRecord = new UserGoldRecord();
|
|
|
|
String orderNumber = UUID.randomUUID().toString().replaceAll("-", "");
|
|
//订单号生成
|
|
userGoldRecord.setOrderCode("XF_" + orderNumber);
|
|
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(BigDecimal.valueOf(gold.getNowPermanentGold().intValue() - consumeUser.getPermanentGold().intValue()));
|
|
user.setCurrentFreeJune(BigDecimal.valueOf(gold.getNowFreeJune().intValue() + userGoldRecord.getFreeJune()));
|
|
user.setCurrentFreeDecember(BigDecimal.valueOf(gold.getNowFreeDecember().intValue() + userGoldRecord.getFreeDecember()));
|
|
user.setCurrentTaskGold(BigDecimal.valueOf(gold.getNowTaskGold().intValue() - consumeUser.getTaskGold().intValue()));
|
|
user.setConsumeNum(gold.getConsumeNum().intValue() + 1);
|
|
user.setSumConsumePermanent(BigDecimal.valueOf(-consumeUser.getPermanentGold().intValue()));
|
|
user.setSumConsumeFree(BigDecimal.valueOf(-consumeUser.getFreeGold().intValue()));
|
|
user.setSumConsumeTask(BigDecimal.valueOf(-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), consumeUser.getAdminName(), userGoldRecord.getGoodsName());
|
|
// }
|
|
return Result.success();
|
|
}
|
|
//
|
|
// @Transactional
|
|
// @Override
|
|
// public Result addRefund(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位");
|
|
// }
|
|
// if(consumeUser.getAdminName()==null){
|
|
// return Result.error("管理员不能为空");
|
|
// }
|
|
// GoldUser goldUser = userMapper.selectUser(consumeUser.getJwcode().toString());
|
|
// if (goldUser == null) {
|
|
// return Result.error("用户不存在");
|
|
// }
|
|
// UserGoldRecord userGoldRecord = new UserGoldRecord();
|
|
//
|
|
// String orderNumber = UUID.randomUUID().toString().replaceAll("-", "");
|
|
// //订单号生成
|
|
// userGoldRecord.setOrderCode("TKCZ_" + orderNumber);
|
|
// 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) 2);
|
|
// userGoldRecord.setAuditStatus(0);
|
|
// userGoldRecord.setPayPlatform("金币系统");
|
|
// userGoldRecord.setRefundType("金币退款");
|
|
// userGoldRecord.setGoodsName("金币退款");
|
|
// userGoldRecord.setRefundModel((byte) 0);
|
|
// userGoldRecord.setAdminId(consumeUser.getAdminId());
|
|
// userGoldRecord.setCreateTime(new Date());
|
|
// userGoldRecord.setPayTime(new Date());
|
|
// consumeMapper.addRefund(userGoldRecord);
|
|
// consumeMapper.updateUserGold(userGoldRecord);
|
|
// User user = new User();
|
|
// user.setJwcode(userGoldRecord.getJwcode());
|
|
// user.setCurrentPermanentGold(BigDecimal.valueOf(gold.getNowPermanentGold().intValue() - consumeUser.getPermanentGold().intValue()));
|
|
// user.setCurrentFreeJune(BigDecimal.valueOf(gold.getNowFreeJune().intValue() + userGoldRecord.getFreeJune()));
|
|
// user.setCurrentFreeDecember(BigDecimal.valueOf(gold.getNowFreeDecember().intValue() + userGoldRecord.getFreeDecember()));
|
|
// user.setCurrentTaskGold(BigDecimal.valueOf(gold.getNowTaskGold().intValue() - consumeUser.getTaskGold().intValue()));
|
|
// user.setConsumeNum(gold.getConsumeNum().intValue() + 1);
|
|
// user.setSumConsumePermanent(BigDecimal.valueOf(-consumeUser.getPermanentGold().intValue()));
|
|
// user.setSumConsumeFree(BigDecimal.valueOf(-consumeUser.getFreeGold().intValue()));
|
|
// user.setSumConsumeTask(BigDecimal.valueOf(-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), consumeUser.getAdminName(), userGoldRecord.getGoodsName());
|
|
// // }
|
|
// return Result.success();
|
|
// }
|
|
}
|