Althars123 3 lat temu
rodzic
commit
506112e3ed

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

@@ -5,7 +5,7 @@ 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.FilmWxOrderJsonData;
 import com.miaxis.wx.dto.WxOrderNotifyDTO;
 import com.miaxis.wx.service.IRefundRecordService;
 import com.miaxis.wx.service.IWxOrderService;
@@ -55,7 +55,7 @@ public class FilmNotifyController {
         WxOrder wxOrder = wxOrderService.getByOutTradeNo(wxOrderNotifyDTO.getThirdOrderId());
        //todo 检查sign
         String orderDataJson = wxOrder.getOrderDataJson();
-        WxOrderJsonData wxOrderJsonData = JSONObject.parseObject(orderDataJson, WxOrderJsonData.class);
+        FilmWxOrderJsonData wxOrderJsonData = JSONObject.parseObject(orderDataJson, FilmWxOrderJsonData.class);
         WxOrderNotifyDTO dbWxOrderNotifyDTO= wxOrderJsonData.getWxOrderNotifyDTO();
         if (dbWxOrderNotifyDTO == null){
             dbWxOrderNotifyDTO = wxOrderNotifyDTO;

+ 8 - 11
zzjs-admin/src/main/java/com/miaxis/app/controller/wx/WxController.java

@@ -14,6 +14,7 @@ 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.FilmWxOrderJsonData;
 import com.miaxis.wx.dto.WxOrderJsonData;
 import com.miaxis.wx.dto.WxOrderListDTO;
 import com.miaxis.wx.service.IWxOrderService;
@@ -114,18 +115,12 @@ public class WxController extends BaseController {
         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);
+        //电影下单
+        if ("1".equals(wxOrderCreateDTO.getGoodsType()) ){
+            wxOrderService.createFilmOrder(order,wxOrderCreateDTO);
+        }
         wxOrderService.save(order);
 
-
-
         // 2 调用微信接口生成预订单
         ObjectNode rootNode = objectMapper.createObjectNode();
         rootNode.put("mchid",wxpayConfig.getMerchantId())
@@ -134,7 +129,7 @@ public class WxController extends BaseController {
                 .put("notify_url", notifyUrl)
                 .put("out_trade_no", orderCode);
         rootNode.putObject("amount")
-                .put("total", price*number);
+                .put("total", order.getTotal());
         rootNode.putObject("payer")
                 .put("openid", student.getOpenid());
         objectMapper.writeValue(bos, rootNode);
@@ -199,4 +194,6 @@ public class WxController extends BaseController {
 
 
 
+
+
 }

+ 7 - 4
zzjs-admin/src/main/java/com/miaxis/app/controller/wx/WxNotifyController.java

@@ -77,8 +77,7 @@ public class WxNotifyController {
     public WxNotifyReturnDTO wxpayNotify(@RequestBody FilmWxpayDTO filmWxpayDTO, HttpServletRequest request) throws GeneralSecurityException, IOException {
 
         String bodyString = getBodyString(request);
-        Boolean pass =  validate(request,bodyString);
-        if (!pass){
+        if (!validate(request,bodyString)){
             throw new CustomException("签名失败");
         }
         String resourceString = getSourString(filmWxpayDTO);
@@ -156,7 +155,11 @@ public class WxNotifyController {
      */
     @PostMapping(value = "/refund")
     @ApiOperation("微信退款回调")
-    public WxNotifyReturnDTO refundNotify(@RequestBody FilmWxpayDTO filmWxpayDTO) throws GeneralSecurityException, IOException {
+    public WxNotifyReturnDTO refundNotify(@RequestBody FilmWxpayDTO filmWxpayDTO, HttpServletRequest request) throws GeneralSecurityException, IOException {
+        String bodyString = getBodyString(request);
+        if (!validate(request,bodyString)){
+            throw new CustomException("签名失败");
+        }
         String resourceString = getSourString(filmWxpayDTO);
         log.info(resourceString);
         JSONObject jsonObject = JSONObject.parseObject(resourceString);
@@ -216,7 +219,7 @@ public class WxNotifyController {
         }
         //如果订单还未下过电影票订单,则异步调用电影下单api
         String  orderDataJson= wxOrder.getOrderDataJson();
-        WxOrderJsonData wxOrderJsonData = JSONObject.parseObject(orderDataJson, WxOrderJsonData.class);
+        FilmWxOrderJsonData wxOrderJsonData = JSONObject.parseObject(orderDataJson, FilmWxOrderJsonData.class);
         if (wxOrderJsonData != null && wxOrderJsonData.getWxOrderNotifyDTO() == null){
             threadPoolTaskExecutor.execute(new Runnable() {
                 @Override

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

@@ -43,6 +43,15 @@ public class NormalTest {
 
     }
 
+    public static void main(String[] args) {
+        Integer a =1;
+        do1(a);
+        System.out.println(a);
+    }
+    public static void  do1(Integer a){
+        a =2 ;
+    }
+
 
 
 

+ 27 - 0
zzjs-service/src/main/java/com/miaxis/wx/dto/FilmWxOrderJsonData.java

@@ -0,0 +1,27 @@
+package com.miaxis.wx.dto;
+
+import com.miaxis.feign.dto.FilmMcpData;
+import lombok.Data;
+
+/**
+ * 电影数据
+ */
+@Data
+public class FilmWxOrderJsonData extends WxOrderJsonData{
+    private static final long serialVersionUID = 1L;
+
+    //电影排场信息
+    private CinemaData cinemaData;
+    //电影订单回调信息
+    private WxOrderNotifyDTO wxOrderNotifyDTO ;
+    //快速出票
+    private FilmMcpData filmMcpData;
+
+
+
+
+
+
+
+
+}

+ 3 - 8
zzjs-service/src/main/java/com/miaxis/wx/dto/WxOrderJsonData.java

@@ -4,20 +4,15 @@ import com.miaxis.feign.dto.FilmMcpData;
 import lombok.Data;
 
 /**
- * 微信支付回调 dto
+ * 电影数据
  */
 @Data
 public class WxOrderJsonData {
     private static final long serialVersionUID = 1L;
 
-    //下单字段
+    //微信下单对象
     private  WxOrderCreateDTO wxOrderCreateDTO;
-    //电影排场信息
-    private CinemaData cinemaData;
-    //电影订单回调信息
-    private WxOrderNotifyDTO wxOrderNotifyDTO ;
-    //快速出票
-    private FilmMcpData filmMcpData;
+
 
 
 

+ 5 - 2
zzjs-service/src/main/java/com/miaxis/wx/service/IWxOrderService.java

@@ -5,7 +5,8 @@ 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.FilmWxOrderJsonData;
+import com.miaxis.wx.dto.WxOrderCreateDTO;
 import com.miaxis.wx.dto.WxOrderListDTO;
 
 /**
@@ -30,5 +31,7 @@ public interface IWxOrderService extends IService<WxOrder>{
     List<WxOrder> selectOrderList(WxOrderListDTO wxOrderListDTO);
 
 
-    Integer getPrice(String cinemaId, String showId, int ticketType, WxOrderJsonData wxOrderJsonData);
+    Integer getPrice(String cinemaId, String showId, int ticketType, FilmWxOrderJsonData wxOrderJsonData);
+
+    void createFilmOrder(WxOrder order, WxOrderCreateDTO wxOrderCreateDTO);
 }

+ 3 - 2
zzjs-service/src/main/java/com/miaxis/wx/service/impl/RefundRecordServiceImpl.java

@@ -79,8 +79,9 @@ public class RefundRecordServiceImpl extends ServiceImpl<RefundRecordMapper, Ref
             //  保存退款数据到数据库
             RefundRecord refundRecord = new RefundRecord();
             JSONObject jsonObject = JSONObject.parseObject(bodyAsString);
-            refundRecord.setOutRefundNo(jsonObject.getString("refund_id"));
-            refundRecord.setTransactionId(jsonObject.getString("out_refund_no"));
+            refundRecord.setRefundId(jsonObject.getString("refund_id"));
+            refundRecord.setOutRefundNo(jsonObject.getString("out_refund_no"));
+            refundRecord.setTransactionId(jsonObject.getString("transaction_id"));
             refundRecord.setOutTradeNo(jsonObject.getString("out_trade_no"));
             refundRecord.setChannel(jsonObject.getString("channel"));
             refundRecord.setUserReceivedAccount(jsonObject.getString("user_received_account"));

+ 13 - 4
zzjs-service/src/main/java/com/miaxis/wx/service/impl/WxOrderServiceImpl.java

@@ -14,9 +14,7 @@ import com.miaxis.common.config.WxpayConfig;
 import com.miaxis.common.sms.MD5Utils;
 import com.miaxis.common.utils.StringUtils;
 import com.miaxis.feign.dto.FilmDTO;
-import com.miaxis.wx.dto.CinemaData;
-import com.miaxis.wx.dto.WxOrderJsonData;
-import com.miaxis.wx.dto.WxOrderListDTO;
+import com.miaxis.wx.dto.*;
 import com.miaxis.system.service.ISysConfigService;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.http.HttpResponse;
@@ -158,7 +156,7 @@ public class WxOrderServiceImpl extends ServiceImpl<WxOrderMapper, WxOrder> impl
     }
 
     @Override
-    public Integer getPrice(String cinemaId, String showId, int ticketType, WxOrderJsonData wxOrderJsonData) {
+    public Integer getPrice(String cinemaId, String showId, int ticketType, FilmWxOrderJsonData wxOrderJsonData) {
 
         FilmDTO filmDTO = new FilmDTO();
         filmDTO.setUrl("movieapi/movie-info/get-schedule-list");
@@ -193,4 +191,15 @@ public class WxOrderServiceImpl extends ServiceImpl<WxOrderMapper, WxOrder> impl
 
 
     }
+
+    @Override
+    public void createFilmOrder(WxOrder order, WxOrderCreateDTO wxOrderCreateDTO) {
+        FilmWxOrderJsonData filmWxOrderJsonData = new FilmWxOrderJsonData();
+        wxOrderCreateDTO.setThirdOrderId(order.getOutTradeNo());
+        filmWxOrderJsonData.setWxOrderCreateDTO(wxOrderCreateDTO);
+        Integer price = getPrice(wxOrderCreateDTO.getCinemaId(),wxOrderCreateDTO.getShowId(),wxOrderCreateDTO.getTicketType(),filmWxOrderJsonData);
+        int number = wxOrderCreateDTO.getSeat().split(",").length;
+        order.setOrderDataJson(JSONObject.toJSONString(filmWxOrderJsonData));
+        order.setTotal(price*number);
+    }
 }

+ 1 - 1
zzjs-service/src/main/resources/mapper/wx/RefundRecordMapper.xml

@@ -55,7 +55,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     </select>
 
     <select id="getByRefundId" resultType="com.miaxis.wx.domain.RefundRecord">
-        select * from refund_record where refund_id =#{refundId}
+        select * from refund_record where out_refund_no =#{refundId}
     </select>
 
 </mapper>