user.go 9.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325
  1. package handlers
  2. import (
  3. "net/http"
  4. "easydo-echo_win7/models"
  5. "easydo-echo_win7/services"
  6. "easydo-echo_win7/utils"
  7. "easydo-echo_win7/middleware"
  8. "github.com/labstack/echo-contrib/session"
  9. "github.com/labstack/echo/v4"
  10. )
  11. func Add_user_to_routes(e *echo.Echo) {
  12. group := e.Group("/sysUser")
  13. group.Use(middleware.AuthMiddleware)
  14. group.POST("/getPage", userGetPage)
  15. group.POST("/getList", userGetList)
  16. group.POST("/save", userSave)
  17. group.POST("/update", userUpdate)
  18. group.POST("/remove", userRemove)
  19. group.POST("/updatePass", userUpdatePass)
  20. group.POST("/resetPass", userResetPass)
  21. }
  22. func userGetPage(c echo.Context) error {
  23. var paramMap map[string]interface{}
  24. if err := c.Bind(&paramMap); err != nil {
  25. return c.JSON(http.StatusInternalServerError, utils.ErrorResponse("参数解析失败", err.Error()))
  26. }
  27. result, err := services.JdbcClient.GetJdbcPage(paramMap, models.SysUser{})
  28. if err != nil {
  29. utils.PrintSqlErr(err)
  30. return c.JSON(http.StatusInternalServerError, utils.ErrorResponse("系统错误", ""))
  31. }
  32. list := utils.ConvertInterface[[]models.SysUser](result.Records)
  33. if len(list) == 0 {
  34. list = []models.SysUser{}
  35. }
  36. for i := range list {
  37. user := list[i]
  38. dept := new(models.SysDept)
  39. dept.ID = user.DeptId
  40. err := services.JdbcClient.GetJdbcModelById(dept)
  41. if err != nil {
  42. continue
  43. }
  44. user.Dept = dept
  45. for k := range paramMap {
  46. delete(paramMap, k)
  47. }
  48. paramMap["userId"] = user.ID
  49. p_result, err := services.JdbcClient.GetJdbcList(paramMap, models.SysUsersRoles{})
  50. if err != nil {
  51. utils.PrintSqlErr(err)
  52. return c.JSON(http.StatusInternalServerError, utils.ErrorResponse("系统错误", ""))
  53. }
  54. p_list := utils.ConvertInterface[[]models.SysUsersRoles](p_result)
  55. role_id_list := utils.Map(p_list, func(user_role models.SysUsersRoles) int64 {
  56. return *user_role.RoleID
  57. })
  58. for k := range paramMap {
  59. delete(paramMap, k)
  60. }
  61. paramMap["idIn"] = role_id_list
  62. r_result, err := services.JdbcClient.GetJdbcList(paramMap, models.SysRole{})
  63. if err != nil {
  64. utils.PrintSqlErr(err)
  65. return c.JSON(http.StatusInternalServerError, utils.ErrorResponse("系统错误", ""))
  66. }
  67. role_list := utils.ConvertInterface[[]models.SysRole](r_result)
  68. user.RoleList = &role_list
  69. tenant := new(models.Tenant)
  70. tenant.ID = user.TenantId
  71. err = services.JdbcClient.GetJdbcModelById(tenant)
  72. if err != nil {
  73. utils.PrintSqlErr(err)
  74. return c.JSON(http.StatusInternalServerError, utils.ErrorResponse("系统错误", ""))
  75. }
  76. user.Tenant = tenant
  77. list[i] = user
  78. }
  79. result.Records = list
  80. return c.JSON(http.StatusOK, result)
  81. }
  82. func userGetList(c echo.Context) error {
  83. var paramMap map[string]interface{}
  84. if err := c.Bind(&paramMap); err != nil {
  85. return c.JSON(http.StatusInternalServerError, utils.ErrorResponse("参数解析失败", err.Error()))
  86. }
  87. result, err := services.JdbcClient.GetJdbcList(paramMap, models.SysUser{})
  88. if err != nil {
  89. utils.PrintSqlErr(err)
  90. return c.JSON(http.StatusInternalServerError, utils.ErrorResponse("系统错误", ""))
  91. }
  92. list := utils.ConvertInterface[[]models.SysUser](result)
  93. for i := range list {
  94. user := list[i]
  95. dept := new(models.SysDept)
  96. dept.ID = user.DeptId
  97. err := services.JdbcClient.GetJdbcModel(dept)
  98. if err != nil {
  99. utils.PrintSqlErr(err)
  100. return c.JSON(http.StatusInternalServerError, utils.ErrorResponse("系统错误", ""))
  101. }
  102. user.Dept = dept
  103. for k := range paramMap {
  104. delete(paramMap, k)
  105. }
  106. paramMap["userId"] = user.ID
  107. p_result, err := services.JdbcClient.GetJdbcList(paramMap, models.SysUsersRoles{})
  108. if err != nil {
  109. utils.PrintSqlErr(err)
  110. return c.JSON(http.StatusInternalServerError, utils.ErrorResponse("系统错误", ""))
  111. }
  112. p_list := utils.ConvertInterface[[]models.SysUsersRoles](p_result)
  113. role_id_list := utils.Map(p_list, func(user_role models.SysUsersRoles) int64 {
  114. return *user_role.RoleID
  115. })
  116. for k := range paramMap {
  117. delete(paramMap, k)
  118. }
  119. paramMap["idIn"] = role_id_list
  120. r_result, err := services.JdbcClient.GetJdbcList(paramMap, models.SysRole{})
  121. if err != nil {
  122. utils.PrintSqlErr(err)
  123. return c.JSON(http.StatusInternalServerError, utils.ErrorResponse("系统错误", ""))
  124. }
  125. role_list := utils.ConvertInterface[[]models.SysRole](r_result)
  126. user.RoleList = &role_list
  127. tenant := new(models.Tenant)
  128. tenant.ID = user.TenantId
  129. err = services.JdbcClient.GetJdbcModelById(tenant)
  130. if err != nil {
  131. utils.PrintSqlErr(err)
  132. return c.JSON(http.StatusInternalServerError, utils.ErrorResponse("系统错误", ""))
  133. }
  134. user.Tenant = tenant
  135. list[i] = user
  136. }
  137. return c.JSON(http.StatusOK, list)
  138. }
  139. func userSave(c echo.Context) error {
  140. tx, _ := services.MYSQL_DB.Beginx()
  141. user := new(models.SysUser)
  142. if err := c.Bind(user); err != nil {
  143. return c.JSON(http.StatusInternalServerError, utils.ErrorResponse("参数解析失败", err.Error()))
  144. }
  145. userParam := new(models.SysUser)
  146. userParam.Username = user.Username
  147. count, err := services.JdbcClient.GetJdbcCount(userParam, tx)
  148. if err != nil {
  149. utils.PrintSqlErr(err)
  150. return c.JSON(http.StatusInternalServerError, utils.ErrorResponse("系统错误", ""))
  151. }
  152. if count > 0 {
  153. return c.JSON(http.StatusInternalServerError, utils.ErrorResponse("用户名已存在", ""))
  154. }
  155. password, _ := utils.EncodePassword("123456")
  156. user.Password = &password
  157. err = services.JdbcClient.JdbcInsert(user, tx)
  158. if err != nil {
  159. utils.PrintSqlErr(err)
  160. tx.Rollback()
  161. return c.JSON(http.StatusInternalServerError, utils.ErrorResponse("系统错误", ""))
  162. }
  163. role_list := *user.RoleList
  164. for _, role := range role_list {
  165. user_role := new(models.SysUsersRoles)
  166. user_role.RoleID = role.ID
  167. user_role.UserID = user.ID
  168. err = services.JdbcClient.JdbcInsert(user_role, tx)
  169. if err != nil {
  170. utils.PrintSqlErr(err)
  171. tx.Rollback()
  172. return c.JSON(http.StatusInternalServerError, utils.ErrorResponse("系统错误", ""))
  173. }
  174. }
  175. tx.Commit()
  176. return c.JSON(http.StatusOK, user)
  177. }
  178. func userUpdate(c echo.Context) error {
  179. tx, _ := services.MYSQL_DB.Beginx()
  180. user := new(models.SysUser)
  181. if err := c.Bind(user); err != nil {
  182. return c.JSON(http.StatusInternalServerError, utils.ErrorResponse("参数解析失败", err.Error()))
  183. }
  184. err := services.JdbcClient.JdbcUpdateById(user, tx)
  185. if err != nil {
  186. utils.PrintSqlErr(err)
  187. tx.Rollback()
  188. return c.JSON(http.StatusInternalServerError, utils.ErrorResponse("系统错误", ""))
  189. }
  190. user_role := new(models.SysUsersRoles)
  191. user_role.UserID = user.ID
  192. err = services.JdbcClient.JdbcRemove(user_role, tx)
  193. if err != nil {
  194. utils.PrintSqlErr(err)
  195. tx.Rollback()
  196. return c.JSON(http.StatusInternalServerError, utils.ErrorResponse("系统错误", ""))
  197. }
  198. role_list := *user.RoleList
  199. for _, role := range role_list {
  200. user_role := new(models.SysUsersRoles)
  201. user_role.RoleID = role.ID
  202. user_role.UserID = user.ID
  203. err = services.JdbcClient.JdbcInsert(user_role, tx)
  204. if err != nil {
  205. utils.PrintSqlErr(err)
  206. tx.Rollback()
  207. return c.JSON(http.StatusInternalServerError, utils.ErrorResponse("系统错误", ""))
  208. }
  209. }
  210. tx.Commit()
  211. return c.JSON(http.StatusOK, user)
  212. }
  213. func userRemove(c echo.Context) error {
  214. tx, _ := services.MYSQL_DB.Beginx()
  215. user := new(models.SysUser)
  216. if err := c.Bind(user); err != nil {
  217. return c.JSON(http.StatusInternalServerError, utils.ErrorResponse("参数解析失败", err.Error()))
  218. }
  219. err := services.JdbcClient.JdbcRemoveById(user, tx)
  220. if err != nil {
  221. utils.PrintSqlErr(err)
  222. tx.Rollback()
  223. return c.JSON(http.StatusInternalServerError, utils.ErrorResponse("系统错误", ""))
  224. }
  225. user_role := new(models.SysUsersRoles)
  226. user_role.UserID = user.ID
  227. err = services.JdbcClient.JdbcRemove(user_role, tx)
  228. if err != nil {
  229. utils.PrintSqlErr(err)
  230. tx.Rollback()
  231. return c.JSON(http.StatusInternalServerError, utils.ErrorResponse("系统错误", ""))
  232. }
  233. tx.Commit()
  234. return c.JSON(http.StatusOK, user)
  235. }
  236. func userUpdatePass(c echo.Context) error {
  237. sess, _ := session.Get("auth_session", c)
  238. if user_id, ok := sess.Values["user_id"].(int64); ok {
  239. var paramMap map[string]interface{}
  240. if err := c.Bind(&paramMap); err != nil {
  241. return c.JSON(http.StatusOK, [0]string{})
  242. }
  243. oldPass := paramMap["oldPass"]
  244. newPass := paramMap["newPass"]
  245. user := new(models.SysUser)
  246. user.ID = &user_id
  247. services.JdbcClient.GetJdbcModelById(user)
  248. oldPassStr := utils.FormatToString(oldPass)
  249. newPassStr := utils.FormatToString(newPass)
  250. oldPassStr, _ = utils.DecryptByPrivateKey(oldPassStr)
  251. newPassStr, _ = utils.DecryptByPrivateKey(newPassStr)
  252. result := utils.VerifyPassword(oldPassStr, *user.Password)
  253. if !result {
  254. return c.JSON(http.StatusInternalServerError, utils.ErrorResponse("修改失败,旧密码错误", ""))
  255. }
  256. result = utils.VerifyPassword(newPassStr, *user.Password)
  257. if result {
  258. return c.JSON(http.StatusInternalServerError, utils.ErrorResponse("新密码不能与旧密码相同", ""))
  259. }
  260. password, _ := utils.EncodePassword(newPassStr)
  261. user.Password = &password
  262. err := services.JdbcClient.JdbcUpdateById(user)
  263. if err != nil {
  264. utils.PrintSqlErr(err)
  265. return c.JSON(http.StatusInternalServerError, utils.ErrorResponse("系统错误", ""))
  266. }
  267. return c.JSON(http.StatusOK, user)
  268. }
  269. return c.JSON(http.StatusOK, nil)
  270. }
  271. func userResetPass(c echo.Context) error {
  272. user := new(models.SysUser)
  273. if err := c.Bind(user); err != nil {
  274. return c.JSON(http.StatusInternalServerError, utils.ErrorResponse("参数解析失败", err.Error()))
  275. }
  276. password, _ := utils.EncodePassword("123456")
  277. user.Password = &password
  278. err := services.JdbcClient.JdbcUpdateById(user)
  279. if err != nil {
  280. utils.PrintSqlErr(err)
  281. return c.JSON(http.StatusInternalServerError, utils.ErrorResponse("系统错误", ""))
  282. }
  283. return c.JSON(http.StatusOK, user)
  284. }