Althars123 4 年之前
父節點
當前提交
5091bb2a1f

+ 49 - 20
zzjs-admin/src/main/java/com/miaxis/app/controller/film/FilmController.java

@@ -1,6 +1,6 @@
 package com.miaxis.app.controller.film;
 package com.miaxis.app.controller.film;
 
 
-import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.alibaba.fastjson.JSONObject;
 import com.fasterxml.jackson.databind.ObjectMapper;
 import com.fasterxml.jackson.databind.ObjectMapper;
 import com.fasterxml.jackson.databind.node.ObjectNode;
 import com.fasterxml.jackson.databind.node.ObjectNode;
@@ -9,39 +9,30 @@ import com.miaxis.common.constant.Constants;
 import com.miaxis.common.core.controller.BaseController;
 import com.miaxis.common.core.controller.BaseController;
 import com.miaxis.common.core.domain.Response;
 import com.miaxis.common.core.domain.Response;
 import com.miaxis.common.core.domain.entity.UserInfo;
 import com.miaxis.common.core.domain.entity.UserInfo;
-import com.miaxis.common.core.page.ResponsePageInfo;
 import com.miaxis.common.exception.CustomException;
 import com.miaxis.common.exception.CustomException;
-import com.miaxis.common.sms.MD5Utils;
 import com.miaxis.common.utils.SecurityUtils;
 import com.miaxis.common.utils.SecurityUtils;
-import com.miaxis.common.utils.StringUtils;
 import com.miaxis.common.utils.uuid.CommonUtils;
 import com.miaxis.common.utils.uuid.CommonUtils;
-import com.miaxis.customer.dto.AppletCustomerInfoDto;
-import com.miaxis.customer.service.ICustomerInfoService;
-import com.miaxis.customer.vo.ExhibitionCustomerInfoVo;
 import com.miaxis.feign.dto.FilmDTO;
 import com.miaxis.feign.dto.FilmDTO;
 import com.miaxis.film.domain.FilmOrder;
 import com.miaxis.film.domain.FilmOrder;
 import com.miaxis.film.dto.FilmOrderCreateDTO;
 import com.miaxis.film.dto.FilmOrderCreateDTO;
 import com.miaxis.film.service.IFilmOrderService;
 import com.miaxis.film.service.IFilmOrderService;
-import io.swagger.annotations.*;
+import com.miaxis.system.service.ISysConfigService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
 import lombok.Data;
 import lombok.Data;
 import lombok.RequiredArgsConstructor;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang.RandomStringUtils;
 import org.apache.commons.lang.RandomStringUtils;
 import org.apache.http.HttpResponse;
 import org.apache.http.HttpResponse;
-import org.apache.http.HttpStatus;
 import org.apache.http.client.HttpClient;
 import org.apache.http.client.HttpClient;
-import org.apache.http.client.entity.UrlEncodedFormEntity;
 import org.apache.http.client.methods.HttpGet;
 import org.apache.http.client.methods.HttpGet;
 import org.apache.http.client.methods.HttpPost;
 import org.apache.http.client.methods.HttpPost;
 import org.apache.http.entity.StringEntity;
 import org.apache.http.entity.StringEntity;
-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.apache.http.util.EntityUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.core.io.ClassPathResource;
 import org.springframework.core.io.ClassPathResource;
-import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.bind.annotation.*;
 
 
 import java.io.ByteArrayOutputStream;
 import java.io.ByteArrayOutputStream;
@@ -49,7 +40,10 @@ import java.io.File;
 import java.io.IOException;
 import java.io.IOException;
 import java.security.PrivateKey;
 import java.security.PrivateKey;
 import java.security.Signature;
 import java.security.Signature;
-import java.util.*;
+import java.util.Arrays;
+import java.util.Base64;
+import java.util.List;
+import java.util.stream.Collectors;
 
 
 import static com.miaxis.common.constant.Constants.FILM_BLACK_LIST;
 import static com.miaxis.common.constant.Constants.FILM_BLACK_LIST;
 import static com.miaxis.common.utils.OrderCodeFactory.getOrderCode;
 import static com.miaxis.common.utils.OrderCodeFactory.getOrderCode;
@@ -76,6 +70,9 @@ public class FilmController extends BaseController {
     @Autowired
     @Autowired
     private IFilmOrderService filmOrderService;
     private IFilmOrderService filmOrderService;
 
 
+    @Autowired
+    private ISysConfigService configService;
+
     @Value("${app.appid}")
     @Value("${app.appid}")
     private String appid;
     private String appid;
     @Value("${film.appKey}")
     @Value("${film.appKey}")
@@ -100,14 +97,16 @@ public class FilmController extends BaseController {
         ByteArrayOutputStream bos = new ByteArrayOutputStream();
         ByteArrayOutputStream bos = new ByteArrayOutputStream();
         ObjectMapper objectMapper = new ObjectMapper();
         ObjectMapper objectMapper = new ObjectMapper();
 
 
-        //生成订单id
         UserInfo student = SecurityUtils.getLoginUser().getStudent();
         UserInfo student = SecurityUtils.getLoginUser().getStudent();
+
+
+        //生成预订单
         Long id = student.getId();
         Long id = student.getId();
         String orderCode = getOrderCode(id);
         String orderCode = getOrderCode(id);
-        log.info(appid);
-        log.info(notifyUrl);
+        //通过影院api 获取单票价格
+        Integer price = getPrice(filmOrderCreateDTO.getCinemaId(),filmOrderCreateDTO.getShowId());
+        int number = filmOrderCreateDTO.getSeat().split(",").length;
 
 
-        //生成预订单
         ObjectNode rootNode = objectMapper.createObjectNode();
         ObjectNode rootNode = objectMapper.createObjectNode();
         rootNode.put("mchid",wxpayConfig.getMerchantId())
         rootNode.put("mchid",wxpayConfig.getMerchantId())
                 .put("appid", appid)
                 .put("appid", appid)
@@ -115,7 +114,7 @@ public class FilmController extends BaseController {
                 .put("notify_url", notifyUrl)
                 .put("notify_url", notifyUrl)
                 .put("out_trade_no", orderCode);
                 .put("out_trade_no", orderCode);
         rootNode.putObject("amount")
         rootNode.putObject("amount")
-                .put("total", filmOrderCreateDTO.getTotal());
+                .put("total", price*number);
         rootNode.putObject("payer")
         rootNode.putObject("payer")
                 .put("openid", student.getOpenid());
                 .put("openid", student.getOpenid());
         objectMapper.writeValue(bos, rootNode);
         objectMapper.writeValue(bos, rootNode);
@@ -170,6 +169,36 @@ public class FilmController extends BaseController {
 
 
     }
     }
 
 
+    private Integer getPrice(String cinemaId, String showId) {
+        FilmDTO filmDTO = new FilmDTO();
+        filmDTO.setUrl("get-schedule-list");
+        StringBuffer paramData =  new StringBuffer();
+        paramData.append("cinemaId="+cinemaId);
+        String result = filmOrderService.excuteFilmApi(filmDTO);
+        JSONObject jsonObject = JSONObject.parseObject(result);
+        JSONObject  data = jsonObject.getJSONObject("data");
+        JSONObject  discountRule = data.getJSONObject("discountRule");
+        JSONArray list = jsonObject.getJSONArray("list");
+        List<CinemaData> cinemaData = list.toJavaList(CinemaData.class);
+        List<CinemaData> listdata = cinemaData.stream().filter(a -> showId.equals(a.getShowId())).collect(Collectors.toList());
+        Integer netPrice = listdata.get(0).getNetPrice();
+        Double upDiscountRate = discountRule.getDouble("upDiscountRate");
+        String film_discount = configService.selectConfigByKey("film_discount");
+        Double aDouble = Double.valueOf(film_discount);
+        Double v = netPrice * upDiscountRate * aDouble;
+        return v.intValue();
+
+
+    }
+
+
+    @Data
+    class CinemaData{
+        Integer netPrice;
+        String showId;
+
+    }
+
 
 
     /**
     /**
      * 以form表单形式提交数据,发送post请求
      * 以form表单形式提交数据,发送post请求

+ 6 - 13
zzjs-admin/src/main/java/com/miaxis/app/controller/film/NotifyController.java

@@ -133,13 +133,8 @@ public class NotifyController {
         }
         }
         paramData.append("acceptChangeSeat="+filmOrder.getAcceptChangeSeat());
         paramData.append("acceptChangeSeat="+filmOrder.getAcceptChangeSeat());
         filmDTO.setParamData(paramData.toString());
         filmDTO.setParamData(paramData.toString());
-        try {
-
-             s = filmOrderService.excuteFilmApi(filmDTO);
-            log.info("电影下单返回值:"+s);
-        } catch (IOException e) {
-            e.printStackTrace();
-        }
+         s = filmOrderService.excuteFilmApi(filmDTO);
+        log.info("电影下单返回值:"+s);
         return  Response.success(s);
         return  Response.success(s);
     }
     }
 
 
@@ -194,12 +189,10 @@ public class NotifyController {
                     }
                     }
                     paramData.append("acceptChangeSeat="+filmOrder.getAcceptChangeSeat());
                     paramData.append("acceptChangeSeat="+filmOrder.getAcceptChangeSeat());
                     filmDTO.setParamData(paramData.toString());
                     filmDTO.setParamData(paramData.toString());
-                    try {
-                        String s = filmOrderService.excuteFilmApi(filmDTO);
-                        log.info("电影下单返回值:"+s);
-                    } catch (IOException e) {
-                        e.printStackTrace();
-                    }
+
+                    String s = filmOrderService.excuteFilmApi(filmDTO);
+                    log.info("电影下单返回值:"+s);
+
                 }
                 }
             });
             });
         }
         }

+ 2 - 1
zzjs-service/src/main/java/com/miaxis/film/dto/FilmOrderCreateDTO.java

@@ -15,7 +15,8 @@ public class FilmOrderCreateDTO {
     @ApiModelProperty(value = "排期的showId,由影院接口得来")
     @ApiModelProperty(value = "排期的showId,由影院接口得来")
     private String showId;
     private String showId;
 
 
-
+    @ApiModelProperty(value = "影院id")
+    private String cinemaId;
 
 
     @ApiModelProperty(value = "用户所选的座位,例:1排1座,1排2座 以英文的逗号 “ , “隔开。 如果座位是情侣座,请传入 : 1排1座(情侣座),1排2座(情侣座)")
     @ApiModelProperty(value = "用户所选的座位,例:1排1座,1排2座 以英文的逗号 “ , “隔开。 如果座位是情侣座,请传入 : 1排1座(情侣座),1排2座(情侣座)")
     private String seat;
     private String seat;

+ 1 - 1
zzjs-service/src/main/java/com/miaxis/film/service/IFilmOrderService.java

@@ -24,5 +24,5 @@ public interface IFilmOrderService extends IService<FilmOrder>{
 
 
     FilmOrder getByOutTradeNo(String outTradeNo);
     FilmOrder getByOutTradeNo(String outTradeNo);
 
 
-    String excuteFilmApi(FilmDTO filmDTO) throws IOException;
+    String excuteFilmApi(FilmDTO filmDTO) ;
 }
 }

+ 9 - 3
zzjs-service/src/main/java/com/miaxis/film/service/impl/FilmOrderServiceImpl.java

@@ -28,6 +28,8 @@ import com.miaxis.film.mapper.FilmOrderMapper;
 import com.miaxis.film.domain.FilmOrder;
 import com.miaxis.film.domain.FilmOrder;
 import com.miaxis.film.service.IFilmOrderService;
 import com.miaxis.film.service.IFilmOrderService;
 
 
+import javax.annotation.Resource;
+
 /**
 /**
  * 电影订单Service业务层处理
  * 电影订单Service业务层处理
  *
  *
@@ -36,7 +38,7 @@ import com.miaxis.film.service.IFilmOrderService;
  */
  */
 @Service
 @Service
 public class FilmOrderServiceImpl extends ServiceImpl<FilmOrderMapper, FilmOrder> implements IFilmOrderService {
 public class FilmOrderServiceImpl extends ServiceImpl<FilmOrderMapper, FilmOrder> implements IFilmOrderService {
-    @Autowired
+    @Resource
     private FilmOrderMapper filmOrderMapper;
     private FilmOrderMapper filmOrderMapper;
 
 
 
 
@@ -69,7 +71,7 @@ public class FilmOrderServiceImpl extends ServiceImpl<FilmOrderMapper, FilmOrder
     }
     }
 
 
     @Override
     @Override
-    public String  excuteFilmApi(FilmDTO filmDTO) throws IOException {
+    public String  excuteFilmApi(FilmDTO filmDTO)  {
         String resultData ="";
         String resultData ="";
         // 创建一个http客户端
         // 创建一个http客户端
         CloseableHttpClient httpClient = HttpClientBuilder.create().build();
         CloseableHttpClient httpClient = HttpClientBuilder.create().build();
@@ -127,7 +129,11 @@ public class FilmOrderServiceImpl extends ServiceImpl<FilmOrderMapper, FilmOrder
             e.printStackTrace();
             e.printStackTrace();
             throw new RuntimeException("接口连接失败!");
             throw new RuntimeException("接口连接失败!");
         } finally {
         } finally {
-            httpClient.close();
+            try {
+                httpClient.close();
+            } catch (IOException e) {
+                throw new RuntimeException("CloseableHttpClient 关闭失败!");
+            }
         }
         }
 
 
     }
     }