123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125 |
- package com.miaxis.film.service.impl;
- import java.io.IOException;
- import java.util.ArrayList;
- import java.util.List;
- import java.util.Map;
- import java.util.TreeMap;
- import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
- import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
- import com.baomidou.mybatisplus.core.toolkit.Wrappers;
- import com.miaxis.common.sms.MD5Utils;
- import com.miaxis.common.utils.DateUtils;
- import com.miaxis.common.utils.StringUtils;
- import com.miaxis.feign.dto.FilmDTO;
- import org.apache.http.HttpResponse;
- import org.apache.http.HttpStatus;
- import org.apache.http.client.entity.UrlEncodedFormEntity;
- import org.apache.http.client.methods.HttpPost;
- import org.apache.http.impl.client.CloseableHttpClient;
- import org.apache.http.impl.client.HttpClientBuilder;
- import org.apache.http.message.BasicNameValuePair;
- import org.apache.http.util.EntityUtils;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.beans.factory.annotation.Value;
- import org.springframework.stereotype.Service;
- import com.miaxis.film.mapper.FilmOrderMapper;
- import com.miaxis.film.domain.FilmOrder;
- import com.miaxis.film.service.IFilmOrderService;
- /**
- * 电影订单Service业务层处理
- *
- * @author miaxis
- * @date 2021-05-07
- */
- @Service
- public class FilmOrderServiceImpl extends ServiceImpl<FilmOrderMapper, FilmOrder> implements IFilmOrderService {
- @Autowired
- private FilmOrderMapper filmOrderMapper;
- @Value("${app.appid}")
- private String appid;
- @Value("${film.appKey}")
- private String appKey ;
- @Value("${film.appSecret}")
- private String appSecret ;
- /**
- * 查询电影订单列表
- *
- * @param filmOrder 电影订单
- * @return 电影订单
- */
- @Override
- public List<FilmOrder> selectFilmOrderList(FilmOrder filmOrder){
- return filmOrderMapper.selectFilmOrderList(filmOrder);
- }
- @Override
- public FilmOrder getByOutTradeNo(String outTradeNo) {
- return filmOrderMapper.getByOutTradeNo(outTradeNo);
- }
- @Override
- public String excuteFilmApi(FilmDTO filmDTO) throws IOException {
- String resultData ="";
- // 创建一个http客户端
- CloseableHttpClient httpClient = HttpClientBuilder.create().build();
- try {
- HttpPost post = new HttpPost("http://movieapi2-test.taototo.cn/"+filmDTO.getUrl());
- post.setHeader("Content-Type","application/x-www-form-urlencoded");
- Map<String, Object> sortMap = new TreeMap<String, Object>();
- String time = String.valueOf(System.currentTimeMillis()/1000);
- sortMap.put("appKey",appKey);
- sortMap.put("time",time);
- //1 将数据拆分成 treemap存储
- if (!StringUtils.isEmpty(filmDTO.getParamData())){
- String[] keyValueStr = filmDTO.getParamData().split("&");
- for(String keyValue : keyValueStr){
- String[] arr = keyValue.split("=");
- sortMap.put(arr[0],arr[1]) ;
- }
- }
- //2 读取treemap。按固定格式拼接,最后再拼接上 secret
- StringBuilder builder = new StringBuilder();
- for (Map.Entry<String, Object> s : sortMap.entrySet()) {
- String k = s.getKey();
- Object v = s.getValue();
- builder.append(k).append("=").append(v).append("&");
- }
- builder.append("appSecret="+appSecret);
- //3 将最后拼接出来的sign传 md5加密
- String sign = MD5Utils.MD5Encode(builder.toString());
- List<BasicNameValuePair> pairList = new ArrayList<BasicNameValuePair>();
- // 迭代Map-->取出key,value放到BasicNameValuePair对象中-->添加到list中
- for (Map.Entry entry : sortMap.entrySet()) {
- pairList.add(new BasicNameValuePair(String.valueOf(entry.getKey()) ,String.valueOf(entry.getValue())));
- }
- pairList.add(new BasicNameValuePair("sign",sign));
- UrlEncodedFormEntity uefe = new UrlEncodedFormEntity(pairList, "utf-8");
- post.setEntity(uefe);
- // 发送post请求
- HttpResponse response = httpClient.execute(post);
- // 状态码为:200
- if(response.getStatusLine().getStatusCode() == HttpStatus.SC_OK){
- // 返回数据:
- resultData = EntityUtils.toString(response.getEntity(),"UTF-8");
- return resultData;
- }else{
- throw new RuntimeException("接口连接失败!");
- }
- } catch (Exception e) {
- e.printStackTrace();
- throw new RuntimeException("接口连接失败!");
- } finally {
- httpClient.close();
- }
- }
- }
|