SystemController.go 35 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203
  1. package partial
  2. import (
  3. "fmt"
  4. "git.qianqiusoft.com/qianqiusoft/light-apiengine/entitys"
  5. "git.qianqiusoft.com/qianqiusoft/light-apiengine/models"
  6. sysmodel "git.qianqiusoft.com/qianqiusoft/light-apiengine/models"
  7. sysutils "git.qianqiusoft.com/qianqiusoft/light-apiengine/utils"
  8. "html/template"
  9. "strconv"
  10. "time"
  11. )
  12. // _Sidebar
  13. // @Title _Sidebar
  14. // @Description 获取导航菜单
  15. // @Param user string false "用户id"
  16. // @Success 200 {object} Account
  17. // @Failure 403 :id is empty
  18. func System_Sidebar(c *entitys.CtrlContext) {
  19. //System_GetMenuTree(c)
  20. _type := c.Ctx.DefaultQuery("type", "")
  21. type_op := c.Ctx.DefaultQuery("type_op", "")
  22. hidden := c.Ctx.DefaultQuery("hidden", "")
  23. name := c.Ctx.DefaultQuery("name", "")
  24. cn_id := c.Ctx.DefaultQuery("cn_id", "")
  25. tk, _ := c.Ctx.Get("token")
  26. user := tk.(*entitys.Token)
  27. op := template.HTML(type_op)
  28. // 管理员角色ID 5c38ee66-c5e6-40a7-b190-86d115bae3e5
  29. exist, _ := c.Db.Table("sys_user_role").Where("user_id = ? and role_id = ?", user.UserId, "5c38ee66-c5e6-40a7-b190-86d115bae3e5").Exist()
  30. //如果是管理员
  31. var paramMap_i_t map[string]interface{}
  32. if exist {
  33. paramMap_i_t = map[string]interface{}{"user_id": "", "name": name, "cn_id": cn_id, "sort": "name", "type": _type, "type_op": op, "hidden": hidden}
  34. } else {
  35. paramMap_i_t = map[string]interface{}{"user_id": user.UserId, "name": name, "cn_id": cn_id, "sort": "name", "type": _type, "type_op": op, "hidden": hidden}
  36. }
  37. result, err := sysutils.TreeSearch(c.Db, "system", "get_menu_tree", "sys_menu", paramMap_i_t)
  38. if err == nil {
  39. c.Ctx.JSON(200, sysmodel.SysReturn{200, "", result})
  40. } else {
  41. c.Ctx.JSON(500, sysmodel.SysReturn{500, err.Error(), nil})
  42. }
  43. }
  44. // _GetMenuTree
  45. // @Title _GetMenuTree
  46. // @Description 获取系统菜单
  47. // @Param user string false "用户id"
  48. // @Success 200 {object} Account
  49. // @Failure 403 :id is empty
  50. func System_GetMenuTree(c *entitys.CtrlContext) {
  51. _type := c.Ctx.DefaultQuery("type", "")
  52. type_op := c.Ctx.DefaultQuery("type_op", "")
  53. hidden := c.Ctx.DefaultQuery("hidden", "")
  54. name := c.Ctx.DefaultQuery("name", "")
  55. cn_id := c.Ctx.DefaultQuery("cn_id", "")
  56. op := template.HTML(type_op)
  57. paramMap_i_t := map[string]interface{}{"user_id": "", "name": name, "cn_id": cn_id, "sort": "name", "type": _type, "type_op": op, "hidden": hidden}
  58. result, err := sysutils.TreeSearch(c.Db, "system", "get_menu_tree", "sys_menu", paramMap_i_t)
  59. if err == nil {
  60. c.Ctx.JSON(200, sysmodel.SysReturn{200, "", result})
  61. } else {
  62. c.Ctx.JSON(500, sysmodel.SysReturn{500, err.Error(), nil})
  63. }
  64. }
  65. // _GetDomainTree
  66. // @Title _GetDomainTree
  67. // @Description 获取域树
  68. // @Success 200 {object} Account
  69. // @Failure 403 :id is empty
  70. func System_GetDomainTree(c *entitys.CtrlContext) {
  71. del_flag := c.Ctx.DefaultQuery("del_flag", "")
  72. paramMap_i_t := map[string]interface{}{"sort": "name", "del_flag": del_flag}
  73. result, err := sysutils.TreeSearch(c.Db, "system", "get_domain_tree", "sys_domain", paramMap_i_t)
  74. if err == nil {
  75. c.Ctx.JSON(200, sysmodel.SysReturn{200, "", result})
  76. } else {
  77. c.Ctx.JSON(500, sysmodel.SysReturn{500, err.Error(), nil})
  78. }
  79. }
  80. // _FindUserPage
  81. // @Title _FindUserPage
  82. // @Description 获取用户分页数
  83. // @Success 200 {object} Account
  84. // @Failure 403 :id is empty
  85. func System_FindUserPage(c *entitys.CtrlContext) {
  86. page, _ := strconv.Atoi(c.Ctx.DefaultQuery("page", "1"))
  87. rows, _ := strconv.Atoi(c.Ctx.DefaultQuery("rows", "10"))
  88. name := c.Ctx.DefaultQuery("name", "")
  89. login_id := c.Ctx.DefaultQuery("login_id", "")
  90. org_id := c.Ctx.DefaultQuery("org_id", "")
  91. paramMap_i_t := map[string]interface{}{"page": page, "rows": rows, "name": name, "login_id": login_id, "org_id": org_id}
  92. result, err := sysutils.PageSearch(c.Db, "system", "find_user_page", "sys_user", paramMap_i_t)
  93. if err != nil {
  94. c.Ctx.JSON(200, sysmodel.SysReturn{200, "", result})
  95. return
  96. }
  97. //type Role struct {
  98. // RoleName string `json:"role_name"`
  99. // UserRole string `json:"user_role"`
  100. //}
  101. ////获取用户角色
  102. //users := result.Content.([]map[string]interface{})
  103. //for i, user := range users {
  104. // roles := []Role{}
  105. // err := c.Db.SqlMapClient("get_roles_by_user_id", user["id"]).Find(&roles)
  106. // if err != nil {
  107. // fmt.Println("----", err.Error())
  108. // continue
  109. // }
  110. // users[i]["user_role"] = roles[0].UserRole
  111. // users[i]["role_name"] = roles[0].RoleName
  112. //}
  113. //
  114. //result.Content = users
  115. if err == nil {
  116. c.Ctx.JSON(200, sysmodel.SysReturn{200, "", result})
  117. } else {
  118. c.Ctx.JSON(500, sysmodel.SysReturn{500, err.Error(), nil})
  119. }
  120. }
  121. // _GetOrgTree
  122. // @Title _GetOrgTree
  123. // @Description 获取组织架构树
  124. // @Success 200 {object} Account
  125. // @Failure 403 :id is empty
  126. func System_GetOrgTree(c *entitys.CtrlContext) {
  127. paramMap_i_t := map[string]interface{}{"sort": "name"}
  128. result, err := sysutils.TreeSearch(c.Db, "system", "get_org_tree", "sys_org", paramMap_i_t)
  129. if err == nil {
  130. c.Ctx.JSON(200, sysmodel.SysReturn{200, "", result})
  131. } else {
  132. c.Ctx.JSON(500, sysmodel.SysReturn{500, err.Error(), nil})
  133. }
  134. }
  135. // _FindOrgPage
  136. // @Title _FindOrgPage
  137. // @Description 获取组织架构分页数
  138. // @Success 200 {object} Account
  139. // @Failure 403 :id is empty
  140. func System_FindOrgPage(c *entitys.CtrlContext) {
  141. page, _ := strconv.Atoi(c.Ctx.DefaultQuery("page", "1"))
  142. rows, _ := strconv.Atoi(c.Ctx.DefaultQuery("rows", "10"))
  143. name := c.Ctx.DefaultQuery("name", "")
  144. code := c.Ctx.DefaultQuery("code", "")
  145. cn_id := c.Ctx.DefaultQuery("cn_id", "")
  146. paramMap_i_t := map[string]interface{}{"page": page, "rows": rows, "name": name, "code": code, "cn_id": cn_id}
  147. result, err := sysutils.PageSearch(c.Db, "system", "find_org_page", "sys_org", paramMap_i_t)
  148. if err == nil {
  149. c.Ctx.JSON(200, sysmodel.SysReturn{200, "", result})
  150. } else {
  151. c.Ctx.JSON(500, sysmodel.SysReturn{500, err.Error(), nil})
  152. }
  153. }
  154. // _AddUser
  155. // @Title _AddUser
  156. // @Description 添加用户
  157. // @Param login_id string false "登录ID"
  158. // @Param password string false "密码"
  159. // @Param org_id string false "组织ID"
  160. // @Param email string false "邮箱"
  161. // @Success 200 {object} Account
  162. // @Failure 403 :id is empty
  163. func System_AddUser(c *entitys.CtrlContext) {
  164. tk, _ := c.Ctx.Get("token")
  165. opUser := tk.(*entitys.Token)
  166. var user sysmodel.SysUser
  167. err := c.Ctx.BindJSON(&user)
  168. if err != nil {
  169. c.Ctx.JSON(200, sysmodel.SysReturn{500, err.Error(), nil})
  170. }
  171. fmt.Println(user.LoginId, "-----add user-----", user.Password, " --- ", user.OrgId)
  172. //查找login_id是否存在
  173. oldUser := new(sysmodel.SysUser)
  174. count, _ := c.Db.SQL("select * from sys_user").Where("login_id = ?", user.LoginId).Count(&oldUser)
  175. if count > 1 {
  176. if oldUser.DelFlag == 1 {
  177. oldUser.DelFlag = 0
  178. _, err := c.Db.Id("id").Cols("del_flag").Update(&oldUser)
  179. if err != nil {
  180. c.Ctx.JSON(200, sysmodel.SysReturn{500, "login_id exit, update err: " + err.Error(), nil})
  181. }
  182. return
  183. } else {
  184. c.Ctx.JSON(200, sysmodel.SysReturn{500, "login_id exit", nil})
  185. return
  186. }
  187. }
  188. user_id := c.Ctx.GetString("user_id")
  189. user.Id = sysutils.NewUUID()
  190. user.Name = user.LoginId
  191. user.CreateTime = models.NowLocal()
  192. user.LastUpdateTime = time.Now().UnixNano()
  193. user.CreateBy = user_id
  194. user.LastUpdateBy = user_id
  195. user.DelFlag = 0
  196. user.Domain = opUser.Domain
  197. user.Password = sysutils.HashPassword(user.Password, "")
  198. _, err = c.PlatformDbEngine.Insert(&user)
  199. if err != nil {
  200. c.Ctx.JSON(200, sysmodel.SysReturn{500, "平台插入用户错误:" + err.Error(), nil})
  201. }
  202. _, err = c.Db.Insert(&user)
  203. ret := __none_func_system__(user.LoginId, user.Password, user.OrgId, user.Email)
  204. if ret && err == nil {
  205. c.Ctx.JSON(200, sysmodel.SysReturn{200, "", nil})
  206. } else {
  207. c.Ctx.JSON(200, sysmodel.SysReturn{500, "域数据库插入用户错误:" + err.Error(), nil})
  208. }
  209. }
  210. // _DelUser
  211. // @Title _DelUser
  212. // @Description 删除用户
  213. // @Param id string false "用户ID"
  214. // @Success 200 {object} Account
  215. // @Failure 403 :id is empty
  216. func System_DelUser(c *entitys.CtrlContext) {
  217. type Param struct {
  218. Id string `json:"id"`
  219. }
  220. var params []Param
  221. c.Ctx.BindJSON(&params)
  222. ids := []string{}
  223. for _, param := range params {
  224. ids = append(ids, param.Id)
  225. }
  226. session := c.Db.NewSession()
  227. defer session.Close()
  228. session.Begin()
  229. _, err := c.Db.Table(new(models.SysUser)).In("id", ids).Update(map[string]interface{}{"del_flag": 1})
  230. if err != nil {
  231. session.Rollback()
  232. c.Ctx.JSON(200, sysmodel.SysReturn{500, err.Error(), nil})
  233. return
  234. }
  235. _, err = c.Db.Table(new(models.SysUserRole)).In("user_id", ids).Update(map[string]interface{}{"del_flag": 1})
  236. if err != nil {
  237. session.Rollback()
  238. c.Ctx.JSON(200, sysmodel.SysReturn{500, err.Error(), nil})
  239. return
  240. }
  241. session.Commit()
  242. _, err = c.PlatformDbEngine.In("id", ids).Update(map[string]interface{}{"del_flag": 1})
  243. if err == nil {
  244. c.Ctx.JSON(200, sysmodel.SysReturn{200, "", nil})
  245. } else {
  246. c.Ctx.JSON(200, sysmodel.SysReturn{500, "平台删除用户失败:" + err.Error(), nil})
  247. }
  248. }
  249. // _UpdateUser
  250. // @Title _UpdateUser
  251. // @Description 修改用户
  252. // @Param login_id string false "登录ID"
  253. // @Param password string false "密码"
  254. // @Param org_id string false "组织ID"
  255. // @Param email string false "邮箱"
  256. // @Success 200 {object} Account
  257. // @Failure 403 :id is empty
  258. func System_UpdateUser(c *entitys.CtrlContext) {
  259. tk, _ := c.Ctx.Get("token")
  260. user := tk.(*entitys.Token)
  261. var postData struct {
  262. sysmodel.SysUser
  263. UserRole []string `json:"user_role"`
  264. }
  265. //var user sysmodel.SysUser
  266. err := c.Ctx.BindJSON(&postData)
  267. if err != nil {
  268. c.Ctx.JSON(500, sysmodel.SysReturn{500, err.Error(), nil})
  269. return
  270. }
  271. //postData.LastUpdateTime = time.Now().UnixNano()
  272. //postData.LastUpdateBy = user.UserId
  273. session := c.Db.NewSession()
  274. defer session.Close()
  275. session.Begin()
  276. //paramMap, _ := sysutils.BeanToMap(&postData)
  277. paramMap := map[string]interface{}{"id": postData.Id, "name": postData.Name, "email": postData.Email, "mobile": postData.Mobile, "org_id": postData.OrgId, "last_update_time": time.Now().UnixNano(), "last_update_by": user.UserId}
  278. _, err = session.SqlMapClient("update_user", &paramMap).Execute()
  279. if err != nil {
  280. session.Rollback()
  281. c.Ctx.JSON(500, sysmodel.SysReturn{500, err.Error(), nil})
  282. return
  283. }
  284. _, err = c.PlatformDbEngine.SqlMapClient("update_user", &paramMap).Execute()
  285. if err != nil {
  286. session.Rollback()
  287. c.Ctx.JSON(500, sysmodel.SysReturn{500, "平台更新用户失败:" + err.Error(), nil})
  288. return
  289. }
  290. userRoles := []sysmodel.SysUserRole{}
  291. for _, roleId := range postData.UserRole {
  292. userRole := sysmodel.SysUserRole{}
  293. userRole.Id = sysutils.NewUUID()
  294. userRole.UserId = postData.Id
  295. userRole.RoleId = roleId
  296. userRole.DelFlag = 0
  297. userRole.CreateTime = sysmodel.NowLocal()
  298. userRole.CreateBy = user.UserId
  299. userRole.LastUpdateBy = user.UserId
  300. userRole.LastUpdateTime = time.Now().UnixNano()
  301. userRoles = append(userRoles, userRole)
  302. }
  303. _, err = session.SqlMapClient("delete_user_role", &map[string]interface{}{"user_id": postData.Id}).Execute()
  304. if err != nil {
  305. session.Rollback()
  306. c.Ctx.JSON(500, sysmodel.SysReturn{500, err.Error(), nil})
  307. return
  308. }
  309. _, err = session.InsertMulti(&userRoles)
  310. if err == nil {
  311. session.Commit()
  312. c.Ctx.JSON(200, sysmodel.SysReturn{200, "", nil})
  313. } else {
  314. session.Rollback()
  315. c.Ctx.JSON(500, sysmodel.SysReturn{500, err.Error(), nil})
  316. }
  317. }
  318. // _GetUser
  319. // @Title _GetUser
  320. // @Description 更加用户ID获取用户信息
  321. // @Param user_id string false "用户ID"
  322. // @Success 200 {object} Account
  323. // @Failure 403 :id is empty
  324. func System_GetUser(c *entitys.CtrlContext) {
  325. user_id := c.Ctx.Query("user_id")
  326. var user sysmodel.SysUser
  327. err := c.Db.SqlMapClient("selectone_sys_user", map[string]interface{}{"id": user_id}).Find(&user)
  328. if err == nil {
  329. c.Ctx.JSON(200, sysmodel.SysReturn{200, "", user})
  330. } else {
  331. c.Ctx.JSON(500, sysmodel.SysReturn{500, err.Error(), nil})
  332. }
  333. }
  334. // _AddRole
  335. // @Title _AddRole
  336. // @Description 添加角色
  337. // @Param name string false "角色名称"
  338. // @Param remark string false "备注"
  339. // @Success 200 {object} Account
  340. // @Failure 403 :id is empty
  341. func System_AddRole(c *entitys.CtrlContext) {
  342. var paramObj0 models.SysRole
  343. c.Ctx.BindJSON(&paramObj0)
  344. tk, _ := c.Ctx.Get("token")
  345. user := tk.(*entitys.Token)
  346. paramObj0.Id = sysutils.NewUUID()
  347. paramObj0.CreateBy = user.UserId
  348. paramObj0.LastUpdateBy = user.UserId
  349. paramObj0.CreateTime = models.NowLocal()
  350. paramObj0.LastUpdateTime = time.Now().UnixNano()
  351. paramObj0.DelFlag = 0
  352. //_, err := c.LocalSqlMapClient("insert_sys_role", &paramObj0).Execute()
  353. paramMap, err := sysutils.BeanToMap(&paramObj0)
  354. _, err = c.Db.SqlMapClient("insert_sys_role", paramMap).Execute()
  355. if err == nil {
  356. c.Ctx.JSON(200, sysmodel.SysReturn{200, "", nil})
  357. } else {
  358. c.Ctx.JSON(500, sysmodel.SysReturn{500, "", nil})
  359. }
  360. }
  361. // _DelRole
  362. // @Title _DelRole
  363. // @Description 添加角色
  364. // @Param id string false "角色ID"
  365. // @Success 200 {object} Account
  366. // @Failure 403 :id is empty
  367. func System_DelRole(c *entitys.CtrlContext) {
  368. type Param struct {
  369. Id string `json:"id"`
  370. }
  371. var params []Param
  372. c.Ctx.BindJSON(&params)
  373. ids := []string{}
  374. for _, param := range params {
  375. ids = append(ids, param.Id)
  376. }
  377. _, err := c.Db.Table(new(models.SysRole)).In("id", ids).Update(map[string]interface{}{"del_flag": 1})
  378. if err == nil {
  379. c.Ctx.JSON(200, sysmodel.SysReturn{200, "", nil})
  380. } else {
  381. c.Ctx.JSON(500, sysmodel.SysReturn{500, "", nil})
  382. }
  383. }
  384. // _UpdateRole
  385. // @Title _UpdateRole
  386. // @Description 修改角色
  387. // @Param id string false "角色ID"
  388. // @Param name string false "角色名称"
  389. // @Param remark string false "备注"
  390. // @Success 200 {object} Account
  391. // @Failure 403 :id is empty
  392. func System_UpdateRole(c *entitys.CtrlContext) {
  393. var role sysmodel.SysRole
  394. err := c.Ctx.BindJSON(&role)
  395. if err != nil {
  396. c.Ctx.JSON(500, sysmodel.SysReturn{500, err.Error(), nil})
  397. return
  398. }
  399. paramMap, _ := sysutils.BeanToMap(&role)
  400. _, err = c.Db.SqlMapClient("update_sys_role", paramMap).Execute()
  401. if err == nil {
  402. c.Ctx.JSON(200, sysmodel.SysReturn{200, "", nil})
  403. } else {
  404. c.Ctx.JSON(500, sysmodel.SysReturn{500, err.Error(), nil})
  405. }
  406. }
  407. // _FindRolePage
  408. // @Title _FindRolePage
  409. // @Description 角色分页
  410. // @Param page false "分页参数"
  411. // @Success 200 {object} Account
  412. // @Failure 403 :id is empty
  413. func System_FindRolePage(c *entitys.CtrlContext) {
  414. page, _ := strconv.Atoi(c.Ctx.DefaultQuery("page", "1"))
  415. rows, _ := strconv.Atoi(c.Ctx.DefaultQuery("rows", "10"))
  416. name := c.Ctx.DefaultQuery("name", "")
  417. code := c.Ctx.DefaultQuery("code", "")
  418. paramMap_i_t := map[string]interface{}{"name": name, "code": code, "page": page, "rows": rows}
  419. result, err := sysutils.PageSearch(c.Db, "system", "find_role_page", "sys_role", paramMap_i_t)
  420. if err == nil {
  421. c.Ctx.JSON(200, sysmodel.SysReturn{200, "", result})
  422. } else {
  423. c.Ctx.JSON(500, sysmodel.SysReturn{500, err.Error(), nil})
  424. }
  425. }
  426. // _FindMenuPage
  427. // @Title _FindMenuPage
  428. // @Description 获取角色分页数
  429. // @Success 200 {object} Account
  430. // @Failure 403 :id is empty
  431. func System_FindMenuPage(c *entitys.CtrlContext) {
  432. page, _ := strconv.Atoi(c.Ctx.DefaultQuery("page", "1"))
  433. rows, _ := strconv.Atoi(c.Ctx.DefaultQuery("rows", "10"))
  434. name := c.Ctx.DefaultQuery("name", "")
  435. code := c.Ctx.DefaultQuery("code", "")
  436. cn_id := c.Ctx.DefaultQuery("cn_id", "")
  437. _type := c.Ctx.DefaultQuery("type", "")
  438. type_op := c.Ctx.DefaultQuery("type_op", "")
  439. hidden := c.Ctx.DefaultQuery("hidden", "")
  440. op := template.HTML(type_op)
  441. paramMap_i_t := map[string]interface{}{"hidden": hidden, "page": page, "rows": rows, "type": _type, "type_op": op, "name": name, "code": code, "cn_id": cn_id}
  442. result, err := sysutils.PageSearch(c.Db, "system", "find_menu_page", "sys_menu", paramMap_i_t)
  443. if err == nil {
  444. c.Ctx.JSON(200, sysmodel.SysReturn{200, "", result})
  445. } else {
  446. c.Ctx.JSON(500, sysmodel.SysReturn{500, err.Error(), nil})
  447. }
  448. }
  449. // _FindDomainPage
  450. // @Title _FindDomainPage
  451. // @Description 获取域分页数
  452. // @Success 200 {object} Account
  453. // @Failure 403 :id is empty
  454. func System_FindDomainPage(c *entitys.CtrlContext) {
  455. page, _ := strconv.Atoi(c.Ctx.DefaultQuery("page", "1"))
  456. rows, _ := strconv.Atoi(c.Ctx.DefaultQuery("rows", "10"))
  457. paramMap_i_t := map[string]interface{}{"page": page, "rows": rows}
  458. result, err := sysutils.PageSearch(c.Db, "system", "find_domain_page", "sys_domain", paramMap_i_t)
  459. if err == nil {
  460. c.Ctx.JSON(200, sysmodel.SysReturn{200, "", result})
  461. } else {
  462. c.Ctx.JSON(500, sysmodel.SysReturn{500, err.Error(), nil})
  463. }
  464. }
  465. // _FindRoleMenu
  466. // @Title _FindRoleMenu
  467. // @Description 查找角色权限
  468. // @Param role_id string false "角色id"
  469. // @Success 200 {object} Account
  470. // @Failure 403 :id is empty
  471. func System_FindRoleMenu(c *entitys.CtrlContext) {
  472. role_id := c.Ctx.Query("role_id")
  473. ret := __none_func_system__(role_id)
  474. if ret {
  475. c.Ctx.JSON(200, sysmodel.SysReturn{200, "", nil})
  476. } else {
  477. c.Ctx.JSON(500, sysmodel.SysReturn{500, "", nil})
  478. }
  479. }
  480. // _SaveRoleMenu
  481. // @Title _SaveRoleMenu
  482. // @Description 保存角色权限
  483. // @Param role_menu string false "角色权限"
  484. // @Success 200 {object} Account
  485. // @Failure 403 :id is empty
  486. func System_SaveRoleMenu(c *entitys.CtrlContext) {
  487. var paramObj0 []models.SaveRoleMenu
  488. c.Ctx.BindJSON(&paramObj0)
  489. ret := __none_func_system__(paramObj0)
  490. if ret {
  491. c.Ctx.JSON(200, sysmodel.SysReturn{200, "", nil})
  492. } else {
  493. c.Ctx.JSON(500, sysmodel.SysReturn{500, "", nil})
  494. }
  495. }
  496. // _RoleAll
  497. // @Title _RoleAll
  498. // @Description 查找所有角色
  499. // @Success 200 {object} Account
  500. // @Failure 403 :id is empty
  501. func System_RoleAll(c *entitys.CtrlContext) {
  502. ret := __none_func_system__()
  503. if ret {
  504. c.Ctx.JSON(200, sysmodel.SysReturn{200, "", nil})
  505. } else {
  506. c.Ctx.JSON(500, sysmodel.SysReturn{500, "", nil})
  507. }
  508. }
  509. // _FindPermissions
  510. // @Title _FindPermissions
  511. // @Description 查找用户权限
  512. // @Success 200 {object} Account
  513. // @Failure 403 :id is empty
  514. func System_FindPermissions(c *entitys.CtrlContext) {
  515. ret := __none_func_system__()
  516. if ret {
  517. c.Ctx.JSON(200, sysmodel.SysReturn{200, "", nil})
  518. } else {
  519. c.Ctx.JSON(500, sysmodel.SysReturn{500, "", nil})
  520. }
  521. }
  522. // _AddMenu
  523. // @Title _AddMenu
  524. // @Description 添加菜单
  525. // @Param string false "菜单"
  526. // @Success 200 {object} Account
  527. // @Failure 403 :id is empty
  528. func System_AddMenu(c *entitys.CtrlContext) {
  529. var paramObj0 models.SysMenu
  530. c.Ctx.BindJSON(&paramObj0)
  531. tk, _ := c.Ctx.Get("token")
  532. user := tk.(*entitys.Token)
  533. paramObj0.Id = sysutils.NewUUID()
  534. paramObj0.CreateBy = user.UserId
  535. paramObj0.LastUpdateBy = user.UserId
  536. paramObj0.CreateTime = models.NowLocal()
  537. paramObj0.LastUpdateTime = time.Now().UnixNano()
  538. paramObj0.DelFlag = 0
  539. if paramObj0.Parent != "" {
  540. parentNodes := []sysmodel.SysMenu{}
  541. err := c.Db.SqlMapClient("one_sys_menu", paramObj0.Parent).Find(&parentNodes)
  542. if err != nil {
  543. c.Ctx.JSON(500, sysmodel.SysReturn{500, err.Error(), nil})
  544. return
  545. }
  546. paramObj0.Inheritance = fmt.Sprintf("|%s%s", paramObj0.Id, parentNodes[0].Inheritance)
  547. } else {
  548. paramObj0.Inheritance = fmt.Sprintf("|%s|", paramObj0.Id)
  549. }
  550. //_, err := c.LocalSqlMapClient("insert_sys_menu", &paramObj0).Execute()
  551. paramMap, err := sysutils.BeanToMap(&paramObj0)
  552. _, err = c.Db.SqlMapClient("insert_sys_menu", paramMap).Execute()
  553. if err == nil {
  554. c.Ctx.JSON(200, sysmodel.SysReturn{200, "", nil})
  555. } else {
  556. c.Ctx.JSON(500, sysmodel.SysReturn{500, err.Error(), nil})
  557. }
  558. }
  559. // _DelMenu
  560. // @Title _DelMenu
  561. // @Description 删除菜单
  562. // @Param id string false "菜单ID"
  563. // @Success 200 {object} Account
  564. // @Failure 403 :id is empty
  565. func System_DelMenu(c *entitys.CtrlContext) {
  566. type Param struct {
  567. Id string `json:"id"`
  568. }
  569. var params []Param
  570. c.Ctx.BindJSON(&params)
  571. ids := []string{}
  572. for _, param := range params {
  573. ids = append(ids, param.Id)
  574. }
  575. _, err := c.Db.Table(new(models.SysMenu)).In("id", ids).Update(map[string]interface{}{"del_flag": 1})
  576. if err == nil {
  577. c.Ctx.JSON(200, sysmodel.SysReturn{200, "", nil})
  578. } else {
  579. c.Ctx.JSON(500, sysmodel.SysReturn{500, "", nil})
  580. }
  581. }
  582. // _UpdateMenu
  583. // @Title _UpdateMenu
  584. // @Description 更新菜单
  585. // @Param string false "菜单"
  586. // @Success 200 {object} Account
  587. // @Failure 403 :id is empty
  588. func System_UpdateMenu(c *entitys.CtrlContext) {
  589. var paramObj0 models.SysMenu
  590. err := c.Ctx.BindJSON(&paramObj0)
  591. tk, _ := c.Ctx.Get("token")
  592. user := tk.(*entitys.Token)
  593. if paramObj0.Parent != "" {
  594. parentNodes := []sysmodel.SysMenu{}
  595. err := c.Db.SqlMapClient("one_sys_menu", paramObj0.Parent).Find(&parentNodes)
  596. if err != nil {
  597. c.Ctx.JSON(500, sysmodel.SysReturn{500, err.Error(), nil})
  598. return
  599. }
  600. paramObj0.Inheritance = fmt.Sprintf("|%s%s", paramObj0.Id, parentNodes[0].Inheritance)
  601. } else {
  602. paramObj0.Inheritance = fmt.Sprintf("|%s|", paramObj0.Id)
  603. }
  604. paramObj0.LastUpdateBy = user.UserId
  605. paramObj0.LastUpdateTime = time.Now().UnixNano()
  606. paramMap, err := sysutils.BeanToMap(&paramObj0)
  607. _, err = c.Db.SqlMapClient("update_sys_menu", paramMap).Execute()
  608. if err == nil {
  609. c.Ctx.JSON(200, sysmodel.SysReturn{200, "", nil})
  610. } else {
  611. c.Ctx.JSON(500, sysmodel.SysReturn{500, err.Error(), nil})
  612. }
  613. }
  614. // _AddOrg
  615. // @Title _AddOrg
  616. // @Description 添加组织
  617. // @Param name string false "组织名称"
  618. // @Param domain string false "域"
  619. // @Param parent string false "父ID"
  620. // @Success 200 {object} Account
  621. // @Failure 403 :id is empty
  622. func System_AddOrg(c *entitys.CtrlContext) {
  623. var paramObj0 models.SysOrg
  624. c.Ctx.BindJSON(&paramObj0)
  625. tk, _ := c.Ctx.Get("token")
  626. user := tk.(*entitys.Token)
  627. paramObj0.Id = sysutils.NewUUID()
  628. paramObj0.CreateBy = user.UserId
  629. paramObj0.LastUpdateBy = user.UserId
  630. paramObj0.CreateTime = models.NowLocal()
  631. paramObj0.LastUpdateTime = time.Now().UnixNano()
  632. paramObj0.DelFlag = 0
  633. if paramObj0.Parent != "" {
  634. parentNodes := []sysmodel.SysOrg{}
  635. err := c.Db.SqlMapClient("one_sys_org", paramObj0.Parent).Find(&parentNodes)
  636. if err != nil {
  637. c.Ctx.JSON(500, sysmodel.SysReturn{500, err.Error(), nil})
  638. return
  639. }
  640. paramObj0.Inheritance = fmt.Sprintf("|%s%s", paramObj0.Id, parentNodes[0].Inheritance)
  641. } else {
  642. paramObj0.Inheritance = fmt.Sprintf("|%s|", paramObj0.Id)
  643. }
  644. //_, err := c.LocalSqlMapClient("insert_sys_org", &paramObj0).Execute()
  645. paramMap, err := sysutils.BeanToMap(&paramObj0)
  646. _, err = c.Db.SqlMapClient("insert_sys_org", paramMap).Execute()
  647. if err == nil {
  648. c.Ctx.JSON(200, sysmodel.SysReturn{200, "", nil})
  649. } else {
  650. c.Ctx.JSON(500, sysmodel.SysReturn{500, err.Error(), nil})
  651. }
  652. }
  653. // _DelOrg
  654. // @Title _DelOrg
  655. // @Description 删除组织
  656. // @Param id string array false "用户ID"
  657. // @Success 200 {object} Account
  658. // @Failure 403 :id is empty
  659. func System_DelOrg(c *entitys.CtrlContext) {
  660. type Param struct {
  661. Id string `json:"id"`
  662. }
  663. var params []Param
  664. c.Ctx.BindJSON(&params)
  665. ids := []string{}
  666. for _, param := range params {
  667. ids = append(ids, param.Id)
  668. }
  669. _, err := c.Db.Table(new(models.SysOrg)).In("id", ids).Update(map[string]interface{}{"del_flag": 1})
  670. if err == nil {
  671. c.Ctx.JSON(200, sysmodel.SysReturn{200, "", nil})
  672. } else {
  673. c.Ctx.JSON(500, sysmodel.SysReturn{500, err.Error(), nil})
  674. }
  675. }
  676. // _UpdateOrg
  677. // @Title _UpdateOrg
  678. // @Description 修改组织
  679. // @Param name string false "组织名称"
  680. // @Param domain string false "域"
  681. // @Param parent string false "父ID"
  682. // @Success 200 {object} Account
  683. // @Failure 403 :id is empty
  684. func System_UpdateOrg(c *entitys.CtrlContext) {
  685. //name := c.Ctx.Query("name")
  686. //domain := c.Ctx.Query("domain")
  687. //parent := c.Ctx.Query("parent")
  688. var paramObj0 models.SysOrg
  689. err := c.Ctx.BindJSON(&paramObj0)
  690. tk, _ := c.Ctx.Get("token")
  691. user := tk.(*entitys.Token)
  692. if paramObj0.Parent != "" {
  693. parentNodes := []sysmodel.SysOrg{}
  694. err := c.Db.SqlMapClient("one_sys_org", paramObj0.Parent).Find(&parentNodes)
  695. if err != nil {
  696. c.Ctx.JSON(500, sysmodel.SysReturn{500, err.Error(), nil})
  697. return
  698. }
  699. paramObj0.Inheritance = fmt.Sprintf("|%s%s", paramObj0.Id, parentNodes[0].Inheritance)
  700. } else {
  701. paramObj0.Inheritance = fmt.Sprintf("|%s|", paramObj0.Id)
  702. }
  703. paramObj0.LastUpdateBy = user.UserId
  704. paramObj0.LastUpdateTime = time.Now().UnixNano()
  705. paramMap, err := sysutils.BeanToMap(&paramObj0)
  706. _, err = c.Db.SqlMapClient("update_sys_org", paramMap).Execute()
  707. if err == nil {
  708. c.Ctx.JSON(200, sysmodel.SysReturn{200, "", nil})
  709. } else {
  710. c.Ctx.JSON(500, sysmodel.SysReturn{500, err.Error(), nil})
  711. }
  712. }
  713. // _GetOrgByUserid
  714. // @Title _GetOrgByUserid
  715. // @Description 根据用户id获取用户组织
  716. // @Param user_id string false "用户id"
  717. // @Success 200 {object} Account
  718. // @Failure 403 :id is empty
  719. func System_GetOrgByUserid(c *entitys.CtrlContext) {
  720. user_id := c.Ctx.Query("user_id")
  721. var org sysmodel.SysOrg
  722. err := c.Db.SqlMapClient("get_org_by_userid", user_id).Find(&org)
  723. if err == nil {
  724. c.Ctx.JSON(200, sysmodel.SysReturn{200, "", org})
  725. } else {
  726. c.Ctx.JSON(500, sysmodel.SysReturn{500, err.Error(), nil})
  727. }
  728. }
  729. // _AddDomain
  730. // @Title _AddDomain
  731. // @Description 添加域
  732. // @Param false "域"
  733. // @Success 200 {object} Account
  734. // @Failure 403 :id is empty
  735. func System_AddDomain(c *entitys.CtrlContext) {
  736. var paramObj0 models.SysDomain
  737. c.Ctx.BindJSON(&paramObj0)
  738. ////1、测试连接串
  739. //db, err := xorm.NewEngine("mysql", paramObj0.DataSource)
  740. //if err == nil {
  741. // //engine.initOrmEngine(db, "mysql")
  742. // //c.BusinessOrmEngine[v.Domain] = db
  743. //}
  744. tk, _ := c.Ctx.Get("token")
  745. user := tk.(*entitys.Token)
  746. paramObj0.Id = sysutils.NewUUID()
  747. paramObj0.CreateBy = user.UserId
  748. paramObj0.LastUpdateBy = user.UserId
  749. paramObj0.CreateTime = sysmodel.NowLocal()
  750. paramObj0.LastUpdateTime = time.Now().UnixNano()
  751. paramObj0.DelFlag = 0
  752. paramMap, err := sysutils.BeanToMap(&paramObj0)
  753. if err != nil {
  754. c.Ctx.JSON(500, sysmodel.SysReturn{500, err.Error(), nil})
  755. return
  756. }
  757. _, err = c.Db.SqlMapClient("insert_sys_domain", paramMap).Execute()
  758. if err == nil {
  759. //添加数据库基本用户权限数据
  760. ret := c.App.AddBusinessDb(paramObj0.Id, "admin@"+paramObj0.Domain, paramObj0.Domain, paramObj0.DataSource, true)
  761. if ret {
  762. c.Ctx.JSON(200, sysmodel.SysReturn{200, "", paramObj0.Id})
  763. } else {
  764. c.Ctx.JSON(500, sysmodel.SysReturn{500, "数据库初始化错误。", nil})
  765. }
  766. } else {
  767. c.Ctx.JSON(500, sysmodel.SysReturn{500, err.Error(), nil})
  768. }
  769. }
  770. // _DelDomain
  771. // @Title _DelDomain
  772. // @Description 删除域
  773. // @Param id string false "域ID"
  774. // @Success 200 {object} Account
  775. // @Failure 403 :id is empty
  776. func System_DelDomain(c *entitys.CtrlContext) {
  777. type Param struct {
  778. Id string `json:"id"`
  779. }
  780. var params []Param
  781. c.Ctx.BindJSON(&params)
  782. ids := []string{}
  783. for _, param := range params {
  784. ids = append(ids, param.Id)
  785. }
  786. _, err := c.Db.Table(new(models.SysDomain)).In("id", ids).Update(map[string]interface{}{"del_flag": 1})
  787. if err != nil {
  788. c.Ctx.JSON(200, sysmodel.SysReturn{500, err.Error(), nil})
  789. return
  790. }
  791. ret := __none_func_system__()
  792. if ret {
  793. c.Ctx.JSON(200, sysmodel.SysReturn{200, "", nil})
  794. } else {
  795. c.Ctx.JSON(200, sysmodel.SysReturn{500, "", nil})
  796. }
  797. }
  798. // _UpdateDomain
  799. // @Title _UpdateDomain
  800. // @Description 修改域
  801. // @Param false "域"
  802. // @Success 200 {object} Account
  803. // @Failure 403 :id is empty
  804. func System_UpdateDomain(c *entitys.CtrlContext) {
  805. var paramObj0 models.SysDomain
  806. c.Ctx.BindJSON(&paramObj0)
  807. tk, _ := c.Ctx.Get("token")
  808. user := tk.(*entitys.Token)
  809. paramObj0.LastUpdateTime = time.Now().UnixNano()
  810. paramObj0.LastUpdateBy = user.UserId
  811. paramMap, err := sysutils.BeanToMap(&paramObj0)
  812. if err != nil {
  813. c.Ctx.JSON(500, sysmodel.SysReturn{500, err.Error(), nil})
  814. return
  815. }
  816. _, err = c.Db.SqlMapClient("update_sys_domain", paramMap).Execute()
  817. if err == nil {
  818. //添加数据库基本用户权限数据
  819. ret := c.App.AddBusinessDb(paramObj0.Id, "admin@"+paramObj0.Domain, paramObj0.Domain, paramObj0.DataSource, true)
  820. if ret {
  821. c.Ctx.JSON(200, sysmodel.SysReturn{200, "", paramObj0.Id})
  822. } else {
  823. c.Ctx.JSON(500, sysmodel.SysReturn{500, "数据库初始化错误。", nil})
  824. }
  825. } else {
  826. c.Ctx.JSON(500, sysmodel.SysReturn{500, err.Error(), nil})
  827. }
  828. }
  829. // _AddDomainMenu
  830. // @Title _AddDomainMenu
  831. // @Description 域添加菜单
  832. // @Param false "添加域菜单bean"
  833. // @Success 200 {object} Account
  834. // @Failure 403 :id is empty
  835. func System_AddDomainMenu(c *entitys.CtrlContext) {
  836. var paramObj0 struct {
  837. //域名ID
  838. DomainId string `json:"domain_id"`
  839. //菜单
  840. Menus []sysmodel.SysMenu `json:"menus"`
  841. }
  842. err := c.Ctx.BindJSON(&paramObj0)
  843. if err != nil {
  844. c.Ctx.JSON(500, sysmodel.SysReturn{500, "BindJSON error: " + err.Error(), nil})
  845. return
  846. }
  847. if len(paramObj0.Menus) <= 0 {
  848. c.Ctx.JSON(200, sysmodel.SysReturn{500, "the menus is empty", nil})
  849. return
  850. }
  851. var domain sysmodel.SysDomain
  852. param := map[string]interface{}{"id": paramObj0.DomainId}
  853. _, err = c.Db.SqlMapClient("selectone_sys_domain", &param).Get(&domain)
  854. if err != nil {
  855. c.Ctx.JSON(500, sysmodel.SysReturn{500, "not find domain error: " + err.Error(), nil})
  856. return
  857. }
  858. var menuIds = make([]string, len(paramObj0.Menus))
  859. for i := range paramObj0.Menus {
  860. menuIds[i] = paramObj0.Menus[i].Id
  861. }
  862. var menus []sysmodel.SysMenu
  863. err = c.Db.In("id", menuIds).Find(&menus)
  864. if err != nil {
  865. c.Ctx.JSON(500, sysmodel.SysReturn{500, "find menu error: " + err.Error(), nil})
  866. return
  867. }
  868. for i := range menus {
  869. for j := range paramObj0.Menus {
  870. if menus[i].Id == paramObj0.Menus[j].Id {
  871. menus[i].Name = paramObj0.Menus[j].Name
  872. break
  873. }
  874. }
  875. }
  876. session := c.App.GetBusinessDb(domain.Domain).NewSession()
  877. defer session.Close()
  878. session.Begin()
  879. _, err = c.App.GetBusinessDb(domain.Domain).SqlMapClient("delete_all_sys_menu").Execute()
  880. if err != nil {
  881. session.Rollback()
  882. c.Ctx.JSON(500, sysmodel.SysReturn{500, "Insert menu error: " + err.Error(), nil})
  883. return
  884. }
  885. if len(paramObj0.Menus) <= 0 {
  886. session.Rollback()
  887. c.Ctx.JSON(200, sysmodel.SysReturn{500, "the menus is empty", nil})
  888. return
  889. }
  890. _, err = c.App.GetBusinessDb(domain.Domain).Insert(&paramObj0.Menus)
  891. if err != nil {
  892. session.Rollback()
  893. c.Ctx.JSON(500, sysmodel.SysReturn{500, "Insert menu error: " + err.Error(), nil})
  894. return
  895. }
  896. session.Commit()
  897. ret := __none_func_system__(paramObj0)
  898. if ret {
  899. c.Ctx.JSON(200, sysmodel.SysReturn{200, "", nil})
  900. } else {
  901. c.Ctx.JSON(500, sysmodel.SysReturn{500, "", nil})
  902. }
  903. }
  904. // _GetDomainMenuTree
  905. // @Title _GetDomainMenuTree
  906. // @Description 域添加菜单
  907. // @Param domain_id string false "域id"
  908. // @Success 200 {object} Account
  909. // @Failure 403 :id is empty
  910. func System_GetDomainMenuTree(c *entitys.CtrlContext) {
  911. domain_id := c.Ctx.Query("domain_id")
  912. _type := c.Ctx.DefaultQuery("type", "")
  913. type_op := c.Ctx.DefaultQuery("type_op", "")
  914. op := template.HTML(type_op)
  915. var domain sysmodel.SysDomain
  916. param := map[string]interface{}{"id": domain_id, "type": _type, "type_op": op}
  917. _, err := c.Db.SqlMapClient("selectone_sys_domain", &param).Get(&domain)
  918. if err != nil {
  919. c.Ctx.JSON(500, sysmodel.SysReturn{500, "not find domain error: " + err.Error(), nil})
  920. return
  921. }
  922. paramMap := map[string]interface{}{"type": _type, "type_op": op, "name": "", "hidden": ""}
  923. domainMenus, err := c.App.GetBusinessDb(domain.Domain).SqlTemplateClient("system_get_menu_tree.tpl", &paramMap).Query().List()
  924. if err != nil {
  925. c.Ctx.JSON(500, sysmodel.SysReturn{500, "get domain_menu tree: " + err.Error(), nil})
  926. return
  927. }
  928. domainTree, err := sysutils.BuildTree("", domainMenus)
  929. sysMenus, err := c.Db.SqlTemplateClient("system_get_menu_tree.tpl", &paramMap).Query().List()
  930. if err != nil {
  931. c.Ctx.JSON(500, sysmodel.SysReturn{500, "get sys_menu tree: " + err.Error(), nil})
  932. return
  933. }
  934. var sysMenusMap map[string]map[string]interface{}
  935. sysMenusMap = make(map[string]map[string]interface{}, 0)
  936. for _, menu := range sysMenus {
  937. sysMenusMap[menu["id"].(string)] = menu
  938. }
  939. //剔除域已存在的菜单
  940. //for _, domainMenu := range domainMenus {
  941. // delete(sysMenusMap, domainMenu["id"].(string))
  942. //}
  943. var sysMenuRest []map[string]interface{}
  944. for _, menu := range sysMenusMap {
  945. sysMenuRest = append(sysMenuRest, menu)
  946. }
  947. sysTree, err := sysutils.BuildTree("", sysMenuRest)
  948. ret := __none_func_system__(domain_id)
  949. if ret {
  950. c.Ctx.JSON(200, sysmodel.SysReturn{200, "", map[string]interface{}{"sys_tree": sysTree, "domain_tree": domainTree}})
  951. } else {
  952. c.Ctx.JSON(500, sysmodel.SysReturn{500, "", nil})
  953. }
  954. }
  955. // _GetUserMenuTree
  956. // @Title _GetUserMenuTree
  957. // @Description 获取用户权限菜单
  958. // @Param user_id string false "用户id"
  959. // @Success 200 {object} Account
  960. // @Failure 403 :id is empty
  961. func System_GetRoleMenuTree(c *entitys.CtrlContext) {
  962. role_id := c.Ctx.Query("role_id")
  963. //paramMap := map[string]interface{}{"role_id": role_id}
  964. //sysMenu, err := c.Db.SqlMapClient("get_role_no_have_menu_tree", &paramMap).Query().List()
  965. //if err != nil {
  966. // c.Ctx.JSON(500, sysmodel.SysReturn{500, err.Error(), nil})
  967. // return
  968. //}
  969. //sysTree, err := sysutils.BuildTree("", sysMenu)
  970. op := template.HTML(">=")
  971. paramMap := map[string]interface{}{"user_id": "", "sort": "name", "type": 0, "type_op": op, "hidden": 0}
  972. sysTree, err := sysutils.TreeSearch(c.Db, "system", "get_menu_tree", "sys_menu", paramMap)
  973. if err != nil {
  974. c.Ctx.JSON(500, sysmodel.SysReturn{500, err.Error(), nil})
  975. return
  976. }
  977. paramMap2 := map[string]interface{}{"role_id": role_id}
  978. //roleTree, err := sysutils.TreeSearch(c.Db, "system", "get_role_menu_tree", "sys_menu", paramMap2)
  979. roleMenu, err := c.Db.SqlMapClient("get_role_menu_tree", &paramMap2).Query().List()
  980. if err != nil {
  981. c.Ctx.JSON(500, sysmodel.SysReturn{500, err.Error(), nil})
  982. return
  983. }
  984. roleTree, err := sysutils.BuildTree("", roleMenu)
  985. ret := __none_func_system__(role_id)
  986. if ret {
  987. c.Ctx.JSON(200, sysmodel.SysReturn{200, "", map[string]interface{}{"sys_tree": sysTree, "role_tree": roleTree}})
  988. } else {
  989. c.Ctx.JSON(500, sysmodel.SysReturn{500, "", nil})
  990. }
  991. }
  992. // _AddRoleMenu
  993. // @Title _AddRoleMenu
  994. // @Description 添加角色菜单
  995. // @Param menu_id false "菜单id"
  996. // @Param role_id string false "角色id"
  997. // @Success 200 {object} Account
  998. // @Failure 403 :id is empty
  999. func System_AddRoleMenu(c *entitys.CtrlContext) {
  1000. tk, _ := c.Ctx.Get("token")
  1001. user := tk.(*entitys.Token)
  1002. var paramObj0 struct {
  1003. MenuIds []string `json:"menu_ids"`
  1004. RoleId string `json:"role_id"`
  1005. }
  1006. c.Ctx.BindJSON(&paramObj0)
  1007. session := c.Db.NewSession()
  1008. defer session.Close()
  1009. session.Begin()
  1010. _, err := session.SqlMapClient("del_role_menu", paramObj0.RoleId).Execute()
  1011. if err != nil {
  1012. session.Rollback()
  1013. c.Ctx.JSON(500, sysmodel.SysReturn{500, err.Error(), nil})
  1014. return
  1015. }
  1016. var roleMenus []*sysmodel.SysRoleMenu
  1017. for _, menu := range paramObj0.MenuIds {
  1018. roleMenu := &sysmodel.SysRoleMenu{}
  1019. roleMenu.Id = sysutils.NewUUID()
  1020. roleMenu.MenuId = menu
  1021. roleMenu.RoleId = paramObj0.RoleId
  1022. roleMenu.CreateBy = user.UserId
  1023. roleMenu.CreateTime = sysmodel.NowLocal()
  1024. roleMenus = append(roleMenus, roleMenu)
  1025. }
  1026. _, err = session.InsertMulti(&roleMenus)
  1027. if err != nil {
  1028. session.Rollback()
  1029. c.Ctx.JSON(500, sysmodel.SysReturn{500, err.Error(), nil})
  1030. return
  1031. }
  1032. session.Commit()
  1033. ret := __none_func_system__(paramObj0)
  1034. if ret {
  1035. c.Ctx.JSON(200, sysmodel.SysReturn{200, "", nil})
  1036. } else {
  1037. c.Ctx.JSON(500, sysmodel.SysReturn{500, "", nil})
  1038. }
  1039. }
  1040. func __none_func_system__(params ...interface{}) bool {
  1041. return true
  1042. }