开通会员修改

This commit is contained in:
张松
2025-11-13 10:52:11 +08:00
parent 1495ff2553
commit 23ee09a81b
5 changed files with 21 additions and 20 deletions

View File

@@ -40,7 +40,7 @@ public class MemberTask {
// @Scheduled(cron = "0 0 1 * * ? ") // @Scheduled(cron = "0 0 1 * * ? ")
public void task() { public void task() {
shopUserService.list(new QueryWrapper().eq(ShopUser::getIsVip, 1).lt(ShopUser::getNextDeliverTime, DateUtil.date().toLocalDateTime())).forEach(item -> { shopUserService.list(new QueryWrapper().eq(ShopUser::getIsVip, 1).lt(ShopUser::getNextDeliverTime, DateUtil.date().toLocalDateTime())).forEach(item -> {
memberConfigService.deliver(item.getSourceShopId(), item.getUserId(), TableValueConstant.MemberExpFlow.Type.MEMBER_TASK, null, null, null); memberConfigService.deliver(item, TableValueConstant.MemberExpFlow.Type.MEMBER_TASK, null, null, null);
}); });
} }

View File

@@ -1,5 +1,6 @@
package com.czg.market.service; package com.czg.market.service;
import com.czg.account.entity.ShopUser;
import com.czg.constant.TableValueConstant; import com.czg.constant.TableValueConstant;
import com.czg.exception.ApiNotPrintException; import com.czg.exception.ApiNotPrintException;
import com.czg.market.dto.MemberConfigDTO; import com.czg.market.dto.MemberConfigDTO;
@@ -46,7 +47,7 @@ public interface TbMemberConfigService extends IService<TbMemberConfig> {
* @param expVal 经验值只有当type为pay的时候才生效 * @param expVal 经验值只有当type为pay的时候才生效
* @return 是否成功 * @return 是否成功
*/ */
boolean deliver(Long shopId, Long userId, TableValueConstant.MemberExpFlow.Type type, BigDecimal money, Integer expVal, Long sourceId); boolean deliver(ShopUser shopUser, TableValueConstant.MemberExpFlow.Type type, BigDecimal money, Integer expVal, Long sourceId);
/** /**
* 获取用户会员列表 * 获取用户会员列表

View File

@@ -297,18 +297,17 @@ public class TbMemberConfigServiceImpl extends ServiceImpl<TbMemberConfigMapper,
} }
@Override @Override
@Transactional(rollbackFor = Exception.class, isolation = Isolation.READ_COMMITTED) @Transactional(rollbackFor = Exception.class)
public boolean deliver(Long shopId, Long userId, TableValueConstant.MemberExpFlow.Type type, BigDecimal money, Integer expVal, Long sourceId) { public boolean deliver(ShopUser shopUser, TableValueConstant.MemberExpFlow.Type type, BigDecimal money, Integer expVal, Long sourceId) {
ShopUser shopUser = shopUserService.getOne(new QueryWrapper().eq(ShopUser::getSourceShopId, shopInfoService.getMainIdByShopId(shopId)).eq(ShopUser::getUserId, userId));
if (shopUser == null || shopUser.getIsVip() == 0) { if (shopUser == null || shopUser.getIsVip() == 0) {
return false; return false;
} }
if (shopUser.getMemberLevelId() == null) { if (shopUser.getMemberLevelId() == null) {
log.warn("会员等级不存在, 店铺id: {}, 用户id: {}", shopId, userId); log.warn("会员等级不存在, 店铺id: {}, 用户id: {}", shopUser.getMainShopId(), shopUser.getUserId());
} }
MemberConfigVO memberConfig = detail(shopId); MemberConfigVO memberConfig = detail(shopUser.getMainShopId());
if (memberConfig == null) { if (memberConfig == null) {
log.warn("会员配置不存在, 店铺id: {}", shopId); log.warn("会员配置不存在, 店铺id: {}", shopUser.getMainShopId());
return false; return false;
} }
@@ -319,11 +318,11 @@ public class TbMemberConfigServiceImpl extends ServiceImpl<TbMemberConfigMapper,
MemberLevelVO levelVO = levelConfigService.detail(shopUser.getMemberLevelId()); MemberLevelVO levelVO = levelConfigService.detail(shopUser.getMemberLevelId());
if (levelVO == null) { if (levelVO == null) {
log.warn("会员等级配置不存在, 店铺id: {}, 等级id: {}", shopId, shopUser.getMemberLevelId()); log.warn("会员等级配置不存在, 店铺id: {}, 等级id: {}", shopUser.getMainShopId(), shopUser.getMemberLevelId());
return false; return false;
} }
log.info("会员奖励发放,类型: {} 金额: {}, userId: {}, 经验值: {}", type.getCode(), money, userId, expVal); log.info("会员奖励发放,类型: {} 金额: {}, userId: {}, 经验值: {}", type.getCode(), money, shopUser.getUserId(), expVal);
long exp = 0; long exp = 0;
switch (type) { switch (type) {
@@ -353,10 +352,10 @@ public class TbMemberConfigServiceImpl extends ServiceImpl<TbMemberConfigMapper,
if (levelVO.getCycleRewardCouponList() != null && !levelVO.getCycleRewardCouponList().isEmpty()) { if (levelVO.getCycleRewardCouponList() != null && !levelVO.getCycleRewardCouponList().isEmpty()) {
levelVO.getCycleRewardCouponList().forEach(item -> { levelVO.getCycleRewardCouponList().forEach(item -> {
shopCouponRecordService.grant(shopId, new MkRewardCouponDTO().setCouponId(item.getCoupon().getId()) shopCouponRecordService.grant(shopUser.getMainShopId(), new MkRewardCouponDTO().setCouponId(item.getCoupon().getId())
.setNum(item.getNum()) .setNum(item.getNum())
.setUserId(shopUser.getUserId()) .setUserId(shopUser.getUserId())
.setShopId(shopId)); .setShopId(shopUser.getMainShopId()));
}); });
// couponGiftService.addCouponGift(memberOrderId, "会员开通赠券", 1, giftDTOS); // couponGiftService.addCouponGift(memberOrderId, "会员开通赠券", 1, giftDTOS);
@@ -371,8 +370,8 @@ public class TbMemberConfigServiceImpl extends ServiceImpl<TbMemberConfigMapper,
MemberExpFlow expFlow = new MemberExpFlow(); MemberExpFlow expFlow = new MemberExpFlow();
expFlow.setContent(type.getMsg() + exp); expFlow.setContent(type.getMsg() + exp);
expFlow.setType("+"); expFlow.setType("+");
expFlow.setUserId(userId); expFlow.setUserId(shopUser.getUserId());
expFlow.setShopId(shopId); expFlow.setShopId(shopUser.getMainShopId());
expFlow.setMoney(money); expFlow.setMoney(money);
expFlow.setValue(exp); expFlow.setValue(exp);
expFlow.setSourceId(sourceId); expFlow.setSourceId(sourceId);
@@ -380,7 +379,7 @@ public class TbMemberConfigServiceImpl extends ServiceImpl<TbMemberConfigMapper,
shopUser.setExperience(shopUser.getExperience() + exp); shopUser.setExperience(shopUser.getExperience() + exp);
// 修改会员等级 // 修改会员等级
MemberLevelConfig nextConfig = levelConfigService.getOne(new QueryWrapper().eq(MemberLevelConfig::getShopId, shopId) MemberLevelConfig nextConfig = levelConfigService.getOne(new QueryWrapper().eq(MemberLevelConfig::getShopId, shopUser.getMainShopId())
.gt(MemberLevelConfig::getExperienceValue, levelVO.getExperienceValue()).orderBy(MemberLevelConfig::getExperienceValue, true).limit(1)); .gt(MemberLevelConfig::getExperienceValue, levelVO.getExperienceValue()).orderBy(MemberLevelConfig::getExperienceValue, true).limit(1));
if (nextConfig != null && shopUser.getExperience() >= nextConfig.getExperienceValue()) { if (nextConfig != null && shopUser.getExperience() >= nextConfig.getExperienceValue()) {
shopUser.setMemberLevelId(nextConfig.getId()); shopUser.setMemberLevelId(nextConfig.getId());
@@ -388,7 +387,7 @@ public class TbMemberConfigServiceImpl extends ServiceImpl<TbMemberConfigMapper,
shopUserService.updateInfo(shopUser); shopUserService.updateInfo(shopUser);
} }
log.info("用户id: {}, 增加经验值: {}, 当前经验值: {}, 当前等级: {}", userId, exp, shopUser.getExperience(), shopUser.getMemberLevelId()); log.info("用户id: {}, 增加经验值: {}, 当前经验值: {}, 当前等级: {}", shopUser.getUserId(), exp, shopUser.getExperience(), shopUser.getMemberLevelId());
return true; return true;
} }
@@ -520,7 +519,7 @@ public class TbMemberConfigServiceImpl extends ServiceImpl<TbMemberConfigMapper,
memberOrder.setStatus(OrderStatusEnums.DONE.getCode()); memberOrder.setStatus(OrderStatusEnums.DONE.getCode());
memberOrderService.updateById(memberOrder); memberOrderService.updateById(memberOrder);
if (memberOrder.getReward() != null) { if (memberOrder.getReward() != null) {
deliver(shopId, userId, TableValueConstant.MemberExpFlow.Type.PAY, memberOrder.getAmount(), memberOrder.getReward(), memberOrderId); deliver(shopUser, TableValueConstant.MemberExpFlow.Type.PAY, memberOrder.getAmount(), memberOrder.getReward(), memberOrderId);
} }
if (shopUser.getMemberLevelId() == null || shopUser.getMemberLevelId() == 0) { if (shopUser.getMemberLevelId() == null || shopUser.getMemberLevelId() == 0) {
shopUser.setMemberLevelId(levelConfig.getId()); shopUser.setMemberLevelId(levelConfig.getId());

View File

@@ -1063,7 +1063,8 @@ public class OrderInfoServiceImpl extends ServiceImpl<OrderInfoMapper, OrderInfo
// 会员加入 // 会员加入
memberConfigService.joinMemberByCondition(orderInfo.getShopId(), orderInfo.getUserId()); memberConfigService.joinMemberByCondition(orderInfo.getShopId(), orderInfo.getUserId());
// 会员消费赠送成长值 // 会员消费赠送成长值
memberConfigService.deliver(orderInfo.getShopId(), orderInfo.getUserId(), TableValueConstant.MemberExpFlow.Type.COST, orderInfo.getPayAmount(), null, orderInfo.getId()); ShopUser shopUser = shopUserService.getShopUserInfo(orderInfo.getShopId(), orderInfo.getUserId());
memberConfigService.deliver(shopUser, TableValueConstant.MemberExpFlow.Type.COST, orderInfo.getPayAmount(), null, orderInfo.getId());
// 分销员升级等级 // 分销员升级等级
distributionUserService.costUpgradeLevelBefore(orderInfo.getUserId(), orderInfo.getShopId()); distributionUserService.costUpgradeLevelBefore(orderInfo.getUserId(), orderInfo.getShopId());
// 分销奖励 // 分销奖励
@@ -1129,7 +1130,7 @@ public class OrderInfoServiceImpl extends ServiceImpl<OrderInfoMapper, OrderInfo
redisService.del(RedisCst.classKeyExpired.EXPIRED_ORDER + orderInfo.getId()); redisService.del(RedisCst.classKeyExpired.EXPIRED_ORDER + orderInfo.getId());
// 发放成长值 // 发放成长值
// 会员消费赠送成长值 // 会员消费赠送成长值
memberConfigService.deliver(orderInfo.getShopId(), orderInfo.getUserId(), memberConfigService.deliver(shopUser,
TableValueConstant.MemberExpFlow.Type.RECHARGE, TableValueConstant.MemberExpFlow.Type.RECHARGE,
BigDecimal.valueOf(czgCallBackDto.getAmount()).divide(BigDecimal.valueOf(100), 2, RoundingMode.DOWN), null, orderInfo.getId()); BigDecimal.valueOf(czgCallBackDto.getAmount()).divide(BigDecimal.valueOf(100), 2, RoundingMode.DOWN), null, orderInfo.getId());
if (TransactionSynchronizationManager.isSynchronizationActive()) { if (TransactionSynchronizationManager.isSynchronizationActive()) {

View File

@@ -246,7 +246,7 @@ public class PayServiceImpl implements PayService {
LocalDateTime.now(), flowId, PayEnums.VIP_PAY); LocalDateTime.now(), flowId, PayEnums.VIP_PAY);
log.info("发放经验值"); log.info("发放经验值");
memberConfigService.deliver(orderInfo.getShopId(), orderInfo.getUserId(), TableValueConstant.MemberExpFlow.Type.COST, orderInfo.getOrderAmount(), null, orderInfo.getId()); memberConfigService.deliver(shopUser, TableValueConstant.MemberExpFlow.Type.COST, orderInfo.getOrderAmount(), null, orderInfo.getId());
return CzgResult.success(); return CzgResult.success();
} }