SysAppController.go 13 KB

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