Sfoglia il codice sorgente

fix order

release_toaliyun_real
xiaohanzi 4 anni fa
parent
commit
e68daab181
18 ha cambiato i file con 348 aggiunte e 74 eliminazioni
  1. +102
    -1
      mallinkAdmin/src/main/resources/db/migration/V202109070001__order.sql
  2. +8
    -2
      mallinkBApi/src/main/java/com/iformall/controller/WxMicroPayController.java
  3. +1
    -1
      mallinkCApi/src/main/java/com/iformall/controller/WxOrderController.java
  4. +3
    -3
      mallinkSchedule/src/main/java/com/iformall/schedule/CouponOrderExpiringSchedule.java
  5. +5
    -0
      mallinkService/src/main/java/com/iformall/domain/dto/OrderSaveDto.java
  6. +2
    -2
      mallinkService/src/main/java/com/iformall/domain/po/WxOrder.java
  7. +15
    -0
      mallinkService/src/main/java/com/iformall/domain/po/WxPayOrder.java
  8. +2
    -1
      mallinkService/src/main/java/com/iformall/service/WxCouponOrderService.java
  9. +34
    -10
      mallinkService/src/main/java/com/iformall/service/impl/WxCouponOrderServiceImpl.java
  10. +19
    -31
      mallinkService/src/main/java/com/iformall/service/impl/WxOrderServiceImpl.java
  11. +33
    -8
      mallinkService/src/main/java/com/iformall/service/impl/WxPayOrderServiceImpl.java
  12. +14
    -0
      mallinkService/src/main/java/com/iformall/service/order/OrderAdapterService.java
  13. +19
    -0
      mallinkService/src/main/java/com/iformall/service/order/entity/WxComposeChildOrderPrice.java
  14. +24
    -0
      mallinkService/src/main/java/com/iformall/service/order/entity/WxComposeChildOrderShare.java
  15. +15
    -1
      mallinkService/src/main/java/com/iformall/service/order/impl/BatchOrderAdapterService.java
  16. +13
    -6
      mallinkService/src/main/java/com/iformall/service/order/impl/SingleOrderAdapterService.java
  17. +36
    -7
      mallinkService/src/main/java/com/iformall/service/order/util/OrderHelper.java
  18. +3
    -1
      mallinkService/src/main/resources/mapper/WxPayOrderMapper.xml

+ 102
- 1
mallinkAdmin/src/main/resources/db/migration/V202109070001__order.sql Vedi File

@@ -718,4 +718,105 @@ ALTER TABLE wx_coupon_order_95 ADD COLUMN `compose_order_id` bigint(20) C
ALTER TABLE wx_coupon_order_96 ADD COLUMN `compose_order_id` bigint(20) COMMENT '组合订单编号';
ALTER TABLE wx_coupon_order_97 ADD COLUMN `compose_order_id` bigint(20) COMMENT '组合订单编号';
ALTER TABLE wx_coupon_order_98 ADD COLUMN `compose_order_id` bigint(20) COMMENT '组合订单编号';
ALTER TABLE wx_coupon_order_99 ADD COLUMN `compose_order_id` bigint(20) COMMENT '组合订单编号';
ALTER TABLE wx_coupon_order_99 ADD COLUMN `compose_order_id` bigint(20) COMMENT '组合订单编号';

ALTER TABLE wx_pay_order_0 ADD COLUMN `child_order_share` text COMMENT '子订单分账金额';
ALTER TABLE wx_pay_order_1 ADD COLUMN `child_order_share` text COMMENT '子订单分账金额';
ALTER TABLE wx_pay_order_2 ADD COLUMN `child_order_share` text COMMENT '子订单分账金额';
ALTER TABLE wx_pay_order_3 ADD COLUMN `child_order_share` text COMMENT '子订单分账金额';
ALTER TABLE wx_pay_order_4 ADD COLUMN `child_order_share` text COMMENT '子订单分账金额';
ALTER TABLE wx_pay_order_5 ADD COLUMN `child_order_share` text COMMENT '子订单分账金额';
ALTER TABLE wx_pay_order_6 ADD COLUMN `child_order_share` text COMMENT '子订单分账金额';
ALTER TABLE wx_pay_order_7 ADD COLUMN `child_order_share` text COMMENT '子订单分账金额';
ALTER TABLE wx_pay_order_8 ADD COLUMN `child_order_share` text COMMENT '子订单分账金额';
ALTER TABLE wx_pay_order_9 ADD COLUMN `child_order_share` text COMMENT '子订单分账金额';
ALTER TABLE wx_pay_order_10 ADD COLUMN `child_order_share` text COMMENT '子订单分账金额';
ALTER TABLE wx_pay_order_11 ADD COLUMN `child_order_share` text COMMENT '子订单分账金额';
ALTER TABLE wx_pay_order_12 ADD COLUMN `child_order_share` text COMMENT '子订单分账金额';
ALTER TABLE wx_pay_order_13 ADD COLUMN `child_order_share` text COMMENT '子订单分账金额';
ALTER TABLE wx_pay_order_14 ADD COLUMN `child_order_share` text COMMENT '子订单分账金额';
ALTER TABLE wx_pay_order_15 ADD COLUMN `child_order_share` text COMMENT '子订单分账金额';
ALTER TABLE wx_pay_order_16 ADD COLUMN `child_order_share` text COMMENT '子订单分账金额';
ALTER TABLE wx_pay_order_17 ADD COLUMN `child_order_share` text COMMENT '子订单分账金额';
ALTER TABLE wx_pay_order_18 ADD COLUMN `child_order_share` text COMMENT '子订单分账金额';
ALTER TABLE wx_pay_order_19 ADD COLUMN `child_order_share` text COMMENT '子订单分账金额';
ALTER TABLE wx_pay_order_20 ADD COLUMN `child_order_share` text COMMENT '子订单分账金额';
ALTER TABLE wx_pay_order_21 ADD COLUMN `child_order_share` text COMMENT '子订单分账金额';
ALTER TABLE wx_pay_order_22 ADD COLUMN `child_order_share` text COMMENT '子订单分账金额';
ALTER TABLE wx_pay_order_23 ADD COLUMN `child_order_share` text COMMENT '子订单分账金额';
ALTER TABLE wx_pay_order_24 ADD COLUMN `child_order_share` text COMMENT '子订单分账金额';
ALTER TABLE wx_pay_order_25 ADD COLUMN `child_order_share` text COMMENT '子订单分账金额';
ALTER TABLE wx_pay_order_26 ADD COLUMN `child_order_share` text COMMENT '子订单分账金额';
ALTER TABLE wx_pay_order_27 ADD COLUMN `child_order_share` text COMMENT '子订单分账金额';
ALTER TABLE wx_pay_order_28 ADD COLUMN `child_order_share` text COMMENT '子订单分账金额';
ALTER TABLE wx_pay_order_29 ADD COLUMN `child_order_share` text COMMENT '子订单分账金额';
ALTER TABLE wx_pay_order_30 ADD COLUMN `child_order_share` text COMMENT '子订单分账金额';
ALTER TABLE wx_pay_order_31 ADD COLUMN `child_order_share` text COMMENT '子订单分账金额';
ALTER TABLE wx_pay_order_32 ADD COLUMN `child_order_share` text COMMENT '子订单分账金额';
ALTER TABLE wx_pay_order_33 ADD COLUMN `child_order_share` text COMMENT '子订单分账金额';
ALTER TABLE wx_pay_order_34 ADD COLUMN `child_order_share` text COMMENT '子订单分账金额';
ALTER TABLE wx_pay_order_35 ADD COLUMN `child_order_share` text COMMENT '子订单分账金额';
ALTER TABLE wx_pay_order_36 ADD COLUMN `child_order_share` text COMMENT '子订单分账金额';
ALTER TABLE wx_pay_order_37 ADD COLUMN `child_order_share` text COMMENT '子订单分账金额';
ALTER TABLE wx_pay_order_38 ADD COLUMN `child_order_share` text COMMENT '子订单分账金额';
ALTER TABLE wx_pay_order_39 ADD COLUMN `child_order_share` text COMMENT '子订单分账金额';
ALTER TABLE wx_pay_order_40 ADD COLUMN `child_order_share` text COMMENT '子订单分账金额';
ALTER TABLE wx_pay_order_41 ADD COLUMN `child_order_share` text COMMENT '子订单分账金额';
ALTER TABLE wx_pay_order_42 ADD COLUMN `child_order_share` text COMMENT '子订单分账金额';
ALTER TABLE wx_pay_order_43 ADD COLUMN `child_order_share` text COMMENT '子订单分账金额';
ALTER TABLE wx_pay_order_44 ADD COLUMN `child_order_share` text COMMENT '子订单分账金额';
ALTER TABLE wx_pay_order_45 ADD COLUMN `child_order_share` text COMMENT '子订单分账金额';
ALTER TABLE wx_pay_order_46 ADD COLUMN `child_order_share` text COMMENT '子订单分账金额';
ALTER TABLE wx_pay_order_47 ADD COLUMN `child_order_share` text COMMENT '子订单分账金额';
ALTER TABLE wx_pay_order_48 ADD COLUMN `child_order_share` text COMMENT '子订单分账金额';
ALTER TABLE wx_pay_order_49 ADD COLUMN `child_order_share` text COMMENT '子订单分账金额';
ALTER TABLE wx_pay_order_50 ADD COLUMN `child_order_share` text COMMENT '子订单分账金额';
ALTER TABLE wx_pay_order_51 ADD COLUMN `child_order_share` text COMMENT '子订单分账金额';
ALTER TABLE wx_pay_order_52 ADD COLUMN `child_order_share` text COMMENT '子订单分账金额';
ALTER TABLE wx_pay_order_53 ADD COLUMN `child_order_share` text COMMENT '子订单分账金额';
ALTER TABLE wx_pay_order_54 ADD COLUMN `child_order_share` text COMMENT '子订单分账金额';
ALTER TABLE wx_pay_order_55 ADD COLUMN `child_order_share` text COMMENT '子订单分账金额';
ALTER TABLE wx_pay_order_56 ADD COLUMN `child_order_share` text COMMENT '子订单分账金额';
ALTER TABLE wx_pay_order_57 ADD COLUMN `child_order_share` text COMMENT '子订单分账金额';
ALTER TABLE wx_pay_order_58 ADD COLUMN `child_order_share` text COMMENT '子订单分账金额';
ALTER TABLE wx_pay_order_59 ADD COLUMN `child_order_share` text COMMENT '子订单分账金额';
ALTER TABLE wx_pay_order_60 ADD COLUMN `child_order_share` text COMMENT '子订单分账金额';
ALTER TABLE wx_pay_order_61 ADD COLUMN `child_order_share` text COMMENT '子订单分账金额';
ALTER TABLE wx_pay_order_62 ADD COLUMN `child_order_share` text COMMENT '子订单分账金额';
ALTER TABLE wx_pay_order_63 ADD COLUMN `child_order_share` text COMMENT '子订单分账金额';
ALTER TABLE wx_pay_order_64 ADD COLUMN `child_order_share` text COMMENT '子订单分账金额';
ALTER TABLE wx_pay_order_65 ADD COLUMN `child_order_share` text COMMENT '子订单分账金额';
ALTER TABLE wx_pay_order_66 ADD COLUMN `child_order_share` text COMMENT '子订单分账金额';
ALTER TABLE wx_pay_order_67 ADD COLUMN `child_order_share` text COMMENT '子订单分账金额';
ALTER TABLE wx_pay_order_68 ADD COLUMN `child_order_share` text COMMENT '子订单分账金额';
ALTER TABLE wx_pay_order_69 ADD COLUMN `child_order_share` text COMMENT '子订单分账金额';
ALTER TABLE wx_pay_order_70 ADD COLUMN `child_order_share` text COMMENT '子订单分账金额';
ALTER TABLE wx_pay_order_71 ADD COLUMN `child_order_share` text COMMENT '子订单分账金额';
ALTER TABLE wx_pay_order_72 ADD COLUMN `child_order_share` text COMMENT '子订单分账金额';
ALTER TABLE wx_pay_order_73 ADD COLUMN `child_order_share` text COMMENT '子订单分账金额';
ALTER TABLE wx_pay_order_74 ADD COLUMN `child_order_share` text COMMENT '子订单分账金额';
ALTER TABLE wx_pay_order_75 ADD COLUMN `child_order_share` text COMMENT '子订单分账金额';
ALTER TABLE wx_pay_order_76 ADD COLUMN `child_order_share` text COMMENT '子订单分账金额';
ALTER TABLE wx_pay_order_77 ADD COLUMN `child_order_share` text COMMENT '子订单分账金额';
ALTER TABLE wx_pay_order_78 ADD COLUMN `child_order_share` text COMMENT '子订单分账金额';
ALTER TABLE wx_pay_order_79 ADD COLUMN `child_order_share` text COMMENT '子订单分账金额';
ALTER TABLE wx_pay_order_80 ADD COLUMN `child_order_share` text COMMENT '子订单分账金额';
ALTER TABLE wx_pay_order_81 ADD COLUMN `child_order_share` text COMMENT '子订单分账金额';
ALTER TABLE wx_pay_order_82 ADD COLUMN `child_order_share` text COMMENT '子订单分账金额';
ALTER TABLE wx_pay_order_83 ADD COLUMN `child_order_share` text COMMENT '子订单分账金额';
ALTER TABLE wx_pay_order_84 ADD COLUMN `child_order_share` text COMMENT '子订单分账金额';
ALTER TABLE wx_pay_order_85 ADD COLUMN `child_order_share` text COMMENT '子订单分账金额';
ALTER TABLE wx_pay_order_86 ADD COLUMN `child_order_share` text COMMENT '子订单分账金额';
ALTER TABLE wx_pay_order_87 ADD COLUMN `child_order_share` text COMMENT '子订单分账金额';
ALTER TABLE wx_pay_order_88 ADD COLUMN `child_order_share` text COMMENT '子订单分账金额';
ALTER TABLE wx_pay_order_89 ADD COLUMN `child_order_share` text COMMENT '子订单分账金额';
ALTER TABLE wx_pay_order_90 ADD COLUMN `child_order_share` text COMMENT '子订单分账金额';
ALTER TABLE wx_pay_order_91 ADD COLUMN `child_order_share` text COMMENT '子订单分账金额';
ALTER TABLE wx_pay_order_92 ADD COLUMN `child_order_share` text COMMENT '子订单分账金额';
ALTER TABLE wx_pay_order_93 ADD COLUMN `child_order_share` text COMMENT '子订单分账金额';
ALTER TABLE wx_pay_order_94 ADD COLUMN `child_order_share` text COMMENT '子订单分账金额';
ALTER TABLE wx_pay_order_95 ADD COLUMN `child_order_share` text COMMENT '子订单分账金额';
ALTER TABLE wx_pay_order_96 ADD COLUMN `child_order_share` text COMMENT '子订单分账金额';
ALTER TABLE wx_pay_order_97 ADD COLUMN `child_order_share` text COMMENT '子订单分账金额';
ALTER TABLE wx_pay_order_98 ADD COLUMN `child_order_share` text COMMENT '子订单分账金额';
ALTER TABLE wx_pay_order_99 ADD COLUMN `child_order_share` text COMMENT '子订单分账金额';

+ 8
- 2
mallinkBApi/src/main/java/com/iformall/controller/WxMicroPayController.java Vedi File

@@ -9,6 +9,8 @@ import com.iformall.domain.po.*;
import com.iformall.enums.*;
import com.iformall.exception.MallinkException;
import com.iformall.service.*;
import com.iformall.service.order.OrderFactory;
import com.iformall.service.order.entity.WxComposeOrder;
import com.iformall.utils.IPUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
@@ -57,6 +59,9 @@ public class WxMicroPayController extends BaseController {

@Autowired
private WxCUserBasicInfoService wxCUserBasicInfoService;
@Autowired
OrderFactory orderFactory;

@ApiOperation(value = "付款码支付订单", notes = "params:{\"authCode\":\"String\",\"totalFee\":\"支付金额\"},\n" +
"注意:\n" +
@@ -428,7 +433,8 @@ public class WxMicroPayController extends BaseController {
return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL);
}

WxOrder microOrder = wxOrderService.getById(orderId,wxMerchantBUser.getTenantId());
WxComposeOrder composeOrder = orderFactory.getOrderAdapterService(EnumComposeOrder.SINGLE.getCode()).getComposeOrder(orderId, wxMerchantBUser.getTenantId());
WxOrder microOrder = composeOrder.getSingleOrder();
if (microOrder == null) {
return new ResultData(ErrorCode.ORDER_IS_NOT_FIND);
}
@@ -449,7 +455,7 @@ public class WxMicroPayController extends BaseController {
Integer remainPrice = payPrice;
if (wxCouponOrder != null) {
try {
couponPayOrder = wxCouponOrderService.microPayPreVerify(microOrder, wxCouponOrder, wxMerchantBUser, payPrice,payWay,ipStr,authCode);
couponPayOrder = wxCouponOrderService.microPayPreVerify(composeOrder, wxCouponOrder, wxMerchantBUser, payPrice,payWay,ipStr,authCode);
//remainPrice = microOrder.getPayment() - couponPayOrder.getPayAmount();
remainPrice = couponPayOrder.getPayAmount();
// 更新实际支付金额


+ 1
- 1
mallinkCApi/src/main/java/com/iformall/controller/WxOrderController.java Vedi File

@@ -88,7 +88,7 @@ public class WxOrderController extends BaseController {
return wxOrderService.composeSaveOrder(EnumComposeOrder.BATCH,orderSaveDto,memberId,EnumPayWay.PAY_WAY_WECHAT,getTenantInfo());
}
@ApiOperation(value = "单个券单个订单,拼团,砍价用", notes = "{\"couponChannelId\":\"String\",\"couponId\":\"String\",\"press\":\"String\",\"orderGroupId\":\"String\",\"formId\":\"String\"}")
@ApiOperation(value = "单个券单个订单,卡(分账导致无法批量下单)、拼团,砍价用", notes = "{\"couponChannelId\":\"String\",\"couponId\":\"String\",\"press\":\"String\",\"orderGroupId\":\"String\",\"formId\":\"String\"}")
@PostMapping("singleSave")
public ResultData saveOrder(@RequestBody OrderSaveDto orderSaveDto) {
Long memberId;


+ 3
- 3
mallinkSchedule/src/main/java/com/iformall/schedule/CouponOrderExpiringSchedule.java Vedi File

@@ -180,12 +180,12 @@ public class CouponOrderExpiringSchedule {
wxSharingOrderDto.setPayTimeEnd(wxPayOrder.getPayTimeEnd());
wxSharingOrderDto.updateTenantInfo(wxPayOrder);
wxSharingOrderDto.setTransactionId(wxPayOrder.getTransactionId());
if (wxPayOrder.getRateAmount() != null) {
if (wxPayOrder.getChildOrderShare(co.getOrderId()).getRateAmount() != null) {
// 实际分账金额为 分账金额 + 通道费差
wxSharingOrderDto.setShareAmount(wxPayOrder.getShareAmount()+wxPayOrder.getRateAmount());
wxSharingOrderDto.setShareAmount(wxPayOrder.getChildOrderShare(co.getOrderId()).getShareAmount()+wxPayOrder.getChildOrderShare(co.getOrderId()).getRateAmount());
} else {
// 未设置通道费差
wxSharingOrderDto.setShareAmount(wxPayOrder.getShareAmount());
wxSharingOrderDto.setShareAmount(wxPayOrder.getChildOrderShare(co.getOrderId()).getShareAmount());
}
wxProfitSharingOrderService.finishSharingOrder(wxSharingOrderDto,wxPayOrder.getPayVendor());
}


+ 5
- 0
mallinkService/src/main/java/com/iformall/domain/dto/OrderSaveDto.java Vedi File

@@ -21,5 +21,10 @@ public class OrderSaveDto implements Serializable {

//被操作人的ID 供A端使用
private Long userId;
public boolean isPressOrder() {
boolean isPress = this.getPress() != null ? this.getPress() : false;
return isPress;
}

}

+ 2
- 2
mallinkService/src/main/java/com/iformall/domain/po/WxOrder.java Vedi File

@@ -97,12 +97,12 @@ public class WxOrder extends TenantEntity {
@io.swagger.annotations.ApiModelProperty(value="组合订单编号",name="composeOrderId")
private Long composeOrderId;
@io.swagger.annotations.ApiModelProperty(value="组合订单编号",name="couponNumber")
@io.swagger.annotations.ApiModelProperty(value="商品数量",name="couponNumber")
private Integer couponNumber;
@io.swagger.annotations.ApiModelProperty(value="组合订单类型EnumComposeOrder",name="composeOrderType")
private Integer composeOrderType;
@TableField(exist = false)
protected List<Integer> statusS;



+ 15
- 0
mallinkService/src/main/java/com/iformall/domain/po/WxPayOrder.java Vedi File

@@ -1,7 +1,11 @@
package com.iformall.domain.po;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.annotation.TableName;
import com.iformall.domain.po.base.TenantEntity;
import com.iformall.service.order.entity.WxComposeChildOrderShare;

import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.ToString;
@@ -52,6 +56,17 @@ public class WxPayOrder extends TenantEntity {
private Integer shareAmount;
@io.swagger.annotations.ApiModelProperty(value="通道费差(购买时刻的通道费差,分账完结时使用)",name="rateAmount")
private Integer rateAmount;
@io.swagger.annotations.ApiModelProperty(value="子订单分账金额json",name="childOrderShare")
private String childOrderShare;
public WxComposeChildOrderShare getChildOrderShare(Long wxOrderId) {
Map childs = JSON.parseObject(this.childOrderShare, Map.class);
JSONObject childOrderShare = (JSONObject) childs.get(String.valueOf(wxOrderId));
if (null != childOrderShare) {
return new WxComposeChildOrderShare(childOrderShare.getInteger("realPayMent"), childOrderShare.getInteger("shareAmount"), childOrderShare.getInteger("rateAmount"));
}
return null;
}
@io.swagger.annotations.ApiModelProperty(value="支付失败原因",name="failReason")
private String failReason;
@io.swagger.annotations.ApiModelProperty(value="支付后结果来源(0:callback, 1:query)",name="payEndFrom")


+ 2
- 1
mallinkService/src/main/java/com/iformall/service/WxCouponOrderService.java Vedi File

@@ -7,6 +7,7 @@ import com.iformall.domain.po.*;
import com.iformall.domain.po.base.TenantEntity;
import com.iformall.domain.vo.*;
import com.iformall.enums.EnumPayWay;
import com.iformall.service.order.entity.WxComposeOrder;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@@ -206,7 +207,7 @@ public interface WxCouponOrderService {
*/
JSONArray queryMicroPayCouponOrder(WxMerchantBUser user, WxCUserBasicInfo cUser, Integer price);

WxPayOrder microPayPreVerify(WxOrder microOrder, WxCouponOrder couponOrder, WxMerchantBUser bUser, Integer price, EnumPayWay payWay,String ipstr,String authCode);
WxPayOrder microPayPreVerify(WxComposeOrder composeOrder, WxCouponOrder couponOrder, WxMerchantBUser bUser, Integer price, EnumPayWay payWay,String ipstr,String authCode);

Integer microPayVerify(WxMerchantBUser bUser, Long couponOrderId,EnumPayWay payWay);



+ 34
- 10
mallinkService/src/main/java/com/iformall/service/impl/WxCouponOrderServiceImpl.java Vedi File

@@ -1,5 +1,6 @@
package com.iformall.service.impl;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
@@ -25,6 +26,12 @@ import com.iformall.mapper.*;
import com.iformall.mq.MqBaseProducer;
import com.iformall.pay.WxPayConstant;
import com.iformall.service.*;
import com.iformall.service.order.OrderAdapterService;
import com.iformall.service.order.OrderFactory;
import com.iformall.service.order.entity.WxComposeChildOrderPrice;
import com.iformall.service.order.entity.WxComposeChildOrderShare;
import com.iformall.service.order.entity.WxComposeOrder;
import com.iformall.service.order.util.OrderHelper;
import com.iformall.service.pay.PayServiceFactory;
import com.iformall.utils.Constant;
import com.iformall.utils.DateUtils;
@@ -152,6 +159,9 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService {
@Autowired
RedisLock redisLock;
@Autowired
OrderFactory orderFactory;

private final SimpleDateFormat mydateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

@@ -670,13 +680,13 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService {
wxSharingOrderDto.setType(EnumProfitSharingOrderType.PROFIT_SHARING_SINGLE.getCode());
}
wxSharingOrderDto.setPayAmount(wxPayOrder.getPayAmount());
wxSharingOrderDto.setRateAmount(wxPayOrder.getRateAmount());
wxSharingOrderDto.setRateAmount(wxPayOrder.getChildOrderShare(couponOrder.getOrderId()).getRateAmount());
wxSharingOrderDto.setOrderId(wxPayOrder.getId());
wxSharingOrderDto.setPayTimeStart(wxPayOrder.getPayTimeStart());
wxSharingOrderDto.setPayTimeEnd(wxPayOrder.getPayTimeEnd());
wxSharingOrderDto.updateTenantInfo(wxPayOrder);
wxSharingOrderDto.setTransactionId(wxPayOrder.getTransactionId());
wxSharingOrderDto.setShareAmount(wxPayOrder.getShareAmount());
wxSharingOrderDto.setShareAmount(wxPayOrder.getChildOrderShare(couponOrder.getOrderId()).getShareAmount());
wxProfitSharingOrderService.createSharingOrder(wxSharingOrderDto,payWay);
}
} catch (Exception e) {
@@ -1357,7 +1367,7 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService {

@Override
@Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class})
public WxPayOrder microPayPreVerify(WxOrder microOrder, WxCouponOrder couponOrder, WxMerchantBUser bUser, Integer payPrice, EnumPayWay payWay,String ipstr,String authCode) {
public WxPayOrder microPayPreVerify(WxComposeOrder composeOrder, WxCouponOrder couponOrder, WxMerchantBUser bUser, Integer payPrice, EnumPayWay payWay,String ipstr,String authCode) {
// 1. 获取券信息
WxCoupon wxCoupon = wxCouponMapper.selectById(couponOrder.getCouponId(),couponOrder.getTenantId());
if (wxCoupon == null) {
@@ -1406,7 +1416,7 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService {
PosCouponOrderVerify posCouponOrderVerify = new PosCouponOrderVerify();
posCouponOrderVerify.updateTenantInfo(couponOrder);
posCouponOrderVerify.setCouponOrderId(couponOrder.getId());
posCouponOrderVerify.setPosOrderId(microOrder.getId());
posCouponOrderVerify.setPosOrderId(composeOrder.getSingleOrder().getId());
posCouponOrderVerify.setOrderFrom(EnumOrderFrom.INSIDE.getCode());
posCouponOrderVerify.setState(EnumEnableType.Enable.getCode());
try {
@@ -1441,7 +1451,7 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService {
PosCouponOrderVerify posCouponOrderVerify = new PosCouponOrderVerify();
posCouponOrderVerify.updateTenantInfo(couponOrder);
posCouponOrderVerify.setCouponOrderId(couponOrder.getId());
posCouponOrderVerify.setPosOrderId(microOrder.getId());
posCouponOrderVerify.setPosOrderId(composeOrder.getSingleOrder().getId());
posCouponOrderVerify.setOrderFrom(EnumOrderFrom.INSIDE.getCode());
posCouponOrderVerify.setState(EnumEnableType.Enable.getCode());
try {
@@ -1481,9 +1491,9 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService {
WxPayOrder payOrder = new WxPayOrder();
Date curDate = new Date();
payOrder.setId(payOrderId);
payOrder.updateTenantInfo(microOrder);
payOrder.setCUserId(microOrder.getCUserId());
payOrder.setOrderId(microOrder.getId());
payOrder.updateTenantInfo(composeOrder.getSingleOrder());
payOrder.setCUserId(composeOrder.getSingleOrder().getCUserId());
payOrder.setOrderId(composeOrder.getSingleOrder().getId());
payOrder.setCreateTime(curDate);
payOrder.setUpdateTime(curDate);
payOrder.setPayTimeStart(curDate);
@@ -1491,7 +1501,7 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService {
payOrder.setPayOrderNo(String.valueOf(payOrderId));
payOrder.setIp(ipstr);
payOrder.setAuthCode(authCode);
Integer payAmount = microOrder.getPayment() - wxCoupon.getPrice();
Integer payAmount = composeOrder.getSingleOrder().getPayment() - wxCoupon.getPrice();
payOrder.setPayAmount(payAmount);
// if (microOrder.getPayment() > wxCoupon.getPrice()) {
// payOrder.setPayAmount(wxCoupon.getPrice());
@@ -1503,7 +1513,7 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService {
payOrder.setShare(shareCode);
if (shareCode.intValue() == EnumPayShare.YES.getCode().intValue()) {
// 分账金额
int iChargeFee = PayUtils.getPayRate(payAmount, payAccount.getRate(), false);
int iChargeFee = OrderHelper.getMallCharge(payAmount, payAccount);
Integer share_amount = payAmount - iChargeFee;
payOrder.setShareAmount(share_amount);
if(payAccount.getRealRate() != null) {
@@ -1513,6 +1523,20 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService {
if (share_amount <= 0) {
payOrder.setShare(EnumPayShare.NO.getCode());
}
//设置子订单分账金额
Map<String,WxComposeChildOrderShare> childShares = new HashMap<String,WxComposeChildOrderShare>();
OrderAdapterService orderAdapterService = orderFactory.getOrderAdapterService(composeOrder.getComposeOrderType());
List<WxOrder> orderList = orderAdapterService.getChildOrders(composeOrder, appInfo.getTenantId());
for (WxOrder o : orderList) {
WxCoupon coupon = wxCouponMapper.selectById(o.getProductId(), appInfo.getTenantId());
WxComposeChildOrderPrice price = orderAdapterService.getChildOrderPrice(coupon, false, o.getOrderGroupId(), o.getCouponNumber());
int orderMallCharge = OrderHelper.getMallCharge(price.getRealPayMent(), payAccount);
Integer orderShareAmount = price.getRealPayMent() - orderMallCharge;
Integer orderRateAmount = PayUtils.getPayRate(price.getRealPayMent(), payAccount.getRealRate(), true);
childShares.put(String.valueOf(o.getId()), new WxComposeChildOrderShare(price.getRealPayMent(), orderShareAmount, orderRateAmount));
}
payOrder.setChildOrderShare(JSON.toJSONString(childShares));
}
payOrder.setPayFrom(EnumPayFrom.INSIDE_B.getCode());
payOrder.setPosPayOrderId(couponOrder.getId());


+ 19
- 31
mallinkService/src/main/java/com/iformall/service/impl/WxOrderServiceImpl.java Vedi File

@@ -21,7 +21,10 @@ import com.iformall.enums.*;
import com.iformall.service.*;
import com.iformall.service.order.OrderAdapterService;
import com.iformall.service.order.OrderFactory;
import com.iformall.service.order.entity.WxComposeChildOrderPrice;
import com.iformall.service.order.entity.WxComposeChildOrderShare;
import com.iformall.service.order.entity.WxComposeOrder;
import com.iformall.service.order.util.OrderHelper;

import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
@@ -1111,22 +1114,19 @@ public class WxOrderServiceImpl implements WxOrderService {
cardInfo.setTransactionId(payOrder.getTransactionId());
if (payOrder.getShareAmount() != null) {
// 开启分账
fee = payOrder.getPayAmount() - payOrder.getShareAmount();
cardInfo.setShareFeeAmount(payOrder.getShareAmount());
cardInfo.setRemainingShareFeeAmount(payOrder.getShareAmount());
cardInfo.setRateAmount(payOrder.getRateAmount());
WxComposeChildOrderShare share = payOrder.getChildOrderShare(order.getId());
fee = share.getRealPayMent() - share.getShareAmount();
cardInfo.setShareFeeAmount(share.getShareAmount());
cardInfo.setRemainingShareFeeAmount(share.getShareAmount());
cardInfo.setRateAmount(share.getRateAmount());
} else {
// 未开启分账
fee = PayUtils.getPayRate(payOrder.getPayAmount(), payAccount.getRate(), false);
Integer shareAmount = payOrder.getPayAmount() - fee;
Integer orderRealPayMent = payOrder.getChildOrderShare(order.getId()).getRealPayMent();
fee = OrderHelper.getMallCharge(orderRealPayMent, payAccountQ);
Integer shareAmount = orderRealPayMent - fee;
cardInfo.setShareFeeAmount(shareAmount);
cardInfo.setRemainingShareFeeAmount(shareAmount);
if (payAccount.getRealRate() != null) {
int iRealChargeFee = PayUtils.getPayRate(payOrder.getPayAmount(), payAccount.getRealRate(), true);
if (fee > iRealChargeFee) {
cardInfo.setRateAmount(fee - iRealChargeFee);
}
}
cardInfo.setRateAmount(OrderHelper.getRateAmount(orderRealPayMent, fee, payAccountQ));
}
}
} else {
@@ -1749,13 +1749,13 @@ public class WxOrderServiceImpl implements WxOrderService {
sharingOrder.setMerchantId(wxMerchantBUser.getMerchantId());
sharingOrder.setType(EnumProfitSharingOrderType.PROFIT_SHARING_SINGLE.getCode());
sharingOrder.setPayAmount(wxPayOrder.getPayAmount());
sharingOrder.setRateAmount(wxPayOrder.getRateAmount());
sharingOrder.setRateAmount(wxPayOrder.getChildOrderShare(orderId).getRateAmount());
sharingOrder.setOrderId(wxPayOrder.getId());
sharingOrder.setPayTimeStart(wxPayOrder.getPayTimeStart());
sharingOrder.setPayTimeEnd(wxPayOrder.getPayTimeEnd());
sharingOrder.updateTenantInfo(wxPayOrder);
sharingOrder.setTransactionId(wxPayOrder.getTransactionId());
sharingOrder.setShareAmount(wxPayOrder.getShareAmount());
sharingOrder.setShareAmount(wxPayOrder.getChildOrderShare(orderId).getShareAmount());
ResultData resultData = wxProfitSharingOrderService.createSharingOrder(sharingOrder,payWay.getCode());
} else {
logger.error("微信分账: 未找到payorder or merchant at orderid-" + orderId);
@@ -2007,7 +2007,6 @@ public class WxOrderServiceImpl implements WxOrderService {
}
for (int j =0 ; j < totalOrderCount ; j ++) {
// 是否砍价
boolean isPress = orderdto.getSignleOrder().getPress() != null ? orderdto.getSignleOrder().getPress() : false;
WxOrder order = null;
if (checkCouponIsFree(orderdto.getWxCoupon())) {
// 免费券
@@ -2024,7 +2023,7 @@ public class WxOrderServiceImpl implements WxOrderService {
}
} else {
// 有价券
order = proxy.saveNoFreeOrderForCoupon(composeOrder,user, orderdto.getWxCoupon(),perCouponNumber, orderdto.getSignleOrder().getCouponChannelId(), isPress, orderdto.getSignleOrder().getOrderGroupId(), orderdto.getSignleOrder().getFormId());
order = proxy.saveNoFreeOrderForCoupon(composeOrder,user, orderdto.getWxCoupon(),perCouponNumber, orderdto.getSignleOrder().getCouponChannelId(), orderdto.getSignleOrder().isPressOrder(), orderdto.getSignleOrder().getOrderGroupId(), orderdto.getSignleOrder().getFormId());
}
}
@@ -2115,20 +2114,9 @@ public class WxOrderServiceImpl implements WxOrderService {
// 4. 保存订单
Long orderNumber;
// 4.1 券价格
int payment = coupon.getSalePrice()*couponNumber;
Integer orderStatus = EnumOrderStatus.ORDER_STATUS_PENDING_PAYMENT.getCode();
if (isPress || coupon.getType().equals(EnumCouponType.COUPON_PRESS.getCode())) {
// 砍价券 初始是全价即面额
payment = coupon.getPrice()*couponNumber;
}
if (coupon.getType().equals(EnumCouponType.COUPON_GROUP.getCode())) {
if (orderGroupId == null) {
// 拼团券 初始是全价即面额
payment = coupon.getPrice()*couponNumber;
} else {
orderStatus = EnumOrderStatus.ORDER_STATUS_COOPERATING_UNPAID.getCode();
}
}
WxComposeChildOrderPrice price = orderFactory.getOrderAdapterService(composeOrder.getComposeOrderType()).getChildOrderPrice(coupon, isPress, orderGroupId, couponNumber);
Integer orderStatus = OrderHelper.getOrderStatusWxCoupon(coupon, orderGroupId);

// 4.2 保存订单
WxOrder record = new WxOrder();
@@ -2136,7 +2124,7 @@ public class WxOrderServiceImpl implements WxOrderService {
record.setCouponChannelId(couponChannelId);
record.setOrderGroupId(orderGroupId);
record.setFormId(formId);
record.setPayment(payment);
record.setPayment(price.getRealPayMent());
record.setOrderStatus(orderStatus);
record.setComposeOrderId(composeOrder.getMainOrderId());
record.setComposeOrderType(composeOrder.getComposeOrderType());


+ 33
- 8
mallinkService/src/main/java/com/iformall/service/impl/WxPayOrderServiceImpl.java Vedi File

@@ -20,7 +20,10 @@ import com.iformall.service.*;
import com.iformall.service.helper.WxPayOrderServiceHelper;
import com.iformall.service.order.OrderAdapterService;
import com.iformall.service.order.OrderFactory;
import com.iformall.service.order.entity.WxComposeChildOrderPrice;
import com.iformall.service.order.entity.WxComposeChildOrderShare;
import com.iformall.service.order.entity.WxComposeOrder;
import com.iformall.service.order.util.OrderHelper;
import com.iformall.service.pay.PayServiceFactory;
import com.iformall.service.pay.entity.PayExtraParam;
import com.iformall.service.pay.service.pay.CDrivingPayService;
@@ -380,15 +383,23 @@ public class WxPayOrderServiceImpl implements WxPayOrderService {
record.setComposeOrder(composeOrder.getComposeOrderType());
if (isShare == EnumPayShare.YES) {
// 分账金额
int iChargeFee = PayUtils.getPayRate(record.getPayAmount(), payAccount.getRate(), false);
Integer share_amount = record.getPayAmount() - iChargeFee;
int mallCharge = OrderHelper.getMallCharge(record.getPayAmount(), payAccount);
Integer share_amount = record.getPayAmount() - mallCharge;
record.setShareAmount(share_amount);
if(payAccount.getRealRate() != null) {
int iRealChargeFee = PayUtils.getPayRate(record.getPayAmount(), payAccount.getRealRate(), true);
if(iChargeFee > iRealChargeFee) {
record.setRateAmount(iChargeFee - iRealChargeFee);
}
record.setRateAmount(OrderHelper.getRateAmount(record.getPayAmount(),mallCharge, payAccount));
//设置子订单分账金额
Map<String,WxComposeChildOrderShare> childShares = new HashMap<String,WxComposeChildOrderShare>();
OrderAdapterService orderAdapterService = orderFactory.getOrderAdapterService(composeOrder.getComposeOrderType());
List<WxOrder> orderList = orderAdapterService.getChildOrders(composeOrder, appInfo.getTenantId());
for (WxOrder o : orderList) {
WxCoupon coupon = wxCouponMapper.selectById(o.getProductId(), appInfo.getTenantId());
WxComposeChildOrderPrice price = orderAdapterService.getChildOrderPrice(coupon, false, o.getOrderGroupId(), o.getCouponNumber());
int orderMallCharge = OrderHelper.getMallCharge(price.getRealPayMent(), payAccount);
Integer orderShareAmount = price.getRealPayMent() - orderMallCharge;
Integer orderRateAmount = OrderHelper.getRateAmount(price.getRealPayMent(),orderMallCharge, payAccount);
childShares.put(String.valueOf(o.getId()), new WxComposeChildOrderShare(price.getRealPayMent(), orderShareAmount, orderRateAmount));
}
record.setChildOrderShare(JSON.toJSONString(childShares));
}
int sqlRow = wxPayOrderMapper.insert(record);
@@ -484,7 +495,7 @@ public class WxPayOrderServiceImpl implements WxPayOrderService {
record.setShare(isShare.getCode());
if (isShare == EnumPayShare.YES) {
// 分账金额
int iChargeFee = PayUtils.getPayRate(record.getPayAmount(), payAccount.getRate(), false);
int iChargeFee = OrderHelper.getMallCharge(record.getPayAmount(), payAccount);
Integer share_amount = record.getPayAmount() - iChargeFee;
record.setShareAmount(share_amount);
if(payAccount.getRealRate() != null) {
@@ -495,6 +506,20 @@ public class WxPayOrderServiceImpl implements WxPayOrderService {
isShare = EnumPayShare.NO;
record.setShare(isShare.getCode());
}
//设置子订单分账金额
Map<String,WxComposeChildOrderShare> childShares = new HashMap<String,WxComposeChildOrderShare>();
OrderAdapterService orderAdapterService = orderFactory.getOrderAdapterService(composeOrder.getComposeOrderType());
List<WxOrder> orderList = orderAdapterService.getChildOrders(composeOrder, appInfo.getTenantId());
for (WxOrder o : orderList) {
WxCoupon coupon = wxCouponMapper.selectById(o.getProductId(), appInfo.getTenantId());
WxComposeChildOrderPrice price = orderAdapterService.getChildOrderPrice(coupon, false, o.getOrderGroupId(), o.getCouponNumber());
int orderMallCharge = OrderHelper.getMallCharge(price.getRealPayMent(), payAccount);
Integer orderShareAmount = price.getRealPayMent() - orderMallCharge;
Integer orderRateAmount = PayUtils.getPayRate(price.getRealPayMent(), payAccount.getRealRate(), true);
childShares.put(String.valueOf(o.getId()), new WxComposeChildOrderShare(price.getRealPayMent(), orderShareAmount, orderRateAmount));
}
record.setChildOrderShare(JSON.toJSONString(childShares));
}

int sqlRow = wxPayOrderMapper.insert(record);


+ 14
- 0
mallinkService/src/main/java/com/iformall/service/order/OrderAdapterService.java Vedi File

@@ -8,6 +8,7 @@ import com.iformall.domain.po.WxCoupon;
import com.iformall.domain.po.WxOrder;
import com.iformall.domain.po.base.TenantEntity;
import com.iformall.enums.EnumPayWay;
import com.iformall.service.order.entity.WxComposeChildOrderPrice;
import com.iformall.service.order.entity.WxComposeOrder;

public interface OrderAdapterService {
@@ -24,6 +25,19 @@ public interface OrderAdapterService {
*/
boolean isOneNumberOneOrder(WxCoupon coupon);
/**
* 查询每一个订单的产品的真实支付价格及补贴
* @param coupon
* @return
*/
WxComposeChildOrderPrice getChildOrderPrice(WxCoupon coupon,boolean isPress,Long orderGroupId,Integer couponNumber);
/**
* 计算每一个子订单的补贴
* @return
*/
Integer calcuteChildOrderSubsidy();
/**
* 查询订单信息,单个模式查询WxOrder
* @param mainOrderId


+ 19
- 0
mallinkService/src/main/java/com/iformall/service/order/entity/WxComposeChildOrderPrice.java Vedi File

@@ -0,0 +1,19 @@
package com.iformall.service.order.entity;

import lombok.Data;

@Data
public class WxComposeChildOrderPrice {
public WxComposeChildOrderPrice(Integer productSinglePrice,Integer productNumber,Long productId) {
this.productSinglePrice = productSinglePrice;
this.productNumber = productNumber;
this.productId = productId;
this.realPayMent = productSinglePrice*productNumber;
}
private Integer realPayMent;//真实支付价格
private Integer productSinglePrice;//产品单价
private Integer productNumber;//产品数量
private Long productId;//产品编号
}

+ 24
- 0
mallinkService/src/main/java/com/iformall/service/order/entity/WxComposeChildOrderShare.java Vedi File

@@ -0,0 +1,24 @@
package com.iformall.service.order.entity;

import lombok.Data;

/**
* 子订单分账信息
* @author alascor
*
*/
@Data
public class WxComposeChildOrderShare {
public WxComposeChildOrderShare(Integer realPayMent,Integer shareAmount,Integer rateAmount) {
this.realPayMent = realPayMent;
this.shareAmount = shareAmount;
this.rateAmount = rateAmount;
}
private Integer realPayMent;
private Integer shareAmount;
private Integer rateAmount;
}

+ 15
- 1
mallinkService/src/main/java/com/iformall/service/order/impl/BatchOrderAdapterService.java Vedi File

@@ -22,6 +22,7 @@ import com.iformall.mapper.WxBatchOrderMapper;
import com.iformall.mapper.WxOrderMapper;
import com.iformall.service.WxOrderService;
import com.iformall.service.order.OrderAdapterService;
import com.iformall.service.order.entity.WxComposeChildOrderPrice;
import com.iformall.service.order.entity.WxComposeOrder;
import com.iformall.service.order.util.OrderHelper;

@@ -48,7 +49,8 @@ public class BatchOrderAdapterService implements OrderAdapterService {
int payment = 0;
for (OrderComposeSaveDto ocsd : orderSave) {
boolean isPress = ocsd.getSignleOrder().getPress() != null ? ocsd.getSignleOrder().getPress() : false;
payment = payment+OrderHelper.getCouponPayment(ocsd.getWxCoupon(), isPress, ocsd.getSignleOrder().getOrderGroupId(),ocsd.getCount());
WxComposeChildOrderPrice price = getChildOrderPrice(ocsd.getWxCoupon(), isPress, ocsd.getSignleOrder().getOrderGroupId(), ocsd.getCount());
payment = payment+price.getRealPayMent();
}
order.setPayment(payment);
order.setCreateDate(new Date());
@@ -104,5 +106,17 @@ public class BatchOrderAdapterService implements OrderAdapterService {
}
}

@Override
public WxComposeChildOrderPrice getChildOrderPrice(WxCoupon coupon,boolean isPress,Long orderGroupId,Integer couponNumber) {
Integer perPrice = OrderHelper.getCouponPerPayment(coupon, isPress, orderGroupId);
return new WxComposeChildOrderPrice(perPrice, couponNumber, coupon.getId());
}

@Override
public Integer calcuteChildOrderSubsidy() {
// TODO Auto-generated method stub
return null;
}
}

+ 13
- 6
mallinkService/src/main/java/com/iformall/service/order/impl/SingleOrderAdapterService.java Vedi File

@@ -1,26 +1,21 @@
package com.iformall.service.order.impl;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;

import com.iformall.common.IdWorker;
import com.iformall.domain.dto.OrderComposeSaveDto;
import com.iformall.domain.po.WxBatchOrder;
import com.iformall.domain.po.WxCUserBasicInfo;
import com.iformall.domain.po.WxCoupon;
import com.iformall.domain.po.WxOrder;
import com.iformall.domain.po.base.TenantEntity;
import com.iformall.enums.EnumComposeOrder;
import com.iformall.enums.EnumPayWay;
import com.iformall.mapper.WxBatchOrderMapper;
import com.iformall.mapper.WxOrderMapper;
import com.iformall.service.order.OrderAdapterService;
import com.iformall.service.order.entity.WxComposeChildOrderPrice;
import com.iformall.service.order.entity.WxComposeOrder;
import com.iformall.service.order.util.OrderHelper;

@@ -71,6 +66,18 @@ public class SingleOrderAdapterService implements OrderAdapterService {
wxOrderMapper.updateCUserId(order);
}

@Override
public WxComposeChildOrderPrice getChildOrderPrice(WxCoupon coupon, boolean isPress, Long orderGroupId,
Integer couponNumber) {
Integer perPrice = OrderHelper.getCouponPerPayment(coupon, isPress, orderGroupId);
return new WxComposeChildOrderPrice(perPrice, couponNumber, coupon.getId());
}

@Override
public Integer calcuteChildOrderSubsidy() {
return null;
}





+ 36
- 7
mallinkService/src/main/java/com/iformall/service/order/util/OrderHelper.java Vedi File

@@ -1,26 +1,55 @@
package com.iformall.service.order.util;

import com.iformall.domain.po.WxCoupon;
import com.iformall.domain.po.WxPayAccount;
import com.iformall.enums.EnumCouponType;
import com.iformall.enums.EnumOrderStatus;
import com.iformall.utils.PayUtils;

public class OrderHelper {

public static int getCouponPayment(WxCoupon coupon,boolean isPress,Long orderGroupId,int couponNumber) {
public static int getCouponPerPayment(WxCoupon coupon,boolean isPress,Long orderGroupId) {
// 4.1 券价格
int payment = coupon.getSalePrice()*couponNumber;
//Integer orderStatus = EnumOrderStatus.ORDER_STATUS_PENDING_PAYMENT.getCode();
int payment = coupon.getSalePrice();
if (isPress || coupon.getType().equals(EnumCouponType.COUPON_PRESS.getCode())) {
// 砍价券 初始是全价即面额
payment = coupon.getPrice()*couponNumber;
payment = coupon.getPrice();
}
if (coupon.getType().equals(EnumCouponType.COUPON_GROUP.getCode())) {
if (orderGroupId == null) {
// 拼团券 初始是全价即面额
payment = coupon.getPrice()*couponNumber;
} else {
//orderStatus = EnumOrderStatus.ORDER_STATUS_COOPERATING_UNPAID.getCode();
payment = coupon.getPrice();
}
}
return payment;
}
public static Integer getOrderStatusWxCoupon(WxCoupon coupon,Long orderGroupId) {
Integer orderStatus = EnumOrderStatus.ORDER_STATUS_PENDING_PAYMENT.getCode();
if (coupon.getType().equals(EnumCouponType.COUPON_GROUP.getCode())) {
if (orderGroupId == null) {
// 拼团券 初始是全价即面额
} else {
orderStatus = EnumOrderStatus.ORDER_STATUS_COOPERATING_UNPAID.getCode();
}
}
return orderStatus;
}
//分账金额,扣掉商场设置的手续费率
public static int getMallCharge(Integer payment,WxPayAccount payAccount) {
int iChargeFee = PayUtils.getPayRate(payment, payAccount.getRate(), false);
return iChargeFee;
}
//费率差,微信、支付宝交易的费率. iChargeFee:商场扣掉的手续费
public static Integer getRateAmount(Integer payment,int mallCharge, WxPayAccount payAccount) {
if(payAccount.getRealRate() != null) {
int iRealChargeFee = PayUtils.getPayRate(payment, payAccount.getRealRate(), true);
if(mallCharge > iRealChargeFee) {
return mallCharge - iRealChargeFee;
}
}
return null;
}
}

+ 3
- 1
mallinkService/src/main/resources/mapper/WxPayOrderMapper.xml Vedi File

@@ -30,6 +30,7 @@
<result column="pos_pay_order_no" jdbcType="INTEGER" property="posPayOrderNo"/>
<result column="pos_pay_des" jdbcType="INTEGER" property="posPayDes"/>
<result column="compose_order" jdbcType="INTEGER" property="composeOrder"/>
<result column="child_order_share" jdbcType="VARCHAR" property="childOrderShare"/>
</resultMap>

<sql id="allColumns">
@@ -37,7 +38,8 @@
`auth_code`,`ip`,`pay_amount`,`pay_time_start`,`pay_time_end`,
`prepay_id`,`transaction_id`,`pay_vendor`,`pay_order_no`,
`pay_order_status`,`share`,`share_amount`,`rate_amount`,`fail_reason`,
`pos_pay_order_id`,`pos_pay_order_time`,`pos_payment_type`,`pos_pay_order_no`,`pos_pay_des`,`compose_order`
`pos_pay_order_id`,`pos_pay_order_time`,`pos_payment_type`,`pos_pay_order_no`,`pos_pay_des`,`compose_order`,
`child_order_share`
</sql>

<sql id="dynamicWhereConditions">


Caricamento…
Annulla
Salva