SystemController.go 42 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461
  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. "strings"
  12. "github.com/pkg/errors"
  13. )
  14. // _Sidebar
  15. // @Title _Sidebar
  16. // @Description 获取导航菜单
  17. // @Param user string false "用户id"
  18. // @Success 200 {object} Account
  19. // @Failure 403 :id is empty
  20. func System_Sidebar(c *entitys.CtrlContext) {
  21. //System_GetMenuTree(c)
  22. _type := c.Ctx.DefaultQuery("type", "")
  23. type_op := c.Ctx.DefaultQuery("type_op", "")
  24. hidden := c.Ctx.DefaultQuery("hidden", "")
  25. name := c.Ctx.DefaultQuery("name", "")
  26. cn_id := c.Ctx.DefaultQuery("cn_id", "")
  27. tk, _ := c.Ctx.Get("token")
  28. user := tk.(*entitys.Token)
  29. op := template.HTML(type_op)
  30. // 管理员角色ID 5c38ee66-c5e6-40a7-b190-86d115bae3e5
  31. exist, _ := c.Db.Table("sys_user_role").Where("user_id = ? and role_id = ?", user.UserId, "5c38ee66-c5e6-40a7-b190-86d115bae3e5").Exist()
  32. //如果是管理员
  33. var paramMap_i_t map[string]interface{}
  34. if exist {
  35. paramMap_i_t = map[string]interface{}{"user_id": "", "name": name, "cn_id": cn_id, "sort": "name", "type": _type, "type_op": op, "hidden": hidden}
  36. } else {
  37. paramMap_i_t = map[string]interface{}{"user_id": user.UserId, "name": name, "cn_id": cn_id, "sort": "name", "type": _type, "type_op": op, "hidden": hidden}
  38. }
  39. result, err := sysutils.TreeSearch(c.Db, "system", "get_menu_tree", "sys_menu", paramMap_i_t)
  40. if err == nil {
  41. c.Ctx.JSON(200, sysmodel.SysReturn{200, "", result})
  42. } else {
  43. c.Ctx.JSON(500, sysmodel.SysReturn{500, err.Error(), nil})
  44. }
  45. }
  46. // _GetMenuTree
  47. // @Title _GetMenuTree
  48. // @Description 获取系统菜单
  49. // @Param user string false "用户id"
  50. // @Success 200 {object} Account
  51. // @Failure 403 :id is empty
  52. func System_GetMenuTree(c *entitys.CtrlContext) {
  53. _type := c.Ctx.DefaultQuery("type", "")
  54. type_op := c.Ctx.DefaultQuery("type_op", "")
  55. hidden := c.Ctx.DefaultQuery("hidden", "")
  56. name := c.Ctx.DefaultQuery("name", "")
  57. cn_id := c.Ctx.DefaultQuery("cn_id", "")
  58. op := template.HTML(type_op)
  59. paramMap_i_t := map[string]interface{}{"user_id": "", "name": name, "cn_id": cn_id, "sort": "name", "type": _type, "type_op": op, "hidden": hidden}
  60. result, err := sysutils.TreeSearch(c.Db, "system", "get_menu_tree", "sys_menu", paramMap_i_t)
  61. if err == nil {
  62. c.Ctx.JSON(200, sysmodel.SysReturn{200, "", result})
  63. } else {
  64. c.Ctx.JSON(500, sysmodel.SysReturn{500, err.Error(), nil})
  65. }
  66. }
  67. // _GetDomainTree
  68. // @Title _GetDomainTree
  69. // @Description 获取域树
  70. // @Success 200 {object} Account
  71. // @Failure 403 :id is empty
  72. func System_GetDomainTree(c *entitys.CtrlContext) {
  73. del_flag := c.Ctx.DefaultQuery("del_flag", "")
  74. paramMap_i_t := map[string]interface{}{"sort": "name", "del_flag": del_flag}
  75. result, err := sysutils.TreeSearch(c.Db, "system", "get_domain_tree", "sys_domain", paramMap_i_t)
  76. if err == nil {
  77. c.Ctx.JSON(200, sysmodel.SysReturn{200, "", result})
  78. } else {
  79. c.Ctx.JSON(500, sysmodel.SysReturn{500, err.Error(), nil})
  80. }
  81. }
  82. // _FindUserPage
  83. // @Title _FindUserPage
  84. // @Description 获取用户分页数
  85. // @Success 200 {object} Account
  86. // @Failure 403 :id is empty
  87. func System_FindUserPage(c *entitys.CtrlContext) {
  88. page, _ := strconv.Atoi(c.Ctx.DefaultQuery("page", "1"))
  89. rows, _ := strconv.Atoi(c.Ctx.DefaultQuery("rows", "10"))
  90. name := c.Ctx.DefaultQuery("name", "")
  91. login_id := c.Ctx.DefaultQuery("login_id", "")
  92. org_id := c.Ctx.DefaultQuery("org_id", "")
  93. paramMap_i_t := map[string]interface{}{"page": page, "rows": rows, "name": name, "login_id": login_id, "org_id": org_id}
  94. result, err := sysutils.PageSearch(c.Db, "system", "find_user_page", "sys_user", paramMap_i_t)
  95. if err != nil {
  96. c.Ctx.JSON(200, sysmodel.SysReturn{200, "", result})
  97. return
  98. }
  99. //type Role struct {
  100. // RoleName string `json:"role_name"`
  101. // UserRole string `json:"user_role"`
  102. //}
  103. ////获取用户角色
  104. //users := result.Content.([]map[string]interface{})
  105. //for i, user := range users {
  106. // roles := []Role{}
  107. // err := c.Db.SqlMapClient("get_roles_by_user_id", user["id"]).Find(&roles)
  108. // if err != nil {
  109. // fmt.Println("----", err.Error())
  110. // continue
  111. // }
  112. // users[i]["user_role"] = roles[0].UserRole
  113. // users[i]["role_name"] = roles[0].RoleName
  114. //}
  115. //
  116. //result.Content = users
  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. // _GetOrgTree
  124. // @Title _GetOrgTree
  125. // @Description 获取组织架构树
  126. // @Success 200 {object} Account
  127. // @Failure 403 :id is empty
  128. func System_GetOrgTree(c *entitys.CtrlContext) {
  129. paramMap_i_t := map[string]interface{}{"sort": "name"}
  130. result, err := sysutils.TreeSearch(c.Db, "system", "get_org_tree", "sys_org", 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. // _FindOrgPage
  138. // @Title _FindOrgPage
  139. // @Description 获取组织架构分页数
  140. // @Success 200 {object} Account
  141. // @Failure 403 :id is empty
  142. func System_FindOrgPage(c *entitys.CtrlContext) {
  143. page, _ := strconv.Atoi(c.Ctx.DefaultQuery("page", "1"))
  144. rows, _ := strconv.Atoi(c.Ctx.DefaultQuery("rows", "10"))
  145. name := c.Ctx.DefaultQuery("name", "")
  146. code := c.Ctx.DefaultQuery("code", "")
  147. cn_id := c.Ctx.DefaultQuery("cn_id", "")
  148. paramMap_i_t := map[string]interface{}{"page": page, "rows": rows, "name": name, "code": code, "cn_id": cn_id}
  149. result, err := sysutils.PageSearch(c.Db, "system", "find_org_page", "sys_org", paramMap_i_t)
  150. if err == nil {
  151. c.Ctx.JSON(200, sysmodel.SysReturn{200, "", result})
  152. } else {
  153. c.Ctx.JSON(500, sysmodel.SysReturn{500, err.Error(), nil})
  154. }
  155. }
  156. // _AddUser
  157. // @Title _AddUser
  158. // @Description 添加用户
  159. // @Param login_id string false "登录ID"
  160. // @Param password string false "密码"
  161. // @Param org_id string false "组织ID"
  162. // @Param email string false "邮箱"
  163. // @Success 200 {object} Account
  164. // @Failure 403 :id is empty
  165. func System_AddUser(c *entitys.CtrlContext) {
  166. tk, _ := c.Ctx.Get("token")
  167. opUser := tk.(*entitys.Token)
  168. var user sysmodel.SysUser
  169. err := c.Ctx.BindJSON(&user)
  170. if err != nil {
  171. c.Ctx.JSON(200, sysmodel.SysReturn{500, err.Error(), nil})
  172. }
  173. fmt.Println(user.LoginId, "-----add user-----", user.Password, " --- ", user.OrgId)
  174. //查找login_id是否存在
  175. oldUser := new(sysmodel.SysUser)
  176. count, _ := c.Db.SQL("select * from sys_user").Where("login_id = ?", user.LoginId).Count(&oldUser)
  177. if count > 1 {
  178. if oldUser.DelFlag == 1 {
  179. oldUser.DelFlag = 0
  180. _, err := c.Db.Id("id").Cols("del_flag").Update(&oldUser)
  181. if err != nil {
  182. c.Ctx.JSON(200, sysmodel.SysReturn{500, "login_id exit, update err: " + err.Error(), nil})
  183. }
  184. return
  185. } else {
  186. c.Ctx.JSON(200, sysmodel.SysReturn{500, "login_id exit", nil})
  187. return
  188. }
  189. }
  190. user_id := c.Ctx.GetString("user_id")
  191. user.Id = sysutils.NewUUID()
  192. user.Name = user.LoginId
  193. user.CreateTime = models.NowLocal()
  194. user.LastUpdateTime = time.Now().UnixNano()
  195. user.CreateBy = user_id
  196. user.LastUpdateBy = user_id
  197. user.DelFlag = 0
  198. user.Domain = opUser.Domain
  199. user.Password = sysutils.HashPassword(user.Password, "")
  200. _, err = c.PlatformDbEngine.Insert(&user)
  201. if err != nil {
  202. c.Ctx.JSON(200, sysmodel.SysReturn{500, "平台插入用户错误:" + err.Error(), nil})
  203. }
  204. _, err = c.Db.Insert(&user)
  205. ret := __none_func_system__(user.LoginId, user.Password, user.OrgId, user.Email)
  206. if ret && err == nil {
  207. c.Ctx.JSON(200, sysmodel.SysReturn{200, "", nil})
  208. } else {
  209. c.Ctx.JSON(200, sysmodel.SysReturn{500, "域数据库插入用户错误:" + err.Error(), nil})
  210. }
  211. }
  212. // _DelUser
  213. // @Title _DelUser
  214. // @Description 删除用户
  215. // @Param id string false "用户ID"
  216. // @Success 200 {object} Account
  217. // @Failure 403 :id is empty
  218. func System_DelUser(c *entitys.CtrlContext) {
  219. type Param struct {
  220. Id string `json:"id"`
  221. }
  222. var params []Param
  223. c.Ctx.BindJSON(&params)
  224. ids := []string{}
  225. for _, param := range params {
  226. ids = append(ids, param.Id)
  227. }
  228. session := c.Db.NewSession()
  229. defer session.Close()
  230. session.Begin()
  231. _, err := c.Db.Table(new(models.SysUser)).In("id", ids).Update(map[string]interface{}{"del_flag": 1})
  232. if err != nil {
  233. session.Rollback()
  234. c.Ctx.JSON(200, sysmodel.SysReturn{500, err.Error(), nil})
  235. return
  236. }
  237. _, err = c.Db.Table(new(models.SysUserRole)).In("user_id", ids).Update(map[string]interface{}{"del_flag": 1})
  238. if err != nil {
  239. session.Rollback()
  240. c.Ctx.JSON(200, sysmodel.SysReturn{500, err.Error(), nil})
  241. return
  242. }
  243. session.Commit()
  244. _, err = c.PlatformDbEngine.In("id", ids).Update(map[string]interface{}{"del_flag": 1})
  245. if err == nil {
  246. c.Ctx.JSON(200, sysmodel.SysReturn{200, "", nil})
  247. } else {
  248. c.Ctx.JSON(200, sysmodel.SysReturn{500, "平台删除用户失败:" + err.Error(), nil})
  249. }
  250. }
  251. // _UpdateUser
  252. // @Title _UpdateUser
  253. // @Description 修改用户
  254. // @Param login_id string false "登录ID"
  255. // @Param password string false "密码"
  256. // @Param org_id string false "组织ID"
  257. // @Param email string false "邮箱"
  258. // @Success 200 {object} Account
  259. // @Failure 403 :id is empty
  260. func System_UpdateUser(c *entitys.CtrlContext) {
  261. tk, _ := c.Ctx.Get("token")
  262. user := tk.(*entitys.Token)
  263. var postData struct {
  264. sysmodel.SysUser
  265. UserRole []string `json:"user_role"`
  266. }
  267. //var user sysmodel.SysUser
  268. err := c.Ctx.BindJSON(&postData)
  269. if err != nil {
  270. c.Ctx.JSON(500, sysmodel.SysReturn{500, err.Error(), nil})
  271. return
  272. }
  273. //postData.LastUpdateTime = time.Now().UnixNano()
  274. //postData.LastUpdateBy = user.UserId
  275. session := c.Db.NewSession()
  276. defer session.Close()
  277. session.Begin()
  278. //paramMap, _ := sysutils.BeanToMap(&postData)
  279. paramMap := map[string]interface{}{"id": postData.Id, "name": postData.Name, "email": postData.Email, "mobile": postData.Mobile, "org_id": postData.OrgId, "last_update_time": time.Now().UnixNano(), "last_update_by": user.UserId}
  280. _, err = session.SqlMapClient("update_user", &paramMap).Execute()
  281. if err != nil {
  282. session.Rollback()
  283. c.Ctx.JSON(500, sysmodel.SysReturn{500, err.Error(), nil})
  284. return
  285. }
  286. _, err = c.PlatformDbEngine.SqlMapClient("update_user", &paramMap).Execute()
  287. if err != nil {
  288. session.Rollback()
  289. c.Ctx.JSON(500, sysmodel.SysReturn{500, "平台更新用户失败:" + err.Error(), nil})
  290. return
  291. }
  292. userRoles := []sysmodel.SysUserRole{}
  293. for _, roleId := range postData.UserRole {
  294. userRole := sysmodel.SysUserRole{}
  295. userRole.Id = sysutils.NewUUID()
  296. userRole.UserId = postData.Id
  297. userRole.RoleId = roleId
  298. userRole.DelFlag = 0
  299. userRole.CreateTime = sysmodel.NowLocal()
  300. userRole.CreateBy = user.UserId
  301. userRole.LastUpdateBy = user.UserId
  302. userRole.LastUpdateTime = time.Now().UnixNano()
  303. userRoles = append(userRoles, userRole)
  304. }
  305. _, err = session.SqlMapClient("delete_user_role", &map[string]interface{}{"user_id": postData.Id}).Execute()
  306. if err != nil {
  307. session.Rollback()
  308. c.Ctx.JSON(500, sysmodel.SysReturn{500, err.Error(), nil})
  309. return
  310. }
  311. _, err = session.InsertMulti(&userRoles)
  312. if err == nil {
  313. session.Commit()
  314. c.Ctx.JSON(200, sysmodel.SysReturn{200, "", nil})
  315. } else {
  316. session.Rollback()
  317. c.Ctx.JSON(500, sysmodel.SysReturn{500, err.Error(), nil})
  318. }
  319. }
  320. // _GetUser
  321. // @Title _GetUser
  322. // @Description 更加用户ID获取用户信息
  323. // @Param user_id string false "用户ID"
  324. // @Success 200 {object} Account
  325. // @Failure 403 :id is empty
  326. func System_GetUser(c *entitys.CtrlContext) {
  327. user_id := c.Ctx.Query("user_id")
  328. var user sysmodel.SysUser
  329. err := c.Db.SqlMapClient("selectone_sys_user", map[string]interface{}{"id": user_id}).Find(&user)
  330. if err == nil {
  331. c.Ctx.JSON(200, sysmodel.SysReturn{200, "", user})
  332. } else {
  333. c.Ctx.JSON(500, sysmodel.SysReturn{500, err.Error(), nil})
  334. }
  335. }
  336. // _AddRole
  337. // @Title _AddRole
  338. // @Description 添加角色
  339. // @Param name string false "角色名称"
  340. // @Param remark string false "备注"
  341. // @Success 200 {object} Account
  342. // @Failure 403 :id is empty
  343. func System_AddRole(c *entitys.CtrlContext) {
  344. var paramObj0 models.SysRole
  345. c.Ctx.BindJSON(&paramObj0)
  346. tk, _ := c.Ctx.Get("token")
  347. user := tk.(*entitys.Token)
  348. paramObj0.Id = sysutils.NewUUID()
  349. paramObj0.CreateBy = user.UserId
  350. paramObj0.LastUpdateBy = user.UserId
  351. paramObj0.CreateTime = models.NowLocal()
  352. paramObj0.LastUpdateTime = time.Now().UnixNano()
  353. paramObj0.DelFlag = 0
  354. //_, err := c.LocalSqlMapClient("insert_sys_role", &paramObj0).Execute()
  355. paramMap, err := sysutils.BeanToMap(&paramObj0)
  356. _, err = c.Db.SqlMapClient("insert_sys_role", paramMap).Execute()
  357. if err == nil {
  358. c.Ctx.JSON(200, sysmodel.SysReturn{200, "", nil})
  359. } else {
  360. c.Ctx.JSON(500, sysmodel.SysReturn{500, "", nil})
  361. }
  362. }
  363. // _DelRole
  364. // @Title _DelRole
  365. // @Description 添加角色
  366. // @Param id string false "角色ID"
  367. // @Success 200 {object} Account
  368. // @Failure 403 :id is empty
  369. func System_DelRole(c *entitys.CtrlContext) {
  370. type Param struct {
  371. Id string `json:"id"`
  372. }
  373. var params []Param
  374. c.Ctx.BindJSON(&params)
  375. ids := []string{}
  376. for _, param := range params {
  377. ids = append(ids, param.Id)
  378. }
  379. _, err := c.Db.Table(new(models.SysRole)).In("id", ids).Update(map[string]interface{}{"del_flag": 1})
  380. if err == nil {
  381. c.Ctx.JSON(200, sysmodel.SysReturn{200, "", nil})
  382. } else {
  383. c.Ctx.JSON(500, sysmodel.SysReturn{500, "", nil})
  384. }
  385. }
  386. // _UpdateRole
  387. // @Title _UpdateRole
  388. // @Description 修改角色
  389. // @Param id string false "角色ID"
  390. // @Param name string false "角色名称"
  391. // @Param remark string false "备注"
  392. // @Success 200 {object} Account
  393. // @Failure 403 :id is empty
  394. func System_UpdateRole(c *entitys.CtrlContext) {
  395. var role sysmodel.SysRole
  396. err := c.Ctx.BindJSON(&role)
  397. if err != nil {
  398. c.Ctx.JSON(500, sysmodel.SysReturn{500, err.Error(), nil})
  399. return
  400. }
  401. paramMap, _ := sysutils.BeanToMap(&role)
  402. _, err = c.Db.SqlMapClient("update_sys_role", paramMap).Execute()
  403. if err == nil {
  404. c.Ctx.JSON(200, sysmodel.SysReturn{200, "", nil})
  405. } else {
  406. c.Ctx.JSON(500, sysmodel.SysReturn{500, err.Error(), nil})
  407. }
  408. }
  409. // _FindRolePage
  410. // @Title _FindRolePage
  411. // @Description 角色分页
  412. // @Param page false "分页参数"
  413. // @Success 200 {object} Account
  414. // @Failure 403 :id is empty
  415. func System_FindRolePage(c *entitys.CtrlContext) {
  416. page, _ := strconv.Atoi(c.Ctx.DefaultQuery("page", "1"))
  417. rows, _ := strconv.Atoi(c.Ctx.DefaultQuery("rows", "10"))
  418. name := c.Ctx.DefaultQuery("name", "")
  419. code := c.Ctx.DefaultQuery("code", "")
  420. paramMap_i_t := map[string]interface{}{"name": name, "code": code, "page": page, "rows": rows}
  421. result, err := sysutils.PageSearch(c.Db, "system", "find_role_page", "sys_role", paramMap_i_t)
  422. if err == nil {
  423. c.Ctx.JSON(200, sysmodel.SysReturn{200, "", result})
  424. } else {
  425. c.Ctx.JSON(500, sysmodel.SysReturn{500, err.Error(), nil})
  426. }
  427. }
  428. // _FindMenuPage
  429. // @Title _FindMenuPage
  430. // @Description 获取角色分页数
  431. // @Success 200 {object} Account
  432. // @Failure 403 :id is empty
  433. func System_FindMenuPage(c *entitys.CtrlContext) {
  434. page, _ := strconv.Atoi(c.Ctx.DefaultQuery("page", "1"))
  435. rows, _ := strconv.Atoi(c.Ctx.DefaultQuery("rows", "10"))
  436. name := c.Ctx.DefaultQuery("name", "")
  437. code := c.Ctx.DefaultQuery("code", "")
  438. cn_id := c.Ctx.DefaultQuery("cn_id", "")
  439. _type := c.Ctx.DefaultQuery("type", "")
  440. type_op := c.Ctx.DefaultQuery("type_op", "")
  441. hidden := c.Ctx.DefaultQuery("hidden", "")
  442. op := template.HTML(type_op)
  443. 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}
  444. result, err := sysutils.PageSearch(c.Db, "system", "find_menu_page", "sys_menu", paramMap_i_t)
  445. if err == nil {
  446. c.Ctx.JSON(200, sysmodel.SysReturn{200, "", result})
  447. } else {
  448. c.Ctx.JSON(500, sysmodel.SysReturn{500, err.Error(), nil})
  449. }
  450. }
  451. // _FindDomainPage
  452. // @Title _FindDomainPage
  453. // @Description 获取域分页数
  454. // @Success 200 {object} Account
  455. // @Failure 403 :id is empty
  456. func System_FindDomainPage(c *entitys.CtrlContext) {
  457. page, _ := strconv.Atoi(c.Ctx.DefaultQuery("page", "1"))
  458. rows, _ := strconv.Atoi(c.Ctx.DefaultQuery("rows", "10"))
  459. paramMap_i_t := map[string]interface{}{"page": page, "rows": rows}
  460. result, err := sysutils.PageSearch(c.Db, "system", "find_domain_page", "sys_domain", paramMap_i_t)
  461. if err == nil {
  462. c.Ctx.JSON(200, sysmodel.SysReturn{200, "", result})
  463. } else {
  464. c.Ctx.JSON(500, sysmodel.SysReturn{500, err.Error(), nil})
  465. }
  466. }
  467. // _FindRoleMenu
  468. // @Title _FindRoleMenu
  469. // @Description 查找角色权限
  470. // @Param role_id string false "角色id"
  471. // @Success 200 {object} Account
  472. // @Failure 403 :id is empty
  473. func System_FindRoleMenu(c *entitys.CtrlContext) {
  474. role_id := c.Ctx.Query("role_id")
  475. ret := __none_func_system__(role_id)
  476. if ret {
  477. c.Ctx.JSON(200, sysmodel.SysReturn{200, "", nil})
  478. } else {
  479. c.Ctx.JSON(500, sysmodel.SysReturn{500, "", nil})
  480. }
  481. }
  482. // _SaveRoleMenu
  483. // @Title _SaveRoleMenu
  484. // @Description 保存角色权限
  485. // @Param role_menu string false "角色权限"
  486. // @Success 200 {object} Account
  487. // @Failure 403 :id is empty
  488. func System_SaveRoleMenu(c *entitys.CtrlContext) {
  489. var paramObj0 []models.SaveRoleMenu
  490. c.Ctx.BindJSON(&paramObj0)
  491. ret := __none_func_system__(paramObj0)
  492. if ret {
  493. c.Ctx.JSON(200, sysmodel.SysReturn{200, "", nil})
  494. } else {
  495. c.Ctx.JSON(500, sysmodel.SysReturn{500, "", nil})
  496. }
  497. }
  498. // _RoleAll
  499. // @Title _RoleAll
  500. // @Description 查找所有角色
  501. // @Success 200 {object} Account
  502. // @Failure 403 :id is empty
  503. func System_RoleAll(c *entitys.CtrlContext) {
  504. ret := __none_func_system__()
  505. if ret {
  506. c.Ctx.JSON(200, sysmodel.SysReturn{200, "", nil})
  507. } else {
  508. c.Ctx.JSON(500, sysmodel.SysReturn{500, "", nil})
  509. }
  510. }
  511. // _FindPermissions
  512. // @Title _FindPermissions
  513. // @Description 查找用户权限
  514. // @Success 200 {object} Account
  515. // @Failure 403 :id is empty
  516. func System_FindPermissions(c *entitys.CtrlContext) {
  517. ret := __none_func_system__()
  518. if ret {
  519. c.Ctx.JSON(200, sysmodel.SysReturn{200, "", nil})
  520. } else {
  521. c.Ctx.JSON(500, sysmodel.SysReturn{500, "", nil})
  522. }
  523. }
  524. // _AddMenu
  525. // @Title _AddMenu
  526. // @Description 添加菜单
  527. // @Param string false "菜单"
  528. // @Success 200 {object} Account
  529. // @Failure 403 :id is empty
  530. func System_AddMenu(c *entitys.CtrlContext) {
  531. var paramObj0 models.SysMenu
  532. c.Ctx.BindJSON(&paramObj0)
  533. tk, _ := c.Ctx.Get("token")
  534. user := tk.(*entitys.Token)
  535. paramObj0.Id = sysutils.NewUUID()
  536. paramObj0.CreateBy = user.UserId
  537. paramObj0.LastUpdateBy = user.UserId
  538. paramObj0.CreateTime = models.NowLocal()
  539. paramObj0.LastUpdateTime = time.Now().UnixNano()
  540. paramObj0.DelFlag = 0
  541. if paramObj0.Parent != "" {
  542. parentNodes := []sysmodel.SysMenu{}
  543. err := c.Db.SqlMapClient("one_sys_menu", paramObj0.Parent).Find(&parentNodes)
  544. if err != nil {
  545. c.Ctx.JSON(500, sysmodel.SysReturn{500, err.Error(), nil})
  546. return
  547. }
  548. paramObj0.Inheritance = fmt.Sprintf("|%s%s", paramObj0.Id, parentNodes[0].Inheritance)
  549. } else {
  550. paramObj0.Inheritance = fmt.Sprintf("|%s|", paramObj0.Id)
  551. }
  552. //_, err := c.LocalSqlMapClient("insert_sys_menu", &paramObj0).Execute()
  553. paramMap, err := sysutils.BeanToMap(&paramObj0)
  554. _, err = c.Db.SqlMapClient("insert_sys_menu", paramMap).Execute()
  555. if err == nil {
  556. c.Ctx.JSON(200, sysmodel.SysReturn{200, "", nil})
  557. } else {
  558. c.Ctx.JSON(500, sysmodel.SysReturn{500, err.Error(), nil})
  559. }
  560. }
  561. // _DelMenu
  562. // @Title _DelMenu
  563. // @Description 删除菜单
  564. // @Param id string false "菜单ID"
  565. // @Success 200 {object} Account
  566. // @Failure 403 :id is empty
  567. func System_DelMenu(c *entitys.CtrlContext) {
  568. type Param struct {
  569. Id string `json:"id"`
  570. }
  571. var params []Param
  572. c.Ctx.BindJSON(&params)
  573. ids := []string{}
  574. for _, param := range params {
  575. ids = append(ids, param.Id)
  576. }
  577. _, err := c.Db.Table(new(models.SysMenu)).In("id", ids).Update(map[string]interface{}{"del_flag": 1})
  578. if err == nil {
  579. c.Ctx.JSON(200, sysmodel.SysReturn{200, "", nil})
  580. } else {
  581. c.Ctx.JSON(500, sysmodel.SysReturn{500, "", nil})
  582. }
  583. }
  584. // _UpdateMenu
  585. // @Title _UpdateMenu
  586. // @Description 更新菜单
  587. // @Param string false "菜单"
  588. // @Success 200 {object} Account
  589. // @Failure 403 :id is empty
  590. func System_UpdateMenu(c *entitys.CtrlContext) {
  591. var paramObj0 models.SysMenu
  592. err := c.Ctx.BindJSON(&paramObj0)
  593. tk, _ := c.Ctx.Get("token")
  594. user := tk.(*entitys.Token)
  595. if paramObj0.Parent != "" {
  596. parentNodes := []sysmodel.SysMenu{}
  597. err := c.Db.SqlMapClient("one_sys_menu", paramObj0.Parent).Find(&parentNodes)
  598. if err != nil {
  599. c.Ctx.JSON(500, sysmodel.SysReturn{500, err.Error(), nil})
  600. return
  601. }
  602. paramObj0.Inheritance = fmt.Sprintf("|%s%s", paramObj0.Id, parentNodes[0].Inheritance)
  603. } else {
  604. paramObj0.Inheritance = fmt.Sprintf("|%s|", paramObj0.Id)
  605. }
  606. paramObj0.LastUpdateBy = user.UserId
  607. paramObj0.LastUpdateTime = time.Now().UnixNano()
  608. paramMap, err := sysutils.BeanToMap(&paramObj0)
  609. _, err = c.Db.SqlMapClient("update_sys_menu", paramMap).Execute()
  610. if err == nil {
  611. c.Ctx.JSON(200, sysmodel.SysReturn{200, "", nil})
  612. } else {
  613. c.Ctx.JSON(500, sysmodel.SysReturn{500, err.Error(), nil})
  614. }
  615. }
  616. // _AddOrg
  617. // @Title _AddOrg
  618. // @Description 添加组织
  619. // @Param name string false "组织名称"
  620. // @Param domain string false "域"
  621. // @Param parent string false "父ID"
  622. // @Success 200 {object} Account
  623. // @Failure 403 :id is empty
  624. func System_AddOrg(c *entitys.CtrlContext) {
  625. var paramObj0 models.SysOrg
  626. c.Ctx.BindJSON(&paramObj0)
  627. tk, _ := c.Ctx.Get("token")
  628. user := tk.(*entitys.Token)
  629. paramObj0.Id = sysutils.NewUUID()
  630. paramObj0.CreateBy = user.UserId
  631. paramObj0.LastUpdateBy = user.UserId
  632. paramObj0.CreateTime = models.NowLocal()
  633. paramObj0.LastUpdateTime = time.Now().UnixNano()
  634. paramObj0.DelFlag = 0
  635. if paramObj0.Parent != "" {
  636. parentNodes := []sysmodel.SysOrg{}
  637. err := c.Db.SqlMapClient("one_sys_org", paramObj0.Parent).Find(&parentNodes)
  638. if err != nil {
  639. c.Ctx.JSON(500, sysmodel.SysReturn{500, err.Error(), nil})
  640. return
  641. }
  642. paramObj0.Inheritance = fmt.Sprintf("|%s%s", paramObj0.Id, parentNodes[0].Inheritance)
  643. } else {
  644. paramObj0.Inheritance = fmt.Sprintf("|%s|", paramObj0.Id)
  645. }
  646. //_, err := c.LocalSqlMapClient("insert_sys_org", &paramObj0).Execute()
  647. paramMap, err := sysutils.BeanToMap(&paramObj0)
  648. _, err = c.Db.SqlMapClient("insert_sys_org", paramMap).Execute()
  649. if err == nil {
  650. c.Ctx.JSON(200, sysmodel.SysReturn{200, "", nil})
  651. } else {
  652. c.Ctx.JSON(500, sysmodel.SysReturn{500, err.Error(), nil})
  653. }
  654. }
  655. // _DelOrg
  656. // @Title _DelOrg
  657. // @Description 删除组织
  658. // @Param id string array false "用户ID"
  659. // @Success 200 {object} Account
  660. // @Failure 403 :id is empty
  661. func System_DelOrg(c *entitys.CtrlContext) {
  662. type Param struct {
  663. Id string `json:"id"`
  664. }
  665. var params []Param
  666. c.Ctx.BindJSON(&params)
  667. ids := []string{}
  668. for _, param := range params {
  669. ids = append(ids, param.Id)
  670. }
  671. _, err := c.Db.Table(new(models.SysOrg)).In("id", ids).Update(map[string]interface{}{"del_flag": 1})
  672. if err == nil {
  673. c.Ctx.JSON(200, sysmodel.SysReturn{200, "", nil})
  674. } else {
  675. c.Ctx.JSON(500, sysmodel.SysReturn{500, err.Error(), nil})
  676. }
  677. }
  678. // _UpdateOrg
  679. // @Title _UpdateOrg
  680. // @Description 修改组织
  681. // @Param name string false "组织名称"
  682. // @Param domain string false "域"
  683. // @Param parent string false "父ID"
  684. // @Success 200 {object} Account
  685. // @Failure 403 :id is empty
  686. func System_UpdateOrg(c *entitys.CtrlContext) {
  687. //name := c.Ctx.Query("name")
  688. //domain := c.Ctx.Query("domain")
  689. //parent := c.Ctx.Query("parent")
  690. var paramObj0 models.SysOrg
  691. err := c.Ctx.BindJSON(&paramObj0)
  692. tk, _ := c.Ctx.Get("token")
  693. user := tk.(*entitys.Token)
  694. if paramObj0.Parent != "" {
  695. parentNodes := []sysmodel.SysOrg{}
  696. err := c.Db.SqlMapClient("one_sys_org", paramObj0.Parent).Find(&parentNodes)
  697. if err != nil {
  698. c.Ctx.JSON(500, sysmodel.SysReturn{500, err.Error(), nil})
  699. return
  700. }
  701. paramObj0.Inheritance = fmt.Sprintf("|%s%s", paramObj0.Id, parentNodes[0].Inheritance)
  702. } else {
  703. paramObj0.Inheritance = fmt.Sprintf("|%s|", paramObj0.Id)
  704. }
  705. paramObj0.LastUpdateBy = user.UserId
  706. paramObj0.LastUpdateTime = time.Now().UnixNano()
  707. paramMap, err := sysutils.BeanToMap(&paramObj0)
  708. _, err = c.Db.SqlMapClient("update_sys_org", paramMap).Execute()
  709. if err == nil {
  710. c.Ctx.JSON(200, sysmodel.SysReturn{200, "", nil})
  711. } else {
  712. c.Ctx.JSON(500, sysmodel.SysReturn{500, err.Error(), nil})
  713. }
  714. }
  715. // _GetOrgByUserid
  716. // @Title _GetOrgByUserid
  717. // @Description 根据用户id获取用户组织
  718. // @Param user_id string false "用户id"
  719. // @Success 200 {object} Account
  720. // @Failure 403 :id is empty
  721. func System_GetOrgByUserid(c *entitys.CtrlContext) {
  722. user_id := c.Ctx.Query("user_id")
  723. var org sysmodel.SysOrg
  724. err := c.Db.SqlMapClient("get_org_by_userid", user_id).Find(&org)
  725. if err == nil {
  726. c.Ctx.JSON(200, sysmodel.SysReturn{200, "", org})
  727. } else {
  728. c.Ctx.JSON(500, sysmodel.SysReturn{500, err.Error(), nil})
  729. }
  730. }
  731. // _AddDomain
  732. // @Title _AddDomain
  733. // @Description 添加域
  734. // @Param false "域"
  735. // @Success 200 {object} Account
  736. // @Failure 403 :id is empty
  737. func System_AddDomain(c *entitys.CtrlContext) {
  738. var paramObj0 models.SysDomain
  739. c.Ctx.BindJSON(&paramObj0)
  740. ////1、测试连接串
  741. //db, err := xorm.NewEngine("mysql", paramObj0.DataSource)
  742. //if err == nil {
  743. // //engine.initOrmEngine(db, "mysql")
  744. // //c.BusinessOrmEngine[v.Domain] = db
  745. //}
  746. tk, _ := c.Ctx.Get("token")
  747. user := tk.(*entitys.Token)
  748. paramObj0.Id = sysutils.NewUUID()
  749. paramObj0.CreateBy = user.UserId
  750. paramObj0.LastUpdateBy = user.UserId
  751. paramObj0.CreateTime = sysmodel.NowLocal()
  752. paramObj0.LastUpdateTime = time.Now().UnixNano()
  753. paramObj0.DelFlag = 0
  754. paramMap, err := sysutils.BeanToMap(&paramObj0)
  755. if err != nil {
  756. c.Ctx.JSON(500, sysmodel.SysReturn{500, err.Error(), nil})
  757. return
  758. }
  759. _, err = c.Db.SqlMapClient("insert_sys_domain", paramMap).Execute()
  760. if err == nil {
  761. //添加数据库基本用户权限数据
  762. ret := c.App.AddBusinessDb(paramObj0.Id, "admin@"+paramObj0.Domain, paramObj0.Domain, paramObj0.DataSource, true)
  763. if ret {
  764. c.Ctx.JSON(200, sysmodel.SysReturn{200, "", paramObj0.Id})
  765. } else {
  766. c.Ctx.JSON(500, sysmodel.SysReturn{500, "数据库初始化错误。", nil})
  767. }
  768. } else {
  769. c.Ctx.JSON(500, sysmodel.SysReturn{500, err.Error(), nil})
  770. }
  771. }
  772. // _DelDomain
  773. // @Title _DelDomain
  774. // @Description 删除域
  775. // @Param id string false "域ID"
  776. // @Success 200 {object} Account
  777. // @Failure 403 :id is empty
  778. func System_DelDomain(c *entitys.CtrlContext) {
  779. type Param struct {
  780. Id string `json:"id"`
  781. }
  782. var params []Param
  783. c.Ctx.BindJSON(&params)
  784. ids := []string{}
  785. for _, param := range params {
  786. ids = append(ids, param.Id)
  787. }
  788. _, err := c.Db.Table(new(models.SysDomain)).In("id", ids).Update(map[string]interface{}{"del_flag": 1})
  789. if err != nil {
  790. c.Ctx.JSON(200, sysmodel.SysReturn{500, err.Error(), nil})
  791. return
  792. }
  793. ret := __none_func_system__()
  794. if ret {
  795. c.Ctx.JSON(200, sysmodel.SysReturn{200, "", nil})
  796. } else {
  797. c.Ctx.JSON(200, sysmodel.SysReturn{500, "", nil})
  798. }
  799. }
  800. // _UpdateDomain
  801. // @Title _UpdateDomain
  802. // @Description 修改域
  803. // @Param false "域"
  804. // @Success 200 {object} Account
  805. // @Failure 403 :id is empty
  806. func System_UpdateDomain(c *entitys.CtrlContext) {
  807. var paramObj0 models.SysDomain
  808. c.Ctx.BindJSON(&paramObj0)
  809. tk, _ := c.Ctx.Get("token")
  810. user := tk.(*entitys.Token)
  811. paramObj0.LastUpdateTime = time.Now().UnixNano()
  812. paramObj0.LastUpdateBy = user.UserId
  813. paramMap, err := sysutils.BeanToMap(&paramObj0)
  814. if err != nil {
  815. c.Ctx.JSON(500, sysmodel.SysReturn{500, err.Error(), nil})
  816. return
  817. }
  818. _, err = c.Db.SqlMapClient("update_sys_domain", paramMap).Execute()
  819. if err == nil {
  820. //添加数据库基本用户权限数据
  821. ret := c.App.AddBusinessDb(paramObj0.Id, "admin@"+paramObj0.Domain, paramObj0.Domain, paramObj0.DataSource, true)
  822. if ret {
  823. c.Ctx.JSON(200, sysmodel.SysReturn{200, "", paramObj0.Id})
  824. } else {
  825. c.Ctx.JSON(500, sysmodel.SysReturn{500, "数据库初始化错误。", nil})
  826. }
  827. } else {
  828. c.Ctx.JSON(500, sysmodel.SysReturn{500, err.Error(), nil})
  829. }
  830. }
  831. // _GetDomain
  832. // @Title _GetDomain
  833. // @Description 根据domain获取域
  834. // @Param domain string false "域"
  835. // @Success 200 {object} Account
  836. // @Failure 403 :id is empty
  837. func System_GetDomain(c *entitys.CtrlContext) {
  838. domain := c.Ctx.Query("domain")
  839. var domainObj sysmodel.SysDomain
  840. _, err := c.PlatformDbEngine.Where("domain = ?", domain).Get(&domainObj)
  841. if err == nil {
  842. c.Ctx.JSON(200, sysmodel.SysReturn{200, "", domainObj})
  843. } else {
  844. c.Ctx.JSON(500, sysmodel.SysReturn{500, err.Error(), nil})
  845. }
  846. }
  847. // _AddDomainMenu
  848. // @Title _AddDomainMenu
  849. // @Description 域添加菜单
  850. // @Param false "添加域菜单bean"
  851. // @Success 200 {object} Account
  852. // @Failure 403 :id is empty
  853. func System_AddDomainMenu(c *entitys.CtrlContext) {
  854. var paramObj0 struct {
  855. //域名ID
  856. DomainId string `json:"domain_id"`
  857. //菜单
  858. Menus []sysmodel.SysMenu `json:"menus"`
  859. // type
  860. Type int `json:"type"`
  861. }
  862. err := c.Ctx.BindJSON(&paramObj0)
  863. if err != nil {
  864. c.Ctx.JSON(500, sysmodel.SysReturn{500, "BindJSON error: " + err.Error(), nil})
  865. return
  866. }
  867. var domain sysmodel.SysDomain
  868. param := map[string]interface{}{"id": paramObj0.DomainId}
  869. _, err = c.Db.SqlMapClient("selectone_sys_domain", &param).Get(&domain)
  870. if err != nil {
  871. c.Ctx.JSON(500, sysmodel.SysReturn{500, "not find domain error: " + err.Error(), nil})
  872. return
  873. }
  874. var menuIds = make([]string, len(paramObj0.Menus))
  875. for i := range paramObj0.Menus {
  876. menuIds[i] = paramObj0.Menus[i].Id
  877. }
  878. var menus []sysmodel.SysMenu
  879. err = c.Db.In("id", menuIds).Find(&menus)
  880. if err != nil {
  881. c.Ctx.JSON(500, sysmodel.SysReturn{500, "find menu error: " + err.Error(), nil})
  882. return
  883. }
  884. for i := range menus {
  885. for j := range paramObj0.Menus {
  886. if menus[i].Id == paramObj0.Menus[j].Id {
  887. menus[i].Name = paramObj0.Menus[j].Name
  888. break
  889. }
  890. }
  891. }
  892. session := c.App.GetBusinessDb(domain.Domain).NewSession()
  893. defer session.Close()
  894. session.Begin()
  895. deleteSqlMapKey := ""
  896. if paramObj0.Type >= 0 {
  897. deleteSqlMapKey = "delete_backend_sys_menu"
  898. } else {
  899. deleteSqlMapKey = "delete_app_sys_menu"
  900. }
  901. _, err = c.App.GetBusinessDb(domain.Domain).SqlMapClient(deleteSqlMapKey).Execute()
  902. if err != nil {
  903. session.Rollback()
  904. c.Ctx.JSON(500, sysmodel.SysReturn{500, "Insert menu error: " + err.Error(), nil})
  905. return
  906. }
  907. if len(paramObj0.Menus) <= 0 {
  908. session.Commit()
  909. c.Ctx.JSON(200, sysmodel.SysReturn{200, "the menus is empty", nil})
  910. return
  911. }
  912. _, err = c.App.GetBusinessDb(domain.Domain).Insert(&paramObj0.Menus)
  913. if err != nil {
  914. session.Rollback()
  915. c.Ctx.JSON(500, sysmodel.SysReturn{500, "Insert menu error: " + err.Error(), nil})
  916. return
  917. }
  918. session.Commit()
  919. ret := __none_func_system__(paramObj0)
  920. if ret {
  921. c.Ctx.JSON(200, sysmodel.SysReturn{200, "", nil})
  922. } else {
  923. c.Ctx.JSON(500, sysmodel.SysReturn{500, "", nil})
  924. }
  925. }
  926. // _GetDomainMenuTree
  927. // @Title _GetDomainMenuTree
  928. // @Description 域添加菜单
  929. // @Param domain_id string false "域id"
  930. // @Success 200 {object} Account
  931. // @Failure 403 :id is empty
  932. func System_GetDomainMenuTree(c *entitys.CtrlContext) {
  933. domain_id := c.Ctx.Query("domain_id")
  934. _type := c.Ctx.DefaultQuery("type", "")
  935. type_op := c.Ctx.DefaultQuery("type_op", "")
  936. op := template.HTML(type_op)
  937. var domain sysmodel.SysDomain
  938. param := map[string]interface{}{"id": domain_id, "type": _type, "type_op": op}
  939. _, err := c.Db.SqlMapClient("selectone_sys_domain", &param).Get(&domain)
  940. if err != nil {
  941. c.Ctx.JSON(500, sysmodel.SysReturn{500, "not find domain error: " + err.Error(), nil})
  942. return
  943. }
  944. paramMap := map[string]interface{}{"user_id": "", "type": _type, "type_op": op, "name": "", "hidden": ""}
  945. domainMenus, err := c.App.GetBusinessDb(domain.Domain).SqlTemplateClient("system_get_menu_tree.tpl", &paramMap).Query().List()
  946. if err != nil {
  947. c.Ctx.JSON(500, sysmodel.SysReturn{500, "get domain_menu tree: " + err.Error(), nil})
  948. return
  949. }
  950. domainTree, err := sysutils.BuildTree("", domainMenus)
  951. sysMenus, err := c.Db.SqlTemplateClient("system_get_menu_tree.tpl", &paramMap).Query().List()
  952. if err != nil {
  953. c.Ctx.JSON(500, sysmodel.SysReturn{500, "get sys_menu tree: " + err.Error(), nil})
  954. return
  955. }
  956. var sysMenusMap map[string]map[string]interface{}
  957. sysMenusMap = make(map[string]map[string]interface{}, 0)
  958. for _, menu := range sysMenus {
  959. sysMenusMap[menu["id"].(string)] = menu
  960. }
  961. //剔除域已存在的菜单
  962. //for _, domainMenu := range domainMenus {
  963. // delete(sysMenusMap, domainMenu["id"].(string))
  964. //}
  965. var sysMenuRest []map[string]interface{}
  966. for _, menu := range sysMenusMap {
  967. sysMenuRest = append(sysMenuRest, menu)
  968. }
  969. sysTree, err := sysutils.BuildTree("", sysMenuRest)
  970. ret := __none_func_system__(domain_id)
  971. if ret {
  972. c.Ctx.JSON(200, sysmodel.SysReturn{200, "", map[string]interface{}{"sys_tree": sysTree, "domain_tree": domainTree}})
  973. } else {
  974. c.Ctx.JSON(500, sysmodel.SysReturn{500, "", nil})
  975. }
  976. }
  977. // _GetUserMenuTree
  978. // @Title _GetUserMenuTree
  979. // @Description 获取用户权限菜单
  980. // @Param user_id string false "用户id"
  981. // @Success 200 {object} Account
  982. // @Failure 403 :id is empty
  983. func System_GetRoleMenuTree(c *entitys.CtrlContext) {
  984. role_id := c.Ctx.Query("role_id")
  985. //paramMap := map[string]interface{}{"role_id": role_id}
  986. //sysMenu, err := c.Db.SqlMapClient("get_role_no_have_menu_tree", &paramMap).Query().List()
  987. //if err != nil {
  988. // c.Ctx.JSON(500, sysmodel.SysReturn{500, err.Error(), nil})
  989. // return
  990. //}
  991. //sysTree, err := sysutils.BuildTree("", sysMenu)
  992. op := template.HTML(">=")
  993. paramMap := map[string]interface{}{"user_id": "", "sort": "name", "type": 0, "type_op": op, "hidden": 0}
  994. sysTree, err := sysutils.TreeSearch(c.Db, "system", "get_menu_tree", "sys_menu", paramMap)
  995. if err != nil {
  996. c.Ctx.JSON(500, sysmodel.SysReturn{500, err.Error(), nil})
  997. return
  998. }
  999. paramMap2 := map[string]interface{}{"role_id": role_id}
  1000. //roleTree, err := sysutils.TreeSearch(c.Db, "system", "get_role_menu_tree", "sys_menu", paramMap2)
  1001. roleMenu, err := c.Db.SqlMapClient("get_role_menu_tree", &paramMap2).Query().List()
  1002. if err != nil {
  1003. c.Ctx.JSON(500, sysmodel.SysReturn{500, err.Error(), nil})
  1004. return
  1005. }
  1006. roleTree, err := sysutils.BuildTree("", roleMenu)
  1007. ret := __none_func_system__(role_id)
  1008. if ret {
  1009. c.Ctx.JSON(200, sysmodel.SysReturn{200, "", map[string]interface{}{"sys_tree": sysTree, "role_tree": roleTree}})
  1010. } else {
  1011. c.Ctx.JSON(500, sysmodel.SysReturn{500, "", nil})
  1012. }
  1013. }
  1014. // _AddRoleMenu
  1015. // @Title _AddRoleMenu
  1016. // @Description 添加角色菜单
  1017. // @Param menu_id false "菜单id"
  1018. // @Param role_id string false "角色id"
  1019. // @Success 200 {object} Account
  1020. // @Failure 403 :id is empty
  1021. func System_AddRoleMenu(c *entitys.CtrlContext) {
  1022. tk, _ := c.Ctx.Get("token")
  1023. user := tk.(*entitys.Token)
  1024. var paramObj0 struct {
  1025. MenuIds []string `json:"menu_ids"`
  1026. RoleId string `json:"role_id"`
  1027. }
  1028. c.Ctx.BindJSON(&paramObj0)
  1029. session := c.Db.NewSession()
  1030. defer session.Close()
  1031. session.Begin()
  1032. _, err := session.SqlMapClient("del_role_menu", paramObj0.RoleId).Execute()
  1033. if err != nil {
  1034. session.Rollback()
  1035. c.Ctx.JSON(500, sysmodel.SysReturn{500, err.Error(), nil})
  1036. return
  1037. }
  1038. var roleMenus []*sysmodel.SysRoleMenu
  1039. for _, menu := range paramObj0.MenuIds {
  1040. roleMenu := &sysmodel.SysRoleMenu{}
  1041. roleMenu.Id = sysutils.NewUUID()
  1042. roleMenu.MenuId = menu
  1043. roleMenu.RoleId = paramObj0.RoleId
  1044. roleMenu.CreateBy = user.UserId
  1045. roleMenu.CreateTime = sysmodel.NowLocal()
  1046. roleMenus = append(roleMenus, roleMenu)
  1047. }
  1048. _, err = session.InsertMulti(&roleMenus)
  1049. if err != nil {
  1050. session.Rollback()
  1051. c.Ctx.JSON(500, sysmodel.SysReturn{500, err.Error(), nil})
  1052. return
  1053. }
  1054. session.Commit()
  1055. ret := __none_func_system__(paramObj0)
  1056. if ret {
  1057. c.Ctx.JSON(200, sysmodel.SysReturn{200, "", nil})
  1058. } else {
  1059. c.Ctx.JSON(500, sysmodel.SysReturn{500, "", nil})
  1060. }
  1061. }
  1062. // _FindAreaPage
  1063. // @Title _FindAreaPage
  1064. // @Description 获取区域管理分页数
  1065. // @Success 200 {object} Account
  1066. // @Failure 403 :id is empty
  1067. func System_FindAreaPage(c *entitys.CtrlContext) {
  1068. page, _ := strconv.Atoi(c.Ctx.DefaultQuery("page", "1"))
  1069. rows, _ := strconv.Atoi(c.Ctx.DefaultQuery("rows", "10"))
  1070. var paramMap = make(map[string]interface{})
  1071. paramMap["page"] = page
  1072. paramMap["rows"] = rows
  1073. paramMap["del_flag"] = c.Ctx.Query("del_flag")
  1074. paramMap["id"] = c.Ctx.Query("id")
  1075. paramMap["name"] = c.Ctx.Query("name")
  1076. paramMap["parent"] = c.Ctx.Query("parent")
  1077. paramMap["inheritance"] = c.Ctx.Query("inheritance")
  1078. paramMap["temp_id"] = c.Ctx.Query("temp_id")
  1079. paramMap["manager"] = c.Ctx.Query("manager")
  1080. paramMap["org_id"] = c.Ctx.Query("org_id")
  1081. paramMap["org_name"] = c.Ctx.Query("org_name")
  1082. paramMap["org_inheritance"] = c.Ctx.Query("org_inheritance")
  1083. paramMap["manager_name"] = c.Ctx.Query("manager_name")
  1084. result, err := sysutils.PageSearch(c.Db, "system", "find_area_page", "sys_user", paramMap)
  1085. if err == nil {
  1086. c.Ctx.JSON(200, sysmodel.SysReturn{200, "", result})
  1087. } else {
  1088. c.Ctx.JSON(500, sysmodel.SysReturn{500, err.Error(), nil})
  1089. }
  1090. }
  1091. // _AddArea
  1092. // @Title _AddArea
  1093. // @Description 添加区域
  1094. // @Param name string false "区域名称"
  1095. // @Param parent string false "父节点"
  1096. // @Param inheritance string false "继承关系"
  1097. // @Param org_id string false "组织ID"
  1098. // @Param temp_id string false "模板ID"
  1099. // @Param temp_value string false "模板内容"
  1100. // @Param manager string false "负责人"
  1101. // @Success 200 {object} Account
  1102. // @Failure 403 :id is empty
  1103. func System_AddArea(c *entitys.CtrlContext) {
  1104. var err error
  1105. var bean sysmodel.SysArea
  1106. if err = c.Ctx.BindJSON(&bean); err != nil {
  1107. c.Ctx.JSON(200, sysmodel.SysReturn{500, err.Error(), nil})
  1108. return
  1109. }
  1110. user_id := c.Ctx.GetString("user_id")
  1111. bean.Id = sysutils.NewUUID()
  1112. bean.DelFlag = 0
  1113. bean.CreateBy = user_id
  1114. bean.LastUpdateBy = user_id
  1115. bean.CreateTime = sysmodel.NowLocal()
  1116. bean.LastUpdateTime = time.Now().UnixNano()
  1117. if bean.Parent != "" {
  1118. parentNodes := sysmodel.SysArea{}
  1119. _, err := c.Db.SqlMapClient("selectone_sys_area", map[string]interface{}{"id": bean.Parent}).Get(&parentNodes)
  1120. if err != nil {
  1121. c.Ctx.JSON(500, sysmodel.SysReturn{500, err.Error(), nil})
  1122. return
  1123. }
  1124. bean.Inheritance = fmt.Sprintf("|%s%s", bean.Id, parentNodes.Inheritance)
  1125. } else {
  1126. bean.Inheritance = fmt.Sprintf("|%s|", bean.Id)
  1127. }
  1128. _, err = c.Db.InsertOne(&bean)
  1129. if err == nil {
  1130. c.Ctx.JSON(200, sysmodel.SysReturn{200, "", bean.Id})
  1131. } else {
  1132. c.Ctx.JSON(200, sysmodel.SysReturn{500, err.Error(), nil})
  1133. }
  1134. }
  1135. // _DelArea
  1136. // @Title _DelArea
  1137. // @Description 删除区域
  1138. // @Param ids string false "用户ID"
  1139. // @Success 200 {object} Account
  1140. // @Failure 403 :id is empty
  1141. func System_DelArea(c *entitys.CtrlContext) {
  1142. var err error
  1143. var bean = &models.SysArea{}
  1144. idArr := make([]string, 0)
  1145. if ids := c.Ctx.Query("ids"); ids == "" {
  1146. err = c.Ctx.BindJSON(&idArr)
  1147. if err != nil || len(idArr) <= 0 {
  1148. c.Ctx.JSON(500, sysmodel.SysReturn{500, "ids is empty", nil})
  1149. return
  1150. }
  1151. } else {
  1152. idArr = strings.Split(ids, ",")
  1153. }
  1154. session := c.Db.NewSession()
  1155. defer session.Close()
  1156. if err := session.Begin(); err != nil {
  1157. c.Ctx.JSON(500, sysmodel.SysReturn{500, err.Error(), nil})
  1158. return
  1159. }
  1160. _, err = session.Table(bean).Where("del_flag=1").In("id", idArr).Delete(bean)
  1161. if err == nil {
  1162. _, err = session.Table(bean).In("id", idArr).Update(map[string]interface{}{"del_flag": 1})
  1163. }
  1164. if err == nil {
  1165. c.Ctx.JSON(200, sysmodel.SysReturn{200, "", nil})
  1166. } else {
  1167. c.Ctx.JSON(500, sysmodel.SysReturn{500, err.Error(), nil})
  1168. }
  1169. }
  1170. // _RecoverArea
  1171. // @Title _RecoverArea
  1172. // @Description 恢复区域
  1173. // @Param ids string false "区域ID"
  1174. // @Success 200 {object} Account
  1175. // @Failure 403 :id is empty
  1176. func System_RecoverArea(c *entitys.CtrlContext) {
  1177. var err error
  1178. var bean = &models.SysArea{}
  1179. idArr := make([]string, 0)
  1180. if ids := c.Ctx.Query("ids"); ids == "" {
  1181. err = c.Ctx.BindJSON(&idArr)
  1182. if err != nil || len(idArr) <= 0 {
  1183. c.Ctx.JSON(500, sysmodel.SysReturn{500, "ids is empty", nil})
  1184. return
  1185. }
  1186. } else {
  1187. idArr = strings.Split(ids, ",")
  1188. }
  1189. _, err = c.Db.Table(bean).In("id", idArr).Update(map[string]interface{}{"del_flag": 0})
  1190. if err == nil {
  1191. c.Ctx.JSON(200, sysmodel.SysReturn{200, "", nil})
  1192. } else {
  1193. c.Ctx.JSON(500, sysmodel.SysReturn{500, err.Error(), nil})
  1194. }
  1195. }
  1196. // _UpdateArea
  1197. // @Title _UpdateArea
  1198. // @Description 修改区域
  1199. // @Param name string false "区域名称"
  1200. // @Param parent string false "父节点"
  1201. // @Param inheritance string false "继承关系"
  1202. // @Param org_id string false "组织ID"
  1203. // @Param temp_id string false "模板ID"
  1204. // @Param temp_value string false "模板内容"
  1205. // @Param manager string false "负责人"
  1206. // @Success 200 {object} Account
  1207. // @Failure 403 :id is empty
  1208. func System_UpdateArea(c *entitys.CtrlContext) {
  1209. var err error
  1210. var bean sysmodel.SysArea
  1211. if err = c.Ctx.BindJSON(&bean); err != nil {
  1212. c.Ctx.JSON(200, sysmodel.SysReturn{500, err.Error(), nil})
  1213. return
  1214. }
  1215. user_id := c.Ctx.GetString("user_id")
  1216. exist, err := c.Db.SqlMapClient("selectone_sys_area", map[string]interface{}{"id": bean.Id}).Exist()
  1217. if !exist && err == nil {
  1218. err = errors.New("record does not exist")
  1219. }
  1220. if err != nil {
  1221. c.Ctx.JSON(500, sysmodel.SysReturn{500, err.Error(), nil})
  1222. }
  1223. bean.LastUpdateBy = user_id
  1224. bean.LastUpdateTime = time.Now().UnixNano()
  1225. if bean.Parent != "" {
  1226. parentNodes := sysmodel.SysArea{}
  1227. _, err := c.Db.SqlMapClient("selectone_sys_area", map[string]interface{}{"id": bean.Parent}).Get(&parentNodes)
  1228. if err != nil {
  1229. c.Ctx.JSON(500, sysmodel.SysReturn{500, err.Error(), nil})
  1230. return
  1231. }
  1232. if parentNodes.Inheritance == "" {
  1233. parentNodes.Inheritance = "|"
  1234. }
  1235. bean.Inheritance = fmt.Sprintf("|%s%s", bean.Id, parentNodes.Inheritance)
  1236. } else {
  1237. bean.Inheritance = fmt.Sprintf("|%s|", bean.Id)
  1238. }
  1239. _, err = c.Db.AllCols().ID(bean.Id).Update(&bean)
  1240. if err == nil {
  1241. c.Ctx.JSON(200, sysmodel.SysReturn{200, "", bean.Id})
  1242. } else {
  1243. c.Ctx.JSON(200, sysmodel.SysReturn{500, err.Error(), nil})
  1244. }
  1245. }
  1246. // _GetArea
  1247. // @Title _GetArea
  1248. // @Description 根据区域ID获取区域信息
  1249. // @Param id string false "区域ID"
  1250. // @Success 200 {object} Account
  1251. // @Failure 403 :id is empty
  1252. func System_GetArea(c *entitys.CtrlContext) {
  1253. id := c.Ctx.Query("id")
  1254. var area sysmodel.SysArea
  1255. exist, err := c.Db.SqlMapClient("selectone_sys_area", map[string]interface{}{"id": id}).Get(&area)
  1256. if !exist && err == nil {
  1257. err = errors.New("record does not exist")
  1258. }
  1259. if err == nil {
  1260. c.Ctx.JSON(200, sysmodel.SysReturn{200, "", area})
  1261. } else {
  1262. c.Ctx.JSON(500, sysmodel.SysReturn{500, err.Error(), nil})
  1263. }
  1264. }
  1265. // _GetAreaTree
  1266. // @Title _GetAreaTree
  1267. // @Description 获取区域管理树
  1268. // @Success 200 {object} Account
  1269. // @Failure 403 :id is empty
  1270. func System_GetAreaTree(c *entitys.CtrlContext) {
  1271. paramMap_i_t := map[string]interface{}{"sort": "name"}
  1272. result, err := sysutils.TreeSearch(c.Db, "system", "get_area_tree", "sys_area", paramMap_i_t)
  1273. if err == nil {
  1274. c.Ctx.JSON(200, sysmodel.SysReturn{200, "", result})
  1275. } else {
  1276. c.Ctx.JSON(500, sysmodel.SysReturn{500, err.Error(), nil})
  1277. }
  1278. }
  1279. func __none_func_system__(params ...interface{}) bool {
  1280. return true
  1281. }