SystemController.go 26 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019
  1. package partial
  2. import (
  3. "fmt"
  4. "strconv"
  5. "strings"
  6. "time"
  7. //"git.qianqiusoft.com/qianqiusoft/light-apiengine/db"
  8. "git.qianqiusoft.com/qianqiusoft/light-apiengine/entitys"
  9. sysmodel "git.qianqiusoft.com/qianqiusoft/light-apiengine/models"
  10. "git.qianqiusoft.com/qianqiusoft/light-apiengine/utils"
  11. )
  12. //https://www.kancloud.cn/xormplus/xorm/167077
  13. // _Login
  14. // @Title _Login
  15. // @Description 用户登录
  16. // @Param logininfo false "登录信息"
  17. // @Success 200 {object} sysmodel.Account
  18. // @Failure 403 :id is empty
  19. func System_Login(c *entitys.CtrlContext) {
  20. var logininfo sysmodel.LoginInfo
  21. c.Ctx.BindJSON(&logininfo)
  22. __none_func_system__(logininfo)
  23. //fmt.Println(logininfo)
  24. var user sysmodel.SysUser
  25. ret, err := c.Db.SQL(sysmodel.SqlUserLogin, logininfo.Account).Get(&user)
  26. if ret && err == nil {
  27. //TODO check password
  28. timestamp := uint64(time.Now().UnixNano())
  29. md5Pwd := utils.HashPassword(logininfo.Password, "")
  30. //密码错误
  31. if !strings.EqualFold(user.Password, md5Pwd) {
  32. c.Ctx.JSON(200, sysmodel.SysReturn{400, "passowrd incorrect!", nil})
  33. return
  34. }
  35. token := &entitys.Token{}
  36. timestamp_str := strconv.FormatUint(timestamp, 10)
  37. sec_tooken := utils.GenerateToken(logininfo.Account + timestamp_str)
  38. if v := utils.GetGlobalTokenStore().Get(sec_tooken); v == nil {
  39. token.AccessToken = sec_tooken
  40. token.RefreshToken = sec_tooken
  41. token.LoginID = logininfo.Account
  42. token.UserId = user.Id
  43. token.Result = 200
  44. //token.Password = pwd
  45. token.ServerIp = ""
  46. token.Domain = user.Domain
  47. utils.GetGlobalTokenStore().Set(sec_tooken, token)
  48. } else {
  49. token = v
  50. }
  51. data := sysmodel.LoginReturnInfo{}
  52. data.Id = user.Id
  53. data.LoginId = user.LoginId
  54. data.Token = token.AccessToken
  55. data.Type = user.Type
  56. c.Ctx.JSON(200, sysmodel.SysReturn{200, "", data})
  57. } else {
  58. //fmt.Println(err.Error())
  59. c.Ctx.JSON(200, sysmodel.SysReturn{400, "username or passowrd incorrect!", nil})
  60. }
  61. }
  62. // _Logout
  63. // @Title _Logout
  64. // @Description 用户退出
  65. // @Success 200 {object} sysmodel.Account
  66. // @Failure 403 :id is empty
  67. func System_Logout(c *entitys.CtrlContext) {
  68. token := c.Ctx.GetHeader("token")
  69. fmt.Println("delete token: ", token)
  70. utils.GetGlobalTokenStore().Remove(token)
  71. c.Ctx.JSON(200, sysmodel.SysReturn{200, "", nil})
  72. }
  73. // _GetNavTree
  74. // @Title _GetNavTree
  75. // @Description 获取导航菜单
  76. // @Param user string false "用户id"
  77. // @Success 200 {object} models.Account
  78. // @Failure 403 :id is empty
  79. func System_GetNavTree(c *entitys.CtrlContext) {
  80. // set in the login_ware.go
  81. user_id := c.Ctx.GetString("user_id")
  82. var menus []sysmodel.SysMenuTree
  83. if user_id == "187c50a4-caad-4557-80c8-aca81af9f370" {
  84. c.Db.SQL(sysmodel.Selectall_nav_tree_admin).Find(&menus)
  85. } else {
  86. c.Db.SQL(sysmodel.Selectall_nav_tree, user_id).Find(&menus)
  87. }
  88. var menutree []sysmodel.SysMenuTree
  89. finChildrenMenu(&menus, "", nil, &menutree)
  90. for i := 0; i < len(menutree); i++ {
  91. finChildrenMenu(&menus, menutree[i].Id, &menutree[i], &menutree)
  92. }
  93. fmt.Println(menutree)
  94. c.Ctx.JSON(200, sysmodel.SysReturn{200, "", menutree})
  95. }
  96. // _GetMenuTree
  97. // @Title _GetMenuTree
  98. // @Description 获取系统菜单
  99. // @Param user string false "用户id"
  100. // @Success 200 {object} sysmodel.Account
  101. // @Failure 403 :id is empty
  102. func System_GetMenuTree(c *entitys.CtrlContext) {
  103. user := c.Ctx.Param(":user")
  104. ret := __none_func_system__(user)
  105. var menus []sysmodel.SysMenuTree
  106. c.Db.SQL(sysmodel.Selectall_sys_menu).Find(&menus)
  107. var menutree []sysmodel.SysMenuTree
  108. finChildrenMenu(&menus, "", nil, &menutree)
  109. fmt.Println(menutree)
  110. for i := 0; i < len(menutree); i++ {
  111. finChildrenMenu(&menus, menutree[i].Id, &menutree[i], &menutree)
  112. }
  113. if ret {
  114. c.Ctx.JSON(200, sysmodel.SysReturn{200, "", menutree})
  115. }
  116. }
  117. // _GetOrgTree
  118. // @Title _GetOrgTree
  119. // @Description 获取组织架构树
  120. // @Success 200 {object} sysmodel.Account
  121. // @Failure 403 :id is empty
  122. func System_GetOrgTree(c *entitys.CtrlContext) {
  123. ret := __none_func_system__()
  124. var orgs []sysmodel.SysOrgTree
  125. c.Db.SQL(sysmodel.Selectall_sys_org).Find(&orgs)
  126. var orgtree []sysmodel.SysOrgTree
  127. finChildrenOrg(&orgs, "", nil, &orgtree)
  128. for i := 0; i < len(orgtree); i++ {
  129. finChildrenOrg(&orgs, orgtree[i].Id, &orgtree[i], &orgtree)
  130. }
  131. if ret {
  132. c.Ctx.JSON(200, sysmodel.SysReturn{200, "", orgtree})
  133. } else {
  134. c.Ctx.JSON(200, sysmodel.SysReturn{500, "", nil})
  135. }
  136. }
  137. func finChildrenOrg(menus *[]sysmodel.SysOrgTree, parent string, parent_menu *sysmodel.SysOrgTree, menutree *[]sysmodel.SysOrgTree) {
  138. for _, m := range *menus {
  139. if m.Parent == parent {
  140. if parent_menu == nil {
  141. *menutree = append(*menutree, m)
  142. //finChildrenMenu(menus, m.Id, menutree[len(*menutree)-1], menutree)
  143. } else {
  144. parent_menu.Children = append(parent_menu.Children, m)
  145. finChildrenOrg(menus, m.Id, &parent_menu.Children[len(parent_menu.Children)-1], menutree)
  146. }
  147. }
  148. }
  149. }
  150. func finChildrenMenu(menus *[]sysmodel.SysMenuTree, parent string, parent_menu *sysmodel.SysMenuTree, menutree *[]sysmodel.SysMenuTree) {
  151. for _, m := range *menus {
  152. if m.Parent == parent {
  153. if parent_menu == nil {
  154. m.Level = 0
  155. m.ParentName = ""
  156. *menutree = append(*menutree, m)
  157. //finChildrenMenu(menus, m.Id, menutree[len(*menutree)-1], menutree)
  158. } else {
  159. m.Level = parent_menu.Level + 1
  160. m.ParentName = parent_menu.Name
  161. parent_menu.Children = append(parent_menu.Children, m)
  162. finChildrenMenu(menus, m.Id, &parent_menu.Children[len(parent_menu.Children)-1], menutree)
  163. }
  164. }
  165. }
  166. }
  167. // _FindUserPage
  168. // @Title _FindUserPage
  169. // @Description 获取用户分布数据
  170. // @Param page false "分页参数"
  171. // @Success 200 {object} sysmodel.Account
  172. // @Failure 403 :id is empty
  173. func System_FindUserPage(c *entitys.CtrlContext) {
  174. var getpageinfo sysmodel.GetPageInfo
  175. c.Ctx.BindJSON(&getpageinfo)
  176. err := __none_func_system__(getpageinfo)
  177. if err {
  178. c.Ctx.JSON(200, sysmodel.SysReturn{200, "", nil})
  179. } else {
  180. c.Ctx.JSON(200, sysmodel.SysReturn{500, "", nil})
  181. }
  182. }
  183. // _AddUser
  184. // @Title _AddUser
  185. // @Description 添加用户
  186. // @Param login_id string false "登录ID"
  187. // @Param password string false "密码"
  188. // @Param org_id string false "组织ID"
  189. // @Param email string false "邮箱"
  190. // @Success 200 {object} models.Account
  191. // @Failure 403 :id is empty
  192. func System_AddUser(c *entitys.CtrlContext) {
  193. var user sysmodel.SysUser
  194. err := c.Ctx.ShouldBindJSON(&user)
  195. if err != nil {
  196. c.Ctx.JSON(500, sysmodel.SysReturn{200, "c.Ctx.ShouldBindJSON error " + err.Error(), nil})
  197. return
  198. }
  199. fmt.Println(user.LoginId, "-----add user-----", user.Password, " --- ", user.OrgId)
  200. //查找login_id是否存在
  201. oldUser := new(sysmodel.SysUser)
  202. count, _ := c.Db.SQL("select * from sys_user").Where("login_id = ?", user.LoginId).Count(&oldUser)
  203. if count > 1 {
  204. if oldUser.DelFlag == 1 {
  205. oldUser.DelFlag = 0
  206. _, err := c.Db.Id("id").Cols("del_flag").Update(&oldUser)
  207. if err != nil {
  208. c.Ctx.JSON(500, sysmodel.SysReturn{500, "login_id exit, update err: " + err.Error(), nil})
  209. }
  210. return
  211. } else {
  212. c.Ctx.JSON(200, sysmodel.SysReturn{200, "login_id exit", nil})
  213. return
  214. }
  215. }
  216. user_id := c.Ctx.GetString("user_id")
  217. user.Id = utils.NewUUID()
  218. //when name is null
  219. if user.Name == "" {
  220. user.Name = user.LoginId
  221. }
  222. user.CreateTime = time.Now()
  223. user.LastUpdateDate = time.Now()
  224. user.CreateBy = user_id
  225. user.LastUpdateBy = user_id
  226. user.DelFlag = 0
  227. user.Password = utils.HashPassword(user.Password, "")
  228. _, err = c.Db.Insert(&user)
  229. ret := __none_func_system__(user.LoginId, user.Password, user.OrgId, user.Email)
  230. if ret && err == nil {
  231. c.Ctx.JSON(200, sysmodel.SysReturn{200, "", nil})
  232. } else {
  233. c.Ctx.JSON(500, sysmodel.SysReturn{500, err.Error(), nil})
  234. }
  235. }
  236. // _DelUser
  237. // @Title _DelUser
  238. // @Description 删除用户
  239. // @Param id string false "用户ID"
  240. // @Success 200 {object} models.Account
  241. // @Failure 403 :id is empty
  242. func System_DelUser(c *entitys.CtrlContext) {
  243. type Param struct {
  244. Id string `json:"id"`
  245. }
  246. var params []Param
  247. c.Ctx.BindJSON(&params)
  248. ids := []string{}
  249. for _, param := range params {
  250. ids = append(ids, param.Id)
  251. }
  252. session := c.Db.NewSession()
  253. defer session.Close()
  254. //_, err := c.Db.Table(new(models.SysUser)).ID(param.Id).Update(map[string]interface{}{"del_flag": 0})
  255. _, err := c.Db.Table(new(sysmodel.SysUser)).In("id", ids).Update(map[string]interface{}{"del_flag": 1})
  256. if err != nil {
  257. session.Rollback()
  258. c.Ctx.JSON(200, sysmodel.SysReturn{500, err.Error(), nil})
  259. return
  260. }
  261. _, err = c.Db.Table(new(sysmodel.SysUserRole)).In("user_id", ids).Update(map[string]interface{}{"del_flag": 1})
  262. if err != nil {
  263. session.Rollback()
  264. c.Ctx.JSON(200, sysmodel.SysReturn{500, err.Error(), nil})
  265. return
  266. }
  267. session.Commit()
  268. ret := __none_func_system__()
  269. if ret {
  270. c.Ctx.JSON(200, sysmodel.SysReturn{200, "", nil})
  271. } else {
  272. c.Ctx.JSON(200, sysmodel.SysReturn{500, "", nil})
  273. }
  274. }
  275. // _UpdateUser
  276. // @Title _UpdateUser
  277. // @Description 修改用户
  278. // @Param login_id string false "登录ID"
  279. // @Param password string false "密码"
  280. // @Param org_id string false "组织ID"
  281. // @Param email string false "邮箱"
  282. // @Success 200 {object} models.Account
  283. // @Failure 403 :id is empty
  284. func System_UpdateUser(c *entitys.CtrlContext) {
  285. user_id := c.Ctx.GetString("user_id")
  286. user_id = user_id
  287. /*var userInfo sysmodel.UserInfo
  288. err := c.Ctx.BindJSON(&userInfo)
  289. if err != nil {
  290. c.Ctx.JSON(500, sysmodel.SysReturn{500, err.Error(), nil})
  291. return
  292. }
  293. session := c.Db.NewSession()
  294. defer session.Close()
  295. //1、删除用户角色
  296. _, err = c.Db.SQL(sysmodel.SqlDeleteUserRoles, userInfo.Id).Execute()
  297. if err != nil {
  298. session.Rollback()
  299. c.Ctx.JSON(200, sysmodel.SysReturn{500, err.Error(), nil})
  300. return
  301. }
  302. //2、修改角色
  303. userRoles := []sysmodel.SysUserRole{}
  304. roles := []string{}
  305. if userInfo.UserRole != "" {
  306. err = json.Unmarshal([]byte(userInfo.UserRole), &roles)
  307. if err != nil {
  308. session.Rollback()
  309. c.Ctx.JSON(200, sysmodel.SysReturn{500, err.Error(), nil})
  310. return
  311. }
  312. }
  313. for _, role := range roles {
  314. userRole := sysmodel.SysUserRole{}
  315. userRole.Id = utils.NewUUID()
  316. userRole.RoleId = role
  317. userRole.UserId = userInfo.Id
  318. userRole.CreateBy = user_id
  319. userRole.LastUpdateBy = user_id
  320. userRole.CreateTime = time.Now()
  321. userRole.LastUpdateDate = time.Now()
  322. userRole.DelFlag = 0
  323. userRoles = append(userRoles, userRole)
  324. }
  325. _, err = c.Db.Insert(userRoles)
  326. if err != nil {
  327. session.Rollback()
  328. c.Ctx.JSON(200, sysmodel.SysReturn{500, err.Error(), nil})
  329. return
  330. }
  331. var updateUser sysmodel.SysUser
  332. updateUser.Name = userInfo.Name
  333. updateUser.FullName = userInfo.FullName
  334. updateUser.Mobile = userInfo.Mobile
  335. updateUser.OrgId = userInfo.OrgId
  336. updateUser.Type = userInfo.Type
  337. updateUser.Status = userInfo.Status
  338. updateUser.Domain = userInfo.Domain
  339. updateUser.OptionA = userInfo.OptionA
  340. updateUser.OptionB = userInfo.OptionB
  341. updateUser.LastUpdateBy = user_id
  342. updateUser.LastUpdateDate = time.Now()
  343. //3、更新用户信息
  344. //_, err = c.Db.Table(new(models.SysUser)).ID(userInfo.Id).Update(map[string]interface{}{"name": userInfo.Name, "email": userInfo.Email, "org_id": userInfo.OrgId, "last_update_by": user_id, "last_update_date": time.Now()})
  345. _, err = c.Db.Id(userInfo.Id).Update(&updateUser)
  346. if err != nil {
  347. session.Rollback()
  348. c.Ctx.JSON(200, sysmodel.SysReturn{500, err.Error(), nil})
  349. return
  350. }
  351. session.Commit()
  352. */
  353. ret := __none_func_system__()
  354. if ret {
  355. c.Ctx.JSON(200, sysmodel.SysReturn{200, "", nil})
  356. } else {
  357. c.Ctx.JSON(200, sysmodel.SysReturn{500, "", nil})
  358. }
  359. }
  360. // _AddRole
  361. // @Title _AddRole
  362. // @Description 添加角色
  363. // @Param name string false "角色名称"
  364. // @Param remark string false "备注"
  365. // @Success 200 {object} models.Account
  366. // @Failure 403 :id is empty
  367. func System_AddRole(c *entitys.CtrlContext) {
  368. var role sysmodel.SysRole
  369. c.Ctx.BindJSON(&role)
  370. user_id := c.Ctx.GetString("user_id")
  371. role.Id = utils.NewUUID()
  372. role.DelFlag = 0
  373. role.CreateBy = user_id
  374. role.LastUpdateBy = user_id
  375. role.CreateTime = time.Now()
  376. role.LastUpdateDate = time.Now()
  377. _, err := c.Db.Insert(&role)
  378. ret := __none_func_system__()
  379. if ret && err == nil {
  380. c.Ctx.JSON(200, sysmodel.SysReturn{200, "", nil})
  381. } else {
  382. c.Ctx.JSON(200, sysmodel.SysReturn{500, err.Error(), nil})
  383. }
  384. }
  385. // _DelRole
  386. // @Title _DelRole
  387. // @Description 添加角色
  388. // @Param id string false "角色ID"
  389. // @Success 200 {object} models.Account
  390. // @Failure 403 :id is empty
  391. func System_DelRole(c *entitys.CtrlContext) {
  392. type Param struct {
  393. Id string `json:"id"`
  394. }
  395. var params []Param
  396. c.Ctx.BindJSON(&params)
  397. fmt.Println(params, "-----------")
  398. ids := []string{}
  399. for _, param := range params {
  400. ids = append(ids, param.Id)
  401. }
  402. _, err := c.Db.Table(new(sysmodel.SysRole)).In("id", ids).Update(map[string]interface{}{"del_flag": 1})
  403. if err != nil {
  404. c.Ctx.JSON(200, sysmodel.SysReturn{500, err.Error(), nil})
  405. return
  406. }
  407. ret := __none_func_system__()
  408. if ret {
  409. c.Ctx.JSON(200, sysmodel.SysReturn{200, "", nil})
  410. } else {
  411. c.Ctx.JSON(200, sysmodel.SysReturn{500, "", nil})
  412. }
  413. }
  414. // _UpdateRole
  415. // @Title _UpdateRole
  416. // @Description 修改角色
  417. // @Param id string false "角色ID"
  418. // @Param name string false "角色名称"
  419. // @Param remark string false "备注"
  420. // @Success 200 {object} models.Account
  421. // @Failure 403 :id is empty
  422. func System_UpdateRole(c *entitys.CtrlContext) {
  423. var role sysmodel.SysRole
  424. c.Ctx.BindJSON(&role)
  425. user_id := c.Ctx.GetString("user_id")
  426. role.LastUpdateBy = user_id
  427. role.LastUpdateDate = time.Now()
  428. c.Db.ID(role.Id).Update(&role)
  429. ret := __none_func_system__()
  430. if ret {
  431. c.Ctx.JSON(200, sysmodel.SysReturn{200, "", nil})
  432. } else {
  433. c.Ctx.JSON(200, sysmodel.SysReturn{500, "", nil})
  434. }
  435. }
  436. // _FindRolePage
  437. // @Title _FindRolePage
  438. // @Description 角色分页
  439. // @Param page false "分页参数"
  440. // @Success 200 {object} models.Account
  441. // @Failure 403 :id is empty
  442. func System_FindRolePage(c *entitys.CtrlContext) {
  443. var getpageinfo sysmodel.GetPageInfo
  444. c.Ctx.BindJSON(&getpageinfo)
  445. page := sysmodel.PageResult{}
  446. var roles []sysmodel.SysRole
  447. err := c.Db.SQL(sysmodel.Selectall_sys_role).Limit(getpageinfo.PageSize, (getpageinfo.PageNum-1)*getpageinfo.PageSize).Find(&roles)
  448. if err != nil {
  449. c.Ctx.JSON(200, sysmodel.SysReturn{500, err.Error(), nil})
  450. return
  451. }
  452. fmt.Println("-----------", len(roles))
  453. page.Content = roles
  454. page.PageSize = getpageinfo.PageSize
  455. page.PageNum = getpageinfo.PageNum
  456. page.TotalSize = 1
  457. ret := __none_func_system__(getpageinfo)
  458. if ret {
  459. c.Ctx.JSON(200, sysmodel.SysReturn{200, "", page})
  460. } else {
  461. c.Ctx.JSON(200, sysmodel.SysReturn{500, "", nil})
  462. }
  463. }
  464. // _FindRoleMenu
  465. // @Title _FindRoleMenu
  466. // @Description 查找角色权限
  467. // @Param user string false "用户id"
  468. // @Success 200 {object} models.Account
  469. // @Failure 403 :id is empty
  470. func System_FindRoleMenu(c *entitys.CtrlContext) {
  471. role_id, b := c.Ctx.GetQuery("roleId")
  472. if !b {
  473. c.Ctx.JSON(200, sysmodel.SysReturn{500, "roleId is null", nil})
  474. return
  475. }
  476. menus := []sysmodel.SysMenu{}
  477. c.Db.SQL(sysmodel.SqlFindRoleMenu, role_id).Find(&menus)
  478. ret := __none_func_system__()
  479. if ret {
  480. c.Ctx.JSON(200, sysmodel.SysReturn{200, "", menus})
  481. } else {
  482. c.Ctx.JSON(200, sysmodel.SysReturn{500, "", nil})
  483. }
  484. }
  485. // _SaveRoleMenu
  486. // @Title _SaveRoleMenu
  487. // @Description 保存角色权限
  488. // @Param role_menu string false "角色权限"
  489. // @Success 200 {object} models.Account
  490. // @Failure 403 :id is empty
  491. func System_SaveRoleMenu(c *entitys.CtrlContext) {
  492. var saverolemenu []sysmodel.SysRoleMenu
  493. c.Ctx.BindJSON(&saverolemenu)
  494. if len(saverolemenu) < 1 {
  495. c.Ctx.JSON(200, sysmodel.SysReturn{500, "role menu length is error", nil})
  496. return
  497. }
  498. session := c.Db.NewSession()
  499. defer session.Close()
  500. err := session.Begin()
  501. //删除角色下的menu
  502. _, err = c.Db.Exec("delete from sys_role_menu where role_id = ?", saverolemenu[0].RoleId)
  503. //_, err = c.Db.Exec("delete from sys_role_menu where id = 1")
  504. if err != nil {
  505. session.Rollback()
  506. c.Ctx.JSON(200, sysmodel.SysReturn{500, err.Error(), nil})
  507. return
  508. }
  509. for i, _ := range saverolemenu {
  510. saverolemenu[i].Id = utils.NewUUID()
  511. saverolemenu[i].DelFlag = 1
  512. }
  513. _, err = c.Db.Insert(&saverolemenu)
  514. if err != nil {
  515. session.Rollback()
  516. c.Ctx.JSON(200, sysmodel.SysReturn{500, err.Error(), nil})
  517. return
  518. }
  519. session.Commit()
  520. ret := __none_func_system__(&saverolemenu)
  521. if ret {
  522. c.Ctx.JSON(200, sysmodel.SysReturn{200, "", nil})
  523. } else {
  524. c.Ctx.JSON(200, sysmodel.SysReturn{500, "", nil})
  525. }
  526. }
  527. // _RoleAll
  528. // @Title _RoleAll
  529. // @Description 查找所有角色
  530. // @Success 200 {object} models.Account
  531. // @Failure 403 :id is empty
  532. func System_RoleAll(c *entitys.CtrlContext) {
  533. var roles []sysmodel.SysRole
  534. err := c.Db.SQL(sysmodel.Selectall_sys_role).Find(&roles)
  535. ret := __none_func_system__()
  536. if ret && err == nil {
  537. c.Ctx.JSON(200, sysmodel.SysReturn{200, "", roles})
  538. } else {
  539. c.Ctx.JSON(200, sysmodel.SysReturn{500, err.Error(), nil})
  540. }
  541. }
  542. // _FindPermissions
  543. // @Title _FindPermissions
  544. // @Description 查找用户权限
  545. // @Success 200 {object} models.Account
  546. // @Failure 403 :id is empty
  547. func System_FindPermissions(c *entitys.CtrlContext) {
  548. user_id := c.Ctx.GetString("user_id")
  549. //result, err := c.Db.Query(models.SqlFindUserPermissions, op.UserId)
  550. result, err := c.Db.QueryString(sysmodel.SqlFindUserPermissions, user_id)
  551. strs := []string{}
  552. for _, v := range result {
  553. strs = append(strs, v["perms"])
  554. }
  555. if err != nil {
  556. c.Ctx.JSON(200, sysmodel.SysReturn{500, err.Error(), nil})
  557. }
  558. ret := __none_func_system__()
  559. //strs = []string{"sys:menu:add", "sys:menu:view", "sys:menu:edit", "sys:menu:delete", "sys:user:edit", "sys:user:delete", "sys:user:add", "sys:role:view", "sys:role:edit", "sys:role:delete", "sys:role:add"}
  560. if ret {
  561. c.Ctx.JSON(200, sysmodel.SysReturn{200, "", strs})
  562. } else {
  563. c.Ctx.JSON(200, sysmodel.SysReturn{500, "", nil})
  564. }
  565. }
  566. // _AddMenu
  567. // @Title _AddMenu
  568. // @Description 添加菜单
  569. // @Param string false "菜单"
  570. // @Success 200 {object} models.Account
  571. // @Failure 403 :id is empty
  572. func System_AddMenu(c *entitys.CtrlContext) {
  573. var sysmenu sysmodel.SysMenu
  574. c.Ctx.BindJSON(&sysmenu)
  575. user_id := c.Ctx.GetString("user_id")
  576. sysmenu.Id = utils.NewUUID()
  577. sysmenu.CreateBy = user_id
  578. sysmenu.LastUpdateBy = user_id
  579. sysmenu.LastUpdateDate = time.Now()
  580. sysmenu.CreateTime = time.Now()
  581. sysmenu.DelFlag = 0
  582. _, err := c.Db.Insert(&sysmenu)
  583. if err != nil {
  584. c.Ctx.JSON(500, sysmodel.SysReturn{500, err.Error(), nil})
  585. return
  586. }
  587. ret := __none_func_system__(sysmenu)
  588. if ret {
  589. c.Ctx.JSON(200, sysmodel.SysReturn{200, "", nil})
  590. } else {
  591. c.Ctx.JSON(500, sysmodel.SysReturn{500, "", nil})
  592. }
  593. }
  594. // _DelMenu
  595. // @Title _DelMenu
  596. // @Description 删除菜单
  597. // @Param id string false "菜单ID"
  598. // @Success 200 {object} models.Account
  599. // @Failure 403 :id is empty
  600. func System_DelMenu(c *entitys.CtrlContext) {
  601. type Param struct {
  602. Id string `json:"id"`
  603. }
  604. var params []Param
  605. c.Ctx.BindJSON(&params)
  606. fmt.Println(params, "-----------")
  607. ids := []string{}
  608. for _, param := range params {
  609. ids = append(ids, param.Id)
  610. }
  611. _, err := c.Db.Table(new(sysmodel.SysMenu)).In("id", ids).Update(map[string]interface{}{"del_flag": 0})
  612. if err != nil {
  613. c.Ctx.JSON(200, sysmodel.SysReturn{500, err.Error(), nil})
  614. return
  615. }
  616. ret := __none_func_system__()
  617. if ret {
  618. c.Ctx.JSON(200, sysmodel.SysReturn{200, "", nil})
  619. } else {
  620. c.Ctx.JSON(200, sysmodel.SysReturn{500, "", nil})
  621. }
  622. }
  623. // _UpdateMenu
  624. // @Title _UpdateMenu
  625. // @Description 更新菜单
  626. // @Param string false "菜单"
  627. // @Success 200 {object} models.Account
  628. // @Failure 403 :id is empty
  629. func System_UpdateMenu(c *entitys.CtrlContext) {
  630. var sysmenu sysmodel.SysMenu
  631. err := c.Ctx.BindJSON(&sysmenu)
  632. if err != nil{
  633. c.Ctx.JSON(500, sysmodel.SysReturn{500, err.Error(), nil})
  634. return
  635. }
  636. user_id := c.Ctx.GetString("user_id")
  637. whereMenu := &sysmodel.SysMenu{}
  638. whereMenu.Id = sysmenu.Id
  639. sysmenu.LastUpdateBy = user_id
  640. sysmenu.LastUpdateDate = time.Now()
  641. _, err = c.Db.Update(&sysmenu, whereMenu)
  642. if err != nil {
  643. c.Ctx.JSON(200, sysmodel.SysReturn{500, err.Error(), nil})
  644. return
  645. }
  646. ret := __none_func_system__(sysmenu)
  647. if ret {
  648. c.Ctx.JSON(200, sysmodel.SysReturn{200, "", nil})
  649. } else {
  650. c.Ctx.JSON(200, sysmodel.SysReturn{500, "", nil})
  651. }
  652. }
  653. // _AddOrg
  654. // @Title _AddOrg
  655. // @Description 添加组织
  656. // @Param string false "组织"
  657. // @Success 200 {object} models.Account
  658. // @Failure 403 :id is empty
  659. func System_AddOrg(c *entitys.CtrlContext) {
  660. var sysorg sysmodel.SysOrg
  661. c.Ctx.BindJSON(&sysorg)
  662. user_id := c.Ctx.GetString("user_id")
  663. sysorg.Id = utils.NewUUID()
  664. sysorg.CreateBy = user_id
  665. sysorg.LastUpdateBy = user_id
  666. sysorg.LastUpdateDate = time.Now()
  667. sysorg.CreateTime = time.Now()
  668. sysorg.DelFlag = 0
  669. _, err := c.Db.Insert(&sysorg)
  670. if err != nil {
  671. c.Ctx.JSON(500, sysmodel.SysReturn{500, err.Error(), nil})
  672. return
  673. }
  674. ret := __none_func_system__(sysorg)
  675. if ret {
  676. c.Ctx.JSON(200, sysmodel.SysReturn{200, "", nil})
  677. } else {
  678. c.Ctx.JSON(500, sysmodel.SysReturn{500, "", nil})
  679. }
  680. }
  681. // _DelOrg
  682. // @Title _DelOrg
  683. // @Description 删除组织
  684. // @Param id string false "组织ID"
  685. // @Success 200 {object} models.Account
  686. // @Failure 403 :id is empty
  687. func System_DelOrg(c *entitys.CtrlContext) {
  688. type Param struct {
  689. Id string `json:"id"`
  690. }
  691. var params []Param
  692. c.Ctx.BindJSON(&params)
  693. fmt.Println(params, "-----------")
  694. ids := []string{}
  695. for _, param := range params {
  696. ids = append(ids, param.Id)
  697. }
  698. _, err := c.Db.Table(new(sysmodel.SysOrg)).In("id", ids).Update(map[string]interface{}{"del_flag": 0})
  699. if err != nil {
  700. c.Ctx.JSON(200, sysmodel.SysReturn{500, err.Error(), nil})
  701. return
  702. }
  703. ret := __none_func_system__()
  704. if ret {
  705. c.Ctx.JSON(200, sysmodel.SysReturn{200, "", nil})
  706. } else {
  707. c.Ctx.JSON(200, sysmodel.SysReturn{500, "", nil})
  708. }
  709. }
  710. // _UpdateOrg
  711. // @Title _UpdateOrg
  712. // @Description 更新组织
  713. // @Param string false "组织"
  714. // @Success 200 {object} models.Account
  715. // @Failure 403 :id is empty
  716. func System_UpdateOrg(c *entitys.CtrlContext) {
  717. var sysorg sysmodel.SysOrg
  718. c.Ctx.BindJSON(&sysorg)
  719. user_id := c.Ctx.GetString("user_id")
  720. sysorg.LastUpdateBy = user_id
  721. sysorg.LastUpdateDate = time.Now()
  722. _, err := c.Db.ID(sysorg.Id).Update(&sysorg)
  723. if err != nil {
  724. c.Ctx.JSON(200, sysmodel.SysReturn{500, err.Error(), nil})
  725. return
  726. }
  727. ret := __none_func_system__(sysorg)
  728. if ret {
  729. c.Ctx.JSON(200, sysmodel.SysReturn{200, "", nil})
  730. } else {
  731. c.Ctx.JSON(200, sysmodel.SysReturn{500, "", nil})
  732. }
  733. }
  734. // _GetOrg
  735. // @Title _GetOrg
  736. // @Description 根据ID获取组织
  737. // @Param string false "组织ID"
  738. // @Success 200 {object} models.Account
  739. // @Failure 403 :id is empty
  740. func System_GetOrg(c *entitys.CtrlContext) {
  741. var param struct {
  742. Id string `json:"id"`
  743. }
  744. c.Ctx.BindJSON(&param)
  745. fmt.Println(param, "-----------")
  746. org := sysmodel.SysOrg{}
  747. err := c.Db.Table(new(sysmodel.SysOrg)).ID(param.Id).Find(&org)
  748. if err != nil {
  749. c.Ctx.JSON(200, sysmodel.SysReturn{500, err.Error(), nil})
  750. return
  751. }
  752. ret := __none_func_system__()
  753. if ret {
  754. c.Ctx.JSON(200, sysmodel.SysReturn{200, "", org})
  755. } else {
  756. c.Ctx.JSON(200, sysmodel.SysReturn{500, "", nil})
  757. }
  758. }
  759. // _PageOrg
  760. // @Title _PageOrg
  761. // @Description 分页获取组织
  762. // @Param string false "组织"
  763. // @Success 200 {object} models.Account
  764. // @Failure 403 :id is empty
  765. func System_PageOrg(c *entitys.CtrlContext) {
  766. var getpageinfo sysmodel.GetPageInfo
  767. c.Ctx.BindJSON(&getpageinfo)
  768. /*
  769. ret := __none_func_system__(getpageinfo)
  770. page := sysmodel.PageResult{}
  771. var orgs []sysmodel.SysOrg
  772. dbSession := c.Db.Table("sys_organization")
  773. dbSession = dbSession.Select("sys_organization.*")
  774. countSession := c.Db.Table("sys_organization")
  775. JoinTables := []sysmodel.Join{}
  776. //JoinTables = append(JoinTables, sysmodel.Join{TabelName: "subject", Condition: "lesson.subject_id = subject.id", JoinOperator: "left"})
  777. for _, join := range JoinTables {
  778. dbSession = dbSession.Join(join.JoinOperator, join.TabelName, join.Condition)
  779. countSession = countSession.Join(join.JoinOperator, join.TabelName, join.Condition)
  780. }
  781. whereStr, datas, err := getpageinfo.Filter.Parse("")
  782. if err != nil {
  783. c.Ctx.JSON(200, sysmodel.SysReturn{500, err.Error(), nil})
  784. return
  785. }
  786. dbSession = dbSession.Where(whereStr, datas...)
  787. countSession = countSession.Where(whereStr, datas...)
  788. sidx := strings.Split(getpageinfo.Sidx, ",")
  789. for _, order := range sidx {
  790. order = strings.TrimSpace(order)
  791. if len(order) == 0 {
  792. continue
  793. }
  794. if strings.ToLower(getpageinfo.Sord) == "desc" {
  795. dbSession = dbSession.OrderBy(order + " desc")
  796. } else {
  797. dbSession = dbSession.OrderBy(order + " asc")
  798. }
  799. }
  800. totalPage, _ := countSession.Count()
  801. err = dbSession.Limit(getpageinfo.PageSize, (getpageinfo.PageNum-1)*getpageinfo.PageSize).Find(&orgs)
  802. if err != nil {
  803. c.Ctx.JSON(200, sysmodel.SysReturn{500, err.Error(), nil})
  804. }
  805. page.Content = orgs
  806. page.PageSize = getpageinfo.PageSize
  807. page.PageNum = getpageinfo.PageNum
  808. page.TotalSize = int(totalPage)
  809. */
  810. if true {
  811. c.Ctx.JSON(200, sysmodel.SysReturn{200, "", nil})
  812. } else {
  813. c.Ctx.JSON(200, sysmodel.SysReturn{500, "", nil})
  814. }
  815. }
  816. func System_TreeList(c *entitys.CtrlContext) {
  817. /*tbName := c.Ctx.Query("tb_name")
  818. parentFiled := c.Ctx.Query("parent_filed")
  819. if parentFiled == "" {
  820. parentFiled = c.Ctx.Query("parent_field")
  821. }
  822. parentValue := c.Ctx.Query("parent_value")
  823. textFiled := c.Ctx.Query("text_filed")
  824. if textFiled == "" {
  825. textFiled = c.Ctx.Query("text_field")
  826. if textFiled == "" {
  827. textFiled = c.Ctx.Query("name_field")
  828. }
  829. }
  830. valueFiled := c.Ctx.Query("value_filed")
  831. if valueFiled == "" {
  832. valueFiled = c.Ctx.Query("value_field")
  833. if valueFiled == "" {
  834. valueFiled = c.Ctx.Query("id_field")
  835. }
  836. }
  837. domainchk := c.Ctx.Query("domainchk")
  838. if domainchk == "" {
  839. domainchk = "1" // 默认需要domain过滤
  840. }
  841. cntparent := c.Ctx.Query("cnt_parent")
  842. if cntparent == "" {
  843. cntparent = "0"
  844. }
  845. filter := c.Ctx.Query("filters")
  846. if filter == "" {
  847. filter = c.Ctx.Query("filter")
  848. }
  849. sord := c.Ctx.Query("sord")
  850. user, exists := c.Ctx.Get("token")
  851. if !exists {
  852. c.Ctx.JSON(200, sysmodel.SysReturn{500, "token is not exists", nil})
  853. return
  854. }
  855. nodes, err := sysdb.TreeList(c, user.(*entitys.Token), tbName, parentFiled, parentValue, textFiled, valueFiled, cntparent, domainchk, filter, sord)
  856. if err == nil {
  857. c.Ctx.JSON(200, sysmodel.SysReturn{200, "", nodes})
  858. } else {
  859. c.Ctx.JSON(200, sysmodel.SysReturn{500, "", nil})
  860. }
  861. */
  862. }
  863. func __none_func_system__(params ...interface{}) bool {
  864. return true
  865. }