SystemController.go 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491
  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. "strconv"
  9. "time"
  10. )
  11. // _Sidebar
  12. // @Title _Sidebar
  13. // @Description 获取导航菜单
  14. // @Param user string false "用户id"
  15. // @Success 200 {object} Account
  16. // @Failure 403 :id is empty
  17. func System_Sidebar(c *entitys.CtrlContext) {
  18. fmt.Println(c.Db.DataSourceName())
  19. paramMap_i_t := map[string]interface{}{"sort": "name"}
  20. result, err := sysutils.TreeSearch(c.Db, "system", "sidebar", "sys_menu", paramMap_i_t)
  21. if err == nil {
  22. c.Ctx.JSON(200, sysmodel.SysReturn{200, "", result})
  23. } else {
  24. c.Ctx.JSON(500, sysmodel.SysReturn{500, err.Error(), nil})
  25. }
  26. }
  27. // _GetMenuTree
  28. // @Title _GetMenuTree
  29. // @Description 获取系统菜单
  30. // @Param user string false "用户id"
  31. // @Success 200 {object} Account
  32. // @Failure 403 :id is empty
  33. func System_GetMenuTree(c *entitys.CtrlContext) {
  34. paramMap_i_t := map[string]interface{}{"sort": "name"}
  35. result, err := sysutils.TreeSearch(c.Db, "system", "get_menu_tree", "sys_menu", paramMap_i_t)
  36. if err == nil {
  37. c.Ctx.JSON(200, sysmodel.SysReturn{200, "", result})
  38. } else {
  39. c.Ctx.JSON(500, sysmodel.SysReturn{500, err.Error(), nil})
  40. }
  41. }
  42. // _FindUserPage
  43. // @Title _FindUserPage
  44. // @Description 获取用户分页数
  45. // @Success 200 {object} Account
  46. // @Failure 403 :id is empty
  47. func System_FindUserPage(c *entitys.CtrlContext) {
  48. page, _ := strconv.Atoi(c.Ctx.DefaultQuery("page", "1"))
  49. rows, _ := strconv.Atoi(c.Ctx.DefaultQuery("rows", "10"))
  50. name := c.Ctx.DefaultQuery("name", "")
  51. login_id := c.Ctx.DefaultQuery("login_id", "")
  52. paramMap_i_t := map[string]interface{}{"page": page, "rows": rows, "name": name, "login_id": login_id}
  53. result, err := sysutils.PageSearch(c.Db, "system", "find_user_page", "sys_user", paramMap_i_t)
  54. if err != nil {
  55. c.Ctx.JSON(200, sysmodel.SysReturn{200, "", result})
  56. return
  57. }
  58. type Role struct {
  59. RoleName string `json:"role_name"`
  60. UserRole string `json:"user_role"`
  61. }
  62. //获取用户角色
  63. users := result.Content.([]map[string]interface{})
  64. for i, user := range users {
  65. roles := []Role{}
  66. err := c.Db.SqlMapClient("get_roles_by_user_id", user["id"]).Find(&roles)
  67. if err != nil {
  68. fmt.Println("----", err.Error())
  69. continue
  70. }
  71. users[i]["user_role"] = roles[0].UserRole
  72. users[i]["role_name"] = roles[0].RoleName
  73. }
  74. result.Content = users
  75. if err == nil {
  76. c.Ctx.JSON(200, sysmodel.SysReturn{200, "", result})
  77. } else {
  78. c.Ctx.JSON(500, sysmodel.SysReturn{500, err.Error(), nil})
  79. }
  80. }
  81. // _GetOrgTree
  82. // @Title _GetOrgTree
  83. // @Description 获取组织架构树
  84. // @Success 200 {object} Account
  85. // @Failure 403 :id is empty
  86. func System_GetOrgTree(c *entitys.CtrlContext) {
  87. paramMap_i_t := map[string]interface{}{"sort": "name"}
  88. result, err := sysutils.TreeSearch(c.Db, "system", "get_org_tree", "sys_org", paramMap_i_t)
  89. if err == nil {
  90. c.Ctx.JSON(200, sysmodel.SysReturn{200, "", result})
  91. } else {
  92. c.Ctx.JSON(500, sysmodel.SysReturn{500, err.Error(), nil})
  93. }
  94. }
  95. // _FindOrgPage
  96. // @Title _FindOrgPage
  97. // @Description 获取组织架构分页数
  98. // @Success 200 {object} Account
  99. // @Failure 403 :id is empty
  100. func System_FindOrgPage(c *entitys.CtrlContext) {
  101. page, _ := strconv.Atoi(c.Ctx.DefaultQuery("page", "1"))
  102. rows, _ := strconv.Atoi(c.Ctx.DefaultQuery("rows", "10"))
  103. paramMap_i_t := map[string]interface{}{"page": page, "rows": rows}
  104. result, err := sysutils.PageSearch(c.Db, "system", "find_org_page", "sys_org", paramMap_i_t)
  105. if err == nil {
  106. c.Ctx.JSON(200, sysmodel.SysReturn{200, "", result})
  107. } else {
  108. c.Ctx.JSON(500, sysmodel.SysReturn{500, err.Error(), nil})
  109. }
  110. }
  111. // _AddUser
  112. // @Title _AddUser
  113. // @Description 添加用户
  114. // @Param login_id string false "登录ID"
  115. // @Param password string false "密码"
  116. // @Param org_id string false "组织ID"
  117. // @Param email string false "邮箱"
  118. // @Success 200 {object} Account
  119. // @Failure 403 :id is empty
  120. func System_AddUser(c *entitys.CtrlContext) {
  121. var user sysmodel.SysUser
  122. err := c.Ctx.BindJSON(&user)
  123. if err != nil {
  124. c.Ctx.JSON(200, sysmodel.SysReturn{500, err.Error(), nil})
  125. }
  126. fmt.Println(user.LoginId, "-----add user-----", user.Password, " --- ", user.OrgId)
  127. //查找login_id是否存在
  128. oldUser := new(sysmodel.SysUser)
  129. count, _ := c.Db.SQL("select * from sys_user").Where("login_id = ?", user.LoginId).Count(&oldUser)
  130. if count > 1 {
  131. if oldUser.DelFlag == 1 {
  132. oldUser.DelFlag = 0
  133. _, err := c.Db.Id("id").Cols("del_flag").Update(&oldUser)
  134. if err != nil {
  135. c.Ctx.JSON(200, sysmodel.SysReturn{500, "login_id exit, update err: " + err.Error(), nil})
  136. }
  137. return
  138. } else {
  139. c.Ctx.JSON(200, sysmodel.SysReturn{500, "login_id exit", nil})
  140. return
  141. }
  142. }
  143. user_id := c.Ctx.GetString("user_id")
  144. user.Id = sysutils.NewUUID()
  145. user.Name = user.LoginId
  146. user.CreateTime = time.Now()
  147. user.LastUpdateDate = time.Now()
  148. user.CreateBy = user_id
  149. user.LastUpdateBy = user_id
  150. user.DelFlag = 0
  151. user.Password = sysutils.HashPassword(user.Password, "")
  152. _, err = c.Db.Insert(&user)
  153. ret := __none_func_system__(user.LoginId, user.Password, user.OrgId, user.Email)
  154. if ret && err == nil {
  155. c.Ctx.JSON(200, sysmodel.SysReturn{200, "", nil})
  156. } else {
  157. c.Ctx.JSON(200, sysmodel.SysReturn{500, err.Error(), nil})
  158. }
  159. }
  160. // _DelUser
  161. // @Title _DelUser
  162. // @Description 删除用户
  163. // @Param id string false "用户ID"
  164. // @Success 200 {object} Account
  165. // @Failure 403 :id is empty
  166. func System_DelUser(c *entitys.CtrlContext) {
  167. type Param struct {
  168. Id string `json:"id"`
  169. }
  170. var params []Param
  171. c.Ctx.BindJSON(&params)
  172. ids := []string{}
  173. for _, param := range params {
  174. ids = append(ids, param.Id)
  175. }
  176. session := c.Db.NewSession()
  177. defer session.Close()
  178. _, err := c.Db.Table(new(models.SysUser)).In("id", ids).Update(map[string]interface{}{"del_flag": 1})
  179. if err != nil {
  180. session.Rollback()
  181. c.Ctx.JSON(200, sysmodel.SysReturn{500, err.Error(), nil})
  182. return
  183. }
  184. _, err = c.Db.Table(new(models.SysUserRole)).In("user_id", ids).Update(map[string]interface{}{"del_flag": 1})
  185. if err != nil {
  186. session.Rollback()
  187. c.Ctx.JSON(200, sysmodel.SysReturn{500, err.Error(), nil})
  188. return
  189. }
  190. session.Commit()
  191. ret := __none_func_system__()
  192. if ret {
  193. c.Ctx.JSON(200, sysmodel.SysReturn{200, "", nil})
  194. } else {
  195. c.Ctx.JSON(200, sysmodel.SysReturn{500, "", nil})
  196. }
  197. }
  198. // _UpdateUser
  199. // @Title _UpdateUser
  200. // @Description 修改用户
  201. // @Param login_id string false "登录ID"
  202. // @Param password string false "密码"
  203. // @Param org_id string false "组织ID"
  204. // @Param email string false "邮箱"
  205. // @Success 200 {object} Account
  206. // @Failure 403 :id is empty
  207. func System_UpdateUser(c *entitys.CtrlContext) {
  208. var user sysmodel.SysUser
  209. err := c.Ctx.BindJSON(&user)
  210. if err != nil {
  211. c.Ctx.JSON(500, sysmodel.SysReturn{500, err.Error(), nil})
  212. return
  213. }
  214. _, err = c.Db.SqlMapClient("update_sys_user", &user).Execute()
  215. if err == nil {
  216. c.Ctx.JSON(200, sysmodel.SysReturn{200, "", nil})
  217. } else {
  218. c.Ctx.JSON(500, sysmodel.SysReturn{500, err.Error(), nil})
  219. }
  220. }
  221. // _AddRole
  222. // @Title _AddRole
  223. // @Description 添加角色
  224. // @Param name string false "角色名称"
  225. // @Param remark string false "备注"
  226. // @Success 200 {object} Account
  227. // @Failure 403 :id is empty
  228. func System_AddRole(c *entitys.CtrlContext) {
  229. name := c.Ctx.Query("name")
  230. remark := c.Ctx.Query("remark")
  231. ret := __none_func_system__(name, remark)
  232. if ret {
  233. c.Ctx.JSON(200, sysmodel.SysReturn{200, "", nil})
  234. } else {
  235. c.Ctx.JSON(500, sysmodel.SysReturn{500, "", nil})
  236. }
  237. }
  238. // _DelRole
  239. // @Title _DelRole
  240. // @Description 添加角色
  241. // @Param id string false "角色ID"
  242. // @Success 200 {object} Account
  243. // @Failure 403 :id is empty
  244. func System_DelRole(c *entitys.CtrlContext) {
  245. id := c.Ctx.Query("id")
  246. ret := __none_func_system__(id)
  247. if ret {
  248. c.Ctx.JSON(200, sysmodel.SysReturn{200, "", nil})
  249. } else {
  250. c.Ctx.JSON(500, sysmodel.SysReturn{500, "", nil})
  251. }
  252. }
  253. // _UpdateRole
  254. // @Title _UpdateRole
  255. // @Description 修改角色
  256. // @Param id string false "角色ID"
  257. // @Param name string false "角色名称"
  258. // @Param remark string false "备注"
  259. // @Success 200 {object} Account
  260. // @Failure 403 :id is empty
  261. func System_UpdateRole(c *entitys.CtrlContext) {
  262. id := c.Ctx.Query("id")
  263. name := c.Ctx.Query("name")
  264. remark := c.Ctx.Query("remark")
  265. ret := __none_func_system__(id, name, remark)
  266. if ret {
  267. c.Ctx.JSON(200, sysmodel.SysReturn{200, "", nil})
  268. } else {
  269. c.Ctx.JSON(500, sysmodel.SysReturn{500, "", nil})
  270. }
  271. }
  272. // _FindRolePage
  273. // @Title _FindRolePage
  274. // @Description 角色分页
  275. // @Param page false "分页参数"
  276. // @Success 200 {object} Account
  277. // @Failure 403 :id is empty
  278. func System_FindRolePage(c *entitys.CtrlContext) {
  279. page, _ := strconv.Atoi(c.Ctx.DefaultQuery("page", "1"))
  280. rows, _ := strconv.Atoi(c.Ctx.DefaultQuery("rows", "10"))
  281. paramMap_i_t := map[string]interface{}{"page": page, "rows": rows}
  282. result, err := sysutils.PageSearch(c.Db, "system", "find_role_page", "sys_role", paramMap_i_t)
  283. if err == nil {
  284. c.Ctx.JSON(200, sysmodel.SysReturn{200, "", result})
  285. } else {
  286. c.Ctx.JSON(500, sysmodel.SysReturn{500, err.Error(), nil})
  287. }
  288. }
  289. // _FindMenuPage
  290. // @Title _FindMenuPage
  291. // @Description 获取角色分页数
  292. // @Success 200 {object} Account
  293. // @Failure 403 :id is empty
  294. func System_FindMenuPage(c *entitys.CtrlContext) {
  295. page, _ := strconv.Atoi(c.Ctx.DefaultQuery("page", "1"))
  296. rows, _ := strconv.Atoi(c.Ctx.DefaultQuery("rows", "10"))
  297. name := c.Ctx.DefaultQuery("name", "")
  298. code := c.Ctx.DefaultQuery("code", "")
  299. cn_id := c.Ctx.DefaultQuery("cn_id", "")
  300. paramMap_i_t := map[string]interface{}{"page": page, "rows": rows, "name": name, "code": code, "cn_id": cn_id}
  301. result, err := sysutils.PageSearch(c.Db, "system", "find_menu_page", "sys_menu", paramMap_i_t)
  302. if err == nil {
  303. c.Ctx.JSON(200, sysmodel.SysReturn{200, "", result})
  304. } else {
  305. c.Ctx.JSON(500, sysmodel.SysReturn{500, err.Error(), nil})
  306. }
  307. }
  308. // _FindRoleMenu
  309. // @Title _FindRoleMenu
  310. // @Description 查找角色权限
  311. // @Param role_id string false "角色id"
  312. // @Success 200 {object} Account
  313. // @Failure 403 :id is empty
  314. func System_FindRoleMenu(c *entitys.CtrlContext) {
  315. role_id := c.Ctx.Query("role_id")
  316. ret := __none_func_system__(role_id)
  317. if ret {
  318. c.Ctx.JSON(200, sysmodel.SysReturn{200, "", nil})
  319. } else {
  320. c.Ctx.JSON(500, sysmodel.SysReturn{500, "", nil})
  321. }
  322. }
  323. // _SaveRoleMenu
  324. // @Title _SaveRoleMenu
  325. // @Description 保存角色权限
  326. // @Param role_menu string false "角色权限"
  327. // @Success 200 {object} Account
  328. // @Failure 403 :id is empty
  329. func System_SaveRoleMenu(c *entitys.CtrlContext) {
  330. var paramObj0 []models.SaveRoleMenu
  331. c.Ctx.BindJSON(&paramObj0)
  332. ret := __none_func_system__(paramObj0)
  333. if ret {
  334. c.Ctx.JSON(200, sysmodel.SysReturn{200, "", nil})
  335. } else {
  336. c.Ctx.JSON(500, sysmodel.SysReturn{500, "", nil})
  337. }
  338. }
  339. // _RoleAll
  340. // @Title _RoleAll
  341. // @Description 查找所有角色
  342. // @Success 200 {object} Account
  343. // @Failure 403 :id is empty
  344. func System_RoleAll(c *entitys.CtrlContext) {
  345. ret := __none_func_system__()
  346. if ret {
  347. c.Ctx.JSON(200, sysmodel.SysReturn{200, "", nil})
  348. } else {
  349. c.Ctx.JSON(500, sysmodel.SysReturn{500, "", nil})
  350. }
  351. }
  352. // _FindPermissions
  353. // @Title _FindPermissions
  354. // @Description 查找用户权限
  355. // @Success 200 {object} Account
  356. // @Failure 403 :id is empty
  357. func System_FindPermissions(c *entitys.CtrlContext) {
  358. ret := __none_func_system__()
  359. if ret {
  360. c.Ctx.JSON(200, sysmodel.SysReturn{200, "", nil})
  361. } else {
  362. c.Ctx.JSON(500, sysmodel.SysReturn{500, "", nil})
  363. }
  364. }
  365. // _AddMenu
  366. // @Title _AddMenu
  367. // @Description 添加菜单
  368. // @Param string false "菜单"
  369. // @Success 200 {object} Account
  370. // @Failure 403 :id is empty
  371. func System_AddMenu(c *entitys.CtrlContext) {
  372. var paramObj0 models.SysMenu
  373. c.Ctx.BindJSON(&paramObj0)
  374. tk, _ := c.Ctx.Get("token")
  375. user := tk.(*entitys.Token)
  376. paramObj0.Id = sysutils.NewUUID()
  377. paramObj0.Domain = user.Domain
  378. paramObj0.CreateBy = user.UserId
  379. paramObj0.LastUpdateBy = user.UserId
  380. paramObj0.CreateTime = time.Now()
  381. paramObj0.LastUpdateDate = time.Now()
  382. paramObj0.DelFlag = 0
  383. parentNodes := []sysmodel.SysMenu{}
  384. err := c.Db.SqlMapClient("one_sys_menu", paramObj0.Parent).Find(&parentNodes)
  385. if err != nil {
  386. c.Ctx.JSON(500, sysmodel.SysReturn{500, err.Error(), nil})
  387. return
  388. }
  389. paramObj0.Inheritance = fmt.Sprintf("|%s%s", paramObj0.Id, parentNodes[0].Inheritance)
  390. _, err = c.Db.SqlMapClient("insert_sys_menu", &paramObj0).Execute()
  391. if err == nil {
  392. c.Ctx.JSON(200, sysmodel.SysReturn{200, "", nil})
  393. } else {
  394. c.Ctx.JSON(500, sysmodel.SysReturn{500, err.Error(), nil})
  395. }
  396. }
  397. // _DelMenu
  398. // @Title _DelMenu
  399. // @Description 删除菜单
  400. // @Param id string false "菜单ID"
  401. // @Success 200 {object} Account
  402. // @Failure 403 :id is empty
  403. func System_DelMenu(c *entitys.CtrlContext) {
  404. id := c.Ctx.Query("id")
  405. ret := __none_func_system__(id)
  406. if ret {
  407. c.Ctx.JSON(200, sysmodel.SysReturn{200, "", nil})
  408. } else {
  409. c.Ctx.JSON(500, sysmodel.SysReturn{500, "", nil})
  410. }
  411. }
  412. // _UpdateMenu
  413. // @Title _UpdateMenu
  414. // @Description 更新菜单
  415. // @Param string false "菜单"
  416. // @Success 200 {object} Account
  417. // @Failure 403 :id is empty
  418. func System_UpdateMenu(c *entitys.CtrlContext) {
  419. var paramObj0 models.SysMenu
  420. c.Ctx.BindJSON(&paramObj0)
  421. _, err := c.Db.SqlMapClient("update_sys_menu", paramObj0).Execute()
  422. if err == nil {
  423. c.Ctx.JSON(200, sysmodel.SysReturn{200, "", nil})
  424. } else {
  425. c.Ctx.JSON(500, sysmodel.SysReturn{500, "", nil})
  426. }
  427. }
  428. func __none_func_system__(params ...interface{}) bool {
  429. return true
  430. }