超级会员购买相关
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.exception.CzgException;
|
||||||
import com.czg.market.service.MemberLevelConfigService;
|
import com.czg.market.service.MemberLevelConfigService;
|
||||||
import com.czg.market.service.TbMemberConfigService;
|
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.OrderInfoService;
|
||||||
import com.czg.order.service.OrderPaymentService;
|
import com.czg.order.service.OrderPaymentService;
|
||||||
import com.czg.service.market.enums.OrderStatusEnums;
|
import com.czg.service.market.enums.OrderStatusEnums;
|
||||||
@@ -32,6 +30,7 @@ import com.mybatisflex.spring.service.impl.ServiceImpl;
|
|||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.apache.dubbo.config.annotation.DubboReference;
|
import org.apache.dubbo.config.annotation.DubboReference;
|
||||||
import org.apache.dubbo.config.annotation.DubboService;
|
import org.apache.dubbo.config.annotation.DubboService;
|
||||||
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
@@ -145,7 +144,7 @@ public class TbMemberConfigServiceImpl extends ServiceImpl<TbMemberConfigMapper,
|
|||||||
|
|
||||||
MemberLevelConfig lastConfig = levelConfigService.getOne(new QueryWrapper().eq(MemberLevelConfig::getShopId, shopId)
|
MemberLevelConfig lastConfig = levelConfigService.getOne(new QueryWrapper().eq(MemberLevelConfig::getShopId, shopId)
|
||||||
.lt(MemberLevelConfig::getId, levelDTO.getId())
|
.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) {
|
if (lastConfig == null && levelDTO.getExperienceValue() > 0) {
|
||||||
throw new CzgException("1级时本字段必须为0");
|
throw new CzgException("1级时本字段必须为0");
|
||||||
} else if (lastConfig != null && levelDTO.getExperienceValue() <= lastConfig.getExperienceValue()) {
|
} else if (lastConfig != null && levelDTO.getExperienceValue() <= lastConfig.getExperienceValue()) {
|
||||||
@@ -204,7 +203,8 @@ public class TbMemberConfigServiceImpl extends ServiceImpl<TbMemberConfigMapper,
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@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));
|
ShopUser shopUser = shopUserService.getOne(new QueryWrapper().eq(ShopUser::getShopId, shopId).eq(ShopUser::getUserId, userId));
|
||||||
if (shopUser == null || shopUser.getIsVip() == 0) {
|
if (shopUser == null || shopUser.getIsVip() == 0) {
|
||||||
return false;
|
return false;
|
||||||
@@ -256,18 +256,26 @@ public class TbMemberConfigServiceImpl extends ServiceImpl<TbMemberConfigMapper,
|
|||||||
expFlow.setShopId(shopId);
|
expFlow.setShopId(shopId);
|
||||||
expFlow.setMoney(money);
|
expFlow.setMoney(money);
|
||||||
expFlow.setValue(exp);
|
expFlow.setValue(exp);
|
||||||
|
expFlow.setSourceId(sourceId);
|
||||||
memberExpFlowService.save(expFlow);
|
memberExpFlowService.save(expFlow);
|
||||||
|
|
||||||
// 修改会员等级
|
|
||||||
levelConfigService.getOne(new QueryWrapper().eq(MemberLevelConfig::getShopId, shopId).gt(MemberLevelConfig::getExperienceValue, levelConfig.getExperienceValue()));
|
|
||||||
|
|
||||||
shopUser.setExperience(shopUser.getExperience() + exp);
|
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;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public boolean joinMember(Long shopId, Long userId, Long memberOrderId) {
|
public boolean joinMember(Long shopId, Long userId, Long memberOrderId) {
|
||||||
MemberConfigVO memberConfigVO = detail(shopId);
|
MemberConfigVO memberConfigVO = detail(shopId);
|
||||||
ShopUser shopUser = shopUserService.getOne(new QueryWrapper().eq(ShopUser::getShopId, shopId).eq(ShopUser::getUserId, userId));
|
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) {
|
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()) {
|
if (memberOrder.getCouponList() != null && !memberOrder.getCouponList().isEmpty()) {
|
||||||
@@ -327,6 +335,8 @@ public class TbMemberConfigServiceImpl extends ServiceImpl<TbMemberConfigMapper,
|
|||||||
shopUser.setIsVip(1);
|
shopUser.setIsVip(1);
|
||||||
shopUserService.updateById(shopUser);
|
shopUserService.updateById(shopUser);
|
||||||
|
|
||||||
|
memberOrder.setStatus(OrderStatusEnums.DONE.getCode());
|
||||||
|
memberOrderService.updateById(memberOrder);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -697,7 +697,6 @@ public class OrderInfoServiceImpl extends ServiceImpl<OrderInfoMapper, OrderInfo
|
|||||||
|
|
||||||
}
|
}
|
||||||
}else if ("memberPay".equals(payment.getPayType())) {
|
}else if ("memberPay".equals(payment.getPayType())) {
|
||||||
|
|
||||||
memberConfigService.joinMember(payment.getShopId(), payment.getSourceId(), payment.getRelatedId());
|
memberConfigService.joinMember(payment.getShopId(), payment.getSourceId(), payment.getRelatedId());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user