|
@@ -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请求
|