Browse Source

fix order

release_toaliyun_real
xiaohanzi 4 years ago
parent
commit
e89eeab87c
6 changed files with 38 additions and 36 deletions
  1. +1
    -1
      mallinkAdmin/src/main/java/com/iformall/controller/market/WxOrderController.java
  2. +1
    -1
      mallinkCApi/src/main/java/com/iformall/controller/WxCouponPasswordController.java
  3. +4
    -4
      mallinkCApi/src/main/java/com/iformall/controller/WxOrderController.java
  4. +4
    -4
      mallinkService/src/main/java/com/iformall/service/WxOrderService.java
  5. +1
    -1
      mallinkService/src/main/java/com/iformall/service/impl/WxGameServiceImpl.java
  6. +27
    -25
      mallinkService/src/main/java/com/iformall/service/impl/WxOrderServiceImpl.java

+ 1
- 1
mallinkAdmin/src/main/java/com/iformall/controller/market/WxOrderController.java View File

@@ -187,7 +187,7 @@ public class WxOrderController extends BaseController {
return new ResultData(ErrorCode.COUPON_IS_NOT_FREE);
}
// 免费券
order = wxOrderService.saveFreeOrderForCoupon(null,user, coupon, 1,
order = wxOrderService.saveFreeOrderForCoupon(false,null,user, coupon, 1,
orderSaveDto.getCouponChannelId(), orderSaveDto.getFormId(), null,EnumPayWay.PAY_WAY_NOT_UNPAY_CREDIT,
EnumOrderShopingType.ONLINE_PURCHASE.getCode(),null);
return new ResultData(order);


+ 1
- 1
mallinkCApi/src/main/java/com/iformall/controller/WxCouponPasswordController.java View File

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

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


+ 4
- 4
mallinkCApi/src/main/java/com/iformall/controller/WxOrderController.java View File

@@ -73,7 +73,7 @@ public class WxOrderController extends BaseController {
return new ResultData(Result.ERROR,e.getMessage());
}
return wxOrderService.composeSaveOrder(EnumComposeOrder.PACKAGECOUPON,orderSaveDto,memberId,EnumPayWay.PAY_WAY_WECHAT,getTenantInfo());
return wxOrderService.composeSaveOrder(false,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},]")
@@ -85,7 +85,7 @@ public class WxOrderController extends BaseController {
} 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());
return wxOrderService.composeSaveOrder(true,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},]")
@@ -97,7 +97,7 @@ public class WxOrderController extends BaseController {
} catch (Exception e) {
return new ResultData(Result.ERROR,e.getMessage());
}
return wxOrderService.composeSaveOrder(EnumComposeOrder.ONE_NUMBER_ORDER_BATCH,orderSaveDto,memberId,EnumPayWay.PAY_WAY_WECHAT,getTenantInfo());
return wxOrderService.composeSaveOrder(false,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\"}")
@@ -115,7 +115,7 @@ public class WxOrderController extends BaseController {
dto.setSignleOrder(orderSaveDto);
dto.setCount(1);
list.add(dto);
return wxOrderService.composeSaveOrder(EnumComposeOrder.SINGLE,list,memberId,EnumPayWay.PAY_WAY_WECHAT,getTenantInfo());
return wxOrderService.composeSaveOrder(false,EnumComposeOrder.SINGLE,list,memberId,EnumPayWay.PAY_WAY_WECHAT,getTenantInfo());
}
@ApiOperation(value = "取消订单", notes = "{\"orderId\":\"string\"}")


+ 4
- 4
mallinkService/src/main/java/com/iformall/service/WxOrderService.java View File

@@ -190,7 +190,7 @@ public interface WxOrderService {
* @param coupon
* @return
*/
WxComposeOrder saveOrderForCoupon(EnumComposeOrder composeOrderType,WxCUserBasicInfo user, List<OrderComposeSaveDto> orderSave,EnumPayWay payWay);
WxComposeOrder saveOrderForCoupon(boolean allowUnPayOrder,EnumComposeOrder composeOrderType,WxCUserBasicInfo user, List<OrderComposeSaveDto> orderSave,EnumPayWay payWay);
void sendOrderSuccessActionMsg(WxOrder updateOrder);

/**
@@ -209,12 +209,12 @@ public interface WxOrderService {
boolean checkCouponIsFree(WxCoupon coupon,Integer shippingType);

// 2. 创建免费订单, 领取 couponOrder
WxOrder saveFreeOrderForCoupon(WxComposeOrder composeOrder, WxCUserBasicInfo user, WxCoupon coupon, int couponNumber,
WxOrder saveFreeOrderForCoupon(boolean allowUnPayOrder,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,OrderComposeSaveDto orderdto);
WxOrder saveNoFreeOrderForCoupon(boolean allowUnPayOrder,WxComposeOrder composeOrder,WxCUserBasicInfo user, WxCoupon coupon,int couponNumber,OrderComposeSaveDto orderdto);

/**
* 下订单成功后处理
@@ -241,5 +241,5 @@ public interface WxOrderService {

//ResultData saveOrder(OrderSaveDto orderSaveDto,Long cUserId,EnumPayWay payWay,TenantEntity tenantEntity);
ResultData composeSaveOrder(EnumComposeOrder composeOrderType,List<OrderComposeSaveDto> composeOrderSaveDto,Long cUserId,EnumPayWay payWay,TenantEntity tenantEntity);
ResultData composeSaveOrder(boolean allowUnPayOrder,EnumComposeOrder composeOrderType,List<OrderComposeSaveDto> composeOrderSaveDto,Long cUserId,EnumPayWay payWay,TenantEntity tenantEntity);
}

+ 1
- 1
mallinkService/src/main/java/com/iformall/service/impl/WxGameServiceImpl.java View File

@@ -460,7 +460,7 @@ public class WxGameServiceImpl implements WxGameService {
ocsd.setSignleOrder(orderSaveDto);
ocsd.setCount(1);
orderSave.add(ocsd);
ResultData resultData1 = wxOrderService.composeSaveOrder(EnumComposeOrder.SINGLE,orderSave, userId, EnumPayWay.PAY_WAY_WECHAT, wxGame);
ResultData resultData1 = wxOrderService.composeSaveOrder(false,EnumComposeOrder.SINGLE,orderSave, userId, EnumPayWay.PAY_WAY_WECHAT, wxGame);

if(resultData1.code == Result.SUCCESS && resultData1.data != null && resultData1.data instanceof WxComposeOrder){
WxComposeOrder order = (WxComposeOrder)resultData1.data;


+ 27
- 25
mallinkService/src/main/java/com/iformall/service/impl/WxOrderServiceImpl.java View File

@@ -565,7 +565,7 @@ public class WxOrderServiceImpl implements WxOrderService {
* @param couponIdStr
*/
@Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class})
public void stockReduce(WxCUserBasicInfo user, WxCoupon coupon, String couponIdStr,int number) {
public void stockReduce(boolean allowUnPayOrder,WxCUserBasicInfo user, WxCoupon coupon, String couponIdStr,int number) {
//如果缓存中不存在这个key,则从coupon中取
if(!redisLock.hasCouponStockCache(coupon.getId())) {
//此处需要加锁,防止并发设置
@@ -606,16 +606,18 @@ public class WxOrderServiceImpl implements WxOrderService {
int count = 0;
// 有价券
if (coupon.getSalePrice() > 0) {
// 检查是否未支付订单
try {
count = getUserOrderCount(user, coupon);
} catch (Exception e) {
throw new MallinkException(ErrorCode.DB_FAIL.getCode(),"["+coupon.getTitle()+"]查询未支付订单失败.");
}
if (count > 0) {
logger.error("此券有未支付的订单, couponId: " + couponIdStr + ", count: " + count);
throw new MallinkException(ErrorCode.ORDER_UNPAID.getCode(),"["+coupon.getTitle()+"]您有未支付的订单.");
}
if (!allowUnPayOrder) {
// 检查是否未支付订单
try {
count = getUserOrderCount(user, coupon);
} catch (Exception e) {
throw new MallinkException(ErrorCode.DB_FAIL.getCode(),"["+coupon.getTitle()+"]查询未支付订单失败.");
}
if (count > 0) {
logger.error("此券有未支付的订单, couponId: " + couponIdStr + ", count: " + count);
throw new MallinkException(ErrorCode.ORDER_UNPAID.getCode(),"["+coupon.getTitle()+"]您有未支付的订单.");
}
}
}
//检查拼团中的数量
try {
@@ -1297,7 +1299,7 @@ public class WxOrderServiceImpl implements WxOrderService {
} else {
// 减库存操作
try {
stockReduce(user, coupon, couponIdStr,1);
stockReduce(false,user, coupon, couponIdStr,1);
}catch(Exception e) {
throw new MallinkException(ErrorCode.COUPON_STOCK_ERR.getCode(), e.getMessage());
}
@@ -1990,7 +1992,7 @@ public class WxOrderServiceImpl implements WxOrderService {

@Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class})
@Override
public WxComposeOrder saveOrderForCoupon(EnumComposeOrder composeOrderType,WxCUserBasicInfo user,List<OrderComposeSaveDto> orderSave,EnumPayWay payWay) {
public WxComposeOrder saveOrderForCoupon(boolean allowUnPayOrder,EnumComposeOrder composeOrderType,WxCUserBasicInfo user,List<OrderComposeSaveDto> orderSave,EnumPayWay payWay) {
WxOrderServiceImpl proxy = (WxOrderServiceImpl) AopContext.currentProxy();
// 防止同一用户重复下单,1秒内
String key = new StringBuilder().append("saveComposeOrder:").append(user.getId()).toString();
@@ -2011,10 +2013,10 @@ public class WxOrderServiceImpl implements WxOrderService {
boolean isOneNumberOneOrder = orderAdapterService.isOneNumberOneOrder();
if (isOneNumberOneOrder) {
for (int j = 0; j < orderdto.getCount(); j++) {
lastOrder = proxy.handleSaveOrderForCouponSingle(composeOrder, user, orderdto.getWxCoupon(), 1, orderdto, payWay);
lastOrder = proxy.handleSaveOrderForCouponSingle(allowUnPayOrder,composeOrder, user, orderdto.getWxCoupon(), 1, orderdto, payWay);
}
}else {
lastOrder = proxy.handleSaveOrderForCouponSingle(composeOrder, user, orderdto.getWxCoupon(), orderdto.getCount(), orderdto, payWay);
lastOrder = proxy.handleSaveOrderForCouponSingle(allowUnPayOrder,composeOrder, user, orderdto.getWxCoupon(), orderdto.getCount(), orderdto, payWay);
}
}
//如果没有orderId,则用lastOrder的信息
@@ -2025,13 +2027,13 @@ public class WxOrderServiceImpl implements WxOrderService {
}
@Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class})
public WxOrder handleSaveOrderForCouponSingle(WxComposeOrder composeOrder,WxCUserBasicInfo user,WxCoupon coupon,int perCouponNumber,OrderComposeSaveDto orderdto,EnumPayWay payWay) {
public WxOrder handleSaveOrderForCouponSingle(boolean allowUnPayOrder,WxComposeOrder composeOrder,WxCUserBasicInfo user,WxCoupon coupon,int perCouponNumber,OrderComposeSaveDto orderdto,EnumPayWay payWay) {
WxOrderServiceImpl proxy = (WxOrderServiceImpl) AopContext.currentProxy();
// 是否砍价
WxOrder order = null;
if (checkCouponIsFree(coupon,orderdto.getShippingType())) {
// 免费券
order = proxy.saveFreeOrderForCoupon(composeOrder,user, coupon,perCouponNumber,orderdto.getSignleOrder().getCouponChannelId(),
order = proxy.saveFreeOrderForCoupon(allowUnPayOrder,composeOrder,user, coupon,perCouponNumber,orderdto.getSignleOrder().getCouponChannelId(),
orderdto.getSignleOrder().getFormId(),null,payWay,orderdto.getShippingType(),orderdto.getAddress());
if (order != null) {
// 6. 下订单完成,发送内部消息
@@ -2045,7 +2047,7 @@ public class WxOrderServiceImpl implements WxOrderService {
}
} else {
// 有价券
order = proxy.saveNoFreeOrderForCoupon(composeOrder,user, orderdto.getWxCoupon(),perCouponNumber, orderdto);
order = proxy.saveNoFreeOrderForCoupon(allowUnPayOrder,composeOrder,user, orderdto.getWxCoupon(),perCouponNumber, orderdto);
}
// couponActionLog
// try {
@@ -2070,13 +2072,13 @@ public class WxOrderServiceImpl implements WxOrderService {

@Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class})
@Override
public WxOrder saveFreeOrderForCoupon(WxComposeOrder composeOrder,WxCUserBasicInfo user, WxCoupon coupon,int couponNumber,
public WxOrder saveFreeOrderForCoupon(boolean allowUnPayOrder,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());
proxy.stockReduce(user, coupon, couponIdStr,couponNumber);
proxy.stockReduce(allowUnPayOrder,user, coupon, couponIdStr,couponNumber);

// 当积分券或者积分停车券时 则进行积分支付
Integer orderType;
@@ -2131,11 +2133,11 @@ 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,OrderComposeSaveDto orderdto) {
public WxOrder saveNoFreeOrderForCoupon(boolean allowUnPayOrder,WxComposeOrder composeOrder,WxCUserBasicInfo user, WxCoupon coupon,int couponNumber,OrderComposeSaveDto orderdto) {
WxOrderServiceImpl proxy = (WxOrderServiceImpl) AopContext.currentProxy();
String couponIdStr = String.valueOf(coupon.getId());
// 3. 减库存操作
proxy.stockReduce(user, coupon, couponIdStr,couponNumber);
proxy.stockReduce(allowUnPayOrder,user, coupon, couponIdStr,couponNumber);

// 3. 当积分券或者积分停车券时 则进行积分支付
Integer orderType;
@@ -2210,7 +2212,7 @@ public class WxOrderServiceImpl implements WxOrderService {
}
// 2. 减库存操作
String couponIdStr = String.valueOf(coupon.getId());
stockReduce(user, coupon, couponIdStr,1);
stockReduce(false,user, coupon, couponIdStr,1);

// 3. 当积分券或者积分停车券时 则进行积分支付
Integer orderType;
@@ -2469,7 +2471,7 @@ public class WxOrderServiceImpl implements WxOrderService {


@Override
public ResultData composeSaveOrder(EnumComposeOrder composeOrderType,List<OrderComposeSaveDto> composeOrderSaveDto,Long cUserId,EnumPayWay payWay,TenantEntity tenantEntity) {
public ResultData composeSaveOrder(boolean allowUnPayOrder,EnumComposeOrder composeOrderType,List<OrderComposeSaveDto> composeOrderSaveDto,Long cUserId,EnumPayWay payWay,TenantEntity tenantEntity) {
try {
if (null == composeOrderSaveDto || composeOrderSaveDto.size() <= 0 ) {
return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(),"无商品信息");
@@ -2493,7 +2495,7 @@ public class WxOrderServiceImpl implements WxOrderService {
}
WxOrderServiceImpl proxy = (WxOrderServiceImpl) AopContext.currentProxy();
try {
WxComposeOrder order = proxy.saveOrderForCoupon(composeOrderType,wxCUserBasicInfo, composeOrderSaveDto, payWay);
WxComposeOrder order = proxy.saveOrderForCoupon(allowUnPayOrder,composeOrderType,wxCUserBasicInfo, composeOrderSaveDto, payWay);
return new ResultData(order);
} catch (MallinkException e) {
logger.error("saveOrderForCoupon error.",e);


Loading…
Cancel
Save