Althars123 3 gadi atpakaļ
vecāks
revīzija
f5f86ee532
28 mainītis faili ar 565 papildinājumiem un 460 dzēšanām
  1. 12 183
      zzjs-admin/src/main/java/com/miaxis/app/controller/film/FilmController.java
  2. 113 0
      zzjs-admin/src/main/java/com/miaxis/app/controller/film/FilmNotifyController.java
  3. 186 0
      zzjs-admin/src/main/java/com/miaxis/app/controller/wx/WxController.java
  4. 63 124
      zzjs-admin/src/main/java/com/miaxis/app/controller/wx/WxNotifyController.java
  5. 4 4
      zzjs-admin/src/main/resources/application-dev.yml
  6. 4 4
      zzjs-admin/src/main/resources/application-prod.yml
  7. 8 8
      zzjs-admin/src/test/java/com/miaxis/test/NormalTest.java
  8. 0 26
      zzjs-service/src/main/java/com/miaxis/film/mapper/FilmOrderMapper.java
  9. 0 33
      zzjs-service/src/main/java/com/miaxis/film/service/IFilmOrderService.java
  10. 3 4
      zzjs-service/src/main/java/com/miaxis/wx/controller/RefundRecordController.java
  11. 1 6
      zzjs-service/src/main/java/com/miaxis/wx/domain/RefundRecord.java
  12. 3 3
      zzjs-service/src/main/java/com/miaxis/wx/domain/WxOrder.java
  13. 1 1
      zzjs-service/src/main/java/com/miaxis/wx/dto/CinemaData.java
  14. 1 3
      zzjs-service/src/main/java/com/miaxis/wx/dto/FilmWxpayDTO.java
  15. 1 1
      zzjs-service/src/main/java/com/miaxis/wx/dto/FilmWxpayRefundDTO.java
  16. 1 1
      zzjs-service/src/main/java/com/miaxis/wx/dto/WxNotifyReturnDTO.java
  17. 2 4
      zzjs-service/src/main/java/com/miaxis/wx/dto/WxOrderCreateDTO.java
  18. 4 5
      zzjs-service/src/main/java/com/miaxis/wx/dto/WxOrderJsonData.java
  19. 2 2
      zzjs-service/src/main/java/com/miaxis/wx/dto/WxOrderListDTO.java
  20. 2 2
      zzjs-service/src/main/java/com/miaxis/wx/dto/WxOrderNotifyDTO.java
  21. 2 2
      zzjs-service/src/main/java/com/miaxis/wx/mapper/RefundRecordMapper.java
  22. 26 0
      zzjs-service/src/main/java/com/miaxis/wx/mapper/WxOrderMapper.java
  23. 5 5
      zzjs-service/src/main/java/com/miaxis/wx/service/IRefundRecordService.java
  24. 34 0
      zzjs-service/src/main/java/com/miaxis/wx/service/IWxOrderService.java
  25. 11 12
      zzjs-service/src/main/java/com/miaxis/wx/service/impl/RefundRecordServiceImpl.java
  26. 67 18
      zzjs-service/src/main/java/com/miaxis/wx/service/impl/WxOrderServiceImpl.java
  27. 7 7
      zzjs-service/src/main/resources/mapper/film/FilmOrderMapper.xml
  28. 2 2
      zzjs-service/src/main/resources/mapper/film/RefundRecordMapper.xml

+ 12 - 183
zzjs-admin/src/main/java/com/miaxis/app/controller/film/FilmController.java

@@ -1,53 +1,31 @@
 package com.miaxis.app.controller.film;
 
-import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.fasterxml.jackson.databind.node.ObjectNode;
 import com.miaxis.common.config.WxpayConfig;
 import com.miaxis.common.constant.Constants;
 import com.miaxis.common.core.controller.BaseController;
 import com.miaxis.common.core.domain.Response;
-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.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.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.system.service.ISysConfigService;
 import com.miaxis.system.service.ISysDictDataService;
-import io.swagger.annotations.*;
+import com.miaxis.wx.domain.WxOrder;
+import com.miaxis.wx.service.IWxOrderService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
 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.HttpPost;
-import org.apache.http.entity.StringEntity;
-import org.apache.http.util.EntityUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
-import org.springframework.core.io.ClassPathResource;
 import org.springframework.web.bind.annotation.*;
 
-import java.io.ByteArrayOutputStream;
-import java.io.File;
 import java.io.IOException;
-import java.security.PrivateKey;
-import java.security.Signature;
 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.utils.OrderCodeFactory.getOrderCode;
 
 /**
  * 【小程序-客户信息】Controller
@@ -57,7 +35,7 @@ import static com.miaxis.common.utils.OrderCodeFactory.getOrderCode;
  */
 @RestController
 @RequiredArgsConstructor
-@RequestMapping(Constants.STUDENT_PREFIX+"/film/wxpay")
+@RequestMapping(Constants.STUDENT_PREFIX+"/wx/wxpay")
 @Api(tags = {"【小程序-电影】"})
 @Slf4j
 public class FilmController extends BaseController {
@@ -69,7 +47,7 @@ public class FilmController extends BaseController {
     private WxpayConfig wxpayConfig;
 
     @Autowired
-    private IFilmOrderService filmOrderService;
+    private IWxOrderService wxOrderService;
 
     @Autowired
     private ISysConfigService configService;
@@ -79,10 +57,6 @@ public class FilmController extends BaseController {
 
     @Value("${app.appid}")
     private String appid;
-    @Value("${film.appKey}")
-    private  String appKey ;
-    @Value("${film.appSecret}")
-    private  String appSecret ;
     @Value("${wxpay.notifyUrl}")
     private  String notifyUrl ;
 
@@ -91,151 +65,6 @@ public class FilmController extends BaseController {
 
 
 
-    @GetMapping("/order/list")
-    @ApiOperation("查询订单列表")
-    @ApiImplicitParams({
-            @ApiImplicitParam(name = "pageNum",value = "当前页码" ,dataType = "int", paramType = "query", required = false),
-            @ApiImplicitParam(name = "pageSize",value = "每页数据量" , dataType = "int", paramType = "query", required = false),
-    })
-    public ResponsePageInfo<FilmOrder> list(@ModelAttribute FilmOrderListDTO filmOrderListDTO){
-
-        String openid = SecurityUtils.getLoginUser().getStudent().getOpenid();
-        startPage();
-        filmOrderListDTO.setOpenid(openid);
-        List<FilmOrder> list = filmOrderService.selectOrderList(filmOrderListDTO);
-        return toResponsePageInfo(list);
-    }
-
-    /**
-     * 微信支付获取预订单id
-     */
-    @PostMapping(value = "/prepareOrder")
-    @ApiOperation("微信支付获取预订单id")
-    public Response<JSONObject> getPrepareOrderId(@RequestBody FilmOrderCreateDTO filmOrderCreateDTO) throws Exception{
-        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();
-
-        //1 本地创建订单
-        FilmOrder order = new FilmOrder();
-        Long id = student.getId();
-        String orderCode = getOrderCode(id);
-        order.setOutTradeNo(orderCode);
-        order.setOpenid(student.getOpenid());
-        String goodsName = dictDataService.selectDictLabel("goods_type", filmOrderCreateDTO.getGoodsType());
-        order.setGoodsType(filmOrderCreateDTO.getGoodsType());
-        order.setGoodsPictureUrl(filmOrderCreateDTO.getGoodsPictureUrl());
-        FilmOrderJsonData filmOrderJsonData = new FilmOrderJsonData();
-        filmOrderCreateDTO.setThirdOrderId(orderCode);
-        filmOrderJsonData.setFilmOrderCreateDTO(filmOrderCreateDTO);
-        //通过影院api 获取单票价格
-        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);
-        filmOrderService.save(order);
-
-
-
-        // 2 调用微信接口生成预订单
-        ObjectNode rootNode = objectMapper.createObjectNode();
-        rootNode.put("mchid",wxpayConfig.getMerchantId())
-                .put("appid", appid)
-                .put("description", goodsName)
-                .put("notify_url", notifyUrl)
-                .put("out_trade_no", orderCode);
-        rootNode.putObject("amount")
-                .put("total", price*number);
-        rootNode.putObject("payer")
-                .put("openid", student.getOpenid());
-        objectMapper.writeValue(bos, rootNode);
-        httpPost.setEntity(new StringEntity(rootNode.toString(), "utf-8"));
-        HttpResponse response = httpClient.execute(httpPost);
-        String bodyAsString = EntityUtils.toString(response.getEntity());
-        System.out.println(bodyAsString);
-        if (JSONObject.parseObject(bodyAsString).get("prepay_id") == null){
-            throw new CustomException(JSONObject.parseObject(bodyAsString).get("message").toString());
-        }
-
-
-        //3 生成前端小程序调用调起微信支付所需参数
-        String  packageStr = "prepay_id="+JSONObject.parseObject(bodyAsString).get("prepay_id");
-        JSONObject jsonObject = new JSONObject();
-        jsonObject.put("package",packageStr);
-        String nonce_str = RandomStringUtils.randomAlphanumeric(32);
-        jsonObject.put("nonceStr",nonce_str);
-        long timestamp =  System.currentTimeMillis()/1000;
-        jsonObject.put("timeStamp",String.valueOf(timestamp));
-        jsonObject.put("signType","RSA");
-        StringBuffer sb = new StringBuffer();
-        sb.append(appid + "\n");
-        sb.append(timestamp + "\n");
-        sb.append(nonce_str + "\n");
-        sb.append(packageStr+ "\n");
-        System.out.println(sb);
-
-        File file = new ClassPathResource("wechatpay/apiclient_key.pem").getFile();
-        String realPath =file.getAbsolutePath();
-        PrivateKey privateKey = CommonUtils.getPrivateKey(realPath);
-        // 进行签名服务
-        Signature signature = Signature.getInstance("SHA256withRSA");
-        signature.initSign(privateKey);
-        signature.update(sb.toString().getBytes("UTF-8"));
-        byte[] signedData = signature.sign();
-        String base64Str =  Base64.getEncoder().encodeToString(signedData);
-        jsonObject.put("paySign",base64Str);
-        jsonObject.put("outTradeNo",orderCode);
-        return Response.success(jsonObject);
-
-    }
-
-
-
-    private Integer getPrice(String cinemaId, String showId, int ticketType, FilmOrderJsonData filmOrderJsonData) {
-
-        FilmDTO filmDTO = new FilmDTO();
-        filmDTO.setUrl("movieapi/movie-info/get-schedule-list");
-        StringBuffer paramData =  new StringBuffer();
-        paramData.append("cinemaId="+cinemaId);
-        filmDTO.setParamData(paramData.toString());
-        String result = filmOrderService.excuteFilmApi(filmDTO);
-        JSONObject jsonObject = JSONObject.parseObject(result);
-        JSONObject  data = jsonObject.getJSONObject("data");
-        JSONObject  discountRule = data.getJSONObject("discountRule");
-        JSONArray list = data.getJSONArray("list");
-        log.info(list.toJSONString());
-        List<CinemaData> cinemaData = list.toJavaList(CinemaData.class);
-        List<CinemaData> listdata = cinemaData.stream().filter(a -> showId.equals(a.getShowId())).collect(Collectors.toList());
-        CinemaData realCinemaData = listdata.get(0);
-        filmOrderJsonData.setCinemaData(realCinemaData);
-        Integer netPrice = realCinemaData.getNetPrice();
-        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;
-
-
-    }
-
-
-
-
-
 
     /**
      * 以form表单形式提交数据,发送post请求
@@ -253,7 +82,7 @@ public class FilmController extends BaseController {
             throw new CustomException("该api不允许用户直接访问");
         }
         // 用于接收返回的结果
-        String resultData = filmOrderService.excuteFilmApi(filmDTO);
+        String resultData = wxOrderService.excuteFilmApi(filmDTO);
         return Response.success(JSONObject.parseObject(resultData));
     }
 
@@ -264,15 +93,15 @@ public class FilmController extends BaseController {
      */
     @GetMapping(value = "/{outTradeNo}")
     @ApiOperation("获取电影订单详细信息")
-    public Response<FilmOrder> getInfo(
+    public Response<WxOrder> getInfo(
             @ApiParam(name = "outTradeNo", value = "电影订单参数", required = true)
             @PathVariable("outTradeNo") String outTradeNo
     ){
-        FilmOrder filmOrder = filmOrderService.getByOutTradeNo(outTradeNo);
-        if (!filmOrder.getOpenid().equals(SecurityUtils.getLoginUser().getStudent().getOpenid())){
+        WxOrder wxOrder = wxOrderService.getByOutTradeNo(outTradeNo);
+        if (!wxOrder.getOpenid().equals(SecurityUtils.getLoginUser().getStudent().getOpenid())){
             throw new CustomException("该用户无访问此订单权限");
         }
-        return Response.success(filmOrder);
+        return Response.success(wxOrder);
     }
 
 

+ 113 - 0
zzjs-admin/src/main/java/com/miaxis/app/controller/film/FilmNotifyController.java

@@ -0,0 +1,113 @@
+package com.miaxis.app.controller.film;
+
+
+import com.alibaba.fastjson.JSONObject;
+import com.miaxis.common.config.WxpayConfig;
+import com.miaxis.common.constant.Constants;
+import com.miaxis.wx.domain.WxOrder;
+import com.miaxis.wx.dto.WxOrderJsonData;
+import com.miaxis.wx.dto.WxOrderNotifyDTO;
+import com.miaxis.wx.service.IRefundRecordService;
+import com.miaxis.wx.service.IWxOrderService;
+import com.wechat.pay.contrib.apache.httpclient.auth.AutoUpdateCertificatesVerifier;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.Data;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import static com.miaxis.common.utils.OrderCodeFactory.getOrderCode;
+
+@RestController
+@RequiredArgsConstructor
+@RequestMapping(Constants.OPEN_PREFIX+"/wx/notify")
+@Api(tags = {"【小程序-电影回调】"})
+@Slf4j
+public class FilmNotifyController {
+
+
+    @Autowired
+    private WxpayConfig wxpayConfig;
+
+
+    @Autowired
+    private IWxOrderService wxOrderService;
+
+    @Autowired
+    private ThreadPoolTaskExecutor threadPoolTaskExecutor;
+
+    @Autowired
+    private  IRefundRecordService  refundRecordService;
+
+
+
+    /**
+     * 电影回调接口
+     */
+    @PostMapping(value = "/wxOrder")
+    @ApiOperation("电影订单回调")
+    public FilmNotifyReturnDTO wxOrderNotify(WxOrderNotifyDTO wxOrderNotifyDTO ,String sign, String appKey) {
+        WxOrder wxOrder = wxOrderService.getByOutTradeNo(wxOrderNotifyDTO.getThirdOrderId());
+       //todo 检查sign
+        String orderDataJson = wxOrder.getOrderDataJson();
+        WxOrderJsonData wxOrderJsonData = JSONObject.parseObject(orderDataJson, WxOrderJsonData.class);
+        WxOrderNotifyDTO dbWxOrderNotifyDTO= wxOrderJsonData.getWxOrderNotifyDTO();
+        if (dbWxOrderNotifyDTO == null){
+            dbWxOrderNotifyDTO = wxOrderNotifyDTO;
+        }else{
+            dbWxOrderNotifyDTO.setEventName(wxOrderNotifyDTO.getEventName());
+            if (wxOrderNotifyDTO.getOrderPrice()!= null)
+                dbWxOrderNotifyDTO.setOrderPrice(wxOrderNotifyDTO.getOrderPrice());
+            if (wxOrderNotifyDTO.getCloseCause()!= null)
+                dbWxOrderNotifyDTO.setCloseCause(wxOrderNotifyDTO.getCloseCause());
+            if (wxOrderNotifyDTO.getRealSeat()!= null)
+                dbWxOrderNotifyDTO.setRealSeat(wxOrderNotifyDTO.getRealSeat());
+            if (wxOrderNotifyDTO.getTicketCode()!= null)
+                dbWxOrderNotifyDTO.setTicketCode(wxOrderNotifyDTO.getTicketCode());
+            if (wxOrderNotifyDTO.getTicketImage()!= null)
+                dbWxOrderNotifyDTO.setTicketImage(wxOrderNotifyDTO.getTicketImage());
+        }
+        wxOrderJsonData.setWxOrderNotifyDTO(dbWxOrderNotifyDTO);
+        wxOrder.setOrderDataJson(JSONObject.toJSONString(wxOrderJsonData));
+        //UserInfo student = SecurityUtils.getLoginUser().getStudent();
+        //如果回调回来的订单关闭,则调用退款
+        if ("ORDER_CLOSE".equals(wxOrderNotifyDTO.getEventName())){
+            String refundCode = getOrderCode(null);
+            wxOrder.setOutRefundNo(refundCode);
+            threadPoolTaskExecutor.execute(new Runnable() {
+            @Override
+            public void run() {
+                    try {
+                        refundRecordService.refund(wxOrder,refundCode);
+                    } catch (Exception e) {
+                        log.info(e.getMessage());
+                    }
+                }
+            });
+
+        }
+
+        wxOrderService.updateById(wxOrder);
+
+        FilmNotifyReturnDTO filmNotifyReturnDTO = new FilmNotifyReturnDTO();
+        filmNotifyReturnDTO.setCode("200");
+        filmNotifyReturnDTO.setMessage("请求成功");
+        filmNotifyReturnDTO.setSuccess(true);
+        return filmNotifyReturnDTO;
+    }
+
+
+
+    @Data
+    public class FilmNotifyReturnDTO {
+        String code;
+        String message;
+        Boolean success;
+    }
+
+}

+ 186 - 0
zzjs-admin/src/main/java/com/miaxis/app/controller/wx/WxController.java

@@ -0,0 +1,186 @@
+package com.miaxis.app.controller.wx;
+
+import com.alibaba.fastjson.JSONObject;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.databind.node.ObjectNode;
+import com.miaxis.common.config.WxpayConfig;
+import com.miaxis.common.constant.Constants;
+import com.miaxis.common.core.controller.BaseController;
+import com.miaxis.common.core.domain.Response;
+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.utils.SecurityUtils;
+import com.miaxis.common.utils.uuid.CommonUtils;
+import com.miaxis.wx.domain.WxOrder;
+import com.miaxis.wx.dto.WxOrderCreateDTO;
+import com.miaxis.wx.dto.WxOrderJsonData;
+import com.miaxis.wx.dto.WxOrderListDTO;
+import com.miaxis.wx.service.IWxOrderService;
+import com.miaxis.system.service.ISysDictDataService;
+import io.swagger.annotations.*;
+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.HttpPost;
+import org.apache.http.entity.StringEntity;
+import org.apache.http.util.EntityUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.core.io.ClassPathResource;
+import org.springframework.web.bind.annotation.*;
+
+import java.io.ByteArrayOutputStream;
+import java.io.File;
+import java.security.PrivateKey;
+import java.security.Signature;
+import java.util.Base64;
+import java.util.List;
+
+import static com.miaxis.common.utils.OrderCodeFactory.getOrderCode;
+
+/**
+ * 【小程序-微信支付】Controller
+ *
+ * @author miaxis
+ * @date 2021-03-10
+ */
+@RestController
+@RequiredArgsConstructor
+@RequestMapping(Constants.STUDENT_PREFIX+"/wx/wxpay")
+@Api(tags = {"【小程序-微信支付】"})
+@Slf4j
+public class WxController extends BaseController {
+
+    @Autowired
+    private HttpClient httpClient;
+
+    @Autowired
+    private WxpayConfig wxpayConfig;
+
+    @Autowired
+    private IWxOrderService wxOrderService;
+
+
+    @Autowired
+    private ISysDictDataService dictDataService;
+
+    @Value("${app.appid}")
+    private String appid;
+    @Value("${wxpay.notifyUrl}")
+    private  String notifyUrl ;
+
+
+
+
+
+
+    @GetMapping("/order/list")
+    @ApiOperation("查询订单列表")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "pageNum",value = "当前页码" ,dataType = "int", paramType = "query", required = false),
+            @ApiImplicitParam(name = "pageSize",value = "每页数据量" , dataType = "int", paramType = "query", required = false),
+    })
+    public ResponsePageInfo<WxOrder> list(@ModelAttribute WxOrderListDTO wxOrderListDTO){
+
+        String openid = SecurityUtils.getLoginUser().getStudent().getOpenid();
+        startPage();
+        wxOrderListDTO.setOpenid(openid);
+        List<WxOrder> list = wxOrderService.selectOrderList(wxOrderListDTO);
+        return toResponsePageInfo(list);
+    }
+
+    /**
+     * 微信支付获取预订单id
+     */
+    @PostMapping(value = "/prepareOrder")
+    @ApiOperation("微信支付获取预订单id")
+    public Response<JSONObject> getPrepareOrderId(@RequestBody WxOrderCreateDTO wxOrderCreateDTO) throws Exception{
+        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();
+
+        //1 本地创建订单
+        WxOrder order = new WxOrder();
+        Long id = student.getId();
+        String orderCode = getOrderCode(id);
+        order.setOutTradeNo(orderCode);
+        order.setOpenid(student.getOpenid());
+        String goodsName = dictDataService.selectDictLabel("goods_type", wxOrderCreateDTO.getGoodsType());
+        order.setGoodsType(wxOrderCreateDTO.getGoodsType());
+        order.setGoodsPictureUrl(wxOrderCreateDTO.getGoodsPictureUrl());
+        WxOrderJsonData wxOrderJsonData = new WxOrderJsonData();
+        wxOrderCreateDTO.setThirdOrderId(orderCode);
+        wxOrderJsonData.setWxOrderCreateDTO(wxOrderCreateDTO);
+        //通过影院api 获取单票价格
+        Integer price = wxOrderService.getPrice(wxOrderCreateDTO.getCinemaId(),wxOrderCreateDTO.getShowId(),wxOrderCreateDTO.getTicketType(),wxOrderJsonData);
+        int number = wxOrderCreateDTO.getSeat().split(",").length;
+        order.setOrderDataJson(JSONObject.toJSONString(wxOrderJsonData));
+        order.setTotal(price*number);
+        wxOrderService.save(order);
+
+
+
+        // 2 调用微信接口生成预订单
+        ObjectNode rootNode = objectMapper.createObjectNode();
+        rootNode.put("mchid",wxpayConfig.getMerchantId())
+                .put("appid", appid)
+                .put("description", goodsName)
+                .put("notify_url", notifyUrl)
+                .put("out_trade_no", orderCode);
+        rootNode.putObject("amount")
+                .put("total", price*number);
+        rootNode.putObject("payer")
+                .put("openid", student.getOpenid());
+        objectMapper.writeValue(bos, rootNode);
+        httpPost.setEntity(new StringEntity(rootNode.toString(), "utf-8"));
+        HttpResponse response = httpClient.execute(httpPost);
+        String bodyAsString = EntityUtils.toString(response.getEntity());
+        System.out.println(bodyAsString);
+        if (JSONObject.parseObject(bodyAsString).get("prepay_id") == null){
+            throw new CustomException(JSONObject.parseObject(bodyAsString).get("message").toString());
+        }
+
+
+        //3 生成前端小程序调用调起微信支付所需参数
+        String  packageStr = "prepay_id="+JSONObject.parseObject(bodyAsString).get("prepay_id");
+        JSONObject jsonObject = new JSONObject();
+        jsonObject.put("package",packageStr);
+        String nonce_str = RandomStringUtils.randomAlphanumeric(32);
+        jsonObject.put("nonceStr",nonce_str);
+        long timestamp =  System.currentTimeMillis()/1000;
+        jsonObject.put("timeStamp",String.valueOf(timestamp));
+        jsonObject.put("signType","RSA");
+        StringBuffer sb = new StringBuffer();
+        sb.append(appid + "\n");
+        sb.append(timestamp + "\n");
+        sb.append(nonce_str + "\n");
+        sb.append(packageStr+ "\n");
+        System.out.println(sb);
+
+        File file = new ClassPathResource("wechatpay/apiclient_key.pem").getFile();
+        String realPath =file.getAbsolutePath();
+        PrivateKey privateKey = CommonUtils.getPrivateKey(realPath);
+        // 进行签名服务
+        Signature signature = Signature.getInstance("SHA256withRSA");
+        signature.initSign(privateKey);
+        signature.update(sb.toString().getBytes("UTF-8"));
+        byte[] signedData = signature.sign();
+        String base64Str =  Base64.getEncoder().encodeToString(signedData);
+        jsonObject.put("paySign",base64Str);
+        jsonObject.put("outTradeNo",orderCode);
+        return Response.success(jsonObject);
+
+    }
+
+
+
+
+
+
+}

+ 63 - 124
zzjs-admin/src/main/java/com/miaxis/app/controller/film/NotifyController.java → zzjs-admin/src/main/java/com/miaxis/app/controller/wx/WxNotifyController.java

@@ -1,22 +1,20 @@
-package com.miaxis.app.controller.film;
+package com.miaxis.app.controller.wx;
 
 
-import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
 import com.miaxis.common.config.WxpayConfig;
 import com.miaxis.common.constant.Constants;
 import com.miaxis.common.core.domain.Response;
 import com.miaxis.common.exception.CustomException;
 import com.miaxis.common.utils.AesUtil;
-import com.miaxis.common.utils.uuid.CommonUtils;
 import com.miaxis.feign.dto.FilmDTO;
 import com.miaxis.feign.dto.FilmMcpData;
 import com.miaxis.feign.dto.FilmXdResult;
-import com.miaxis.film.domain.FilmOrder;
-import com.miaxis.film.domain.RefundRecord;
-import com.miaxis.film.dto.*;
-import com.miaxis.film.service.IFilmOrderService;
-import com.miaxis.film.service.IRefundRecordService;
+import com.miaxis.wx.domain.RefundRecord;
+import com.miaxis.wx.domain.WxOrder;
+import com.miaxis.wx.dto.*;
+import com.miaxis.wx.service.IRefundRecordService;
+import com.miaxis.wx.service.IWxOrderService;
 import com.wechat.pay.contrib.apache.httpclient.auth.AutoUpdateCertificatesVerifier;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
@@ -26,7 +24,6 @@ import lombok.extern.slf4j.Slf4j;
 import org.joda.time.DateTime;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
-import org.springframework.core.io.ClassPathResource;
 import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.Base64Utils;
@@ -37,21 +34,19 @@ import org.springframework.web.bind.annotation.RestController;
 
 import javax.servlet.http.HttpServletRequest;
 import java.io.BufferedReader;
-import java.io.File;
 import java.io.IOException;
 import java.nio.charset.StandardCharsets;
 import java.security.*;
 import java.security.cert.X509Certificate;
-import java.util.Base64;
 
 import static com.miaxis.common.utils.OrderCodeFactory.getOrderCode;
 
 @RestController
 @RequiredArgsConstructor
-@RequestMapping(Constants.OPEN_PREFIX+"/film/notify")
-@Api(tags = {"【小程序-回调】"})
+@RequestMapping(Constants.OPEN_PREFIX+"/wx/notify")
+@Api(tags = {"【小程序-微信回调】"})
 @Slf4j
-public class NotifyController {
+public class WxNotifyController {
 
 
     @Autowired
@@ -59,7 +54,7 @@ public class NotifyController {
 
 
     @Autowired
-    private IFilmOrderService filmOrderService;
+    private IWxOrderService wxOrderService;
 
     @Autowired
     private ThreadPoolTaskExecutor threadPoolTaskExecutor;
@@ -82,7 +77,6 @@ public class NotifyController {
     public WxNotifyReturnDTO wxpayNotify(@RequestBody FilmWxpayDTO filmWxpayDTO, HttpServletRequest request) throws GeneralSecurityException, IOException {
 
         String bodyString = getBodyString(request);
-        System.out.println(bodyString);
         Boolean pass =  validate(request,bodyString);
         if (!pass){
             throw new CustomException("签名失败");
@@ -162,7 +156,7 @@ public class NotifyController {
      */
     @PostMapping(value = "/refund")
     @ApiOperation("微信退款回调")
-    public WxNotifyReturnDTO refundNotify(@RequestBody FilmWxpayDTO filmWxpayDTO, HttpServletRequest request) throws GeneralSecurityException, IOException {
+    public WxNotifyReturnDTO refundNotify(@RequestBody FilmWxpayDTO filmWxpayDTO) throws GeneralSecurityException, IOException {
         String resourceString = getSourString(filmWxpayDTO);
         log.info(resourceString);
         JSONObject jsonObject = JSONObject.parseObject(resourceString);
@@ -190,92 +184,37 @@ public class NotifyController {
 
     }
 
-    /**
-     * 电影回调接口
-     */
-    @PostMapping(value = "/filmOrder")
-    @ApiOperation("电影订单回调")
-    public FilmNotifyReturnDTO filmOrderNotify(FilmOrderNotifyDTO filmOrderNotifyDTO ,String sign, String appKey) {
-        FilmOrder filmOrder = filmOrderService.getByOutTradeNo(filmOrderNotifyDTO.getThirdOrderId());
-       //todo 检查sign
-        String orderDataJson = filmOrder.getOrderDataJson();
-        FilmOrderJsonData filmOrderJsonData = JSONObject.parseObject(orderDataJson, FilmOrderJsonData.class);
-        FilmOrderNotifyDTO dbFilmOrderNotifyDTO= filmOrderJsonData.getFilmOrderNotifyDTO();
-        if (dbFilmOrderNotifyDTO == null){
-            dbFilmOrderNotifyDTO = filmOrderNotifyDTO;
-        }else{
-            dbFilmOrderNotifyDTO.setEventName(filmOrderNotifyDTO.getEventName());
-            if (filmOrderNotifyDTO.getOrderPrice()!= null)
-                dbFilmOrderNotifyDTO.setOrderPrice(filmOrderNotifyDTO.getOrderPrice());
-            if (filmOrderNotifyDTO.getCloseCause()!= null)
-                dbFilmOrderNotifyDTO.setCloseCause(filmOrderNotifyDTO.getCloseCause());
-            if (filmOrderNotifyDTO.getRealSeat()!= null)
-                dbFilmOrderNotifyDTO.setRealSeat(filmOrderNotifyDTO.getRealSeat());
-            if (filmOrderNotifyDTO.getTicketCode()!= null)
-                dbFilmOrderNotifyDTO.setTicketCode(filmOrderNotifyDTO.getTicketCode());
-            if (filmOrderNotifyDTO.getTicketImage()!= null)
-                dbFilmOrderNotifyDTO.setTicketImage(filmOrderNotifyDTO.getTicketImage());
-        }
-        filmOrderJsonData.setFilmOrderNotifyDTO(dbFilmOrderNotifyDTO);
-        filmOrder.setOrderDataJson(JSONObject.toJSONString(filmOrderJsonData));
-        //UserInfo student = SecurityUtils.getLoginUser().getStudent();
-        //如果回调回来的订单关闭,则调用退款
-        if ("ORDER_CLOSE".equals(filmOrderNotifyDTO.getEventName())){
-            String refundCode = getOrderCode(null);
-            filmOrder.setOutRefundNo(refundCode);
-            threadPoolTaskExecutor.execute(new Runnable() {
-            @Override
-            public void run() {
-                    try {
-
-                        refundRecordService.refund(filmOrder,refundCode);
-                    } catch (Exception e) {
-                        log.info(e.getMessage());
-                    }
-                }
-            });
-
-        }
-
-        filmOrderService.updateById(filmOrder);
-
-        FilmNotifyReturnDTO filmNotifyReturnDTO = new FilmNotifyReturnDTO();
-        filmNotifyReturnDTO.setCode("200");
-        filmNotifyReturnDTO.setMessage("请求成功");
-        filmNotifyReturnDTO.setSuccess(true);
-        return filmNotifyReturnDTO;
-    }
 
 
     /**
      * 电影下单测试
      */
-    @PostMapping(value = "/filmOrder-test")
+    @PostMapping(value = "/wxOrder-test")
     @ApiOperation("电影订单下单测试")
-    public Response<String> filmOrderNotifytest(String outTradeNo) throws GeneralSecurityException, IOException {
+    public Response<String> wxOrderNotifytest(String outTradeNo) throws GeneralSecurityException, IOException {
         String s = "";
-        FilmOrder filmOrder1 = filmOrderService.getByOutTradeNo(outTradeNo);
+        WxOrder wxOrder1 = wxOrderService.getByOutTradeNo(outTradeNo);
         FilmDTO filmDTO = new FilmDTO();
         filmDTO.setUrl("api/order/create");
         StringBuffer paramData =  new StringBuffer();
-        FilmOrderJsonData filmOrderJsonData = JSONObject.parseObject(filmOrder1.getOrderDataJson(), FilmOrderJsonData.class);
-        FilmOrderCreateDTO filmOrder = filmOrderJsonData.getFilmOrderCreateDTO();
-        paramData.append("showId="+filmOrder.getShowId()+"&");
-        paramData.append("seat="+filmOrder.getSeat()+"&");
-        if (filmOrder.getReservedPhone() != null){
-            paramData.append("reservedPhone="+filmOrder.getReservedPhone()+"&");
+        WxOrderJsonData wxOrderJsonData = JSONObject.parseObject(wxOrder1.getOrderDataJson(), WxOrderJsonData.class);
+        WxOrderCreateDTO wxOrder = wxOrderJsonData.getWxOrderCreateDTO();
+        paramData.append("showId="+wxOrder.getShowId()+"&");
+        paramData.append("seat="+wxOrder.getSeat()+"&");
+        if (wxOrder.getReservedPhone() != null){
+            paramData.append("reservedPhone="+wxOrder.getReservedPhone()+"&");
         }
-        paramData.append("thirdOrderId="+filmOrder.getThirdOrderId()+"&");
+        paramData.append("thirdOrderId="+wxOrder.getThirdOrderId()+"&");
         paramData.append("notifyUrl="+notifyUrl+"&");
-        if (filmOrder.getSeatId() != null){
-            paramData.append("seatId="+filmOrder.getSeatId()+"&");
+        if (wxOrder.getSeatId() != null){
+            paramData.append("seatId="+wxOrder.getSeatId()+"&");
         }
-        if (filmOrder.getSeatNo() != null){
-            paramData.append("seatNo="+filmOrder.getSeatNo()+"&");
+        if (wxOrder.getSeatNo() != null){
+            paramData.append("seatNo="+wxOrder.getSeatNo()+"&");
         }
-        paramData.append("acceptChangeSeat="+filmOrder.getAcceptChangeSeat());
+        paramData.append("acceptChangeSeat="+wxOrder.getAcceptChangeSeat());
         filmDTO.setParamData(paramData.toString());
-         s = filmOrderService.excuteFilmApi(filmDTO);
+         s = wxOrderService.excuteFilmApi(filmDTO);
         log.info("电影下单返回值:"+s);
         return  Response.success(s);
     }
@@ -286,82 +225,82 @@ public class NotifyController {
     @Transactional
     public void writeNotifyDataToDb(JSONObject jsonObject) {
         String outTradeNo = jsonObject.getString("out_trade_no");
-        FilmOrder filmOrder = filmOrderService.getByOutTradeNo(outTradeNo);
-        if (filmOrder == null) {
+        WxOrder wxOrder = wxOrderService.getByOutTradeNo(outTradeNo);
+        if (wxOrder == null) {
             throw new CustomException("该订单不存在");
         }
-        filmOrder.setTransactionId(jsonObject.getString("transaction_id"));
+        wxOrder.setTransactionId(jsonObject.getString("transaction_id"));
         JSONObject amount = jsonObject.getJSONObject("amount");
-        filmOrder.setPayerTotal(amount.getInteger("payer_total"));
-        filmOrder.setTotal(amount.getInteger("total"));
-        filmOrder.setCurrency(amount.getString("currency"));
-        filmOrder.setPayerCurrency(amount.getString("payer_currency"));
-        filmOrder.setTradeState(jsonObject.getString("trade_state"));
-        filmOrder.setBankType(jsonObject.getString("bank_type"));
+        wxOrder.setPayerTotal(amount.getInteger("payer_total"));
+        wxOrder.setTotal(amount.getInteger("total"));
+        wxOrder.setCurrency(amount.getString("currency"));
+        wxOrder.setPayerCurrency(amount.getString("payer_currency"));
+        wxOrder.setTradeState(jsonObject.getString("trade_state"));
+        wxOrder.setBankType(jsonObject.getString("bank_type"));
         DateTime dateTime  = new DateTime(jsonObject.getString("success_time"));
-        filmOrder.setSuccessTime(dateTime.toDate());
-        filmOrder.setTradeStateDesc(jsonObject.getString("trade_state_desc"));
-        filmOrder.setTradeType(jsonObject.getString("trade_type"));
-        filmOrder.setAttach(jsonObject.getString("attach"));
+        wxOrder.setSuccessTime(dateTime.toDate());
+        wxOrder.setTradeStateDesc(jsonObject.getString("trade_state_desc"));
+        wxOrder.setTradeType(jsonObject.getString("trade_type"));
+        wxOrder.setAttach(jsonObject.getString("attach"));
         JSONObject sceneInfo = jsonObject.getJSONObject("scene_info");
         if (sceneInfo != null){
-            filmOrder.setDeviceId(sceneInfo.getString("device_id"));
+            wxOrder.setDeviceId(sceneInfo.getString("device_id"));
         }
         //如果订单还未下过电影票订单,则异步调用电影下单api
-        String  orderDataJson= filmOrder.getOrderDataJson();
-        FilmOrderJsonData filmOrderJsonData = JSONObject.parseObject(orderDataJson, FilmOrderJsonData.class);
-        if (filmOrderJsonData != null && filmOrderJsonData.getFilmOrderNotifyDTO() == null){
+        String  orderDataJson= wxOrder.getOrderDataJson();
+        WxOrderJsonData wxOrderJsonData = JSONObject.parseObject(orderDataJson, WxOrderJsonData.class);
+        if (wxOrderJsonData != null && wxOrderJsonData.getWxOrderNotifyDTO() == null){
             threadPoolTaskExecutor.execute(new Runnable() {
                 @Override
                 public void run() {
-                    FilmOrderCreateDTO filmOrderCreateDTO = filmOrderJsonData.getFilmOrderCreateDTO();
+                    WxOrderCreateDTO wxOrderCreateDTO = wxOrderJsonData.getWxOrderCreateDTO();
                     FilmDTO filmDTO = new FilmDTO();
-                    if (filmOrderCreateDTO.getTicketType() ==1){
+                    if (wxOrderCreateDTO.getTicketType() ==1){
                         filmDTO.setUrl("api/order/create");
-                    }else if (filmOrderCreateDTO.getTicketType() ==2){
+                    }else if (wxOrderCreateDTO.getTicketType() ==2){
                         filmDTO.setUrl("api/order/create-soon-order");
                     }
 
                     StringBuffer paramData =  new StringBuffer();
-                    paramData.append("showId="+filmOrderCreateDTO.getShowId()+"&");
-                    paramData.append("seat="+filmOrderCreateDTO.getSeat()+"&");
-                    if (filmOrderCreateDTO.getReservedPhone() != null){
-                        paramData.append("reservedPhone="+filmOrderCreateDTO.getReservedPhone()+"&");
+                    paramData.append("showId="+wxOrderCreateDTO.getShowId()+"&");
+                    paramData.append("seat="+wxOrderCreateDTO.getSeat()+"&");
+                    if (wxOrderCreateDTO.getReservedPhone() != null){
+                        paramData.append("reservedPhone="+wxOrderCreateDTO.getReservedPhone()+"&");
                     }
-                    paramData.append("thirdOrderId="+filmOrderCreateDTO.getThirdOrderId()+"&");
+                    paramData.append("thirdOrderId="+wxOrderCreateDTO.getThirdOrderId()+"&");
                     paramData.append("notifyUrl="+notifyUrl+"&");
-                    if (filmOrderCreateDTO.getSeatId() != null){
-                        paramData.append("seatId="+filmOrderCreateDTO.getSeatId()+"&");
+                    if (wxOrderCreateDTO.getSeatId() != null){
+                        paramData.append("seatId="+wxOrderCreateDTO.getSeatId()+"&");
                     }
-                    if (filmOrderCreateDTO.getSeatNo() != null){
-                        paramData.append("seatNo="+filmOrderCreateDTO.getSeatNo()+"&");
+                    if (wxOrderCreateDTO.getSeatNo() != null){
+                        paramData.append("seatNo="+wxOrderCreateDTO.getSeatNo()+"&");
                     }
-                    paramData.append("acceptChangeSeat="+filmOrderCreateDTO.getAcceptChangeSeat());
+                    paramData.append("acceptChangeSeat="+wxOrderCreateDTO.getAcceptChangeSeat());
                     filmDTO.setParamData(paramData.toString());
 
-                    String s = filmOrderService.excuteFilmApi(filmDTO);
+                    String s = wxOrderService.excuteFilmApi(filmDTO);
                     log.info("电影下单返回值:"+s);
                     FilmXdResult filmXdResult = JSONObject.parseObject(s, FilmXdResult.class);
                     //如果返回值不是200 ,则调用退款流程
                     if (filmXdResult.getCode()!=200){
                         String refundCode = getOrderCode(null);
-                        filmOrder.setOutRefundNo(refundCode);
+                        wxOrder.setOutRefundNo(refundCode);
                         try {
-                            refundRecordService.refund(filmOrder,refundCode);
+                            refundRecordService.refund(wxOrder,refundCode);
                         } catch (Exception e) {
                             e.printStackTrace();
                         }
                     }else {
                         if (filmXdResult.getData()!= null){
                             FilmMcpData filmMcpData = filmXdResult.getData();
-                            filmOrderJsonData.setFilmMcpData(filmMcpData);
-                            filmOrder.setOrderDataJson(JSONObject.toJSONString(filmOrderJsonData));
+                            wxOrderJsonData.setFilmMcpData(filmMcpData);
+                            wxOrder.setOrderDataJson(JSONObject.toJSONString(wxOrderJsonData));
 
                         }
                     }
 
 
-                    filmOrderService.updateById(filmOrder);
+                    wxOrderService.updateById(wxOrder);
 
                 }
             });

+ 4 - 4
zzjs-admin/src/main/resources/application-dev.yml

@@ -109,15 +109,15 @@ wxpay:
     merchantId: 1608699504
     serialNumber: 487159E168001CDBA0EFE2C988249A84023AD6CC
     v3key: qqwweerrttyyuuiioopp123456789000
-    notifyUrl: http://218.85.55.253:65535/zzjs-admin/open-api/film/notify/wxpay
-    notifyUrlRefund: http://218.85.55.253:65535/zzjs-admin/open-api/film/notify/refund
+    notifyUrl: http://218.85.55.253:65535/zzjs-admin/open-api/wx/notify/wxpay
+    notifyUrlRefund: http://218.85.55.253:65535/zzjs-admin/open-api/wx/notify/refund
 
 
 # 电影
 film:
     appKey: 10000000000
     appSecret: 25f9e794323b453885f5181f1b624d0b
-    notifyUrl: http://218.85.55.253:65535/zzjs-admin/open-api/film/notify/filmOrder
+    notifyUrl: http://218.85.55.253:65535/zzjs-admin/open-api/wx/notify/wxOrder
     v1Url: http://movieapi-test.taototo.cn/
     v2Url: http://movieapi2-test.taototo.cn/
 
@@ -133,4 +133,4 @@ mei:
     key: "610077fffb51712efaa686d9ffb623da"
     secret: "514202a9238958b16cb13805d6f79273"
     sid: "jsshq001"
-    appId: "wxde8ac0a21135c07d"
+    appId: "wxde8ac0a21135c07d"

+ 4 - 4
zzjs-admin/src/main/resources/application-prod.yml

@@ -109,15 +109,15 @@ wxpay:
     merchantId: 1608699504
     serialNumber: 487159E168001CDBA0EFE2C988249A84023AD6CC
     v3key: qqwweerrttyyuuiioopp123456789000
-    notifyUrl: http://admin.zzxcx.net/prod-api/open-api/film/notify/wxpay
-    notifyUrlRefund: http://admin.zzxcx.net/prod-api/open-api/film/notify/refund
+    notifyUrl: http://admin.zzxcx.net/prod-api/open-api/wx/notify/wxpay
+    notifyUrlRefund: http://admin.zzxcx.net/prod-api/open-api/wx/notify/refund
 
 
 # 电影
 film:
     appKey: 10294472736
     appSecret: n8qV2tsBKN6JQ4nMtycPa8e7
-    notifyUrl: http://admin.zzxcx.net/prod-api/open-api/film/notify/filmOrder
+    notifyUrl: http://admin.zzxcx.net/prod-api/open-api/wx/notify/wxOrder
     v1Url: http://movieapi.pintoto.cn/
     v2Url: http://movieapi2.pintoto.cn/
 
@@ -133,4 +133,4 @@ mei:
     key: "610077fffb51712efaa686d9ffb623da"
     secret: "514202a9238958b16cb13805d6f79273"
     sid: "jsshq001"
-    appId: "wxde8ac0a21135c07d"
+    appId: "wxde8ac0a21135c07d"

+ 8 - 8
zzjs-admin/src/test/java/com/miaxis/test/NormalTest.java

@@ -1,9 +1,9 @@
 package com.miaxis.test;
 
 import com.miaxis.ZzjsApplication;
-import com.miaxis.film.domain.FilmOrder;
-import com.miaxis.film.service.IFilmOrderService;
-import com.miaxis.film.service.IRefundRecordService;
+import com.miaxis.wx.domain.WxOrder;
+import com.miaxis.wx.service.IWxOrderService;
+import com.miaxis.wx.service.IRefundRecordService;
 import com.wechat.pay.contrib.apache.httpclient.auth.AutoUpdateCertificatesVerifier;
 import org.junit.Test;
 import org.junit.runner.RunWith;
@@ -18,7 +18,7 @@ import java.security.cert.X509Certificate;
 @RunWith(SpringRunner.class)
 public class NormalTest {
     @Autowired
-    private IFilmOrderService filmOrderService;
+    private IWxOrderService wxOrderService;
 
     @Autowired
     private IRefundRecordService refundRecordService;
@@ -27,10 +27,10 @@ public class NormalTest {
     private AutoUpdateCertificatesVerifier verifier;
     @Test
     public void test1() throws Exception {
-        FilmOrder filmOrder = filmOrderService.getByOutTradeNo("12021052416003523348114349059153");
-        refundRecordService.refund(filmOrder,"12021051815333778448136985596488");
-        FilmOrder filmOrder1 = filmOrderService.getByOutTradeNo("12021052415260767148145493655617");
-        refundRecordService.refund(filmOrder1,"12021051815333778448136985596489");
+        WxOrder wxOrder = wxOrderService.getByOutTradeNo("12021052416003523348114349059153");
+        refundRecordService.refund(wxOrder,"12021051815333778448136985596488");
+        WxOrder wxOrder1 = wxOrderService.getByOutTradeNo("12021052415260767148145493655617");
+        refundRecordService.refund(wxOrder1,"12021051815333778448136985596489");
     }
 
 

+ 0 - 26
zzjs-service/src/main/java/com/miaxis/film/mapper/FilmOrderMapper.java

@@ -1,26 +0,0 @@
-package com.miaxis.film.mapper;
-
-import java.util.List;
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import com.miaxis.film.domain.FilmOrder;
-import com.miaxis.film.dto.FilmOrderListDTO;
-
-/**
- * 电影订单Mapper接口
- *
- * @author miaxis
- * @date 2021-05-07
- */
-public interface FilmOrderMapper extends BaseMapper<FilmOrder> {
-    /**
-     * 查询电影订单列表
-     *
-     * @param filmOrder 电影订单
-     * @return 电影订单集合
-     */
-    public List<FilmOrder> selectFilmOrderList(FilmOrder filmOrder);
-
-    FilmOrder getByOutTradeNo(String outTradeNo);
-
-    List<FilmOrder> selectOrderList(FilmOrderListDTO filmOrderListDTO);
-}

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

@@ -1,33 +0,0 @@
-package com.miaxis.film.service;
-
-import java.io.IOException;
-import java.util.List;
-
-import com.miaxis.feign.dto.FilmDTO;
-import com.miaxis.film.domain.FilmOrder;
-import com.baomidou.mybatisplus.extension.service.IService;
-import com.miaxis.film.dto.FilmOrderListDTO;
-
-/**
- * 电影订单Service接口
- *
- * @author miaxis
- * @date 2021-05-07
- */
-public interface IFilmOrderService extends IService<FilmOrder>{
-    /**
-     * 查询电影订单列表
-     *
-     * @param filmOrder 电影订单
-     * @return 电影订单集合
-     */
-    public List<FilmOrder> selectFilmOrderList(FilmOrder filmOrder);
-
-    FilmOrder getByOutTradeNo(String outTradeNo);
-
-    String excuteFilmApi(FilmDTO filmDTO) ;
-
-    List<FilmOrder> selectOrderList(FilmOrderListDTO filmOrderListDTO);
-
-
-}

+ 3 - 4
zzjs-service/src/main/java/com/miaxis/film/controller/RefundRecordController.java → zzjs-service/src/main/java/com/miaxis/wx/controller/RefundRecordController.java

@@ -1,6 +1,5 @@
-package com.miaxis.film.controller;
+package com.miaxis.wx.controller;
 
-import com.miaxis.common.constant.Constants;
 import java.util.List;
 import java.util.Arrays;
 import io.swagger.annotations.*;
@@ -19,8 +18,8 @@ import org.springframework.web.bind.annotation.ModelAttribute;
 import com.miaxis.common.annotation.Log;
 import com.miaxis.common.core.controller.BaseController;
 import com.miaxis.common.enums.BusinessTypeEnum;
-import com.miaxis.film.domain.RefundRecord;
-import com.miaxis.film.service.IRefundRecordService;
+import com.miaxis.wx.domain.RefundRecord;
+import com.miaxis.wx.service.IRefundRecordService;
 import com.miaxis.common.utils.poi.ExcelUtil;
 import com.miaxis.common.core.page.ResponsePageInfo;
 

+ 1 - 6
zzjs-service/src/main/java/com/miaxis/film/domain/RefundRecord.java → zzjs-service/src/main/java/com/miaxis/wx/domain/RefundRecord.java

@@ -1,17 +1,12 @@
-package com.miaxis.film.domain;
+package com.miaxis.wx.domain;
 
 import java.util.Date;
 import com.fasterxml.jackson.annotation.JsonFormat;
-import io.swagger.models.auth.In;
-import org.apache.commons.lang3.builder.ToStringBuilder;
-import org.apache.commons.lang3.builder.ToStringStyle;
 import com.miaxis.common.annotation.Excel;
-import com.miaxis.common.core.domain.BaseEntity;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
-import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.miaxis.common.core.domain.BaseBusinessEntity;
 import lombok.Data;

+ 3 - 3
zzjs-service/src/main/java/com/miaxis/film/domain/FilmOrder.java → zzjs-service/src/main/java/com/miaxis/wx/domain/WxOrder.java

@@ -1,4 +1,4 @@
-package com.miaxis.film.domain;
+package com.miaxis.wx.domain;
 
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
@@ -19,8 +19,8 @@ import java.util.Date;
  */
 @Data
 @TableName("film_order")
-@ApiModel(value = "FilmOrder", description = "电影订单对象 film_order")
-public class FilmOrder extends BaseBusinessEntity{
+@ApiModel(value = "WxOrder", description = "电影订单对象 film_order")
+public class WxOrder extends BaseBusinessEntity{
     private static final long serialVersionUID = 1L;
 
     /** id */

+ 1 - 1
zzjs-service/src/main/java/com/miaxis/film/dto/CinemaData.java → zzjs-service/src/main/java/com/miaxis/wx/dto/CinemaData.java

@@ -1,4 +1,4 @@
-package com.miaxis.film.dto;
+package com.miaxis.wx.dto;
 
 
 import lombok.Data;

+ 1 - 3
zzjs-service/src/main/java/com/miaxis/film/dto/FilmWxpayDTO.java → zzjs-service/src/main/java/com/miaxis/wx/dto/FilmWxpayDTO.java

@@ -1,7 +1,5 @@
-package com.miaxis.film.dto;
+package com.miaxis.wx.dto;
 
-import com.baomidou.mybatisplus.annotation.TableField;
-import com.miaxis.common.annotation.Excel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 

+ 1 - 1
zzjs-service/src/main/java/com/miaxis/film/dto/FilmWxpayRefundDTO.java → zzjs-service/src/main/java/com/miaxis/wx/dto/FilmWxpayRefundDTO.java

@@ -1,4 +1,4 @@
-package com.miaxis.film.dto;
+package com.miaxis.wx.dto;
 
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;

+ 1 - 1
zzjs-service/src/main/java/com/miaxis/film/dto/WxNotifyReturnDTO.java → zzjs-service/src/main/java/com/miaxis/wx/dto/WxNotifyReturnDTO.java

@@ -1,4 +1,4 @@
-package com.miaxis.film.dto;
+package com.miaxis.wx.dto;
 
 import lombok.Data;
 

+ 2 - 4
zzjs-service/src/main/java/com/miaxis/film/dto/FilmOrderCreateDTO.java → zzjs-service/src/main/java/com/miaxis/wx/dto/WxOrderCreateDTO.java

@@ -1,12 +1,10 @@
-package com.miaxis.film.dto;
+package com.miaxis.wx.dto;
 
-import com.baomidou.mybatisplus.annotation.TableField;
-import com.miaxis.common.annotation.Excel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
 @Data
-public class FilmOrderCreateDTO {
+public class WxOrderCreateDTO {
     private static final long serialVersionUID = 1L;
 
     @ApiModelProperty(value = "购票类型: 1-竞价购票 2-秒出票" ,required=true,allowableValues ="1,2")

+ 4 - 5
zzjs-service/src/main/java/com/miaxis/film/dto/FilmOrderJsonData.java → zzjs-service/src/main/java/com/miaxis/wx/dto/WxOrderJsonData.java

@@ -1,22 +1,21 @@
-package com.miaxis.film.dto;
+package com.miaxis.wx.dto;
 
 import com.miaxis.feign.dto.FilmMcpData;
-import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
 /**
  * 微信支付回调 dto
  */
 @Data
-public class FilmOrderJsonData {
+public class WxOrderJsonData {
     private static final long serialVersionUID = 1L;
 
     //下单字段
-    private  FilmOrderCreateDTO filmOrderCreateDTO;
+    private  WxOrderCreateDTO wxOrderCreateDTO;
     //电影排场信息
     private CinemaData cinemaData;
     //电影订单回调信息
-    private FilmOrderNotifyDTO filmOrderNotifyDTO ;
+    private WxOrderNotifyDTO wxOrderNotifyDTO ;
     //快速出票
     private FilmMcpData filmMcpData;
 

+ 2 - 2
zzjs-service/src/main/java/com/miaxis/film/dto/FilmOrderListDTO.java → zzjs-service/src/main/java/com/miaxis/wx/dto/WxOrderListDTO.java

@@ -1,10 +1,10 @@
-package com.miaxis.film.dto;
+package com.miaxis.wx.dto;
 
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
 @Data
-public class FilmOrderListDTO {
+public class WxOrderListDTO {
     private static final long serialVersionUID = 1L;
 
     @ApiModelProperty(value = "近几天的天数")

+ 2 - 2
zzjs-service/src/main/java/com/miaxis/film/dto/FilmOrderNotifyDTO.java → zzjs-service/src/main/java/com/miaxis/wx/dto/WxOrderNotifyDTO.java

@@ -1,4 +1,4 @@
-package com.miaxis.film.dto;
+package com.miaxis.wx.dto;
 
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
@@ -7,7 +7,7 @@ import lombok.Data;
  * 微信支付回调 dto
  */
 @Data
-public class FilmOrderNotifyDTO {
+public class WxOrderNotifyDTO {
     private static final long serialVersionUID = 1L;
 
 

+ 2 - 2
zzjs-service/src/main/java/com/miaxis/film/mapper/RefundRecordMapper.java → zzjs-service/src/main/java/com/miaxis/wx/mapper/RefundRecordMapper.java

@@ -1,8 +1,8 @@
-package com.miaxis.film.mapper;
+package com.miaxis.wx.mapper;
 
 import java.util.List;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import com.miaxis.film.domain.RefundRecord;
+import com.miaxis.wx.domain.RefundRecord;
 
 /**
  * 微信退款记录Mapper接口

+ 26 - 0
zzjs-service/src/main/java/com/miaxis/wx/mapper/WxOrderMapper.java

@@ -0,0 +1,26 @@
+package com.miaxis.wx.mapper;
+
+import java.util.List;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.miaxis.wx.domain.WxOrder;
+import com.miaxis.wx.dto.WxOrderListDTO;
+
+/**
+ * 电影订单Mapper接口
+ *
+ * @author miaxis
+ * @date 2021-05-07
+ */
+public interface WxOrderMapper extends BaseMapper<WxOrder> {
+    /**
+     * 查询电影订单列表
+     *
+     * @param wxOrder 电影订单
+     * @return 电影订单集合
+     */
+    public List<WxOrder> selectWxOrderList(WxOrder wxOrder);
+
+    WxOrder getByOutTradeNo(String outTradeNo);
+
+    List<WxOrder> selectOrderList(WxOrderListDTO wxOrderListDTO);
+}

+ 5 - 5
zzjs-service/src/main/java/com/miaxis/film/service/IRefundRecordService.java → zzjs-service/src/main/java/com/miaxis/wx/service/IRefundRecordService.java

@@ -1,11 +1,11 @@
-package com.miaxis.film.service;
+package com.miaxis.wx.service;
 
 import java.util.List;
 
-import com.miaxis.film.domain.FilmOrder;
-import com.miaxis.film.domain.RefundRecord;
+import com.miaxis.wx.domain.WxOrder;
+import com.miaxis.wx.domain.RefundRecord;
 import com.baomidou.mybatisplus.extension.service.IService;
-import com.miaxis.film.dto.WxNotifyReturnDTO;
+import com.miaxis.wx.dto.WxNotifyReturnDTO;
 
 /**
  * 微信退款记录Service接口
@@ -22,7 +22,7 @@ public interface IRefundRecordService extends IService<RefundRecord>{
      */
     public List<RefundRecord> selectRefundRecordList(RefundRecord refundRecord);
 
-    WxNotifyReturnDTO refund(FilmOrder filmOrder, String refundCode) throws Exception;
+    WxNotifyReturnDTO refund(WxOrder wxOrder, String refundCode) throws Exception;
 
     RefundRecord getByRefundId(String refundId);
 }

+ 34 - 0
zzjs-service/src/main/java/com/miaxis/wx/service/IWxOrderService.java

@@ -0,0 +1,34 @@
+package com.miaxis.wx.service;
+
+import java.util.List;
+
+import com.miaxis.feign.dto.FilmDTO;
+import com.miaxis.wx.domain.WxOrder;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.miaxis.wx.dto.WxOrderJsonData;
+import com.miaxis.wx.dto.WxOrderListDTO;
+
+/**
+ * 电影订单Service接口
+ *
+ * @author miaxis
+ * @date 2021-05-07
+ */
+public interface IWxOrderService extends IService<WxOrder>{
+    /**
+     * 查询电影订单列表
+     *
+     * @param wxOrder 电影订单
+     * @return 电影订单集合
+     */
+    public List<WxOrder> selectWxOrderList(WxOrder wxOrder);
+
+    WxOrder getByOutTradeNo(String outTradeNo);
+
+    String excuteFilmApi(FilmDTO filmDTO) ;
+
+    List<WxOrder> selectOrderList(WxOrderListDTO wxOrderListDTO);
+
+
+    Integer getPrice(String cinemaId, String showId, int ticketType, WxOrderJsonData wxOrderJsonData);
+}

+ 11 - 12
zzjs-service/src/main/java/com/miaxis/film/service/impl/RefundRecordServiceImpl.java → zzjs-service/src/main/java/com/miaxis/wx/service/impl/RefundRecordServiceImpl.java

@@ -1,4 +1,4 @@
-package com.miaxis.film.service.impl;
+package com.miaxis.wx.service.impl;
 
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -6,11 +6,11 @@ import com.fasterxml.jackson.databind.ObjectMapper;
 import com.fasterxml.jackson.databind.node.ObjectNode;
 import com.miaxis.common.config.WxpayConfig;
 import com.miaxis.common.exception.CustomException;
-import com.miaxis.film.domain.FilmOrder;
-import com.miaxis.film.domain.RefundRecord;
-import com.miaxis.film.dto.WxNotifyReturnDTO;
-import com.miaxis.film.mapper.RefundRecordMapper;
-import com.miaxis.film.service.IRefundRecordService;
+import com.miaxis.wx.domain.WxOrder;
+import com.miaxis.wx.domain.RefundRecord;
+import com.miaxis.wx.dto.WxNotifyReturnDTO;
+import com.miaxis.wx.mapper.RefundRecordMapper;
+import com.miaxis.wx.service.IRefundRecordService;
 import org.apache.http.HttpResponse;
 import org.apache.http.HttpStatus;
 import org.apache.http.client.HttpClient;
@@ -22,7 +22,6 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
-import java.io.ByteArrayOutputStream;
 import java.util.List;
 
 /**
@@ -54,21 +53,21 @@ public class RefundRecordServiceImpl extends ServiceImpl<RefundRecordMapper, Ref
     }
 
     @Override
-    public WxNotifyReturnDTO refund(FilmOrder filmOrder, String refundCode) throws Exception{
+    public WxNotifyReturnDTO refund(WxOrder wxOrder, String refundCode) throws Exception{
         HttpPost httpPost = new HttpPost(wxpayConfig.getV3urlRefund());
         httpPost.addHeader("Accept", "application/json");
         httpPost.addHeader("Content-type","application/json; charset=utf-8");
         ObjectMapper objectMapper = new ObjectMapper();
         ObjectNode rootNode = objectMapper.createObjectNode();
 
-        rootNode.put("out_trade_no", filmOrder.getOutTradeNo())
+        rootNode.put("out_trade_no", wxOrder.getOutTradeNo())
                 .put("out_refund_no", refundCode)
                 .put("reason", "电影购票失败")
                 .put("notify_url",wxpayConfig.getNotifyUrlRefund());
         rootNode.putObject("amount")
-                .put("refund", filmOrder.getTotal())
-                .put("total", filmOrder.getTotal())
-                .put("currency", filmOrder.getCurrency());
+                .put("refund", wxOrder.getTotal())
+                .put("total", wxOrder.getTotal())
+                .put("currency", wxOrder.getCurrency());
         System.out.println(rootNode.toString());
 //        ByteArrayOutputStream bos = new ByteArrayOutputStream();
 //        objectMapper.writeValue(bos, rootNode);

+ 67 - 18
zzjs-service/src/main/java/com/miaxis/film/service/impl/FilmOrderServiceImpl.java → zzjs-service/src/main/java/com/miaxis/wx/service/impl/WxOrderServiceImpl.java

@@ -1,22 +1,26 @@
-package com.miaxis.film.service.impl;
+package com.miaxis.wx.service.impl;
 
 import java.io.IOException;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
 import java.util.TreeMap;
+import java.util.stream.Collectors;
 
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
 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.config.WxpayConfig;
 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 com.miaxis.film.dto.FilmOrderListDTO;
+import com.miaxis.wx.dto.CinemaData;
+import com.miaxis.wx.dto.WxOrderJsonData;
+import com.miaxis.wx.dto.WxOrderListDTO;
+import com.miaxis.system.service.ISysConfigService;
+import lombok.extern.slf4j.Slf4j;
 import org.apache.http.HttpResponse;
 import org.apache.http.HttpStatus;
-import org.apache.http.client.HttpClient;
 import org.apache.http.client.entity.UrlEncodedFormEntity;
 import org.apache.http.client.methods.HttpPost;
 import org.apache.http.impl.client.CloseableHttpClient;
@@ -26,9 +30,9 @@ 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;
+import com.miaxis.wx.mapper.WxOrderMapper;
+import com.miaxis.wx.domain.WxOrder;
+import com.miaxis.wx.service.IWxOrderService;
 
 import javax.annotation.Resource;
 
@@ -39,9 +43,17 @@ import javax.annotation.Resource;
  * @date 2021-05-07
  */
 @Service
-public class FilmOrderServiceImpl extends ServiceImpl<FilmOrderMapper, FilmOrder> implements IFilmOrderService {
+@Slf4j
+public class WxOrderServiceImpl extends ServiceImpl<WxOrderMapper, WxOrder> implements IWxOrderService {
     @Resource
-    private FilmOrderMapper filmOrderMapper;
+    private WxOrderMapper wxOrderMapper;
+
+    @Autowired
+    private WxpayConfig wxpayConfig;
+
+    @Autowired
+    private ISysConfigService configService;
+
 
 
     @Value("${app.appid}")
@@ -61,17 +73,17 @@ public class FilmOrderServiceImpl extends ServiceImpl<FilmOrderMapper, FilmOrder
     /**
      * 查询电影订单列表
      *
-     * @param filmOrder 电影订单
+     * @param wxOrder 电影订单
      * @return 电影订单
      */
     @Override
-    public List<FilmOrder> selectFilmOrderList(FilmOrder filmOrder){
-        return filmOrderMapper.selectFilmOrderList(filmOrder);
+    public List<WxOrder> selectWxOrderList(WxOrder wxOrder){
+        return wxOrderMapper.selectWxOrderList(wxOrder);
     }
 
     @Override
-    public FilmOrder getByOutTradeNo(String outTradeNo) {
-        return filmOrderMapper.getByOutTradeNo(outTradeNo);
+    public WxOrder getByOutTradeNo(String outTradeNo) {
+        return wxOrderMapper.getByOutTradeNo(outTradeNo);
     }
 
     @Override
@@ -143,7 +155,44 @@ public class FilmOrderServiceImpl extends ServiceImpl<FilmOrderMapper, FilmOrder
     }
 
     @Override
-    public List<FilmOrder> selectOrderList(FilmOrderListDTO filmOrderListDTO) {
-        return filmOrderMapper.selectOrderList(filmOrderListDTO);
+    public List<WxOrder> selectOrderList(WxOrderListDTO wxOrderListDTO) {
+        return wxOrderMapper.selectOrderList(wxOrderListDTO);
+    }
+
+    @Override
+    public Integer getPrice(String cinemaId, String showId, int ticketType, WxOrderJsonData wxOrderJsonData) {
+
+        FilmDTO filmDTO = new FilmDTO();
+        filmDTO.setUrl("movieapi/movie-info/get-schedule-list");
+        StringBuffer paramData =  new StringBuffer();
+        paramData.append("cinemaId="+cinemaId);
+        filmDTO.setParamData(paramData.toString());
+        String result = this.excuteFilmApi(filmDTO);
+        JSONObject jsonObject = JSONObject.parseObject(result);
+        JSONObject  data = jsonObject.getJSONObject("data");
+        JSONObject  discountRule = data.getJSONObject("discountRule");
+        JSONArray list = data.getJSONArray("list");
+        log.info(list.toJSONString());
+        List<CinemaData> cinemaData = list.toJavaList(CinemaData.class);
+        List<CinemaData> listdata = cinemaData.stream().filter(a -> showId.equals(a.getShowId())).collect(Collectors.toList());
+        CinemaData realCinemaData = listdata.get(0);
+        wxOrderJsonData.setCinemaData(realCinemaData);
+        Integer netPrice = realCinemaData.getNetPrice();
+        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;
+
+
     }
 }

+ 7 - 7
zzjs-service/src/main/resources/mapper/film/FilmOrderMapper.xml

@@ -2,9 +2,9 @@
 <!DOCTYPE mapper
 PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper namespace="com.miaxis.film.mapper.FilmOrderMapper">
+<mapper namespace="com.miaxis.wx.mapper.WxOrderMapper">
 
-    <resultMap type="FilmOrder" id="FilmOrderResult">
+    <resultMap type="WxOrder" id="WxOrderResult">
         <result property="id"    column="id"    />
         <result property="outTradeNo"    column="out_trade_no"    />
         <result property="transactionId"    column="transaction_id"    />
@@ -36,17 +36,17 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <result property="updateTime"    column="update_time"    />
     </resultMap>
 
-    <sql id="selectFilmOrderVo">
+    <sql id="selectWxOrderVo">
         select * from film_order
     </sql>
 
-    <select id="getByOutTradeNo" parameterType="string" resultType="com.miaxis.film.domain.FilmOrder">
+    <select id="getByOutTradeNo" parameterType="string" resultType="com.miaxis.wx.domain.WxOrder">
          select * from film_order where out_trade_no =#{outTradeNo}
     </select>
 
 
-    <select id="selectFilmOrderList" parameterType="FilmOrder" resultMap="FilmOrderResult">
-        <include refid="selectFilmOrderVo"/>
+    <select id="selectWxOrderList" parameterType="WxOrder" resultMap="WxOrderResult">
+        <include refid="selectWxOrderVo"/>
         <where>
             <if test="outTradeNo != null "> and out_trade_no = #{outTradeNo}</if>
             <if test="transactionId != null  and transactionId != ''"> and transaction_id = #{transactionId}</if>
@@ -78,7 +78,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     </select>
 
 
-    <select id="selectOrderList" resultType="com.miaxis.film.domain.FilmOrder">
+    <select id="selectOrderList" resultType="com.miaxis.wx.domain.WxOrder">
         select * from film_order
          where openid=#{openid} and trade_state ='SUCCESS'
         <if test="days != null  and days != ''">

+ 2 - 2
zzjs-service/src/main/resources/mapper/film/RefundRecordMapper.xml

@@ -2,7 +2,7 @@
 <!DOCTYPE mapper
 PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper namespace="com.miaxis.film.mapper.RefundRecordMapper">
+<mapper namespace="com.miaxis.wx.mapper.RefundRecordMapper">
 
     <resultMap type="RefundRecord" id="RefundRecordResult">
         <result property="id"    column="id"    />
@@ -54,7 +54,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         </where>
     </select>
 
-    <select id="getByRefundId" resultType="com.miaxis.film.domain.RefundRecord">
+    <select id="getByRefundId" resultType="com.miaxis.wx.domain.RefundRecord">
         select * from refund_record where refund_id =#{refundId}
     </select>