SystemController.go 26 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919
  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. }
  21. // _GetMenuTree
  22. // @Title _GetMenuTree
  23. // @Description 获取系统菜单
  24. // @Param user string false "用户id"
  25. // @Success 200 {object} Account
  26. // @Failure 403 :id is empty
  27. func System_GetMenuTree(c *entitys.CtrlContext) {
  28. _type := c.Ctx.DefaultQuery("type", "")
  29. type_op := c.Ctx.DefaultQuery("type_op", "")
  30. op := template.HTML(type_op)
  31. paramMap_i_t := map[string]interface{}{"sort": "name", "type": _type, "type_op": op}
  32. result, err := sysutils.TreeSearch(c.Db, "system", "get_menu_tree", "sys_menu", paramMap_i_t)
  33. if err == nil {
  34. c.Ctx.JSON(200, sysmodel.SysReturn{200, "", result})
  35. } else {
  36. c.Ctx.JSON(500, sysmodel.SysReturn{500, err.Error(), nil})
  37. }
  38. }
  39. // _GetDomainTree
  40. // @Title _GetDomainTree
  41. // @Description 获取域树
  42. // @Success 200 {object} Account
  43. // @Failure 403 :id is empty
  44. func System_GetDomainTree(c *entitys.CtrlContext) {
  45. del_flag := c.Ctx.DefaultQuery("del_flag", "")
  46. paramMap_i_t := map[string]interface{}{"sort": "name", "del_flag": del_flag}
  47. result, err := sysutils.TreeSearch(c.Db, "system", "get_domain_tree", "sys_domain", paramMap_i_t)
  48. if err == nil {
  49. c.Ctx.JSON(200, sysmodel.SysReturn{200, "", result})
  50. } else {
  51. c.Ctx.JSON(500, sysmodel.SysReturn{500, err.Error(), nil})
  52. }
  53. }
  54. // _FindUserPage
  55. // @Title _FindUserPage
  56. // @Description 获取用户分页数
  57. // @Success 200 {object} Account
  58. // @Failure 403 :id is empty
  59. func System_FindUserPage(c *entitys.CtrlContext) {
  60. page, _ := strconv.Atoi(c.Ctx.DefaultQuery("page", "1"))
  61. rows, _ := strconv.Atoi(c.Ctx.DefaultQuery("rows", "10"))
  62. name := c.Ctx.DefaultQuery("name", "")
  63. login_id := c.Ctx.DefaultQuery("login_id", "")
  64. paramMap_i_t := map[string]interface{}{"page": page, "rows": rows, "name": name, "login_id": login_id}
  65. result, err := sysutils.PageSearch(c.Db, "system", "find_user_page", "sys_user", paramMap_i_t)
  66. if err != nil {
  67. c.Ctx.JSON(200, sysmodel.SysReturn{200, "", result})
  68. return
  69. }
  70. type Role struct {
  71. RoleName string `json:"role_name"`
  72. UserRole string `json:"user_role"`
  73. }
  74. //获取用户角色
  75. users := result.Content.([]map[string]interface{})
  76. for i, user := range users {
  77. roles := []Role{}
  78. err := c.Db.SqlMapClient("get_roles_by_user_id", user["id"]).Find(&roles)
  79. if err != nil {
  80. fmt.Println("----", err.Error())
  81. continue
  82. }
  83. users[i]["user_role"] = roles[0].UserRole
  84. users[i]["role_name"] = roles[0].RoleName
  85. }
  86. result.Content = users
  87. if err == nil {
  88. c.Ctx.JSON(200, sysmodel.SysReturn{200, "", result})
  89. } else {
  90. c.Ctx.JSON(500, sysmodel.SysReturn{500, err.Error(), nil})
  91. }
  92. }
  93. // _GetOrgTree
  94. // @Title _GetOrgTree
  95. // @Description 获取组织架构树
  96. // @Success 200 {object} Account
  97. // @Failure 403 :id is empty
  98. func System_GetOrgTree(c *entitys.CtrlContext) {
  99. paramMap_i_t := map[string]interface{}{"sort": "name"}
  100. result, err := sysutils.TreeSearch(c.Db, "system", "get_org_tree", "sys_org", paramMap_i_t)
  101. if err == nil {
  102. c.Ctx.JSON(200, sysmodel.SysReturn{200, "", result})
  103. } else {
  104. c.Ctx.JSON(500, sysmodel.SysReturn{500, err.Error(), nil})
  105. }
  106. }
  107. // _FindOrgPage
  108. // @Title _FindOrgPage
  109. // @Description 获取组织架构分页数
  110. // @Success 200 {object} Account
  111. // @Failure 403 :id is empty
  112. func System_FindOrgPage(c *entitys.CtrlContext) {
  113. page, _ := strconv.Atoi(c.Ctx.DefaultQuery("page", "1"))
  114. rows, _ := strconv.Atoi(c.Ctx.DefaultQuery("rows", "10"))
  115. name := c.Ctx.DefaultQuery("name", "")
  116. code := c.Ctx.DefaultQuery("code", "")
  117. cn_id := c.Ctx.DefaultQuery("cn_id", "")
  118. paramMap_i_t := map[string]interface{}{"page": page, "rows": rows, "name": name, "code": code, "cn_id": cn_id}
  119. result, err := sysutils.PageSearch(c.Db, "system", "find_org_page", "sys_org", paramMap_i_t)
  120. if err == nil {
  121. c.Ctx.JSON(200, sysmodel.SysReturn{200, "", result})
  122. } else {
  123. c.Ctx.JSON(500, sysmodel.SysReturn{500, err.Error(), nil})
  124. }
  125. }
  126. // _AddUser
  127. // @Title _AddUser
  128. // @Description 添加用户
  129. // @Param login_id string false "登录ID"
  130. // @Param password string false "密码"
  131. // @Param org_id string false "组织ID"
  132. // @Param email string false "邮箱"
  133. // @Success 200 {object} Account
  134. // @Failure 403 :id is empty
  135. func System_AddUser(c *entitys.CtrlContext) {
  136. var user sysmodel.SysUser
  137. err := c.Ctx.BindJSON(&user)
  138. if err != nil {
  139. c.Ctx.JSON(200, sysmodel.SysReturn{500, err.Error(), nil})
  140. }
  141. fmt.Println(user.LoginId, "-----add user-----", user.Password, " --- ", user.OrgId)
  142. //查找login_id是否存在
  143. oldUser := new(sysmodel.SysUser)
  144. count, _ := c.Db.SQL("select * from sys_user").Where("login_id = ?", user.LoginId).Count(&oldUser)
  145. if count > 1 {
  146. if oldUser.DelFlag == 1 {
  147. oldUser.DelFlag = 0
  148. _, err := c.Db.Id("id").Cols("del_flag").Update(&oldUser)
  149. if err != nil {
  150. c.Ctx.JSON(200, sysmodel.SysReturn{500, "login_id exit, update err: " + err.Error(), nil})
  151. }
  152. return
  153. } else {
  154. c.Ctx.JSON(200, sysmodel.SysReturn{500, "login_id exit", nil})
  155. return
  156. }
  157. }
  158. user_id := c.Ctx.GetString("user_id")
  159. user.Id = sysutils.NewUUID()
  160. user.Name = user.LoginId
  161. user.CreateTime = time.Now()
  162. user.LastUpdateTime = time.Now().UnixNano()
  163. user.CreateBy = user_id
  164. user.LastUpdateBy = user_id
  165. user.DelFlag = 0
  166. user.Password = sysutils.HashPassword(user.Password, "")
  167. _, err = c.Db.Insert(&user)
  168. ret := __none_func_system__(user.LoginId, user.Password, user.OrgId, user.Email)
  169. if ret && err == nil {
  170. c.Ctx.JSON(200, sysmodel.SysReturn{200, "", nil})
  171. } else {
  172. c.Ctx.JSON(200, sysmodel.SysReturn{500, err.Error(), nil})
  173. }
  174. }
  175. // _DelUser
  176. // @Title _DelUser
  177. // @Description 删除用户
  178. // @Param id string false "用户ID"
  179. // @Success 200 {object} Account
  180. // @Failure 403 :id is empty
  181. func System_DelUser(c *entitys.CtrlContext) {
  182. type Param struct {
  183. Id string `json:"id"`
  184. }
  185. var params []Param
  186. c.Ctx.BindJSON(&params)
  187. ids := []string{}
  188. for _, param := range params {
  189. ids = append(ids, param.Id)
  190. }
  191. session := c.Db.NewSession()
  192. defer session.Close()
  193. session.Begin()
  194. _, err := c.Db.Table(new(models.SysUser)).In("id", ids).Update(map[string]interface{}{"del_flag": 1})
  195. if err != nil {
  196. session.Rollback()
  197. c.Ctx.JSON(200, sysmodel.SysReturn{500, err.Error(), nil})
  198. return
  199. }
  200. _, err = c.Db.Table(new(models.SysUserRole)).In("user_id", ids).Update(map[string]interface{}{"del_flag": 1})
  201. if err != nil {
  202. session.Rollback()
  203. c.Ctx.JSON(200, sysmodel.SysReturn{500, err.Error(), nil})
  204. return
  205. }
  206. session.Commit()
  207. ret := __none_func_system__()
  208. if ret {
  209. c.Ctx.JSON(200, sysmodel.SysReturn{200, "", nil})
  210. } else {
  211. c.Ctx.JSON(200, sysmodel.SysReturn{500, "", nil})
  212. }
  213. }
  214. // _UpdateUser
  215. // @Title _UpdateUser
  216. // @Description 修改用户
  217. // @Param login_id string false "登录ID"
  218. // @Param password string false "密码"
  219. // @Param org_id string false "组织ID"
  220. // @Param email string false "邮箱"
  221. // @Success 200 {object} Account
  222. // @Failure 403 :id is empty
  223. func System_UpdateUser(c *entitys.CtrlContext) {
  224. var user sysmodel.SysUser
  225. err := c.Ctx.BindJSON(&user)
  226. if err != nil {
  227. c.Ctx.JSON(500, sysmodel.SysReturn{500, err.Error(), nil})
  228. return
  229. }
  230. paramMap, _ := sysutils.BeanToMap(&user)
  231. _, err = c.Db.SqlMapClient("update_sys_user", paramMap).Execute()
  232. if err == nil {
  233. c.Ctx.JSON(200, sysmodel.SysReturn{200, "", nil})
  234. } else {
  235. c.Ctx.JSON(500, sysmodel.SysReturn{500, err.Error(), nil})
  236. }
  237. }
  238. // _AddRole
  239. // @Title _AddRole
  240. // @Description 添加角色
  241. // @Param name string false "角色名称"
  242. // @Param remark string false "备注"
  243. // @Success 200 {object} Account
  244. // @Failure 403 :id is empty
  245. func System_AddRole(c *entitys.CtrlContext) {
  246. var paramObj0 models.SysRole
  247. c.Ctx.BindJSON(&paramObj0)
  248. tk, _ := c.Ctx.Get("token")
  249. user := tk.(*entitys.Token)
  250. paramObj0.Id = sysutils.NewUUID()
  251. paramObj0.CreateBy = user.UserId
  252. paramObj0.LastUpdateBy = user.UserId
  253. paramObj0.CreateTime = time.Now()
  254. paramObj0.LastUpdateTime = time.Now().UnixNano()
  255. paramObj0.DelFlag = 0
  256. //_, err := c.LocalSqlMapClient("insert_sys_role", &paramObj0).Execute()
  257. paramMap, err := sysutils.BeanToMap(&paramObj0)
  258. _, err = c.Db.SqlMapClient("insert_sys_role", paramMap).Execute()
  259. if err == nil {
  260. c.Ctx.JSON(200, sysmodel.SysReturn{200, "", nil})
  261. } else {
  262. c.Ctx.JSON(500, sysmodel.SysReturn{500, "", nil})
  263. }
  264. }
  265. // _DelRole
  266. // @Title _DelRole
  267. // @Description 添加角色
  268. // @Param id string false "角色ID"
  269. // @Success 200 {object} Account
  270. // @Failure 403 :id is empty
  271. func System_DelRole(c *entitys.CtrlContext) {
  272. type Param struct {
  273. Id string `json:"id"`
  274. }
  275. var params []Param
  276. c.Ctx.BindJSON(&params)
  277. ids := []string{}
  278. for _, param := range params {
  279. ids = append(ids, param.Id)
  280. }
  281. _, err := c.Db.Table(new(models.SysRole)).In("id", ids).Update(map[string]interface{}{"del_flag": 1})
  282. if err == nil {
  283. c.Ctx.JSON(200, sysmodel.SysReturn{200, "", nil})
  284. } else {
  285. c.Ctx.JSON(500, sysmodel.SysReturn{500, "", nil})
  286. }
  287. }
  288. // _UpdateRole
  289. // @Title _UpdateRole
  290. // @Description 修改角色
  291. // @Param id string false "角色ID"
  292. // @Param name string false "角色名称"
  293. // @Param remark string false "备注"
  294. // @Success 200 {object} Account
  295. // @Failure 403 :id is empty
  296. func System_UpdateRole(c *entitys.CtrlContext) {
  297. id := c.Ctx.Query("id")
  298. name := c.Ctx.Query("name")
  299. remark := c.Ctx.Query("remark")
  300. ret := __none_func_system__(id, name, remark)
  301. if ret {
  302. c.Ctx.JSON(200, sysmodel.SysReturn{200, "", nil})
  303. } else {
  304. c.Ctx.JSON(500, sysmodel.SysReturn{500, "", nil})
  305. }
  306. }
  307. // _FindRolePage
  308. // @Title _FindRolePage
  309. // @Description 角色分页
  310. // @Param page false "分页参数"
  311. // @Success 200 {object} Account
  312. // @Failure 403 :id is empty
  313. func System_FindRolePage(c *entitys.CtrlContext) {
  314. page, _ := strconv.Atoi(c.Ctx.DefaultQuery("page", "1"))
  315. rows, _ := strconv.Atoi(c.Ctx.DefaultQuery("rows", "10"))
  316. paramMap_i_t := map[string]interface{}{"page": page, "rows": rows}
  317. result, err := sysutils.PageSearch(c.Db, "system", "find_role_page", "sys_role", paramMap_i_t)
  318. if err == nil {
  319. c.Ctx.JSON(200, sysmodel.SysReturn{200, "", result})
  320. } else {
  321. c.Ctx.JSON(500, sysmodel.SysReturn{500, err.Error(), nil})
  322. }
  323. }
  324. // _FindMenuPage
  325. // @Title _FindMenuPage
  326. // @Description 获取角色分页数
  327. // @Success 200 {object} Account
  328. // @Failure 403 :id is empty
  329. func System_FindMenuPage(c *entitys.CtrlContext) {
  330. page, _ := strconv.Atoi(c.Ctx.DefaultQuery("page", "1"))
  331. rows, _ := strconv.Atoi(c.Ctx.DefaultQuery("rows", "10"))
  332. name := c.Ctx.DefaultQuery("name", "")
  333. code := c.Ctx.DefaultQuery("code", "")
  334. cn_id := c.Ctx.DefaultQuery("cn_id", "")
  335. _type := c.Ctx.DefaultQuery("type", "")
  336. type_op := c.Ctx.DefaultQuery("type_op", "")
  337. op := template.HTML(type_op)
  338. paramMap_i_t := map[string]interface{}{"page": page, "rows": rows, "type": _type, "type_op": op, "name": name, "code": code, "cn_id": cn_id}
  339. result, err := sysutils.PageSearch(c.Db, "system", "find_menu_page", "sys_menu", paramMap_i_t)
  340. if err == nil {
  341. c.Ctx.JSON(200, sysmodel.SysReturn{200, "", result})
  342. } else {
  343. c.Ctx.JSON(500, sysmodel.SysReturn{500, err.Error(), nil})
  344. }
  345. }
  346. // _FindDomainPage
  347. // @Title _FindDomainPage
  348. // @Description 获取域分页数
  349. // @Success 200 {object} Account
  350. // @Failure 403 :id is empty
  351. func System_FindDomainPage(c *entitys.CtrlContext) {
  352. page, _ := strconv.Atoi(c.Ctx.DefaultQuery("page", "1"))
  353. rows, _ := strconv.Atoi(c.Ctx.DefaultQuery("rows", "10"))
  354. paramMap_i_t := map[string]interface{}{"page": page, "rows": rows}
  355. result, err := sysutils.PageSearch(c.Db, "system", "find_domain_page", "sys_domain", paramMap_i_t)
  356. if err == nil {
  357. c.Ctx.JSON(200, sysmodel.SysReturn{200, "", result})
  358. } else {
  359. c.Ctx.JSON(500, sysmodel.SysReturn{500, err.Error(), nil})
  360. }
  361. }
  362. // _FindRoleMenu
  363. // @Title _FindRoleMenu
  364. // @Description 查找角色权限
  365. // @Param role_id string false "角色id"
  366. // @Success 200 {object} Account
  367. // @Failure 403 :id is empty
  368. func System_FindRoleMenu(c *entitys.CtrlContext) {
  369. role_id := c.Ctx.Query("role_id")
  370. ret := __none_func_system__(role_id)
  371. if ret {
  372. c.Ctx.JSON(200, sysmodel.SysReturn{200, "", nil})
  373. } else {
  374. c.Ctx.JSON(500, sysmodel.SysReturn{500, "", nil})
  375. }
  376. }
  377. // _SaveRoleMenu
  378. // @Title _SaveRoleMenu
  379. // @Description 保存角色权限
  380. // @Param role_menu string false "角色权限"
  381. // @Success 200 {object} Account
  382. // @Failure 403 :id is empty
  383. func System_SaveRoleMenu(c *entitys.CtrlContext) {
  384. var paramObj0 []models.SaveRoleMenu
  385. c.Ctx.BindJSON(&paramObj0)
  386. ret := __none_func_system__(paramObj0)
  387. if ret {
  388. c.Ctx.JSON(200, sysmodel.SysReturn{200, "", nil})
  389. } else {
  390. c.Ctx.JSON(500, sysmodel.SysReturn{500, "", nil})
  391. }
  392. }
  393. // _RoleAll
  394. // @Title _RoleAll
  395. // @Description 查找所有角色
  396. // @Success 200 {object} Account
  397. // @Failure 403 :id is empty
  398. func System_RoleAll(c *entitys.CtrlContext) {
  399. ret := __none_func_system__()
  400. if ret {
  401. c.Ctx.JSON(200, sysmodel.SysReturn{200, "", nil})
  402. } else {
  403. c.Ctx.JSON(500, sysmodel.SysReturn{500, "", nil})
  404. }
  405. }
  406. // _FindPermissions
  407. // @Title _FindPermissions
  408. // @Description 查找用户权限
  409. // @Success 200 {object} Account
  410. // @Failure 403 :id is empty
  411. func System_FindPermissions(c *entitys.CtrlContext) {
  412. ret := __none_func_system__()
  413. if ret {
  414. c.Ctx.JSON(200, sysmodel.SysReturn{200, "", nil})
  415. } else {
  416. c.Ctx.JSON(500, sysmodel.SysReturn{500, "", nil})
  417. }
  418. }
  419. // _AddMenu
  420. // @Title _AddMenu
  421. // @Description 添加菜单
  422. // @Param string false "菜单"
  423. // @Success 200 {object} Account
  424. // @Failure 403 :id is empty
  425. func System_AddMenu(c *entitys.CtrlContext) {
  426. var paramObj0 models.SysMenu
  427. c.Ctx.BindJSON(&paramObj0)
  428. tk, _ := c.Ctx.Get("token")
  429. user := tk.(*entitys.Token)
  430. paramObj0.Id = sysutils.NewUUID()
  431. paramObj0.CreateBy = user.UserId
  432. paramObj0.LastUpdateBy = user.UserId
  433. paramObj0.CreateTime = models.NowLocal()
  434. paramObj0.LastUpdateTime = time.Now().UnixNano()
  435. paramObj0.DelFlag = 0
  436. if paramObj0.Parent != "" {
  437. parentNodes := []sysmodel.SysMenu{}
  438. err := c.Db.SqlMapClient("one_sys_menu", paramObj0.Parent).Find(&parentNodes)
  439. if err != nil {
  440. c.Ctx.JSON(500, sysmodel.SysReturn{500, err.Error(), nil})
  441. return
  442. }
  443. paramObj0.Inheritance = fmt.Sprintf("|%s%s", paramObj0.Id, parentNodes[0].Inheritance)
  444. } else {
  445. paramObj0.Inheritance = fmt.Sprintf("|%s|", paramObj0.Id)
  446. }
  447. //_, err := c.LocalSqlMapClient("insert_sys_menu", &paramObj0).Execute()
  448. paramMap, err := sysutils.BeanToMap(&paramObj0)
  449. _, err = c.Db.SqlMapClient("insert_sys_menu", paramMap).Execute()
  450. if err == nil {
  451. c.Ctx.JSON(200, sysmodel.SysReturn{200, "", nil})
  452. } else {
  453. c.Ctx.JSON(500, sysmodel.SysReturn{500, err.Error(), nil})
  454. }
  455. }
  456. // _DelMenu
  457. // @Title _DelMenu
  458. // @Description 删除菜单
  459. // @Param id string false "菜单ID"
  460. // @Success 200 {object} Account
  461. // @Failure 403 :id is empty
  462. func System_DelMenu(c *entitys.CtrlContext) {
  463. type Param struct {
  464. Id string `json:"id"`
  465. }
  466. var params []Param
  467. c.Ctx.BindJSON(&params)
  468. ids := []string{}
  469. for _, param := range params {
  470. ids = append(ids, param.Id)
  471. }
  472. _, err := c.Db.Table(new(models.SysMenu)).In("id", ids).Update(map[string]interface{}{"del_flag": 1})
  473. if err == nil {
  474. c.Ctx.JSON(200, sysmodel.SysReturn{200, "", nil})
  475. } else {
  476. c.Ctx.JSON(500, sysmodel.SysReturn{500, "", nil})
  477. }
  478. }
  479. // _UpdateMenu
  480. // @Title _UpdateMenu
  481. // @Description 更新菜单
  482. // @Param string false "菜单"
  483. // @Success 200 {object} Account
  484. // @Failure 403 :id is empty
  485. func System_UpdateMenu(c *entitys.CtrlContext) {
  486. var paramObj0 models.SysMenu
  487. err := c.Ctx.BindJSON(&paramObj0)
  488. tk, _ := c.Ctx.Get("token")
  489. user := tk.(*entitys.Token)
  490. if paramObj0.Parent != "" {
  491. parentNodes := []sysmodel.SysMenu{}
  492. err := c.Db.SqlMapClient("one_sys_menu", paramObj0.Parent).Find(&parentNodes)
  493. if err != nil {
  494. c.Ctx.JSON(500, sysmodel.SysReturn{500, err.Error(), nil})
  495. return
  496. }
  497. paramObj0.Inheritance = fmt.Sprintf("|%s%s", paramObj0.Id, parentNodes[0].Inheritance)
  498. } else {
  499. paramObj0.Inheritance = fmt.Sprintf("|%s|", paramObj0.Id)
  500. }
  501. paramObj0.LastUpdateBy = user.UserId
  502. paramObj0.LastUpdateTime = time.Now().UnixNano()
  503. paramMap, err := sysutils.BeanToMap(&paramObj0)
  504. _, err = c.Db.SqlMapClient("update_sys_menu", paramMap).Execute()
  505. if err == nil {
  506. c.Ctx.JSON(200, sysmodel.SysReturn{200, "", nil})
  507. } else {
  508. c.Ctx.JSON(500, sysmodel.SysReturn{500, err.Error(), nil})
  509. }
  510. }
  511. // _AddOrg
  512. // @Title _AddOrg
  513. // @Description 添加组织
  514. // @Param name string false "组织名称"
  515. // @Param domain string false "域"
  516. // @Param parent string false "父ID"
  517. // @Success 200 {object} Account
  518. // @Failure 403 :id is empty
  519. func System_AddOrg(c *entitys.CtrlContext) {
  520. var paramObj0 models.SysOrg
  521. c.Ctx.BindJSON(&paramObj0)
  522. tk, _ := c.Ctx.Get("token")
  523. user := tk.(*entitys.Token)
  524. paramObj0.Id = sysutils.NewUUID()
  525. paramObj0.CreateBy = user.UserId
  526. paramObj0.LastUpdateBy = user.UserId
  527. paramObj0.CreateTime = time.Now()
  528. paramObj0.LastUpdateTime = time.Now().UnixNano()
  529. paramObj0.DelFlag = 0
  530. if paramObj0.Parent != "" {
  531. parentNodes := []sysmodel.SysOrg{}
  532. err := c.Db.SqlMapClient("one_sys_org", paramObj0.Parent).Find(&parentNodes)
  533. if err != nil {
  534. c.Ctx.JSON(500, sysmodel.SysReturn{500, err.Error(), nil})
  535. return
  536. }
  537. paramObj0.Inheritance = fmt.Sprintf("|%s%s", paramObj0.Id, parentNodes[0].Inheritance)
  538. } else {
  539. paramObj0.Inheritance = fmt.Sprintf("|%s|", paramObj0.Id)
  540. }
  541. //_, err := c.LocalSqlMapClient("insert_sys_org", &paramObj0).Execute()
  542. paramMap, err := sysutils.BeanToMap(&paramObj0)
  543. _, err = c.Db.SqlMapClient("insert_sys_org", paramMap).Execute()
  544. if err == nil {
  545. c.Ctx.JSON(200, sysmodel.SysReturn{200, "", nil})
  546. } else {
  547. c.Ctx.JSON(500, sysmodel.SysReturn{500, err.Error(), nil})
  548. }
  549. }
  550. // _DelOrg
  551. // @Title _DelOrg
  552. // @Description 删除组织
  553. // @Param id string array false "用户ID"
  554. // @Success 200 {object} Account
  555. // @Failure 403 :id is empty
  556. func System_DelOrg(c *entitys.CtrlContext) {
  557. id := c.Ctx.Query("id")
  558. ret := __none_func_system__(id)
  559. if ret {
  560. c.Ctx.JSON(200, sysmodel.SysReturn{200, "", nil})
  561. } else {
  562. c.Ctx.JSON(500, sysmodel.SysReturn{500, "", nil})
  563. }
  564. }
  565. // _UpdateOrg
  566. // @Title _UpdateOrg
  567. // @Description 修改组织
  568. // @Param name string false "组织名称"
  569. // @Param domain string false "域"
  570. // @Param parent string false "父ID"
  571. // @Success 200 {object} Account
  572. // @Failure 403 :id is empty
  573. func System_UpdateOrg(c *entitys.CtrlContext) {
  574. name := c.Ctx.Query("name")
  575. domain := c.Ctx.Query("domain")
  576. parent := c.Ctx.Query("parent")
  577. ret := __none_func_system__(name, domain, parent)
  578. if ret {
  579. c.Ctx.JSON(200, sysmodel.SysReturn{200, "", nil})
  580. } else {
  581. c.Ctx.JSON(500, sysmodel.SysReturn{500, "", nil})
  582. }
  583. }
  584. // _GetOrgByUserid
  585. // @Title _GetOrgByUserid
  586. // @Description 根据用户id获取用户组织
  587. // @Param user_id string false "用户id"
  588. // @Success 200 {object} Account
  589. // @Failure 403 :id is empty
  590. func System_GetOrgByUserid(c *entitys.CtrlContext) {
  591. user_id := c.Ctx.Query("user_id")
  592. var org sysmodel.SysOrg
  593. err := c.Db.SqlMapClient("get_org_by_userid", user_id).Find(&org)
  594. if err == nil {
  595. c.Ctx.JSON(200, sysmodel.SysReturn{200, "", org})
  596. } else {
  597. c.Ctx.JSON(500, sysmodel.SysReturn{500, err.Error(), nil})
  598. }
  599. }
  600. // _AddDomain
  601. // @Title _AddDomain
  602. // @Description 添加域
  603. // @Param false "域"
  604. // @Success 200 {object} Account
  605. // @Failure 403 :id is empty
  606. func System_AddDomain(c *entitys.CtrlContext) {
  607. var paramObj0 models.SysDomain
  608. c.Ctx.BindJSON(&paramObj0)
  609. ////1、测试连接串
  610. //db, err := xorm.NewEngine("mysql", paramObj0.DataSource)
  611. //if err == nil {
  612. // //engine.initOrmEngine(db, "mysql")
  613. // //c.BusinessOrmEngine[v.Domain] = db
  614. //}
  615. tk, _ := c.Ctx.Get("token")
  616. user := tk.(*entitys.Token)
  617. paramObj0.Id = sysutils.NewUUID()
  618. paramObj0.CreateBy = user.UserId
  619. paramObj0.LastUpdateBy = user.UserId
  620. paramObj0.CreateTime = sysmodel.NowLocal()
  621. paramObj0.LastUpdateTime = time.Now().UnixNano()
  622. paramObj0.DelFlag = 0
  623. paramMap, err := sysutils.BeanToMap(&paramObj0)
  624. if err != nil {
  625. c.Ctx.JSON(500, sysmodel.SysReturn{500, err.Error(), nil})
  626. return
  627. }
  628. _, err = c.Db.SqlMapClient("insert_sys_domain", paramMap).Execute()
  629. if err == nil {
  630. //添加数据库基本用户权限数据
  631. ret := c.App.AddBusinessDb(paramObj0.Id, "admin@"+paramObj0.Domain, paramObj0.Domain, paramObj0.DataSource, true)
  632. if ret {
  633. c.Ctx.JSON(200, sysmodel.SysReturn{200, "", paramObj0.Id})
  634. } else {
  635. c.Ctx.JSON(500, sysmodel.SysReturn{500, "数据库初始化错误。", nil})
  636. }
  637. } else {
  638. c.Ctx.JSON(500, sysmodel.SysReturn{500, err.Error(), nil})
  639. }
  640. }
  641. // _DelDomain
  642. // @Title _DelDomain
  643. // @Description 删除域
  644. // @Param id string false "域ID"
  645. // @Success 200 {object} Account
  646. // @Failure 403 :id is empty
  647. func System_DelDomain(c *entitys.CtrlContext) {
  648. type Param struct {
  649. Id string `json:"id"`
  650. }
  651. var params []Param
  652. c.Ctx.BindJSON(&params)
  653. ids := []string{}
  654. for _, param := range params {
  655. ids = append(ids, param.Id)
  656. }
  657. _, err := c.Db.Table(new(models.SysDomain)).In("id", ids).Update(map[string]interface{}{"del_flag": 1})
  658. if err != nil {
  659. c.Ctx.JSON(200, sysmodel.SysReturn{500, err.Error(), nil})
  660. return
  661. }
  662. ret := __none_func_system__()
  663. if ret {
  664. c.Ctx.JSON(200, sysmodel.SysReturn{200, "", nil})
  665. } else {
  666. c.Ctx.JSON(200, sysmodel.SysReturn{500, "", nil})
  667. }
  668. }
  669. // _UpdateDomain
  670. // @Title _UpdateDomain
  671. // @Description 修改域
  672. // @Param false "域"
  673. // @Success 200 {object} Account
  674. // @Failure 403 :id is empty
  675. func System_UpdateDomain(c *entitys.CtrlContext) {
  676. var paramObj0 models.SysDomain
  677. c.Ctx.BindJSON(&paramObj0)
  678. tk, _ := c.Ctx.Get("token")
  679. user := tk.(*entitys.Token)
  680. paramObj0.LastUpdateTime = time.Now().UnixNano()
  681. paramObj0.LastUpdateBy = user.UserId
  682. paramMap, err := sysutils.BeanToMap(&paramObj0)
  683. if err != nil {
  684. c.Ctx.JSON(500, sysmodel.SysReturn{500, err.Error(), nil})
  685. return
  686. }
  687. _, err = c.Db.SqlMapClient("update_sys_domain", paramMap).Execute()
  688. if err == nil {
  689. //添加数据库基本用户权限数据
  690. ret := c.App.AddBusinessDb(paramObj0.Id, "admin@"+paramObj0.Domain, paramObj0.Domain, paramObj0.DataSource, true)
  691. if ret {
  692. c.Ctx.JSON(200, sysmodel.SysReturn{200, "", paramObj0.Id})
  693. } else {
  694. c.Ctx.JSON(500, sysmodel.SysReturn{500, "数据库初始化错误。", nil})
  695. }
  696. } else {
  697. c.Ctx.JSON(500, sysmodel.SysReturn{500, err.Error(), nil})
  698. }
  699. }
  700. // _AddDomainMenu
  701. // @Title _AddDomainMenu
  702. // @Description 域添加菜单
  703. // @Param false "添加域菜单bean"
  704. // @Success 200 {object} Account
  705. // @Failure 403 :id is empty
  706. func System_AddDomainMenu(c *entitys.CtrlContext) {
  707. var paramObj0 models.AddDomainMenu
  708. c.Ctx.BindJSON(&paramObj0)
  709. var domain sysmodel.SysDomain
  710. param := map[string]interface{}{"id": paramObj0.DomainId}
  711. _, err := c.Db.SqlMapClient("selectone_sys_domain", &param).Get(&domain)
  712. if err != nil {
  713. c.Ctx.JSON(500, sysmodel.SysReturn{500, "not find domain error: " + err.Error(), nil})
  714. return
  715. }
  716. var menus []sysmodel.SysMenu
  717. err = c.Db.In("id", paramObj0.Menus).Find(&menus)
  718. if err != nil {
  719. c.Ctx.JSON(500, sysmodel.SysReturn{500, "find menu error: " + err.Error(), nil})
  720. return
  721. }
  722. session := c.App.GetBusinessDb(domain.Domain).NewSession()
  723. defer session.Close()
  724. session.Begin()
  725. _, err = c.App.GetBusinessDb(domain.Domain).SqlMapClient("delete_all_sys_menu", map[string]interface{}{}).Execute()
  726. if err != nil {
  727. session.Rollback()
  728. c.Ctx.JSON(500, sysmodel.SysReturn{500, "Insert menu error: " + err.Error(), nil})
  729. return
  730. }
  731. _, err = c.App.GetBusinessDb(domain.Domain).Insert(&menus)
  732. if err != nil {
  733. session.Rollback()
  734. c.Ctx.JSON(500, sysmodel.SysReturn{500, "Insert menu error: " + err.Error(), nil})
  735. return
  736. }
  737. session.Commit()
  738. ret := __none_func_system__(paramObj0)
  739. if ret {
  740. c.Ctx.JSON(200, sysmodel.SysReturn{200, "", nil})
  741. } else {
  742. c.Ctx.JSON(500, sysmodel.SysReturn{500, "", nil})
  743. }
  744. }
  745. // _GetDomainMenuTree
  746. // @Title _GetDomainMenuTree
  747. // @Description 域添加菜单
  748. // @Param domain_id string false "域id"
  749. // @Success 200 {object} Account
  750. // @Failure 403 :id is empty
  751. func System_GetDomainMenuTree(c *entitys.CtrlContext) {
  752. domain_id := c.Ctx.Query("domain_id")
  753. _type := c.Ctx.DefaultQuery("type", "")
  754. type_op := c.Ctx.DefaultQuery("type_op", "")
  755. op := template.HTML(type_op)
  756. var domain sysmodel.SysDomain
  757. param := map[string]interface{}{"id": domain_id, "type": _type, "type_op": op}
  758. _, err := c.Db.SqlMapClient("selectone_sys_domain", &param).Get(&domain)
  759. if err != nil {
  760. c.Ctx.JSON(500, sysmodel.SysReturn{500, "not find domain error: " + err.Error(), nil})
  761. return
  762. }
  763. paramMap := map[string]interface{}{"sort": "name"}
  764. domainMenus, err := c.App.GetBusinessDb(domain.Domain).SqlTemplateClient("system_get_menu_tree.tpl", &paramMap).Query().List()
  765. if err != nil {
  766. c.Ctx.JSON(500, sysmodel.SysReturn{500, "get domain_menu tree: " + err.Error(), nil})
  767. return
  768. }
  769. domainTree, err := sysutils.BuildTree("", domainMenus)
  770. sysMenus, err := c.Db.SqlTemplateClient("system_get_menu_tree.tpl", &paramMap).Query().List()
  771. if err != nil {
  772. c.Ctx.JSON(500, sysmodel.SysReturn{500, "get sys_menu tree: " + err.Error(), nil})
  773. return
  774. }
  775. var sysMenusMap map[string]map[string]interface{}
  776. sysMenusMap = make(map[string]map[string]interface{},0)
  777. for _, menu := range sysMenus{
  778. sysMenusMap[menu["id"].(string)] = menu
  779. }
  780. //剔除域已存在的菜单
  781. for _, domainMenu := range domainMenus {
  782. delete(sysMenusMap, domainMenu["id"].(string))
  783. }
  784. var sysMenuRest []map[string]interface{}
  785. for _, menu := range sysMenusMap{
  786. sysMenuRest = append(sysMenuRest, menu)
  787. }
  788. sysTree, err := sysutils.BuildTree("", sysMenuRest)
  789. ret := __none_func_system__(domain_id)
  790. if ret {
  791. c.Ctx.JSON(200, sysmodel.SysReturn{200, "", map[string]interface{}{"sys_tree": sysTree, "domain_tree": domainTree}})
  792. } else {
  793. c.Ctx.JSON(500, sysmodel.SysReturn{500, "", nil})
  794. }
  795. }
  796. func __none_func_system__(params ...interface{}) bool {
  797. return true
  798. }