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.

155 lines
5.5 KiB

2 weeks ago
2 weeks ago
2 weeks ago
2 weeks ago
2 weeks ago
2 weeks ago
2 weeks ago
2 weeks ago
  1. package com.example.demo.serviceImpl.bean;
  2. import com.example.demo.Util.BaseDES2;
  3. import com.example.demo.domain.vo.bean.BeanAuditInfo;
  4. import com.example.demo.domain.vo.bean.BeanRechargeInfo;
  5. import com.example.demo.domain.vo.bean.GoldBean;
  6. import com.example.demo.domain.vo.coin.Result;
  7. import com.example.demo.mapper.coin.BeanAuditMapper;
  8. import com.example.demo.service.bean.BeanAuditService;
  9. import com.github.pagehelper.PageHelper;
  10. import com.github.pagehelper.PageInfo;
  11. import lombok.RequiredArgsConstructor;
  12. import org.springframework.beans.factory.annotation.Autowired;
  13. import org.springframework.beans.factory.annotation.Value;
  14. import org.springframework.context.annotation.Bean;
  15. import org.springframework.http.HttpEntity;
  16. import org.springframework.http.HttpHeaders;
  17. import org.springframework.http.MediaType;
  18. import org.springframework.http.ResponseEntity;
  19. import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter;
  20. import org.springframework.stereotype.Service;
  21. import org.springframework.transaction.annotation.Transactional;
  22. import org.springframework.web.client.RestClientException;
  23. import org.springframework.web.client.RestTemplate;
  24. import org.springframework.web.util.UriComponentsBuilder;
  25. import java.util.HashMap;
  26. import java.util.List;
  27. import java.util.Map;
  28. import java.util.UUID;
  29. /**
  30. * @program: gold-java
  31. * @ClassName BeanAuditServiceImpl
  32. * @description:
  33. * @author: Double
  34. * @create: 202508-01 11:37
  35. * @Version 1.0
  36. **/
  37. @Service
  38. @RequiredArgsConstructor
  39. public class BeanAuditServiceImpl implements BeanAuditService {
  40. @Autowired
  41. private BeanAuditMapper beanAuditMapper;
  42. @Autowired
  43. private RestTemplate restTemplate;
  44. // 2. 构建接口URL及参数
  45. @Value("${bean.recharge.url}")
  46. String apiUrl;
  47. //查找审核信息
  48. @Override
  49. public PageInfo<BeanAuditInfo> selectBy(Integer pageNum, Integer pageSize, BeanAuditInfo beanAuditInfo) {
  50. PageHelper.startPage(pageNum, pageSize);
  51. List<BeanAuditInfo> beanAuditInfos = beanAuditMapper.selectBy(beanAuditInfo);
  52. return new PageInfo<>(beanAuditInfos);
  53. }
  54. @Transactional
  55. @Override
  56. public Result updateStatus1(BeanAuditInfo info) {
  57. BeanAuditInfo beanAuditInfo = beanAuditMapper.selectById(info.getId());
  58. String jwcode = beanAuditInfo.getJwcode().toString();
  59. // String jwcode = "2e35cadd48a15cc4cd834d35e38faa71";
  60. try {
  61. BaseDES2 d = new BaseDES2();
  62. jwcode = d.encrypt(jwcode);
  63. } catch (Exception e) {
  64. return Result.error("加密失败");
  65. }
  66. String content = beanAuditInfo.getRemark(); // 备注作为content参数
  67. String orderNo = UUID.randomUUID().toString().replace("-", ""); // 生成唯一订单号(去除横线)
  68. // 1. 创建请求参数对象(使用Map或自定义实体类)
  69. Map<String, String> params = new HashMap<>();
  70. params.put("jwcode", jwcode);
  71. params.put("gold_buy", beanAuditInfo.getPermanentBean().toString());
  72. params.put("gold_free", beanAuditInfo.getFreeBean().toString());
  73. params.put("content", content);
  74. params.put("order_no", orderNo);
  75. // 2. 构建请求头,指定Content-Type为JSON
  76. HttpHeaders headers = new HttpHeaders();
  77. headers.setContentType(MediaType.APPLICATION_JSON); // 关键:设置为JSON格式
  78. // 3. 构建请求实体(参数+头信息)
  79. HttpEntity<Map<String, String>> requestEntity = new HttpEntity<>(params, headers);
  80. try {
  81. // 4. 发送POST请求
  82. ResponseEntity<String> response = restTemplate.postForEntity(
  83. apiUrl,
  84. requestEntity,
  85. String.class
  86. );
  87. System.out.println("请求参数:" + params);
  88. System.out.println("响应状态码:" + response.getStatusCodeValue());
  89. System.out.println("响应内容:" + response.getBody());
  90. if (!response.getStatusCode().is2xxSuccessful()) {
  91. return Result.error("远程接口接口调用失败,状态码:" + response.getStatusCodeValue() + ",响应:" + response.getBody());
  92. }
  93. } catch (RestClientException e) {
  94. e.printStackTrace();
  95. return Result.error("请求发送失败:" + e.getMessage());
  96. }
  97. beanAuditMapper.updateStatus1(info);
  98. return Result.success();
  99. }
  100. @Override
  101. public void updateStatus2(BeanAuditInfo beanAuditInfo) {
  102. beanAuditMapper.updateStatus2(beanAuditInfo);
  103. }
  104. @Override
  105. public GoldBean statsBean(BeanAuditInfo beanAuditInfo) {
  106. GoldBean gold = new GoldBean();
  107. List<BeanAuditInfo> beanAuditInfos = beanAuditMapper.selectBy(beanAuditInfo);
  108. // 初始化累加器
  109. int permanentGoldSum = 0;
  110. int freeGoldSum = 0;
  111. int num = 0;
  112. // 遍历充值记录并累加金币
  113. for (BeanAuditInfo info : beanAuditInfos) {
  114. // 累加永久金币
  115. if (info.getPermanentBean() != null) {
  116. permanentGoldSum += info.getPermanentBean();
  117. }
  118. // 累加免费金币
  119. if (info.getFreeBean() != null) {
  120. freeGoldSum += info.getFreeBean();
  121. }
  122. num++;
  123. }
  124. // 将累加结果设置到Gold对象
  125. gold.setPermanentBean(permanentGoldSum);
  126. gold.setFreeBean(freeGoldSum);
  127. gold.setNum(num);
  128. gold.setBeanNum(permanentGoldSum + freeGoldSum);
  129. return gold;
  130. }
  131. }