Преглед изворни кода

wx_order add ShopingType

release_toaliyun_real
xhxu пре 4 година
родитељ
комит
e8a68cafb3
7 измењених фајлова са 140 додато и 51 уклоњено
  1. +5
    -6
      mallinkAdmin/src/main/java/com/iformall/controller/market/WxOrderController.java
  2. +3
    -1
      mallinkCApi/src/main/java/com/iformall/controller/WxCouponPasswordController.java
  3. +5
    -0
      mallinkService/src/main/java/com/iformall/domain/dto/OrderComposeSaveDto.java
  4. +43
    -0
      mallinkService/src/main/java/com/iformall/enums/EnumOrderShopingStatus.java
  5. +39
    -0
      mallinkService/src/main/java/com/iformall/enums/EnumOrderShopingType.java
  6. +6
    -10
      mallinkService/src/main/java/com/iformall/service/WxOrderService.java
  7. +39
    -34
      mallinkService/src/main/java/com/iformall/service/impl/WxOrderServiceImpl.java

+ 5
- 6
mallinkAdmin/src/main/java/com/iformall/controller/market/WxOrderController.java Прегледај датотеку

@@ -15,10 +15,7 @@ import com.iformall.domain.po.WxOrder;
import com.iformall.domain.po.base.BaseEntity;
import com.iformall.domain.vo.WxMerchantSubsidyVo;
import com.iformall.domain.vo.WxOrderQueryVo;
import com.iformall.enums.EnumCouponChannelStatus;
import com.iformall.enums.EnumCouponChannelType;
import com.iformall.enums.EnumPayWay;
import com.iformall.enums.EnumUserType;
import com.iformall.enums.*;
import com.iformall.exception.MallinkException;
import com.iformall.service.WxCUserBasicInfoService;
import com.iformall.service.WxCUserService;
@@ -186,11 +183,13 @@ public class WxOrderController extends BaseController {
if (coupon == null) {
return new ResultData(ErrorCode.COUPON_IS_EMPTY);
}
if (!wxOrderService.checkCouponIsFree(coupon)) {
if (!wxOrderService.checkCouponIsFree(coupon,null)) {
return new ResultData(ErrorCode.COUPON_IS_NOT_FREE);
}
// 免费券
order = wxOrderService.saveFreeOrderForCoupon(null,user, coupon, 1,orderSaveDto.getCouponChannelId(), orderSaveDto.getFormId(), null,EnumPayWay.PAY_WAY_NOT_UNPAY_CREDIT);
order = wxOrderService.saveFreeOrderForCoupon(null,user, coupon, 1,
orderSaveDto.getCouponChannelId(), orderSaveDto.getFormId(), null,EnumPayWay.PAY_WAY_NOT_UNPAY_CREDIT,
EnumOrderShopingType.ONLINE_PURCHASE.getCode(),null);
return new ResultData(order);
} catch (MallinkException e) {
logger.error(e.getMessage());


+ 3
- 1
mallinkCApi/src/main/java/com/iformall/controller/WxCouponPasswordController.java Прегледај датотеку

@@ -97,7 +97,9 @@ public class WxCouponPasswordController extends BaseController {

// 3. 领取free coupon
try {
WxOrder order = orderService.saveFreeOrderForCoupon(null,member, coupon, 1,null, formId, couponPassword.getId(),payWay);
WxOrder order = orderService.saveFreeOrderForCoupon(null,member, coupon, 1,
null, formId, couponPassword.getId(),payWay,
EnumOrderShopingType.ONLINE_PURCHASE.getCode(),null);
} catch (MallinkException e) {
setCouponPasswordStatus(couponPassword, EnumCouponPasswordStatus.getEnum(pwdStatus));
logger.error(e.getMessage(),e);


+ 5
- 0
mallinkService/src/main/java/com/iformall/domain/dto/OrderComposeSaveDto.java Прегледај датотеку

@@ -1,5 +1,6 @@
package com.iformall.domain.dto;

import com.iformall.domain.po.UserBasicInfoAddress;
import lombok.Data;

import java.io.Serializable;
@@ -14,6 +15,10 @@ public class OrderComposeSaveDto implements Serializable {
OrderSaveDto signleOrder;//单个券/实物商品
int count;//购买数量

Integer shippingType = 0;//配送类型

UserBasicInfoAddress address;//配送地址
WxCoupon wxCoupon;



+ 43
- 0
mallinkService/src/main/java/com/iformall/enums/EnumOrderShopingStatus.java Прегледај датотеку

@@ -0,0 +1,43 @@
package com.iformall.enums;


/**
* @author gongbiao
*/

public enum EnumOrderShopingStatus {

ONLINE_PURCHASE(0,"线上购买"),//不需要发货

WAIT_SELF_MENTION(14,"已备货,待自提"),
ALREADY_SELF_MENTION(15,"已自提"),

WAIT_DISTRIBUTION(24,"已发货,待签收"),
ALREADY_DISTRIBUTION(25,"已签收")
;

public static EnumOrderShopingStatus getEnum(Integer code) {
for (EnumOrderShopingStatus value : values()) {
if (value.getCode().equals(code)) {
return value;
}
}
return null;
}

private Integer code;
private String message;

EnumOrderShopingStatus(Integer code, String message) {
this.code = code;
this.message = message;
}

public Integer getCode() {
return code;
}

public String getMessage() {
return message;
}
}

+ 39
- 0
mallinkService/src/main/java/com/iformall/enums/EnumOrderShopingType.java Прегледај датотеку

@@ -0,0 +1,39 @@
package com.iformall.enums;


/**
* @author gongbiao
*/

public enum EnumOrderShopingType {

ONLINE_PURCHASE(0,"线上购买"),
SELF_MENTION(1,"自提"),
DISTRIBUTION(2,"配送")
;

public static EnumOrderShopingType getEnum(Integer code) {
for (EnumOrderShopingType value : values()) {
if (value.getCode().equals(code)) {
return value;
}
}
return null;
}

private Integer code;
private String message;

EnumOrderShopingType(Integer code, String message) {
this.code = code;
this.message = message;
}

public Integer getCode() {
return code;
}

public String getMessage() {
return message;
}
}

+ 6
- 10
mallinkService/src/main/java/com/iformall/service/WxOrderService.java Прегледај датотеку

@@ -10,13 +10,7 @@ import com.github.pagehelper.PageInfo;
import com.iformall.common.ResultData;
import com.iformall.domain.dto.OrderComposeSaveDto;
import com.iformall.domain.dto.OrderSaveDto;
import com.iformall.domain.po.WxCUserBasicInfo;
import com.iformall.domain.po.WxBatchOrder;
import com.iformall.domain.po.WxCoupon;
import com.iformall.domain.po.WxCouponOrder;
import com.iformall.domain.po.WxMerchant;
import com.iformall.domain.po.WxMerchantBUser;
import com.iformall.domain.po.WxOrder;
import com.iformall.domain.po.*;
import com.iformall.domain.po.base.TenantEntity;
import com.iformall.domain.vo.WxCouponSendVo;
import com.iformall.domain.vo.WxOrderCouponPressVo;
@@ -212,13 +206,15 @@ public interface WxOrderService {
* 订单处理
* 1. 检查coupon是否免费
*/
boolean checkCouponIsFree(WxCoupon coupon);
boolean checkCouponIsFree(WxCoupon coupon,Integer shippingType);

// 2. 创建免费订单, 领取 couponOrder
WxOrder saveFreeOrderForCoupon(WxComposeOrder composeOrder,WxCUserBasicInfo user, WxCoupon coupon,int couponNumber, Long couponChannelId, String formId, Long couponPasswordId,EnumPayWay payWay);
WxOrder saveFreeOrderForCoupon(WxComposeOrder composeOrder, WxCUserBasicInfo user, WxCoupon coupon, int couponNumber,
Long couponChannelId, String formId, Long couponPasswordId, EnumPayWay payWay,
Integer shippingType, UserBasicInfoAddress address);

// 3. 创建有价订单
WxOrder saveNoFreeOrderForCoupon(WxComposeOrder composeOrder,WxCUserBasicInfo user, WxCoupon coupon,int couponNumber, Long couponChannelId, boolean isPress, Long orderGroupId, String formId);
WxOrder saveNoFreeOrderForCoupon(WxComposeOrder composeOrder,WxCUserBasicInfo user, WxCoupon coupon,int couponNumber,OrderComposeSaveDto orderdto);

/**
* 下订单成功后处理


+ 39
- 34
mallinkService/src/main/java/com/iformall/service/impl/WxOrderServiceImpl.java Прегледај датотеку

@@ -16,6 +16,7 @@ import java.util.stream.Collectors;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.iformall.domain.po.*;
import com.iformall.domain.vo.*;
import com.iformall.enums.*;
import com.iformall.service.*;
@@ -50,24 +51,6 @@ import com.iformall.common.ResultData;
import com.iformall.domain.dto.OrderComposeSaveDto;
import com.iformall.domain.dto.OrderSaveDto;
import com.iformall.domain.dto.WxSharingOrderDto;
import com.iformall.domain.po.WxAppinfo;
import com.iformall.domain.po.WxBatchOrder;
import com.iformall.domain.po.WxCUserBasicInfo;
import com.iformall.domain.po.WxCardInfo;
import com.iformall.domain.po.WxCoupon;
import com.iformall.domain.po.WxCouponChannel;
import com.iformall.domain.po.WxCouponMerchant;
import com.iformall.domain.po.WxCouponOrder;
import com.iformall.domain.po.WxCouponPassword;
import com.iformall.domain.po.WxCouponSend;
import com.iformall.domain.po.WxCreditHistory;
import com.iformall.domain.po.WxMerchant;
import com.iformall.domain.po.WxMerchantBUser;
import com.iformall.domain.po.WxOrder;
import com.iformall.domain.po.WxOrderGroup;
import com.iformall.domain.po.WxOrderPress;
import com.iformall.domain.po.WxPayAccount;
import com.iformall.domain.po.WxPayOrder;
import com.iformall.domain.po.base.TenantEntity;
import com.iformall.domain.po.msg.FmInsideOrderSuccessMsg;
import com.iformall.exception.MallinkException;
@@ -2028,9 +2011,12 @@ public class WxOrderServiceImpl implements WxOrderService {
WxOrderServiceImpl proxy = (WxOrderServiceImpl) AopContext.currentProxy();
// 是否砍价
WxOrder order = null;
if (checkCouponIsFree(coupon)) {
if (checkCouponIsFree(coupon,orderdto.getShippingType())) {
// 免费券
order = proxy.saveFreeOrderForCoupon(composeOrder,user, coupon,perCouponNumber, orderdto.getSignleOrder().getCouponChannelId(), orderdto.getSignleOrder().getFormId(), null,payWay);
order = proxy.saveFreeOrderForCoupon(composeOrder,user, coupon,perCouponNumber,
orderdto.getSignleOrder().getCouponChannelId(), orderdto.getSignleOrder().getFormId(),
null,payWay,
orderdto.getShippingType(),orderdto.getAddress());
if (order != null) {
// 6. 下订单完成,发送内部消息
// 下订单完成,发送内部消息
@@ -2043,7 +2029,7 @@ public class WxOrderServiceImpl implements WxOrderService {
}
} else {
// 有价券
order = proxy.saveNoFreeOrderForCoupon(composeOrder,user, orderdto.getWxCoupon(),perCouponNumber, orderdto.getSignleOrder().getCouponChannelId(), orderdto.getSignleOrder().isPressOrder(), orderdto.getSignleOrder().getOrderGroupId(), orderdto.getSignleOrder().getFormId());
order = proxy.saveNoFreeOrderForCoupon(composeOrder,user, orderdto.getWxCoupon(),perCouponNumber, orderdto);
}
// couponActionLog
// try {
@@ -2059,13 +2045,18 @@ public class WxOrderServiceImpl implements WxOrderService {
@Override
public boolean checkCouponIsFree(WxCoupon coupon) {
return coupon.getSalePrice() == 0;
public boolean checkCouponIsFree(WxCoupon coupon,Integer shippingType) {
if(EnumOrderShopingType.DISTRIBUTION.getCode().equals(shippingType)){
return coupon.getSalePrice().intValue() + coupon.getFreightPrice().intValue() == 0;
}
return coupon.getSalePrice().intValue() == 0;
}

@Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class})
@Override
public WxOrder saveFreeOrderForCoupon(WxComposeOrder composeOrder,WxCUserBasicInfo user, WxCoupon coupon,int couponNumber, Long couponChannelId, String formId, Long couponPasswordId,EnumPayWay payWay) {
public WxOrder saveFreeOrderForCoupon(WxComposeOrder composeOrder,WxCUserBasicInfo user, WxCoupon coupon,int couponNumber,
Long couponChannelId, String formId, Long couponPasswordId,EnumPayWay payWay,
Integer shippingType, UserBasicInfoAddress address) {
WxOrderServiceImpl proxy = (WxOrderServiceImpl) AopContext.currentProxy();
// 减库存操作
String couponIdStr = String.valueOf(coupon.getId());
@@ -2089,6 +2080,11 @@ public class WxOrderServiceImpl implements WxOrderService {
record.setPayment(0);
record.setFormId(formId);
record.setOrderGroupId(0L);

record.setShippingType(shippingType);
if(EnumOrderShopingType.DISTRIBUTION.getCode().equals(shippingType)){
record.setShippingAddress(JSON.toJSONString(address));
}
if (null != composeOrder) {
record.setComposeOrderId(composeOrder.getMainOrderId());
if (EnumComposeOrder.childOrderIsSingle(composeOrder.getComposeOrderType())) {
@@ -2120,7 +2116,7 @@ public class WxOrderServiceImpl implements WxOrderService {

@Override
@Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class})
public WxOrder saveNoFreeOrderForCoupon(WxComposeOrder composeOrder,WxCUserBasicInfo user, WxCoupon coupon,int couponNumber, Long couponChannelId, boolean isPress, Long orderGroupId, String formId) {
public WxOrder saveNoFreeOrderForCoupon(WxComposeOrder composeOrder,WxCUserBasicInfo user, WxCoupon coupon,int couponNumber,OrderComposeSaveDto orderdto) {
WxOrderServiceImpl proxy = (WxOrderServiceImpl) AopContext.currentProxy();
String couponIdStr = String.valueOf(coupon.getId());
// 3. 减库存操作
@@ -2138,17 +2134,26 @@ public class WxOrderServiceImpl implements WxOrderService {
// 4. 保存订单
Long orderNumber;
// 4.1 券价格
WxComposeChildOrderPrice price = orderFactory.getOrderAdapterService(composeOrder.getComposeOrderType()).getChildCouponOrderPrice(coupon, isPress, orderGroupId, couponNumber);
WxComposeChildOrderPrice price = orderFactory.getOrderAdapterService(composeOrder.getComposeOrderType())
.getChildCouponOrderPrice(coupon, orderdto.getSignleOrder().isPressOrder(), orderdto.getSignleOrder().getOrderGroupId(), couponNumber);
Integer orderStatus = OrderHelper.getOrderStatusWxCoupon(coupon, orderGroupId);
Integer orderStatus = OrderHelper.getOrderStatusWxCoupon(coupon, orderdto.getSignleOrder().getOrderGroupId());

// 4.2 保存订单
WxOrder record = new WxOrder();
record.setType(orderType);
record.setCouponChannelId(couponChannelId);
record.setOrderGroupId(orderGroupId);
record.setFormId(formId);
record.setPayment(price.getRealPayMent());
record.setCouponChannelId(orderdto.getSignleOrder().getCouponChannelId());
record.setOrderGroupId(orderdto.getSignleOrder().getOrderGroupId());
record.setFormId(orderdto.getSignleOrder().getFormId());

record.setPayment(price.getRealPayMent()+coupon.getFreightPrice());//加运费
record.setFreightPrice(coupon.getFreightPrice());

record.setShippingType(orderdto.getShippingType());
if(EnumOrderShopingType.DISTRIBUTION.getCode().equals(orderdto.getShippingType())){
record.setShippingAddress(JSON.toJSONString(orderdto.getAddress()));
}

record.setOrderStatus(orderStatus);
record.setComposeOrderId(composeOrder.getMainOrderId());
if (EnumComposeOrder.childOrderIsSingle(composeOrder.getComposeOrderType())) {
@@ -2159,13 +2164,13 @@ public class WxOrderServiceImpl implements WxOrderService {
record.setCouponNumber(couponNumber);
try {
orderNumber = proxy.saveNoFreeOrder(record, user, coupon, isPress);
orderNumber = proxy.saveNoFreeOrder(record, user, coupon, orderdto.getSignleOrder().isPressOrder());
} catch (Exception e) {
logger.error("保存订单:" + e.getMessage(),e);
throw new MallinkException(ErrorCode.ORDER_SAVE_ERR.getCode(),"["+coupon.getTitle()+"]订单保存错误,"+e.getMessage());
}

if (isPress) {
if (orderdto.getSignleOrder().isPressOrder()) {
// 5. 第一次砍价
try {
proxy.firstPress(record, user, coupon, orderNumber);
@@ -2590,7 +2595,7 @@ public class WxOrderServiceImpl implements WxOrderService {
}
}
if (!checkCouponIsFree(coupon)) {
if (!checkCouponIsFree(coupon,null)) {
// 有价,拼团检查
if (isOrderGroup(orderSaveDto.getOrderGroupId())) {
checkOrderGroup(wxCUserBasicInfo, orderSaveDto.getOrderGroupId(),coupon,premsg);


Loading…
Откажи
Сачувај