user.go 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  1. package api
  2. import (
  3. "fmt"
  4. "github.com/gin-gonic/gin"
  5. "main/controller/support"
  6. "main/model/dbModel"
  7. "mime/multipart"
  8. )
  9. var (
  10. USER_HEADER_IMG_PATH string = "http://qmplusimg.henrongyi.top"
  11. USER_HEADER_BUCKET string = "qm-plus-img"
  12. )
  13. type RegistAndLoginStuct struct {
  14. UserName string `json:"userName"`
  15. PassWord string `json:"passWord"`
  16. }
  17. // @Tags User
  18. // @Summary 用户注册账号
  19. // @Produce application/json
  20. // @Param data body api.RegistAndLoginStuct true "用户注册接口"
  21. // @Success 200 {string} json "{"success":true,"data":{},"msg":"注册成功"}"
  22. // @Router /user/regist [post]
  23. func Regist(c *gin.Context) {
  24. var R RegistAndLoginStuct
  25. _ = c.BindJSON(&R)
  26. U := &dbModel.User{UserName: R.UserName, PassWord: R.PassWord}
  27. err, user := U.Regist()
  28. if err != nil {
  29. ReportFormat(c, false, fmt.Sprintf("%v", err), gin.H{
  30. "user": user,
  31. })
  32. } else {
  33. ReportFormat(c, false, "创建成功", gin.H{
  34. "user": user,
  35. })
  36. }
  37. }
  38. // @Tags User
  39. // @Summary 用户登录
  40. // @Produce application/json
  41. // @Param data body api.RegistAndLoginStuct true "用户登录接口"
  42. // @Success 200 {string} json "{"success":true,"data":{},"msg":"登陆成功"}"
  43. // @Router /user/login [post]
  44. func Login(c *gin.Context) {
  45. var L RegistAndLoginStuct
  46. _ = c.BindJSON(&L)
  47. U := &dbModel.User{UserName: L.UserName, PassWord: L.PassWord}
  48. if err, user := U.Login(); err != nil {
  49. ReportFormat(c, false, "用户名密码错误", gin.H{"user": user})
  50. } else {
  51. ReportFormat(c, true, "登录成功", gin.H{"user": user})
  52. }
  53. }
  54. type ChangePassWordStutrc struct {
  55. UserName string `json:"userName"`
  56. PassWord string `json:"passWord"`
  57. NewPassWord string `json:"newPassWord"`
  58. }
  59. // @Tags User
  60. // @Summary 用户修改密码
  61. // @Produce application/json
  62. // @Param data body api.ChangePassWordStutrc true "用户修改密码"
  63. // @Success 200 {string} json "{"success":true,"data":{},"msg":"修改成功"}"
  64. // @Router /user/changePassWord [post]
  65. func ChangePassWord(c *gin.Context) {
  66. var params ChangePassWordStutrc
  67. _ = c.BindJSON(&params)
  68. U := &dbModel.User{UserName: params.UserName, PassWord: params.PassWord}
  69. if err, _ := U.ChangePassWord(params.NewPassWord); err != nil {
  70. ReportFormat(c, false, "修改失败,请检查用户名密码", gin.H{})
  71. } else {
  72. ReportFormat(c, true, "修改成功", gin.H{})
  73. }
  74. }
  75. type UserHeaderImg struct {
  76. HeaderImg multipart.File `json:"headerImg"`
  77. }
  78. // @Tags User
  79. // @Summary 用户上传头像
  80. // @accept multipart/form-data
  81. // @Produce application/json
  82. // @Param headerImg formData file true "用户上传头像"
  83. // @Param userName formData string true "用户上传头像"
  84. // @Success 200 {string} json "{"success":true,"data":{},"msg":"上传成功"}"
  85. // @Router /user/uploadHeaderImg [post]
  86. func UploadHeaderImg(c *gin.Context) {
  87. //获取头像文件
  88. _, header, err := c.Request.FormFile("headerImg")
  89. //便于找到用户 以后从jwt中取
  90. userName := c.PostForm("userName")
  91. if err != nil {
  92. ReportFormat(c, false, fmt.Sprintf("上传文件失败,%v", err), gin.H{})
  93. } else {
  94. //文件上传后拿到文件路径
  95. err, filePath := support.Upload(header, USER_HEADER_BUCKET, USER_HEADER_IMG_PATH)
  96. if err != nil {
  97. ReportFormat(c, false, fmt.Sprintf("接收返回值失败,%v", err), gin.H{})
  98. } else {
  99. //修改数据库后得到修改后的user并且返回供前端使用
  100. err, user := new(dbModel.User).UploadHeaderImg(userName, filePath)
  101. if err != nil {
  102. ReportFormat(c, false, fmt.Sprintf("修改数据库链接失败,%v", err), gin.H{})
  103. } else {
  104. ReportFormat(c, true, "上传成功", gin.H{"user": user})
  105. }
  106. }
  107. }
  108. }