Sfoglia il codice sorgente

首页订单和分类

wang 3 settimane fa
parent
commit
244e0caebf

+ 5 - 1
yami-shop-api/src/main/java/com/yami/shop/api/controller/CategoryController.java

@@ -17,6 +17,7 @@ import com.yami.shop.bean.app.dto.CategoryDto;
 import com.yami.shop.bean.model.Category;
 import com.yami.shop.bean.vo.ListCategoryForUserVO;
 import com.yami.shop.service.CategoryService;
+import com.yami.shop.service.IShopCategoryService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiImplicitParam;
 import io.swagger.annotations.ApiImplicitParams;
@@ -45,6 +46,9 @@ public class CategoryController {
     @Autowired
     private CategoryService categoryService;
 
+    @Autowired
+    private IShopCategoryService shopCategoryService;
+
     @Autowired
     private MapperFacade mapperFacade;
 
@@ -62,7 +66,7 @@ public class CategoryController {
                                                            @RequestParam(value = "shopId",required = false) Long shopId,
                                                            @RequestParam(value = "current", defaultValue = "1") Integer current,
                                                            @RequestParam(value = "size", defaultValue = "10") Integer size) {
-        IPage<Category> categories = categoryService.listByParentIdAndShopId(parentId,shopId, current, size);
+        IPage<Category> categories = shopCategoryService.listByParentIdAndShopId(parentId,shopId, current, size);
 //        List<CategoryDto> categoryDtos = mapperFacade.mapAsList(categories, CategoryDto.class);
         List<Category> records = categories.getRecords();
         List<CategoryDto> categoryDtos = new ArrayList<>(records.size());

+ 9 - 0
yami-shop-service/src/main/java/com/yami/shop/service/IShopCategoryService.java

@@ -1,6 +1,8 @@
 package com.yami.shop.service;
 
+import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.yami.shop.bean.model.Category;
 import com.yami.shop.bean.model.FrontCategory;
 import com.yami.shop.bean.model.ShopCategory;
 import com.yami.shop.bean.vo.FrontCategoryVO;
@@ -37,4 +39,11 @@ public interface IShopCategoryService extends IService<ShopCategory> {
      * @param file  文件
      */
     void importCategory(MultipartFile file);
+    /**
+     * 根据店铺id和顶级分类id,获取分类
+     * @param parentId
+     * @param shopId
+     * @return
+     */
+    IPage<Category> listByParentIdAndShopId(Long parentId, Long shopId, Integer current, Integer size);
 }

+ 0 - 1
yami-shop-service/src/main/java/com/yami/shop/service/impl/ProductServiceImpl.java

@@ -219,7 +219,6 @@ public class ProductServiceImpl extends ServiceImpl<ProductMapper, Product> impl
             }
             IPage<SearchProdDto> searchProdDtoPage = productMapper.getSearchProdDtoPageByProdNameNew(page, searchParam, shopIds);
             for (SearchProdDto searchProdDto : searchProdDtoPage.getRecords()) {
-                //TODO wangjian 查询具体的价格
                 List<SkuDto> skuList = skuMapper.listByProdId(searchProdDto.getProdId()).stream().map((sku) -> SkuDto.builder()
                         .skuName(sku.getSkuName()).pic(sku.getPic()).skuScore(sku.getSkuScore()).price(sku.getPrice())
                         .stocks(sku.getStocks()).properties(sku.getProperties()).skuId(sku.getSkuId())

+ 76 - 45
yami-shop-service/src/main/java/com/yami/shop/service/impl/ShopCategoryServiceImpl.java

@@ -4,8 +4,11 @@ import com.alibaba.excel.EasyExcel;
 import com.alibaba.excel.context.AnalysisContext;
 import com.alibaba.excel.event.AnalysisEventListener;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.yami.shop.bean.dto.ShopCategoryExcelDTO;
+import com.yami.shop.bean.model.Category;
 import com.yami.shop.bean.model.FrontCategory;
 import com.yami.shop.bean.model.ShopCategory;
 import com.yami.shop.bean.model.ShopCategory;
@@ -18,6 +21,7 @@ import com.yami.shop.dao.ShopDetailMapper;
 import com.yami.shop.service.IShopCategoryService;
 import lombok.AllArgsConstructor;
 import org.apache.commons.lang3.ObjectUtils;
+import org.springframework.beans.BeanUtils;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.multipart.MultipartFile;
@@ -26,6 +30,7 @@ import javax.servlet.http.HttpServletResponse;
 import java.net.URLEncoder;
 import java.util.ArrayList;
 import java.util.List;
+import java.util.stream.Collectors;
 
 /**
  * 门店前台类目服务实现类
@@ -44,7 +49,6 @@ public class ShopCategoryServiceImpl extends ServiceImpl<ShopCategoryMapper, Sho
     private final ShopDetailMapper shopDetailMapper;
 
 
-
     @Override
     public List<ShopCategory> treeShopCategory(Long shopId, String name) {
         // 获取所有未删除的前台类目
@@ -55,6 +59,7 @@ public class ShopCategoryServiceImpl extends ServiceImpl<ShopCategoryMapper, Sho
         // 构建树形结构
         return buildCategoryTree(shopCategories, "0"); // 假设根节点的parentCode为"0"
     }
+
     /**
      * 构建类目树形结构
      *
@@ -121,10 +126,10 @@ public class ShopCategoryServiceImpl extends ServiceImpl<ShopCategoryMapper, Sho
                     category.setPid(0L);
                     this.save(category);
                     //添加对应的二级和三级类目
-                    FrontCategory  frontCategoryByName = frontCategoryMapper.selectListName(category.getSubName());
+                    FrontCategory frontCategoryByName = frontCategoryMapper.selectListName(category.getSubName());
                     frontCategoryByName.setParentCode(category.getCode());
                     frontCategoryByName.setParentName(category.getName());
-                    addShopCategory(frontCategoryByName,category.getHbShopId(),shopId,category.getId());
+                    addShopCategory(frontCategoryByName, category.getHbShopId(), shopId, category.getId());
                 }
             }
         } catch (Exception e) {
@@ -133,13 +138,39 @@ public class ShopCategoryServiceImpl extends ServiceImpl<ShopCategoryMapper, Sho
         }
     }
 
+    @Override
+    public IPage<Category> listByParentIdAndShopId(Long parentId, Long shopId, Integer current, Integer size) {
+        IPage<ShopCategory> page = page(new Page<>(current, size), new LambdaQueryWrapper<ShopCategory>()
+                .eq(ShopCategory::getShopId, shopId)
+                .eq(ShopCategory::getPid, parentId)
+                .orderByDesc(ShopCategory::getNum)
+                .orderByDesc(ShopCategory::getId));
+        Page res = new Page();
+        BeanUtils.copyProperties(page, res);
+        List<Category> categories = page.getRecords().stream().map((sc) -> {
+            Category category = new Category();
+            category.setCategoryId(sc.getId());
+            category.setShopId(sc.getShopId());
+            category.setParentId(sc.getPid());
+            category.setCategoryName(sc.getName());
+            category.setIcon(sc.getIcon());
+            category.setPic(sc.getPic());
+            category.setSeq(sc.getNum());
+            category.setGrade(sc.getLevel());
+            return category;
+        }).collect(Collectors.toList());
+        res.setRecords(categories);
+        return res;
+    }
+
     /**
      * 添加对应的二级和三级类目
+     *
      * @param frontCategory 前台类目模板
-     * @param hbShopId 海报
-     * @param shopId 门店ID
+     * @param hbShopId      海报
+     * @param shopId        门店ID
      */
-    private void addShopCategory(FrontCategory frontCategory, String hbShopId, Long shopId,Long id) {
+    private void addShopCategory(FrontCategory frontCategory, String hbShopId, Long shopId, Long id) {
         ShopCategory shopCategory = new ShopCategory();
         shopCategory.setPid(id);
         shopCategory.setName(frontCategory.getName());
@@ -159,7 +190,7 @@ public class ShopCategoryServiceImpl extends ServiceImpl<ShopCategoryMapper, Sho
         List<FrontCategory> frontCategoryList = frontCategoryMapper.selectList(new LambdaQueryWrapper<FrontCategory>()
                 .eq(FrontCategory::getParentCode, frontCategory.getCode()));
         for (FrontCategory frontCategory1 : frontCategoryList) {
-            addShopCategory(frontCategory1,hbShopId,shopId,shopCategory.getId());
+            addShopCategory(frontCategory1, hbShopId, shopId, shopCategory.getId());
         }
     }
 
@@ -223,57 +254,57 @@ public class ShopCategoryServiceImpl extends ServiceImpl<ShopCategoryMapper, Sho
         // 使用时间戳+随机数生成唯一编码
         long timestamp = System.currentTimeMillis();
         int randomNum = (int) (Math.random() * 9999);
-        return "BM"+timestamp + String.format("%04d", randomNum);
+        return "BM" + timestamp + String.format("%04d", randomNum);
     }
+
     /**
      * 验证门店前台类目数据有效性
      *
      * @param category 门店前台类目
      */
-    private Long validateShopCategories(ShopCategory category,int i) {
-            // 检查必填字段
-            if (ObjectUtils.isEmpty(category.getName())) {
-                throw new GlobalException("第" + (i + 1) + "行:类目名称不能为空");
-            }
-            if (ObjectUtils.isEmpty(category.getHbShopId())) {
-                throw new GlobalException("第" + (i + 1) + "行:门店ID不能为空");
-            }
-            ShopDetail shopDetail = shopDetailMapper.selectByHbStationId(category.getHbShopId());
-            if (ObjectUtils.isEmpty(shopDetail)) {
-                throw new GlobalException("第" + (i + 1) + "行:门店不存在");
-            }
+    private Long validateShopCategories(ShopCategory category, int i) {
+        // 检查必填字段
+        if (ObjectUtils.isEmpty(category.getName())) {
+            throw new GlobalException("第" + (i + 1) + "行:类目名称不能为空");
+        }
+        if (ObjectUtils.isEmpty(category.getHbShopId())) {
+            throw new GlobalException("第" + (i + 1) + "行:门店ID不能为空");
+        }
+        ShopDetail shopDetail = shopDetailMapper.selectByHbStationId(category.getHbShopId());
+        if (ObjectUtils.isEmpty(shopDetail)) {
+            throw new GlobalException("第" + (i + 1) + "行:门店不存在");
+        }
 
-            // 检查类目名称长度
-            if (category.getName().length() > 255) {
-                throw new GlobalException("第" + (i + 1) + "行:类目名称长度不能超过255个字符");
-            }
+        // 检查类目名称长度
+        if (category.getName().length() > 255) {
+            throw new GlobalException("第" + (i + 1) + "行:类目名称长度不能超过255个字符");
+        }
 
-            // 检查是否已存在相同记录(根据类目名称+门店ID)
-            ShopCategory existingCategory = this.getOne(new LambdaQueryWrapper<ShopCategory>()
-                    .eq(ShopCategory::getName, category.getName())
-                    .eq(ShopCategory::getShopId, category.getShopId())
-                    .last("LIMIT 1"));
+        // 检查是否已存在相同记录(根据类目名称+门店ID)
+        ShopCategory existingCategory = this.getOne(new LambdaQueryWrapper<ShopCategory>()
+                .eq(ShopCategory::getName, category.getName())
+                .eq(ShopCategory::getShopId, category.getShopId())
+                .last("LIMIT 1"));
 
-            if (existingCategory != null) {
-                throw new GlobalException("第" + (i + 1) + "行:门店'" + category.getShopId() +
-                        "'下已存在类目名称为'" + category.getName() + "'的记录");
-            }
+        if (existingCategory != null) {
+            throw new GlobalException("第" + (i + 1) + "行:门店'" + category.getShopId() +
+                    "'下已存在类目名称为'" + category.getName() + "'的记录");
+        }
 
-            //查看前台类目模板里面是否存在二级类目
-            Integer integer = frontCategoryMapper.selectCount(new LambdaQueryWrapper<FrontCategory>()
-                    .eq(FrontCategory::getName, category.getSubName())
-                    .eq(FrontCategory::getIsDelete, 0));
+        //查看前台类目模板里面是否存在二级类目
+        Integer integer = frontCategoryMapper.selectCount(new LambdaQueryWrapper<FrontCategory>()
+                .eq(FrontCategory::getName, category.getSubName())
+                .eq(FrontCategory::getIsDelete, 0));
 
-            if (integer < 1) {
-                throw new GlobalException("第" + (i + 1) + "行:二级类目"+category.getSubName()+"不存在");
-            }
+        if (integer < 1) {
+            throw new GlobalException("第" + (i + 1) + "行:二级类目" + category.getSubName() + "不存在");
+        }
 
-            if (integer > 1) {
-                throw new GlobalException("第" + (i + 1) + "行:二级类目"+category.getSubName()+"存在多个");
-            }
-            return shopDetail.getShopId();
+        if (integer > 1) {
+            throw new GlobalException("第" + (i + 1) + "行:二级类目" + category.getSubName() + "存在多个");
+        }
+        return shopDetail.getShopId();
     }
 
 
-
 }

+ 5 - 5
yami-shop-user/yami-shop-user-api/src/main/java/com/yami/shop/user/api/controller/UserScoreController.java

@@ -134,11 +134,11 @@ public class UserScoreController {
         scoreDataDto.setShopScore(scoreParam.getShopGetScore());
         scoreDataDto.setIsSignIn(isSignIn(userId)? 1:0);
         scoreDataDto.setLevelType(userExtension.getLevelType());
-        UserLevel userLevel = userLevelService.getOne(new LambdaQueryWrapper<UserLevel>()
-                .eq(UserLevel::getLevel, userExtension.getLevel())
-                .eq(UserLevel::getLevelType, userExtension.getLevelType())
-        );
-        scoreDataDto.setLevelName(userLevel.getLevelName());
+//        UserLevel userLevel = userLevelService.getOne(new LambdaQueryWrapper<UserLevel>()
+//                .eq(UserLevel::getLevel, userExtension.getLevel())
+//                .eq(UserLevel::getLevelType, userExtension.getLevelType())
+//        );
+        //scoreDataDto.setLevelName(userLevel.getLevelName());
         //计算签到天数
         Integer count = scoreLogService.getConsecutiveDays(userId);
         //如果没有记录就是第一天签到

+ 112 - 119
yami-shop-user/yami-shop-user-comment/src/main/java/com/yami/shop/user/comment/service/impl/UserLevelServiceImpl.java

@@ -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);
         }
     }