소스 검색

封装支付时的入参

codingliang 1 년 전
부모
커밋
cbde03f709

+ 7 - 0
src/main/java/com/sqx/modules/order/entity/TbOrder.java

@@ -9,6 +9,7 @@ import lombok.Data;
 
 import java.io.Serializable;
 import java.math.BigDecimal;
+import java.util.Date;
 import java.util.List;
 
 @Data
@@ -137,6 +138,12 @@ public class TbOrder implements Serializable {
     @ApiModelProperty("送达图片,多个图片之间使用,分割")
     private String deliveryImgs;
 
+    @ApiModelProperty("预定标识 1预订单、0正常单")
+    private String reservationFlag;
+
+    @ApiModelProperty("期待送达时间")
+    private Date expectDeliveryTime;
+
     @ApiModelProperty("商铺名")
     @TableField(exist = false)
     private String shopName;

+ 3 - 5
src/main/java/com/sqx/modules/order/service/AppOrderService.java

@@ -7,6 +7,7 @@ import com.sqx.modules.order.dto.OrderFinishByShopDTO;
 import com.sqx.modules.order.entity.Evaluate;
 import com.sqx.modules.order.entity.OrderGoods;
 import com.sqx.modules.order.entity.TbOrder;
+import com.sqx.modules.pay.PayOrderDTO;
 import com.sqx.modules.utils.excel.ExcelData;
 
 import java.util.List;
@@ -96,13 +97,10 @@ public interface AppOrderService extends IService<TbOrder> {
     /**
      * 准备订单,用于订单支付前检验订单信息、填充订单必要参数
      * @param userId 用户id
-     * @param orderParentId 父订单id 一般为订单id
-     * @param orderType 订单类别 为2时表示外卖订单、1表示上门
-     * @param addressId 地址id
-     * @param activityId 活动id 新增,可以为空
+     * @param payOrderDTO 支付订单dto
      * @return 订单信息
      */
-    TbOrder prepareOrder(Long userId, Long orderParentId, Integer orderType, Long addressId, Long activityId);
+    TbOrder prepareOrder(Long userId, PayOrderDTO payOrderDTO);
 
     /**
      * 根据订单扣减库存

+ 7 - 8
src/main/java/com/sqx/modules/order/service/impl/AppAppOrderServiceImpl.java

@@ -1,6 +1,5 @@
 package com.sqx.modules.order.service.impl;
 
-import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.core.util.StrUtil;
@@ -19,8 +18,8 @@ import com.sqx.common.utils.DateUtils;
 import com.sqx.common.utils.DistanceUtil;
 import com.sqx.common.utils.PageUtils;
 import com.sqx.common.utils.Result;
-import com.sqx.modules.activity.service.ActivityService;
 import com.sqx.modules.activity.service.ActivityPartRecordService;
+import com.sqx.modules.activity.service.ActivityService;
 import com.sqx.modules.activity.vo.OrderSuitActivityVO;
 import com.sqx.modules.address.entity.Address;
 import com.sqx.modules.address.service.AddressService;
@@ -63,6 +62,7 @@ import com.sqx.modules.order.entity.Evaluate;
 import com.sqx.modules.order.entity.OrderGoods;
 import com.sqx.modules.order.entity.TbOrder;
 import com.sqx.modules.order.service.AppOrderService;
+import com.sqx.modules.pay.PayOrderDTO;
 import com.sqx.modules.pay.controller.app.AliPayController;
 import com.sqx.modules.pay.dao.PayDetailsDao;
 import com.sqx.modules.pay.entity.PayDetails;
@@ -87,7 +87,6 @@ import org.springframework.transaction.annotation.Transactional;
 import java.math.BigDecimal;
 import java.text.ParseException;
 import java.text.SimpleDateFormat;
-import java.time.LocalDate;
 import java.time.LocalDateTime;
 import java.time.LocalTime;
 import java.time.format.DateTimeFormatter;
@@ -385,9 +384,9 @@ public class AppAppOrderServiceImpl extends ServiceImpl<AppOrderDao, TbOrder> im
 
     @Transactional(propagation = Propagation.SUPPORTS)
     @Override
-    public TbOrder prepareOrder(Long userId, Long orderParentId, Integer orderType, Long addressId, Long activityId) {
+    public TbOrder prepareOrder(Long userId, PayOrderDTO payOrderDTO) {
         // 获取订单信息
-        TbOrder parentOrder = appOrderDao.selectById(orderParentId);
+        TbOrder parentOrder = appOrderDao.selectById(payOrderDTO.getParentId());
         if (parentOrder == null) {
             throw new SqxException("无效的订单id");
         }
@@ -397,7 +396,7 @@ public class AppAppOrderServiceImpl extends ServiceImpl<AppOrderDao, TbOrder> im
         GoodsShop goodsShop = shopMessageService.selectShopId(parentOrder.getShopId());
 
         // 设置订单类型
-        parentOrder.setOrderType(orderType);
+        parentOrder.setOrderType(payOrderDTO.getOrderType());
 
         // 校验订单信息
         checkOrderGoods(parentOrder);
@@ -406,10 +405,10 @@ public class AppAppOrderServiceImpl extends ServiceImpl<AppOrderDao, TbOrder> im
         calcOrderPriceAndPack(parentOrder);
 
         // 校验地址、配送费信息
-        checkAddress(parentOrder, addressId, goodsShop);
+        checkAddress(parentOrder, payOrderDTO.getAddressId(), goodsShop);
 
         // 检查活动优惠信息
-        checkActivity(activityId, parentOrder);
+        checkActivity(payOrderDTO.getActivityId(), parentOrder);
 
         // 校验优惠券信息
         checkCoupon(parentOrder, userId);

+ 35 - 0
src/main/java/com/sqx/modules/pay/PayOrderDTO.java

@@ -0,0 +1,35 @@
+package com.sqx.modules.pay;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotNull;
+
+/**
+ * 订单支付dto
+ *
+ * @author : codingliang
+ * @date : 2024-07-28 15:02
+ */
+@Data
+@ApiModel("订单支付参数")
+public class PayOrderDTO {
+    @ApiModelProperty("订单id")
+    @NotNull(message = "订单id不能为空")
+    private Long parentId;
+
+    @ApiModelProperty("支付方式 1表示微信支付、4或5表示支付宝支付")
+    private Integer type;
+
+    @ApiModelProperty("地址id")
+    @NotNull(message = "地址id不能为空")
+    private Long addressId;
+
+    @ApiModelProperty("订单类型 1到店、2外卖")
+    @NotNull(message = "订单类型不能为空")
+    private Integer orderType;
+
+    @ApiModelProperty("活动id")
+    private Long activityId;
+}

+ 6 - 12
src/main/java/com/sqx/modules/pay/controller/app/ApiWeiXinPayController.java

@@ -2,6 +2,7 @@ package com.sqx.modules.pay.controller.app;
 
 import com.sqx.common.utils.Result;
 import com.sqx.modules.app.annotation.Login;
+import com.sqx.modules.pay.PayOrderDTO;
 import com.sqx.modules.pay.dao.PayDetailsDao;
 import com.sqx.modules.pay.service.WxService;
 import io.swagger.annotations.Api;
@@ -15,6 +16,7 @@ import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
 import javax.servlet.http.HttpServletRequest;
+import javax.validation.Valid;
 import java.io.BufferedReader;
 import java.io.IOException;
 import java.io.InputStream;
@@ -47,24 +49,16 @@ public class ApiWeiXinPayController {
     @Login
     @ApiOperation("微信支付宝支付订单")
     @PostMapping("/wxPayJsApiOrder")
-    public Result wxPayJsApiOrder(@RequestAttribute("userId") Long userId, @ApiParam("订单id") Long parentId,
-                                  @ApiParam("支付方式 1表示微信支付、4或5表示支付宝支付") Integer type,
-                                  @ApiParam("地址id") Long addressId,
-                                  @ApiParam("订单类型 1到店、2外卖") Integer orderType,
-                                  @ApiParam("活动id") Long activityId) throws Exception {
-        return wxService.payOrder(userId,parentId,type, addressId, orderType, activityId);
+    public Result wxPayJsApiOrder(@RequestAttribute("userId") Long userId, @Valid PayOrderDTO payOrderDTO) throws Exception {
+        return wxService.payOrder(userId, payOrderDTO);
     }
 
     @Login
     @ApiOperation("余额支付订单")
     @PostMapping(value = "balanceOrder")
-    public Result balanceOrder(@RequestAttribute Long userId,
-                               @ApiParam("订单id") Long parentId,
-                               @ApiParam("订单类型 1到店、2外卖") Integer orderType,
-                               @ApiParam("地址id") Long addressId,
-                               @ApiParam("活动id") Long activityId){
+    public Result balanceOrder(@RequestAttribute Long userId, @Valid PayOrderDTO payOrderDTO){
 
-        return wxService.balanceOrder(userId, parentId, orderType, addressId, activityId);
+        return wxService.balanceOrder(userId, payOrderDTO);
     }
 
     @Login

+ 5 - 11
src/main/java/com/sqx/modules/pay/service/WxService.java

@@ -1,6 +1,7 @@
 package com.sqx.modules.pay.service;
 
 import com.sqx.common.utils.Result;
+import com.sqx.modules.pay.PayOrderDTO;
 import com.sqx.modules.pay.entity.PayDetails;
 
 import java.math.BigDecimal;
@@ -17,14 +18,10 @@ public interface WxService {
     /**
      * 订单支付
      * @param userId 用户id
-     * @param parentId 订单id
-     * @param type 支付方式 1表示微信支付、4或5表示支付宝支付
-     * @param addressId 地址id
-     * @param orderType 订单类型 1到店、2外卖
-     * @param activityId 活动id(新增,可以为空)
+     * @param payOrderDTO 支付订单dto
      * @throws Exception
      */
-    Result payOrder(Long userId, Long parentId, Integer type, Long addressId, Integer orderType, Long activityId) throws Exception;
+    Result payOrder(Long userId, PayOrderDTO payOrderDTO) throws Exception;
 
     String payBack(String resXml,Integer type);;
 
@@ -35,13 +32,10 @@ public interface WxService {
     /**
      * 余额支付订单
      * @param userId 用户id
-     * @param parentId 订单id
-     * @param orderType 订单类型 1到店、2外卖
-     * @param addressId 地址id
-     * @param activityId 活动id(新增,可以为空)
+     * @param payOrderDTO 支付订单dto
      * @return
      */
-    Result balanceOrder(Long userId,Long parentId, Integer orderType, Long addressId, Long activityId);
+    Result balanceOrder(Long userId, PayOrderDTO payOrderDTO);
 
     Result shopCashDeposit(Long userId, Double money, String openId,Integer type) throws Exception;
 

+ 12 - 31
src/main/java/com/sqx/modules/pay/service/impl/WxServiceImpl.java

@@ -2,14 +2,11 @@ package com.sqx.modules.pay.service.impl;
 
 import cn.hutool.core.util.StrUtil;
 import com.alibaba.fastjson.JSONObject;
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.github.wxpay.sdk.WXPay;
 import com.github.wxpay.sdk.WXPayConstants;
 import com.github.wxpay.sdk.WXPayUtil;
-import com.sqx.common.utils.DistanceUtil;
 import com.sqx.common.utils.Result;
 import com.sqx.modules.address.dao.AddressDao;
-import com.sqx.modules.address.entity.Address;
 import com.sqx.modules.app.dao.UserDao;
 import com.sqx.modules.app.dao.UserMoneyDetailsDao;
 import com.sqx.modules.app.entity.UserEntity;
@@ -21,26 +18,21 @@ import com.sqx.modules.app.service.UserService;
 import com.sqx.modules.common.entity.CommonInfo;
 import com.sqx.modules.common.service.CommonInfoService;
 import com.sqx.modules.coupon.dao.TbCouponUserDao;
-import com.sqx.modules.coupon.entity.TbCouponUser;
 import com.sqx.modules.coupon.service.TbCouponUserService;
 import com.sqx.modules.datacentre.service.DataCentreService;
 import com.sqx.modules.errand.entity.TbIndent;
 import com.sqx.modules.errand.service.TbIndentService;
-import com.sqx.modules.errand.util.LonLatUtil;
 import com.sqx.modules.goods.dao.GoodsShopDao;
 import com.sqx.modules.goods.dao.GoodsShopRelevancyDao;
 import com.sqx.modules.goods.dao.GoodsSkuDao;
-import com.sqx.modules.goods.entity.Goods;
 import com.sqx.modules.goods.entity.GoodsShop;
-import com.sqx.modules.goods.entity.GoodsShopRelevancy;
 import com.sqx.modules.goods.service.GoodsService;
 import com.sqx.modules.message.dao.MessageInfoDao;
-import com.sqx.modules.message.entity.MessageInfo;
 import com.sqx.modules.order.dao.AppOrderDao;
 import com.sqx.modules.order.dao.OrderGoodsDao;
-import com.sqx.modules.order.entity.OrderGoods;
 import com.sqx.modules.order.entity.TbOrder;
 import com.sqx.modules.order.service.AppOrderService;
+import com.sqx.modules.pay.PayOrderDTO;
 import com.sqx.modules.pay.config.WXConfig;
 import com.sqx.modules.pay.controller.app.AliPayController;
 import com.sqx.modules.pay.dao.PayDetailsDao;
@@ -49,12 +41,8 @@ import com.sqx.modules.pay.service.WxService;
 import com.sqx.modules.shop.service.ShopMessageService;
 import com.sqx.modules.utils.AmountCalUtils;
 import com.sqx.modules.utils.MD5Util;
-import com.sqx.modules.utils.SenInfoCheckUtil;
 import com.sqx.modules.utils.WXConfigUtil;
 import lombok.extern.slf4j.Slf4j;
-import org.apache.commons.lang3.StringUtils;
-import org.gavaghan.geodesy.Ellipsoid;
-import org.gavaghan.geodesy.GlobalCoordinates;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.annotation.Lazy;
 import org.springframework.stereotype.Service;
@@ -62,7 +50,9 @@ import org.springframework.transaction.annotation.Transactional;
 
 import java.math.BigDecimal;
 import java.text.SimpleDateFormat;
-import java.util.*;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.Map;
 import java.util.concurrent.locks.ReentrantReadWriteLock;
 
 /**
@@ -132,10 +122,10 @@ public class WxServiceImpl implements WxService {
     private SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
 
     @Override
-    public Result balanceOrder(Long userId, Long parentId, Integer orderType, Long addressId, Long activityId) {
+    public Result balanceOrder(Long userId, PayOrderDTO payOrderDTO) {
         reentrantReadWriteLock.writeLock().lock();
         try{
-            return balanceOrders(userId, parentId, orderType, addressId, activityId);
+            return balanceOrders(userId, payOrderDTO);
         }catch (Exception e){
             e.printStackTrace();
             log.error("下单异常:"+e.getMessage(),e);
@@ -147,17 +137,11 @@ public class WxServiceImpl implements WxService {
 
     /**
      * 钱包支付订单
-     * @param userId
-     * @param parentId
-     * @param orderType
-     * @param addressId
-     * @param activityId 活动id
-     * @return
      */
     @Transactional
-    public Result balanceOrders(Long userId, Long parentId, Integer orderType, Long addressId, Long activityId){
+    public Result balanceOrders(Long userId, PayOrderDTO payOrderDTO){
         // 获取订单信息
-        TbOrder tbOrder = appOrderService.prepareOrder(userId, parentId, orderType, addressId, activityId);
+        TbOrder tbOrder = appOrderService.prepareOrder(userId, payOrderDTO);
 
         // 扣除用户余额
         BigDecimal payMoney = tbOrder.getPayMoney();
@@ -256,17 +240,14 @@ public class WxServiceImpl implements WxService {
     /**
      * 微信/支付宝支付订单
      * @param userId 用户id
-     * @param parentId 父订单id
-     * @param type 支付方式
-     * @param addressId 用户地址id
-     * @param orderType 订单类型 1到店、2外卖
-     * @param activityId 活动id
+     * @param payOrderDTO 支付订单
      */
     @Override
-    public Result payOrder(Long userId, Long parentId, Integer type, Long addressId, Integer orderType, Long activityId) throws Exception {
-        TbOrder tbOrder = appOrderService.prepareOrder(userId, parentId, orderType, addressId, activityId);
+    public Result payOrder(Long userId, PayOrderDTO payOrderDTO) throws Exception {
+        TbOrder tbOrder = appOrderService.prepareOrder(userId, payOrderDTO);
 
         // 设置支付方式 1表示微信支付、4或5表示支付宝支付
+        Integer type = payOrderDTO.getType();
         tbOrder.setPayType(1);
         if(type== 4 || type== 5){
             tbOrder.setPayType(3);