schangxiang@126.com
2025-09-09 3d8966ba2c81e7e0365c8b123e861d18ee4f94f5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
import { getConnection } from "typeorm";
import BaseService from "../baseService";
import { SysMenu } from "../../entity/sys/core/sysMenu";
import { SysMenuUser } from "../../entity/sys/core/sysMenuUser";
 
/**
 * 菜单管理
 */
export default class MenuVueService extends BaseService {
  /**
   * 获得Vue菜单权限
   * @param name - your name
   */
  public async getVueMenu() {
    let userInfo = await this.userInfo;
    var sql = `WITH CategoryInfo AS
    (
      SELECT menu_Id, MenuName, parentId, VueOrderNo, VueEnable
      FROM Sys_Menu 
      WHERE parentId = 0 and VueEnable=1 AND VueUrl IS NOT NULL
      UNION ALL
      SELECT a.menu_Id, a.MenuName, a.parentId, a.VueOrderNo, a.VueEnable
      FROM Sys_Menu AS a, CategoryInfo AS b 
      WHERE a.parentId = b.menu_Id And a.VueEnable=1
      AND a.VueUrl IS NOT NULL
    )
    SELECT menu_Id as m, 
    (Select top 1 MenuName From Sys_MenuUser Where Menu_Id=CategoryInfo.menu_Id And UserProduct_Id=${userInfo.userProduct_Id}) as d 
    FROM CategoryInfo 
    Where VueEnable=1
    `;
    if (userInfo) {
      sql += `And (menu_Id IN (SELECT menu_Id FROM Sys_RoleAuth WHERE Role_Id = ${userInfo.role_Id} AND AuthValue LIKE '%1%'))
      Order By VueOrderNo desc, menu_Id`;
      // if (!userInfo.isAdministrator) {
      //   sql += `And (menu_Id IN (SELECT menu_Id FROM Sys_RoleAuth WHERE Role_Id = ${userInfo.role_Id} AND AuthValue LIKE '%1%'))
      // Order By VueOrderNo desc, menu_Id`;
      // }
    } else {
      sql += " And 1!=1";
    }
    var authMenuList: Array<any> = await getConnection().query(sql);
    authMenuList.forEach(item => {
      if (!item.d) {
        delete item.d;
      }
    });
 
    return authMenuList;
  }
 
  /**
   * 加载后,获得自定义菜单信息
   * @param dataInfo 菜单信息
   */
  public async onLoadSaveAfter(dataInfo: SysMenu) {
    let userInfo = await this.userInfo;
    let userMenu = await this.dbRead.findOne(SysMenuUser, {
      menu_Id: dataInfo.menu_Id,
      userProduct_Id: userInfo.userProduct_Id
    });
    if (userMenu) {
      dataInfo.description = userMenu.menuName;
    }
  }
 
  /**
   * 保存自定义菜单名称
   * @param dataInfo 菜单信息
   */
  public async onAddSaveAfter(dataInfo: SysMenu) {
    let userInfo = await this.userInfo;
    let userMenu = await this.dbRead.findOne(SysMenuUser, {
      menu_Id: dataInfo.menu_Id,
      userProduct_Id: userInfo.userProduct_Id
    });
    if (!userMenu) {
      userMenu = new SysMenuUser();
    }
    userMenu.menuName = dataInfo.description;
    userMenu.menu_Id = dataInfo.menu_Id;
    await this.setAccountInfo(userMenu);
    await this.dbWrite.save(userMenu);
  }
}