SysAppController.go 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448
  1. package partial
  2. import (
  3. "fmt"
  4. "git.qianqiusoft.com/qianqiusoft/light-apiengine/entitys"
  5. "time"
  6. //sysmodel "git.qianqiusoft.com/qianqiusoft/light-apiengine/models"
  7. "git.qianqiusoft.com/qianqiusoft/light-apiengine/models"
  8. sysmodel "git.qianqiusoft.com/qianqiusoft/light-apiengine/models"
  9. sysutils "git.qianqiusoft.com/qianqiusoft/light-apiengine/utils"
  10. "strconv"
  11. //__import_packages__
  12. )
  13. // _AddAppFun
  14. // @Title _AddAppFun
  15. // @Description 添加APP功能
  16. // @Param string false "功能"
  17. // @Success 200 {object} Account
  18. // @Failure 403 :id is empty
  19. func SysApp_AddAppFun(c *entitys.CtrlContext) {
  20. var paramObj0 models.SysAppFun
  21. c.Ctx.BindJSON(&paramObj0)
  22. user_id := c.Ctx.GetString("user_id")
  23. paramObj0.Id = sysutils.NewUUID()
  24. paramObj0.CreateBy = user_id
  25. paramObj0.LastUpdateBy = user_id
  26. paramObj0.CreateTime = models.NowLocal()
  27. paramObj0.LastUpdateTime = time.Now().UnixNano()
  28. paramObj0.DelFlag = 0
  29. if paramObj0.Parent != "" {
  30. parentNodes := []sysmodel.SysAppFun{}
  31. err := c.Db.SqlMapClient("select_parent_app_fun", paramObj0.Parent).Find(&parentNodes)
  32. if err != nil {
  33. c.Ctx.JSON(500, sysmodel.SysReturn{500, err.Error(), nil})
  34. return
  35. }
  36. paramObj0.Inheritance = fmt.Sprintf("|%s%s", paramObj0.Id, parentNodes[0].Inheritance)
  37. } else {
  38. paramObj0.Inheritance = fmt.Sprintf("|%s|", paramObj0.Id)
  39. }
  40. paramMap, err := sysutils.BeanToMap(&paramObj0)
  41. _, err = c.Db.SqlMapClient("insert_sys_app_fun", paramMap).Execute()
  42. if err == nil {
  43. c.Ctx.JSON(200, sysmodel.SysReturn{200, "", nil})
  44. } else {
  45. c.Ctx.JSON(500, sysmodel.SysReturn{500, err.Error(), nil})
  46. }
  47. }
  48. // _DelAppFun
  49. // @Title _DelAppFun
  50. // @Description 删除app功能
  51. // @Param id string false "APP功能ID"
  52. // @Success 200 {object} Account
  53. // @Failure 403 :id is empty
  54. func SysApp_DelAppFun(c *entitys.CtrlContext) {
  55. type Param struct {
  56. Id string `json:"id"`
  57. }
  58. var params []Param
  59. c.Ctx.BindJSON(&params)
  60. ids := []string{}
  61. for _, param := range params {
  62. ids = append(ids, param.Id)
  63. }
  64. _, err := c.Db.Table(new(models.SysAppFun)).In("id", ids).Update(map[string]interface{}{"del_flag": 1})
  65. if err == nil {
  66. c.Ctx.JSON(200, sysmodel.SysReturn{200, "", nil})
  67. } else {
  68. c.Ctx.JSON(500, sysmodel.SysReturn{500, "", nil})
  69. }
  70. }
  71. // _UpdateAppFun
  72. // @Title _UpdateAppFun
  73. // @Description 更新APP功能
  74. // @Param string false "功能"
  75. // @Success 200 {object} Account
  76. // @Failure 403 :id is empty
  77. func SysApp_UpdateAppFun(c *entitys.CtrlContext) {
  78. var paramObj0 models.SysAppFun
  79. c.Ctx.BindJSON(&paramObj0)
  80. user_id := c.Ctx.GetString("user_id")
  81. if paramObj0.Parent != "" {
  82. parentNodes := []sysmodel.SysAppFun{}
  83. err := c.Db.SqlMapClient("select_parent_app_fun", paramObj0.Parent).Find(&parentNodes)
  84. if err != nil {
  85. c.Ctx.JSON(500, sysmodel.SysReturn{500, err.Error(), nil})
  86. return
  87. }
  88. paramObj0.Inheritance = fmt.Sprintf("|%s%s", paramObj0.Id, parentNodes[0].Inheritance)
  89. } else {
  90. paramObj0.Inheritance = fmt.Sprintf("|%s|", paramObj0.Id)
  91. }
  92. paramObj0.LastUpdateBy = user_id
  93. paramObj0.LastUpdateTime = time.Now().UnixNano()
  94. paramMap, err := sysutils.BeanToMap(&paramObj0)
  95. _, err = c.Db.SqlMapClient("update_sys_app_fun", paramMap).Execute()
  96. if err == nil {
  97. c.Ctx.JSON(200, sysmodel.SysReturn{200, "", nil})
  98. } else {
  99. c.Ctx.JSON(500, sysmodel.SysReturn{500, err.Error(), nil})
  100. }
  101. }
  102. // _FindAppFunPage
  103. // @Title _FindAppFunPage
  104. // @Description 分页获取APP功能
  105. // @Success 200 {object} Account
  106. // @Failure 403 :id is empty
  107. func SysApp_FindAppFunPage(c *entitys.CtrlContext) {
  108. page, _ := strconv.Atoi(c.Ctx.DefaultQuery("page", "1"))
  109. rows, _ := strconv.Atoi(c.Ctx.DefaultQuery("rows", "10"))
  110. name := c.Ctx.DefaultQuery("name", "")
  111. code := c.Ctx.DefaultQuery("code", "")
  112. cn_id := c.Ctx.DefaultQuery("cn_id", "")
  113. hidden := c.Ctx.DefaultQuery("hidden", "")
  114. paramMap_i_t := map[string]interface{}{"page": page, "rows": rows, "name": name, "code": code, "cn_id": cn_id, "hidden": hidden}
  115. result, err := sysutils.PageSearch(c.Db, "sys_app", "find_app_fun_page", "sys_app_fun", paramMap_i_t)
  116. if err == nil {
  117. c.Ctx.JSON(200, sysmodel.SysReturn{200, "", result})
  118. } else {
  119. c.Ctx.JSON(500, sysmodel.SysReturn{500, err.Error(), nil})
  120. }
  121. }
  122. // _GetAppFunTree
  123. // @Title _GetAppFunTree
  124. // @Description 获取APP功能树
  125. // @Success 200 {object} Account
  126. // @Failure 403 :id is empty
  127. func SysApp_GetAppFunTree(c *entitys.CtrlContext) {
  128. code := c.Ctx.DefaultQuery("code", "")
  129. paramMap_i_t := map[string]interface{}{"sort": "name", "code": code}
  130. result, err := sysutils.TreeSearch(c.Db, "sys_app", "get_app_fun_tree", "sys_app_fun", paramMap_i_t)
  131. if err == nil {
  132. c.Ctx.JSON(200, sysmodel.SysReturn{200, "", result})
  133. } else {
  134. c.Ctx.JSON(500, sysmodel.SysReturn{500, err.Error(), nil})
  135. }
  136. }
  137. // _AddRoleAppFun
  138. // @Title _AddRoleAppFun
  139. // @Description 添加角色APP功能
  140. // @Param string false "功能"
  141. // @Success 200 {object} Account
  142. // @Failure 403 :id is empty
  143. func SysApp_AddRoleAppFun(c *entitys.CtrlContext) {
  144. user_id := c.Ctx.GetString("user_id")
  145. var paramObj0 struct {
  146. AppFunIds []string `json:"app_fun_ids"`
  147. RoleId string `json:"role_id"`
  148. }
  149. c.Ctx.BindJSON(&paramObj0)
  150. session := c.Db.NewSession()
  151. defer session.Close()
  152. session.Begin()
  153. _, err := session.SqlMapClient("del_role_app_fun", paramObj0.RoleId).Execute()
  154. if err != nil {
  155. session.Rollback()
  156. c.Ctx.JSON(500, sysmodel.SysReturn{500, err.Error(), nil})
  157. return
  158. }
  159. var roleAppFuns []*sysmodel.SysRoleAppFun
  160. for _, menu := range paramObj0.AppFunIds {
  161. roleAppFun := &sysmodel.SysRoleAppFun{}
  162. roleAppFun.Id = sysutils.NewUUID()
  163. roleAppFun.AppFunId = menu
  164. roleAppFun.RoleId = paramObj0.RoleId
  165. roleAppFun.CreateBy = user_id
  166. roleAppFun.CreateTime = sysmodel.NowLocal()
  167. roleAppFuns = append(roleAppFuns, roleAppFun)
  168. }
  169. _, err = session.InsertMulti(&roleAppFuns)
  170. if err != nil {
  171. session.Rollback()
  172. c.Ctx.JSON(500, sysmodel.SysReturn{500, err.Error(), nil})
  173. return
  174. }
  175. session.Commit()
  176. ret := __none_func_system__(paramObj0)
  177. if ret {
  178. c.Ctx.JSON(200, sysmodel.SysReturn{200, "", nil})
  179. } else {
  180. c.Ctx.JSON(500, sysmodel.SysReturn{500, "", nil})
  181. }
  182. }
  183. // _DelRoleAppFun
  184. // @Title _DelRoleAppFun
  185. // @Description 删除角色APP功能
  186. // @Param id string false "APP功能ID"
  187. // @Success 200 {object} Account
  188. // @Failure 403 :id is empty
  189. func SysApp_DelRoleAppFun(c *entitys.CtrlContext) {
  190. id := c.Ctx.Query("id")
  191. ret := __none_func_sys_app__(id)
  192. if ret {
  193. c.Ctx.JSON(200, sysmodel.SysReturn{200, "", nil})
  194. } else {
  195. c.Ctx.JSON(500, sysmodel.SysReturn{500, "", nil})
  196. }
  197. }
  198. // _UpdateRoleAppFun
  199. // @Title _UpdateRoleAppFun
  200. // @Description 更新角色APP功能
  201. // @Param string false "功能"
  202. // @Success 200 {object} Account
  203. // @Failure 403 :id is empty
  204. func SysApp_UpdateRoleAppFun(c *entitys.CtrlContext) {
  205. var paramObj0 models.SysRoleAppFun
  206. c.Ctx.BindJSON(&paramObj0)
  207. ret := __none_func_sys_app__(paramObj0)
  208. if ret {
  209. c.Ctx.JSON(200, sysmodel.SysReturn{200, "", nil})
  210. } else {
  211. c.Ctx.JSON(500, sysmodel.SysReturn{500, "", nil})
  212. }
  213. }
  214. // _GetRoleAppFunTree
  215. // @Title _GetRoleAppFunTree
  216. // @Description 获取角色APP功能
  217. // @Param role_id string false "角色id"
  218. // @Success 200 {object} Account
  219. // @Failure 403 :id is empty
  220. func SysApp_GetRoleAppFun(c *entitys.CtrlContext) {
  221. role_id := c.Ctx.Query("role_id")
  222. paramMap := map[string]interface{}{"user_id": "", "sort": "name", "hidden": 0}
  223. sysTree, err := sysutils.TreeSearch(c.Db, "sys_app", "get_app_fun_tree", "sys_app_fun", paramMap)
  224. if err != nil {
  225. c.Ctx.JSON(500, sysmodel.SysReturn{500, err.Error(), nil})
  226. return
  227. }
  228. paramMap2 := map[string]interface{}{"role_id": role_id}
  229. roleAppFun, err := c.Db.SqlMapClient("get_role_app_fun_tree", &paramMap2).Query().List()
  230. if err != nil {
  231. c.Ctx.JSON(500, sysmodel.SysReturn{500, err.Error(), nil})
  232. return
  233. }
  234. roleTree, err := sysutils.BuildTree("", roleAppFun)
  235. ret := __none_func_system__(role_id)
  236. if ret {
  237. c.Ctx.JSON(200, sysmodel.SysReturn{200, "", map[string]interface{}{"sys_tree": sysTree, "role_tree": roleTree}})
  238. } else {
  239. c.Ctx.JSON(500, sysmodel.SysReturn{500, "", nil})
  240. }
  241. }
  242. // _FindRoleAppFunPage
  243. // @Title _FindRoleAppFunPage
  244. // @Description 分页获取角色APP功能
  245. // @Success 200 {object} Account
  246. // @Failure 403 :id is empty
  247. func SysApp_FindRoleAppFunPage(c *entitys.CtrlContext) {
  248. page, _ := strconv.Atoi(c.Ctx.DefaultQuery("page", "1"))
  249. rows, _ := strconv.Atoi(c.Ctx.DefaultQuery("rows", "10"))
  250. paramMap_i_t := map[string]interface{}{"page": page, "rows": rows}
  251. result, err := sysutils.PageSearch(c.Db, "sys_app", "find_role_app_fun_page", "sys_role_app_fun", paramMap_i_t)
  252. if err == nil {
  253. c.Ctx.JSON(200, sysmodel.SysReturn{200, "", result})
  254. } else {
  255. c.Ctx.JSON(500, sysmodel.SysReturn{500, err.Error(), nil})
  256. }
  257. }
  258. // _GetRoleAppFunTree
  259. // @Title _GetRoleAppFunTree
  260. // @Description 获取角色APP功能树
  261. // @Success 200 {object} Account
  262. // @Failure 403 :id is empty
  263. func SysApp_GetRoleAppFunTree(c *entitys.CtrlContext) {
  264. user_id := c.Ctx.GetString("user_id")
  265. code := c.Ctx.DefaultQuery("code", "")
  266. role_id := c.Ctx.DefaultQuery("role_id", "")
  267. paramMap_i_t := map[string]interface{}{"sort": "name", "user_id": user_id, "code": code, "role_id": role_id}
  268. result, err := sysutils.TreeSearch(c.Db, "sys_app", "get_role_app_fun_tree", "sys_role_app_fun", paramMap_i_t)
  269. if err == nil {
  270. c.Ctx.JSON(200, sysmodel.SysReturn{200, "", result})
  271. } else {
  272. c.Ctx.JSON(500, sysmodel.SysReturn{500, err.Error(), nil})
  273. }
  274. }
  275. // _GetDomainAppFunTree
  276. // @Title _GetDomainAppFunTree
  277. // @Description 域添加APP功能
  278. // @Param domain_id string false "域id"
  279. // @Success 200 {object} Account
  280. // @Failure 403 :id is empty
  281. func SysApp_GetDomainAppFunTree(c *entitys.CtrlContext) {
  282. domain_id := c.Ctx.Query("domain_id")
  283. var domain sysmodel.SysDomain
  284. param := map[string]interface{}{"id": domain_id}
  285. _, err := c.Db.SqlMapClient("selectone_sys_domain", &param).Get(&domain)
  286. if err != nil {
  287. c.Ctx.JSON(500, sysmodel.SysReturn{500, "not find domain error: " + err.Error(), nil})
  288. return
  289. }
  290. paramMap := map[string]interface{}{}
  291. domainAppFuns, err := c.App.GetBusinessDb(domain.Domain).SqlTemplateClient("sys_app_get_app_fun_tree.tpl", &paramMap).Query().List()
  292. if err != nil {
  293. c.Ctx.JSON(500, sysmodel.SysReturn{500, "get domain_menu tree: " + err.Error(), nil})
  294. return
  295. }
  296. domainTree, err := sysutils.BuildTree("", domainAppFuns)
  297. sysAppFuns, err := c.Db.SqlTemplateClient("sys_app_get_app_fun_tree.tpl", &paramMap).Query().List()
  298. if err != nil {
  299. c.Ctx.JSON(500, sysmodel.SysReturn{500, "get sys_menu tree: " + err.Error(), nil})
  300. return
  301. }
  302. sysTree, err := sysutils.BuildTree("", sysAppFuns)
  303. if err == nil {
  304. c.Ctx.JSON(200, sysmodel.SysReturn{200, "", map[string]interface{}{"sys_tree": sysTree, "domain_tree": domainTree}})
  305. } else {
  306. c.Ctx.JSON(500, sysmodel.SysReturn{500, "", nil})
  307. }
  308. }
  309. // _AddDomainAppFuns
  310. // @Title _AddDomainAppFuns
  311. // @Description 域添加菜单
  312. // @Param false "添加域app_fun"
  313. // @Success 200 {object} Account
  314. // @Failure 403 :id is empty
  315. func SysApp_AddDomainAppFuns(c *entitys.CtrlContext) {
  316. var paramObj0 struct {
  317. //域名ID
  318. DomainId string `json:"domain_id"`
  319. //菜单
  320. AppFuns []sysmodel.SysAppFun `json:"app_funs"`
  321. }
  322. err := c.Ctx.BindJSON(&paramObj0)
  323. if err != nil {
  324. c.Ctx.JSON(500, sysmodel.SysReturn{500, "BindJSON error: " + err.Error(), nil})
  325. return
  326. }
  327. var domain sysmodel.SysDomain
  328. param := map[string]interface{}{"id": paramObj0.DomainId}
  329. _, err = c.Db.SqlMapClient("selectone_sys_domain", &param).Get(&domain)
  330. if err != nil {
  331. c.Ctx.JSON(500, sysmodel.SysReturn{500, "not find domain error: " + err.Error(), nil})
  332. return
  333. }
  334. var appFunIds = make([]string, len(paramObj0.AppFuns))
  335. for i := range paramObj0.AppFuns {
  336. appFunIds[i] = paramObj0.AppFuns[i].Id
  337. }
  338. var appFuns []sysmodel.SysAppFun
  339. err = c.Db.In("id", appFunIds).Find(&appFuns)
  340. if err != nil {
  341. c.Ctx.JSON(500, sysmodel.SysReturn{500, "find menu error: " + err.Error(), nil})
  342. return
  343. }
  344. for i := range appFuns {
  345. for j := range paramObj0.AppFuns {
  346. if appFuns[i].Id == paramObj0.AppFuns[j].Id {
  347. appFuns[i].Name = paramObj0.AppFuns[j].Name
  348. break
  349. }
  350. }
  351. }
  352. session := c.App.GetBusinessDb(domain.Domain).NewSession()
  353. defer session.Close()
  354. session.Begin()
  355. _, err = c.App.GetBusinessDb(domain.Domain).SQL("delete from sys_app_fun where del_flag = ?", "").Execute()
  356. if err != nil {
  357. session.Rollback()
  358. c.Ctx.JSON(500, sysmodel.SysReturn{500, "Insert menu error: " + err.Error(), nil})
  359. return
  360. }
  361. if len(paramObj0.AppFuns) <= 0 {
  362. session.Commit()
  363. c.Ctx.JSON(200, sysmodel.SysReturn{200, "the menus is empty", nil})
  364. return
  365. }
  366. _, err = c.App.GetBusinessDb(domain.Domain).Insert(&paramObj0.AppFuns)
  367. if err != nil {
  368. session.Rollback()
  369. c.Ctx.JSON(500, sysmodel.SysReturn{500, "Insert menu error: " + err.Error(), nil})
  370. return
  371. }
  372. session.Commit()
  373. ret := __none_func_system__(paramObj0)
  374. if ret {
  375. c.Ctx.JSON(200, sysmodel.SysReturn{200, "", nil})
  376. } else {
  377. c.Ctx.JSON(500, sysmodel.SysReturn{500, "", nil})
  378. }
  379. }
  380. func __none_func_sys_app__(params ...interface{}) bool {
  381. return true
  382. }