充值改造
This commit is contained in:
@@ -0,0 +1,42 @@
|
||||
package com.czg.service.order.dto;
|
||||
|
||||
import jakarta.validation.constraints.DecimalMin;
|
||||
import jakarta.validation.constraints.NotNull;
|
||||
import lombok.Data;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
|
||||
/**
|
||||
* 支付接收参数 实体类
|
||||
*
|
||||
* @author ww
|
||||
* @description
|
||||
*/
|
||||
@Data
|
||||
public class RechargeDTO {
|
||||
@NotNull(message = "店铺不能为空")
|
||||
private Long shopId;
|
||||
/**
|
||||
* 充值金额id
|
||||
*/
|
||||
private Long rechargeDetailId;
|
||||
@DecimalMin("0.01")
|
||||
private BigDecimal money;
|
||||
/**
|
||||
* 跳转地址
|
||||
*/
|
||||
private String returnUrl;
|
||||
/**
|
||||
* 平台类型 pc 收银机客户端 wechat 微信小程序 alipay 支付宝小程序 admin-pc PC管理端 admin-app APP管理端
|
||||
*/
|
||||
private String platformType;
|
||||
|
||||
private String openId;
|
||||
|
||||
private String buyerRemark;
|
||||
|
||||
private String payType;
|
||||
|
||||
|
||||
|
||||
}
|
||||
@@ -4,10 +4,7 @@ import com.czg.entity.resp.CzgBaseResp;
|
||||
import com.czg.entity.resp.CzgRefundResp;
|
||||
import com.czg.order.dto.OrderInfoRefundDTO;
|
||||
import com.czg.resp.CzgResult;
|
||||
import com.czg.service.order.dto.OrderPayParamDTO;
|
||||
import com.czg.service.order.dto.VipMemberPayParamDTO;
|
||||
import com.czg.service.order.dto.VipPayParamDTO;
|
||||
import com.czg.service.order.dto.VipRefundDTO;
|
||||
import com.czg.service.order.dto.*;
|
||||
import lombok.NonNull;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
@@ -122,4 +119,6 @@ public interface PayService {
|
||||
CzgResult<CzgRefundResp> queryRefund(Long shopId, String mchRefundNo, String refundOrderId);
|
||||
|
||||
CzgResult<Map<String, Object>> ltPayMember(String clientIP, VipMemberPayParamDTO payParam);
|
||||
|
||||
CzgResult<Map<String, Object>> recharge(String clientIP, RechargeDTO rechargeDTO, Long userId);
|
||||
}
|
||||
|
||||
@@ -118,6 +118,8 @@ public class OrderInfoServiceImpl extends ServiceImpl<OrderInfoMapper, OrderInfo
|
||||
private MkShopConsumeDiscountRecordService newConsumerDiscountRecordService;
|
||||
@Resource
|
||||
private MemberOrderService memberOrderService;
|
||||
@Resource
|
||||
private MkShopRechargeService shopRechargeService;
|
||||
// 延迟 5 秒
|
||||
private static final long DELAY = 5;
|
||||
//重试次数
|
||||
@@ -842,43 +844,24 @@ public class OrderInfoServiceImpl extends ServiceImpl<OrderInfoMapper, OrderInfo
|
||||
if (shopUser == null) {
|
||||
log.error("会员充值失败,会员不存在,会员id:{}", payment.getSourceId());
|
||||
} else {
|
||||
if (shopUser.getIsVip().equals(0)) {
|
||||
ShopUser shopUser1 = new ShopUser();
|
||||
shopUser1.setId(shopUser.getId());
|
||||
shopUser1.setIsVip(1);
|
||||
shopUser1.setJoinTime(LocalDateTime.now());
|
||||
shopUserService.updateById(shopUser1);
|
||||
}
|
||||
ShopUserMoneyEditDTO shopUserMoneyEditDTO = new ShopUserMoneyEditDTO()
|
||||
.setId(payment.getSourceId())
|
||||
.setMoney(new BigDecimal(czgCallBackDto.getAmount()).divide(new BigDecimal(100), 2, RoundingMode.DOWN))
|
||||
.setType(1)
|
||||
.setRelationId(payment.getId());
|
||||
ShopUserFlowBizEnum bizEnum;
|
||||
if ("WECHAT".equals(czgCallBackDto.getPayType())) {
|
||||
shopUserMoneyEditDTO.setBizEnum(ShopUserFlowBizEnum.WECHAT_IN);
|
||||
bizEnum = ShopUserFlowBizEnum.WECHAT_IN;
|
||||
} else if ("ALIPAY".equals(czgCallBackDto.getPayType())) {
|
||||
shopUserMoneyEditDTO.setBizEnum(ShopUserFlowBizEnum.ALIPAY_IN);
|
||||
bizEnum = ShopUserFlowBizEnum.ALIPAY_IN;
|
||||
} else {
|
||||
shopUserMoneyEditDTO.setBizEnum(ShopUserFlowBizEnum.CASH_IN);
|
||||
}
|
||||
//更新会员余额 并生成流水
|
||||
Long flowId = shopUserService.updateMoney(shopUserMoneyEditDTO);
|
||||
if (payment.getRelatedId() == null) {
|
||||
return;
|
||||
bizEnum = ShopUserFlowBizEnum.CASH_IN;
|
||||
}
|
||||
if (isFree) {
|
||||
shopUserMoneyEditDTO.setBizEnum(ShopUserFlowBizEnum.FREE_IN);
|
||||
bizEnum = ShopUserFlowBizEnum.CASH_IN;
|
||||
updateChain().eq(OrderInfo::getId, payment.getRelatedId())
|
||||
.set(OrderInfo::getStatus, OrderStatusEnums.DONE.getCode())
|
||||
.set(OrderInfo::getIsFreeDine, 1)
|
||||
.set(OrderInfo::getPayAmount, 0)
|
||||
.update();
|
||||
} else {
|
||||
//TODO 以前的会员活动
|
||||
// activateService.giveActivate(shopUser, new BigDecimal(czgCallBackDto.getAmount()).divide(new BigDecimal(100), 2, RoundingMode.DOWN),
|
||||
// payment.getRelatedId(), flowId);
|
||||
}
|
||||
|
||||
shopRechargeService.recharge(payment.getShopId(), payment.getSourceId(), payment.getRelatedId(),
|
||||
BigDecimal.valueOf(czgCallBackDto.getAmount() / 100), payment.getId(), payment.getPayType(), bizEnum);
|
||||
}
|
||||
} else if ("memberPay".equals(payment.getPayType())) {
|
||||
memberConfigService.joinMember(payment.getShopId(), payment.getSourceId(), payment.getRelatedId());
|
||||
|
||||
@@ -20,6 +20,8 @@ import com.czg.exception.PaySuccessException;
|
||||
import com.czg.market.entity.MkShopCouponRecord;
|
||||
import com.czg.market.service.MemberOrderService;
|
||||
import com.czg.market.service.MkShopCouponRecordService;
|
||||
import com.czg.market.service.MkShopRechargeService;
|
||||
import com.czg.market.vo.MkShopRechargeVO;
|
||||
import com.czg.order.dto.BigDecimalDTO;
|
||||
import com.czg.order.dto.CheckOrderPay;
|
||||
import com.czg.order.dto.OrderInfoRefundDTO;
|
||||
@@ -31,12 +33,10 @@ import com.czg.order.enums.PayEnums;
|
||||
import com.czg.order.service.*;
|
||||
import com.czg.resp.CzgRespCode;
|
||||
import com.czg.resp.CzgResult;
|
||||
import com.czg.sa.StpKit;
|
||||
import com.czg.service.CzgPayService;
|
||||
import com.czg.service.RedisService;
|
||||
import com.czg.service.order.dto.OrderPayParamDTO;
|
||||
import com.czg.service.order.dto.VipMemberPayParamDTO;
|
||||
import com.czg.service.order.dto.VipPayParamDTO;
|
||||
import com.czg.service.order.dto.VipRefundDTO;
|
||||
import com.czg.service.order.dto.*;
|
||||
import com.czg.service.order.enums.OrderStatusEnums;
|
||||
import com.czg.service.order.service.PayService;
|
||||
import com.czg.system.enums.SysParamCodeEnum;
|
||||
@@ -101,6 +101,8 @@ public class PayServiceImpl implements PayService {
|
||||
private RabbitPublisher rabbitPublisher;
|
||||
@DubboReference
|
||||
private MemberOrderService memberOrderService;
|
||||
@Resource
|
||||
private MkShopRechargeService shopRechargeService;
|
||||
|
||||
private final BigDecimal MONEY_RATE = new BigDecimal("100");
|
||||
|
||||
@@ -421,6 +423,24 @@ public class PayServiceImpl implements PayService {
|
||||
payParam.getPayType(), "会员充值", payParam.getOpenId(), clintIp, payParam.getReturnUrl(), payParam.getBuyerRemark(), ""));
|
||||
}
|
||||
|
||||
@Override
|
||||
public CzgResult<Map<String, Object>> recharge(String clientIP, RechargeDTO rechargeDTO, Long userId) {
|
||||
ShopUser shopUser = shopUserService.getOne(new QueryWrapper().eq(ShopUser::getSourceShopId, rechargeDTO.getShopId())
|
||||
.eq(ShopUser::getUserId, userId));
|
||||
AssertUtil.isNull(shopUser, "充值失败 该店铺用户不存在");
|
||||
MkShopRechargeVO rechargeVO = shopRechargeService.detail(rechargeDTO.getShopId());
|
||||
if (rechargeDTO.getRechargeDetailId() == null && rechargeVO.getIsCustom() == 0) {
|
||||
throw new CzgException("未开启自定义充值金额");
|
||||
}
|
||||
|
||||
BigDecimal amount = shopRechargeService.checkRecharge(StpKit.USER.getHeadId(), rechargeDTO.getShopId(), userId, rechargeDTO.getRechargeDetailId(), rechargeDTO.getMoney());
|
||||
String payOrderNo = rechargeDTO.getPlatformType() + IdUtil.getSnowflakeNextId();
|
||||
initOrderPayment(new OrderPayment(rechargeDTO.getShopId(), shopUser.getId(), "memberIn", payOrderNo,
|
||||
"", amount, rechargeDTO.getRechargeDetailId()));
|
||||
return ltPay(rechargeDTO.getShopId(), rechargeDTO.getPayType(), new CzgLtPayReq(payOrderNo, amount.multiply(MONEY_RATE).longValue(),
|
||||
rechargeDTO.getPayType(), "会员充值", rechargeDTO.getOpenId(), clientIP, rechargeDTO.getReturnUrl(), rechargeDTO.getBuyerRemark(), ""));
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
public CzgResult<Map<String, Object>> scanPayVip(String clintIp, VipPayParamDTO payParam) {
|
||||
|
||||
Reference in New Issue
Block a user