|
@@ -31,6 +31,7 @@ import com.yami.shop.user.comment.service.*;
|
|
|
import lombok.AllArgsConstructor;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
import org.apache.commons.collections.CollectionUtils;
|
|
|
+import org.apache.commons.lang3.ObjectUtils;
|
|
|
import org.springframework.cache.annotation.CacheEvict;
|
|
|
import org.springframework.cache.annotation.Cacheable;
|
|
|
import org.springframework.context.ApplicationContext;
|
|
@@ -63,7 +64,7 @@ public class UserLevelServiceImpl extends ServiceImpl<UserLevelMapper, UserLevel
|
|
|
private final UserRightsService userRightsService;
|
|
|
private final UserLevelRightsService userLevelRightsService;
|
|
|
|
|
|
-// @Override
|
|
|
+ // @Override
|
|
|
// @Cacheable(cacheNames = "UserLevelsByLevelType", key = "#userLevelType")
|
|
|
// public List<UserLevel> listUserLevelsByUserLevelType(Integer userLevelType) {
|
|
|
// return userLevelMapper.selectList(new LambdaQueryWrapper<UserLevel>().eq(UserLevel::getLevelType, userLevelType));
|
|
@@ -84,17 +85,19 @@ public class UserLevelServiceImpl extends ServiceImpl<UserLevelMapper, UserLevel
|
|
|
// }
|
|
|
return userLevelList;
|
|
|
}
|
|
|
+
|
|
|
@Override
|
|
|
@CacheEvict(cacheNames = "UserLevelsByLevelType", key = "#userLevelType")
|
|
|
public void removeUserLevelsByUserLevelTypeCache(Integer userLevelType) {
|
|
|
|
|
|
}
|
|
|
+
|
|
|
@Override
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
public void paySuccess(String payNo) {
|
|
|
//根据内部订单号更新用户会员信息
|
|
|
- UserLevelLog userLevelLog = userLevelLogService.getOne(new LambdaQueryWrapper<UserLevelLog>().eq(UserLevelLog::getPayNo,payNo));
|
|
|
- if(userLevelLog == null){
|
|
|
+ UserLevelLog userLevelLog = userLevelLogService.getOne(new LambdaQueryWrapper<UserLevelLog>().eq(UserLevelLog::getPayNo, payNo));
|
|
|
+ if (userLevelLog == null) {
|
|
|
log.info("订单异常,");
|
|
|
return;
|
|
|
}
|
|
@@ -104,61 +107,62 @@ public class UserLevelServiceImpl extends ServiceImpl<UserLevelMapper, UserLevel
|
|
|
return;
|
|
|
}
|
|
|
UserLevel userLevel = userLevelMapper.selectLevelAndCoupons(userLevelLog.getLevel());
|
|
|
- if(userLevel == null){
|
|
|
- log.info("订单异常,会员等级找不到!",userLevelLog.getPayNo());
|
|
|
+ if (userLevel == null) {
|
|
|
+ log.info("订单异常,会员等级找不到!", userLevelLog.getPayNo());
|
|
|
return;
|
|
|
}
|
|
|
//修改用户会员信息
|
|
|
User user = userService.getById(userLevelLog.getUserId());
|
|
|
- UserExtension userExtension = userExtensionMapper.selectOne(new LambdaQueryWrapper<UserExtension>().eq(UserExtension::getUserId,userLevelLog.getUserId()));
|
|
|
+ UserExtension userExtension = userExtensionMapper.selectOne(new LambdaQueryWrapper<UserExtension>().eq(UserExtension::getUserId, userLevelLog.getUserId()));
|
|
|
//修改用户等级
|
|
|
- updateUserLevel(user,userLevel,userExtension);
|
|
|
+ updateUserLevel(user, userLevel, userExtension);
|
|
|
//发放奖励
|
|
|
ArrayList<UserLevel> userLevels = new ArrayList<>();
|
|
|
userLevels.add(userLevel);
|
|
|
- levelUp(userLevels,userLevelLog,userExtension,null);
|
|
|
+ levelUp(userLevels, userLevelLog, userExtension, null);
|
|
|
|
|
|
}
|
|
|
+
|
|
|
@Override
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
@CacheEvict(cacheNames = "UserLevelsByLevelType", key = "#userLevel.levelType")
|
|
|
public void updateUserLevelList(UserLevel userLevel) {
|
|
|
UserLevel dbUserLevel = new UserLevel();
|
|
|
//根据成长值,更新已有用户的等级
|
|
|
- if (!Objects.isNull(userLevel.getId())){
|
|
|
+ if (!Objects.isNull(userLevel.getId())) {
|
|
|
dbUserLevel = userLevelMapper.selectOne(new LambdaQueryWrapper<UserLevel>()
|
|
|
- .eq(UserLevel::getId,userLevel.getId())
|
|
|
- .eq(UserLevel::getLevelType,userLevel.getLevelType()));
|
|
|
+ .eq(UserLevel::getId, userLevel.getId())
|
|
|
+ .eq(UserLevel::getLevelType, userLevel.getLevelType()));
|
|
|
}
|
|
|
// 若是普通会员,新增或修改时成长值有变化,状态设置为未更新用户等级'
|
|
|
- if (Objects.equals(userLevel.getLevelType(),0) && !Objects.equals(dbUserLevel.getNeedGrowth(),userLevel.getNeedGrowth())){
|
|
|
+ if (Objects.equals(userLevel.getLevelType(), 0) && !Objects.equals(dbUserLevel.getNeedGrowth(), userLevel.getNeedGrowth())) {
|
|
|
userLevel.setStatus(-1);
|
|
|
- }else {
|
|
|
+ } else {
|
|
|
userLevel.setStatus(1);
|
|
|
}
|
|
|
this.saveOrUpdate(userLevel);
|
|
|
// 插入/更新等级分类数据
|
|
|
- this.delOrAddCategory(userLevel,dbUserLevel);
|
|
|
+ this.delOrAddCategory(userLevel, dbUserLevel);
|
|
|
//插入/更新等级优惠券数据
|
|
|
this.delOrAddCoupon(userLevel);
|
|
|
//插入/更新等级用户权益数据
|
|
|
this.delOrAddRights(userLevel);
|
|
|
- }
|
|
|
+ }
|
|
|
|
|
|
@Override
|
|
|
@CacheEvict(cacheNames = "UserLevelsByLevelType", key = "#userLevel.levelType")
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
public Boolean deleteUserLevel(UserLevel userLevel) {
|
|
|
- if (Objects.equals(userLevel.getLevel(),1)){
|
|
|
+ if (Objects.equals(userLevel.getLevel(), 1)) {
|
|
|
throw new GlobalException("此等级不能删除,必须要保留最少一个等级");
|
|
|
}
|
|
|
UserLevel dbUserLevel = userLevelMapper.selectById(userLevel.getId());
|
|
|
//删除等级关联权益
|
|
|
- userLevelRightsService.remove(new LambdaQueryWrapper<UserLevelRights>().eq(UserLevelRights::getLevelId,userLevel.getId()));
|
|
|
+ userLevelRightsService.remove(new LambdaQueryWrapper<UserLevelRights>().eq(UserLevelRights::getLevelId, userLevel.getId()));
|
|
|
//删除等级关联的优惠券
|
|
|
- userLevelCouponService.remove(new LambdaQueryWrapper<UserLevelCoupon>().eq(UserLevelCoupon::getLevelId,userLevel.getId()));
|
|
|
+ userLevelCouponService.remove(new LambdaQueryWrapper<UserLevelCoupon>().eq(UserLevelCoupon::getLevelId, userLevel.getId()));
|
|
|
//删除等级关联的分类
|
|
|
- userLevelCategoryService.remove(new LambdaQueryWrapper<UserLevelCategory>().eq(UserLevelCategory::getLevelId,userLevel.getId()));
|
|
|
+ userLevelCategoryService.remove(new LambdaQueryWrapper<UserLevelCategory>().eq(UserLevelCategory::getLevelId, userLevel.getId()));
|
|
|
userService.setUserLevelBylevelId(dbUserLevel.getLevel());
|
|
|
this.removeById(userLevel.getId());
|
|
|
return true;
|
|
@@ -167,11 +171,11 @@ public class UserLevelServiceImpl extends ServiceImpl<UserLevelMapper, UserLevel
|
|
|
@Override
|
|
|
public UserLevel getUserLevelById(Long id) {
|
|
|
UserLevel userLevel = userLevelMapper.selectById(id);
|
|
|
- if (Objects.equals(userLevel.getDiscountType(),1)){
|
|
|
- List<Long> categoryIds = userLevelCategoryService.getCategoryIdByLevelId(userLevel.getId());
|
|
|
+ if (Objects.equals(userLevel.getDiscountType(), 1)) {
|
|
|
+ List<Long> categoryIds = userLevelCategoryService.getCategoryIdByLevelId(userLevel.getId());
|
|
|
userLevel.setCategorys(categoryIds);
|
|
|
}
|
|
|
- userLevel.setUserRightsIds(userRightsService.getUserRightsIdListByLevelId(userLevel.getId(),1));
|
|
|
+ userLevel.setUserRightsIds(userRightsService.getUserRightsIdListByLevelId(userLevel.getId(), 1));
|
|
|
userLevel.setCouponList(userLevelCouponService.getCouponListByLevelId(userLevel.getId()));
|
|
|
return userLevel;
|
|
|
}
|
|
@@ -185,11 +189,11 @@ public class UserLevelServiceImpl extends ServiceImpl<UserLevelMapper, UserLevel
|
|
|
@Cacheable(cacheNames = "getUserLevelName", key = "#userExtension.userId")
|
|
|
public String getUserLevelName(UserExtension userExtension) {
|
|
|
List<UserLevel> userLevels = list(new LambdaQueryWrapper<UserLevel>()
|
|
|
- .le(UserLevel::getNeedGrowth,userExtension.getGrowth()).orderByDesc(UserLevel::getNeedGrowth));
|
|
|
+ .le(UserLevel::getNeedGrowth, userExtension.getGrowth()).orderByDesc(UserLevel::getNeedGrowth));
|
|
|
String levelName;
|
|
|
- if(userExtension.getLevel() == null){
|
|
|
+ if (userExtension.getLevel() == null) {
|
|
|
levelName = userLevels.get(0).getLevelName();
|
|
|
- }else{
|
|
|
+ } else {
|
|
|
levelName = String.valueOf(userExtension.getLevel());
|
|
|
}
|
|
|
return levelName;
|
|
@@ -203,14 +207,14 @@ public class UserLevelServiceImpl extends ServiceImpl<UserLevelMapper, UserLevel
|
|
|
Boolean isUpdate = false;
|
|
|
Integer level = 0;
|
|
|
Integer minNeedGrowth = 0;
|
|
|
- for (UserLevelDto userLevelDto:userLevelDtoList){
|
|
|
- if (isUpdate){
|
|
|
- userService.setUserLevelByGrowth(level,minNeedGrowth-1,userLevelDto.getNeedGrowth());
|
|
|
+ for (UserLevelDto userLevelDto : userLevelDtoList) {
|
|
|
+ if (isUpdate) {
|
|
|
+ userService.setUserLevelByGrowth(level, minNeedGrowth - 1, userLevelDto.getNeedGrowth());
|
|
|
isUpdate = false;
|
|
|
}
|
|
|
- if (Objects.equals(userLevelDto.getStatus(),-1) && Objects.equals(userLevelDto.getLevel(),userLevelDtoList.size())){
|
|
|
- userService.setUserLevelByGrowth(userLevelDto.getLevel(),userLevelDto.getNeedGrowth()-1,null);
|
|
|
- }else if(Objects.equals(userLevelDto.getStatus(),-1)){
|
|
|
+ if (Objects.equals(userLevelDto.getStatus(), -1) && Objects.equals(userLevelDto.getLevel(), userLevelDtoList.size())) {
|
|
|
+ userService.setUserLevelByGrowth(userLevelDto.getLevel(), userLevelDto.getNeedGrowth() - 1, null);
|
|
|
+ } else if (Objects.equals(userLevelDto.getStatus(), -1)) {
|
|
|
isUpdate = true;
|
|
|
}
|
|
|
level = userLevelDto.getLevel();
|
|
@@ -222,66 +226,69 @@ public class UserLevelServiceImpl extends ServiceImpl<UserLevelMapper, UserLevel
|
|
|
|
|
|
/**
|
|
|
* 修改用户等级中的商品分类
|
|
|
+ *
|
|
|
* @param userLevel
|
|
|
* @param dbUserLevel
|
|
|
*/
|
|
|
private void delOrAddCategory(UserLevel userLevel, UserLevel dbUserLevel) {
|
|
|
- List<Long> dbCategoryIds = userLevelCategoryService.getCategoryIdByLevelId(userLevel.getId());
|
|
|
+ List<Long> dbCategoryIds = userLevelCategoryService.getCategoryIdByLevelId(userLevel.getId());
|
|
|
List<Long> categoryList = userLevel.getCategorys();
|
|
|
//如果分类数据发生改变,执行方法进行增删操作
|
|
|
- Map<String,List<Long>> map = this.compare(categoryList,dbCategoryIds);
|
|
|
+ Map<String, List<Long>> map = this.compare(categoryList, dbCategoryIds);
|
|
|
List<Long> delCategory = map.get("del");
|
|
|
- if (delCategory.size()>0){
|
|
|
- userLevelCategoryService.delBatch(delCategory.toArray(new Long[delCategory.size()]),userLevel.getId());
|
|
|
+ if (delCategory.size() > 0) {
|
|
|
+ userLevelCategoryService.delBatch(delCategory.toArray(new Long[delCategory.size()]), userLevel.getId());
|
|
|
}
|
|
|
List<Long> addCategory = map.get("add");
|
|
|
- if (addCategory.size()>0){
|
|
|
- userLevelCategoryService.insertBatch(addCategory.toArray(new Long[addCategory.size()]),userLevel.getId());
|
|
|
+ if (addCategory.size() > 0) {
|
|
|
+ userLevelCategoryService.insertBatch(addCategory.toArray(new Long[addCategory.size()]), userLevel.getId());
|
|
|
}
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 修改用户等级中的赠送优惠券
|
|
|
+ *
|
|
|
* @param userLevel
|
|
|
*/
|
|
|
private void delOrAddCoupon(UserLevel userLevel) {
|
|
|
List<UserLevelCoupon> userLevelCouponList = userLevelCouponService.list(new LambdaQueryWrapper<UserLevelCoupon>().eq(UserLevelCoupon::getLevelId, userLevel.getId()));
|
|
|
List<Long> dbCouponIds = new ArrayList<>();
|
|
|
List<Long> couponIds = new ArrayList<>();
|
|
|
- if (!Objects.isNull(userLevelCouponList)){
|
|
|
- for (UserLevelCoupon userLevelCoupon:userLevelCouponList){
|
|
|
+ if (!Objects.isNull(userLevelCouponList)) {
|
|
|
+ for (UserLevelCoupon userLevelCoupon : userLevelCouponList) {
|
|
|
dbCouponIds.add(userLevelCoupon.getCouponId());
|
|
|
}
|
|
|
}
|
|
|
- if (!Objects.isNull(userLevel.getCouponList())){
|
|
|
- for (Coupon coupon:userLevel.getCouponList()){
|
|
|
+ if (!Objects.isNull(userLevel.getCouponList())) {
|
|
|
+ for (Coupon coupon : userLevel.getCouponList()) {
|
|
|
couponIds.add(coupon.getCouponId());
|
|
|
}
|
|
|
}
|
|
|
- Map<String,List<Long>> map = this.compare(couponIds,dbCouponIds);
|
|
|
+ Map<String, List<Long>> map = this.compare(couponIds, dbCouponIds);
|
|
|
List<Long> delCoupon = map.get("del");
|
|
|
- if (delCoupon.size()>0){
|
|
|
- userLevelCouponService.delBatchCoupon(delCoupon.toArray(new Long[delCoupon.size()]),userLevel.getId());
|
|
|
+ if (delCoupon.size() > 0) {
|
|
|
+ userLevelCouponService.delBatchCoupon(delCoupon.toArray(new Long[delCoupon.size()]), userLevel.getId());
|
|
|
}
|
|
|
List<Long> addCoupon = map.get("add");
|
|
|
- if (addCoupon.size()>0){
|
|
|
- userLevelCouponService.insertBatchCoupon(addCoupon.toArray(new Long[addCoupon.size()]),userLevel.getId());
|
|
|
+ if (addCoupon.size() > 0) {
|
|
|
+ userLevelCouponService.insertBatchCoupon(addCoupon.toArray(new Long[addCoupon.size()]), userLevel.getId());
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 修改用户等级中的权益
|
|
|
+ *
|
|
|
* @param userLevel
|
|
|
*/
|
|
|
private void delOrAddRights(UserLevel userLevel) {
|
|
|
- List<Long> userRightsList = userRightsService.getUserRightsIdListByLevelId(userLevel.getId(),null);
|
|
|
+ List<Long> userRightsList = userRightsService.getUserRightsIdListByLevelId(userLevel.getId(), null);
|
|
|
List<Long> dbRightsIds = new ArrayList<>();
|
|
|
List<Long> rightsIds = new ArrayList<>();
|
|
|
- if (!Objects.isNull(userRightsList)){
|
|
|
- dbRightsIds.addAll(userRightsList);
|
|
|
+ if (!Objects.isNull(userRightsList)) {
|
|
|
+ dbRightsIds.addAll(userRightsList);
|
|
|
}
|
|
|
- if (!Objects.isNull(userLevel.getUserRightsIds())){
|
|
|
+ if (!Objects.isNull(userLevel.getUserRightsIds())) {
|
|
|
rightsIds.addAll(userLevel.getUserRightsIds());
|
|
|
//折扣
|
|
|
if (!Objects.equals(userLevel.getDiscount(), 10D)) {
|
|
@@ -296,7 +303,7 @@ public class UserLevelServiceImpl extends ServiceImpl<UserLevelMapper, UserLevel
|
|
|
rightsIds.add(UserRightsInfo.SCORE.value());
|
|
|
}
|
|
|
//优惠券
|
|
|
- if (userLevel.getCouponList().size()>0) {
|
|
|
+ if (userLevel.getCouponList().size() > 0) {
|
|
|
rightsIds.add(UserRightsInfo.COUPON.value());
|
|
|
}
|
|
|
//积分倍率
|
|
@@ -304,25 +311,26 @@ public class UserLevelServiceImpl extends ServiceImpl<UserLevelMapper, UserLevel
|
|
|
rightsIds.add(UserRightsInfo.RATE_SCORE.value());
|
|
|
}
|
|
|
}
|
|
|
- Map<String,List<Long>> map = this.compare(rightsIds,dbRightsIds);
|
|
|
+ Map<String, List<Long>> map = this.compare(rightsIds, dbRightsIds);
|
|
|
List<Long> delCoupon = map.get("del");
|
|
|
- if (delCoupon.size()>0){
|
|
|
- userLevelRightsService.delBatchRights(delCoupon.toArray(new Long[delCoupon.size()]),userLevel.getId());
|
|
|
+ if (delCoupon.size() > 0) {
|
|
|
+ userLevelRightsService.delBatchRights(delCoupon.toArray(new Long[delCoupon.size()]), userLevel.getId());
|
|
|
}
|
|
|
List<Long> addCoupon = map.get("add");
|
|
|
- if (addCoupon.size()>0){
|
|
|
- userLevelRightsService.insertBatchRights(addCoupon.toArray(new Long[addCoupon.size()]),userLevel.getId());
|
|
|
+ if (addCoupon.size() > 0) {
|
|
|
+ userLevelRightsService.insertBatchRights(addCoupon.toArray(new Long[addCoupon.size()]), userLevel.getId());
|
|
|
}
|
|
|
}
|
|
|
|
|
|
|
|
|
/**
|
|
|
* 得到需要新增或删除的数据
|
|
|
+ *
|
|
|
* @param ids
|
|
|
* @param dbIds
|
|
|
*/
|
|
|
- private Map<String,List<Long>> compare(List<Long> ids, List<Long> dbIds) {
|
|
|
- if (Objects.isNull(ids)){
|
|
|
+ private Map<String, List<Long>> compare(List<Long> ids, List<Long> dbIds) {
|
|
|
+ if (Objects.isNull(ids)) {
|
|
|
ids = new ArrayList<>();
|
|
|
}
|
|
|
List<Long> del = new ArrayList<>();
|
|
@@ -331,44 +339,45 @@ public class UserLevelServiceImpl extends ServiceImpl<UserLevelMapper, UserLevel
|
|
|
add.addAll(ids);
|
|
|
add.removeAll(dbIds);
|
|
|
del.removeAll(ids);
|
|
|
- Map<String,List<Long>> map = new HashMap<>();
|
|
|
+ Map<String, List<Long>> map = new HashMap<>();
|
|
|
//需要新增的数据
|
|
|
- map.put("add",add);
|
|
|
+ map.put("add", add);
|
|
|
//需要删除的数据
|
|
|
- map.put("del",del);
|
|
|
+ map.put("del", del);
|
|
|
return map;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 增加用户成长值和积分
|
|
|
+ *
|
|
|
* @param growthPrice 增加的成长值
|
|
|
- * @param score 增加的积分
|
|
|
- * @param order 确认收货的订单信息
|
|
|
+ * @param score 增加的积分
|
|
|
+ * @param order 确认收货的订单信息
|
|
|
*/
|
|
|
@Override
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
- public void addGrowthAndScore(double growthPrice, Integer score, Order order,UserExtension userExtension) {
|
|
|
+ public void addGrowthAndScore(double growthPrice, Integer score, Order order, UserExtension userExtension) {
|
|
|
String userId = order.getUserId();
|
|
|
User user = userService.getById(userId);
|
|
|
- if(user.getLevel() == null){
|
|
|
+ if (user.getLevel() == null) {
|
|
|
user.setLevel(Constant.USER_LEVEL_INIT);
|
|
|
}
|
|
|
Integer growth = (int) growthPrice;
|
|
|
|
|
|
- addScoreAndGrowth(order.getOrderId(),user.getUserId(),growth,score);
|
|
|
+ addScoreAndGrowth(order.getOrderId(), user.getUserId(), growth, score);
|
|
|
//判断是否升级
|
|
|
//修改用户信息
|
|
|
//用户+增加成长值
|
|
|
- Integer nowGrowth = userExtension.getGrowth() == null ?growth:userExtension.getGrowth() + growth;
|
|
|
+ Integer nowGrowth = userExtension.getGrowth() == null ? growth : userExtension.getGrowth() + growth;
|
|
|
userExtension.setScore(userExtension.getScore() == null ? score : userExtension.getScore() + score);
|
|
|
userExtension.setGrowth(nowGrowth);
|
|
|
userExtension.setUpdateTime(new Date());
|
|
|
//如果用户是付费会员则不提升等级,只修改成长值
|
|
|
//判断用户是否提升过等级,如果是修改用户等级并添加用户等级提升日志
|
|
|
- List<UserLevel> userLevels = userLevelMapper.selectListAndCoupons(nowGrowth,userExtension.getLevel());
|
|
|
- if(user.getLevelType() == 1 || CollectionUtils.isEmpty(userLevels)){
|
|
|
+ List<UserLevel> userLevels = userLevelMapper.selectListAndCoupons(nowGrowth, userExtension.getLevel());
|
|
|
+ if (user.getLevelType() == 1 || CollectionUtils.isEmpty(userLevels)) {
|
|
|
userExtensionMapper.updateById(userExtension);
|
|
|
- }else{
|
|
|
+ } else {
|
|
|
Integer level = userLevels.get(0).getLevel();
|
|
|
//修改用户等级
|
|
|
user.setLevel(level);
|
|
@@ -376,19 +385,20 @@ public class UserLevelServiceImpl extends ServiceImpl<UserLevelMapper, UserLevel
|
|
|
//判断用户是否提升过等级
|
|
|
Integer historyLevel = userLevelLogService.getMaxLevelByUserId(user.getUserId());
|
|
|
//等级提升发放奖品及添加等级提升日志
|
|
|
- levelUp(userLevels,null,userExtension,historyLevel);
|
|
|
+ levelUp(userLevels, null, userExtension, historyLevel);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 添加积分明细、积分日志、成长值日志
|
|
|
+ *
|
|
|
* @param orderId 订单号
|
|
|
- * @param userId 用户id
|
|
|
- * @param growth 成长值
|
|
|
- * @param score 积分
|
|
|
+ * @param userId 用户id
|
|
|
+ * @param growth 成长值
|
|
|
+ * @param score 积分
|
|
|
*/
|
|
|
private void addScoreAndGrowth(Long orderId, String userId, Integer growth, Integer score) {
|
|
|
- if(score > 0) {
|
|
|
+ if (score > 0) {
|
|
|
//添加积分明细
|
|
|
UserScoreDetail addDetail = new UserScoreDetail();
|
|
|
addDetail.setCreateTime(new Date());
|
|
@@ -408,7 +418,7 @@ public class UserLevelServiceImpl extends ServiceImpl<UserLevelMapper, UserLevel
|
|
|
userScoreLog.setIoType(1);
|
|
|
userScoreLogService.save(userScoreLog);
|
|
|
}
|
|
|
- if(growth > 0) {
|
|
|
+ if (growth > 0) {
|
|
|
//添加成长值日志
|
|
|
UserGrowthLog userGrowthLog = new UserGrowthLog();
|
|
|
userGrowthLog.setChangeGrowth(growth);
|
|
@@ -462,24 +472,25 @@ public class UserLevelServiceImpl extends ServiceImpl<UserLevelMapper, UserLevel
|
|
|
|
|
|
/**
|
|
|
* 用户购买会员后提升会员等级
|
|
|
- * @param user 用户信息
|
|
|
- * @param userLevel 用户等级
|
|
|
+ *
|
|
|
+ * @param user 用户信息
|
|
|
+ * @param userLevel 用户等级
|
|
|
* @param userExtension 用户扩展信息
|
|
|
*/
|
|
|
private void updateUserLevel(User user, UserLevel userLevel, UserExtension userExtension) {
|
|
|
Integer level = userLevel.getLevel();
|
|
|
DateTime endTime;
|
|
|
- Map<Integer,Integer> dateMap = new HashMap<>(12);
|
|
|
- dateMap.put(1,1);
|
|
|
- dateMap.put(2,7);
|
|
|
- dateMap.put(3,31);
|
|
|
- dateMap.put(4,93);
|
|
|
- dateMap.put(5,366);
|
|
|
+ Map<Integer, Integer> dateMap = new HashMap<>(12);
|
|
|
+ dateMap.put(1, 1);
|
|
|
+ dateMap.put(2, 7);
|
|
|
+ dateMap.put(3, 31);
|
|
|
+ dateMap.put(4, 93);
|
|
|
+ dateMap.put(5, 366);
|
|
|
//修改用户等级
|
|
|
- if (user.getVipEndTime() == null || user.getLevel() < level || user.getLevel() >level) {
|
|
|
+ if (user.getVipEndTime() == null || user.getLevel() < level || user.getLevel() > level) {
|
|
|
endTime = DateUtil.offset(new Date(), DateField.HOUR_OF_DAY, 24 * userLevel.getTerm() * dateMap.get(userLevel.getTermType()));
|
|
|
- } else{
|
|
|
- endTime = DateUtil.offset(user.getVipEndTime(), DateField.HOUR_OF_DAY, 24 * userLevel.getTerm()* dateMap.get(userLevel.getTermType()));
|
|
|
+ } else {
|
|
|
+ endTime = DateUtil.offset(user.getVipEndTime(), DateField.HOUR_OF_DAY, 24 * userLevel.getTerm() * dateMap.get(userLevel.getTermType()));
|
|
|
}
|
|
|
user.setVipEndTime(endTime);
|
|
|
user.setLevel(level);
|
|
@@ -498,56 +509,38 @@ public class UserLevelServiceImpl extends ServiceImpl<UserLevelMapper, UserLevel
|
|
|
|
|
|
/**
|
|
|
* 等级提升
|
|
|
- * @param userLevels 多个等级,奖励发放时
|
|
|
+ *
|
|
|
+ * @param userLevels 多个等级,奖励发放时
|
|
|
* @param userLevelLog 等级日志,在购买付费会员时存在
|
|
|
- * @param user 用户详细信息
|
|
|
+ * @param user 用户详细信息
|
|
|
*/
|
|
|
@Override
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
- public void levelUp(List<UserLevel> userLevels, UserLevelLog userLevelLog, UserExtension user,Integer historyLevel) {
|
|
|
+ public void levelUp(List<UserLevel> userLevels, UserLevelLog userLevelLog, UserExtension user, Integer historyLevel) {
|
|
|
List<UserScoreLog> userScoreLogs = new ArrayList<>();
|
|
|
List<UserScoreDetail> userScoreDetails = new ArrayList<>();
|
|
|
//用户可能升多级,批量插入升级日志
|
|
|
List<UserLevelLog> levelLogs = new ArrayList<>();
|
|
|
List<Long> couponIds = new ArrayList<>();
|
|
|
for (UserLevel level : userLevels) {
|
|
|
+ if (ObjectUtils.isEmpty(level)) break;
|
|
|
//修改用户扩展表等级
|
|
|
user.setLevel(level.getLevel());
|
|
|
user.setLevelType(level.getLevelType());
|
|
|
- boolean isLevelUp = historyLevel != null &&(level.getLevel() <= historyLevel || level.getLevel().equals(user.getLevel()));
|
|
|
+ boolean isLevelUp = historyLevel != null && (level.getLevel() <= historyLevel || level.getLevel().equals(user.getLevel()));
|
|
|
//如果历史提升过此等级并且为普通会员就退出循环
|
|
|
- if(level.getLevelType() == 0 && isLevelUp){
|
|
|
+ if (level.getLevelType() == 0 && isLevelUp) {
|
|
|
break;
|
|
|
}
|
|
|
//升级奖励计算(积分,优惠券,商品)
|
|
|
- //1.积分
|
|
|
- if(level.getPresScore() != null && level.getPresScore() > 0) {
|
|
|
- UserScoreLog userScoreLog = new UserScoreLog();
|
|
|
- Integer score = level.getPresScore();
|
|
|
- userScoreLog.setUserId(user.getUserId());
|
|
|
- userScoreLog.setScore(score);
|
|
|
- userScoreLog.setSource(ScoreLogType.LEVEL_UP.value());
|
|
|
- userScoreLog.setCreateTime(DateUtil.date());
|
|
|
- userScoreLog.setIoType(1);
|
|
|
- userScoreLogs.add(userScoreLog);
|
|
|
-
|
|
|
- //添加积分明细
|
|
|
- UserScoreDetail addDetail = new UserScoreDetail();
|
|
|
- addDetail.setCreateTime(new Date());
|
|
|
- addDetail.setStatus(1);
|
|
|
- addDetail.setUserId(user.getUserId());
|
|
|
- addDetail.setUsableScore(score);
|
|
|
- userScoreDetails.add(addDetail);
|
|
|
-
|
|
|
- user.setScore(user.getScore() == null ? score : user.getScore() + score);
|
|
|
- }
|
|
|
+
|
|
|
//2.优惠券
|
|
|
//TODO
|
|
|
- if(CollectionUtils.isNotEmpty(level.getCouponIds())){
|
|
|
+ if (CollectionUtils.isNotEmpty(level.getCouponIds())) {
|
|
|
couponIds.addAll(level.getCouponIds());
|
|
|
}
|
|
|
//3.等级日志,如果不为空则为会员购买提升的等级就直接退出,修改一行
|
|
|
- if(userLevelLog != null){
|
|
|
+ if (userLevelLog != null) {
|
|
|
userLevelLog.setIsPayed(1);
|
|
|
userLevelLog.setState(1);
|
|
|
userLevelLog.setLevelType(1);
|
|
@@ -566,16 +559,16 @@ public class UserLevelServiceImpl extends ServiceImpl<UserLevelMapper, UserLevel
|
|
|
}
|
|
|
//修改扩展表信息
|
|
|
userExtensionMapper.updateById(user);
|
|
|
- if(CollectionUtils.isNotEmpty(couponIds)){
|
|
|
- applicationContext.publishEvent(new BatchBindCouponEvent(couponIds,user.getUserId(),0L));
|
|
|
+ if (CollectionUtils.isNotEmpty(couponIds)) {
|
|
|
+ applicationContext.publishEvent(new BatchBindCouponEvent(couponIds, user.getUserId(), 0L));
|
|
|
}
|
|
|
//保存积分日志、积分明细日志
|
|
|
- if(CollectionUtils.isNotEmpty(userScoreLogs)){
|
|
|
+ if (CollectionUtils.isNotEmpty(userScoreLogs)) {
|
|
|
userScoreLogService.saveBatch(userScoreLogs);
|
|
|
userScoreDetailService.saveBatch(userScoreDetails);
|
|
|
}
|
|
|
//批量保存等级日志
|
|
|
- if(CollectionUtils.isNotEmpty(levelLogs)){
|
|
|
+ if (CollectionUtils.isNotEmpty(levelLogs)) {
|
|
|
userLevelLogService.saveBatch(levelLogs);
|
|
|
}
|
|
|
}
|