package com.example.demo.serviceImpl.bean; import com.example.demo.domain.vo.bean.*; import com.example.demo.domain.vo.coin.Gold; import com.example.demo.domain.vo.coin.GoldUser; import com.example.demo.domain.vo.coin.RechargeUser; import com.example.demo.domain.vo.coin.Result; import com.example.demo.mapper.bean.BeanRechargeMapper2; import com.example.demo.mapper.bean.BeanUserMapper; import com.example.demo.mapper.coin.BeanRechargeMapper1; import com.example.demo.mapper.coin.UserMapper; import com.example.demo.mapper.pay.BeanRechargeMapper3; import com.example.demo.service.bean.BeanRechargeService; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import lombok.RequiredArgsConstructor; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Service; import org.springframework.web.client.RestTemplate; import org.springframework.web.util.UriComponentsBuilder; import java.math.BigDecimal; import java.math.RoundingMode; import java.util.List; import java.util.Objects; import java.util.UUID; import java.util.stream.Collectors; /** * @program: gold-java * @ClassName BeanRechargeServiceImpl * @description: * @author: Double * @create: 2025−07-29 16:47 * @Version 1.0 **/ @Service @RequiredArgsConstructor public class BeanRechargeServiceImpl implements BeanRechargeService { @Autowired private RestTemplate restTemplate; @Autowired private BeanRechargeMapper2 beanRechargeMapper2; @Autowired private BeanRechargeMapper1 beanRechargeMapper1; @Autowired private BeanRechargeMapper3 beanRechargeMapper3; @Autowired private UserMapper userMapper; @Autowired private BeanUserMapper beanUserMapper; //新增金豆 @Override public Result add(BeanRecharge recharge) { try { // 验证精网号是否有效 if (recharge.getJwcode() == null || recharge.getJwcode().toString().isEmpty()) { return Result.error("精网号不能为空"); } if(recharge.getJwcode()<10000000||recharge.getJwcode()>99999999) { return Result.error("精网号位数小于8位或大于8位"); } // 验证免费豆和永久豆是否为非负数 if (recharge.getFreeBean() < 0 || recharge.getPermanentBean() < 0) { return Result.error("免费豆和永久豆不能为负数"); } // 验证免费豆和永久豆是否为非负数 if (recharge.getFreeBean() > 999999 || recharge.getPermanentBean() > 999999) { return Result.error("免费豆和永久豆不能超过999999"); } // 验证免费豆和永久豆是否均为0 if (recharge.getFreeBean() == 0 && recharge.getPermanentBean() == 0) { return Result.error("免费豆和永久豆不能同时为0"); } BeanUserCard user = beanUserMapper.userCard(String.valueOf(recharge.getJwcode())); if(user==null){ return Result.error("用户查找不到"); } // 验证备注是否为空 if (recharge.getRemark() == null || recharge.getRemark().toString().isEmpty()) { return Result.error("备注不能为空"); } if(recharge.getAdminName() == null || recharge.getAdminName().toString().isEmpty()){ return Result.error("管理员名称不能为空"); } beanRechargeMapper1.add(recharge); // String jwcode = recharge.getJwcode().toString(); // String op = "recharge"; // 操作类型(根据实际业务定义,例如"recharge"表示充值) // String content = recharge.getRemark(); // 备注作为content参数 // String orderNo = UUID.randomUUID().toString().replace("-", ""); // 生成唯一订单号(去除横线) // // // 2. 构建接口URL及参数 // String apiUrl = "http://47.92.148.30:3003/mock/61/hljw/api/user/gold"; // UriComponentsBuilder urlBuilder = UriComponentsBuilder.fromHttpUrl(apiUrl) // .queryParam("jwcode", jwcode) // .queryParam("op", op) // .queryParam("gold", recharge.getPermanentBean()) // .queryParam("content", content) // .queryParam("order_no", orderNo); // // // 3. 发送GET请求 // ResponseEntity response = restTemplate.getForEntity(urlBuilder.toUriString(), String.class); // // // 4. 处理响应结果 // if (!response.getStatusCode().is2xxSuccessful()) { // return Result.error("远程接口调用失败,状态码:" + response.getStatusCodeValue()); // } return Result.success("添加成功"); } catch (Exception e) { return Result.error("系统异常:" + e.getMessage()); } } //系统充值明细 @Override public PageInfo selectBySystem(Integer pageNum, Integer pageSize, BeanSystemRechargeInfo beanSystemRechargeInfo){ PageHelper.startPage(pageNum, pageSize); List beanSystemRechargeInfos = beanRechargeMapper2.selectBySystem(beanSystemRechargeInfo); return new PageInfo<>(beanSystemRechargeInfos); } //统计系统金豆记录 @Override public GoldBean statsSystemBean(BeanSystemRechargeInfo beanSystemRechargeInfo) { GoldBean gold = new GoldBean(); List beanSystemRechargeInfos = beanRechargeMapper2.selectBySystem(beanSystemRechargeInfo); // 初始化累加器 int permanentGoldSum = 0; int freeGoldSum = 0; BigDecimal moneySum = new BigDecimal("0.0"); // 遍历充值记录并累加金币 for (BeanSystemRechargeInfo info : beanSystemRechargeInfos) { // 累加永久金币 if (info.getPermanentBean() != null) { permanentGoldSum += info.getPermanentBean(); } // 累加免费金币 if (info.getFreeBean() != null) { freeGoldSum += info.getFreeBean(); } } moneySum = new BigDecimal(permanentGoldSum).divide(new BigDecimal("50"), 2, RoundingMode.HALF_UP); // 将累加结果设置到Gold对象 gold.setPermanentBean(permanentGoldSum); gold.setFreeBean(freeGoldSum); gold.setMoney(moneySum.doubleValue()); gold.setBeanNum(permanentGoldSum+freeGoldSum); return gold; } @Override public List systemMarket() { List list = beanRechargeMapper2.systemMarket(); // 使用 Java 8 的 Stream API 过滤 null 和空字符串 List filteredList = list.stream() .filter(Objects::nonNull) // 过滤掉 null 值 .filter(str -> !str.trim().isEmpty()) // 过滤掉空字符串和仅包含空白字符的字符串 .collect(Collectors.toList()); return filteredList; } //线上充值明细 @Override public PageInfo selectByOnline(Integer pageNum, Integer pageSize, BeanOnlineRechargeInfo beanOnlineRechargeInfo){ PageHelper.startPage(pageNum, pageSize); List beanOnlineRechargeInfos = beanRechargeMapper3.selectByOnline(beanOnlineRechargeInfo); return new PageInfo<>(beanOnlineRechargeInfos); } //统计线上金豆记录 @Override public GoldBean statsOnlineBean(BeanOnlineRechargeInfo beanOnlineRechargeInfo) { GoldBean gold = new GoldBean(); List beanOnlineRechargeInfos = beanRechargeMapper3.selectByOnline(beanOnlineRechargeInfo); // 初始化累加器 int countSum = 0; BigDecimal moneySum = new BigDecimal("0.0"); // 遍历充值记录并累加金币 for (BeanOnlineRechargeInfo info : beanOnlineRechargeInfos) { // 累加数量 if (info.getNum() != null) { countSum += info.getNum(); } // 累加金额 if (info.getMoney() != null) { moneySum = moneySum.add(new BigDecimal(info.getMoney().toString())); } } // 将累加结果设置到Gold对象 gold.setBeanNum(countSum); gold.setMoney(moneySum.doubleValue()); return gold; } @Override public List onlineMarket() { List list = beanRechargeMapper3.onlineMarket(); // 使用 Java 8 的 Stream API 过滤 null 和空字符串 List filteredList = list.stream() .filter(Objects::nonNull) // 过滤掉 null 值 .filter(str -> !str.trim().isEmpty()) // 过滤掉空字符串和仅包含空白字符的字符串 .collect(Collectors.toList()); return filteredList; } }