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.

233 lines
8.9 KiB

4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
  1. package com.example.demo.serviceImpl.bean;
  2. import com.example.demo.Util.BaseDES2;
  3. import com.example.demo.domain.vo.bean.*;
  4. import com.example.demo.domain.vo.coin.*;
  5. import com.example.demo.mapper.bean.BeanConsumeMapper;
  6. import com.example.demo.mapper.bean.BeanUserMapper;
  7. import com.example.demo.mapper.coin.AdminMapper;
  8. import com.example.demo.mapper.coin.BeanRechargeMapper1;
  9. import com.example.demo.mapper.coin.RoleMapper;
  10. import com.example.demo.mapper.coin.UserMapper;
  11. import com.example.demo.mapper.live.LiveMapper;
  12. import com.example.demo.service.bean.BeanConsumeService;
  13. import com.github.pagehelper.PageHelper;
  14. import com.github.pagehelper.PageInfo;
  15. import org.springframework.beans.factory.annotation.Autowired;
  16. import org.springframework.beans.factory.annotation.Value;
  17. import org.springframework.http.HttpEntity;
  18. import org.springframework.http.HttpHeaders;
  19. import org.springframework.http.MediaType;
  20. import org.springframework.http.ResponseEntity;
  21. import org.springframework.stereotype.Service;
  22. import org.springframework.transaction.annotation.Transactional;
  23. import org.springframework.web.client.RestClientException;
  24. import org.springframework.web.client.RestTemplate;
  25. import org.springframework.web.util.UriComponentsBuilder;
  26. import java.util.HashMap;
  27. import java.util.List;
  28. import java.util.Map;
  29. import java.util.UUID;
  30. /**
  31. * @program: gold-java
  32. * @ClassName BeanConsumeServiceImpl
  33. * @description:
  34. * @author: Ethan
  35. * @create: 202507-30 11:53
  36. * @Version 1.0
  37. **/
  38. @Service
  39. public class BeanConsumeServiceImpl implements BeanConsumeService {
  40. @Autowired
  41. private BeanConsumeMapper beanConsumeMapper;
  42. @Autowired
  43. private LiveMapper liveMapper;
  44. @Autowired
  45. private BeanRechargeMapper1 beanRechargeMapper1;
  46. @Autowired
  47. private RoleMapper roleMapper;
  48. @Autowired
  49. private RestTemplate restTemplate;
  50. // 构建接口URL及参数
  51. @Value("${bean.consume.url}")
  52. String apiUrl;
  53. @Autowired
  54. private BeanUserMapper beanUserMapper;
  55. //获取消费用户分部
  56. @Override
  57. public List<String> getDept() {
  58. List<String> deptList = beanConsumeMapper.getDept();
  59. return deptList;
  60. }
  61. //获取直播消费客户分部
  62. @Override
  63. public List<String> getLiveDept() {
  64. List<String> liveDeptList = liveMapper.getDept();
  65. return liveDeptList;
  66. }
  67. //减少金豆
  68. @Transactional
  69. @Override
  70. public Result reduce(BeanConsume consume) {
  71. // 验证精网号是否有效
  72. if (consume.getJwcode() == null || consume.getJwcode().isEmpty()) {
  73. return Result.error("精网号不能为空");
  74. }
  75. // 验证免费豆和永久豆是否为非负数
  76. if (consume.getFreeBean() < 0 || consume.getPermanentBean() < 0) {
  77. return Result.error("免费豆和永久豆不能为负数");
  78. }
  79. // 验证免费豆和永久豆是否为非负数
  80. if (consume.getFreeBean() > 999999 || consume.getPermanentBean() > 999999) {
  81. return Result.error("免费豆和永久豆不能超过999999");
  82. }
  83. // 验证免费豆和永久豆是否均为0
  84. if (consume.getFreeBean() == 0 && consume.getPermanentBean() == 0) {
  85. return Result.error("免费豆和永久豆不能同时为0");
  86. }
  87. //获取用户当前余额
  88. BeanUserCard user= beanUserMapper.userCard(consume.getJwcode());
  89. if (user.getFreeBean() < consume.getFreeBean()) {
  90. return Result.error("用户免费金豆余额不足");
  91. }
  92. if (user.getPermanentBean() < consume.getPermanentBean()) {
  93. return Result.error("用户永久金豆余额不足");
  94. }
  95. // 验证备注是否为空
  96. if (consume.getRemark() == null || consume.getRemark().isEmpty()) {
  97. return Result.error("备注不能为空");
  98. }
  99. String jwcode = consume.getJwcode();
  100. //String jwcode = "1bf7194c2dc63c45cd834d35e38faa71";
  101. try {
  102. BaseDES2 d = new BaseDES2();
  103. jwcode = d.encrypt(jwcode);
  104. } catch (Exception e) {
  105. return Result.error("加密失败");
  106. }
  107. String content = consume.getRemark(); // 备注作为content参数
  108. // 2. 创建请求参数对象(使用Map或自定义实体类)
  109. Map<String, String> params = new HashMap<>();
  110. params.put("jwcode", jwcode);
  111. int total = consume.getPermanentBean() + consume.getFreeBean();
  112. params.put("total", String.valueOf(total));
  113. params.put("buy", consume.getPermanentBean().toString());
  114. params.put("free", consume.getFreeBean().toString());
  115. params.put("content", content);
  116. // 3. 构建请求头,指定Content-Type为JSON
  117. HttpHeaders headers = new HttpHeaders();
  118. headers.setContentType(MediaType.APPLICATION_JSON); // 关键:设置为JSON格式
  119. // 4. 构建请求实体(参数+头信息)
  120. HttpEntity<Map<String, String>> requestEntity = new HttpEntity<>(params, headers);
  121. try {
  122. // 5. 发送POST请求
  123. ResponseEntity<String> response = restTemplate.postForEntity(
  124. apiUrl,
  125. requestEntity,
  126. String.class
  127. );
  128. System.out.println("请求参数:" + params);
  129. System.out.println("响应状态码:" + response.getStatusCodeValue());
  130. System.out.println("响应内容:" + response.getBody());
  131. if (!response.getStatusCode().is2xxSuccessful()) {
  132. return Result.error("远程接口接口调用失败,状态码:" + response.getStatusCodeValue() + ",响应:" + response.getBody());
  133. }
  134. } catch (RestClientException e) {
  135. e.printStackTrace();
  136. return Result.error("请求发送失败:" + e.getMessage());
  137. }
  138. return Result.success();
  139. }
  140. //筛选查询直播消费
  141. @Override
  142. public Object selectLiveBy(Integer pageNum, Integer pageSize, BeanConsumeLive beanConsumeLive) {
  143. PageHelper.startPage(pageNum, pageSize);
  144. String channel=roleMapper.getChannel(beanConsumeLive.getRoleId());
  145. if (channel==null){
  146. return "角色频道有误";
  147. }
  148. if (!channel.equals("全部")){
  149. beanConsumeLive.setLiveChannel(channel);
  150. }
  151. List<BeanConsumeLive> beanConsumeLives = liveMapper.selectLiveBy(beanConsumeLive);
  152. //int total = liveMapper.selectLiveCount(beanConsumeLive);
  153. return new PageInfo<>(beanConsumeLives);
  154. }
  155. //筛选查询铁粉消费
  156. @Override
  157. public Object selectFanBy(Integer pageNum, Integer pageSize, BeanConsumeFan beanConsumeFan) {
  158. PageHelper.startPage(pageNum, pageSize);
  159. String channel=roleMapper.getChannel(beanConsumeFan.getRoleId());
  160. if (channel==null){
  161. return "角色频道有误";
  162. }
  163. if (!channel.equals("全部")){
  164. beanConsumeFan.setChannel(channel);
  165. }
  166. List<BeanConsumeFan> beanConsumeFans = beanConsumeMapper.selectFanBy(beanConsumeFan);
  167. return new PageInfo<>(beanConsumeFans);
  168. }
  169. //筛选查询文章消费
  170. @Override
  171. public Object selectArticleBy(Integer pageNum, Integer pageSize, BeanConsumeArticle beanConsumeArticle) {
  172. PageHelper.startPage(pageNum, pageSize);
  173. List<BeanConsumeArticle> beanConsumeArticles = beanConsumeMapper.selectArticleBy(beanConsumeArticle);
  174. return new PageInfo<>(beanConsumeArticles);
  175. }
  176. //筛选查询小黄车消费
  177. @Override
  178. public Object selectCartBy(Integer pageNum, Integer pageSize, BeanConsumeCart beanConsumeCart) {
  179. PageHelper.startPage(pageNum, pageSize);
  180. List<BeanConsumeCartVo> beanConsumeCarts = beanRechargeMapper1.selectCartBy(beanConsumeCart);
  181. return new PageInfo<>(beanConsumeCarts);
  182. }
  183. @Override
  184. public BeanConsumeGold sumConsumeGold(Page page) {
  185. BeanConsumeGold gold = new BeanConsumeGold();
  186. Integer payType = page.getPayType();
  187. if (payType==1) {
  188. //直播消费合计
  189. gold = liveMapper.selectSumLiveBy(page.getBeanConsumeLive());
  190. }else if (payType==7) {
  191. //充值消费合计
  192. gold = beanConsumeMapper.selectSumFansBy(page.getBeanConsumeFan());
  193. }else if (payType==8) {
  194. //文章消费合计
  195. gold = beanConsumeMapper.selectSumArticleBy(page.getBeanConsumeArticle());
  196. }
  197. return gold;
  198. }
  199. //查询直播礼物
  200. @Override
  201. public List<String> getLiveGift() {
  202. return liveMapper.getLiveGift();
  203. }
  204. //查询直播全部频道
  205. @Override
  206. public List<String> getLiveChannel() {
  207. return liveMapper.getLiveChannel();
  208. }
  209. }