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.

222 lines
8.9 KiB

3 weeks ago
3 weeks ago
3 weeks ago
3 weeks ago
3 weeks ago
  1. package com.example.demo.serviceImpl.bean;
  2. import com.example.demo.domain.vo.bean.*;
  3. import com.example.demo.domain.vo.coin.Gold;
  4. import com.example.demo.domain.vo.coin.GoldUser;
  5. import com.example.demo.domain.vo.coin.RechargeUser;
  6. import com.example.demo.domain.vo.coin.Result;
  7. import com.example.demo.mapper.bean.BeanRechargeMapper2;
  8. import com.example.demo.mapper.bean.BeanUserMapper;
  9. import com.example.demo.mapper.coin.BeanRechargeMapper1;
  10. import com.example.demo.mapper.coin.UserMapper;
  11. import com.example.demo.mapper.pay.BeanRechargeMapper3;
  12. import com.example.demo.service.bean.BeanRechargeService;
  13. import com.github.pagehelper.PageHelper;
  14. import com.github.pagehelper.PageInfo;
  15. import lombok.RequiredArgsConstructor;
  16. import org.springframework.beans.factory.annotation.Autowired;
  17. import org.springframework.http.ResponseEntity;
  18. import org.springframework.stereotype.Service;
  19. import org.springframework.web.client.RestTemplate;
  20. import org.springframework.web.util.UriComponentsBuilder;
  21. import java.math.BigDecimal;
  22. import java.math.RoundingMode;
  23. import java.util.List;
  24. import java.util.Objects;
  25. import java.util.UUID;
  26. import java.util.stream.Collectors;
  27. /**
  28. * @program: gold-java
  29. * @ClassName BeanRechargeServiceImpl
  30. * @description:
  31. * @author: Double
  32. * @create: 202507-29 16:47
  33. * @Version 1.0
  34. **/
  35. @Service
  36. @RequiredArgsConstructor
  37. public class BeanRechargeServiceImpl implements BeanRechargeService {
  38. @Autowired
  39. private RestTemplate restTemplate;
  40. @Autowired
  41. private BeanRechargeMapper2 beanRechargeMapper2;
  42. @Autowired
  43. private BeanRechargeMapper1 beanRechargeMapper1;
  44. @Autowired
  45. private BeanRechargeMapper3 beanRechargeMapper3;
  46. @Autowired
  47. private UserMapper userMapper;
  48. @Autowired
  49. private BeanUserMapper beanUserMapper;
  50. //新增金豆
  51. @Override
  52. public Result add(BeanRecharge recharge) {
  53. try {
  54. // 验证精网号是否有效
  55. if (recharge.getJwcode() == null || recharge.getJwcode().toString().isEmpty()) {
  56. return Result.error("精网号不能为空");
  57. }
  58. if(recharge.getJwcode()<10000000||recharge.getJwcode()>99999999)
  59. {
  60. return Result.error("精网号位数小于8位或大于8位");
  61. }
  62. // 验证免费豆和永久豆是否为非负数
  63. if (recharge.getFreeBean() < 0 || recharge.getPermanentBean() < 0) {
  64. return Result.error("免费豆和永久豆不能为负数");
  65. }
  66. // 验证免费豆和永久豆是否为非负数
  67. if (recharge.getFreeBean() > 999999 || recharge.getPermanentBean() > 999999) {
  68. return Result.error("免费豆和永久豆不能超过999999");
  69. }
  70. // 验证免费豆和永久豆是否均为0
  71. if (recharge.getFreeBean() == 0 && recharge.getPermanentBean() == 0) {
  72. return Result.error("免费豆和永久豆不能同时为0");
  73. }
  74. BeanUserCard user = beanUserMapper.userCard(String.valueOf(recharge.getJwcode()));
  75. if(user==null){
  76. return Result.error("用户查找不到");
  77. }
  78. // 验证备注是否为空
  79. if (recharge.getRemark() == null || recharge.getRemark().toString().isEmpty()) {
  80. return Result.error("备注不能为空");
  81. }
  82. if(recharge.getAdminName() == null || recharge.getAdminName().toString().isEmpty()){
  83. return Result.error("管理员名称不能为空");
  84. }
  85. beanRechargeMapper1.add(recharge);
  86. // String jwcode = recharge.getJwcode().toString();
  87. // String op = "recharge"; // 操作类型(根据实际业务定义,例如"recharge"表示充值)
  88. // String content = recharge.getRemark(); // 备注作为content参数
  89. // String orderNo = UUID.randomUUID().toString().replace("-", ""); // 生成唯一订单号(去除横线)
  90. //
  91. // // 2. 构建接口URL及参数
  92. // String apiUrl = "http://47.92.148.30:3003/mock/61/hljw/api/user/gold";
  93. // UriComponentsBuilder urlBuilder = UriComponentsBuilder.fromHttpUrl(apiUrl)
  94. // .queryParam("jwcode", jwcode)
  95. // .queryParam("op", op)
  96. // .queryParam("gold", recharge.getPermanentBean())
  97. // .queryParam("content", content)
  98. // .queryParam("order_no", orderNo);
  99. //
  100. // // 3. 发送GET请求
  101. // ResponseEntity<String> response = restTemplate.getForEntity(urlBuilder.toUriString(), String.class);
  102. //
  103. // // 4. 处理响应结果
  104. // if (!response.getStatusCode().is2xxSuccessful()) {
  105. // return Result.error("远程接口调用失败,状态码:" + response.getStatusCodeValue());
  106. // }
  107. return Result.success("添加成功");
  108. } catch (Exception e) {
  109. return Result.error("系统异常:" + e.getMessage());
  110. }
  111. }
  112. //系统充值明细
  113. @Override
  114. public PageInfo<BeanSystemRechargeInfo> selectBySystem(Integer pageNum, Integer pageSize, BeanSystemRechargeInfo beanSystemRechargeInfo){
  115. PageHelper.startPage(pageNum, pageSize);
  116. List<BeanSystemRechargeInfo> beanSystemRechargeInfos = beanRechargeMapper2.selectBySystem(beanSystemRechargeInfo);
  117. return new PageInfo<>(beanSystemRechargeInfos);
  118. }
  119. //统计系统金豆记录
  120. @Override
  121. public GoldBean statsSystemBean(BeanSystemRechargeInfo beanSystemRechargeInfo) {
  122. GoldBean gold = new GoldBean();
  123. List<BeanSystemRechargeInfo> beanSystemRechargeInfos = beanRechargeMapper2.selectBySystem(beanSystemRechargeInfo);
  124. // 初始化累加器
  125. int permanentGoldSum = 0;
  126. int freeGoldSum = 0;
  127. BigDecimal moneySum = new BigDecimal("0.0");
  128. // 遍历充值记录并累加金币
  129. for (BeanSystemRechargeInfo info : beanSystemRechargeInfos) {
  130. // 累加永久金币
  131. if (info.getPermanentBean() != null) {
  132. permanentGoldSum += info.getPermanentBean();
  133. }
  134. // 累加免费金币
  135. if (info.getFreeBean() != null) {
  136. freeGoldSum += info.getFreeBean();
  137. }
  138. }
  139. moneySum = new BigDecimal(permanentGoldSum).divide(new BigDecimal("50"), 2, RoundingMode.HALF_UP);
  140. // 将累加结果设置到Gold对象
  141. gold.setPermanentBean(permanentGoldSum);
  142. gold.setFreeBean(freeGoldSum);
  143. gold.setMoney(moneySum.doubleValue());
  144. gold.setBeanNum(permanentGoldSum+freeGoldSum);
  145. return gold;
  146. }
  147. @Override
  148. public List<String> systemMarket() {
  149. List<String> list = beanRechargeMapper2.systemMarket();
  150. // 使用 Java 8 的 Stream API 过滤 null 和空字符串
  151. List<String> filteredList = list.stream()
  152. .filter(Objects::nonNull) // 过滤掉 null 值
  153. .filter(str -> !str.trim().isEmpty()) // 过滤掉空字符串和仅包含空白字符的字符串
  154. .collect(Collectors.toList());
  155. return filteredList;
  156. }
  157. //线上充值明细
  158. @Override
  159. public PageInfo<BeanOnlineRechargeInfo> selectByOnline(Integer pageNum, Integer pageSize, BeanOnlineRechargeInfo beanOnlineRechargeInfo){
  160. PageHelper.startPage(pageNum, pageSize);
  161. List<BeanOnlineRechargeInfo> beanOnlineRechargeInfos = beanRechargeMapper3.selectByOnline(beanOnlineRechargeInfo);
  162. return new PageInfo<>(beanOnlineRechargeInfos);
  163. }
  164. //统计线上金豆记录
  165. @Override
  166. public GoldBean statsOnlineBean(BeanOnlineRechargeInfo beanOnlineRechargeInfo) {
  167. GoldBean gold = new GoldBean();
  168. List<BeanOnlineRechargeInfo> beanOnlineRechargeInfos = beanRechargeMapper3.selectByOnline(beanOnlineRechargeInfo);
  169. // 初始化累加器
  170. int countSum = 0;
  171. BigDecimal moneySum = new BigDecimal("0.0");
  172. // 遍历充值记录并累加金币
  173. for (BeanOnlineRechargeInfo info : beanOnlineRechargeInfos) {
  174. // 累加数量
  175. if (info.getNum() != null) {
  176. countSum += info.getNum();
  177. }
  178. // 累加金额
  179. if (info.getMoney() != null) {
  180. moneySum = moneySum.add(new BigDecimal(info.getMoney().toString()));
  181. }
  182. }
  183. // 将累加结果设置到Gold对象
  184. gold.setBeanNum(countSum);
  185. gold.setMoney(moneySum.doubleValue());
  186. return gold;
  187. }
  188. @Override
  189. public List<String> onlineMarket() {
  190. List<String> list = beanRechargeMapper3.onlineMarket();
  191. // 使用 Java 8 的 Stream API 过滤 null 和空字符串
  192. List<String> filteredList = list.stream()
  193. .filter(Objects::nonNull) // 过滤掉 null 值
  194. .filter(str -> !str.trim().isEmpty()) // 过滤掉空字符串和仅包含空白字符的字符串
  195. .collect(Collectors.toList());
  196. return filteredList;
  197. }
  198. }