sys_data_init.go 6.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265
  1. package system
  2. import (
  3. "github.com/samber/lo"
  4. "gorm.io/gorm"
  5. "time"
  6. )
  7. func (*Role) DataInit(db *gorm.DB) error {
  8. // 初始化用户等级
  9. reqs := []Role{
  10. {
  11. Name: "超级管理员",
  12. Desc: "管理所有权限",
  13. Apis: "*",
  14. Menus: "*",
  15. },
  16. }
  17. for _, req := range reqs {
  18. find := Role{}
  19. if stat := db.Model(&Role{}).Where("name", req.Name).
  20. Find(&find).Statement; stat.RowsAffected == 0 {
  21. if err := db.Create(&req).Error; err != nil {
  22. return err
  23. }
  24. }
  25. }
  26. return nil
  27. }
  28. func (*Apis) DataInit(db *gorm.DB) error {
  29. // 初始化用户等级
  30. reqs := []Apis{
  31. {
  32. ParentId: 0,
  33. Name: "待定义接口",
  34. Group: "待分配组",
  35. Method: "All",
  36. Path: "/",
  37. },
  38. }
  39. for _, req := range reqs {
  40. find := Apis{}
  41. if stat := db.Model(&Apis{}).Where("name = ?", req.Name).Find(&find).Statement; stat.RowsAffected == 0 {
  42. if err := db.Create(&req).Error; err != nil {
  43. return err
  44. }
  45. }
  46. }
  47. return nil
  48. }
  49. func (*Menus) DataInit(db *gorm.DB) error {
  50. // 初始化菜单
  51. reqs := []Menus{
  52. // 红包管理主菜单
  53. {
  54. ParentId: 0,
  55. Name: "红包管理",
  56. Icon: "Wallet",
  57. Router: "/redpacket",
  58. Sort: 1,
  59. Enable: true,
  60. IsHide: false,
  61. IsFull: false,
  62. IsAffix: false,
  63. IsKeepAlive: true,
  64. },
  65. // 红包配置
  66. {
  67. ParentId: 1,
  68. Name: "红包配置",
  69. Icon: "Menu",
  70. Router: "/redpacket/config",
  71. Component: "@/views/redpacket/config/index.vue",
  72. Sort: 1,
  73. Enable: true,
  74. IsHide: false,
  75. IsFull: false,
  76. IsAffix: false,
  77. IsKeepAlive: true,
  78. },
  79. // 手动发送
  80. {
  81. ParentId: 1,
  82. Name: "手动发送",
  83. Icon: "Menu",
  84. Router: "/redpacket/send",
  85. Component: "@/views/redpacket/send/index.vue",
  86. Sort: 2,
  87. Enable: true,
  88. IsHide: false,
  89. IsFull: false,
  90. IsAffix: false,
  91. IsKeepAlive: true,
  92. },
  93. // 红包记录
  94. {
  95. ParentId: 1,
  96. Name: "红包记录",
  97. Icon: "Menu",
  98. Router: "/redpacket/record",
  99. Component: "@/views/redpacket/record/index.vue",
  100. Sort: 3,
  101. Enable: true,
  102. IsHide: false,
  103. IsFull: false,
  104. IsAffix: false,
  105. IsKeepAlive: true,
  106. },
  107. // 群组管理
  108. {
  109. ParentId: 1,
  110. Name: "群组管理",
  111. Icon: "Menu",
  112. Router: "/redpacket/group",
  113. Component: "@/views/redpacket/group/index.vue",
  114. Sort: 4,
  115. Enable: true,
  116. IsHide: false,
  117. IsFull: false,
  118. IsAffix: false,
  119. IsKeepAlive: true,
  120. },
  121. // 系统配置
  122. {
  123. ParentId: 0,
  124. Name: "系统配置",
  125. Icon: "Setting",
  126. Router: "/system",
  127. Sort: 100,
  128. Enable: true,
  129. IsHide: false,
  130. IsFull: false,
  131. IsAffix: false,
  132. IsKeepAlive: true,
  133. },
  134. }
  135. for _, req := range reqs {
  136. find := Menus{}
  137. if stat := db.Model(&Menus{}).Where("router = ?", req.Router).Find(&find).Statement; stat.RowsAffected == 0 {
  138. if err := db.Create(&req).Error; err != nil {
  139. return err
  140. }
  141. }
  142. }
  143. // 初始化 系统配置 子菜单
  144. sysParent := Menus{}
  145. db.Model(&Menus{}).Where("router = ?", "/system").First(&sysParent)
  146. if sysParent.ID != 0 {
  147. sysChildren := []Menus{
  148. {Name: "账号管理", Icon: "Menu", Router: "/system/accountManage", Component: "@/views/system/accountManage/index.vue", Sort: 1, Enable: true, IsKeepAlive: true},
  149. {Name: "角色管理", Icon: "Menu", Router: "/system/roleManage", Component: "@/views/system/roleManage/index.vue", Sort: 2, Enable: true, IsKeepAlive: true},
  150. {Name: "菜单管理", Icon: "Menu", Router: "/system/menuMange", Component: "@/views/system/menuMange/index.vue", Sort: 3, Enable: true, IsKeepAlive: true},
  151. {Name: "APIs管理", Icon: "Menu", Router: "/system/apisManage", Component: "@/views/system/apisManage/index.vue", Sort: 4, Enable: true, IsKeepAlive: true},
  152. }
  153. for _, child := range sysChildren {
  154. find := Menus{}
  155. if stat := db.Model(&Menus{}).Where("router = ?", child.Router).Find(&find).Statement; stat.RowsAffected == 0 {
  156. child.ParentId = sysParent.ID
  157. if err := db.Create(&child).Error; err != nil {
  158. return err
  159. }
  160. }
  161. }
  162. }
  163. // 初始化 Cloudflare 菜单(查找或创建父菜单,再补充子菜单)
  164. cfParent := Menus{}
  165. db.Model(&Menus{}).Where("router = ?", "/cloudflare").First(&cfParent)
  166. if cfParent.ID == 0 {
  167. cfParent = Menus{
  168. ParentId: 0,
  169. Name: "Cloudflare",
  170. Icon: "Monitor",
  171. Router: "/cloudflare",
  172. Sort: 2,
  173. Enable: true,
  174. IsKeepAlive: true,
  175. }
  176. if err := db.Create(&cfParent).Error; err != nil {
  177. return err
  178. }
  179. }
  180. cfChildren := []Menus{
  181. {
  182. Name: "账号管理",
  183. Icon: "Key",
  184. Router: "/cloudflare/account",
  185. Component: "@/views/cloudflare/account/index.vue",
  186. Sort: 1,
  187. Enable: true,
  188. IsKeepAlive: true,
  189. },
  190. {
  191. Name: "Zone 列表",
  192. Icon: "List",
  193. Router: "/cloudflare/zones",
  194. Component: "@/views/cloudflare/zones/index.vue",
  195. Sort: 2,
  196. Enable: true,
  197. IsKeepAlive: true,
  198. },
  199. {
  200. Name: "DNS 管理",
  201. Icon: "Connection",
  202. Router: "/cloudflare/dns",
  203. Component: "@/views/cloudflare/dns/index.vue",
  204. Sort: 3,
  205. Enable: true,
  206. IsKeepAlive: true,
  207. },
  208. {
  209. Name: "DNS 模板",
  210. Icon: "Document",
  211. Router: "/cloudflare/template",
  212. Component: "@/views/cloudflare/template/index.vue",
  213. Sort: 4,
  214. Enable: true,
  215. IsKeepAlive: true,
  216. },
  217. }
  218. for _, child := range cfChildren {
  219. find := Menus{}
  220. if stat := db.Model(&Menus{}).Where("router = ?", child.Router).Find(&find).Statement; stat.RowsAffected == 0 {
  221. child.ParentId = cfParent.ID
  222. if err := db.Create(&child).Error; err != nil {
  223. return err
  224. }
  225. }
  226. }
  227. return nil
  228. }
  229. const AdminId int64 = 1
  230. func (r *Administrator) DataInit(db *gorm.DB) error {
  231. // 初始化用户等级
  232. password, salt := r.EncodePassword("666666")
  233. reqs := []Administrator{
  234. {
  235. ID: AdminId,
  236. Nickname: "超级管理员",
  237. Username: "superman",
  238. Password: password,
  239. Salt: salt,
  240. GoogleKey: "",
  241. Avatar: "",
  242. RoleId: 1,
  243. LastLoginTime: lo.ToPtr(time.Now()),
  244. },
  245. }
  246. for _, req := range reqs {
  247. find := NewAdministrator()
  248. if stat := db.Model(&Administrator{}).Where("id", AdminId).
  249. Find(&find).Statement; stat.RowsAffected == 0 {
  250. if err := db.Create(&req).Error; err != nil {
  251. return err
  252. }
  253. }
  254. }
  255. return nil
  256. }