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.

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