| @@ -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 '子订单分账金额'; | |||
| @@ -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(); | |||
| // 更新实际支付金额 | |||
| @@ -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; | |||
| @@ -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()); | |||
| } | |||
| @@ -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; | |||
| } | |||
| } | |||
| @@ -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; | |||
| @@ -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") | |||
| @@ -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); | |||
| @@ -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()); | |||
| @@ -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()); | |||
| @@ -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); | |||
| @@ -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 | |||
| @@ -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.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; | |||
| } | |||
| } | |||
| @@ -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; | |||
| } | |||
| @@ -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; | |||
| } | |||
| } | |||
| @@ -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"> | |||