FilmOrderServiceImpl.java 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125
  1. package com.miaxis.film.service.impl;
  2. import java.io.IOException;
  3. import java.util.ArrayList;
  4. import java.util.List;
  5. import java.util.Map;
  6. import java.util.TreeMap;
  7. import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
  8. import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  9. import com.baomidou.mybatisplus.core.toolkit.Wrappers;
  10. import com.miaxis.common.sms.MD5Utils;
  11. import com.miaxis.common.utils.DateUtils;
  12. import com.miaxis.common.utils.StringUtils;
  13. import com.miaxis.feign.dto.FilmDTO;
  14. import org.apache.http.HttpResponse;
  15. import org.apache.http.HttpStatus;
  16. import org.apache.http.client.entity.UrlEncodedFormEntity;
  17. import org.apache.http.client.methods.HttpPost;
  18. import org.apache.http.impl.client.CloseableHttpClient;
  19. import org.apache.http.impl.client.HttpClientBuilder;
  20. import org.apache.http.message.BasicNameValuePair;
  21. import org.apache.http.util.EntityUtils;
  22. import org.springframework.beans.factory.annotation.Autowired;
  23. import org.springframework.beans.factory.annotation.Value;
  24. import org.springframework.stereotype.Service;
  25. import com.miaxis.film.mapper.FilmOrderMapper;
  26. import com.miaxis.film.domain.FilmOrder;
  27. import com.miaxis.film.service.IFilmOrderService;
  28. /**
  29. * 电影订单Service业务层处理
  30. *
  31. * @author miaxis
  32. * @date 2021-05-07
  33. */
  34. @Service
  35. public class FilmOrderServiceImpl extends ServiceImpl<FilmOrderMapper, FilmOrder> implements IFilmOrderService {
  36. @Autowired
  37. private FilmOrderMapper filmOrderMapper;
  38. @Value("${app.appid}")
  39. private String appid;
  40. @Value("${film.appKey}")
  41. private String appKey ;
  42. @Value("${film.appSecret}")
  43. private String appSecret ;
  44. /**
  45. * 查询电影订单列表
  46. *
  47. * @param filmOrder 电影订单
  48. * @return 电影订单
  49. */
  50. @Override
  51. public List<FilmOrder> selectFilmOrderList(FilmOrder filmOrder){
  52. return filmOrderMapper.selectFilmOrderList(filmOrder);
  53. }
  54. @Override
  55. public FilmOrder getByOutTradeNo(String outTradeNo) {
  56. return filmOrderMapper.getByOutTradeNo(outTradeNo);
  57. }
  58. @Override
  59. public String excuteFilmApi(FilmDTO filmDTO) throws IOException {
  60. String resultData ="";
  61. // 创建一个http客户端
  62. CloseableHttpClient httpClient = HttpClientBuilder.create().build();
  63. try {
  64. HttpPost post = new HttpPost("http://movieapi2-test.taototo.cn/"+filmDTO.getUrl());
  65. post.setHeader("Content-Type","application/x-www-form-urlencoded");
  66. Map<String, Object> sortMap = new TreeMap<String, Object>();
  67. String time = String.valueOf(System.currentTimeMillis()/1000);
  68. sortMap.put("appKey",appKey);
  69. sortMap.put("time",time);
  70. //1 将数据拆分成 treemap存储
  71. if (!StringUtils.isEmpty(filmDTO.getParamData())){
  72. String[] keyValueStr = filmDTO.getParamData().split("&");
  73. for(String keyValue : keyValueStr){
  74. String[] arr = keyValue.split("=");
  75. sortMap.put(arr[0],arr[1]) ;
  76. }
  77. }
  78. //2 读取treemap。按固定格式拼接,最后再拼接上 secret
  79. StringBuilder builder = new StringBuilder();
  80. for (Map.Entry<String, Object> s : sortMap.entrySet()) {
  81. String k = s.getKey();
  82. Object v = s.getValue();
  83. builder.append(k).append("=").append(v).append("&");
  84. }
  85. builder.append("appSecret="+appSecret);
  86. //3 将最后拼接出来的sign传 md5加密
  87. String sign = MD5Utils.MD5Encode(builder.toString());
  88. List<BasicNameValuePair> pairList = new ArrayList<BasicNameValuePair>();
  89. // 迭代Map-->取出key,value放到BasicNameValuePair对象中-->添加到list中
  90. for (Map.Entry entry : sortMap.entrySet()) {
  91. pairList.add(new BasicNameValuePair(String.valueOf(entry.getKey()) ,String.valueOf(entry.getValue())));
  92. }
  93. pairList.add(new BasicNameValuePair("sign",sign));
  94. UrlEncodedFormEntity uefe = new UrlEncodedFormEntity(pairList, "utf-8");
  95. post.setEntity(uefe);
  96. // 发送post请求
  97. HttpResponse response = httpClient.execute(post);
  98. // 状态码为:200
  99. if(response.getStatusLine().getStatusCode() == HttpStatus.SC_OK){
  100. // 返回数据:
  101. resultData = EntityUtils.toString(response.getEntity(),"UTF-8");
  102. return resultData;
  103. }else{
  104. throw new RuntimeException("接口连接失败!");
  105. }
  106. } catch (Exception e) {
  107. e.printStackTrace();
  108. throw new RuntimeException("接口连接失败!");
  109. } finally {
  110. httpClient.close();
  111. }
  112. }
  113. }