Quellcode durchsuchen

作者:张哲
时间:2022/11/29
类型:开发
描述:配置管理-banner(上升/下降)

ZizgZh vor 2 Jahren
Ursprung
Commit
16375e48d2

+ 1 - 1
src/main/java/com/redxun/knowledge/controller/BannerController.java

@@ -97,7 +97,7 @@ public class BannerController extends BaseController<Banner> {
     public JsonResult goUpOrDownUp(@PathVariable("bannerId") String bannerId,
                                    @PathVariable("status") Boolean status){
         bannerService.goUpOrDownUp(bannerId,status);
-        return JsonResult.Success();
+        return JsonResult.Success("位置交换成功!");
     }
 
 }

+ 13 - 0
src/main/java/com/redxun/knowledge/mapper/BannerMapper.java

@@ -17,4 +17,17 @@ public interface BannerMapper extends BaseDao<Banner> {
     IPage findAllBanner(IPage<Banner> page, @Param("params") Map<String, Object> params,@Param("w") Map<String, Object> order);
 
     void deleteBanner(String pkId);
+
+    /**
+     * 上升/下降时候交换sort
+     * @param bannerId
+     * @param sort
+     */
+    void swapSort(@Param("bannerId") String bannerId,@Param("sort") Integer sort);
+
+    /**
+     * 新增/修改时候变更sort
+     * @param sort
+     */
+    void insertOrUpdateBySort(Integer sort);
 }

+ 86 - 34
src/main/java/com/redxun/knowledge/service/BannerServiceImpl.java

@@ -6,9 +6,10 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.redxun.common.base.db.BaseDao;
 import com.redxun.common.base.db.BaseService;
 import com.redxun.common.base.db.PageHelper;
-import com.redxun.common.base.entity.BaseEntity;
 import com.redxun.common.base.search.QueryFilter;
 import com.redxun.common.service.impl.SuperServiceImpl;
+import com.redxun.common.tool.BeanUtil;
+import com.redxun.common.tool.IdGenerator;
 import com.redxun.knowledge.entity.dao.Banner;
 import com.redxun.knowledge.entity.dao.Knowledge;
 import com.redxun.knowledge.entity.dao.KnowledgeCategory;
@@ -19,11 +20,11 @@ import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.StringUtils;
 
 import javax.annotation.Resource;
 import java.io.Serializable;
-import java.util.Date;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -72,22 +73,6 @@ public class BannerServiceImpl extends SuperServiceImpl<BannerMapper, Banner> im
             }
         });
 
-        if (filter.getParams().containsKey("bannerId") && filter.getParams().containsKey("flag")){
-            String bannerId = (String) filter.getParams().get("bannerId");
-            Boolean flag = (Boolean) filter.getParams().get("flag");
-            if (flag){
-                Banner banner = this.get(bannerId);
-                BannerAdminVo bannerAdminVo = new BannerAdminVo();
-                BeanUtils.copyProperties(banner,bannerAdminVo);
-                int i = bannerAdminVos.indexOf(bannerAdminVo);
-                log.info("上升记录位置 -> {}",i);
-                BannerAdminVo bannerAdminVoPre = bannerAdminVos.get(i - 1);
-                // 交换排序
-                int temp = bannerAdminVo.getSort();
-                bannerAdminVo.setSort(bannerAdminVoPre.getSort());
-                bannerAdminVoPre.setSort(temp);
-            }
-        }
         return page;
     }
 
@@ -113,6 +98,89 @@ public class BannerServiceImpl extends SuperServiceImpl<BannerMapper, Banner> im
         return banner;
     }
 
+    /**
+     * 新增banner
+     * @param entity
+     * @return
+     */
+    @Override
+    public int insert(Banner entity) {
+        if (BeanUtil.isEmpty(entity.getPkId())) {
+            entity.setPkId(IdGenerator.getIdStr());
+        }
+        if (entity.getSort() == null){
+            entity.setSort(0);
+        }
+        QueryWrapper<Banner> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("SORT",entity.getSort());
+        Integer integer = bannerMapper.selectCount(queryWrapper);
+        if (integer > 0){
+            bannerMapper.insertOrUpdateBySort(entity.getSort());
+        }
+        return this.getRepository().insert(entity);
+    }
+
+    /**
+     * 修改banner
+     * @param entity
+     * @return
+     */
+    @Override
+    public int update(Banner entity) {
+        if (entity.getSort() != null){
+            QueryWrapper<Banner> queryWrapper = new QueryWrapper<>();
+            queryWrapper.eq("SORT",entity.getSort());
+            Integer integer = bannerMapper.selectCount(queryWrapper);
+            if (integer > 0){
+                bannerMapper.insertOrUpdateBySort(entity.getSort());
+            }
+        }
+        return this.getRepository().updateById(entity);
+    }
+
+
+    /**
+     * 状态为true,上升;为false,下降
+     * @param bannerId
+     * @param status
+     */
+    @Transactional(rollbackFor = Exception.class)
+    public void goUpOrDownUp(String bannerId,Boolean status) {
+        Banner banner = this.get(bannerId);
+        Integer sort = banner.getSort();
+        if (status){
+            // 上升
+            QueryWrapper<Banner> queryWrapper = new QueryWrapper<>();
+            queryWrapper.orderByAsc("SORT").orderByDesc("ENABLED");
+            List<Banner> banners = bannerMapper.selectList(queryWrapper);
+            List<Banner> collect = banners.stream().filter(e -> e.getSort() < sort).collect(Collectors.toList());
+            Banner bannerPre = collect.get(collect.size() - 1);
+            // 交换位置
+            int temp = sort;
+            bannerMapper.swapSort(bannerId,bannerPre.getSort());
+            bannerMapper.swapSort(bannerPre.getPkId(),temp);
+        } else {
+            // 下降
+            QueryWrapper<Banner> queryWrapper = new QueryWrapper<>();
+            queryWrapper.orderByAsc("SORT").orderByDesc("ENABLED");
+            List<Banner> banners = bannerMapper.selectList(queryWrapper);
+            List<Banner> collect = banners.stream().filter(e -> e.getSort() > sort).collect(Collectors.toList());
+            Banner bannerNext = collect.get(0);
+            // 交换位置
+            int temp = sort;
+            bannerMapper.swapSort(bannerId,bannerNext.getSort());
+            bannerMapper.swapSort(bannerNext.getPkId(),temp);
+        }
+    }
+
+    /**
+     * 删除banner
+     * @param pkId
+     */
+    public void deleteBanner(String pkId) {
+        bannerMapper.deleteBanner(pkId);
+    }
+
     /**
      * 前台查询全部banner展示(默认展示10张)
      * @return
@@ -131,22 +199,6 @@ public class BannerServiceImpl extends SuperServiceImpl<BannerMapper, Banner> im
         return collectBannerPcVo;
     }
 
-    public void deleteBanner(String pkId) {
-        bannerMapper.deleteBanner(pkId);
-    }
 
-    /**
-     * 状态为true,上升;为false,下降
-     * @param bannerId
-     * @param status
-     */
-    public void goUpOrDownUp(String bannerId,Boolean status) {
-        Banner banner = this.get(bannerId);
-        Integer sort = banner.getSort();
-        QueryWrapper<Banner> queryWrapper = new QueryWrapper<>();
-        queryWrapper.gt("SORT",sort);
-        List<Banner> banners = bannerMapper.selectList(queryWrapper);
-        log.info("bannerList -> {}",banners);
 
-    }
 }

+ 12 - 10
src/main/java/com/redxun/knowledge/service/KnowledgeCategoryServiceImpl.java

@@ -13,8 +13,8 @@ import javax.annotation.Resource;
 import java.util.List;
 
 /**
-* [业务--知识分类表]业务服务类
-*/
+ * [业务--知识分类表]业务服务类
+ */
 @Service
 public class KnowledgeCategoryServiceImpl extends SuperServiceImpl<KnowledgeCategoryMapper, KnowledgeCategory> implements BaseService<KnowledgeCategory> {
 
@@ -29,25 +29,27 @@ public class KnowledgeCategoryServiceImpl extends SuperServiceImpl<KnowledgeCate
     // 根据id查询其下级分类信息(懒加载)
     public KnowledgeCategory findAllByCategoryId(String categoryId) {
         QueryWrapper<KnowledgeCategory> queryWrapper = new QueryWrapper<>();
-        queryWrapper.eq("PK_ID",categoryId);
+        queryWrapper.eq("PK_ID", categoryId);
         KnowledgeCategory knowledgeCategory = knowledgeCategoryMapper.selectById(categoryId);
         Boolean hasChild = findHasChirld(knowledgeCategory);
         knowledgeCategory.setHasChild(hasChild);
+
         if (hasChild){
             List<KnowledgeCategory> allChildren = findAllChildren(knowledgeCategory);
             knowledgeCategory.setChildren(allChildren);
             allChildren.forEach(e -> {
                 Boolean hasChirld = findHasChirld(e);
                 e.setHasChild(hasChirld);
-                List<KnowledgeCategory> allChildrens = findAllChildren(e);
-                e.setChildren(allChildrens);
             });
+        } else {
+            knowledgeCategory.setChildren(findAllChildren(knowledgeCategory));
         }
+
         return knowledgeCategory;
     }
 
     // 查询孩子节点
-    private List<KnowledgeCategory> findAllChildren(KnowledgeCategory knowledgeCategory){
+    private List<KnowledgeCategory> findAllChildren(KnowledgeCategory knowledgeCategory) {
         QueryWrapper<KnowledgeCategory> queryWrapper = new QueryWrapper<>();
         queryWrapper.eq("PARENT", knowledgeCategory.getPkId());
         List<KnowledgeCategory> knowledgeCategories = knowledgeCategoryMapper.selectList(queryWrapper);
@@ -55,11 +57,11 @@ public class KnowledgeCategoryServiceImpl extends SuperServiceImpl<KnowledgeCate
     }
 
     // 判断是否有孩子节点
-    private Boolean findHasChirld(KnowledgeCategory knowledgeCategory){
+    private Boolean findHasChirld(KnowledgeCategory knowledgeCategory) {
         QueryWrapper<KnowledgeCategory> queryWrapper = new QueryWrapper<>();
-        queryWrapper.eq("PARENT",knowledgeCategory.getPkId());
-        Integer count= knowledgeCategoryMapper.selectCount(queryWrapper);
-        if (count > 0){
+        queryWrapper.eq("PARENT", knowledgeCategory.getPkId());
+        Integer count = knowledgeCategoryMapper.selectCount(queryWrapper);
+        if (count > 0) {
             return true;
         } else {
             return false;

+ 21 - 7
src/main/resources/mapper/knowledge/BannerMapper.xml

@@ -70,13 +70,13 @@
             </if>
             and IS_DEL = 0
         </where>
-        ORDER BY ENABLED DESC,SORT DESC
-        <if test="@rx.Ognl@isNotEmpty(w.orderBySql)">
-            ,${w.orderBySql}
-        </if>
-        <if test="@rx.Ognl@isEmpty(w.orderBySql)">
-            ,UPDATE_TIME_ DESC
-        </if>
+        ORDER BY SORT ASC ,ENABLED DESC
+<!--        <if test="@rx.Ognl@isNotEmpty(w.orderBySql)">-->
+<!--            ,${w.orderBySql}-->
+<!--        </if>-->
+<!--        <if test="@rx.Ognl@isEmpty(w.orderBySql)">-->
+<!--            ,UPDATE_TIME_ DESC-->
+<!--        </if>-->
 
     </select>
 
@@ -87,6 +87,20 @@
         where PK_ID = #{pkId}
     </delete>
 
+    <update id="swapSort">
+        update KM_BANNER
+        set
+            SORT = #{sort}
+        where PK_ID = #{bannerId}
+    </update>
+
+    <update id="insertOrUpdateBySort">
+        update KM_BANNER
+        set SORT = SORT + 1
+        where SORT >= #{sort}
+    </update>
+
+
 </mapper>