xuhaifeng 9 months ago
parent
commit
849cbdca6c

+ 15 - 19
yiqi-admin/src/main/java/com/yiqi/admin/controller/order/OrderClothController.java

@@ -123,10 +123,10 @@ public class OrderClothController extends BaseController {
     @GetMapping(value = "getOrderStatusByOrderNo")
     public R<String> getOrderStatusByOrderNo(@RequestParam @ApiParam("订单编号") String orderNo) throws Exception {
         LambdaQueryWrapper<OrderCloth> queryWrapper = new QueryWrapper<OrderCloth>().lambda().eq(OrderCloth::getOrderNo, orderNo);
-        if(SourceType.FACTORY.getCode().equals(SecurityUtils.getLoginUser().getSourceType())){
+        if (SourceType.FACTORY.getCode().equals(SecurityUtils.getLoginUser().getSourceType())) {
             queryWrapper.eq(OrderCloth::getFactoryId, SecurityUtils.getLoginUser().getOrgId());
         }
-        if(SourceType.STORE.getCode().equals(SecurityUtils.getLoginUser().getSourceType())){
+        if (SourceType.STORE.getCode().equals(SecurityUtils.getLoginUser().getSourceType())) {
             queryWrapper.eq(OrderCloth::getOrgId, SecurityUtils.getLoginUser().getOrgId());
         }
         OrderCloth orderCloth = orderClothService.getOne(queryWrapper);
@@ -433,10 +433,10 @@ public class OrderClothController extends BaseController {
     public R<OrderClothVO> getInfoByOrderNo(@RequestParam @ApiParam("订单编号") String orderNo) throws Exception {
         LambdaQueryWrapper<OrderCloth> queryWrapper = new QueryWrapper<OrderCloth>().lambda()
                 .eq(OrderCloth::getOrderNo, orderNo);
-        if(SourceType.FACTORY.getCode().equals(SecurityUtils.getLoginUser().getSourceType())){
+        if (SourceType.FACTORY.getCode().equals(SecurityUtils.getLoginUser().getSourceType())) {
             queryWrapper.eq(OrderCloth::getFactoryId, SecurityUtils.getLoginUser().getOrgId());
         }
-        if(SourceType.STORE.getCode().equals(SecurityUtils.getLoginUser().getSourceType())){
+        if (SourceType.STORE.getCode().equals(SecurityUtils.getLoginUser().getSourceType())) {
             queryWrapper.eq(OrderCloth::getOrgId, SecurityUtils.getLoginUser().getOrgId());
         }
         OrderCloth orderCloth = orderClothService.getOne(queryWrapper);
@@ -496,13 +496,6 @@ public class OrderClothController extends BaseController {
                 orderClothItemDTO.setClothSpeedId(defaultWashSpeed);
             }
         }
-//        if (ClothOrderPayTimeType.take_cloth_pay.getCode().equals(orderClothDTO.getPayTimeType())
-//                && (PayType.WECHAT.getCode().equals(orderClothDTO.getPayType())
-//                || PayType.ALIPAY.getCode().equals(orderClothDTO.getPayType()))) {
-//            if (StringUtils.isEmpty(orderClothDTO.getAuthCode())) {
-//                throw new ServiceException("请先填写或扫描付款码");
-//            }
-//        }
         return R.ok(orderClothService.collectCloth(orderClothDTO));
     }
 
@@ -593,10 +586,10 @@ public class OrderClothController extends BaseController {
         LambdaQueryWrapper<OrderCloth> queryWrapper = new QueryWrapper<OrderCloth>().lambda()
                 .eq(OrderCloth::getDelFlag, DeleteStatus.OK.getCode())
                 .ne(OrderCloth::getRefundStatus, OrderRefundStatus.REFUND_SUCCESS.getCode());
-        if(SourceType.FACTORY.getCode().equals(SecurityUtils.getLoginUser().getSourceType())){
+        if (SourceType.FACTORY.getCode().equals(SecurityUtils.getLoginUser().getSourceType())) {
             queryWrapper.eq(OrderCloth::getFactoryId, SecurityUtils.getLoginUser().getOrgId());
         }
-        if(SourceType.STORE.getCode().equals(SecurityUtils.getLoginUser().getSourceType())){
+        if (SourceType.STORE.getCode().equals(SecurityUtils.getLoginUser().getSourceType())) {
             queryWrapper.eq(OrderCloth::getOrgId, SecurityUtils.getLoginUser().getOrgId());
         }
         if (StringUtils.isNotEmpty(orderClothQueryDTO.getOrderType())) {
@@ -609,6 +602,9 @@ public class OrderClothController extends BaseController {
                 queryWrapper.isNull(OrderCloth::getOrgId);
             }
         }
+        if (StringUtils.isNotEmpty(orderClothQueryDTO.getIsAppointment())) {
+            queryWrapper.eq(OrderCloth::getIsAppointment, orderClothQueryDTO.getIsAppointment());
+        }
         queryWrapper.and(orderClothLambdaQueryWrapper -> orderClothLambdaQueryWrapper
                 .eq(OrderCloth::getOrderStatus, ClothOrderStatusType.WAITING_FOR_PAY.getCode()).or()
                 .eq(OrderCloth::getOrderStatus, ClothOrderStatusType.WASHING.getCode()).or()
@@ -684,10 +680,10 @@ public class OrderClothController extends BaseController {
         LambdaQueryWrapper<OrderCloth> queryWrapper = new QueryWrapper<OrderCloth>().lambda()
                 .eq(OrderCloth::getDelFlag, DeleteStatus.OK.getCode())
                 .ne(OrderCloth::getRefundStatus, OrderRefundStatus.REFUND_SUCCESS.getCode());
-        if(SourceType.FACTORY.getCode().equals(SecurityUtils.getLoginUser().getSourceType())){
+        if (SourceType.FACTORY.getCode().equals(SecurityUtils.getLoginUser().getSourceType())) {
             queryWrapper.eq(OrderCloth::getFactoryId, SecurityUtils.getLoginUser().getOrgId());
         }
-        if(SourceType.STORE.getCode().equals(SecurityUtils.getLoginUser().getSourceType())){
+        if (SourceType.STORE.getCode().equals(SecurityUtils.getLoginUser().getSourceType())) {
             queryWrapper.eq(OrderCloth::getOrgId, SecurityUtils.getLoginUser().getOrgId());
         }
         if (StringUtils.isNotEmpty(orderClothQueryDTO.getOrderType())) {
@@ -891,10 +887,10 @@ public class OrderClothController extends BaseController {
                         ClothOrderStatusType.HAS_TO_DOOR.getCode(),
                         ClothOrderStatusType.HAS_TAKING.getCode(),
                         ClothOrderStatusType.CANCEL);
-        if(SourceType.FACTORY.getCode().equals(SecurityUtils.getLoginUser().getSourceType())){
+        if (SourceType.FACTORY.getCode().equals(SecurityUtils.getLoginUser().getSourceType())) {
             queryWrapper.eq(OrderCloth::getFactoryId, SecurityUtils.getLoginUser().getOrgId());
         }
-        if(SourceType.STORE.getCode().equals(SecurityUtils.getLoginUser().getSourceType())){
+        if (SourceType.STORE.getCode().equals(SecurityUtils.getLoginUser().getSourceType())) {
             queryWrapper.eq(OrderCloth::getOrgId, SecurityUtils.getLoginUser().getOrgId());
         }
         if (StringUtils.isNotEmpty(orderClothCountConsumeQueryDTO.getOrderNo())) {
@@ -983,10 +979,10 @@ public class OrderClothController extends BaseController {
                 .ge(BaseEntity::getCreateTime, orderClothCountConsumeQueryDTO.getBeginCreateTime())
                 .lt(BaseEntity::getCreateTime, DateUtils.addDays(orderClothCountConsumeQueryDTO.getEndCreateTime(), 1))
                 .ne(OrderCloth::getRefundStatus, OrderRefundStatus.REFUND_SUCCESS.getCode());
-        if(SourceType.FACTORY.getCode().equals(SecurityUtils.getLoginUser().getSourceType())){
+        if (SourceType.FACTORY.getCode().equals(SecurityUtils.getLoginUser().getSourceType())) {
             queryWrapper.eq(OrderCloth::getFactoryId, SecurityUtils.getLoginUser().getOrgId());
         }
-        if(SourceType.STORE.getCode().equals(SecurityUtils.getLoginUser().getSourceType())){
+        if (SourceType.STORE.getCode().equals(SecurityUtils.getLoginUser().getSourceType())) {
             queryWrapper.eq(OrderCloth::getOrgId, SecurityUtils.getLoginUser().getOrgId());
         }
         if (StringUtils.isNotEmpty(orderClothCountConsumeQueryDTO.getOrderNo())) {

+ 21 - 3
yiqi-api/src/main/java/com/yiqi/api/controller/order/WeAppOrderClothController.java

@@ -20,11 +20,14 @@ import com.yiqi.common.utils.*;
 import com.yiqi.order.domain.OrderCloth;
 import com.yiqi.order.domain.OrderClothItem;
 import com.yiqi.order.domain.OrderDelivery;
+import com.yiqi.order.domain.dto.OrderClothAppPayDTO;
 import com.yiqi.order.domain.dto.OrderClothAppointmentDTO;
+import com.yiqi.order.domain.dto.OrderClothPayDTO;
 import com.yiqi.order.domain.dto.weapp.OrderClothAppQueryDTO;
 import com.yiqi.order.domain.dto.weapp.UpdateOrderClothTakeClothWayDTO;
 import com.yiqi.order.domain.dto.weapp.WeAppOrderClothAppointmentQueryDTO;
 import com.yiqi.order.domain.vo.OrderClothVO;
+import com.yiqi.order.domain.vo.OrderPayResultVO;
 import com.yiqi.order.domain.vo.weapp.WeAppOrderClothAppointmentVO;
 import com.yiqi.order.service.*;
 import com.yiqi.system.domain.SysOrg;
@@ -37,6 +40,7 @@ import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiParam;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.bind.annotation.*;
 
@@ -467,6 +471,16 @@ public class WeAppOrderClothController {
         return R.ok("配送订单单独支付已弃用");
     }
 
+
+
+    @Transactional(rollbackFor = Exception.class)
+    @PreAuthorize("@ss.hasPermi('order:cloth:collectCloth')")
+    @ApiOperation("订单付款")
+    @PostMapping(value = "clothOrderPay")
+    public R<OrderPayResultVO> clothOrderPay(@Valid @RequestBody OrderClothAppPayDTO orderClothAppPayDTO) throws Exception {
+        return R.ok(orderClothService.clothOrderAppPay(orderClothAppPayDTO));
+    }
+
     @Transactional(rollbackFor = Exception.class)
     @ApiOperation("衣服确认送达")
     @GetMapping(value = "confirmSend")
@@ -525,7 +539,7 @@ public class WeAppOrderClothController {
 
     @ApiOperation("计算配送费金额")
     @GetMapping(value = "calculateDeliveryPirce")
-    public R<BigDecimal> calculateDeliveryPirce(@RequestParam Long orderId) throws Exception {
+    public R<BigDecimal> calculateDeliveryPirce(Long orderId, String sendWay) throws Exception {
         OrderCloth orderCloth = orderClothService.getOne(new QueryWrapper<OrderCloth>().lambda()
                 .eq(OrderCloth::getId, orderId)
                 .eq(OrderCloth::getAppUserId, AuthHolder.userId()));
@@ -539,10 +553,14 @@ public class WeAppOrderClothController {
         if (ClothTakeWay.DELIVERY.getCode().equals(orderCloth.getTakeClothWay())) {
             freeDeliveryNum--;
         }
-        if (freeDeliveryNum > 0) {
+        if (ClothTakeWay.DELIVERY.getCode().equals(sendWay)) {
+            freeDeliveryNum--;
+        }
+        if (freeDeliveryNum >= 0) {
             return R.ok(BigDecimal.ZERO);
         }
-        return R.ok(new BigDecimal(sysConfigService.selectConfigByKey(SysConfigKey.OrderClothDeliveryPrice.getCode())));
+        String deliveryPrice = sysConfigService.selectConfigByKey(SysConfigKey.OrderClothDeliveryPrice.getCode());
+        return R.ok(CurrencyUtil.mul(new BigDecimal(deliveryPrice), new BigDecimal(freeDeliveryNum)).negate());
     }
 
 }

+ 1 - 1
yiqi-common/src/main/java/com/yiqi/common/enums/ClothOrderStatusType.java

@@ -3,7 +3,7 @@ package com.yiqi.common.enums;
 
 public enum ClothOrderStatusType implements CodeEnum{
 
-    APPOINTMENT("0", "待接单")
+     APPOINTMENT("0", "待接单")
     , WAITING_TO_DOOR("1","待上门")
     , HAS_TO_DOOR("2","待取衣")
     , HAS_TAKING("3", "已取衣、待定价")

+ 8 - 4
yiqi-common/src/main/java/com/yiqi/order/domain/OrderCloth.java

@@ -244,16 +244,20 @@ public class OrderCloth extends BaseEntity
     @ApiModelProperty("取衣方式(0=到店,1=上门)")
     private String sendClothWay;
 
-    /** 优惠券优惠总金额 */
-    @Excel(name = "优惠券优惠总金额")
-    @ApiModelProperty("优惠券优惠总金额")
-    private BigDecimal couponAmount;
+    @ApiModelProperty("折扣活动ID")
+    private Long discountActivityId;
+
+    /** 活动折扣金额 */
+    @Excel(name = "活动折扣金额")
+    @ApiModelProperty("活动折扣金额")
+    private BigDecimal activityDiscountAmount;
 
     /** 优惠券抵扣金额 */
     @Excel(name = "优惠券抵扣金额")
     @ApiModelProperty("优惠券抵扣金额")
     private BigDecimal couponDeductAmount;
 
+
     @ApiModelProperty("现金抵扣金额")
     private BigDecimal cashDeductAmount;
 

+ 52 - 0
yiqi-common/src/main/java/com/yiqi/order/domain/dto/OrderClothAppPayDTO.java

@@ -0,0 +1,52 @@
+package com.yiqi.order.domain.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotEmpty;
+import javax.validation.constraints.NotNull;
+import java.math.BigDecimal;
+import java.util.List;
+
+@Data
+public class OrderClothAppPayDTO {
+
+    @ApiModelProperty("客户ID")
+    private Long appUserId;
+
+    @NotEmpty(message = "请先设置支付方式")
+    @ApiModelProperty("支付方式(0=微信,1=支付宝,3=余额)")
+    private String payType;
+
+    @ApiModelProperty("订单编号")
+    @NotNull(message = "订单编号必传")
+    private String orderNo;
+
+    @ApiModelProperty("配送金额")
+    private BigDecimal deliveryAmount;
+
+    @ApiModelProperty("订单金额")
+    @NotNull(message = "订单金额必传")
+    private BigDecimal payAmount;
+
+    @ApiModelProperty("优惠券优惠金额")
+    private BigDecimal couponDeductAmount;
+
+    @ApiModelProperty("备注")
+    private String remark;
+
+    @ApiModelProperty("折扣活动ID")
+    private Long activityId;
+
+    @ApiModelProperty("活动折扣金额")
+    private BigDecimal activityDiscountAmount;
+
+    @ApiModelProperty("订单使用优惠券")
+    private List<OrderCouponDTO> orderCouponDTOS;
+
+    @ApiModelProperty("送衣方式(0=到店,1=上门)")
+    private String sendClothWay;
+
+    @ApiModelProperty("付款平台(APP=APP、WEAPP=小程序)")
+    private String platform;
+}

+ 3 - 0
yiqi-common/src/main/java/com/yiqi/order/domain/dto/OrderClothQueryDTO.java

@@ -44,6 +44,9 @@ public class OrderClothQueryDTO extends PageVO {
     @ApiModelProperty("来源类型(总部搜索)")
     private String sourceType;
 
+    @ApiModelProperty("是否预约订单")
+    private String isAppointment;
+
     @ApiModelProperty("组织ID(总部搜索)")
     private Long orgId;
 

+ 3 - 0
yiqi-common/src/main/java/com/yiqi/order/domain/dto/OrderCouponClothDTO.java

@@ -15,6 +15,9 @@ public class OrderCouponClothDTO {
     @ApiModelProperty("衣服序号")
     private Integer clothIndex;
 
+    @ApiModelProperty("订单衣服id")
+    private Long orderClothItemId;
+
     @ApiModelProperty("衣服ID")
     private Long id;
 

+ 27 - 4
yiqi-common/src/main/java/com/yiqi/order/domain/dto/PayOrderAppDTO.java

@@ -2,12 +2,10 @@ package com.yiqi.order.domain.dto;
 
 import com.yiqi.common.enums.GoodsType;
 import com.yiqi.common.enums.OrderType;
+import com.yiqi.common.enums.SourceType;
 import com.yiqi.common.utils.DateUtils;
 import com.yiqi.common.utils.bean.BeanUtils;
-import com.yiqi.order.domain.OrderActivity;
-import com.yiqi.order.domain.OrderClothDeliveryAddress;
-import com.yiqi.order.domain.OrderGoods;
-import com.yiqi.order.domain.OrderRecharge;
+import com.yiqi.order.domain.*;
 import lombok.Data;
 
 /**
@@ -43,6 +41,9 @@ public class PayOrderAppDTO extends PayOrderDTO{
         payOrderAppDTO.setPlatform(platform);
         payOrderAppDTO.setOrderNo(orderGoods.getOrderNo());
         payOrderAppDTO.setPayAmount(orderGoods.getPayAmount());
+        if(orderGoods.getSourceType().equals(SourceType.STORE.getCode())){
+            payOrderAppDTO.setStoreId(orderGoods.getOrgId());
+        }
         if (GoodsType.LIFE_SERVICE.getCode().equals(orderGoods.getGoodsType())){
             payOrderAppDTO.setSubjectTitle(OrderType.life.getInfo());
         }else if (GoodsType.CAR.getCode().equals(orderGoods.getGoodsType())){
@@ -79,6 +80,9 @@ public class PayOrderAppDTO extends PayOrderDTO{
     public static PayOrderAppDTO buildActivityOrderPayData(OrderActivity orderActivity, String platform){
         PayOrderAppDTO payOrderAppDTO = new PayOrderAppDTO();
         payOrderAppDTO.setPlatform(platform);
+        if(orderActivity.getSourceType().equals(SourceType.STORE.getCode())){
+            payOrderAppDTO.setStoreId(orderActivity.getOrgId());
+        }
         payOrderAppDTO.setOrderNo(orderActivity.getOrderNo());
         payOrderAppDTO.setPayAmount(orderActivity.getPayAmount());
         payOrderAppDTO.setPayType(orderActivity.getPayType());
@@ -86,4 +90,23 @@ public class PayOrderAppDTO extends PayOrderDTO{
         payOrderAppDTO.setExpireTime(DateUtils.addMinutes(orderActivity.getCreateTime(), 5));
         return payOrderAppDTO;
     }
+
+    /**
+     * 配送费订单
+     * @param orderCloth
+     * @return
+     */
+    public static PayOrderAppDTO buildClothOrderPayData(OrderCloth orderCloth, String platform){
+        PayOrderAppDTO payOrderAppDTO = new PayOrderAppDTO();
+        payOrderAppDTO.setPlatform(platform);
+        if(orderCloth.getSourceType().equals(SourceType.STORE.getCode())){
+            payOrderAppDTO.setStoreId(orderCloth.getOrgId());
+        }
+        payOrderAppDTO.setOrderNo(orderCloth.getOrderNo());
+        payOrderAppDTO.setPayAmount(orderCloth.getPayAmount());
+        payOrderAppDTO.setPayType(orderCloth.getPayType());
+        payOrderAppDTO.setSubjectTitle(OrderType.cloth.getInfo());
+        payOrderAppDTO.setExpireTime(DateUtils.addMinutes(DateUtils.getNowDate(), 5));
+        return payOrderAppDTO;
+    }
 }

+ 3 - 0
yiqi-common/src/main/java/com/yiqi/order/domain/dto/PayOrderDTO.java

@@ -22,6 +22,9 @@ public class PayOrderDTO {
     @ApiModelProperty("原订单编号")
     private String orderNo;
 
+
+    private String requestNo;
+
     @ApiModelProperty("支付金额")
     private BigDecimal payAmount;
 

+ 14 - 2
yiqi-common/src/main/java/com/yiqi/order/domain/vo/OrderClothFinancialVO.java

@@ -3,6 +3,7 @@ package com.yiqi.order.domain.vo;
 import com.fasterxml.jackson.annotation.JsonFormat;
 import com.fasterxml.jackson.databind.annotation.JsonSerialize;
 import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+import com.yiqi.common.annotation.Excel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
@@ -43,8 +44,19 @@ public class OrderClothFinancialVO {
     @ApiModelProperty("支付金额")
     private BigDecimal payAmount;
 
-    @ApiModelProperty("优惠券优惠金额")
-    private BigDecimal couponAmount;
+    /** 活动折扣金额 */
+    @Excel(name = "活动折扣金额")
+    @ApiModelProperty("活动折扣金额")
+    private BigDecimal activityDiscountAmount;
+
+    /** 优惠券抵扣金额 */
+    @Excel(name = "优惠券抵扣金额")
+    @ApiModelProperty("优惠券抵扣金额")
+    private BigDecimal couponDeductAmount;
+
+
+    @ApiModelProperty("现金抵扣金额")
+    private BigDecimal cashDeductAmount;
 
     @ApiModelProperty("是否付款")
     private String hasPay;

+ 9 - 0
yiqi-common/src/main/java/com/yiqi/order/service/IOrderClothService.java

@@ -51,6 +51,13 @@ public interface IOrderClothService extends IService<OrderCloth> {
      */
     OrderCloth getOrderClothByOrderNo(String orderNo);
 
+    /**
+     * 支付订单
+     * @param orderClothAppPayDTO
+     * @return
+     */
+    OrderPayResultVO clothOrderAppPay(OrderClothAppPayDTO orderClothAppPayDTO);
+
     /**
      * 创建洗衣订单支付
      *
@@ -133,4 +140,6 @@ public interface IOrderClothService extends IService<OrderCloth> {
     public OrderFinancialQueryVO listFinancialStatisticsByClothOrderMonth(OrderFinancialMonthQueryDTO orderFinancialMonthQueryDTO);
 
     OrderClothFactoryClothQueryVO listPayFinancialStatisticsByClothOrderFactory(OrderFinancialFactoryClothQueryDTO orderFinancialFactoryClothQueryDTO);
+
+
 }

+ 0 - 2
yiqi-core/src/main/java/com/yiqi/core/service/impl/SettlementManageBillServiceImpl.java

@@ -260,8 +260,6 @@ public class SettlementManageBillServiceImpl extends ServiceImpl<SettlementManag
         // 支付宝退款总和
         BigDecimal totalAlipayRefund = refundInfoList.stream().filter(o -> o.getPayType().equals(PayType.ALIPAY.getCode())).map(OrderRefundInfo::getRefundAmount).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
 
-
-
         // 材料金额
         BigDecimal totalMaterialAmount = orderClothList.stream().map(OrderCloth::getPayAmount).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
         // 系统维护金额

+ 72 - 1
yiqi-core/src/main/java/com/yiqi/order/service/impl/OrderClothServiceImpl.java

@@ -479,6 +479,77 @@ public class OrderClothServiceImpl extends ServiceImpl<OrderClothMapper, OrderCl
         return getOne(new QueryWrapper<OrderCloth>().lambda().eq(OrderCloth::getOrderNo, orderNo));
     }
 
+    @Override
+    public OrderPayResultVO clothOrderAppPay(OrderClothAppPayDTO orderClothPayDTO) {
+        OrderCloth orderCloth = getOrderClothByOrderNo(orderClothPayDTO.getOrderNo());
+        if (orderCloth == null) {
+            throw new ServiceException("未查询到订单");
+        }
+        if (orderCloth.getPayStatus().equals(PayStatus.HAS_PAY.getCode())) {
+            throw new ServiceException("订单已支付");
+        }
+        BigDecimal payAmount = CurrencyUtil.sub(orderCloth.getOrderClothPrice(), orderClothPayDTO.getCouponDeductAmount(), orderClothPayDTO.getActivityDiscountAmount()).add(orderClothPayDTO.getDeliveryAmount());
+        if (payAmount.compareTo(orderClothPayDTO.getPayAmount()) != 0) {
+            throw new ServiceException("支付金额有误");
+        }
+        orderCloth.setCouponDeductAmount(orderClothPayDTO.getCouponDeductAmount());
+        orderCloth.setDiscountActivityId(orderClothPayDTO.getActivityId());
+        orderCloth.setActivityDiscountAmount(orderClothPayDTO.getActivityDiscountAmount());
+        orderCloth.setCouponDeductAmount(orderClothPayDTO.getCouponDeductAmount());
+        orderCloth.setPayType(orderClothPayDTO.getPayType());
+        orderCloth.setDeliveryAmount(orderClothPayDTO.getDeliveryAmount());
+        orderCloth.setRemark(orderClothPayDTO.getRemark());
+        orderCloth.setDeliveryAmount(orderClothPayDTO.getDeliveryAmount());
+        orderCloth.setOrderAmount(CurrencyUtil.add(orderCloth.getOrderAmount(), orderCloth.getDeliveryAmount()));
+        orderCloth.setPayAmount(payAmount);
+        orderCloth.setSendClothWay(orderClothPayDTO.getSendClothWay());
+        updateOrderCloth(orderCloth);
+        //更新优惠券
+        QueryWrapper<OrderClothCouponRelation> queryWrapper = new QueryWrapper<>();
+        queryWrapper.lambda().eq(OrderClothCouponRelation::getOrderId, orderCloth.getId());
+        orderClothCouponRelationService.remove(queryWrapper);
+
+        QueryWrapper<OrderClothItemCouponRelation> itemWrapper = new QueryWrapper<>();
+        itemWrapper.lambda().eq(OrderClothItemCouponRelation::getOrderId, orderCloth.getId());
+        orderClothItemCouponRelationService.remove(itemWrapper);
+
+        if (orderClothPayDTO.getOrderCouponDTOS() != null) {
+            List<OrderClothCouponRelation> orderClothCouponRelations = new ArrayList<>();
+            List<OrderClothItemCouponRelation> orderClothItemCouponRelations = new ArrayList<>();
+            List<OrderCouponDTO> orderCouponDTOS = orderClothPayDTO.getOrderCouponDTOS();
+            for (OrderCouponDTO orderCouponDTO : orderCouponDTOS) {
+                OrderClothCouponRelation orderClothCouponRelation = new OrderClothCouponRelation();
+                orderClothCouponRelation.setOrderId(orderCloth.getId());
+                orderClothCouponRelation.setOrderNo(orderCloth.getOrderNo());
+                orderClothCouponRelation.setCouponItemId(orderCouponDTO.getId());
+                orderClothCouponRelation.buildCreateData();
+                orderClothCouponRelations.add(orderClothCouponRelation);
+                for (OrderCouponClothDTO orderCouponClothDTO : orderCouponDTO.getOrderCouponClothDTOS()) {
+                    OrderClothItemCouponRelation orderClothItemCouponRelation = new OrderClothItemCouponRelation();
+                    orderClothItemCouponRelation.setClothId(orderCouponClothDTO.getId());
+                    orderClothItemCouponRelation.setOrderClothItemId(orderCouponClothDTO.getOrderClothItemId());
+                    orderClothItemCouponRelation.setCouponItemId(orderCouponDTO.getId());
+                    orderClothItemCouponRelation.setOrderId(orderCloth.getId());
+                    orderClothItemCouponRelation.setOrderNo(orderCloth.getOrderNo());
+                    orderClothItemCouponRelation.setDiscountPrice(orderCouponClothDTO.getDeductAmount());
+                    orderClothItemCouponRelation.buildCreateData();
+                    orderClothItemCouponRelations.add(orderClothItemCouponRelation);
+                    OrderClothItem orderClothItem = orderClothItemService.getById(orderCouponClothDTO.getOrderClothItemId());
+                    orderClothItem.setPayPrice(orderClothItem.getPayPrice().subtract(orderCouponClothDTO.getDeductAmount()));
+                    orderClothItemService.updateById(orderClothItem);
+                }
+            }
+            orderClothCouponRelationService.saveBatch(orderClothCouponRelations);
+            orderClothItemCouponRelationService.saveBatch(orderClothItemCouponRelations);
+        }
+        //请求支付
+        OrderPayResultVO orderPayResultVO = new OrderPayResultVO();
+        orderPayResultVO.setAppPayRespVO(payService.appPay(PayOrderAppDTO.buildClothOrderPayData(orderCloth, orderClothPayDTO.getPlatform())));
+        orderPayResultVO.setPayResult(100);
+        return orderPayResultVO;
+    }
+
+
     @Override
     public OrderPayResultVO clothOrderPay(OrderClothPayDTO orderClothPayDTO) {
         OrderCloth orderCloth = getOrderClothByOrderNo(orderClothPayDTO.getOrderNo());
@@ -1170,7 +1241,7 @@ public class OrderClothServiceImpl extends ServiceImpl<OrderClothMapper, OrderCl
                 .reduce(BigDecimal.ZERO, BigDecimal::add));
         // 今日券消费
         orderFinancialQueryVO.setTodayCouponAmount(data.stream()
-                .map(OrderClothFinancialVO::getCouponAmount)
+                .map(OrderClothFinancialVO::getCouponDeductAmount)
                 .filter(Objects::nonNull)
                 .reduce(BigDecimal.ZERO, BigDecimal::add));
         // 今日现金消费

+ 1 - 1
yiqi-core/src/main/java/com/yiqi/order/service/impl/PayServiceImpl.java

@@ -137,7 +137,7 @@ public class PayServiceImpl implements IPayService {
     @Override
     public AppPayRespVO appPay(PayOrderAppDTO payOrderAppDTO) {
         OrderPayInfo orderPayInfo = orderPayInfoService.createOrderPayInfo(payOrderAppDTO.getStoreId(), payOrderAppDTO.getOrderNo(), payOrderAppDTO.getPayAmount(), payOrderAppDTO.getPayType());
-        payOrderAppDTO.setOrderNo(orderPayInfo.getRequestNo());
+        payOrderAppDTO.setRequestNo(orderPayInfo.getRequestNo());
         switch (EnumUtils.getEnumByType(payOrderAppDTO.getPayType(), PayType.class)) {
             case WECHAT: {
                 if ("APP".equals(payOrderAppDTO.getPlatform())) {

+ 1 - 1
yiqi-core/src/main/java/com/yiqi/payment/AliPayService.java

@@ -207,7 +207,7 @@ public class AliPayService {
         AlipayTradeAppPayModel alipayTradeAppPayModel = new AlipayTradeAppPayModel();
         alipayTradeAppPayModel.setBody(payOrderAppDTO.getSubjectTitle());
         alipayTradeAppPayModel.setSubject(payOrderAppDTO.getSubjectTitle());
-        alipayTradeAppPayModel.setOutTradeNo(payOrderAppDTO.getOrderNo());
+        alipayTradeAppPayModel.setOutTradeNo(payOrderAppDTO.getRequestNo());
         alipayTradeAppPayModel.setTotalAmount(payOrderAppDTO.getPayAmount().toString());
         if (payOrderAppDTO.getExpireTime() != null) {
             alipayTradeAppPayModel.setTimeoutExpress(DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD_HH_MM_SS, payOrderAppDTO.getExpireTime()));

+ 2 - 2
yiqi-core/src/main/java/com/yiqi/payment/WechatPayService.java

@@ -286,7 +286,7 @@ public class WechatPayService {
                     .mch_id(mch_id)
                     .nonce_str(WxPayKit.generateStr())
                     .body(payOrderAppDTO.getSubjectTitle())
-                    .out_trade_no(payOrderAppDTO.getOrderNo())
+                    .out_trade_no(payOrderAppDTO.getRequestNo())
                     .total_fee(totalFee.toString())
                     .spbill_create_ip(ip)
                     .openid(payOrderAppDTO.getUserId())
@@ -344,7 +344,7 @@ public class WechatPayService {
                     .nonce_str(WxPayKit.generateStr())
                     .body(payOrderAppDTO.getSubjectTitle())
                     .attach("")
-                    .out_trade_no(payOrderAppDTO.getOrderNo())
+                    .out_trade_no(payOrderAppDTO.getRequestNo())
                     .total_fee(totalFee.toString())
                     .spbill_create_ip(ip)
                     .trade_type("APP")

+ 4 - 4
yiqi-core/src/main/resources/mapper/order/OrderClothMapper.xml

@@ -48,7 +48,7 @@
         <result property="sendClothAppUserId" column="send_cloth_app_user_id"/>
         <result property="takeClothWay" column="take_cloth_way"/>
         <result property="sendClothWay" column="send_cloth_way"/>
-        <result property="couponAmount" column="coupon_amount"/>
+        <result property="activityDiscountAmount" column="activity_discount_amount"/>
         <result property="finishTime" column="finish_time"/>
         <result property="employeeId" column="employee_id"/>
         <result property="delFlag" column="del_flag"/>
@@ -111,7 +111,7 @@
         <result property="sendClothAppUserId" column="send_cloth_app_user_id"/>
         <result property="takeClothWay" column="take_cloth_way"/>
         <result property="sendClothWay" column="send_cloth_way"/>
-        <result property="couponAmount" column="coupon_amount"/>
+        <result property="activityDiscountAmount" column="activity_discount_amount"/>
         <result property="finishTime" column="finish_time"/>
         <result property="employeeId" column="employee_id"/>
         <result property="delFlag" column="del_flag"/>
@@ -145,8 +145,8 @@
     </sql>
     <sql id="orderClothFinancialVo">
         select a.order_no as orderNo, a.order_cloth_count as orderClothCount, a.order_amount as orderAmount, a.pay_amount as payAmount,
-            a.pay_info as payInfo, a.refund_status as refundStatus,
-               a.coupon_amount as couponAmount, a.has_pay as hasPay, a.pay_status as payStatus, a.create_time as createTime, au.real_name as userName, au.phone_number as phoneNumber,
+            a.pay_info as payInfo, a.refund_status as refundStatus, a.coupon_deduct_amount as couponDeductAmount, a.cash_deduct_amount as cashDeductAmount,
+               a.activity_discount_amount as activityDiscountAmount, a.has_pay as hasPay, a.pay_status as payStatus, a.create_time as createTime, au.real_name as userName, au.phone_number as phoneNumber,
             a.create_by as employeeName, a.create_by_id as employeeId, a.order_status as orderStatus, a.pay_type as payType
         from order_cloth a
             left join app_user au on a.app_user_id = au.id