Parcourir la source

//card

release_toaliyun_real
xhxu il y a 3 ans
Parent
révision
e183139131
8 fichiers modifiés avec 109 ajouts et 19 suppressions
  1. +18
    -0
      mallinkAdmin/src/main/java/com/iformall/controller/market/WxCardPayController.java
  2. +5
    -3
      mallinkAdmin/src/main/resources/db/migration/V2023031600001_cardspend.sql
  3. +1
    -0
      mallinkService/src/main/java/com/iformall/common/ErrorCode.java
  4. +4
    -0
      mallinkService/src/main/java/com/iformall/enums/EnumCardSpendFrom.java
  5. +3
    -1
      mallinkService/src/main/java/com/iformall/enums/EnumPayType.java
  6. +2
    -0
      mallinkService/src/main/java/com/iformall/service/WxCardInfoService.java
  7. +75
    -14
      mallinkService/src/main/java/com/iformall/service/impl/WxCardInfoServiceImpl.java
  8. +1
    -1
      mallinkService/src/main/java/com/iformall/service/impl/WxRefundOrderServiceImpl.java

+ 18
- 0
mallinkAdmin/src/main/java/com/iformall/controller/market/WxCardPayController.java Voir le fichier

@@ -273,4 +273,22 @@ public class WxCardPayController extends BaseController {

}


@ApiOperation(value = "卡充值")
@PostMapping("rechargeAmount")
public ResultData rechargeAmount(@RequestBody WxCardInfo cardInfo) {
logger.info("rechargeAmount: " + getIpAddr() + cardInfo.toString());
if(cardInfo.getId() == null){
return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "id为空");
}
if(cardInfo.getAmount() == null){
return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "充值金额为空");
}
if(Constant.UNDEFINED.equals(cardInfo.getTransactionId())){
cardInfo.setTransactionId(null);
}

return wxCardInfoService.rechargeAmount(cardInfo);
}

}

+ 5
- 3
mallinkAdmin/src/main/resources/db/migration/V2023031600001_cardspend.sql Voir le fichier

@@ -4,11 +4,15 @@ ADD COLUMN `settlement_status` smallint(2) NOT NULL DEFAULT 0 COMMENT '结算状

update wx_card_spend set settlement_status = pay_status where pay_status in (1,2);


update wx_card_spend set pay_status = 0 where pay_status in (1,2);

update wx_card_spend set pay_from=5 where pay_type=1;



delete from sys_config where id = 7;
delete from sys_config_value where config_item_id = 7;



ALTER TABLE `mallink`.`wx_card_info`
@@ -328,8 +332,6 @@ ADD COLUMN `is_recharge` smallint(2) DEFAULT 0 COMMENT '是否可充值' AFTER `
ADD COLUMN `used_password` varchar(50) COMMENT '使用密码' AFTER `is_recharge`;


delete from sys_config where id = 7;
delete from sys_config_value where config_item_id = 7;





+ 1
- 0
mallinkService/src/main/java/com/iformall/common/ErrorCode.java Voir le fichier

@@ -264,6 +264,7 @@ public enum ErrorCode{
CARD_TRANSFERED(9004, "卡已被领取"),
CARD_TRANSFER_INVALID(9005, "卡转赠已失效"),
CARD_SUBSIDY_NOT_SET(9006, "卡补贴未设置"),
CARD_IS_NOT_RECHARGE(9007, "该卡不支持充值"),

/**
* 卡消费


+ 4
- 0
mallinkService/src/main/java/com/iformall/enums/EnumCardSpendFrom.java Voir le fichier

@@ -12,6 +12,10 @@ public enum EnumCardSpendFrom {
card(2,"B扫实体卡收款"),
phone(3,"B手机号查询收款"),
pay(4,"C扫B付款"),

refund(5,"B退款"),

recharge(10,"A充值"),
;

public static EnumCardSpendFrom getEnum(Integer code) {


+ 3
- 1
mallinkService/src/main/java/com/iformall/enums/EnumPayType.java Voir le fichier

@@ -10,7 +10,9 @@ public enum EnumPayType {
PAY_AUTO_REFUND(2, "自动退款"),
PAY_ADMIN_REFUND(3, "A端退款"),
PAY_POS_REFUND(4, "POS发起退款"),
PAY_C_REFUND(5, "用户自己发起退款");
PAY_C_REFUND(5, "用户自己发起退款"),

PAY_CARD_RECHARGE(10, "卡充值");

public static EnumPayType getEnum(Integer code) {
for (EnumPayType value : values()) {


+ 2
- 0
mallinkService/src/main/java/com/iformall/service/WxCardInfoService.java Voir le fichier

@@ -69,4 +69,6 @@ public interface WxCardInfoService {
void updAmount(WxCardInfo cardInfo,Integer amount,Integer remainingAmount,Integer remainingShareFeeAmount);

ResultData updatePayPassword(WxCardInfo cardInfo, EnumCUserFrom userFrom);

ResultData rechargeAmount(WxCardInfo cardInfo);
}

+ 75
- 14
mallinkService/src/main/java/com/iformall/service/impl/WxCardInfoServiceImpl.java Voir le fichier

@@ -1,18 +1,13 @@
package com.iformall.service.impl;

import com.aliyun.openservices.shade.org.apache.commons.lang3.StringUtils;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.iformall.common.ErrorCode;
import com.iformall.common.IdWorker;
import com.iformall.common.ResultData;
import com.iformall.domain.po.WxCUserBasicInfo;
import com.iformall.domain.po.WxCardInfo;
import com.iformall.domain.po.WxCardTransferInfo;
import com.iformall.domain.po.WxCoupon;
import com.iformall.domain.po.WxCouponChannel;
import com.iformall.domain.po.WxCouponOrder;
import com.iformall.domain.po.WxCouponPassword;
import com.iformall.domain.po.*;
import com.iformall.domain.po.base.TenantEntity;
import com.iformall.domain.vo.WxCardTransferVo;
import com.iformall.domain.vo.WxCardVo;
@@ -20,17 +15,13 @@ import com.iformall.domain.vo.WxCouponOrderBVo;
import com.iformall.domain.vo.WxCouponPasswordVo;
import com.iformall.enums.*;
import com.iformall.exception.MallinkException;
import com.iformall.mapper.WxCardInfoMapper;
import com.iformall.mapper.WxCardTransferInfoMapper;
import com.iformall.mapper.WxCouponChannelMapper;
import com.iformall.mapper.WxCouponMapper;
import com.iformall.mapper.WxCouponOrderMapper;
import com.iformall.mapper.WxCouponPasswordMapper;
import com.iformall.mapper.*;
import com.iformall.service.ExcelService;
import com.iformall.service.WxCUserBasicInfoService;
import com.iformall.service.WxCardInfoService;
import com.iformall.service.WxCouponService;
import com.iformall.utils.Constant;
import com.iformall.utils.DateUtils;
import com.iformall.utils.RedisLock;

import org.apache.commons.beanutils.BeanUtils;
@@ -89,6 +80,9 @@ public class WxCardInfoServiceImpl implements WxCardInfoService {
@Autowired
WxCardTransferInfoMapper wxCardTransferInfoMapper;

@Autowired
WxCardSpendMapper wxCardSpendMapper;

@@ -425,7 +419,7 @@ public class WxCardInfoServiceImpl implements WxCardInfoService {
public ResultData updatePayPassword(WxCardInfo cardInfo, EnumCUserFrom userFrom) {
WxCardInfo wxCardInfo = wxCardInfoMapper.selectById(cardInfo.getId());
if(wxCardInfo == null){
return new ResultData(ErrorCode.CARD_IS_NOT_FOUND.getCode());
return new ResultData(ErrorCode.CARD_IS_NOT_FOUND);
}
WxCardInfo updateCIF = new WxCardInfo();
updateCIF.setId(cardInfo.getId());
@@ -449,6 +443,73 @@ public class WxCardInfoServiceImpl implements WxCardInfoService {
return new ResultData();
}

@Override
@Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class})
public ResultData rechargeAmount(WxCardInfo cardInfo) {
WxCardInfo wxCardInfo = wxCardInfoMapper.selectById(cardInfo.getId());
if(wxCardInfo == null){
return new ResultData(ErrorCode.CARD_IS_NOT_FOUND);
}
WxCoupon wxCoupon = wxCouponMapper.selectById(wxCardInfo.getCouponId(), wxCardInfo.getTenantId());
if(wxCoupon == null){
return new ResultData(ErrorCode.CARD_IS_NOT_FOUND);
}
if(EnumYesOrNo.NO.getCode().equals(wxCoupon.getIsRecharge())){
return new ResultData(ErrorCode.CARD_IS_NOT_RECHARGE);
}
if(!wxCoupon.checkIsFree()){
return new ResultData(ErrorCode.CARD_IS_NOT_RECHARGE.getCode(),"有价券不支持充值");
}
if(wxCoupon.getSubsidyNum() != null && wxCoupon.getSubsidyNum() > 0){
return new ResultData(ErrorCode.CARD_IS_NOT_RECHARGE.getCode(),"有补贴不支持充值");
}

Date currentDate = new Date();

WxCardSpend record = new WxCardSpend();
record.updateTenantInfo(cardInfo);
record.setPayType(EnumPayType.PAY_CARD_RECHARGE.getCode());
record.setCardId(cardInfo.getId());
if(StringUtils.isBlank(cardInfo.getTransactionId())){
Long yyyyMMddHHmmss = Long.valueOf(DateUtils.date2String(currentDate, "yyyyMMddHHmmss"));
record.setOrderId(yyyyMMddHHmmss);//默认当前日期为订单号
}
WxCardSpend wxCardSpend = wxCardSpendMapper.selectOne(new QueryWrapper<>(record));
if(wxCardSpend != null){
logger.error("当前已存在充值订单, ");
throw new MallinkException(ErrorCode.CARD_IS_NOT_RECHARGE.getCode(),"当前已存在充值订单,请确认是否重复充值");
}

this.updAmount(cardInfo,cardInfo.getAmount(),cardInfo.getAmount(),null);

final IdWorker idWorker = IdWorker.get();
record.setId(idWorker.nextId());
record.setOwnerId(cardInfo.getOwnerUserId());
record.setMerchantId(0l);//充值订单无商户
record.setPayFrom(EnumCardSpendFrom.recharge.getCode());
record.setDeductionAmount(cardInfo.getAmount());
record.setRemark("充值");

record.setPayment(0);
record.setRealPayment(0);
record.setCardBeforeAmount(wxCardInfo.getRemainingAmount());
record.setCardRemainAmount(wxCardInfo.getRemainingAmount()+cardInfo.getAmount());
record.setCardBeforeRealAmount(0);
record.setCardRemainRealAmount(0);
record.setPayStatus(EnumCardSpendStatus.NOT_PAY.getCode());//

record.setCreateDate(currentDate);
record.setUpdateDate(currentDate);
try {
wxCardSpendMapper.insert(record);
} catch (Exception e) {
logger.error("card spend insert error");
throw new MallinkException(ErrorCode.DB_FAIL.getCode(), "card spend 插入出错!");
}
return new ResultData();

}

private List<WxCardTransferVo> toTransferVoList(List<WxCardTransferInfo> transferList,TenantEntity tenantEntity) {
List<WxCardTransferVo> retList = new ArrayList<WxCardTransferVo>();
if (null != transferList && transferList.size() > 0 ) {


+ 1
- 1
mallinkService/src/main/java/com/iformall/service/impl/WxRefundOrderServiceImpl.java Voir le fichier

@@ -1282,7 +1282,7 @@ public class WxRefundOrderServiceImpl implements WxRefundOrderService {
record.setId(idWorker.nextId());
record.setOwnerId(cardSend.getOwnerId());
record.setMerchantId(cardSend.getMerchantId());
record.setPayFrom(EnumCardSpendFrom.C.getCode());
record.setPayFrom(EnumCardSpendFrom.refund.getCode());
record.setDeductionAmount(refundFee);
record.setRemark("退款");



Chargement…
Annuler
Enregistrer