Browse Source

Merge branch 'release_toaliyun_real_20230228' of https://git.malls.iformall.com/server/formallProject into release_toaliyun_real_20230228

release_toaliyun_real
xhxu 3 years ago
parent
commit
0089c7ccfb
5 changed files with 29 additions and 30 deletions
  1. +4
    -8
      mallinkBApi/src/main/java/com/iformall/controller/WxCardPayController.java
  2. +1
    -1
      mallinkCApi/src/main/java/com/iformall/controller/WxCardPayController.java
  3. +1
    -1
      mallinkService/src/main/java/com/iformall/service/WxCardSpendService.java
  4. +22
    -3
      mallinkService/src/main/java/com/iformall/service/impl/WxCardInfoServiceImpl.java
  5. +1
    -17
      mallinkService/src/main/java/com/iformall/service/impl/WxCardSpendServiceImpl.java

+ 4
- 8
mallinkBApi/src/main/java/com/iformall/controller/WxCardPayController.java View File

@@ -171,7 +171,7 @@ public class WxCardPayController extends BaseController {
logger.error("卡不存在: " + cardIdStr); logger.error("卡不存在: " + cardIdStr);
return new ResultData(ErrorCode.CARD_IS_NOT_FOUND); return new ResultData(ErrorCode.CARD_IS_NOT_FOUND);
} }
return saveCardPayOrder(false,cUserId,cardInfo,merchantBUser,totalFeeStr,EnumPayWay.PAY_WAY_WECHAT);
return saveCardPayOrder(cUserId,cardInfo,merchantBUser,totalFeeStr,EnumPayWay.PAY_WAY_WECHAT);
} }
public ResultData savePasswordCardPayOrder(String cardIdStr,String totalFeeStr) { public ResultData savePasswordCardPayOrder(String cardIdStr,String totalFeeStr) {
@@ -203,10 +203,10 @@ public class WxCardPayController extends BaseController {
} }
WxCardInfo carInfo = wxCardInfoService.cardCreateByOffline(couponPassword, coupon); WxCardInfo carInfo = wxCardInfoService.cardCreateByOffline(couponPassword, coupon);
return saveCardPayOrder(true,Constant.defaultCUserId,carInfo,merchantBUser,totalFeeStr,EnumPayWay.PAY_WAY_WECHAT);
return saveCardPayOrder(Constant.defaultCUserId,carInfo,merchantBUser,totalFeeStr,EnumPayWay.PAY_WAY_WECHAT);
} }


private ResultData saveCardPayOrder(boolean reduceStock,Long cUserId,WxCardInfo cardInfo,WxMerchantBUser merchantBUser,String totalFeeStr,EnumPayWay payWay) {
private ResultData saveCardPayOrder(Long cUserId,WxCardInfo cardInfo,WxMerchantBUser merchantBUser,String totalFeeStr,EnumPayWay payWay) {
if (EnumCardInfoStatus.STOP.getCode().intValue() == cardInfo.getStatus().intValue()) { if (EnumCardInfoStatus.STOP.getCode().intValue() == cardInfo.getStatus().intValue()) {
return new ResultData(ErrorCode.CARD_IS_NOT_FOUND.getCode(),"卡已被禁用."); return new ResultData(ErrorCode.CARD_IS_NOT_FOUND.getCode(),"卡已被禁用.");
@@ -279,12 +279,8 @@ public class WxCardPayController extends BaseController {
record.setRemark("操作于["+payWay.getMessage()+"("+payWay.getCode()+")]"); record.setRemark("操作于["+payWay.getMessage()+"("+payWay.getCode()+")]");
Integer couponNumber = null; Integer couponNumber = null;
if (reduceStock) {
couponNumber = 1;
}
try { try {
return wxCardSpendService.createCardSpend(record, order, couponMerchant,couponNumber,payWay);
return wxCardSpendService.createCardSpend(record, order, couponMerchant,payWay);
} catch (MallinkException e) { } catch (MallinkException e) {
logger.error("card spend error, req 2: " + record.toString() + ", e:" + e.getMessage()); logger.error("card spend error, req 2: " + record.toString() + ", e:" + e.getMessage());
return new ResultData(e.getErrorCode(), e.getMessage()); return new ResultData(e.getErrorCode(), e.getMessage());


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

@@ -188,7 +188,7 @@ public class WxCardPayController extends BaseController {
record.setRemark("操作于["+payWay.getMessage()+"("+payWay.getCode()+")]"); record.setRemark("操作于["+payWay.getMessage()+"("+payWay.getCode()+")]");


try { try {
return wxCardSpendService.createCardSpend(record, order, couponMerchant,null,payWay);
return wxCardSpendService.createCardSpend(record, order, couponMerchant,payWay);
} catch (MallinkException e) { } catch (MallinkException e) {
logger.error("card spend error, req 2: " + record.toString() + ", e:" + e.getMessage()); logger.error("card spend error, req 2: " + record.toString() + ", e:" + e.getMessage());
return new ResultData(e.getErrorCode(), e.getMessage()); return new ResultData(e.getErrorCode(), e.getMessage());


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

@@ -28,7 +28,7 @@ public interface WxCardSpendService {
* @param order * @param order
* @return * @return
*/ */
ResultData createCardSpend(WxCardSpend record, WxOrder order, WxCouponMerchant couponMerchant,Integer reduceCouponNumber,EnumPayWay payWay);
ResultData createCardSpend(WxCardSpend record, WxOrder order, WxCouponMerchant couponMerchant,EnumPayWay payWay);


/** /**
* 根据实体查询分页列表 * 根据实体查询分页列表


+ 22
- 3
mallinkService/src/main/java/com/iformall/service/impl/WxCardInfoServiceImpl.java View File

@@ -3,7 +3,9 @@ package com.iformall.service.impl;
import com.aliyun.openservices.shade.org.apache.commons.lang3.StringUtils; import com.aliyun.openservices.shade.org.apache.commons.lang3.StringUtils;
import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo; import com.github.pagehelper.PageInfo;
import com.iformall.common.ErrorCode;
import com.iformall.common.IdWorker; import com.iformall.common.IdWorker;
import com.iformall.common.ResultData;
import com.iformall.domain.po.WxCUserBasicInfo; import com.iformall.domain.po.WxCUserBasicInfo;
import com.iformall.domain.po.WxCardInfo; import com.iformall.domain.po.WxCardInfo;
import com.iformall.domain.po.WxCoupon; import com.iformall.domain.po.WxCoupon;
@@ -14,11 +16,14 @@ import com.iformall.domain.po.base.TenantEntity;
import com.iformall.domain.vo.WxCardVo; import com.iformall.domain.vo.WxCardVo;
import com.iformall.domain.vo.WxCouponOrderBVo; import com.iformall.domain.vo.WxCouponOrderBVo;
import com.iformall.domain.vo.WxCouponPasswordVo; import com.iformall.domain.vo.WxCouponPasswordVo;
import com.iformall.enums.EnumCacheKey;
import com.iformall.enums.EnumCardInfoStatus;
import com.iformall.enums.EnumCardInfoType; import com.iformall.enums.EnumCardInfoType;
import com.iformall.enums.EnumCouponPasswordStatus; import com.iformall.enums.EnumCouponPasswordStatus;
import com.iformall.enums.EnumCouponPasswordSupport; import com.iformall.enums.EnumCouponPasswordSupport;
import com.iformall.enums.EnumCouponType; import com.iformall.enums.EnumCouponType;
import com.iformall.enums.EnumYesOrNo; import com.iformall.enums.EnumYesOrNo;
import com.iformall.exception.MallinkException;
import com.iformall.mapper.WxCardInfoMapper; import com.iformall.mapper.WxCardInfoMapper;
import com.iformall.mapper.WxCouponChannelMapper; import com.iformall.mapper.WxCouponChannelMapper;
import com.iformall.mapper.WxCouponMapper; import com.iformall.mapper.WxCouponMapper;
@@ -27,6 +32,7 @@ import com.iformall.mapper.WxCouponPasswordMapper;
import com.iformall.service.ExcelService; import com.iformall.service.ExcelService;
import com.iformall.service.WxCUserBasicInfoService; import com.iformall.service.WxCUserBasicInfoService;
import com.iformall.service.WxCardInfoService; import com.iformall.service.WxCardInfoService;
import com.iformall.service.WxCouponService;
import com.iformall.utils.Constant; import com.iformall.utils.Constant;
import com.iformall.utils.RedisLock; import com.iformall.utils.RedisLock;


@@ -59,9 +65,6 @@ public class WxCardInfoServiceImpl implements WxCardInfoService {
@Autowired @Autowired
WxCouponChannelMapper wxCouponChannelMapper; WxCouponChannelMapper wxCouponChannelMapper;
@Autowired
RedisLock redisLock;
@Autowired @Autowired
WxCouponPasswordMapper couponPasswordMapper; WxCouponPasswordMapper couponPasswordMapper;
@@ -75,6 +78,13 @@ public class WxCardInfoServiceImpl implements WxCardInfoService {
@Autowired @Autowired
WxCouponOrderMapper wxCouponOrderMapper; WxCouponOrderMapper wxCouponOrderMapper;
@Lazy
@Autowired
WxCouponService wxCouponService;
@Autowired
RedisLock redisLock;


@Override @Override
@@ -302,6 +312,7 @@ public class WxCardInfoServiceImpl implements WxCardInfoService {
cardInfo.setRemainingShareFeeAmount(0); cardInfo.setRemainingShareFeeAmount(0);
cardInfo.setRateAmount(0); cardInfo.setRateAmount(0);
cardInfo.setType(EnumCardInfoType.CARD.getCode()); cardInfo.setType(EnumCardInfoType.CARD.getCode());
cardInfo.setStatus(EnumCardInfoStatus.NORMAL.getCode());
if (coupon.getPasswordSupport().equals(EnumCouponPasswordSupport.SUPPORTED.getCode())) { if (coupon.getPasswordSupport().equals(EnumCouponPasswordSupport.SUPPORTED.getCode())) {
WxCouponPassword updateCPwd = new WxCouponPassword(); WxCouponPassword updateCPwd = new WxCouponPassword();
updateCPwd.setId(couponPassword.getId()); updateCPwd.setId(couponPassword.getId());
@@ -318,6 +329,14 @@ public class WxCardInfoServiceImpl implements WxCardInfoService {
cardInfo.setUpdateDate(new Date()); cardInfo.setUpdateDate(new Date());
cardInfo.setSupportTransfer(coupon.getSupportTransfer()); cardInfo.setSupportTransfer(coupon.getSupportTransfer());
wxCardInfoMapper.insert(cardInfo); wxCardInfoMapper.insert(cardInfo);
//扣减库存
wxCouponService.reduceRemainInventory(coupon,coupon.getId(),1);
long stock = redisLock.decrease(EnumCacheKey.COUPON_STOCK.getMessage()+coupon.getId(), 1);
if (stock < 0 ) {
throw new MallinkException(ErrorCode.API_KEY_NOT_FOUND.getCode(),"库存不足");
}
} }
redisLock.unlock("cardInfoLockSet_"+couponPassword.getId(), timeStr); redisLock.unlock("cardInfoLockSet_"+couponPassword.getId(), timeStr);
} }


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

@@ -93,13 +93,6 @@ public class WxCardSpendServiceImpl implements WxCardSpendService {
@Autowired @Autowired
WxCouponChannelMapper wxCouponChannelMapper; WxCouponChannelMapper wxCouponChannelMapper;
@Lazy
@Autowired
WxCouponService wxCouponService;
@Autowired
RedisLock redisLock;

@Override @Override
public WxCouponMerchant checkMerchantInCoupon(WxCardInfo cardInfo, Long merchantId) { public WxCouponMerchant checkMerchantInCoupon(WxCardInfo cardInfo, Long merchantId) {
WxCouponMerchant couponMerchant = null; WxCouponMerchant couponMerchant = null;
@@ -118,7 +111,7 @@ public class WxCardSpendServiceImpl implements WxCardSpendService {


@Override @Override
@Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class}) @Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class})
public ResultData createCardSpend(WxCardSpend record, WxOrder order, WxCouponMerchant couponMerchant,Integer reduceCouponNumber,EnumPayWay payWay) {
public ResultData createCardSpend(WxCardSpend record, WxOrder order, WxCouponMerchant couponMerchant,EnumPayWay payWay) {
Date curDate = new Date(); Date curDate = new Date();
final IdWorker idWorker = IdWorker.get(); final IdWorker idWorker = IdWorker.get();
// 1. get card info // 1. get card info
@@ -148,15 +141,6 @@ public class WxCardSpendServiceImpl implements WxCardSpendService {
if(payAccount == null){ if(payAccount == null){
return new ResultData(ErrorCode.API_KEY_NOT_FOUND); return new ResultData(ErrorCode.API_KEY_NOT_FOUND);
} }
//扣减库存
if (null != reduceCouponNumber && reduceCouponNumber > 0) {
wxCouponService.reduceRemainInventory(coupon,coupon.getId(),reduceCouponNumber);
long stock = redisLock.decrease(EnumCacheKey.COUPON_STOCK.getMessage()+coupon.getId(), reduceCouponNumber);
if (stock < 0 ) {
return new ResultData(ErrorCode.API_KEY_NOT_FOUND.getCode(),"库存不足");
}
}


// 4. 扣减计算 // 4. 扣减计算
Double paymentD = 1.0 * cardInfo.getSaleAmount() * record.getDeductionAmount() / cardInfo.getAmount(); Double paymentD = 1.0 * cardInfo.getSaleAmount() * record.getDeductionAmount() / cardInfo.getAmount();


Loading…
Cancel
Save