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.
174 lines
6.4 KiB
174 lines
6.4 KiB
package com.example.demo.serviceImpl.coin;
|
|
|
|
import com.example.demo.domain.entity.UserGoldRecord;
|
|
import com.example.demo.domain.vo.bean.BeanUserCard;
|
|
import com.example.demo.mapper.bean.BeanUserMapper;
|
|
import com.example.demo.mapper.coin.MarketMapper;
|
|
import com.example.demo.mapper.coin.RechargeMapper;
|
|
import com.example.demo.mapper.coin.UserMapper;
|
|
import com.example.demo.service.coin.MarketService;
|
|
import com.example.demo.service.coin.RechargeService;
|
|
import com.github.pagehelper.PageHelper;
|
|
import com.github.pagehelper.PageInfo;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.stereotype.Service;
|
|
import com.example.demo.domain.vo.coin.*;
|
|
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 RechrageServceImpl
|
|
* @description:
|
|
* @author: Double
|
|
* @create: 2025−06-29 13:40
|
|
* @Version 1.0
|
|
**/
|
|
|
|
@Service
|
|
public class RechargeServiceImpl implements RechargeService {
|
|
|
|
@Autowired
|
|
private RechargeMapper rechargeMapper;
|
|
|
|
@Autowired
|
|
private UserMapper userMapper;
|
|
|
|
@Autowired
|
|
private MarketMapper marketMapper;
|
|
|
|
@Autowired
|
|
private BeanUserMapper beanUserMapper;
|
|
|
|
|
|
|
|
//查询所有充值
|
|
@Override
|
|
public PageInfo<RechargeUser> selectAll(Integer pageNum, Integer pageSize, RechargeUser rechargeUser) throws Exception{
|
|
//获取市场id
|
|
List<String> markets = marketMapper.getMarketIds(rechargeUser.getMarkets());
|
|
rechargeUser.setMarkets(markets);
|
|
PageHelper.startPage(pageNum, pageSize);
|
|
List<RechargeUser> rechargeUsers = rechargeMapper.selectAll(rechargeUser);
|
|
return new PageInfo<>(rechargeUsers);
|
|
}
|
|
|
|
//查询筛选充值
|
|
@Override
|
|
public PageInfo<RechargeUser> selectBy(Integer pageNum, Integer pageSize, RechargeUser rechargeUser) throws Exception{
|
|
List<String> markets = marketMapper.getMarketIds(rechargeUser.getMarkets());
|
|
if (markets.contains("9") || markets.contains("9999")){
|
|
markets=null;
|
|
}
|
|
rechargeUser.setMarkets(markets);
|
|
PageHelper.startPage(pageNum, pageSize);
|
|
List<RechargeUser> rechargeUsers = rechargeMapper.selectBy(rechargeUser);
|
|
return new PageInfo<>(rechargeUsers);
|
|
}
|
|
|
|
//统计金币记录
|
|
@Override
|
|
public Gold statsGold(RechargeUser rechargeUser) {
|
|
List<String> markets = marketMapper.getMarketIds(rechargeUser.getMarkets());
|
|
if (markets.contains("9") || markets.contains("9999")){
|
|
markets=null;
|
|
|
|
}
|
|
rechargeUser.setMarkets(markets);
|
|
Gold gold = new Gold();
|
|
List<RechargeUser> rechargeUsers = rechargeMapper.selectBy(rechargeUser);
|
|
|
|
// 初始化累加器
|
|
int permanentGoldSum = 0;
|
|
int freeGoldSum = 0;
|
|
|
|
// 遍历充值记录并累加金币
|
|
for (RechargeUser user : rechargeUsers) {
|
|
// 累加永久金币
|
|
if (user.getPermanentGold() != null) {
|
|
permanentGoldSum += user.getPermanentGold();
|
|
}
|
|
// 累加免费金币
|
|
if (user.getFreeGold() != null) {
|
|
freeGoldSum += user.getFreeGold();
|
|
}
|
|
}
|
|
|
|
// 将累加结果设置到Gold对象
|
|
gold.setPermanentGolds(permanentGoldSum);
|
|
gold.setFreeGolds(freeGoldSum);
|
|
|
|
return gold;
|
|
}
|
|
|
|
|
|
//添加充值记录
|
|
@Override
|
|
public Result add(RechargeUser rechargeUser) {
|
|
if(rechargeUser.getFreeGold()==null||rechargeUser.getPermanentGold()==null||rechargeUser.getMoney()==null){
|
|
return Result.error("金币和金额不能为空");
|
|
}
|
|
if(rechargeUser.getFreeGold()<0||rechargeUser.getPermanentGold()<0||rechargeUser.getMoney()<0){
|
|
return Result.error("充值不能为0");
|
|
}
|
|
if(rechargeUser.getJwcode()<10000000||rechargeUser.getJwcode()>99999999)
|
|
{
|
|
return Result.error("精网号位数小于8位或大于8位");
|
|
}
|
|
// 验证免费金币和永久金币是否均为0
|
|
if (rechargeUser.getFreeGold() == 0 && rechargeUser.getPermanentGold() == 0) {
|
|
return Result.error("免费金币和永久金币不能同时为0");
|
|
}
|
|
BeanUserCard user = beanUserMapper.userCard(String.valueOf(rechargeUser.getJwcode()));
|
|
if(user==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("CZ" + timestampPart + randomNumber);
|
|
userGoldRecord.setJwcode(rechargeUser.getJwcode());
|
|
userGoldRecord.setActivity(rechargeUser.getActivity());
|
|
userGoldRecord.setPermanentGold(rechargeUser.getPermanentGold());
|
|
// 获取当前月份(1-12)
|
|
int currentMonth = LocalDate.now().getMonthValue();
|
|
// 根据当前月份设置对应字段
|
|
if (currentMonth >= 1 && currentMonth <= 6) {
|
|
// 1-6月:设置6月额度,12月保持默认值
|
|
userGoldRecord.setFreeJune(0);
|
|
userGoldRecord.setFreeDecember(rechargeUser.getFreeGold());
|
|
} else {
|
|
// 7-12月:设置12月额度,6月保持默认值
|
|
userGoldRecord.setFreeJune(rechargeUser.getFreeGold());
|
|
userGoldRecord.setFreeDecember(0);
|
|
}
|
|
//数据输入
|
|
userGoldRecord.setSumGold(rechargeUser.getFreeGold()+rechargeUser.getPermanentGold());
|
|
userGoldRecord.setRateId(rechargeUser.getRateId());
|
|
userGoldRecord.setMoney(rechargeUser.getMoney());
|
|
userGoldRecord.setVoucher(rechargeUser.getVoucher());
|
|
userGoldRecord.setPayPlatform("金币系统");
|
|
userGoldRecord.setPayModel(rechargeUser.getPayModel());
|
|
userGoldRecord.setPayTime(rechargeUser.getPayTime());
|
|
userGoldRecord.setRemark(rechargeUser.getRemark());
|
|
userGoldRecord.setAdminId(rechargeUser.getAdminId());
|
|
userGoldRecord.setType((byte) 0);
|
|
userGoldRecord.setAuditStatus(0);
|
|
userGoldRecord.setCreateTime(new Date());
|
|
|
|
rechargeMapper.add(userGoldRecord);
|
|
return Result.success();
|
|
}
|
|
}
|