超级会员购买相关

This commit is contained in:
张松
2025-09-12 11:13:35 +08:00
parent f9aa237f98
commit ccb76143cc
3 changed files with 22 additions and 11 deletions

View File

@@ -39,8 +39,10 @@ public interface TbMemberConfigService extends IService<TbMemberConfig> {
/**
* 发放会员奖励
* @param isCost 是否是消费 true 消费 false 充值
* @param money 实际消费金额
* @param expVal 经验值只有当type为pay的时候才生效
* @return 是否成功
*/
boolean deliver(Long shopId, Long userId, TableValueConstant.MemberExpFlow.Type type, BigDecimal money, Integer expVal);
boolean deliver(Long shopId, Long userId, TableValueConstant.MemberExpFlow.Type type, BigDecimal money, Integer expVal, Long sourceId);
}

View File

@@ -19,8 +19,6 @@ import com.czg.market.vo.MemberLevelVO;
import com.czg.exception.CzgException;
import com.czg.market.service.MemberLevelConfigService;
import com.czg.market.service.TbMemberConfigService;
import com.czg.order.entity.OrderInfo;
import com.czg.order.entity.OrderPayment;
import com.czg.order.service.OrderInfoService;
import com.czg.order.service.OrderPaymentService;
import com.czg.service.market.enums.OrderStatusEnums;
@@ -32,6 +30,7 @@ import com.mybatisflex.spring.service.impl.ServiceImpl;
import lombok.extern.slf4j.Slf4j;
import org.apache.dubbo.config.annotation.DubboReference;
import org.apache.dubbo.config.annotation.DubboService;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.math.BigDecimal;
@@ -145,7 +144,7 @@ public class TbMemberConfigServiceImpl extends ServiceImpl<TbMemberConfigMapper,
MemberLevelConfig lastConfig = levelConfigService.getOne(new QueryWrapper().eq(MemberLevelConfig::getShopId, shopId)
.lt(MemberLevelConfig::getId, levelDTO.getId())
.limit(1).orderBy(MemberLevelConfig::getId, false).ne(MemberLevelConfig::getId, levelDTO.getId()));
.limit(1).orderBy(MemberLevelConfig::getExperienceValue, true).ne(MemberLevelConfig::getId, levelDTO.getId()));
if (lastConfig == null && levelDTO.getExperienceValue() > 0) {
throw new CzgException("1级时本字段必须为0");
} else if (lastConfig != null && levelDTO.getExperienceValue() <= lastConfig.getExperienceValue()) {
@@ -204,7 +203,8 @@ public class TbMemberConfigServiceImpl extends ServiceImpl<TbMemberConfigMapper,
}
@Override
public boolean deliver(Long shopId, Long userId, TableValueConstant.MemberExpFlow.Type type, BigDecimal money, Integer expVal) {
@Transactional(rollbackFor = Exception.class)
public boolean deliver(Long shopId, Long userId, TableValueConstant.MemberExpFlow.Type type, BigDecimal money, Integer expVal, Long sourceId) {
ShopUser shopUser = shopUserService.getOne(new QueryWrapper().eq(ShopUser::getShopId, shopId).eq(ShopUser::getUserId, userId));
if (shopUser == null || shopUser.getIsVip() == 0) {
return false;
@@ -256,18 +256,26 @@ public class TbMemberConfigServiceImpl extends ServiceImpl<TbMemberConfigMapper,
expFlow.setShopId(shopId);
expFlow.setMoney(money);
expFlow.setValue(exp);
expFlow.setSourceId(sourceId);
memberExpFlowService.save(expFlow);
// 修改会员等级
levelConfigService.getOne(new QueryWrapper().eq(MemberLevelConfig::getShopId, shopId).gt(MemberLevelConfig::getExperienceValue, levelConfig.getExperienceValue()));
shopUser.setExperience(shopUser.getExperience() + exp);
// 修改会员等级
MemberLevelConfig nextConfig = levelConfigService.getOne(new QueryWrapper().eq(MemberLevelConfig::getShopId, shopId)
.gt(MemberLevelConfig::getExperienceValue, levelConfig.getExperienceValue()).orderBy(MemberLevelConfig::getExperienceValue, true).limit(1));
if (shopUser.getExperience() >= nextConfig.getExperienceValue()) {
shopUser.setMemberLevelId(nextConfig.getId());
}
log.info("用户id: {}, 增加经验值: {}, 当前经验值: {}, 当前等级: {}", userId, exp, shopUser.getExperience(), shopUser.getMemberLevelId());
shopUserService.updateById(shopUser);
}
return true;
}
@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::getShopId, shopId).eq(ShopUser::getUserId, userId));
@@ -314,7 +322,7 @@ public class TbMemberConfigServiceImpl extends ServiceImpl<TbMemberConfigMapper,
}
if (memberOrder.getReward() != null) {
shopUser.setExperience(shopUser.getExperience() + memberOrder.getReward());
deliver(shopId, userId, TableValueConstant.MemberExpFlow.Type.PAY, memberOrder.getPayAmount(), memberOrder.getReward(), memberOrderId);
}
if (memberOrder.getCouponList() != null && !memberOrder.getCouponList().isEmpty()) {
@@ -327,6 +335,8 @@ public class TbMemberConfigServiceImpl extends ServiceImpl<TbMemberConfigMapper,
shopUser.setIsVip(1);
shopUserService.updateById(shopUser);
memberOrder.setStatus(OrderStatusEnums.DONE.getCode());
memberOrderService.updateById(memberOrder);
return false;
}
}

View File

@@ -697,7 +697,6 @@ public class OrderInfoServiceImpl extends ServiceImpl<OrderInfoMapper, OrderInfo
}
}else if ("memberPay".equals(payment.getPayType())) {
memberConfigService.joinMember(payment.getShopId(), payment.getSourceId(), payment.getRelatedId());
}
}