SystemController.go 25 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888
  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. _, err := c.Db.Table(new(models.SysUser)).In("id", ids).Update(map[string]interface{}{"del_flag": 1})
  194. if err != nil {
  195. session.Rollback()
  196. c.Ctx.JSON(200, sysmodel.SysReturn{500, err.Error(), nil})
  197. return
  198. }
  199. _, err = c.Db.Table(new(models.SysUserRole)).In("user_id", ids).Update(map[string]interface{}{"del_flag": 1})
  200. if err != nil {
  201. session.Rollback()
  202. c.Ctx.JSON(200, sysmodel.SysReturn{500, err.Error(), nil})
  203. return
  204. }
  205. session.Commit()
  206. ret := __none_func_system__()
  207. if ret {
  208. c.Ctx.JSON(200, sysmodel.SysReturn{200, "", nil})
  209. } else {
  210. c.Ctx.JSON(200, sysmodel.SysReturn{500, "", nil})
  211. }
  212. }
  213. // _UpdateUser
  214. // @Title _UpdateUser
  215. // @Description 修改用户
  216. // @Param login_id string false "登录ID"
  217. // @Param password string false "密码"
  218. // @Param org_id string false "组织ID"
  219. // @Param email string false "邮箱"
  220. // @Success 200 {object} Account
  221. // @Failure 403 :id is empty
  222. func System_UpdateUser(c *entitys.CtrlContext) {
  223. var user sysmodel.SysUser
  224. err := c.Ctx.BindJSON(&user)
  225. if err != nil {
  226. c.Ctx.JSON(500, sysmodel.SysReturn{500, err.Error(), nil})
  227. return
  228. }
  229. paramMap, _ := sysutils.BeanToMap(&user)
  230. _, err = c.Db.SqlMapClient("update_sys_user", paramMap).Execute()
  231. if err == nil {
  232. c.Ctx.JSON(200, sysmodel.SysReturn{200, "", nil})
  233. } else {
  234. c.Ctx.JSON(500, sysmodel.SysReturn{500, err.Error(), nil})
  235. }
  236. }
  237. // _AddRole
  238. // @Title _AddRole
  239. // @Description 添加角色
  240. // @Param name string false "角色名称"
  241. // @Param remark string false "备注"
  242. // @Success 200 {object} Account
  243. // @Failure 403 :id is empty
  244. func System_AddRole(c *entitys.CtrlContext) {
  245. var paramObj0 models.SysRole
  246. c.Ctx.BindJSON(&paramObj0)
  247. tk, _ := c.Ctx.Get("token")
  248. user := tk.(*entitys.Token)
  249. paramObj0.Id = sysutils.NewUUID()
  250. paramObj0.CreateBy = user.UserId
  251. paramObj0.LastUpdateBy = user.UserId
  252. paramObj0.CreateTime = time.Now()
  253. paramObj0.LastUpdateTime = time.Now().UnixNano()
  254. paramObj0.DelFlag = 0
  255. //_, err := c.LocalSqlMapClient("insert_sys_role", &paramObj0).Execute()
  256. paramMap, err := sysutils.BeanToMap(&paramObj0)
  257. _, err = c.Db.SqlMapClient("insert_sys_role", paramMap).Execute()
  258. if err == nil {
  259. c.Ctx.JSON(200, sysmodel.SysReturn{200, "", nil})
  260. } else {
  261. c.Ctx.JSON(500, sysmodel.SysReturn{500, "", nil})
  262. }
  263. }
  264. // _DelRole
  265. // @Title _DelRole
  266. // @Description 添加角色
  267. // @Param id string false "角色ID"
  268. // @Success 200 {object} Account
  269. // @Failure 403 :id is empty
  270. func System_DelRole(c *entitys.CtrlContext) {
  271. type Param struct {
  272. Id string `json:"id"`
  273. }
  274. var params []Param
  275. c.Ctx.BindJSON(&params)
  276. ids := []string{}
  277. for _, param := range params {
  278. ids = append(ids, param.Id)
  279. }
  280. _, err := c.Db.Table(new(models.SysRole)).In("id", ids).Update(map[string]interface{}{"del_flag": 1})
  281. if err == nil {
  282. c.Ctx.JSON(200, sysmodel.SysReturn{200, "", nil})
  283. } else {
  284. c.Ctx.JSON(500, sysmodel.SysReturn{500, "", nil})
  285. }
  286. }
  287. // _UpdateRole
  288. // @Title _UpdateRole
  289. // @Description 修改角色
  290. // @Param id string false "角色ID"
  291. // @Param name string false "角色名称"
  292. // @Param remark string false "备注"
  293. // @Success 200 {object} Account
  294. // @Failure 403 :id is empty
  295. func System_UpdateRole(c *entitys.CtrlContext) {
  296. id := c.Ctx.Query("id")
  297. name := c.Ctx.Query("name")
  298. remark := c.Ctx.Query("remark")
  299. ret := __none_func_system__(id, name, remark)
  300. if ret {
  301. c.Ctx.JSON(200, sysmodel.SysReturn{200, "", nil})
  302. } else {
  303. c.Ctx.JSON(500, sysmodel.SysReturn{500, "", nil})
  304. }
  305. }
  306. // _FindRolePage
  307. // @Title _FindRolePage
  308. // @Description 角色分页
  309. // @Param page false "分页参数"
  310. // @Success 200 {object} Account
  311. // @Failure 403 :id is empty
  312. func System_FindRolePage(c *entitys.CtrlContext) {
  313. page, _ := strconv.Atoi(c.Ctx.DefaultQuery("page", "1"))
  314. rows, _ := strconv.Atoi(c.Ctx.DefaultQuery("rows", "10"))
  315. paramMap_i_t := map[string]interface{}{"page": page, "rows": rows}
  316. result, err := sysutils.PageSearch(c.Db, "system", "find_role_page", "sys_role", paramMap_i_t)
  317. if err == nil {
  318. c.Ctx.JSON(200, sysmodel.SysReturn{200, "", result})
  319. } else {
  320. c.Ctx.JSON(500, sysmodel.SysReturn{500, err.Error(), nil})
  321. }
  322. }
  323. // _FindMenuPage
  324. // @Title _FindMenuPage
  325. // @Description 获取角色分页数
  326. // @Success 200 {object} Account
  327. // @Failure 403 :id is empty
  328. func System_FindMenuPage(c *entitys.CtrlContext) {
  329. page, _ := strconv.Atoi(c.Ctx.DefaultQuery("page", "1"))
  330. rows, _ := strconv.Atoi(c.Ctx.DefaultQuery("rows", "10"))
  331. name := c.Ctx.DefaultQuery("name", "")
  332. code := c.Ctx.DefaultQuery("code", "")
  333. cn_id := c.Ctx.DefaultQuery("cn_id", "")
  334. _type := c.Ctx.DefaultQuery("type", "")
  335. type_op := c.Ctx.DefaultQuery("type_op", "")
  336. op := template.HTML(type_op)
  337. paramMap_i_t := map[string]interface{}{"page": page, "rows": rows, "type": _type, "type_op": op, "name": name, "code": code, "cn_id": cn_id}
  338. result, err := sysutils.PageSearch(c.Db, "system", "find_menu_page", "sys_menu", paramMap_i_t)
  339. if err == nil {
  340. c.Ctx.JSON(200, sysmodel.SysReturn{200, "", result})
  341. } else {
  342. c.Ctx.JSON(500, sysmodel.SysReturn{500, err.Error(), nil})
  343. }
  344. }
  345. // _FindDomainPage
  346. // @Title _FindDomainPage
  347. // @Description 获取域分页数
  348. // @Success 200 {object} Account
  349. // @Failure 403 :id is empty
  350. func System_FindDomainPage(c *entitys.CtrlContext) {
  351. page, _ := strconv.Atoi(c.Ctx.DefaultQuery("page", "1"))
  352. rows, _ := strconv.Atoi(c.Ctx.DefaultQuery("rows", "10"))
  353. paramMap_i_t := map[string]interface{}{"page": page, "rows": rows}
  354. result, err := sysutils.PageSearch(c.Db, "system", "find_domain_page", "sys_domain", paramMap_i_t)
  355. if err == nil {
  356. c.Ctx.JSON(200, sysmodel.SysReturn{200, "", result})
  357. } else {
  358. c.Ctx.JSON(500, sysmodel.SysReturn{500, err.Error(), nil})
  359. }
  360. }
  361. // _FindRoleMenu
  362. // @Title _FindRoleMenu
  363. // @Description 查找角色权限
  364. // @Param role_id string false "角色id"
  365. // @Success 200 {object} Account
  366. // @Failure 403 :id is empty
  367. func System_FindRoleMenu(c *entitys.CtrlContext) {
  368. role_id := c.Ctx.Query("role_id")
  369. ret := __none_func_system__(role_id)
  370. if ret {
  371. c.Ctx.JSON(200, sysmodel.SysReturn{200, "", nil})
  372. } else {
  373. c.Ctx.JSON(500, sysmodel.SysReturn{500, "", nil})
  374. }
  375. }
  376. // _SaveRoleMenu
  377. // @Title _SaveRoleMenu
  378. // @Description 保存角色权限
  379. // @Param role_menu string false "角色权限"
  380. // @Success 200 {object} Account
  381. // @Failure 403 :id is empty
  382. func System_SaveRoleMenu(c *entitys.CtrlContext) {
  383. var paramObj0 []models.SaveRoleMenu
  384. c.Ctx.BindJSON(&paramObj0)
  385. ret := __none_func_system__(paramObj0)
  386. if ret {
  387. c.Ctx.JSON(200, sysmodel.SysReturn{200, "", nil})
  388. } else {
  389. c.Ctx.JSON(500, sysmodel.SysReturn{500, "", nil})
  390. }
  391. }
  392. // _RoleAll
  393. // @Title _RoleAll
  394. // @Description 查找所有角色
  395. // @Success 200 {object} Account
  396. // @Failure 403 :id is empty
  397. func System_RoleAll(c *entitys.CtrlContext) {
  398. ret := __none_func_system__()
  399. if ret {
  400. c.Ctx.JSON(200, sysmodel.SysReturn{200, "", nil})
  401. } else {
  402. c.Ctx.JSON(500, sysmodel.SysReturn{500, "", nil})
  403. }
  404. }
  405. // _FindPermissions
  406. // @Title _FindPermissions
  407. // @Description 查找用户权限
  408. // @Success 200 {object} Account
  409. // @Failure 403 :id is empty
  410. func System_FindPermissions(c *entitys.CtrlContext) {
  411. ret := __none_func_system__()
  412. if ret {
  413. c.Ctx.JSON(200, sysmodel.SysReturn{200, "", nil})
  414. } else {
  415. c.Ctx.JSON(500, sysmodel.SysReturn{500, "", nil})
  416. }
  417. }
  418. // _AddMenu
  419. // @Title _AddMenu
  420. // @Description 添加菜单
  421. // @Param string false "菜单"
  422. // @Success 200 {object} Account
  423. // @Failure 403 :id is empty
  424. func System_AddMenu(c *entitys.CtrlContext) {
  425. var paramObj0 models.SysMenu
  426. c.Ctx.BindJSON(&paramObj0)
  427. tk, _ := c.Ctx.Get("token")
  428. user := tk.(*entitys.Token)
  429. paramObj0.Id = sysutils.NewUUID()
  430. paramObj0.CreateBy = user.UserId
  431. paramObj0.LastUpdateBy = user.UserId
  432. paramObj0.CreateTime = models.NowLocal()
  433. paramObj0.LastUpdateTime = time.Now().UnixNano()
  434. paramObj0.DelFlag = 0
  435. if paramObj0.Parent != "" {
  436. parentNodes := []sysmodel.SysMenu{}
  437. err := c.Db.SqlMapClient("one_sys_menu", paramObj0.Parent).Find(&parentNodes)
  438. if err != nil {
  439. c.Ctx.JSON(500, sysmodel.SysReturn{500, err.Error(), nil})
  440. return
  441. }
  442. paramObj0.Inheritance = fmt.Sprintf("|%s%s", paramObj0.Id, parentNodes[0].Inheritance)
  443. } else {
  444. paramObj0.Inheritance = fmt.Sprintf("|%s|", paramObj0.Id)
  445. }
  446. //_, err := c.LocalSqlMapClient("insert_sys_menu", &paramObj0).Execute()
  447. paramMap, err := sysutils.BeanToMap(&paramObj0)
  448. _, err = c.Db.SqlMapClient("insert_sys_menu", paramMap).Execute()
  449. if err == nil {
  450. c.Ctx.JSON(200, sysmodel.SysReturn{200, "", nil})
  451. } else {
  452. c.Ctx.JSON(500, sysmodel.SysReturn{500, err.Error(), nil})
  453. }
  454. }
  455. // _DelMenu
  456. // @Title _DelMenu
  457. // @Description 删除菜单
  458. // @Param id string false "菜单ID"
  459. // @Success 200 {object} Account
  460. // @Failure 403 :id is empty
  461. func System_DelMenu(c *entitys.CtrlContext) {
  462. type Param struct {
  463. Id string `json:"id"`
  464. }
  465. var params []Param
  466. c.Ctx.BindJSON(&params)
  467. ids := []string{}
  468. for _, param := range params {
  469. ids = append(ids, param.Id)
  470. }
  471. _, err := c.Db.Table(new(models.SysMenu)).In("id", ids).Update(map[string]interface{}{"del_flag": 1})
  472. if err == nil {
  473. c.Ctx.JSON(200, sysmodel.SysReturn{200, "", nil})
  474. } else {
  475. c.Ctx.JSON(500, sysmodel.SysReturn{500, "", nil})
  476. }
  477. }
  478. // _UpdateMenu
  479. // @Title _UpdateMenu
  480. // @Description 更新菜单
  481. // @Param string false "菜单"
  482. // @Success 200 {object} Account
  483. // @Failure 403 :id is empty
  484. func System_UpdateMenu(c *entitys.CtrlContext) {
  485. var paramObj0 models.SysMenu
  486. err := c.Ctx.BindJSON(&paramObj0)
  487. paramMap, err := sysutils.BeanToMap(&paramObj0)
  488. _, err = c.Db.SqlMapClient("update_sys_menu", paramMap).Execute()
  489. if err == nil {
  490. c.Ctx.JSON(200, sysmodel.SysReturn{200, "", nil})
  491. } else {
  492. c.Ctx.JSON(500, sysmodel.SysReturn{500, err.Error(), nil})
  493. }
  494. }
  495. // _AddOrg
  496. // @Title _AddOrg
  497. // @Description 添加组织
  498. // @Param name string false "组织名称"
  499. // @Param domain string false "域"
  500. // @Param parent string false "父ID"
  501. // @Success 200 {object} Account
  502. // @Failure 403 :id is empty
  503. func System_AddOrg(c *entitys.CtrlContext) {
  504. var paramObj0 models.SysOrg
  505. c.Ctx.BindJSON(&paramObj0)
  506. tk, _ := c.Ctx.Get("token")
  507. user := tk.(*entitys.Token)
  508. paramObj0.Id = sysutils.NewUUID()
  509. paramObj0.CreateBy = user.UserId
  510. paramObj0.LastUpdateBy = user.UserId
  511. paramObj0.CreateTime = time.Now()
  512. paramObj0.LastUpdateTime = time.Now().UnixNano()
  513. paramObj0.DelFlag = 0
  514. if paramObj0.Parent != "" {
  515. parentNodes := []sysmodel.SysOrg{}
  516. err := c.Db.SqlMapClient("one_sys_org", paramObj0.Parent).Find(&parentNodes)
  517. if err != nil {
  518. c.Ctx.JSON(500, sysmodel.SysReturn{500, err.Error(), nil})
  519. return
  520. }
  521. paramObj0.Inheritance = fmt.Sprintf("|%s%s", paramObj0.Id, parentNodes[0].Inheritance)
  522. } else {
  523. paramObj0.Inheritance = fmt.Sprintf("|%s|", paramObj0.Id)
  524. }
  525. //_, err := c.LocalSqlMapClient("insert_sys_org", &paramObj0).Execute()
  526. paramMap, err := sysutils.BeanToMap(&paramObj0)
  527. _, err = c.Db.SqlMapClient("insert_sys_org", paramMap).Execute()
  528. if err == nil {
  529. c.Ctx.JSON(200, sysmodel.SysReturn{200, "", nil})
  530. } else {
  531. c.Ctx.JSON(500, sysmodel.SysReturn{500, err.Error(), nil})
  532. }
  533. }
  534. // _DelOrg
  535. // @Title _DelOrg
  536. // @Description 删除组织
  537. // @Param id string array false "用户ID"
  538. // @Success 200 {object} Account
  539. // @Failure 403 :id is empty
  540. func System_DelOrg(c *entitys.CtrlContext) {
  541. id := c.Ctx.Query("id")
  542. ret := __none_func_system__(id)
  543. if ret {
  544. c.Ctx.JSON(200, sysmodel.SysReturn{200, "", nil})
  545. } else {
  546. c.Ctx.JSON(500, sysmodel.SysReturn{500, "", nil})
  547. }
  548. }
  549. // _UpdateOrg
  550. // @Title _UpdateOrg
  551. // @Description 修改组织
  552. // @Param name string false "组织名称"
  553. // @Param domain string false "域"
  554. // @Param parent string false "父ID"
  555. // @Success 200 {object} Account
  556. // @Failure 403 :id is empty
  557. func System_UpdateOrg(c *entitys.CtrlContext) {
  558. name := c.Ctx.Query("name")
  559. domain := c.Ctx.Query("domain")
  560. parent := c.Ctx.Query("parent")
  561. ret := __none_func_system__(name, domain, parent)
  562. if ret {
  563. c.Ctx.JSON(200, sysmodel.SysReturn{200, "", nil})
  564. } else {
  565. c.Ctx.JSON(500, sysmodel.SysReturn{500, "", nil})
  566. }
  567. }
  568. // _GetOrgByUserid
  569. // @Title _GetOrgByUserid
  570. // @Description 根据用户id获取用户组织
  571. // @Param user_id string false "用户id"
  572. // @Success 200 {object} Account
  573. // @Failure 403 :id is empty
  574. func System_GetOrgByUserid(c *entitys.CtrlContext) {
  575. user_id := c.Ctx.Query("user_id")
  576. var org sysmodel.SysOrg
  577. err := c.Db.SqlMapClient("get_org_by_userid", user_id).Find(&org)
  578. if err == nil {
  579. c.Ctx.JSON(200, sysmodel.SysReturn{200, "", org})
  580. } else {
  581. c.Ctx.JSON(500, sysmodel.SysReturn{500, err.Error(), nil})
  582. }
  583. }
  584. // _AddDomain
  585. // @Title _AddDomain
  586. // @Description 添加域
  587. // @Param false "域"
  588. // @Success 200 {object} Account
  589. // @Failure 403 :id is empty
  590. func System_AddDomain(c *entitys.CtrlContext) {
  591. var paramObj0 models.SysDomain
  592. c.Ctx.BindJSON(&paramObj0)
  593. ////1、测试连接串
  594. //db, err := xorm.NewEngine("mysql", paramObj0.DataSource)
  595. //if err == nil {
  596. // //engine.initOrmEngine(db, "mysql")
  597. // //c.BusinessOrmEngine[v.Domain] = db
  598. //}
  599. tk, _ := c.Ctx.Get("token")
  600. user := tk.(*entitys.Token)
  601. paramObj0.Id = sysutils.NewUUID()
  602. paramObj0.CreateBy = user.UserId
  603. paramObj0.LastUpdateBy = user.UserId
  604. paramObj0.CreateTime = sysmodel.NowLocal()
  605. paramObj0.LastUpdateTime = time.Now().UnixNano()
  606. paramObj0.DelFlag = 0
  607. paramMap, err := sysutils.BeanToMap(&paramObj0)
  608. if err != nil {
  609. c.Ctx.JSON(500, sysmodel.SysReturn{500, err.Error(), nil})
  610. return
  611. }
  612. _, err = c.Db.SqlMapClient("insert_sys_domain", paramMap).Execute()
  613. if err == nil {
  614. //添加数据库基本用户权限数据
  615. ret := c.App.AddBusinessDb(paramObj0.Id, "admin@"+paramObj0.Domain, paramObj0.Domain, paramObj0.DataSource, true)
  616. if ret {
  617. c.Ctx.JSON(200, sysmodel.SysReturn{200, "", paramObj0.Id})
  618. } else {
  619. c.Ctx.JSON(500, sysmodel.SysReturn{500, "数据库初始化错误。", nil})
  620. }
  621. } else {
  622. c.Ctx.JSON(500, sysmodel.SysReturn{500, err.Error(), nil})
  623. }
  624. }
  625. // _DelDomain
  626. // @Title _DelDomain
  627. // @Description 删除域
  628. // @Param id string false "域ID"
  629. // @Success 200 {object} Account
  630. // @Failure 403 :id is empty
  631. func System_DelDomain(c *entitys.CtrlContext) {
  632. type Param struct {
  633. Id string `json:"id"`
  634. }
  635. var params []Param
  636. c.Ctx.BindJSON(&params)
  637. ids := []string{}
  638. for _, param := range params {
  639. ids = append(ids, param.Id)
  640. }
  641. _, err := c.Db.Table(new(models.SysDomain)).In("id", ids).Update(map[string]interface{}{"del_flag": 1})
  642. if err != nil {
  643. c.Ctx.JSON(200, sysmodel.SysReturn{500, err.Error(), nil})
  644. return
  645. }
  646. ret := __none_func_system__()
  647. if ret {
  648. c.Ctx.JSON(200, sysmodel.SysReturn{200, "", nil})
  649. } else {
  650. c.Ctx.JSON(200, sysmodel.SysReturn{500, "", nil})
  651. }
  652. }
  653. // _UpdateDomain
  654. // @Title _UpdateDomain
  655. // @Description 修改域
  656. // @Param false "域"
  657. // @Success 200 {object} Account
  658. // @Failure 403 :id is empty
  659. func System_UpdateDomain(c *entitys.CtrlContext) {
  660. var paramObj0 models.SysDomain
  661. c.Ctx.BindJSON(&paramObj0)
  662. tk, _ := c.Ctx.Get("token")
  663. user := tk.(*entitys.Token)
  664. paramObj0.LastUpdateTime = time.Now().UnixNano()
  665. paramObj0.LastUpdateBy = user.UserId
  666. paramMap, err := sysutils.BeanToMap(&paramObj0)
  667. if err != nil {
  668. c.Ctx.JSON(500, sysmodel.SysReturn{500, err.Error(), nil})
  669. return
  670. }
  671. _, err = c.Db.SqlMapClient("update_sys_domain", paramMap).Execute()
  672. if err == nil {
  673. //添加数据库基本用户权限数据
  674. ret := c.App.AddBusinessDb(paramObj0.Id, "admin@"+paramObj0.Domain, paramObj0.Domain, paramObj0.DataSource, true)
  675. if ret {
  676. c.Ctx.JSON(200, sysmodel.SysReturn{200, "", paramObj0.Id})
  677. } else {
  678. c.Ctx.JSON(500, sysmodel.SysReturn{500, "数据库初始化错误。", nil})
  679. }
  680. } else {
  681. c.Ctx.JSON(500, sysmodel.SysReturn{500, err.Error(), nil})
  682. }
  683. }
  684. // _AddDomainMenu
  685. // @Title _AddDomainMenu
  686. // @Description 域添加菜单
  687. // @Param false "添加域菜单bean"
  688. // @Success 200 {object} Account
  689. // @Failure 403 :id is empty
  690. func System_AddDomainMenu(c *entitys.CtrlContext) {
  691. var paramObj0 models.AddDomainMenu
  692. c.Ctx.BindJSON(&paramObj0)
  693. var domain sysmodel.SysDomain
  694. param := map[string]interface{}{"id": paramObj0.DomainId}
  695. _, err := c.Db.SqlMapClient("selectone_sys_domain", &param).Get(&domain)
  696. if err != nil {
  697. c.Ctx.JSON(500, sysmodel.SysReturn{500, "not find domain error: " + err.Error(), nil})
  698. return
  699. }
  700. var menus []sysmodel.SysMenu
  701. err = c.Db.In("id", paramObj0.Menus).Find(&menus)
  702. if err != nil {
  703. c.Ctx.JSON(500, sysmodel.SysReturn{500, "find menu error: " + err.Error(), nil})
  704. return
  705. }
  706. _, err = c.App.GetBusinessDb(domain.Domain).Insert(&menus)
  707. if err != nil {
  708. c.Ctx.JSON(500, sysmodel.SysReturn{500, "Insert menu error: " + err.Error(), nil})
  709. return
  710. }
  711. ret := __none_func_system__(paramObj0)
  712. if ret {
  713. c.Ctx.JSON(200, sysmodel.SysReturn{200, "", nil})
  714. } else {
  715. c.Ctx.JSON(500, sysmodel.SysReturn{500, "", nil})
  716. }
  717. }
  718. // _GetDomainMenuTree
  719. // @Title _GetDomainMenuTree
  720. // @Description 域添加菜单
  721. // @Param domain_id string false "域id"
  722. // @Success 200 {object} Account
  723. // @Failure 403 :id is empty
  724. func System_GetDomainMenuTree(c *entitys.CtrlContext) {
  725. domain_id := c.Ctx.Query("domain_id")
  726. _type := c.Ctx.DefaultQuery("type", "")
  727. type_op := c.Ctx.DefaultQuery("type_op", "")
  728. op := template.HTML(type_op)
  729. var domain sysmodel.SysDomain
  730. param := map[string]interface{}{"id": domain_id, "type": _type, "type_op": op}
  731. _, err := c.Db.SqlMapClient("selectone_sys_domain", &param).Get(&domain)
  732. if err != nil {
  733. c.Ctx.JSON(500, sysmodel.SysReturn{500, "not find domain error: " + err.Error(), nil})
  734. return
  735. }
  736. paramMap := map[string]interface{}{"sort": "name"}
  737. domainMenus, err := c.App.GetBusinessDb(domain.Domain).SqlTemplateClient("system_get_menu_tree.tpl", &paramMap).Query().List()
  738. if err != nil {
  739. c.Ctx.JSON(500, sysmodel.SysReturn{500, "get domain_menu tree: " + err.Error(), nil})
  740. return
  741. }
  742. domainTree, err := sysutils.BuildTree("", domainMenus)
  743. sysMenus, err := c.Db.SqlTemplateClient("system_get_menu_tree.tpl", &paramMap).Query().List()
  744. if err != nil {
  745. c.Ctx.JSON(500, sysmodel.SysReturn{500, "get sys_menu tree: " + err.Error(), nil})
  746. return
  747. }
  748. var sysMenusMap map[string]map[string]interface{}
  749. sysMenusMap = make(map[string]map[string]interface{},0)
  750. for _, menu := range sysMenus{
  751. sysMenusMap[menu["id"].(string)] = menu
  752. }
  753. //剔除域已存在的菜单
  754. for _, domainMenu := range domainMenus {
  755. delete(sysMenusMap, domainMenu["id"].(string))
  756. }
  757. var sysMenuRest []map[string]interface{}
  758. for _, menu := range sysMenusMap{
  759. sysMenuRest = append(sysMenuRest, menu)
  760. }
  761. sysTree, err := sysutils.BuildTree("", sysMenuRest)
  762. ret := __none_func_system__(domain_id)
  763. if ret {
  764. c.Ctx.JSON(200, sysmodel.SysReturn{200, "", map[string]interface{}{"sys_tree": sysTree, "domain_tree": domainTree}})
  765. } else {
  766. c.Ctx.JSON(500, sysmodel.SysReturn{500, "", nil})
  767. }
  768. }
  769. func __none_func_system__(params ...interface{}) bool {
  770. return true
  771. }