SystemController.go 31 KB

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