Kaynağa Gözat

fix card

release_toaliyun_real
lin 3 yıl önce
ebeveyn
işleme
83db6b7240
4 değiştirilmiş dosya ile 38 ekleme ve 8 silme
  1. +10
    -5
      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. +26
    -1
      mallinkService/src/main/java/com/iformall/service/impl/WxCardSpendServiceImpl.java

+ 10
- 5
mallinkBApi/src/main/java/com/iformall/controller/WxCardPayController.java Dosyayı Görüntüle

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

private ResultData saveCardPayOrder(Long cUserId,WxCardInfo cardInfo,WxMerchantBUser merchantBUser,String totalFeeStr,EnumPayWay payWay) {
private ResultData saveCardPayOrder(boolean reduceStock,Long cUserId,WxCardInfo cardInfo,WxMerchantBUser merchantBUser,String totalFeeStr,EnumPayWay payWay) {
if (EnumCardInfoStatus.STOP.getCode().intValue() == cardInfo.getStatus().intValue()) {
return new ResultData(ErrorCode.CARD_IS_NOT_FOUND.getCode(),"卡已被禁用.");
@@ -277,9 +277,14 @@ public class WxCardPayController extends BaseController {
record.setIp(ipStr);
record.setDeductionAmount(payment);
record.setRemark("操作于["+payWay.getMessage()+"("+payWay.getCode()+")]");

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


+ 1
- 1
mallinkCApi/src/main/java/com/iformall/controller/WxCardPayController.java Dosyayı Görüntüle

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

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


+ 1
- 1
mallinkService/src/main/java/com/iformall/service/WxCardSpendService.java Dosyayı Görüntüle

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

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


+ 26
- 1
mallinkService/src/main/java/com/iformall/service/impl/WxCardSpendServiceImpl.java Dosyayı Görüntüle

@@ -18,9 +18,12 @@ import com.iformall.mapper.*;
import com.iformall.service.*;
import com.iformall.utils.Constant;
import com.iformall.utils.PayUtils;
import com.iformall.utils.RedisLock;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
@@ -54,9 +57,11 @@ public class WxCardSpendServiceImpl implements WxCardSpendService {
@Autowired
WxCouponMerchantMapper wxCouponMerchantMapper;

@Lazy
@Autowired
WxAppinfoService wxAppinfoService;

@Lazy
@Autowired
WxPayAccountService wxPayAccountService;

@@ -66,23 +71,34 @@ public class WxCardSpendServiceImpl implements WxCardSpendService {
@Autowired
WxCouponOrderMapper wxCouponOrderMapper;

@Lazy
@Autowired
WxProfitSharingOrderService profitSharingOrderService;

@Autowired
ExcelService excelService;

@Lazy
@Autowired
WxCreditHistoryService wxCreditHistoryService;

@Lazy
@Autowired
WxScoreRulesService wxScoreRulesService;
@Lazy
@Autowired
WxCashOutService wxCashOutService;
@Autowired
WxCouponChannelMapper wxCouponChannelMapper;
@Lazy
@Autowired
WxCouponService wxCouponService;
@Autowired
RedisLock redisLock;

@Override
public WxCouponMerchant checkMerchantInCoupon(WxCardInfo cardInfo, Long merchantId) {
@@ -102,7 +118,7 @@ public class WxCardSpendServiceImpl implements WxCardSpendService {

@Override
@Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class})
public ResultData createCardSpend(WxCardSpend record, WxOrder order, WxCouponMerchant couponMerchant,EnumPayWay payWay) {
public ResultData createCardSpend(WxCardSpend record, WxOrder order, WxCouponMerchant couponMerchant,Integer reduceCouponNumber,EnumPayWay payWay) {
Date curDate = new Date();
final IdWorker idWorker = IdWorker.get();
// 1. get card info
@@ -132,6 +148,15 @@ public class WxCardSpendServiceImpl implements WxCardSpendService {
if(payAccount == null){
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. 扣减计算
Double paymentD = 1.0 * cardInfo.getSaleAmount() * record.getDeductionAmount() / cardInfo.getAmount();


Yükleniyor…
İptal
Kaydet