超级会员购买相关
This commit is contained in:
@@ -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);
|
||||
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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());
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user