| @@ -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_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_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_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 '子订单分账金额'; | |||||
| @@ -9,6 +9,8 @@ import com.iformall.domain.po.*; | |||||
| import com.iformall.enums.*; | import com.iformall.enums.*; | ||||
| import com.iformall.exception.MallinkException; | import com.iformall.exception.MallinkException; | ||||
| import com.iformall.service.*; | import com.iformall.service.*; | ||||
| import com.iformall.service.order.OrderFactory; | |||||
| import com.iformall.service.order.entity.WxComposeOrder; | |||||
| import com.iformall.utils.IPUtil; | import com.iformall.utils.IPUtil; | ||||
| import io.swagger.annotations.Api; | import io.swagger.annotations.Api; | ||||
| import io.swagger.annotations.ApiImplicitParam; | import io.swagger.annotations.ApiImplicitParam; | ||||
| @@ -57,6 +59,9 @@ public class WxMicroPayController extends BaseController { | |||||
| @Autowired | @Autowired | ||||
| private WxCUserBasicInfoService wxCUserBasicInfoService; | private WxCUserBasicInfoService wxCUserBasicInfoService; | ||||
| @Autowired | |||||
| OrderFactory orderFactory; | |||||
| @ApiOperation(value = "付款码支付订单", notes = "params:{\"authCode\":\"String\",\"totalFee\":\"支付金额\"},\n" + | @ApiOperation(value = "付款码支付订单", notes = "params:{\"authCode\":\"String\",\"totalFee\":\"支付金额\"},\n" + | ||||
| "注意:\n" + | "注意:\n" + | ||||
| @@ -428,7 +433,8 @@ public class WxMicroPayController extends BaseController { | |||||
| return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL); | 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) { | if (microOrder == null) { | ||||
| return new ResultData(ErrorCode.ORDER_IS_NOT_FIND); | return new ResultData(ErrorCode.ORDER_IS_NOT_FIND); | ||||
| } | } | ||||
| @@ -449,7 +455,7 @@ public class WxMicroPayController extends BaseController { | |||||
| Integer remainPrice = payPrice; | Integer remainPrice = payPrice; | ||||
| if (wxCouponOrder != null) { | if (wxCouponOrder != null) { | ||||
| try { | 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 = microOrder.getPayment() - couponPayOrder.getPayAmount(); | ||||
| remainPrice = couponPayOrder.getPayAmount(); | remainPrice = couponPayOrder.getPayAmount(); | ||||
| // 更新实际支付金额 | // 更新实际支付金额 | ||||
| @@ -88,7 +88,7 @@ public class WxOrderController extends BaseController { | |||||
| return wxOrderService.composeSaveOrder(EnumComposeOrder.BATCH,orderSaveDto,memberId,EnumPayWay.PAY_WAY_WECHAT,getTenantInfo()); | 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") | @PostMapping("singleSave") | ||||
| public ResultData saveOrder(@RequestBody OrderSaveDto orderSaveDto) { | public ResultData saveOrder(@RequestBody OrderSaveDto orderSaveDto) { | ||||
| Long memberId; | Long memberId; | ||||
| @@ -180,12 +180,12 @@ public class CouponOrderExpiringSchedule { | |||||
| wxSharingOrderDto.setPayTimeEnd(wxPayOrder.getPayTimeEnd()); | wxSharingOrderDto.setPayTimeEnd(wxPayOrder.getPayTimeEnd()); | ||||
| wxSharingOrderDto.updateTenantInfo(wxPayOrder); | wxSharingOrderDto.updateTenantInfo(wxPayOrder); | ||||
| wxSharingOrderDto.setTransactionId(wxPayOrder.getTransactionId()); | 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 { | } else { | ||||
| // 未设置通道费差 | // 未设置通道费差 | ||||
| wxSharingOrderDto.setShareAmount(wxPayOrder.getShareAmount()); | |||||
| wxSharingOrderDto.setShareAmount(wxPayOrder.getChildOrderShare(co.getOrderId()).getShareAmount()); | |||||
| } | } | ||||
| wxProfitSharingOrderService.finishSharingOrder(wxSharingOrderDto,wxPayOrder.getPayVendor()); | wxProfitSharingOrderService.finishSharingOrder(wxSharingOrderDto,wxPayOrder.getPayVendor()); | ||||
| } | } | ||||
| @@ -21,5 +21,10 @@ public class OrderSaveDto implements Serializable { | |||||
| //被操作人的ID 供A端使用 | //被操作人的ID 供A端使用 | ||||
| private Long userId; | private Long userId; | ||||
| public boolean isPressOrder() { | |||||
| boolean isPress = this.getPress() != null ? this.getPress() : false; | |||||
| return isPress; | |||||
| } | |||||
| } | } | ||||
| @@ -97,12 +97,12 @@ public class WxOrder extends TenantEntity { | |||||
| @io.swagger.annotations.ApiModelProperty(value="组合订单编号",name="composeOrderId") | @io.swagger.annotations.ApiModelProperty(value="组合订单编号",name="composeOrderId") | ||||
| private Long composeOrderId; | private Long composeOrderId; | ||||
| @io.swagger.annotations.ApiModelProperty(value="组合订单编号",name="couponNumber") | |||||
| @io.swagger.annotations.ApiModelProperty(value="商品数量",name="couponNumber") | |||||
| private Integer couponNumber; | private Integer couponNumber; | ||||
| @io.swagger.annotations.ApiModelProperty(value="组合订单类型EnumComposeOrder",name="composeOrderType") | @io.swagger.annotations.ApiModelProperty(value="组合订单类型EnumComposeOrder",name="composeOrderType") | ||||
| private Integer composeOrderType; | private Integer composeOrderType; | ||||
| @TableField(exist = false) | @TableField(exist = false) | ||||
| protected List<Integer> statusS; | protected List<Integer> statusS; | ||||
| @@ -1,7 +1,11 @@ | |||||
| package com.iformall.domain.po; | package com.iformall.domain.po; | ||||
| import com.alibaba.fastjson.JSON; | |||||
| import com.alibaba.fastjson.JSONObject; | |||||
| import com.baomidou.mybatisplus.annotation.TableName; | import com.baomidou.mybatisplus.annotation.TableName; | ||||
| import com.iformall.domain.po.base.TenantEntity; | import com.iformall.domain.po.base.TenantEntity; | ||||
| import com.iformall.service.order.entity.WxComposeChildOrderShare; | |||||
| import lombok.Data; | import lombok.Data; | ||||
| import lombok.EqualsAndHashCode; | import lombok.EqualsAndHashCode; | ||||
| import lombok.ToString; | import lombok.ToString; | ||||
| @@ -52,6 +56,17 @@ public class WxPayOrder extends TenantEntity { | |||||
| private Integer shareAmount; | private Integer shareAmount; | ||||
| @io.swagger.annotations.ApiModelProperty(value="通道费差(购买时刻的通道费差,分账完结时使用)",name="rateAmount") | @io.swagger.annotations.ApiModelProperty(value="通道费差(购买时刻的通道费差,分账完结时使用)",name="rateAmount") | ||||
| private Integer 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") | @io.swagger.annotations.ApiModelProperty(value="支付失败原因",name="failReason") | ||||
| private String failReason; | private String failReason; | ||||
| @io.swagger.annotations.ApiModelProperty(value="支付后结果来源(0:callback, 1:query)",name="payEndFrom") | @io.swagger.annotations.ApiModelProperty(value="支付后结果来源(0:callback, 1:query)",name="payEndFrom") | ||||
| @@ -7,6 +7,7 @@ import com.iformall.domain.po.*; | |||||
| import com.iformall.domain.po.base.TenantEntity; | import com.iformall.domain.po.base.TenantEntity; | ||||
| import com.iformall.domain.vo.*; | import com.iformall.domain.vo.*; | ||||
| import com.iformall.enums.EnumPayWay; | import com.iformall.enums.EnumPayWay; | ||||
| import com.iformall.service.order.entity.WxComposeOrder; | |||||
| import javax.servlet.http.HttpServletRequest; | import javax.servlet.http.HttpServletRequest; | ||||
| import javax.servlet.http.HttpServletResponse; | import javax.servlet.http.HttpServletResponse; | ||||
| @@ -206,7 +207,7 @@ public interface WxCouponOrderService { | |||||
| */ | */ | ||||
| JSONArray queryMicroPayCouponOrder(WxMerchantBUser user, WxCUserBasicInfo cUser, Integer price); | 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); | Integer microPayVerify(WxMerchantBUser bUser, Long couponOrderId,EnumPayWay payWay); | ||||
| @@ -1,5 +1,6 @@ | |||||
| package com.iformall.service.impl; | package com.iformall.service.impl; | ||||
| import com.alibaba.fastjson.JSON; | |||||
| import com.alibaba.fastjson.JSONArray; | import com.alibaba.fastjson.JSONArray; | ||||
| import com.alibaba.fastjson.JSONObject; | import com.alibaba.fastjson.JSONObject; | ||||
| import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; | ||||
| @@ -25,6 +26,12 @@ import com.iformall.mapper.*; | |||||
| import com.iformall.mq.MqBaseProducer; | import com.iformall.mq.MqBaseProducer; | ||||
| import com.iformall.pay.WxPayConstant; | import com.iformall.pay.WxPayConstant; | ||||
| import com.iformall.service.*; | 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.service.pay.PayServiceFactory; | ||||
| import com.iformall.utils.Constant; | import com.iformall.utils.Constant; | ||||
| import com.iformall.utils.DateUtils; | import com.iformall.utils.DateUtils; | ||||
| @@ -152,6 +159,9 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService { | |||||
| @Autowired | @Autowired | ||||
| RedisLock redisLock; | RedisLock redisLock; | ||||
| @Autowired | |||||
| OrderFactory orderFactory; | |||||
| private final SimpleDateFormat mydateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); | 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.setType(EnumProfitSharingOrderType.PROFIT_SHARING_SINGLE.getCode()); | ||||
| } | } | ||||
| wxSharingOrderDto.setPayAmount(wxPayOrder.getPayAmount()); | wxSharingOrderDto.setPayAmount(wxPayOrder.getPayAmount()); | ||||
| wxSharingOrderDto.setRateAmount(wxPayOrder.getRateAmount()); | |||||
| wxSharingOrderDto.setRateAmount(wxPayOrder.getChildOrderShare(couponOrder.getOrderId()).getRateAmount()); | |||||
| wxSharingOrderDto.setOrderId(wxPayOrder.getId()); | wxSharingOrderDto.setOrderId(wxPayOrder.getId()); | ||||
| wxSharingOrderDto.setPayTimeStart(wxPayOrder.getPayTimeStart()); | wxSharingOrderDto.setPayTimeStart(wxPayOrder.getPayTimeStart()); | ||||
| wxSharingOrderDto.setPayTimeEnd(wxPayOrder.getPayTimeEnd()); | wxSharingOrderDto.setPayTimeEnd(wxPayOrder.getPayTimeEnd()); | ||||
| wxSharingOrderDto.updateTenantInfo(wxPayOrder); | wxSharingOrderDto.updateTenantInfo(wxPayOrder); | ||||
| wxSharingOrderDto.setTransactionId(wxPayOrder.getTransactionId()); | wxSharingOrderDto.setTransactionId(wxPayOrder.getTransactionId()); | ||||
| wxSharingOrderDto.setShareAmount(wxPayOrder.getShareAmount()); | |||||
| wxSharingOrderDto.setShareAmount(wxPayOrder.getChildOrderShare(couponOrder.getOrderId()).getShareAmount()); | |||||
| wxProfitSharingOrderService.createSharingOrder(wxSharingOrderDto,payWay); | wxProfitSharingOrderService.createSharingOrder(wxSharingOrderDto,payWay); | ||||
| } | } | ||||
| } catch (Exception e) { | } catch (Exception e) { | ||||
| @@ -1357,7 +1367,7 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService { | |||||
| @Override | @Override | ||||
| @Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class}) | @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. 获取券信息 | // 1. 获取券信息 | ||||
| WxCoupon wxCoupon = wxCouponMapper.selectById(couponOrder.getCouponId(),couponOrder.getTenantId()); | WxCoupon wxCoupon = wxCouponMapper.selectById(couponOrder.getCouponId(),couponOrder.getTenantId()); | ||||
| if (wxCoupon == null) { | if (wxCoupon == null) { | ||||
| @@ -1406,7 +1416,7 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService { | |||||
| PosCouponOrderVerify posCouponOrderVerify = new PosCouponOrderVerify(); | PosCouponOrderVerify posCouponOrderVerify = new PosCouponOrderVerify(); | ||||
| posCouponOrderVerify.updateTenantInfo(couponOrder); | posCouponOrderVerify.updateTenantInfo(couponOrder); | ||||
| posCouponOrderVerify.setCouponOrderId(couponOrder.getId()); | posCouponOrderVerify.setCouponOrderId(couponOrder.getId()); | ||||
| posCouponOrderVerify.setPosOrderId(microOrder.getId()); | |||||
| posCouponOrderVerify.setPosOrderId(composeOrder.getSingleOrder().getId()); | |||||
| posCouponOrderVerify.setOrderFrom(EnumOrderFrom.INSIDE.getCode()); | posCouponOrderVerify.setOrderFrom(EnumOrderFrom.INSIDE.getCode()); | ||||
| posCouponOrderVerify.setState(EnumEnableType.Enable.getCode()); | posCouponOrderVerify.setState(EnumEnableType.Enable.getCode()); | ||||
| try { | try { | ||||
| @@ -1441,7 +1451,7 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService { | |||||
| PosCouponOrderVerify posCouponOrderVerify = new PosCouponOrderVerify(); | PosCouponOrderVerify posCouponOrderVerify = new PosCouponOrderVerify(); | ||||
| posCouponOrderVerify.updateTenantInfo(couponOrder); | posCouponOrderVerify.updateTenantInfo(couponOrder); | ||||
| posCouponOrderVerify.setCouponOrderId(couponOrder.getId()); | posCouponOrderVerify.setCouponOrderId(couponOrder.getId()); | ||||
| posCouponOrderVerify.setPosOrderId(microOrder.getId()); | |||||
| posCouponOrderVerify.setPosOrderId(composeOrder.getSingleOrder().getId()); | |||||
| posCouponOrderVerify.setOrderFrom(EnumOrderFrom.INSIDE.getCode()); | posCouponOrderVerify.setOrderFrom(EnumOrderFrom.INSIDE.getCode()); | ||||
| posCouponOrderVerify.setState(EnumEnableType.Enable.getCode()); | posCouponOrderVerify.setState(EnumEnableType.Enable.getCode()); | ||||
| try { | try { | ||||
| @@ -1481,9 +1491,9 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService { | |||||
| WxPayOrder payOrder = new WxPayOrder(); | WxPayOrder payOrder = new WxPayOrder(); | ||||
| Date curDate = new Date(); | Date curDate = new Date(); | ||||
| payOrder.setId(payOrderId); | 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.setCreateTime(curDate); | ||||
| payOrder.setUpdateTime(curDate); | payOrder.setUpdateTime(curDate); | ||||
| payOrder.setPayTimeStart(curDate); | payOrder.setPayTimeStart(curDate); | ||||
| @@ -1491,7 +1501,7 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService { | |||||
| payOrder.setPayOrderNo(String.valueOf(payOrderId)); | payOrder.setPayOrderNo(String.valueOf(payOrderId)); | ||||
| payOrder.setIp(ipstr); | payOrder.setIp(ipstr); | ||||
| payOrder.setAuthCode(authCode); | payOrder.setAuthCode(authCode); | ||||
| Integer payAmount = microOrder.getPayment() - wxCoupon.getPrice(); | |||||
| Integer payAmount = composeOrder.getSingleOrder().getPayment() - wxCoupon.getPrice(); | |||||
| payOrder.setPayAmount(payAmount); | payOrder.setPayAmount(payAmount); | ||||
| // if (microOrder.getPayment() > wxCoupon.getPrice()) { | // if (microOrder.getPayment() > wxCoupon.getPrice()) { | ||||
| // payOrder.setPayAmount(wxCoupon.getPrice()); | // payOrder.setPayAmount(wxCoupon.getPrice()); | ||||
| @@ -1503,7 +1513,7 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService { | |||||
| payOrder.setShare(shareCode); | payOrder.setShare(shareCode); | ||||
| if (shareCode.intValue() == EnumPayShare.YES.getCode().intValue()) { | 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; | Integer share_amount = payAmount - iChargeFee; | ||||
| payOrder.setShareAmount(share_amount); | payOrder.setShareAmount(share_amount); | ||||
| if(payAccount.getRealRate() != null) { | if(payAccount.getRealRate() != null) { | ||||
| @@ -1513,6 +1523,20 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService { | |||||
| if (share_amount <= 0) { | if (share_amount <= 0) { | ||||
| payOrder.setShare(EnumPayShare.NO.getCode()); | 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.setPayFrom(EnumPayFrom.INSIDE_B.getCode()); | ||||
| payOrder.setPosPayOrderId(couponOrder.getId()); | payOrder.setPosPayOrderId(couponOrder.getId()); | ||||
| @@ -21,7 +21,10 @@ import com.iformall.enums.*; | |||||
| import com.iformall.service.*; | import com.iformall.service.*; | ||||
| import com.iformall.service.order.OrderAdapterService; | import com.iformall.service.order.OrderAdapterService; | ||||
| import com.iformall.service.order.OrderFactory; | 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.entity.WxComposeOrder; | ||||
| import com.iformall.service.order.util.OrderHelper; | |||||
| import org.apache.commons.lang3.StringUtils; | import org.apache.commons.lang3.StringUtils; | ||||
| import org.slf4j.Logger; | import org.slf4j.Logger; | ||||
| @@ -1111,22 +1114,19 @@ public class WxOrderServiceImpl implements WxOrderService { | |||||
| cardInfo.setTransactionId(payOrder.getTransactionId()); | cardInfo.setTransactionId(payOrder.getTransactionId()); | ||||
| if (payOrder.getShareAmount() != null) { | 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 { | } 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.setShareFeeAmount(shareAmount); | ||||
| cardInfo.setRemainingShareFeeAmount(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 { | } else { | ||||
| @@ -1749,13 +1749,13 @@ public class WxOrderServiceImpl implements WxOrderService { | |||||
| sharingOrder.setMerchantId(wxMerchantBUser.getMerchantId()); | sharingOrder.setMerchantId(wxMerchantBUser.getMerchantId()); | ||||
| sharingOrder.setType(EnumProfitSharingOrderType.PROFIT_SHARING_SINGLE.getCode()); | sharingOrder.setType(EnumProfitSharingOrderType.PROFIT_SHARING_SINGLE.getCode()); | ||||
| sharingOrder.setPayAmount(wxPayOrder.getPayAmount()); | sharingOrder.setPayAmount(wxPayOrder.getPayAmount()); | ||||
| sharingOrder.setRateAmount(wxPayOrder.getRateAmount()); | |||||
| sharingOrder.setRateAmount(wxPayOrder.getChildOrderShare(orderId).getRateAmount()); | |||||
| sharingOrder.setOrderId(wxPayOrder.getId()); | sharingOrder.setOrderId(wxPayOrder.getId()); | ||||
| sharingOrder.setPayTimeStart(wxPayOrder.getPayTimeStart()); | sharingOrder.setPayTimeStart(wxPayOrder.getPayTimeStart()); | ||||
| sharingOrder.setPayTimeEnd(wxPayOrder.getPayTimeEnd()); | sharingOrder.setPayTimeEnd(wxPayOrder.getPayTimeEnd()); | ||||
| sharingOrder.updateTenantInfo(wxPayOrder); | sharingOrder.updateTenantInfo(wxPayOrder); | ||||
| sharingOrder.setTransactionId(wxPayOrder.getTransactionId()); | sharingOrder.setTransactionId(wxPayOrder.getTransactionId()); | ||||
| sharingOrder.setShareAmount(wxPayOrder.getShareAmount()); | |||||
| sharingOrder.setShareAmount(wxPayOrder.getChildOrderShare(orderId).getShareAmount()); | |||||
| ResultData resultData = wxProfitSharingOrderService.createSharingOrder(sharingOrder,payWay.getCode()); | ResultData resultData = wxProfitSharingOrderService.createSharingOrder(sharingOrder,payWay.getCode()); | ||||
| } else { | } else { | ||||
| logger.error("微信分账: 未找到payorder or merchant at orderid-" + orderId); | logger.error("微信分账: 未找到payorder or merchant at orderid-" + orderId); | ||||
| @@ -2007,7 +2007,6 @@ public class WxOrderServiceImpl implements WxOrderService { | |||||
| } | } | ||||
| for (int j =0 ; j < totalOrderCount ; j ++) { | for (int j =0 ; j < totalOrderCount ; j ++) { | ||||
| // 是否砍价 | // 是否砍价 | ||||
| boolean isPress = orderdto.getSignleOrder().getPress() != null ? orderdto.getSignleOrder().getPress() : false; | |||||
| WxOrder order = null; | WxOrder order = null; | ||||
| if (checkCouponIsFree(orderdto.getWxCoupon())) { | if (checkCouponIsFree(orderdto.getWxCoupon())) { | ||||
| // 免费券 | // 免费券 | ||||
| @@ -2024,7 +2023,7 @@ public class WxOrderServiceImpl implements WxOrderService { | |||||
| } | } | ||||
| } else { | } 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. 保存订单 | // 4. 保存订单 | ||||
| Long orderNumber; | Long orderNumber; | ||||
| // 4.1 券价格 | // 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 保存订单 | // 4.2 保存订单 | ||||
| WxOrder record = new WxOrder(); | WxOrder record = new WxOrder(); | ||||
| @@ -2136,7 +2124,7 @@ public class WxOrderServiceImpl implements WxOrderService { | |||||
| record.setCouponChannelId(couponChannelId); | record.setCouponChannelId(couponChannelId); | ||||
| record.setOrderGroupId(orderGroupId); | record.setOrderGroupId(orderGroupId); | ||||
| record.setFormId(formId); | record.setFormId(formId); | ||||
| record.setPayment(payment); | |||||
| record.setPayment(price.getRealPayMent()); | |||||
| record.setOrderStatus(orderStatus); | record.setOrderStatus(orderStatus); | ||||
| record.setComposeOrderId(composeOrder.getMainOrderId()); | record.setComposeOrderId(composeOrder.getMainOrderId()); | ||||
| record.setComposeOrderType(composeOrder.getComposeOrderType()); | record.setComposeOrderType(composeOrder.getComposeOrderType()); | ||||
| @@ -20,7 +20,10 @@ import com.iformall.service.*; | |||||
| import com.iformall.service.helper.WxPayOrderServiceHelper; | import com.iformall.service.helper.WxPayOrderServiceHelper; | ||||
| import com.iformall.service.order.OrderAdapterService; | import com.iformall.service.order.OrderAdapterService; | ||||
| import com.iformall.service.order.OrderFactory; | 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.entity.WxComposeOrder; | ||||
| import com.iformall.service.order.util.OrderHelper; | |||||
| import com.iformall.service.pay.PayServiceFactory; | import com.iformall.service.pay.PayServiceFactory; | ||||
| import com.iformall.service.pay.entity.PayExtraParam; | import com.iformall.service.pay.entity.PayExtraParam; | ||||
| import com.iformall.service.pay.service.pay.CDrivingPayService; | import com.iformall.service.pay.service.pay.CDrivingPayService; | ||||
| @@ -380,15 +383,23 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { | |||||
| record.setComposeOrder(composeOrder.getComposeOrderType()); | record.setComposeOrder(composeOrder.getComposeOrderType()); | ||||
| if (isShare == EnumPayShare.YES) { | 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); | 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); | int sqlRow = wxPayOrderMapper.insert(record); | ||||
| @@ -484,7 +495,7 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { | |||||
| record.setShare(isShare.getCode()); | record.setShare(isShare.getCode()); | ||||
| if (isShare == EnumPayShare.YES) { | 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; | Integer share_amount = record.getPayAmount() - iChargeFee; | ||||
| record.setShareAmount(share_amount); | record.setShareAmount(share_amount); | ||||
| if(payAccount.getRealRate() != null) { | if(payAccount.getRealRate() != null) { | ||||
| @@ -495,6 +506,20 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { | |||||
| isShare = EnumPayShare.NO; | isShare = EnumPayShare.NO; | ||||
| record.setShare(isShare.getCode()); | 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); | int sqlRow = wxPayOrderMapper.insert(record); | ||||
| @@ -8,6 +8,7 @@ import com.iformall.domain.po.WxCoupon; | |||||
| import com.iformall.domain.po.WxOrder; | import com.iformall.domain.po.WxOrder; | ||||
| import com.iformall.domain.po.base.TenantEntity; | import com.iformall.domain.po.base.TenantEntity; | ||||
| import com.iformall.enums.EnumPayWay; | import com.iformall.enums.EnumPayWay; | ||||
| import com.iformall.service.order.entity.WxComposeChildOrderPrice; | |||||
| import com.iformall.service.order.entity.WxComposeOrder; | import com.iformall.service.order.entity.WxComposeOrder; | ||||
| public interface OrderAdapterService { | public interface OrderAdapterService { | ||||
| @@ -24,6 +25,19 @@ public interface OrderAdapterService { | |||||
| */ | */ | ||||
| boolean isOneNumberOneOrder(WxCoupon coupon); | boolean isOneNumberOneOrder(WxCoupon coupon); | ||||
| /** | |||||
| * 查询每一个订单的产品的真实支付价格及补贴 | |||||
| * @param coupon | |||||
| * @return | |||||
| */ | |||||
| WxComposeChildOrderPrice getChildOrderPrice(WxCoupon coupon,boolean isPress,Long orderGroupId,Integer couponNumber); | |||||
| /** | |||||
| * 计算每一个子订单的补贴 | |||||
| * @return | |||||
| */ | |||||
| Integer calcuteChildOrderSubsidy(); | |||||
| /** | /** | ||||
| * 查询订单信息,单个模式查询WxOrder | * 查询订单信息,单个模式查询WxOrder | ||||
| * @param mainOrderId | * @param mainOrderId | ||||
| @@ -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;//产品编号 | |||||
| } | |||||
| @@ -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; | |||||
| } | |||||
| @@ -22,6 +22,7 @@ import com.iformall.mapper.WxBatchOrderMapper; | |||||
| import com.iformall.mapper.WxOrderMapper; | import com.iformall.mapper.WxOrderMapper; | ||||
| import com.iformall.service.WxOrderService; | import com.iformall.service.WxOrderService; | ||||
| import com.iformall.service.order.OrderAdapterService; | 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.entity.WxComposeOrder; | ||||
| import com.iformall.service.order.util.OrderHelper; | import com.iformall.service.order.util.OrderHelper; | ||||
| @@ -48,7 +49,8 @@ public class BatchOrderAdapterService implements OrderAdapterService { | |||||
| int payment = 0; | int payment = 0; | ||||
| for (OrderComposeSaveDto ocsd : orderSave) { | for (OrderComposeSaveDto ocsd : orderSave) { | ||||
| boolean isPress = ocsd.getSignleOrder().getPress() != null ? ocsd.getSignleOrder().getPress() : false; | 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.setPayment(payment); | ||||
| order.setCreateDate(new Date()); | 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; | |||||
| } | |||||
| } | } | ||||
| @@ -1,26 +1,21 @@ | |||||
| package com.iformall.service.order.impl; | package com.iformall.service.order.impl; | ||||
| import java.util.ArrayList; | import java.util.ArrayList; | ||||
| import java.util.Date; | |||||
| import java.util.List; | import java.util.List; | ||||
| import org.springframework.beans.factory.annotation.Autowired; | import org.springframework.beans.factory.annotation.Autowired; | ||||
| import org.springframework.stereotype.Service; | import org.springframework.stereotype.Service; | ||||
| import org.springframework.transaction.annotation.Propagation; | import org.springframework.transaction.annotation.Propagation; | ||||
| import org.springframework.transaction.annotation.Transactional; | import org.springframework.transaction.annotation.Transactional; | ||||
| import com.iformall.common.IdWorker; | |||||
| import com.iformall.domain.dto.OrderComposeSaveDto; | import com.iformall.domain.dto.OrderComposeSaveDto; | ||||
| import com.iformall.domain.po.WxBatchOrder; | |||||
| import com.iformall.domain.po.WxCUserBasicInfo; | import com.iformall.domain.po.WxCUserBasicInfo; | ||||
| import com.iformall.domain.po.WxCoupon; | import com.iformall.domain.po.WxCoupon; | ||||
| import com.iformall.domain.po.WxOrder; | import com.iformall.domain.po.WxOrder; | ||||
| import com.iformall.domain.po.base.TenantEntity; | |||||
| import com.iformall.enums.EnumComposeOrder; | import com.iformall.enums.EnumComposeOrder; | ||||
| import com.iformall.enums.EnumPayWay; | import com.iformall.enums.EnumPayWay; | ||||
| import com.iformall.mapper.WxBatchOrderMapper; | |||||
| import com.iformall.mapper.WxOrderMapper; | import com.iformall.mapper.WxOrderMapper; | ||||
| import com.iformall.service.order.OrderAdapterService; | 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.entity.WxComposeOrder; | ||||
| import com.iformall.service.order.util.OrderHelper; | import com.iformall.service.order.util.OrderHelper; | ||||
| @@ -71,6 +66,18 @@ public class SingleOrderAdapterService implements OrderAdapterService { | |||||
| wxOrderMapper.updateCUserId(order); | 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; | |||||
| } | |||||
| @@ -1,26 +1,55 @@ | |||||
| package com.iformall.service.order.util; | package com.iformall.service.order.util; | ||||
| import com.iformall.domain.po.WxCoupon; | import com.iformall.domain.po.WxCoupon; | ||||
| import com.iformall.domain.po.WxPayAccount; | |||||
| import com.iformall.enums.EnumCouponType; | import com.iformall.enums.EnumCouponType; | ||||
| import com.iformall.enums.EnumOrderStatus; | |||||
| import com.iformall.utils.PayUtils; | |||||
| public class OrderHelper { | 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 券价格 | // 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())) { | 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 (coupon.getType().equals(EnumCouponType.COUPON_GROUP.getCode())) { | ||||
| if (orderGroupId == null) { | if (orderGroupId == null) { | ||||
| // 拼团券 初始是全价即面额 | // 拼团券 初始是全价即面额 | ||||
| payment = coupon.getPrice()*couponNumber; | |||||
| } else { | |||||
| //orderStatus = EnumOrderStatus.ORDER_STATUS_COOPERATING_UNPAID.getCode(); | |||||
| payment = coupon.getPrice(); | |||||
| } | } | ||||
| } | } | ||||
| return payment; | 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; | |||||
| } | |||||
| } | } | ||||
| @@ -30,6 +30,7 @@ | |||||
| <result column="pos_pay_order_no" jdbcType="INTEGER" property="posPayOrderNo"/> | <result column="pos_pay_order_no" jdbcType="INTEGER" property="posPayOrderNo"/> | ||||
| <result column="pos_pay_des" jdbcType="INTEGER" property="posPayDes"/> | <result column="pos_pay_des" jdbcType="INTEGER" property="posPayDes"/> | ||||
| <result column="compose_order" jdbcType="INTEGER" property="composeOrder"/> | <result column="compose_order" jdbcType="INTEGER" property="composeOrder"/> | ||||
| <result column="child_order_share" jdbcType="VARCHAR" property="childOrderShare"/> | |||||
| </resultMap> | </resultMap> | ||||
| <sql id="allColumns"> | <sql id="allColumns"> | ||||
| @@ -37,7 +38,8 @@ | |||||
| `auth_code`,`ip`,`pay_amount`,`pay_time_start`,`pay_time_end`, | `auth_code`,`ip`,`pay_amount`,`pay_time_start`,`pay_time_end`, | ||||
| `prepay_id`,`transaction_id`,`pay_vendor`,`pay_order_no`, | `prepay_id`,`transaction_id`,`pay_vendor`,`pay_order_no`, | ||||
| `pay_order_status`,`share`,`share_amount`,`rate_amount`,`fail_reason`, | `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> | ||||
| <sql id="dynamicWhereConditions"> | <sql id="dynamicWhereConditions"> | ||||