userAction.go 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252
  1. package user
  2. import (
  3. "github.com/gogf/gf/crypto/gmd5"
  4. "github.com/gogf/gf/database/gdb"
  5. "github.com/gogf/gf/frame/g"
  6. "github.com/gogf/gf/net/ghttp"
  7. "github.com/gogf/gf/os/glog"
  8. "github.com/gogf/gf/os/gtime"
  9. "github.com/gogf/gf/text/gstr"
  10. "github.com/gogf/gf/util/gconv"
  11. "gmanager/app/service/menu"
  12. "gmanager/app/service/role"
  13. "gmanager/app/service/user"
  14. "gmanager/library"
  15. "gmanager/library/base"
  16. )
  17. type Action struct {
  18. base.BaseRouter
  19. }
  20. // path: /index
  21. func (action *Action) Index(r *ghttp.Request) {
  22. tplFile := "pages/system/user_index.html"
  23. err := r.Response.WriteTpl(tplFile, g.Map{
  24. "now": gtime.Datetime(),
  25. })
  26. if err != nil {
  27. glog.Error(err)
  28. }
  29. }
  30. // path: /get/{id}
  31. func (action *Action) Get(r *ghttp.Request) {
  32. id := r.GetInt64("id")
  33. model, err := user.GetById(id)
  34. if err != nil {
  35. base.Fail(r, err.Error())
  36. }
  37. base.Succ(r, model)
  38. }
  39. // path: /delete/{id}
  40. func (action *Action) Delete(r *ghttp.Request) {
  41. id := r.GetInt64("id")
  42. _, err := user.Delete(id, base.GetUser(r).Id)
  43. if err != nil {
  44. base.Fail(r, err.Error())
  45. }
  46. base.Succ(r, "")
  47. }
  48. // path: /save
  49. func (action *Action) Save(r *ghttp.Request) {
  50. request := new(user.Request)
  51. err := gconv.Struct(r.GetMap(), request)
  52. if err != nil {
  53. glog.Error("save struct error", err)
  54. base.Error(r, "save error")
  55. }
  56. request.UserId = base.GetUser(r).Id
  57. _, err = user.Save(request)
  58. if err != nil {
  59. base.Fail(r, "保存失败")
  60. }
  61. base.Succ(r, "")
  62. }
  63. // path: /list
  64. func (action *Action) List(r *ghttp.Request) {
  65. form := base.NewForm(r.GetMap())
  66. list, err := user.List(&form)
  67. if err != nil {
  68. glog.Error("page error", err)
  69. base.Error(r, err.Error())
  70. }
  71. base.Succ(r, list)
  72. }
  73. // path: /page
  74. func (action *Action) Page(r *ghttp.Request) {
  75. form := base.NewForm(r.GetMap())
  76. page, err := user.Page(&form)
  77. if err != nil {
  78. glog.Error("page error", err)
  79. base.Error(r, err.Error())
  80. }
  81. base.Succ(r,
  82. g.Map{
  83. "page": form.Page,
  84. "rows": page,
  85. "total": form.TotalPage,
  86. "records": form.TotalSize,
  87. })
  88. }
  89. // path: /jqgrid
  90. func (action *Action) Jqgrid(r *ghttp.Request) {
  91. form := base.NewForm(r.GetMap())
  92. page, err := user.Page(&form)
  93. if err != nil {
  94. glog.Error("jqgrid error", err)
  95. base.Error(r, err.Error())
  96. }
  97. r.Response.WriteJson(g.Map{
  98. "page": form.Page,
  99. "rows": page,
  100. "total": form.TotalPage,
  101. "records": form.TotalSize,
  102. })
  103. }
  104. // 获取用户角色信息
  105. func (action *Action) RoleInfo(r *ghttp.Request) {
  106. userId := r.GetInt("userId")
  107. if userId == 0 {
  108. base.Fail(r, "参数错误")
  109. }
  110. form := base.NewForm(r.GetMap())
  111. form.SetParam("userId", gconv.String(userId))
  112. // 角色列表
  113. roleList, err := role.List(&form)
  114. if err != nil {
  115. glog.Error("RoleInfo error", err)
  116. base.Error(r, err.Error())
  117. }
  118. // 选择的列表
  119. userRoleList, err := user.ListUserRole(&form)
  120. if err != nil {
  121. glog.Error("RoleInfo error", err)
  122. base.Error(r, err.Error())
  123. }
  124. roleSlice := g.SliceStr{}
  125. for _, userRole := range userRoleList {
  126. roleSlice = append(roleSlice, gconv.String(userRole.RoleId))
  127. }
  128. roleIds := gstr.Join(roleSlice, ",")
  129. base.Succ(r, g.Map{
  130. "userId": userId,
  131. "roleIds": roleIds,
  132. "list": roleList,
  133. })
  134. }
  135. // 用户绑定角色
  136. func (action *Action) RoleSave(r *ghttp.Request) {
  137. userId := r.GetInt("userid")
  138. roleIds := r.GetString("roleids")
  139. if userId == 0 {
  140. base.Fail(r, "参数错误")
  141. }
  142. // 保存角色信息
  143. user.SaveUserRole(userId, roleIds)
  144. base.Succ(r, "")
  145. }
  146. // 修改当前用户密码
  147. func (action *Action) Password(r *ghttp.Request) {
  148. userId := base.GetUser(r).Id
  149. model, err := user.GetById(gconv.Int64(userId))
  150. if err != nil {
  151. glog.Error(" Menu error", err)
  152. base.Error(r, "登录信息获取异常")
  153. } else if model.Id <= 0 {
  154. base.Fail(r, "登录异常")
  155. }
  156. password := r.GetString("password")
  157. newPassword := r.GetString("newPassword")
  158. if password == "" || newPassword == "" {
  159. base.Fail(r, "参数错误")
  160. }
  161. reqPassword, err := gmd5.Encrypt(password + model.Salt)
  162. if err != nil {
  163. glog.Error(" Password error", err)
  164. base.Error(r, "密码错误.")
  165. }
  166. if reqPassword != model.Password {
  167. base.Fail(r, "原密码错误")
  168. }
  169. model.UpdateId = userId
  170. model.UpdateTime = library.GetNow()
  171. model.Password, err = gmd5.Encrypt(newPassword + model.Salt)
  172. if err != nil {
  173. glog.Error(" Password error", err)
  174. base.Error(r, "密码错误!")
  175. }
  176. //_, err = model.Update()
  177. _, err = g.DB("default").Update("sys_user", gdb.Map{"password": model.Password, "update_time": model.UpdateTime, "update_id": model.UpdateId}, "id=?", model.Id)
  178. if err != nil {
  179. glog.Error(" Password error", err)
  180. base.Error(r, "密码错误.")
  181. }
  182. base.Succ(r, "")
  183. }
  184. // 获取当前用户信息
  185. func (action *Action) Info(r *ghttp.Request) {
  186. userId := base.GetUser(r).Id
  187. model, err := user.GetById(gconv.Int64(userId))
  188. if err != nil {
  189. glog.Error(" Menu error", err)
  190. base.Error(r, "登录信息获取异常")
  191. } else if model.Id <= 0 {
  192. base.Fail(r, "登录异常")
  193. }
  194. model.Password = ""
  195. model.Salt = ""
  196. base.Succ(r, model)
  197. }
  198. // 获取当前用户信息
  199. func (action *Action) Menu(r *ghttp.Request) {
  200. userId := base.GetUser(r).Id
  201. model, err := user.GetById(gconv.Int64(userId))
  202. if err != nil {
  203. glog.Error(" Menu error", err)
  204. base.Error(r, "登录信息获取异常")
  205. } else if model.Id <= 0 {
  206. base.Fail(r, "登录异常")
  207. }
  208. list, err := menu.ListUser(model.Id, model.UserType)
  209. if err != nil {
  210. glog.Error(" Menu error", err)
  211. base.Error(r, "数据获取异常")
  212. }
  213. base.Succ(r, list)
  214. }