Althars123 il y a 3 ans
Parent
commit
08a555848f

+ 22 - 17
zzjs-admin/src/main/java/com/miaxis/app/controller/film/FilmController.java

@@ -15,27 +15,25 @@ import com.miaxis.common.utils.SecurityUtils;
 import com.miaxis.common.utils.uuid.CommonUtils;
 import com.miaxis.feign.dto.FilmDTO;
 import com.miaxis.film.domain.FilmOrder;
-import com.miaxis.film.dto.*;
+import com.miaxis.film.dto.CinemaData;
+import com.miaxis.film.dto.FilmOrderCreateDTO;
+import com.miaxis.film.dto.FilmOrderJsonData;
+import com.miaxis.film.dto.FilmOrderListDTO;
 import com.miaxis.film.service.IFilmOrderService;
-import com.miaxis.question.domain.QuestionInfo;
 import com.miaxis.system.service.ISysConfigService;
 import com.miaxis.system.service.ISysDictDataService;
 import io.swagger.annotations.*;
-import lombok.Data;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang.RandomStringUtils;
 import org.apache.http.HttpResponse;
 import org.apache.http.client.HttpClient;
-import org.apache.http.client.methods.HttpGet;
 import org.apache.http.client.methods.HttpPost;
 import org.apache.http.entity.StringEntity;
 import org.apache.http.util.EntityUtils;
-import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.core.io.ClassPathResource;
-import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.web.bind.annotation.*;
 
 import java.io.ByteArrayOutputStream;
@@ -117,7 +115,6 @@ public class FilmController extends BaseController {
         HttpPost httpPost = new HttpPost(wxpayConfig.getV3url());
         httpPost.addHeader("Accept", "application/json");
         httpPost.addHeader("Content-type","application/json; charset=utf-8");
-
         ByteArrayOutputStream bos = new ByteArrayOutputStream();
         ObjectMapper objectMapper = new ObjectMapper();
         UserInfo student = SecurityUtils.getLoginUser().getStudent();
@@ -135,7 +132,7 @@ public class FilmController extends BaseController {
         filmOrderCreateDTO.setThirdOrderId(orderCode);
         filmOrderJsonData.setFilmOrderCreateDTO(filmOrderCreateDTO);
         //通过影院api 获取单票价格
-        Integer price = getPrice(filmOrderCreateDTO.getCinemaId(),filmOrderCreateDTO.getShowId(),filmOrderJsonData);
+        Integer price = getPrice(filmOrderCreateDTO.getCinemaId(),filmOrderCreateDTO.getShowId(),filmOrderCreateDTO.getTicketType(),filmOrderJsonData);
         int number = filmOrderCreateDTO.getSeat().split(",").length;
         order.setOrderDataJson(JSONObject.toJSONString(filmOrderJsonData));
         order.setTotal(price*number);
@@ -197,7 +194,7 @@ public class FilmController extends BaseController {
 
 
 
-    private Integer getPrice(String cinemaId, String showId, FilmOrderJsonData filmOrderJsonData) {
+    private Integer getPrice(String cinemaId, String showId, int ticketType, FilmOrderJsonData filmOrderJsonData) {
 
         FilmDTO filmDTO = new FilmDTO();
         filmDTO.setUrl("movieapi/movie-info/get-schedule-list");
@@ -215,14 +212,22 @@ public class FilmController extends BaseController {
         CinemaData realCinemaData = listdata.get(0);
         filmOrderJsonData.setCinemaData(realCinemaData);
         Integer netPrice = realCinemaData.getNetPrice();
-        Double upDiscountRate = discountRule.getDouble("upDiscountRate");
-        Double downDiscountRate = discountRule.getDouble("downDiscountRate");
-        String film_discount = configService.selectConfigByKey("film_discount");
-        Double  chosenDiscount = netPrice >3900 ? upDiscountRate:downDiscountRate;
-        Double aDouble = Double.valueOf(film_discount);
-        Double v = netPrice * chosenDiscount * aDouble;
-
-        return v.intValue();
+        Integer realValue =0;
+        if (ticketType == 1){
+            Double upDiscountRate = discountRule.getDouble("upDiscountRate");
+            Double downDiscountRate = discountRule.getDouble("downDiscountRate");
+            String film_discount = configService.selectConfigByKey("film_discount");
+            Double  chosenDiscount = netPrice >3900 ? upDiscountRate:downDiscountRate;
+            Double aDouble = Double.valueOf(film_discount);
+            Double dDouble = netPrice * chosenDiscount * aDouble;
+            realValue = dDouble.intValue();
+        }else if (ticketType == 2){
+            realValue = netPrice;
+        }
+
+
+
+        return realValue;
 
 
     }

+ 26 - 12
zzjs-admin/src/main/java/com/miaxis/app/controller/film/NotifyController.java

@@ -1,6 +1,7 @@
 package com.miaxis.app.controller.film;
 
 
+import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
 import com.miaxis.common.config.WxpayConfig;
 import com.miaxis.common.constant.Constants;
@@ -8,6 +9,7 @@ import com.miaxis.common.core.domain.Response;
 import com.miaxis.common.exception.CustomException;
 import com.miaxis.common.utils.AesUtil;
 import com.miaxis.feign.dto.FilmDTO;
+import com.miaxis.feign.dto.FilmXdResult;
 import com.miaxis.film.domain.FilmOrder;
 import com.miaxis.film.domain.RefundRecord;
 import com.miaxis.film.dto.*;
@@ -288,31 +290,43 @@ public class NotifyController {
                     FilmDTO filmDTO = new FilmDTO();
                     filmDTO.setUrl("api/order/create");
                     StringBuffer paramData =  new StringBuffer();
-                    FilmOrderCreateDTO filmOrder = filmOrderJsonData.getFilmOrderCreateDTO();
-                    paramData.append("showId="+filmOrder.getShowId()+"&");
-                    paramData.append("seat="+filmOrder.getSeat()+"&");
-                    if (filmOrder.getReservedPhone() != null){
-                        paramData.append("reservedPhone="+filmOrder.getReservedPhone()+"&");
+                    FilmOrderCreateDTO filmOrderCreateDTO = filmOrderJsonData.getFilmOrderCreateDTO();
+                    paramData.append("showId="+filmOrderCreateDTO.getShowId()+"&");
+                    paramData.append("seat="+filmOrderCreateDTO.getSeat()+"&");
+                    if (filmOrderCreateDTO.getReservedPhone() != null){
+                        paramData.append("reservedPhone="+filmOrderCreateDTO.getReservedPhone()+"&");
                     }
-                    paramData.append("thirdOrderId="+filmOrder.getThirdOrderId()+"&");
+                    paramData.append("thirdOrderId="+filmOrderCreateDTO.getThirdOrderId()+"&");
                     paramData.append("notifyUrl="+notifyUrl+"&");
-                    if (filmOrder.getSeatId() != null){
-                        paramData.append("seatId="+filmOrder.getSeatId()+"&");
+                    if (filmOrderCreateDTO.getSeatId() != null){
+                        paramData.append("seatId="+filmOrderCreateDTO.getSeatId()+"&");
                     }
-                    if (filmOrder.getSeatNo() != null){
-                        paramData.append("seatNo="+filmOrder.getSeatNo()+"&");
+                    if (filmOrderCreateDTO.getSeatNo() != null){
+                        paramData.append("seatNo="+filmOrderCreateDTO.getSeatNo()+"&");
                     }
-                    paramData.append("acceptChangeSeat="+filmOrder.getAcceptChangeSeat());
+                    paramData.append("acceptChangeSeat="+filmOrderCreateDTO.getAcceptChangeSeat());
                     filmDTO.setParamData(paramData.toString());
 
                     String s = filmOrderService.excuteFilmApi(filmDTO);
                     log.info("电影下单返回值:"+s);
+                    FilmXdResult filmXdResult = JSONObject.parseObject(s, FilmXdResult.class);
+                    //如果返回值不是200 ,则调用退款流程
+                    if (filmXdResult.getCode()!=200){
+                        String refundCode = getOrderCode(null);
+                        filmOrder.setOutRefundNo(refundCode);
+                        try {
+                            refundRecordService.refund(filmOrder,refundCode);
+                        } catch (Exception e) {
+                            e.printStackTrace();
+                        }
+                    }
+                    filmOrderService.updateById(filmOrder);
 
                 }
             });
         }
 
-        filmOrderService.updateById(filmOrder);
+
     }
 
     private String getSourString(FilmWxpayDTO filmWxpayDTO) throws GeneralSecurityException, IOException {

+ 15 - 0
zzjs-service/src/main/java/com/miaxis/feign/dto/FilmXdResult.java

@@ -0,0 +1,15 @@
+package com.miaxis.feign.dto;
+
+
+import lombok.Data;
+
+/**
+ * 电影下单返回类型
+ */
+
+@Data
+public class FilmXdResult {
+    Boolean success;
+    String message;
+    int code;
+}

+ 3 - 0
zzjs-service/src/main/java/com/miaxis/film/dto/FilmOrderCreateDTO.java

@@ -9,6 +9,9 @@ import lombok.Data;
 public class FilmOrderCreateDTO {
     private static final long serialVersionUID = 1L;
 
+    @ApiModelProperty(value = "购票类型: 1-竞价购票 2-秒出票" ,required=true,allowableValues ="1,2")
+    private int ticketType;
+
     @ApiModelProperty(value = "总金额, 单位分")
     private int total;