SystemController.go 35 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207
  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. // type
  842. Type int `json:"type"`
  843. }
  844. err := c.Ctx.BindJSON(&paramObj0)
  845. if err != nil {
  846. c.Ctx.JSON(500, sysmodel.SysReturn{500, "BindJSON error: " + err.Error(), nil})
  847. return
  848. }
  849. var domain sysmodel.SysDomain
  850. param := map[string]interface{}{"id": paramObj0.DomainId}
  851. _, err = c.Db.SqlMapClient("selectone_sys_domain", &param).Get(&domain)
  852. if err != nil {
  853. c.Ctx.JSON(500, sysmodel.SysReturn{500, "not find domain error: " + err.Error(), nil})
  854. return
  855. }
  856. var menuIds = make([]string, len(paramObj0.Menus))
  857. for i := range paramObj0.Menus {
  858. menuIds[i] = paramObj0.Menus[i].Id
  859. }
  860. var menus []sysmodel.SysMenu
  861. err = c.Db.In("id", menuIds).Find(&menus)
  862. if err != nil {
  863. c.Ctx.JSON(500, sysmodel.SysReturn{500, "find menu error: " + err.Error(), nil})
  864. return
  865. }
  866. for i := range menus {
  867. for j := range paramObj0.Menus {
  868. if menus[i].Id == paramObj0.Menus[j].Id {
  869. menus[i].Name = paramObj0.Menus[j].Name
  870. break
  871. }
  872. }
  873. }
  874. session := c.App.GetBusinessDb(domain.Domain).NewSession()
  875. defer session.Close()
  876. session.Begin()
  877. deleteSqlMapKey := ""
  878. if paramObj0.Type >= 0{
  879. deleteSqlMapKey = "delete_backend_sys_menu"
  880. }else{
  881. deleteSqlMapKey = "delete_app_sys_menu"
  882. }
  883. _, err = c.App.GetBusinessDb(domain.Domain).SqlMapClient(deleteSqlMapKey).Execute()
  884. if err != nil {
  885. session.Rollback()
  886. c.Ctx.JSON(500, sysmodel.SysReturn{500, "Insert menu error: " + err.Error(), nil})
  887. return
  888. }
  889. if len(paramObj0.Menus) <= 0 {
  890. session.Commit()
  891. c.Ctx.JSON(200, sysmodel.SysReturn{200, "the menus is empty", nil})
  892. return
  893. }
  894. _, err = c.App.GetBusinessDb(domain.Domain).Insert(&paramObj0.Menus)
  895. if err != nil {
  896. session.Rollback()
  897. c.Ctx.JSON(500, sysmodel.SysReturn{500, "Insert menu error: " + err.Error(), nil})
  898. return
  899. }
  900. session.Commit()
  901. ret := __none_func_system__(paramObj0)
  902. if ret {
  903. c.Ctx.JSON(200, sysmodel.SysReturn{200, "", nil})
  904. } else {
  905. c.Ctx.JSON(500, sysmodel.SysReturn{500, "", nil})
  906. }
  907. }
  908. // _GetDomainMenuTree
  909. // @Title _GetDomainMenuTree
  910. // @Description 域添加菜单
  911. // @Param domain_id string false "域id"
  912. // @Success 200 {object} Account
  913. // @Failure 403 :id is empty
  914. func System_GetDomainMenuTree(c *entitys.CtrlContext) {
  915. domain_id := c.Ctx.Query("domain_id")
  916. _type := c.Ctx.DefaultQuery("type", "")
  917. type_op := c.Ctx.DefaultQuery("type_op", "")
  918. op := template.HTML(type_op)
  919. var domain sysmodel.SysDomain
  920. param := map[string]interface{}{"id": domain_id, "type": _type, "type_op": op}
  921. _, err := c.Db.SqlMapClient("selectone_sys_domain", &param).Get(&domain)
  922. if err != nil {
  923. c.Ctx.JSON(500, sysmodel.SysReturn{500, "not find domain error: " + err.Error(), nil})
  924. return
  925. }
  926. paramMap := map[string]interface{}{"type": _type, "type_op": op, "name": "", "hidden": ""}
  927. domainMenus, err := c.App.GetBusinessDb(domain.Domain).SqlTemplateClient("system_get_menu_tree.tpl", &paramMap).Query().List()
  928. if err != nil {
  929. c.Ctx.JSON(500, sysmodel.SysReturn{500, "get domain_menu tree: " + err.Error(), nil})
  930. return
  931. }
  932. domainTree, err := sysutils.BuildTree("", domainMenus)
  933. sysMenus, err := c.Db.SqlTemplateClient("system_get_menu_tree.tpl", &paramMap).Query().List()
  934. if err != nil {
  935. c.Ctx.JSON(500, sysmodel.SysReturn{500, "get sys_menu tree: " + err.Error(), nil})
  936. return
  937. }
  938. var sysMenusMap map[string]map[string]interface{}
  939. sysMenusMap = make(map[string]map[string]interface{}, 0)
  940. for _, menu := range sysMenus {
  941. sysMenusMap[menu["id"].(string)] = menu
  942. }
  943. //剔除域已存在的菜单
  944. //for _, domainMenu := range domainMenus {
  945. // delete(sysMenusMap, domainMenu["id"].(string))
  946. //}
  947. var sysMenuRest []map[string]interface{}
  948. for _, menu := range sysMenusMap {
  949. sysMenuRest = append(sysMenuRest, menu)
  950. }
  951. sysTree, err := sysutils.BuildTree("", sysMenuRest)
  952. ret := __none_func_system__(domain_id)
  953. if ret {
  954. c.Ctx.JSON(200, sysmodel.SysReturn{200, "", map[string]interface{}{"sys_tree": sysTree, "domain_tree": domainTree}})
  955. } else {
  956. c.Ctx.JSON(500, sysmodel.SysReturn{500, "", nil})
  957. }
  958. }
  959. // _GetUserMenuTree
  960. // @Title _GetUserMenuTree
  961. // @Description 获取用户权限菜单
  962. // @Param user_id string false "用户id"
  963. // @Success 200 {object} Account
  964. // @Failure 403 :id is empty
  965. func System_GetRoleMenuTree(c *entitys.CtrlContext) {
  966. role_id := c.Ctx.Query("role_id")
  967. //paramMap := map[string]interface{}{"role_id": role_id}
  968. //sysMenu, err := c.Db.SqlMapClient("get_role_no_have_menu_tree", &paramMap).Query().List()
  969. //if err != nil {
  970. // c.Ctx.JSON(500, sysmodel.SysReturn{500, err.Error(), nil})
  971. // return
  972. //}
  973. //sysTree, err := sysutils.BuildTree("", sysMenu)
  974. op := template.HTML(">=")
  975. paramMap := map[string]interface{}{"user_id": "", "sort": "name", "type": 0, "type_op": op, "hidden": 0}
  976. sysTree, err := sysutils.TreeSearch(c.Db, "system", "get_menu_tree", "sys_menu", paramMap)
  977. if err != nil {
  978. c.Ctx.JSON(500, sysmodel.SysReturn{500, err.Error(), nil})
  979. return
  980. }
  981. paramMap2 := map[string]interface{}{"role_id": role_id}
  982. //roleTree, err := sysutils.TreeSearch(c.Db, "system", "get_role_menu_tree", "sys_menu", paramMap2)
  983. roleMenu, err := c.Db.SqlMapClient("get_role_menu_tree", &paramMap2).Query().List()
  984. if err != nil {
  985. c.Ctx.JSON(500, sysmodel.SysReturn{500, err.Error(), nil})
  986. return
  987. }
  988. roleTree, err := sysutils.BuildTree("", roleMenu)
  989. ret := __none_func_system__(role_id)
  990. if ret {
  991. c.Ctx.JSON(200, sysmodel.SysReturn{200, "", map[string]interface{}{"sys_tree": sysTree, "role_tree": roleTree}})
  992. } else {
  993. c.Ctx.JSON(500, sysmodel.SysReturn{500, "", nil})
  994. }
  995. }
  996. // _AddRoleMenu
  997. // @Title _AddRoleMenu
  998. // @Description 添加角色菜单
  999. // @Param menu_id false "菜单id"
  1000. // @Param role_id string false "角色id"
  1001. // @Success 200 {object} Account
  1002. // @Failure 403 :id is empty
  1003. func System_AddRoleMenu(c *entitys.CtrlContext) {
  1004. tk, _ := c.Ctx.Get("token")
  1005. user := tk.(*entitys.Token)
  1006. var paramObj0 struct {
  1007. MenuIds []string `json:"menu_ids"`
  1008. RoleId string `json:"role_id"`
  1009. }
  1010. c.Ctx.BindJSON(&paramObj0)
  1011. session := c.Db.NewSession()
  1012. defer session.Close()
  1013. session.Begin()
  1014. _, err := session.SqlMapClient("del_role_menu", paramObj0.RoleId).Execute()
  1015. if err != nil {
  1016. session.Rollback()
  1017. c.Ctx.JSON(500, sysmodel.SysReturn{500, err.Error(), nil})
  1018. return
  1019. }
  1020. var roleMenus []*sysmodel.SysRoleMenu
  1021. for _, menu := range paramObj0.MenuIds {
  1022. roleMenu := &sysmodel.SysRoleMenu{}
  1023. roleMenu.Id = sysutils.NewUUID()
  1024. roleMenu.MenuId = menu
  1025. roleMenu.RoleId = paramObj0.RoleId
  1026. roleMenu.CreateBy = user.UserId
  1027. roleMenu.CreateTime = sysmodel.NowLocal()
  1028. roleMenus = append(roleMenus, roleMenu)
  1029. }
  1030. _, err = session.InsertMulti(&roleMenus)
  1031. if err != nil {
  1032. session.Rollback()
  1033. c.Ctx.JSON(500, sysmodel.SysReturn{500, err.Error(), nil})
  1034. return
  1035. }
  1036. session.Commit()
  1037. ret := __none_func_system__(paramObj0)
  1038. if ret {
  1039. c.Ctx.JSON(200, sysmodel.SysReturn{200, "", nil})
  1040. } else {
  1041. c.Ctx.JSON(500, sysmodel.SysReturn{500, "", nil})
  1042. }
  1043. }
  1044. func __none_func_system__(params ...interface{}) bool {
  1045. return true
  1046. }