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.

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