Просмотр исходного кода

fix order

release_toaliyun_real
xiaohanzi 4 лет назад
Родитель
Сommit
dc32421ac6
16 измененных файлов: 284 добавлений и 120 удалений
  1. +1
    -1
      mallinkAdmin/src/main/resources/db/migration/V202109070001__order.sql
  2. +16
    -4
      mallinkCApi/src/main/java/com/iformall/controller/WxOrderController.java
  3. +0
    -6
      mallinkService/src/main/java/com/iformall/domain/po/WxBatchOrder.java
  4. +0
    -11
      mallinkService/src/main/java/com/iformall/domain/po/WxCoupon.java
  5. +3
    -2
      mallinkService/src/main/java/com/iformall/enums/EnumComposeOrder.java
  6. +10
    -8
      mallinkService/src/main/java/com/iformall/service/impl/WxCouponOrderServiceImpl.java
  7. +43
    -43
      mallinkService/src/main/java/com/iformall/service/impl/WxOrderServiceImpl.java
  8. +3
    -3
      mallinkService/src/main/java/com/iformall/service/impl/WxPayOrderServiceImpl.java
  9. +1
    -1
      mallinkService/src/main/java/com/iformall/service/impl/WxRefundOrderServiceImpl.java
  10. +11
    -4
      mallinkService/src/main/java/com/iformall/service/order/OrderAdapterService.java
  11. +23
    -2
      mallinkService/src/main/java/com/iformall/service/order/OrderFactory.java
  12. +3
    -7
      mallinkService/src/main/java/com/iformall/service/order/impl/SingleOrderAdapterService.java
  13. +18
    -28
      mallinkService/src/main/java/com/iformall/service/order/impl/batch/BaseBatchOrderAdapterService.java
  14. +54
    -0
      mallinkService/src/main/java/com/iformall/service/order/impl/batch/CouponPackageOrderAdapterService.java
  15. +49
    -0
      mallinkService/src/main/java/com/iformall/service/order/impl/batch/MulityNumberOneOrderBatchOrderAdapterService.java
  16. +49
    -0
      mallinkService/src/main/java/com/iformall/service/order/impl/batch/OneNumberOneOrderBatchOrderAdapterService.java

+ 1
- 1
mallinkAdmin/src/main/resources/db/migration/V202109070001__order.sql Просмотреть файл

@@ -819,4 +819,4 @@ 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 '子订单分账金额';
ALTER TABLE wx_pay_order_99 ADD COLUMN `child_order_share` text COMMENT '子订单分账金额';

+ 16
- 4
mallinkCApi/src/main/java/com/iformall/controller/WxOrderController.java Просмотреть файл

@@ -75,17 +75,29 @@ public class WxOrderController extends BaseController {
return wxOrderService.composeSaveOrder(EnumComposeOrder.PACKAGECOUPON,orderSaveDto,memberId,EnumPayWay.PAY_WAY_WECHAT,getTenantInfo());
}
@ApiOperation(value = "商品购物车组合下单", notes = "[{\"signleOrder\":{\"couponChannelId\":\"String\",\"couponId\":\"String\",\"press\":\"String\",\"orderGroupId\":\"String\",\"formId\":\"String\"},\"count\":8},]")
@PostMapping("goodsShopCartSave")
public ResultData goodsShopCart(@RequestBody List<OrderComposeSaveDto> orderSaveDto) {
Long memberId;
try {
memberId = getMemberId();
} catch (Exception e) {
return new ResultData(Result.ERROR,e.getMessage());
}
return wxOrderService.composeSaveOrder(EnumComposeOrder.MULITY_NUMBER_ORDER_BATCH,orderSaveDto,memberId,EnumPayWay.PAY_WAY_WECHAT,getTenantInfo());
}

@ApiOperation(value = "多个券多个数量组合下订单(购物车组合)", notes = "[{\"signleOrder\":{\"couponChannelId\":\"String\",\"couponId\":\"String\",\"press\":\"String\",\"orderGroupId\":\"String\",\"formId\":\"String\"},\"count\":8},]")
@PostMapping("composeSave")
public ResultData composeSave(@RequestBody List<OrderComposeSaveDto> orderSaveDto) {
@ApiOperation(value = "券购物车组合下单", notes = "[{\"signleOrder\":{\"couponChannelId\":\"String\",\"couponId\":\"String\",\"press\":\"String\",\"orderGroupId\":\"String\",\"formId\":\"String\"},\"count\":8},]")
@PostMapping("couponShopCartSave")
public ResultData couponShopCartSave(@RequestBody List<OrderComposeSaveDto> orderSaveDto) {
Long memberId;
try {
memberId = getMemberId();
} catch (Exception e) {
return new ResultData(Result.ERROR,e.getMessage());
}
return wxOrderService.composeSaveOrder(EnumComposeOrder.BATCH,orderSaveDto,memberId,EnumPayWay.PAY_WAY_WECHAT,getTenantInfo());
return wxOrderService.composeSaveOrder(EnumComposeOrder.ONE_NUMBER_ORDER_BATCH,orderSaveDto,memberId,EnumPayWay.PAY_WAY_WECHAT,getTenantInfo());
}
@ApiOperation(value = "单个券单个订单,卡(分账导致无法批量下单)、拼团,砍价用", notes = "{\"couponChannelId\":\"String\",\"couponId\":\"String\",\"press\":\"String\",\"orderGroupId\":\"String\",\"formId\":\"String\"}")


+ 0
- 6
mallinkService/src/main/java/com/iformall/domain/po/WxBatchOrder.java Просмотреть файл

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

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.iformall.domain.po.base.TenantEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.ToString;
import java.util.Date;
import java.util.List;

@TableName(value = "wx_batch_order")
@Data
@@ -30,8 +28,4 @@ public class WxBatchOrder extends TenantEntity {
private Date createDate;
@io.swagger.annotations.ApiModelProperty(value="更新时间",name="updateDate")
private Date updateDate;
//返回给前端,跟之前的wxorder直接下单做区分
@TableField(exist = false)
private String composeOrderTag = "1";
}

+ 0
- 11
mallinkService/src/main/java/com/iformall/domain/po/WxCoupon.java Просмотреть файл

@@ -340,15 +340,4 @@ public class WxCoupon extends TenantEntity {
}
return false;
}
public boolean oneNumberOneOrder() {
if (type == null) {
return true;
}
if (type.intValue() == EnumCouponType.COUPON_DISTRIBUTION.getCode().intValue()) {
return false;
}
return true;
}

}

+ 3
- 2
mallinkService/src/main/java/com/iformall/enums/EnumComposeOrder.java Просмотреть файл

@@ -8,8 +8,9 @@ import com.iformall.domain.po.WxOrder;
public enum EnumComposeOrder {
SINGLE(0, "单个订单类型,如拼团,砍价"),
BATCH(1, "多券种组合订单类型"),
PACKAGECOUPON(2,"券包组合订单类型")
ONE_NUMBER_ORDER_BATCH(1, "购物车式组合下单,1个数量1个订单(针对同样产品)"),
MULITY_NUMBER_ORDER_BATCH(2,"购物车式组合下单,多个数量1个订单(针对同样产品)"),
PACKAGECOUPON(3,"券包订单类型")
;

public static EnumComposeOrder getEnum(Integer code) {


+ 10
- 8
mallinkService/src/main/java/com/iformall/service/impl/WxCouponOrderServiceImpl.java Просмотреть файл

@@ -569,8 +569,7 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService {
}
} else {
//如果是组合的,则为多次
if ((couponOrder.getComposeOrderType().intValue() == EnumComposeOrder.BATCH.getCode().intValue())
|| (couponOrder.getComposeOrderType().intValue() == EnumComposeOrder.PACKAGECOUPON.getCode().intValue())) {
if (EnumComposeOrder.isSingle(couponOrder.getComposeOrderType())) {
try {
// 核销分账
shareAfterVerify(couponOrder, bUser.getMerchantId(),couponOrder.getPayVendor(),true);
@@ -741,7 +740,8 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService {
WxAppinfo wxAppinfo = wxAppinfoService.getCAppInfo(couponOrder,EnumPayWay.getEnum(couponOrder.getPayVendor()));
WxPayAccount payAccount = wxPayAccountMapper.selectById(wxAppinfo.getPayId());

Integer subsidyNum = coupon.getSubsidyNum();
OrderAdapterService orderAdapterService = orderFactory.getOrderAdapterService(couponOrder.getComposeOrderType());
Integer subsidyNum = orderAdapterService.calcuteChildOrderSubsidy(coupon);
if (subsidyNum == null || subsidyNum.intValue() == 0) {
String parameter = couponMerchant.getParameter();
try {
@@ -765,11 +765,13 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService {
return;
}
// 新补贴入库
int iSubChargeFee = PayUtils.getPayRate(subsidyNum, payAccount.getRate(), false);
int iSubChargeFee = OrderHelper.getMallCharge(subsidyNum, payAccount);
Integer realSubsidyFee = subsidyNum - iSubChargeFee;

int iPriceChargeFee = PayUtils.getPayRate(coupon.getSalePrice(), payAccount.getRate(), false);
Integer realPayment = coupon.getSalePrice() - iPriceChargeFee;
WxOrder order = wxOrderMapper.selectById(couponOrder.getOrderId(), couponOrder.getTenantId());
WxComposeChildOrderPrice price = orderAdapterService.getChildOrderPrice(coupon, false, order.getOrderGroupId(), order.getCouponNumber());
int iPriceChargeFee = OrderHelper.getMallCharge(price.getRealPayMent(), payAccount);
Integer realPayment = price.getRealPayMent() - iPriceChargeFee;

WxMerchantSubsidy merchantSubsidy = new WxMerchantSubsidy();
merchantSubsidy.setId(idWorker.nextId());
@@ -779,8 +781,8 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService {
merchantSubsidy.setMerchantId(merchantId);
merchantSubsidy.setCouponOrderId(couponOrder.getId());
merchantSubsidy.setCouponType(couponOrder.getCouponType());
merchantSubsidy.setOrderPayment(coupon.getPrice());
merchantSubsidy.setReceiverPayment(coupon.getSalePrice());
merchantSubsidy.setOrderPayment(price.getRealPayMent());
merchantSubsidy.setReceiverPayment(price.getRealPayMent());
merchantSubsidy.setRealPayment(realPayment);
merchantSubsidy.setSubsidy(subsidyNum);
merchantSubsidy.setRealSubsidy(realSubsidyFee);


+ 43
- 43
mallinkService/src/main/java/com/iformall/service/impl/WxOrderServiceImpl.java Просмотреть файл

@@ -1995,54 +1995,54 @@ public class WxOrderServiceImpl implements WxOrderService {
WxComposeOrder composeOrder = orderAdapterService.createDBMainOrder(user, orderSave, payWay);
for (int i = 0 ; i < orderSave.size(); i ++) {
OrderComposeSaveDto orderdto = orderSave.get(i);
//券是一个数量一个订单, 实物是一个产品一个订单
int totalOrderCount = 1;
if (orderAdapterService.isOneNumberOneOrder(orderdto.getWxCoupon())) {
totalOrderCount = orderdto.getCount();
}
int perCouponNumber = 1;
if (totalOrderCount==1) {
perCouponNumber = orderdto.getCount();
}
for (int j =0 ; j < totalOrderCount ; j ++) {
// 是否砍价
WxOrder order = null;
if (checkCouponIsFree(orderdto.getWxCoupon())) {
// 免费券
order = proxy.saveFreeOrderForCoupon(composeOrder,user, orderdto.getWxCoupon(),perCouponNumber, orderdto.getSignleOrder().getCouponChannelId(), orderdto.getSignleOrder().getFormId(), null,payWay);
if (order != null) {
// 6. 下订单完成,发送内部消息
// 下订单完成,发送内部消息
try {
proxy.sendOrderSuccessActionMsg(order);
} catch (Exception e) {
logger.error("内部消息发送失败: " + e.getMessage(),e);
throw new MallinkException(ErrorCode.MSG_INSIDE_ERROR);
}
}
} else {
// 有价券
order = proxy.saveNoFreeOrderForCoupon(composeOrder,user, orderdto.getWxCoupon(),perCouponNumber, orderdto.getSignleOrder().getCouponChannelId(), orderdto.getSignleOrder().isPressOrder(), orderdto.getSignleOrder().getOrderGroupId(), orderdto.getSignleOrder().getFormId());
}
//券一个数量创建一个订单
boolean isOneNumberOneOrder = orderAdapterService.isOneNumberOneOrder();
if (isOneNumberOneOrder) {
for (int j = 0; j < orderdto.getCount(); j++) {
proxy.handleSaveOrderForCouponSingle(composeOrder, user, orderdto.getWxCoupon(), 1, orderdto, payWay);
}
}else {
proxy.handleSaveOrderForCouponSingle(composeOrder, user, orderdto.getWxCoupon(), orderdto.getCount(), orderdto, payWay);
}
// couponActionLog
// try {
// wxCouponActionLogService.addOne(order, order.getProductId(), order.getOrderNumber(), EnumCouponSendSendType.ACTIVE.getCode(), orderdto.getSignleOrder().getCouponChannelId(),0L);
// } catch (Exception e) {
// // 库存恢复
// stockBack(order);
// logger.error("保存订单:" + e.getMessage());
// throw new MallinkException(ErrorCode.ORDER_SAVE_ERR);
// }
}
return composeOrder;
}
@Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class})
public WxOrder handleSaveOrderForCouponSingle(WxComposeOrder composeOrder,WxCUserBasicInfo user,WxCoupon coupon,int perCouponNumber,OrderComposeSaveDto orderdto,EnumPayWay payWay) {
WxOrderServiceImpl proxy = (WxOrderServiceImpl) AopContext.currentProxy();
// 是否砍价
WxOrder order = null;
if (checkCouponIsFree(coupon)) {
// 免费券
order = proxy.saveFreeOrderForCoupon(composeOrder,user, coupon,perCouponNumber, orderdto.getSignleOrder().getCouponChannelId(), orderdto.getSignleOrder().getFormId(), null,payWay);
if (order != null) {
// 6. 下订单完成,发送内部消息
// 下订单完成,发送内部消息
try {
proxy.sendOrderSuccessActionMsg(order);
} catch (Exception e) {
logger.error("内部消息发送失败: " + e.getMessage(),e);
throw new MallinkException(ErrorCode.MSG_INSIDE_ERROR);
}
}
} else {
// 有价券
order = proxy.saveNoFreeOrderForCoupon(composeOrder,user, orderdto.getWxCoupon(),perCouponNumber, orderdto.getSignleOrder().getCouponChannelId(), orderdto.getSignleOrder().isPressOrder(), orderdto.getSignleOrder().getOrderGroupId(), orderdto.getSignleOrder().getFormId());
}
// couponActionLog
// try {
// wxCouponActionLogService.addOne(order, order.getProductId(), order.getOrderNumber(), EnumCouponSendSendType.ACTIVE.getCode(), orderdto.getSignleOrder().getCouponChannelId(),0L);
// } catch (Exception e) {
// // 库存恢复
// stockBack(order);
// logger.error("保存订单:" + e.getMessage());
// throw new MallinkException(ErrorCode.ORDER_SAVE_ERR);
// }
return order;
}
@Override
public boolean checkCouponIsFree(WxCoupon coupon) {
return coupon.getSalePrice() == 0;


+ 3
- 3
mallinkService/src/main/java/com/iformall/service/impl/WxPayOrderServiceImpl.java Просмотреть файл

@@ -155,9 +155,6 @@ public class WxPayOrderServiceImpl implements WxPayOrderService {
throw new MallinkException(ErrorCode.SYS_SERVER_ERROR.getCode(),e.getMessage());
}
}else {
if ( null == composeOrder) {
throw new MallinkException(ErrorCode.PAY_ORDER_ERROR.getCode(),"composeOrder is null.");
}
List<WxOrder> orderList = orderFactory.getOrderAdapterService(composeOrder.getComposeOrderType()).getChildOrders(composeOrder, oldRecord.getTenantId());
for (WxOrder o : orderList) {
try {
@@ -898,6 +895,9 @@ public class WxPayOrderServiceImpl implements WxPayOrderService {
logger.error(e.getMessage());
throw new MallinkException(ErrorCode.DB_FAIL.getCode(), "订单更新");
}
orderFactory.getOrderAdapterService(record.getComposeOrder()).doOthersAfterPaySuccess(order, record);
// 下订单完成,发送内部消息
try {
wxOrderService.sendOrderSuccessActionMsg(order);


+ 1
- 1
mallinkService/src/main/java/com/iformall/service/impl/WxRefundOrderServiceImpl.java Просмотреть файл

@@ -278,7 +278,7 @@ public class WxRefundOrderServiceImpl implements WxRefundOrderService {
record.setTransactionId(payOrder.getTransactionId());
record.setCUserId(payOrder.getCUserId());
record.setTotalFee(payOrder.getPayAmount());
record.setRefundFee(payOrder.getPayAmount());
record.setRefundFee(payOrder.getChildOrderShare(rOrder.getId()).getRealPayMent());
record.setRefundTimeStart(currentDate);
record.setRefundOrderStatus(EnumRefundStatus.REFUND_WAIT.getCode());
record.setRefundVendor(payOrder.getPayVendor());


+ 11
- 4
mallinkService/src/main/java/com/iformall/service/order/OrderAdapterService.java Просмотреть файл

@@ -6,7 +6,7 @@ import com.iformall.domain.dto.OrderComposeSaveDto;
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.domain.po.WxPayOrder;
import com.iformall.enums.EnumPayWay;
import com.iformall.service.order.entity.WxComposeChildOrderPrice;
import com.iformall.service.order.entity.WxComposeOrder;
@@ -23,10 +23,10 @@ public interface OrderAdapterService {
* 是否是一个数量一个订单。一个产品肯定是一个订单
* @return
*/
boolean isOneNumberOneOrder(WxCoupon coupon);
boolean isOneNumberOneOrder();
/**
* 查询每一个订单的产品的真实支付价格及补贴
* 查询每一个订单的产品的真实支付价格
* @param coupon
* @return
*/
@@ -36,7 +36,7 @@ public interface OrderAdapterService {
* 计算每一个子订单的补贴
* @return
*/
Integer calcuteChildOrderSubsidy();
Integer calcuteChildOrderSubsidy(WxCoupon coupon);
/**
* 查询订单信息,单个模式查询WxOrder
@@ -58,4 +58,11 @@ public interface OrderAdapterService {
* @param cUserId
*/
void updateChildOrdersCUserId(WxComposeOrder composeOrder,List<WxOrder> orderList,Long cUserId);
/**
* 支付成功后,对订单进行附加的操作。
* @param order
* @param record
*/
void doOthersAfterPaySuccess(WxOrder order,WxPayOrder record);
}

+ 23
- 2
mallinkService/src/main/java/com/iformall/service/order/OrderFactory.java Просмотреть файл

@@ -4,15 +4,36 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.iformall.enums.EnumComposeOrder;
import com.iformall.service.order.impl.BatchOrderAdapterService;
import com.iformall.service.order.impl.SingleOrderAdapterService;
import com.iformall.service.order.impl.batch.CouponPackageOrderAdapterService;
import com.iformall.service.order.impl.batch.MulityNumberOneOrderBatchOrderAdapterService;
import com.iformall.service.order.impl.batch.OneNumberOneOrderBatchOrderAdapterService;

@Service
public class OrderFactory {

@Autowired
BatchOrderAdapterService batchOrderAdapterService;
OneNumberOneOrderBatchOrderAdapterService oneNumberOneOrderBatchOrderAdapterService;
@Autowired
MulityNumberOneOrderBatchOrderAdapterService mulityNumberOneOrderBatchOrderAdapterService;
@Autowired
SingleOrderAdapterService singleOrderAdapterService;
@Autowired
CouponPackageOrderAdapterService couponPackageOrderAdapterService;
public OrderAdapterService getOrderAdapterService(Integer composeOrderType) {
if (composeOrderType.intValue() == EnumComposeOrder.SINGLE.getCode().intValue()) {
return singleOrderAdapterService;
}else if (composeOrderType.intValue() == EnumComposeOrder.ONE_NUMBER_ORDER_BATCH.getCode().intValue()) {
return oneNumberOneOrderBatchOrderAdapterService;
}else if (composeOrderType.intValue() == EnumComposeOrder.PACKAGECOUPON.getCode().intValue()) {
return couponPackageOrderAdapterService;
}else if (composeOrderType.intValue() == EnumComposeOrder.MULITY_NUMBER_ORDER_BATCH.getCode().intValue()) {
return mulityNumberOneOrderBatchOrderAdapterService;
}
return null;
}


+ 3
- 7
mallinkService/src/main/java/com/iformall/service/order/impl/SingleOrderAdapterService.java Просмотреть файл

@@ -38,7 +38,7 @@ public class SingleOrderAdapterService implements OrderAdapterService {
}
@Override
public boolean isOneNumberOneOrder(WxCoupon coupon) {
public boolean isOneNumberOneOrder() {
return true;
}

@@ -74,12 +74,8 @@ public class SingleOrderAdapterService implements OrderAdapterService {
}

@Override
public Integer calcuteChildOrderSubsidy() {
return null;
public Integer calcuteChildOrderSubsidy(WxCoupon coupon) {
return coupon.getSubsidyNum();
}




}

mallinkService/src/main/java/com/iformall/service/order/impl/BatchOrderAdapterService.java → mallinkService/src/main/java/com/iformall/service/order/impl/batch/BaseBatchOrderAdapterService.java Просмотреть файл

@@ -1,4 +1,4 @@
package com.iformall.service.order.impl;
package com.iformall.service.order.impl.batch;

import java.util.ArrayList;
import java.util.Date;
@@ -31,59 +31,55 @@ import com.iformall.service.order.util.OrderHelper;
* @author alascor
*
*/
@Service
public class BatchOrderAdapterService implements OrderAdapterService {
public abstract class BaseBatchOrderAdapterService implements OrderAdapterService {
@Autowired
WxBatchOrderMapper wxBatchOrderMapper;
@Autowired
WxOrderMapper wxOrderMapper;

@Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class})
@Override
public WxComposeOrder createDBMainOrder(WxCUserBasicInfo user,List<OrderComposeSaveDto> orderSave,EnumPayWay payWay) {
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());
}
@Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class})
protected WxComposeOrder createDBMainOrder(WxCUserBasicInfo user,List<OrderComposeSaveDto> orderSave,EnumPayWay payWay,EnumComposeOrder composeOrderType) {
WxBatchOrder order =new WxBatchOrder();
final IdWorker idWorker = IdWorker.get();
order.setId(idWorker.nextId());
order.setCUserId(user.getId());
int payment = 0;
for (OrderComposeSaveDto ocsd : orderSave) {
boolean isPress = ocsd.getSignleOrder().getPress() != null ? ocsd.getSignleOrder().getPress() : false;
boolean isPress = ocsd.getSignleOrder().isPressOrder();
WxComposeChildOrderPrice price = getChildOrderPrice(ocsd.getWxCoupon(), isPress, ocsd.getSignleOrder().getOrderGroupId(), ocsd.getCount());
payment = payment+price.getRealPayMent();
}
order.setPayment(payment);
order.setCreateDate(new Date());
wxBatchOrderMapper.insert(order);
return new WxComposeOrder(order.getId(),EnumComposeOrder.BATCH.getCode());
}

@Override
public boolean isOneNumberOneOrder(WxCoupon coupon) {
return coupon.oneNumberOneOrder();
return new WxComposeOrder(order.getId(),composeOrderType.getCode());
}

@Override
public WxComposeOrder getComposeOrder(Long mainOrderId, String tenantId) {
protected WxComposeOrder getComposeOrder(Long mainOrderId, String tenantId,EnumComposeOrder composeOrderType) {
WxBatchOrder order = wxBatchOrderMapper.selectById(mainOrderId, tenantId);
WxComposeOrder corder = new WxComposeOrder(order.getId(),EnumComposeOrder.BATCH.getCode());
WxComposeOrder corder = new WxComposeOrder(order.getId(),composeOrderType.getCode());
corder.setPayment(order.getPayment());
corder.setMainOrder(order);
return corder;
}

@Override
public List<WxOrder> getChildOrders(WxComposeOrder composeOrder, String tenantId) {
protected List<WxOrder> getChildOrders(WxComposeOrder composeOrder, String tenantId,EnumComposeOrder composeOrderType) {
WxOrder orderq = new WxOrder();
orderq.setComposeOrderId(composeOrder.getMainOrderId());
orderq.setComposeOrderType(EnumComposeOrder.BATCH.getCode());
orderq.setComposeOrderType(composeOrderType.getCode());
orderq.setTenantId(tenantId);
List<WxOrder> orderList = wxOrderMapper.findList(orderq);
return orderList;
}

@Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class})
@Override
public void updateChildOrdersCUserId(WxComposeOrder composeOrder,List<WxOrder> orderList, Long cUserId) {
if (null != cUserId) {
WxBatchOrder order = (WxBatchOrder) composeOrder.getMainOrder();
@@ -107,16 +103,10 @@ 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;
public Integer calcuteChildOrderSubsidy(WxCoupon coupon) {
return coupon.getSubsidyNum();
}
}

+ 54
- 0
mallinkService/src/main/java/com/iformall/service/order/impl/batch/CouponPackageOrderAdapterService.java Просмотреть файл

@@ -0,0 +1,54 @@
package com.iformall.service.order.impl.batch;

import java.util.List;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import com.iformall.domain.dto.OrderComposeSaveDto;
import com.iformall.domain.po.WxCUserBasicInfo;
import com.iformall.domain.po.WxCoupon;
import com.iformall.domain.po.WxOrder;
import com.iformall.domain.po.WxPayOrder;
import com.iformall.enums.EnumComposeOrder;
import com.iformall.enums.EnumPayWay;
import com.iformall.service.order.entity.WxComposeOrder;
/**
* 券包批量下单
* @author alascor
*
*/
@Service
public class CouponPackageOrderAdapterService extends BaseBatchOrderAdapterService {
@Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class})
@Override
public WxComposeOrder createDBMainOrder(WxCUserBasicInfo user,List<OrderComposeSaveDto> orderSave,EnumPayWay payWay) {
return super.createDBMainOrder(user, orderSave, payWay, EnumComposeOrder.PACKAGECOUPON);
}

@Override
public WxComposeOrder getComposeOrder(Long mainOrderId, String tenantId) {
return super.getComposeOrder(mainOrderId, tenantId, EnumComposeOrder.PACKAGECOUPON);
}

@Override
public List<WxOrder> getChildOrders(WxComposeOrder composeOrder, String tenantId) {
return super.getChildOrders(composeOrder, tenantId, EnumComposeOrder.PACKAGECOUPON);
}

@Override
public Integer calcuteChildOrderSubsidy(WxCoupon coupon) {
return coupon.getSubsidyNum();
}

@Override
public boolean isOneNumberOneOrder() {
return true;
}

@Override
public void doOthersAfterPaySuccess(WxOrder order, WxPayOrder record) {
//手动核销发券
}
}

+ 49
- 0
mallinkService/src/main/java/com/iformall/service/order/impl/batch/MulityNumberOneOrderBatchOrderAdapterService.java Просмотреть файл

@@ -0,0 +1,49 @@
package com.iformall.service.order.impl.batch;


import java.util.List;

import org.springframework.stereotype.Service;

import com.iformall.domain.dto.OrderComposeSaveDto;
import com.iformall.domain.po.WxCUserBasicInfo;
import com.iformall.domain.po.WxOrder;
import com.iformall.domain.po.WxPayOrder;
import com.iformall.enums.EnumComposeOrder;
import com.iformall.enums.EnumPayWay;
import com.iformall.service.order.entity.WxComposeOrder;
/**
* 购物车批量下单
* @author alascor
*
*/
@Service
public class MulityNumberOneOrderBatchOrderAdapterService extends BaseBatchOrderAdapterService {
@Override
public boolean isOneNumberOneOrder() {
return false;
}

@Override
public WxComposeOrder createDBMainOrder(WxCUserBasicInfo user, List<OrderComposeSaveDto> orderSave,
EnumPayWay payWay) {
return super.createDBMainOrder(user, orderSave, payWay, EnumComposeOrder.MULITY_NUMBER_ORDER_BATCH);
}

@Override
public WxComposeOrder getComposeOrder(Long mainOrderId, String tenantId) {
return super.getComposeOrder(mainOrderId, tenantId, EnumComposeOrder.MULITY_NUMBER_ORDER_BATCH);
}

@Override
public List<WxOrder> getChildOrders(WxComposeOrder composeOrder, String tenantId) {
return super.getChildOrders(composeOrder, tenantId, EnumComposeOrder.MULITY_NUMBER_ORDER_BATCH);
}

@Override
public void doOthersAfterPaySuccess(WxOrder order, WxPayOrder record) {
}
}

+ 49
- 0
mallinkService/src/main/java/com/iformall/service/order/impl/batch/OneNumberOneOrderBatchOrderAdapterService.java Просмотреть файл

@@ -0,0 +1,49 @@
package com.iformall.service.order.impl.batch;

import java.util.List;

import org.springframework.stereotype.Service;

import com.iformall.domain.dto.OrderComposeSaveDto;
import com.iformall.domain.po.WxCUserBasicInfo;
import com.iformall.domain.po.WxOrder;
import com.iformall.domain.po.WxPayOrder;
import com.iformall.enums.EnumComposeOrder;
import com.iformall.enums.EnumPayWay;
import com.iformall.service.order.entity.WxComposeOrder;

/**
* 购物车批量下单
* @author alascor
*
*/
@Service
public class OneNumberOneOrderBatchOrderAdapterService extends BaseBatchOrderAdapterService {
@Override
public boolean isOneNumberOneOrder() {
return true;
}

@Override
public WxComposeOrder createDBMainOrder(WxCUserBasicInfo user, List<OrderComposeSaveDto> orderSave,
EnumPayWay payWay) {
return super.createDBMainOrder(user, orderSave, payWay, EnumComposeOrder.ONE_NUMBER_ORDER_BATCH);
}

@Override
public WxComposeOrder getComposeOrder(Long mainOrderId, String tenantId) {
return super.getComposeOrder(mainOrderId, tenantId, EnumComposeOrder.ONE_NUMBER_ORDER_BATCH);
}

@Override
public List<WxOrder> getChildOrders(WxComposeOrder composeOrder, String tenantId) {
return super.getChildOrders(composeOrder, tenantId, EnumComposeOrder.ONE_NUMBER_ORDER_BATCH);
}

@Override
public void doOthersAfterPaySuccess(WxOrder order, WxPayOrder record) {
}
}

Загрузка…
Отмена
Сохранить