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.
|
|
package com.example.demo.serviceImpl.bean;
import com.example.demo.Util.BaseDES2; import com.example.demo.domain.vo.bean.*; import com.example.demo.domain.vo.coin.*; import com.example.demo.mapper.bean.BeanConsumeMapper; import com.example.demo.mapper.bean.BeanUserMapper; import com.example.demo.mapper.coin.UserMapper; import com.example.demo.mapper.live.LiveMapper; import com.example.demo.service.bean.BeanConsumeService; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.http.HttpEntity; import org.springframework.http.HttpHeaders; import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.client.RestClientException; import org.springframework.web.client.RestTemplate; import org.springframework.web.util.UriComponentsBuilder;
import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.UUID;
/** * @program: gold-java * @ClassName BeanConsumeServiceImpl * @description: * @author: Ethan * @create: 2025−07-30 11:53 * @Version 1.0 **/ @Service public class BeanConsumeServiceImpl implements BeanConsumeService { @Autowired private BeanConsumeMapper beanConsumeMapper; @Autowired private LiveMapper liveMapper; @Autowired private UserMapper userMapper; @Autowired private RestTemplate restTemplate; // 构建接口URL及参数
@Value("${bean.consume.url}") String apiUrl; @Autowired private BeanUserMapper beanUserMapper;
//获取消费用户分部
@Override public List<String> getDept() { List<String> deptList = beanConsumeMapper.getDept(); return deptList; } //获取直播消费客户分部
@Override public List<String> getLiveDept() { List<String> liveDeptList = liveMapper.getDept(); return liveDeptList; } //减少金豆
@Transactional @Override public Result reduce(BeanConsume consume) {
// 验证精网号是否有效
if (consume.getJwcode() == null || consume.getJwcode().isEmpty()) { return Result.error("精网号不能为空"); }
// 验证免费豆和永久豆是否为非负数
if (consume.getFreeBean() < 0 || consume.getPermanentBean() < 0) { return Result.error("免费豆和永久豆不能为负数"); } // 验证免费豆和永久豆是否为非负数
if (consume.getFreeBean() > 999999 || consume.getPermanentBean() > 999999) { return Result.error("免费豆和永久豆不能超过999999"); } // 验证免费豆和永久豆是否均为0
if (consume.getFreeBean() == 0 && consume.getPermanentBean() == 0) { return Result.error("免费豆和永久豆不能同时为0"); } //获取用户当前余额
BeanUserCard user= beanUserMapper.userCard(consume.getJwcode()); if (user.getFreeBean() < consume.getFreeBean()) { return Result.error("用户免费金豆余额不足"); } if (user.getPermanentBean() < consume.getPermanentBean()) { return Result.error("用户永久金豆余额不足"); } // 验证备注是否为空
if (consume.getRemark() == null || consume.getRemark().isEmpty()) { return Result.error("备注不能为空"); }
String jwcode = consume.getJwcode(); //String jwcode = "1bf7194c2dc63c45cd834d35e38faa71";
try { BaseDES2 d = new BaseDES2(); jwcode = d.encrypt(jwcode); } catch (Exception e) { return Result.error("加密失败"); } String content = consume.getRemark(); // 备注作为content参数
// 2. 创建请求参数对象(使用Map或自定义实体类)
Map<String, String> params = new HashMap<>(); params.put("jwcode", jwcode); int total = consume.getPermanentBean() + consume.getFreeBean(); params.put("total", String.valueOf(total)); params.put("buy", consume.getPermanentBean().toString()); params.put("free", consume.getFreeBean().toString()); params.put("content", content);
// 3. 构建请求头,指定Content-Type为JSON
HttpHeaders headers = new HttpHeaders(); headers.setContentType(MediaType.APPLICATION_JSON); // 关键:设置为JSON格式
// 4. 构建请求实体(参数+头信息)
HttpEntity<Map<String, String>> requestEntity = new HttpEntity<>(params, headers);
try { // 5. 发送POST请求
ResponseEntity<String> response = restTemplate.postForEntity( apiUrl, requestEntity, String.class );
System.out.println("请求参数:" + params); System.out.println("响应状态码:" + response.getStatusCodeValue()); System.out.println("响应内容:" + response.getBody());
if (!response.getStatusCode().is2xxSuccessful()) { return Result.error("远程接口接口调用失败,状态码:" + response.getStatusCodeValue() + ",响应:" + response.getBody()); } } catch (RestClientException e) { e.printStackTrace(); return Result.error("请求发送失败:" + e.getMessage()); }
return Result.success();
} //筛选查询直播消费
@Override public Object selectLiveBy(Integer pageNum, Integer pageSize, BeanConsumeLive beanConsumeLive) { PageHelper.startPage(pageNum, pageSize); List<BeanConsumeLive> beanConsumeLives = liveMapper.selectLiveBy(beanConsumeLive); return new PageInfo<>(beanConsumeLives); } //筛选查询铁粉消费
@Override public Object selectFanBy(Integer pageNum, Integer pageSize, BeanConsumeFan beanConsumeFan) { PageHelper.startPage(pageNum, pageSize); List<BeanConsumeFan> beanConsumeFans = beanConsumeMapper.selectFanBy(beanConsumeFan); return new PageInfo<>(beanConsumeFans); } //筛选查询文章消费
@Override public Object selectArticleBy(Integer pageNum, Integer pageSize, BeanConsumeArticle beanConsumeArticle) { PageHelper.startPage(pageNum, pageSize); List<BeanConsumeArticle> beanConsumeArticles = beanConsumeMapper.selectArticleBy(beanConsumeArticle); return new PageInfo<>(beanConsumeArticles); }
@Override public BeanConsumeGold sumConsumeGold(Page page) { BeanConsumeGold gold = new BeanConsumeGold(); Integer payType = page.getPayType(); if (payType==1) { //直播消费合计
gold = liveMapper.selectSumLiveBy(page.getBeanConsumeLive()); }else if (payType==7) { //充值消费合计
gold = beanConsumeMapper.selectSumFansBy(page.getBeanConsumeFan()); }else if (payType==8) { //文章消费合计
gold = beanConsumeMapper.selectSumArticleBy(page.getBeanConsumeArticle()); }
return gold; } //查询直播礼物
@Override public List<String> getLiveGift() {
return liveMapper.getLiveGift(); } //查询直播全部频道
@Override public List<String> getLiveChannel() { return liveMapper.getLiveChannel(); }
}
|