会员支付修改

This commit is contained in:
张松 2025-09-26 10:04:39 +08:00
parent 080554f620
commit 11916b677c
3 changed files with 103 additions and 88 deletions

View File

@ -38,6 +38,7 @@ public interface TbMemberConfigService extends IService<TbMemberConfig> {
* @return 是否加入成功 * @return 是否加入成功
*/ */
boolean joinMember(Long shopId, Long userId, Long memberOrderId); boolean joinMember(Long shopId, Long userId, Long memberOrderId);
boolean joinMemberByCOndition(Long shopId, Long userId);
/** /**
* 发放会员奖励 * 发放会员奖励

View File

@ -353,7 +353,7 @@ public class TbMemberConfigServiceImpl extends ServiceImpl<TbMemberConfigMapper,
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public boolean joinMember(Long shopId, Long userId, Long memberOrderId) { public boolean joinMemberByCOndition(Long shopId, Long userId) {
MemberConfigVO memberConfigVO = detail(shopId); MemberConfigVO memberConfigVO = detail(shopId);
ShopUser shopUser = shopUserService.getOne(new QueryWrapper().eq(ShopUser::getSourceShopId, shopId).eq(ShopUser::getUserId, userId)); ShopUser shopUser = shopUserService.getOne(new QueryWrapper().eq(ShopUser::getSourceShopId, shopId).eq(ShopUser::getUserId, userId));
if (shopUser == null) { if (shopUser == null) {
@ -361,9 +361,6 @@ public class TbMemberConfigServiceImpl extends ServiceImpl<TbMemberConfigMapper,
return false; return false;
} }
MemberLevelConfig levelConfig = levelConfigService.getOne(new QueryWrapper().eq(MemberLevelConfig::getShopId, shopId).orderBy(MemberLevelConfig::getExperienceValue, true).limit(1)); MemberLevelConfig levelConfig = levelConfigService.getOne(new QueryWrapper().eq(MemberLevelConfig::getShopId, shopId).orderBy(MemberLevelConfig::getExperienceValue, true).limit(1));
// 条件开通
if (memberOrderId == null) {
AssertUtil.isTrue(!"CONDITION".equals(memberConfigVO.getOpenType()), "开通方式未开启"); AssertUtil.isTrue(!"CONDITION".equals(memberConfigVO.getOpenType()), "开通方式未开启");
for (MemberConfigDTO.condition item : memberConfigVO.getConditionList()) { for (MemberConfigDTO.condition item : memberConfigVO.getConditionList()) {
@ -383,19 +380,35 @@ public class TbMemberConfigServiceImpl extends ServiceImpl<TbMemberConfigMapper,
default -> throw new CzgException("会员开通条件类型错误"); default -> throw new CzgException("会员开通条件类型错误");
}; };
if (!canOpen) { if (!canOpen) {
throw new CzgException("会员开通条件不满足"); log.info("用户id: {}, 会员开通条件不满足", userId);
return false;
} }
} }
if (shopUser.getStartTime() != null && shopUser.getEndTime() != null && DateUtil.isIn(DateUtil.date(), DateUtil.date(shopUser.getStartTime()), DateUtil.date(shopUser.getEndTime()))) { if (shopUser.getStartTime() != null && shopUser.getEndTime() != null && DateUtil.isIn(DateUtil.date(), DateUtil.date(shopUser.getStartTime()), DateUtil.date(shopUser.getEndTime()))) {
throw new ApiNotPrintException("您已经是会员"); log.info("用户id: {}, 您已经是会员", userId);
return false;
} }
shopUser.setMemberLevelId(levelConfig.getId()); shopUser.setMemberLevelId(levelConfig.getId());
shopUser.setStartTime(DateUtil.date().toLocalDateTime()); shopUser.setStartTime(DateUtil.date().toLocalDateTime());
shopUser.setEndTime(shopUser.getStartTime().plusDays(20000)); shopUser.setEndTime(shopUser.getStartTime().plusDays(20000));
// 购买开通 shopUser.setIsVip(1);
} else { return shopUserService.updateById(shopUser);
}
@Override
@Transactional(rollbackFor = Exception.class)
public boolean joinMember(Long shopId, Long userId, Long memberOrderId) {
MemberConfigVO memberConfigVO = detail(shopId);
ShopUser shopUser = shopUserService.getOne(new QueryWrapper().eq(ShopUser::getSourceShopId, shopId).eq(ShopUser::getUserId, userId));
if (shopUser == null) {
log.warn("用户不存在, 店铺id: {}, 用户id: {}", shopId, userId);
return false;
}
MemberLevelConfig levelConfig = levelConfigService.getOne(new QueryWrapper().eq(MemberLevelConfig::getShopId, shopId).orderBy(MemberLevelConfig::getExperienceValue, true).limit(1));
// 条件开通
if (memberConfigVO.getConfigList() == null || memberConfigVO.getConfigList().isEmpty()) { if (memberConfigVO.getConfigList() == null || memberConfigVO.getConfigList().isEmpty()) {
throw new CzgException("会员开通方案未配置,请联系店铺"); throw new CzgException("会员开通方案未配置,请联系店铺");
} }
@ -457,7 +470,6 @@ public class TbMemberConfigServiceImpl extends ServiceImpl<TbMemberConfigMapper,
if (shopUser.getMemberLevelId() == null) { if (shopUser.getMemberLevelId() == null) {
shopUser.setMemberLevelId(levelConfig.getId()); shopUser.setMemberLevelId(levelConfig.getId());
} }
}
shopUser.setIsVip(1); shopUser.setIsVip(1);
return shopUserService.updateById(shopUser); return shopUserService.updateById(shopUser);
} }

View File

@ -399,11 +399,13 @@ public class PayServiceImpl implements PayService {
public CzgResult<Map<String, Object>> ltPayMember(String clientIP, VipMemberPayParamDTO payParam) { public CzgResult<Map<String, Object>> ltPayMember(String clientIP, VipMemberPayParamDTO payParam) {
ShopUser shopUser = shopUserService.getOne(new QueryWrapper().eq(ShopUser::getSourceShopId, payParam.getShopId()).eq(ShopUser::getId, payParam.getShopUserId())); ShopUser shopUser = shopUserService.getOne(new QueryWrapper().eq(ShopUser::getSourceShopId, payParam.getShopId()).eq(ShopUser::getId, payParam.getShopUserId()));
AssertUtil.isNull(shopUser, "充值失败 该店铺用户不存在"); AssertUtil.isNull(shopUser, "充值失败 该店铺用户不存在");
UserInfo userInfo = userInfoService.getById(shopUser.getUserId());
MemberOrder memberOrder = memberOrderService.createMemberOrder(new MemberOrderDTO().setName(payParam.getName()) MemberOrder memberOrder = memberOrderService.createMemberOrder(new MemberOrderDTO().setName(payParam.getName())
.setNum(1).setNickName(payParam.getNickName()) .setNum(1).setNickName(payParam.getNickName())
.setOrderType(payParam.getOrderType()) .setOrderType(payParam.getOrderType())
.setPlatformType(payParam.getPlatformType()).setSex(payParam.getSex()).setUserId(shopUser.getUserId()).setShopId(payParam.getShopId()).setBirthDay(payParam.getBirthDay())); .setPlatformType(payParam.getPlatformType()).setSex(payParam.getSex()).setUserId(shopUser.getUserId()).setShopId(payParam.getShopId()).setBirthDay(payParam.getBirthDay()));
payParam.setOpenId("WX".equals(payParam.getPlatformType()) ? userInfo.getWechatOpenId() : userInfo.getAlipayOpenId());
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();