霸王餐 充值
This commit is contained in:
parent
b9cd922bbb
commit
575bd686e2
|
|
@ -1,4 +1,4 @@
|
||||||
package com.czg.service.order.dto;
|
package com.czg.order.dto;
|
||||||
|
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
|
|
@ -30,6 +30,10 @@ public class CheckOrderPay implements Serializable {
|
||||||
private Long userId;
|
private Long userId;
|
||||||
|
|
||||||
private Integer vipPrice;
|
private Integer vipPrice;
|
||||||
|
/**
|
||||||
|
* 是否整单打包
|
||||||
|
*/
|
||||||
|
private Integer allPack;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 用餐人数
|
* 用餐人数
|
||||||
|
|
@ -124,4 +128,8 @@ public class CheckOrderPay implements Serializable {
|
||||||
public boolean isVipPrice() {
|
public boolean isVipPrice() {
|
||||||
return vipPrice != null && vipPrice == 1;
|
return vipPrice != null && vipPrice == 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public boolean isAllPack() {
|
||||||
|
return allPack != null && allPack == 1;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -43,7 +43,7 @@ public class OrderPayment implements Serializable {
|
||||||
private Long sourceId;
|
private Long sourceId;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 支付方式:order,refund, memberIn,memberRefund
|
* 支付方式:order,refund, memberIn,memberRefund, free
|
||||||
*/
|
*/
|
||||||
private String payType;
|
private String payType;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,11 @@
|
||||||
package com.czg.order.service;
|
package com.czg.order.service;
|
||||||
|
|
||||||
import com.alibaba.fastjson2.JSONObject;
|
import com.alibaba.fastjson2.JSONObject;
|
||||||
|
import com.czg.order.dto.BigDecimalDTO;
|
||||||
import com.czg.order.dto.CheckOrderPay;
|
import com.czg.order.dto.CheckOrderPay;
|
||||||
import com.czg.order.dto.OrderInfoAddDTO;
|
import com.czg.order.dto.OrderInfoAddDTO;
|
||||||
import com.czg.order.dto.OrderInfoQueryDTO;
|
import com.czg.order.dto.OrderInfoQueryDTO;
|
||||||
|
import com.czg.order.entity.OrderDetail;
|
||||||
import com.czg.order.entity.OrderInfo;
|
import com.czg.order.entity.OrderInfo;
|
||||||
import com.czg.order.enums.PayEnums;
|
import com.czg.order.enums.PayEnums;
|
||||||
import com.czg.order.vo.HistoryOrderVo;
|
import com.czg.order.vo.HistoryOrderVo;
|
||||||
|
|
@ -15,6 +17,8 @@ import org.jetbrains.annotations.NotNull;
|
||||||
|
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 订单表 服务层。
|
* 订单表 服务层。
|
||||||
|
|
@ -42,6 +46,8 @@ public interface OrderInfoService extends IService<OrderInfo> {
|
||||||
|
|
||||||
OrderInfo createPayOrder(Long shopId, BigDecimal amount, String remark);
|
OrderInfo createPayOrder(Long shopId, BigDecimal amount, String remark);
|
||||||
|
|
||||||
|
void processOrderDetails2(List<OrderDetail> orderDetails, Map<Long, Integer> prodCouponMap,
|
||||||
|
BigDecimalDTO prodCouponAmount, BigDecimalDTO totalAmount, BigDecimalDTO packAmount,
|
||||||
|
boolean isAllPack, boolean isVipPrice);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -10,6 +10,7 @@ import lombok.Getter;
|
||||||
public enum ShopUserFlowBizEnum {
|
public enum ShopUserFlowBizEnum {
|
||||||
// 会员充值
|
// 会员充值
|
||||||
CASH_IN("cashIn", "会员充值"),
|
CASH_IN("cashIn", "会员充值"),
|
||||||
|
FREE_IN("freeIn", "霸王餐充值"),
|
||||||
// 重置奖励
|
// 重置奖励
|
||||||
AWARD_IN("awardIn", "充值奖励"),
|
AWARD_IN("awardIn", "充值奖励"),
|
||||||
// 微信小程序充值
|
// 微信小程序充值
|
||||||
|
|
|
||||||
|
|
@ -16,6 +16,14 @@ public class VipPayParamDTO {
|
||||||
@NotNull(message = "店铺不能为空")
|
@NotNull(message = "店铺不能为空")
|
||||||
private Long shopId;
|
private Long shopId;
|
||||||
private Long shopUserId;
|
private Long shopUserId;
|
||||||
|
/**
|
||||||
|
* 霸王餐使用
|
||||||
|
*/
|
||||||
|
private Long orderId;
|
||||||
|
/**
|
||||||
|
* 霸王餐使用 是否整单打包
|
||||||
|
*/
|
||||||
|
private Integer allPack;
|
||||||
@NotNull(message = "充值金额不为空")
|
@NotNull(message = "充值金额不为空")
|
||||||
private BigDecimal amount;
|
private BigDecimal amount;
|
||||||
|
|
||||||
|
|
@ -35,4 +43,9 @@ public class VipPayParamDTO {
|
||||||
*/
|
*/
|
||||||
private String authCode;
|
private String authCode;
|
||||||
private String pwd;
|
private String pwd;
|
||||||
|
|
||||||
|
|
||||||
|
public boolean isAllPack() {
|
||||||
|
return allPack != null && allPack == 1;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -32,7 +32,7 @@ import com.czg.order.vo.OrderDetailSmallVO;
|
||||||
import com.czg.order.vo.OrderInfoVo;
|
import com.czg.order.vo.OrderInfoVo;
|
||||||
import com.czg.sa.StpKit;
|
import com.czg.sa.StpKit;
|
||||||
import com.czg.service.RedisService;
|
import com.czg.service.RedisService;
|
||||||
import com.czg.service.order.dto.BigDecimalDTO;
|
import com.czg.order.dto.BigDecimalDTO;
|
||||||
import com.czg.service.order.enums.OrderStatusEnums;
|
import com.czg.service.order.enums.OrderStatusEnums;
|
||||||
import com.czg.service.order.mapper.OrderInfoMapper;
|
import com.czg.service.order.mapper.OrderInfoMapper;
|
||||||
import com.czg.utils.AssertUtil;
|
import com.czg.utils.AssertUtil;
|
||||||
|
|
@ -259,7 +259,9 @@ public class OrderInfoServiceImpl extends ServiceImpl<OrderInfoMapper, OrderInfo
|
||||||
BigDecimalDTO prodCouponAmount = new BigDecimalDTO(BigDecimal.ZERO);
|
BigDecimalDTO prodCouponAmount = new BigDecimalDTO(BigDecimal.ZERO);
|
||||||
//总商品支付金额 不包含打包费 用来计算后续
|
//总商品支付金额 不包含打包费 用来计算后续
|
||||||
BigDecimalDTO totalAmount = new BigDecimalDTO(BigDecimal.ZERO);
|
BigDecimalDTO totalAmount = new BigDecimalDTO(BigDecimal.ZERO);
|
||||||
processOrderDetails2(orderDetails, prodCouponMap, prodCouponAmount, totalAmount, param.isVipPrice());
|
//最终打包费
|
||||||
|
BigDecimalDTO packAmount = new BigDecimalDTO(BigDecimal.ZERO);
|
||||||
|
processOrderDetails2(orderDetails, prodCouponMap, prodCouponAmount, totalAmount, packAmount, param.isAllPack(), param.isVipPrice());
|
||||||
//总商品支付金额 不包含打包费 用来计算后续
|
//总商品支付金额 不包含打包费 用来计算后续
|
||||||
log.info("支付前置,商品金额{} 商品优惠券金额{} 总金额{}", totalAmount, prodCouponAmount, totalAmount.getPrice().add(orderInfo.getPackFee()));
|
log.info("支付前置,商品金额{} 商品优惠券金额{} 总金额{}", totalAmount, prodCouponAmount, totalAmount.getPrice().add(orderInfo.getPackFee()));
|
||||||
if (prodCouponAmount.getPrice().compareTo(param.getProductCouponDiscountAmount()) != 0) {
|
if (prodCouponAmount.getPrice().compareTo(param.getProductCouponDiscountAmount()) != 0) {
|
||||||
|
|
@ -268,10 +270,10 @@ public class OrderInfoServiceImpl extends ServiceImpl<OrderInfoMapper, OrderInfo
|
||||||
orderInfo.setOriginAmount(totalAmount.getPrice());
|
orderInfo.setOriginAmount(totalAmount.getPrice());
|
||||||
BigDecimal newTotalAmount = totalAmount.getPrice();
|
BigDecimal newTotalAmount = totalAmount.getPrice();
|
||||||
//折扣金额 如 9折 计算 为 订单金额*0.9 向上取整
|
//折扣金额 如 9折 计算 为 订单金额*0.9 向上取整
|
||||||
if(param.getDiscountRatio().compareTo(BigDecimal.ZERO) > 0) {
|
if (param.getDiscountRatio().compareTo(BigDecimal.ZERO) > 0) {
|
||||||
newTotalAmount = totalAmount.getPrice().multiply(param.getDiscountRatio()).setScale(2, RoundingMode.UP);
|
newTotalAmount = totalAmount.getPrice().multiply(param.getDiscountRatio()).setScale(2, RoundingMode.UP);
|
||||||
|
|
||||||
}else if(param.getDiscountAmount().compareTo(BigDecimal.ZERO) > 0) {
|
} else if (param.getDiscountAmount().compareTo(BigDecimal.ZERO) > 0) {
|
||||||
newTotalAmount = totalAmount.getPrice().subtract(param.getDiscountAmount());
|
newTotalAmount = totalAmount.getPrice().subtract(param.getDiscountAmount());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -301,11 +303,12 @@ public class OrderInfoServiceImpl extends ServiceImpl<OrderInfoMapper, OrderInfo
|
||||||
newTotalAmount = newTotalAmount.subtract(param.getRoundAmount());
|
newTotalAmount = newTotalAmount.subtract(param.getRoundAmount());
|
||||||
log.info("支付前置4,订单金额{} ", newTotalAmount);
|
log.info("支付前置4,订单金额{} ", newTotalAmount);
|
||||||
//校验最终金额(订单金额 (扣除各类折扣)+打包费 餐位费)
|
//校验最终金额(订单金额 (扣除各类折扣)+打包费 餐位费)
|
||||||
newTotalAmount = newTotalAmount.add(orderInfo.getPackFee()).add(orderInfo.getSeatAmount());
|
newTotalAmount = newTotalAmount.add(packAmount.getPrice()).add(orderInfo.getSeatAmount());
|
||||||
log.info("支付前置5,订单金额{} ", newTotalAmount);
|
log.info("支付前置5,订单金额{} ", newTotalAmount);
|
||||||
if (newTotalAmount.compareTo(param.getOrderAmount()) != 0) {
|
if (newTotalAmount.compareTo(param.getOrderAmount()) != 0) {
|
||||||
throw new ValidateException("生成支付订单失败,订单金额不正确");
|
throw new ValidateException("生成支付订单失败,订单金额不正确");
|
||||||
}
|
}
|
||||||
|
orderInfo.setPackFee(packAmount.getPrice());
|
||||||
//生成订单 //discount_info 所有折扣 几折 折扣金额 满减金额 优惠券金额 积分抵扣金额 抹零
|
//生成订单 //discount_info 所有折扣 几折 折扣金额 满减金额 优惠券金额 积分抵扣金额 抹零
|
||||||
upOrderPayInfo(orderInfo, param);
|
upOrderPayInfo(orderInfo, param);
|
||||||
orderDetailService.updateBatch(orderDetails);
|
orderDetailService.updateBatch(orderDetails);
|
||||||
|
|
@ -318,7 +321,7 @@ public class OrderInfoServiceImpl extends ServiceImpl<OrderInfoMapper, OrderInfo
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 填充 优惠券使用数量 以及 付款金额
|
* 填充 单价/付款金额
|
||||||
*
|
*
|
||||||
* @param orderDetails 订单详情 需要回填
|
* @param orderDetails 订单详情 需要回填
|
||||||
*/
|
*/
|
||||||
|
|
@ -346,8 +349,10 @@ public class OrderInfoServiceImpl extends ServiceImpl<OrderInfoMapper, OrderInfo
|
||||||
* @param prodCouponAmount 商品券优惠金额 商品单价*优惠数量 的总和
|
* @param prodCouponAmount 商品券优惠金额 商品单价*优惠数量 的总和
|
||||||
* @param totalAmount 最终总金额(没加打包费 餐位费) 去除优惠券金额后的
|
* @param totalAmount 最终总金额(没加打包费 餐位费) 去除优惠券金额后的
|
||||||
*/
|
*/
|
||||||
private void processOrderDetails2(List<OrderDetail> orderDetails, Map<Long, Integer> prodCouponMap,
|
@Override
|
||||||
BigDecimalDTO prodCouponAmount, BigDecimalDTO totalAmount, boolean isVipPrice) {
|
public void processOrderDetails2(List<OrderDetail> orderDetails, Map<Long, Integer> prodCouponMap,
|
||||||
|
BigDecimalDTO prodCouponAmount, BigDecimalDTO totalAmount, BigDecimalDTO packAmount,
|
||||||
|
boolean isAllPack, boolean isVipPrice) {
|
||||||
Map<Long, List<OrderDetail>> detailMap = new HashMap<>();
|
Map<Long, List<OrderDetail>> detailMap = new HashMap<>();
|
||||||
for (OrderDetail detail : orderDetails) {
|
for (OrderDetail detail : orderDetails) {
|
||||||
detailMap.computeIfAbsent(detail.getProductId(), k -> new ArrayList<>()).add(detail);
|
detailMap.computeIfAbsent(detail.getProductId(), k -> new ArrayList<>()).add(detail);
|
||||||
|
|
@ -373,6 +378,10 @@ public class OrderInfoServiceImpl extends ServiceImpl<OrderInfoMapper, OrderInfo
|
||||||
orderDetail.setUnitPrice(orderDetail.getPrice());
|
orderDetail.setUnitPrice(orderDetail.getPrice());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (isAllPack) {
|
||||||
|
orderDetail.setPackNumber(orderDetail.getNum());
|
||||||
|
}
|
||||||
|
packAmount.setPrice(packAmount.getPrice().add(orderDetail.getPackAmount().multiply(orderDetail.getPackNumber())));
|
||||||
if (couponNum.compareTo(BigDecimal.ZERO) > 0) {
|
if (couponNum.compareTo(BigDecimal.ZERO) > 0) {
|
||||||
if (couponNum.compareTo(orderDetail.getNum()) >= 0) {
|
if (couponNum.compareTo(orderDetail.getNum()) >= 0) {
|
||||||
orderDetail.setCouponNum(orderDetail.getNum());
|
orderDetail.setCouponNum(orderDetail.getNum());
|
||||||
|
|
@ -457,7 +466,8 @@ public class OrderInfoServiceImpl extends ServiceImpl<OrderInfoMapper, OrderInfo
|
||||||
upOrderInfo(orderInfo, new BigDecimal(czgCallBackDto.getAmount() / 100L),
|
upOrderInfo(orderInfo, new BigDecimal(czgCallBackDto.getAmount() / 100L),
|
||||||
DateUtil.parseLocalDateTime(czgCallBackDto.getPayTime()), payment.getId(), null);
|
DateUtil.parseLocalDateTime(czgCallBackDto.getPayTime()), payment.getId(), null);
|
||||||
redisService.del(RedisCst.classKeyExpired.EXPIRED_ORDER + orderInfo.getId());
|
redisService.del(RedisCst.classKeyExpired.EXPIRED_ORDER + orderInfo.getId());
|
||||||
} else if ("memberIn".equals(payment.getPayType())) {
|
} else if ("memberIn".equals(payment.getPayType()) || "free".equals(payment.getPayType())) {
|
||||||
|
boolean isFree = "free".equals(payment.getPayType());
|
||||||
ShopUser shopUser = shopUserService.getById(payment.getSourceId());
|
ShopUser shopUser = shopUserService.getById(payment.getSourceId());
|
||||||
if (shopUser == null) {
|
if (shopUser == null) {
|
||||||
log.error("会员充值失败,会员不存在,会员id:{}", payment.getSourceId());
|
log.error("会员充值失败,会员不存在,会员id:{}", payment.getSourceId());
|
||||||
|
|
@ -481,11 +491,24 @@ public class OrderInfoServiceImpl extends ServiceImpl<OrderInfoMapper, OrderInfo
|
||||||
} else {
|
} else {
|
||||||
shopUserMoneyEditDTO.setBizEnum(ShopUserFlowBizEnum.CASH_IN);
|
shopUserMoneyEditDTO.setBizEnum(ShopUserFlowBizEnum.CASH_IN);
|
||||||
}
|
}
|
||||||
|
if (isFree) {
|
||||||
|
if (StrUtil.isBlank(czgCallBackDto.getExtParam())) {
|
||||||
|
throw new ValidateException("霸王餐支付,订单号处理失败");
|
||||||
|
}
|
||||||
|
shopUserMoneyEditDTO.setBizEnum(ShopUserFlowBizEnum.FREE_IN);
|
||||||
|
updateChain().eq(OrderInfo::getId, czgCallBackDto.getExtParam())
|
||||||
|
.set(OrderInfo::getStatus, OrderStatusEnums.DONE.getCode())
|
||||||
|
.set(OrderInfo::getIsFreeDine, 1)
|
||||||
|
.set(OrderInfo::getPayAmount, 0)
|
||||||
|
.update();
|
||||||
|
}
|
||||||
//更新会员余额 并生成流水
|
//更新会员余额 并生成流水
|
||||||
Long flowId = shopUserService.updateMoney(shopUser.getShopId(), shopUserMoneyEditDTO);
|
Long flowId = shopUserService.updateMoney(shopUser.getShopId(), shopUserMoneyEditDTO);
|
||||||
//会员活动
|
if (!isFree) {
|
||||||
activateService.giveActivate(shopUser,
|
//会员活动
|
||||||
new BigDecimal(czgCallBackDto.getAmount() / 100L), flowId);
|
activateService.giveActivate(shopUser,
|
||||||
|
new BigDecimal(czgCallBackDto.getAmount() / 100L), flowId);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -13,6 +13,7 @@ import com.czg.entity.req.*;
|
||||||
import com.czg.entity.resp.*;
|
import com.czg.entity.resp.*;
|
||||||
import com.czg.enums.ShopUserFlowBizEnum;
|
import com.czg.enums.ShopUserFlowBizEnum;
|
||||||
import com.czg.exception.PaySuccessException;
|
import com.czg.exception.PaySuccessException;
|
||||||
|
import com.czg.order.dto.BigDecimalDTO;
|
||||||
import com.czg.order.dto.CheckOrderPay;
|
import com.czg.order.dto.CheckOrderPay;
|
||||||
import com.czg.order.dto.OrderInfoRefundDTO;
|
import com.czg.order.dto.OrderInfoRefundDTO;
|
||||||
import com.czg.order.entity.OrderDetail;
|
import com.czg.order.entity.OrderDetail;
|
||||||
|
|
@ -100,6 +101,32 @@ public class PayServiceImpl implements PayService {
|
||||||
return orderInfo;
|
return orderInfo;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 会员充值 校验
|
||||||
|
*
|
||||||
|
* @return 是否是霸王餐充值
|
||||||
|
*/
|
||||||
|
private boolean checkPayVip(VipPayParamDTO payParam) {
|
||||||
|
if (payParam.getOrderId() != null) {
|
||||||
|
OrderInfo orderInfo = orderInfoService.getById(payParam.getOrderId());
|
||||||
|
AssertUtil.isNull(orderInfo, "订单不存在");
|
||||||
|
//获取商品信息 计算金额 需要传入优惠券 减去优惠券
|
||||||
|
List<OrderDetail> orderDetails = orderDetailService.queryChain().eq(OrderDetail::getOrderId, orderInfo.getId()).select().list();
|
||||||
|
//总商品支付金额 不包含打包费 用来计算后续
|
||||||
|
BigDecimalDTO totalAmount = new BigDecimalDTO(BigDecimal.ZERO);
|
||||||
|
//最终打包费
|
||||||
|
BigDecimalDTO packAmount = new BigDecimalDTO(BigDecimal.ZERO);
|
||||||
|
orderInfoService.processOrderDetails2(orderDetails, null, null, totalAmount, packAmount, payParam.isAllPack(), true);
|
||||||
|
BigDecimal payAmount = (totalAmount.getPrice().add(packAmount.getPrice())).multiply(BigDecimal.TWO);
|
||||||
|
if (payAmount.compareTo(payParam.getAmount()) != 0) {
|
||||||
|
throw new ValidateException("霸王餐支付金额不正确");
|
||||||
|
}
|
||||||
|
orderDetailService.updateBatch(orderDetails);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@Transactional
|
@Transactional
|
||||||
|
|
@ -263,6 +290,7 @@ public class PayServiceImpl implements PayService {
|
||||||
@Override
|
@Override
|
||||||
@Transactional
|
@Transactional
|
||||||
public CzgResult<Object> cashPayVip(VipPayParamDTO payParam) {
|
public CzgResult<Object> cashPayVip(VipPayParamDTO payParam) {
|
||||||
|
boolean isFree = checkPayVip(payParam);
|
||||||
ShopUser shopUser = shopUserService.getById(payParam.getShopUserId());
|
ShopUser shopUser = shopUserService.getById(payParam.getShopUserId());
|
||||||
AssertUtil.isNull(shopUser, "充值失败 该店铺用户不存在");
|
AssertUtil.isNull(shopUser, "充值失败 该店铺用户不存在");
|
||||||
ShopInfo shopInfo = shopInfoService.getById(payParam.getShopId());
|
ShopInfo shopInfo = shopInfoService.getById(payParam.getShopId());
|
||||||
|
|
@ -286,60 +314,78 @@ public class PayServiceImpl implements PayService {
|
||||||
.remark("现金充值")
|
.remark("现金充值")
|
||||||
.bizEnum(ShopUserFlowBizEnum.CASH_IN)
|
.bizEnum(ShopUserFlowBizEnum.CASH_IN)
|
||||||
.build();
|
.build();
|
||||||
|
if (isFree) {
|
||||||
|
shopUserMoneyEditDTO.setBizEnum(ShopUserFlowBizEnum.FREE_IN);
|
||||||
|
orderInfoService.updateChain().eq(OrderInfo::getId, payParam.getOrderId())
|
||||||
|
.set(OrderInfo::getStatus, OrderStatusEnums.DONE.getCode())
|
||||||
|
.set(OrderInfo::getIsFreeDine, 1)
|
||||||
|
.set(OrderInfo::getPayAmount, 0)
|
||||||
|
.update();
|
||||||
|
}
|
||||||
//更新会员余额 并生成流水
|
//更新会员余额 并生成流水
|
||||||
Long flowId = shopUserService.updateMoney(shopUser.getShopId(), shopUserMoneyEditDTO);
|
Long flowId = shopUserService.updateMoney(shopUser.getShopId(), shopUserMoneyEditDTO);
|
||||||
//会员活动
|
if (!isFree) {
|
||||||
shopActivateService.giveActivate(shopUser, payParam.getAmount(), flowId);
|
//会员活动
|
||||||
|
shopActivateService.giveActivate(shopUser, payParam.getAmount(), flowId);
|
||||||
|
}
|
||||||
return CzgResult.success();
|
return CzgResult.success();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@Transactional
|
@Transactional
|
||||||
public CzgResult<Map<String, Object>> jsPayVip(String clintIp, VipPayParamDTO payParam) {
|
public CzgResult<Map<String, Object>> jsPayVip(String clintIp, VipPayParamDTO payParam) {
|
||||||
|
boolean isFree = checkPayVip(payParam);
|
||||||
ShopUser shopUser = shopUserService.getById(payParam.getShopUserId());
|
ShopUser shopUser = shopUserService.getById(payParam.getShopUserId());
|
||||||
AssertUtil.isNull(shopUser, "充值失败 该店铺用户不存在");
|
AssertUtil.isNull(shopUser, "充值失败 该店铺用户不存在");
|
||||||
AssertUtil.isBlank(payParam.getOpenId(), "用户小程序ID不能为空");
|
AssertUtil.isBlank(payParam.getOpenId(), "用户小程序ID不能为空");
|
||||||
AssertUtil.isBlank(payParam.getPayType(), "支付方式不能为空");
|
AssertUtil.isBlank(payParam.getPayType(), "支付方式不能为空");
|
||||||
String payOrderNo = payParam.getPlatformType() + IdUtil.getSnowflakeNextId();
|
String payOrderNo = payParam.getPlatformType() + IdUtil.getSnowflakeNextId();
|
||||||
initOrderPayment(new OrderPayment(payParam.getShopId(), shopUser.getId(), "memberIn", payOrderNo, "", payParam.getAmount()));
|
initOrderPayment(new OrderPayment(payParam.getShopId(), shopUser.getId(), isFree ? "free" : "memberIn", payOrderNo, "", payParam.getAmount()));
|
||||||
|
String extParam = payParam.getOrderId() == null ? "" : payParam.getOrderId().toString();
|
||||||
return jsPay(payParam.getShopId(), payParam.getPayType(), new CzgJsPayReq(payOrderNo, payParam.getAmount().multiply(MONEY_RATE).longValue(),
|
return jsPay(payParam.getShopId(), payParam.getPayType(), new CzgJsPayReq(payOrderNo, payParam.getAmount().multiply(MONEY_RATE).longValue(),
|
||||||
"会员充值", payParam.getOpenId(), clintIp, payParam.getReturnUrl(), payParam.getBuyerRemark(), ""));
|
"会员充值", payParam.getOpenId(), clintIp, payParam.getReturnUrl(), payParam.getBuyerRemark(), extParam));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@Transactional
|
@Transactional
|
||||||
public CzgResult<Map<String, Object>> ltPayVip(String clintIp, VipPayParamDTO payParam) {
|
public CzgResult<Map<String, Object>> ltPayVip(String clintIp, VipPayParamDTO payParam) {
|
||||||
|
boolean isFree = checkPayVip(payParam);
|
||||||
ShopUser shopUser = shopUserService.getById(payParam.getShopUserId());
|
ShopUser shopUser = shopUserService.getById(payParam.getShopUserId());
|
||||||
AssertUtil.isNull(shopUser, "充值失败 该店铺用户不存在");
|
AssertUtil.isNull(shopUser, "充值失败 该店铺用户不存在");
|
||||||
AssertUtil.isBlank(payParam.getOpenId(), "用户小程序ID不能为空");
|
AssertUtil.isBlank(payParam.getOpenId(), "用户小程序ID不能为空");
|
||||||
AssertUtil.isBlank(payParam.getPayType(), "支付方式不能为空");
|
AssertUtil.isBlank(payParam.getPayType(), "支付方式不能为空");
|
||||||
String payOrderNo = payParam.getPlatformType() + IdUtil.getSnowflakeNextId();
|
String payOrderNo = payParam.getPlatformType() + IdUtil.getSnowflakeNextId();
|
||||||
initOrderPayment(new OrderPayment(payParam.getShopId(), shopUser.getId(), "memberIn", payOrderNo, "", payParam.getAmount()));
|
initOrderPayment(new OrderPayment(payParam.getShopId(), shopUser.getId(), isFree ? "free" : "memberIn", payOrderNo, "", payParam.getAmount()));
|
||||||
|
String extParam = payParam.getOrderId() == null ? "" : payParam.getOrderId().toString();
|
||||||
return ltPay(payParam.getShopId(), payParam.getPayType(), new CzgLtPayReq(payOrderNo, payParam.getAmount().multiply(MONEY_RATE).longValue(),
|
return ltPay(payParam.getShopId(), payParam.getPayType(), new CzgLtPayReq(payOrderNo, payParam.getAmount().multiply(MONEY_RATE).longValue(),
|
||||||
payParam.getPayType(), "会员充值", payParam.getOpenId(), clintIp, payParam.getReturnUrl(), payParam.getBuyerRemark(), ""));
|
payParam.getPayType(), "会员充值", payParam.getOpenId(), clintIp, payParam.getReturnUrl(), payParam.getBuyerRemark(), extParam));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@Transactional
|
@Transactional
|
||||||
public CzgResult<Map<String, Object>> scanPayVip(String clintIp, VipPayParamDTO payParam) {
|
public CzgResult<Map<String, Object>> scanPayVip(String clintIp, VipPayParamDTO payParam) {
|
||||||
|
boolean isFree = checkPayVip(payParam);
|
||||||
ShopUser shopUser = shopUserService.getById(payParam.getShopUserId());
|
ShopUser shopUser = shopUserService.getById(payParam.getShopUserId());
|
||||||
AssertUtil.isNull(shopUser, "充值失败 该店铺用户不存在");
|
AssertUtil.isNull(shopUser, "充值失败 该店铺用户不存在");
|
||||||
String payOrderNo = payParam.getPlatformType() + IdUtil.getSnowflakeNextId();
|
String payOrderNo = payParam.getPlatformType() + IdUtil.getSnowflakeNextId();
|
||||||
initOrderPayment(new OrderPayment(payParam.getShopId(), shopUser.getId(), "memberIn", payOrderNo, "", payParam.getAmount()));
|
initOrderPayment(new OrderPayment(payParam.getShopId(), shopUser.getId(), isFree ? "free" : "memberIn", payOrderNo, "", payParam.getAmount()));
|
||||||
|
String extParam = payParam.getOrderId() == null ? "" : payParam.getOrderId().toString();
|
||||||
return scanPay(payParam.getShopId(), new CzgScanPayReq(payOrderNo, payParam.getAmount().multiply(MONEY_RATE).longValue(),
|
return scanPay(payParam.getShopId(), new CzgScanPayReq(payOrderNo, payParam.getAmount().multiply(MONEY_RATE).longValue(),
|
||||||
"会员充值", clintIp, payParam.getReturnUrl(), payParam.getBuyerRemark(), ""));
|
"会员充值", clintIp, payParam.getReturnUrl(), payParam.getBuyerRemark(), extParam));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@Transactional
|
@Transactional
|
||||||
public CzgResult<Map<String, Object>> microPayVip(VipPayParamDTO payParam) {
|
public CzgResult<Map<String, Object>> microPayVip(VipPayParamDTO payParam) {
|
||||||
|
boolean isFree = checkPayVip(payParam);
|
||||||
AssertUtil.isBlank(payParam.getAuthCode(), "扫描码不能为空");
|
AssertUtil.isBlank(payParam.getAuthCode(), "扫描码不能为空");
|
||||||
ShopUser shopUser = shopUserService.getById(payParam.getShopUserId());
|
ShopUser shopUser = shopUserService.getById(payParam.getShopUserId());
|
||||||
AssertUtil.isNull(shopUser, "充值失败 该店铺用户不存在");
|
AssertUtil.isNull(shopUser, "充值失败 该店铺用户不存在");
|
||||||
String payOrderNo = payParam.getPlatformType() + IdUtil.getSnowflakeNextId();
|
String payOrderNo = payParam.getPlatformType() + IdUtil.getSnowflakeNextId();
|
||||||
initOrderPayment(new OrderPayment(payParam.getShopId(), shopUser.getId(), "memberIn", payOrderNo, payParam.getAuthCode(), payParam.getAmount()));
|
initOrderPayment(new OrderPayment(payParam.getShopId(), shopUser.getId(), isFree ? "free" : "memberIn", payOrderNo, payParam.getAuthCode(), payParam.getAmount()));
|
||||||
|
String extParam = payParam.getOrderId() == null ? "" : payParam.getOrderId().toString();
|
||||||
return microPay(payParam.getShopId(), new CzgMicroPayReq(payOrderNo, payParam.getAmount().multiply(MONEY_RATE).longValue(),
|
return microPay(payParam.getShopId(), new CzgMicroPayReq(payOrderNo, payParam.getAmount().multiply(MONEY_RATE).longValue(),
|
||||||
"会员充值", payParam.getAuthCode(), payParam.getBuyerRemark(), ""));
|
"会员充值", payParam.getAuthCode(), payParam.getBuyerRemark(), extParam));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue