Explorar el Código

update:修改sysmenu实现

荭琪枫 hace 2 años
padre
commit
cd59eb8481

+ 35 - 12
iot-common/iot-common-dao/iot-data-service/src/main/java/cc/iotkit/data/ICommonData.java

@@ -14,6 +14,7 @@ import cc.iotkit.model.Id;
 import cc.iotkit.common.api.Paging;
 
 import java.util.Collection;
+import java.util.Collections;
 import java.util.List;
 
 /**
@@ -24,58 +25,80 @@ public interface ICommonData<T extends Id<ID>, ID> {
     /**
      * 通过ID取数据
      */
-    T findById(ID id);
+    default T findById(ID id) {
+        return null;
+
+    }
 
     /**
      * 通过ID取数据
      */
-    List<T> findByIds(Collection<ID> id);
+    default List<T> findByIds(Collection<ID> id) {
+        return Collections.EMPTY_LIST;
+
+    }
 
 
     /**
      * 保存数据,id不为空更新,否则添加
      */
-    T save(T data);
+    default T save(T data) {
+        return data;
+
+    }
 
 
     /**
      * 批量保存数据
      */
-    void batchSave(List<T> data);
+    default void batchSave(List<T> data) {
+    }
 
     /**
      * 按id删除
      */
-    void deleteById(ID id);
+    default void deleteById(ID id) {
+    }
 
     /**
      * 按id批量删除
      */
-    void deleteByIds(Collection<ID> ids);
+    default void deleteByIds(Collection<ID> ids) {
+    }
 
     /**
      * 总数统计
      */
-    long count();
+    default long count() {
+        return 0L;
+    }
 
     /**
      * 取所有数据
      */
-    List<T> findAll();
+    default List<T> findAll() {
+        return null;
+    }
 
     /**
      * 分页获取所有信息
      */
-    Paging<T> findAll(PageRequest<T> pageRequest);
+    default Paging<T> findAll(PageRequest<T> pageRequest) {
+        return null;
+    }
 
     /**
      * 按条件查询多个结果
      */
-    List<T> findAllByCondition(T data);
+    default List<T> findAllByCondition(T data) {
+        return Collections.EMPTY_LIST;
+
+    }
 
     /**
      * 按条件查询单个结果
      */
-    T findOneByCondition(T data);
-
+    default T findOneByCondition(T data) {
+        return data;
+    }
 }

+ 13 - 5
iot-common/iot-common-dao/iot-data-service/src/main/java/cc/iotkit/data/IOwnedData.java

@@ -9,10 +9,10 @@
  */
 package cc.iotkit.data;
 
-import cc.iotkit.data.ICommonData;
-import cc.iotkit.model.Owned;
 import cc.iotkit.common.api.Paging;
+import cc.iotkit.model.Owned;
 
+import java.util.Collections;
 import java.util.List;
 
 /**
@@ -23,13 +23,21 @@ public interface IOwnedData<T extends Owned<ID>, ID> extends ICommonData<T, ID>
     /**
      * 按所属用户取数据
      */
-    List<T> findByUid(String uid);
+    default List<T> findByUid(String uid) {
+        return Collections.EMPTY_LIST;
 
-    Paging<T> findByUid(String uid, int page, int size);
+    }
+
+    default Paging<T> findByUid(String uid, int page, int size) {
+        return null;
+    }
 
     /**
      * 按所属用户统计总数
      */
-    long countByUid(String uid);
+    default long countByUid(String uid) {
+        return 0L;
+
+    }
 
 }

+ 8 - 2
iot-common/iot-common-dao/iot-data-service/src/main/java/cc/iotkit/data/manager/IHomeData.java

@@ -15,8 +15,14 @@ import cc.iotkit.model.space.Home;
 
 public interface IHomeData extends IOwnedData<Home, String> {
 
-    Home findByUidAndCurrent(String uid, boolean current);
+    default Home findByUidAndCurrent(String uid, boolean current) {
+        return null;
 
-    Home findByUidAndId(String uid, String id);
+    }
+
+    default Home findByUidAndId(String uid, String id) {
+        return null;
+
+    }
 
 }

+ 7 - 5
iot-common/iot-common-dao/iot-data-serviceImpl-rdb/src/main/java/cc/iotkit/data/model/TbSysMenu.java

@@ -1,15 +1,12 @@
 package cc.iotkit.data.model;
 
-import cc.iotkit.data.model.BaseEntity;
-import cc.iotkit.model.system.SysDictData;
 import cc.iotkit.model.system.SysMenu;
 import io.github.linpeilie.annotations.AutoMapper;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
+import org.hibernate.annotations.GenericGenerator;
 
-import javax.persistence.Entity;
-import javax.persistence.Id;
-import javax.persistence.Table;
+import javax.persistence.*;
 
 /**
  * 菜单权限表 sys_menu
@@ -28,16 +25,21 @@ public class TbSysMenu extends BaseEntity {
      * 菜单ID
      */
     @Id
+    @GeneratedValue(generator = "SnowflakeIdGenerator")
+    @GenericGenerator(name = "SnowflakeIdGenerator", strategy = "cc.iotkit.data.config.id.SnowflakeIdGenerator")
+    @Column(name = "menu_id")
     private Long menuId;
 
     /**
      * 父菜单ID
      */
+    @Column(name = "parent_id")
     private Long parentId;
 
     /**
      * 菜单名称
      */
+    @Column(name = "menu_name")
     private String menuName;
 
     /**

+ 28 - 31
iot-common/iot-common-dao/iot-data-serviceImpl-rdb/src/main/java/cc/iotkit/data/service/SysMenuDataImpl.java

@@ -7,25 +7,24 @@ import cc.iotkit.common.exception.BizException;
 import cc.iotkit.common.utils.MapstructUtils;
 import cc.iotkit.common.utils.StringUtils;
 import cc.iotkit.data.dao.SysMenuRepository;
-import cc.iotkit.data.model.TbSysConfig;
 import cc.iotkit.data.model.TbSysMenu;
 import cc.iotkit.data.system.ISysMenuData;
 import cc.iotkit.data.util.PredicateBuilder;
-import cc.iotkit.model.system.SysConfig;
 import cc.iotkit.model.system.SysMenu;
-import com.querydsl.core.BooleanBuilder;
-import com.querydsl.core.types.Predicate;
+import com.querydsl.core.types.Projections;
 import com.querydsl.jpa.impl.JPAQueryFactory;
 import lombok.RequiredArgsConstructor;
 import org.springframework.context.annotation.Primary;
 import org.springframework.stereotype.Service;
 
-import javax.persistence.EntityManager;
 import java.util.Collection;
 import java.util.List;
 import java.util.stream.Collectors;
 
 import static cc.iotkit.data.model.QTbSysMenu.tbSysMenu;
+import static cc.iotkit.data.model.QTbSysRole.tbSysRole;
+import static cc.iotkit.data.model.QTbSysRoleMenu.tbSysRoleMenu;
+import static cc.iotkit.data.model.QTbSysUserRole.tbSysUserRole;
 
 
 /**
@@ -40,6 +39,8 @@ public class SysMenuDataImpl implements ISysMenuData {
 
     private final SysMenuRepository sysMenuRepository;
 
+    private final JPAQueryFactory jpaQueryFactory;
+
     @Override
     public SysMenu findById(Long id) {
         TbSysMenu tbSysMenu = sysMenuRepository.findById(id).orElseThrow(() ->
@@ -108,37 +109,33 @@ public class SysMenuDataImpl implements ISysMenuData {
     @Override
     public List<SysMenu> selectMenuList(SysMenu menu, Long userId, boolean isSuperAdmin) {
 
-        PredicateBuilder predicateBuilder = PredicateBuilder.instance(tbSysMenu.menuId.isNotNull());
-
+        PredicateBuilder predicateBuilder = PredicateBuilder.instance()
+                .and(StringUtils.isNotBlank(menu.getMenuName()), () -> tbSysMenu.menuName.like(menu.getMenuName()))
+                .and(StringUtils.isNotBlank(menu.getVisible()), () -> tbSysMenu.visible.eq(menu.getVisible()))
+                .and(StringUtils.isNotBlank(menu.getStatus()), () -> tbSysMenu.status.eq(menu.getStatus()));
 
         // 管理员显示所有菜单信息
+        List<TbSysMenu> tbSysMenuList;
         if (isSuperAdmin) {
-            predicateBuilder
-                    .and(StringUtils.isNotBlank(menu.getMenuName()), () -> tbSysMenu.menuName.like(menu.getMenuName()))
-                    .and(StringUtils.isNotBlank(menu.getVisible()), () -> tbSysMenu.visible.eq(menu.getVisible()))
-                    .and(StringUtils.isNotBlank(menu.getStatus()), () -> tbSysMenu.status.eq(menu.getStatus()));
-
-            menuList = baseMapper.selectVoList(new LambdaQueryWrapper<SysMenu>()
-                    .like(StringUtils.isNotBlank(menu.getMenuName()), SysMenu::getMenuName, menu.getMenuName())
-                    .eq(StringUtils.isNotBlank(menu.getVisible()), SysMenu::getVisible, menu.getVisible())
-                    .eq(StringUtils.isNotBlank(menu.getStatus()), SysMenu::getStatus, menu.getStatus())
-                    .orderByAsc(SysMenu::getParentId)
-                    .orderByAsc(SysMenu::getOrderNum));
+            tbSysMenuList = jpaQueryFactory.select(tbSysMenu)
+                    .where(predicateBuilder.build())
+                    .orderBy(tbSysMenu.parentId.asc(), tbSysMenu.orderNum.asc()).fetch();
         } else {
-            predicateBuilder.and(tbSysMenu.menuId.eq(userId));
-            BooleanBuilder builder = new BooleanBuilder();
-            QueryWrapper<SysMenu> wrapper = Wrappers.query();
-            wrapper.eq("sur.user_id", userId)
-                    .like(StringUtils.isNotBlank(menu.getMenuName()), "m.menu_name", menu.getMenuName())
-                    .eq(StringUtils.isNotBlank(menu.getVisible()), "m.visible", menu.getVisible())
-                    .eq(StringUtils.isNotBlank(menu.getStatus()), "m.status", menu.getStatus())
-                    .orderByAsc("m.parent_id")
-                    .orderByAsc("m.order_num");
-            menuList = baseMapper.selectMenuListByUserId(wrapper);
+            tbSysMenuList = jpaQueryFactory.select(Projections.bean(TbSysMenu.class, tbSysMenu.menuId.countDistinct().as(tbSysMenu.menuId),
+                            tbSysMenu.parentId, tbSysMenu.menuName, tbSysMenu.path, tbSysMenu.component, tbSysMenu.queryParam,
+                            tbSysMenu.visible, tbSysMenu.status, tbSysMenu.perms, tbSysMenu.isFrame, tbSysMenu.isCache, tbSysMenu.menuType,
+                            tbSysMenu.icon, tbSysMenu.orderNum, tbSysMenu.createTime))
+                    .from(tbSysMenu)
+                    .leftJoin(tbSysRoleMenu).on(tbSysMenu.menuId.eq(tbSysRoleMenu.menuId))
+                    .leftJoin(tbSysUserRole).on(tbSysRoleMenu.roleId.eq(tbSysUserRole.roleId))
+                    .leftJoin(tbSysRole).on(tbSysUserRole.roleId.eq(tbSysRole.roleId))
+                    .where(predicateBuilder
+                            .and(tbSysUserRole.userId.eq(userId))
+                            .build())
+                    .orderBy(tbSysMenu.parentId.asc(), tbSysMenu.orderNum.asc()).fetch();
+
         }
-        Predicate predicate = predicateBuilder.build();
-        sysMenuRepository.findAll(predicate);
+        return MapstructUtils.convert(tbSysMenuList, SysMenu.class);
 
-        return menuList;
     }
 }