|
|
@@ -87,7 +87,7 @@ public class VipOrderDonServiceImpl extends ServiceImpl<VipOrderDonMapper, VipOr
|
|
|
orderDon.setOrderNo(donNo);
|
|
|
orderDon.setOpenId(user.getOpenId());
|
|
|
//获取会员价格
|
|
|
- payRequest.setDonMoney(getVipMoney(user, payRequest.getIsDeduct()));
|
|
|
+ payRequest.setDonMoney(getVipMoneyIfDeduct(user, payRequest.getIsDeduct()));
|
|
|
orderDon.setMoney(payRequest.getDonMoney());
|
|
|
//渠道链接id
|
|
|
if (payRequest.getPopularizeId() != null) {
|
|
|
@@ -171,6 +171,51 @@ public class VipOrderDonServiceImpl extends ServiceImpl<VipOrderDonMapper, VipOr
|
|
|
unifiedHandlerOrderNotify(orderDon);
|
|
|
}
|
|
|
|
|
|
+ @Override
|
|
|
+ public VipOrderDon renew(VipOrderDonPayReq payRequest) {
|
|
|
+ Long userId = payRequest.getUserId();
|
|
|
+ User user = userMapper.selectById(userId);
|
|
|
+ List<Long> userIdList = userBindRelationService.getRelationUserIdList(userId, user);
|
|
|
+ Integer selectCount = vipUserMapper.selectCount(Wrappers.lambdaQuery(VipUser.class)
|
|
|
+ .in(VipUser::getUserId, userIdList)
|
|
|
+ .gt(VipUser::getExpiryTime, DateTime.now()));
|
|
|
+ if (selectCount == 0) {
|
|
|
+ throw BusinessRuntimeException.getInstance("您会员已过期,无法续费");
|
|
|
+ }
|
|
|
+ /* 生成订单 */
|
|
|
+ String donNo = SEQUENCE.nextId().toString();
|
|
|
+ VipOrderDon orderDon = new VipOrderDon();
|
|
|
+ orderDon.setOrderNo(donNo);
|
|
|
+ orderDon.setOpenId(user.getOpenId());
|
|
|
+ //获取续费会员价格
|
|
|
+ payRequest.setDonMoney(getVipMoney());
|
|
|
+ //续费订单
|
|
|
+ orderDon.setOrderType(2);
|
|
|
+ orderDon.setMoney(payRequest.getDonMoney());
|
|
|
+ //渠道链接id
|
|
|
+ if (payRequest.getPopularizeId() != null) {
|
|
|
+ orderDon.setPopularizeId(payRequest.getPopularizeId());
|
|
|
+ }
|
|
|
+ orderDon.setStatus(VipOrderDon.Status.noPayment);
|
|
|
+ orderDon.setUserId(user.getId());
|
|
|
+ orderDon.setType(VipOrderDon.Type.getType(payRequest.getType()));
|
|
|
+ orderDon.setIsWebPay(payRequest.getIsWebPay());
|
|
|
+ //扣除使用优惠券、余额的订单金额
|
|
|
+ deductOrderMoney(orderDon, user, payRequest);
|
|
|
+ //设置订单支付商品信息
|
|
|
+ orderDon.setPayTitle(Constant.VIP_TITLE);
|
|
|
+
|
|
|
+ this.saveOrUpdate(orderDon);
|
|
|
+
|
|
|
+ Long orderId = orderDon.getId();
|
|
|
+ //余额支付订单
|
|
|
+ if (orderDon.getMoney().compareTo(BigDecimal.ZERO) == 0) {
|
|
|
+ orderDon = getById(orderId);
|
|
|
+ unifiedHandlerOrderNotify(orderDon);
|
|
|
+ }
|
|
|
+ return orderDon;
|
|
|
+ }
|
|
|
+
|
|
|
private void unifiedHandlerOrderNotify(VipOrderDon orderDon) {
|
|
|
orderDon.setStatus(VipOrderDon.Status.complete);
|
|
|
this.updateById(orderDon);
|
|
|
@@ -218,16 +263,10 @@ public class VipOrderDonServiceImpl extends ServiceImpl<VipOrderDonMapper, VipOr
|
|
|
deductBalancePayOrderMoney(orderDon, balance, user);
|
|
|
}
|
|
|
|
|
|
- private BigDecimal getVipMoney(User user, Boolean isDeduct) {
|
|
|
+ private BigDecimal getVipMoneyIfDeduct(User user, Boolean isDeduct) {
|
|
|
List<VipGoodsSku> skus = vipGoodsSkuMapper.selectList(null);
|
|
|
List<Long> userIdList = userBindRelationService.getRelationUserIdList(user.getId(), user);
|
|
|
- SysConfig sysConfig = sysConfigMapper.selectOne(Wrappers.lambdaQuery(SysConfig.class)
|
|
|
- .eq(SysConfig::getSysKey, Constant.VIP_FEE_KEY)
|
|
|
- .last("limit 1"));
|
|
|
- if (sysConfig == null || StrUtil.isEmpty(sysConfig.getSysValue())) {
|
|
|
- throw BusinessRuntimeException.getInstance("系统异常");
|
|
|
- }
|
|
|
- BigDecimal vipFee = BigDecimal.valueOf(Long.valueOf(sysConfig.getSysValue()));
|
|
|
+ BigDecimal vipFee = getVipMoney();
|
|
|
//是否使用抵扣
|
|
|
if (isDeduct) {
|
|
|
for (VipGoodsSku vipGoodsSku : skus) {
|
|
|
@@ -269,4 +308,15 @@ public class VipOrderDonServiceImpl extends ServiceImpl<VipOrderDonMapper, VipOr
|
|
|
.eq(GroupsRelation::getStatus, GroupsRelation.Status.validity)
|
|
|
.eq(GroupsRelation::getIsVip, Boolean.TRUE));
|
|
|
}
|
|
|
+
|
|
|
+ private BigDecimal getVipMoney() {
|
|
|
+ SysConfig sysConfig = sysConfigMapper.selectOne(Wrappers.lambdaQuery(SysConfig.class)
|
|
|
+ .eq(SysConfig::getSysKey, Constant.VIP_FEE_KEY)
|
|
|
+ .last("limit 1"));
|
|
|
+ if (sysConfig == null || StrUtil.isEmpty(sysConfig.getSysValue())) {
|
|
|
+ throw BusinessRuntimeException.getInstance("系统异常");
|
|
|
+ }
|
|
|
+ BigDecimal vipFee = BigDecimal.valueOf(Long.valueOf(sysConfig.getSysValue()));
|
|
|
+ return vipFee;
|
|
|
+ }
|
|
|
}
|