1. router相关代码

1. message

  1. package router
  2. import (
  3. "github.com/gin-gonic/gin"
  4. "mxshop-api/userop-web/api/message"
  5. "mxshop-api/userop-web/middlewares"
  6. )
  7. func InitMessageRouter(Router *gin.RouterGroup) {
  8. MessageRouter := Router.Group("message")
  9. {
  10. MessageRouter.GET("", middlewares.JWTAuth(), message.List) // 轮播图列表页
  11. MessageRouter.POST("", middlewares.JWTAuth(), message.New) //新建轮播图
  12. }
  13. }

2. address

  1. package router
  2. import (
  3. "github.com/gin-gonic/gin"
  4. "mxshop-api/userop-web/api/address"
  5. "mxshop-api/userop-web/middlewares"
  6. )
  7. func InitAddressRouter(Router *gin.RouterGroup) {
  8. AddressRouter := Router.Group("address")
  9. {
  10. AddressRouter.GET("", middlewares.JWTAuth(), address.List) // 轮播图列表页
  11. AddressRouter.DELETE("/:id", middlewares.JWTAuth(), address.Delete) // 删除轮播图
  12. AddressRouter.POST("", middlewares.JWTAuth(), address.New) //新建轮播图
  13. AddressRouter.PUT("/:id",middlewares.JWTAuth(), address.Update) //修改轮播图信息
  14. }
  15. }

3. user_fav

  1. package router
  2. import (
  3. "github.com/gin-gonic/gin"
  4. "mxshop-api/userop-web/api/user_fav"
  5. "mxshop-api/userop-web/middlewares"
  6. )
  7. func InitUserFavRouter(Router *gin.RouterGroup) {
  8. UserFavRouter := Router.Group("userfavs")
  9. {
  10. UserFavRouter.DELETE("/:id", middlewares.JWTAuth(), user_fav.Delete) // 删除收藏记录
  11. UserFavRouter.GET("/:id", middlewares.JWTAuth(), user_fav.Detail) // 获取收藏记录
  12. UserFavRouter.POST("", middlewares.JWTAuth(), user_fav.New) //新建收藏记录
  13. UserFavRouter.GET("", middlewares.JWTAuth(), user_fav.List) //获取当前用户的收藏
  14. }
  15. }

2. handler相关代码

1. message

  1. package message
  2. import (
  3. "context"
  4. "github.com/gin-gonic/gin"
  5. "go.uber.org/zap"
  6. "mxshop-api/userop-web/api"
  7. "mxshop-api/userop-web/forms"
  8. "mxshop-api/userop-web/global"
  9. "mxshop-api/userop-web/proto"
  10. "net/http"
  11. )
  12. func List(ctx *gin.Context) {
  13. rsp, err := global.MessageClient.MessageList(context.Background(), &proto.MessageRequest{})
  14. if err != nil {
  15. zap.S().Errorw("获取留言失败")
  16. api.HandleGrpcErrorToHttp(err, ctx)
  17. return
  18. }
  19. reMap := map[string]interface{}{
  20. "total": rsp.Total,
  21. }
  22. result := make([]interface{}, 0)
  23. for _, value := range rsp.Data {
  24. reMap := make(map[string]interface{})
  25. reMap["id"] = value.Id
  26. reMap["user_id"] = value.UserId
  27. reMap["type"] = value.MessageType
  28. reMap["subject"] = value.Subject
  29. reMap["message"] = value.Message
  30. reMap["file"] = value.File
  31. result = append(result, reMap)
  32. }
  33. reMap["data"] = result
  34. ctx.JSON(http.StatusOK, reMap)
  35. }
  36. func New(ctx *gin.Context) {
  37. messageForm := forms.MessageForm{}
  38. if err := ctx.ShouldBindJSON(&messageForm); err != nil {
  39. api.HandleValidatorError(ctx, err)
  40. return
  41. }
  42. rsp, err := global.MessageClient.CreateMessage(context.Background(), &proto.MessageRequest{
  43. MessageType: messageForm.MessageType,
  44. Subject: messageForm.Subject,
  45. Message: messageForm.Message,
  46. File: messageForm.File,
  47. })
  48. if err != nil {
  49. zap.S().Errorw("添加留言失败")
  50. api.HandleGrpcErrorToHttp(err, ctx)
  51. return
  52. }
  53. request := make(map[string]interface{})
  54. request["id"] = rsp.Id
  55. ctx.JSON(http.StatusOK, request)
  56. }

2. address

  1. package address
  2. import (
  3. "context"
  4. "github.com/gin-gonic/gin"
  5. "go.uber.org/zap"
  6. "mxshop-api/userop-web/api"
  7. "mxshop-api/userop-web/forms"
  8. "mxshop-api/userop-web/global"
  9. "mxshop-api/userop-web/models"
  10. "mxshop-api/userop-web/proto"
  11. "net/http"
  12. "strconv"
  13. )
  14. func List(ctx *gin.Context) {
  15. request := &proto.AddressRequest{}
  16. claims, _ := ctx.Get("claims")
  17. currentUser := claims.(*models.CustomClaims)
  18. if currentUser.AuthorityId != 2 {
  19. userId, _ := ctx.Get("userId")
  20. request.UserId = int32(userId.(uint))
  21. }
  22. rsp, err := global.AddressClient.GetAddressList(context.Background(), request)
  23. if err != nil {
  24. zap.S().Errorw("获取地址列表失败")
  25. api.HandleGrpcErrorToHttp(err, ctx)
  26. return
  27. }
  28. reMap := map[string]interface{}{
  29. "total": rsp.Total,
  30. }
  31. result := make([]interface{}, 0)
  32. for _, value := range rsp.Data {
  33. reMap := make(map[string]interface{})
  34. reMap["id"] = value.Id
  35. reMap["user_id"] = value.UserId
  36. reMap["province"] = value.Province
  37. reMap["city"] = value.City
  38. reMap["district"] = value.District
  39. reMap["address"] = value.Address
  40. reMap["signer_name"] = value.SignerName
  41. reMap["signer_mobile"] = value.SignerMobile
  42. result = append(result, reMap)
  43. }
  44. reMap["data"] = result
  45. ctx.JSON(http.StatusOK, reMap)
  46. }
  47. func New(ctx *gin.Context) {
  48. addressForm := forms.AddressForm{}
  49. if err := ctx.ShouldBindJSON(&addressForm); err != nil {
  50. api.HandleValidatorError(ctx, err)
  51. return
  52. }
  53. rsp, err := global.AddressClient.CreateAddress(context.Background(), &proto.AddressRequest{
  54. Province: addressForm.Province,
  55. City: addressForm.City,
  56. District: addressForm.District,
  57. Address: addressForm.Address,
  58. SignerName: addressForm.SignerName,
  59. SignerMobile: addressForm.SignerMobile,
  60. })
  61. if err != nil {
  62. zap.S().Errorw("新建地址失败")
  63. api.HandleGrpcErrorToHttp(err, ctx)
  64. return
  65. }
  66. request := make(map[string]interface{})
  67. request["id"] = rsp.Id
  68. ctx.JSON(http.StatusOK, request)
  69. }
  70. func Delete(ctx *gin.Context) {
  71. id := ctx.Param("id")
  72. i, err := strconv.ParseInt(id, 10, 32)
  73. if err != nil {
  74. ctx.Status(http.StatusNotFound)
  75. return
  76. }
  77. _, err = global.AddressClient.DeleteAddress(context.Background(), &proto.AddressRequest{Id: int32(i)})
  78. if err != nil {
  79. zap.S().Errorw("删除地址失败")
  80. api.HandleGrpcErrorToHttp(err, ctx)
  81. return
  82. }
  83. ctx.JSON(http.StatusOK, "")
  84. }
  85. func Update(ctx *gin.Context) {
  86. addressForm := forms.AddressForm{}
  87. if err := ctx.ShouldBindJSON(&addressForm); err != nil {
  88. api.HandleValidatorError(ctx, err)
  89. return
  90. }
  91. id := ctx.Param("id")
  92. i, err := strconv.ParseInt(id, 10, 32)
  93. if err != nil {
  94. ctx.Status(http.StatusNotFound)
  95. return
  96. }
  97. _, err = global.AddressClient.UpdateAddress(context.Background(), &proto.AddressRequest{
  98. Id: int32(i),
  99. Province: addressForm.Province,
  100. City: addressForm.City,
  101. District: addressForm.District,
  102. Address: addressForm.Address,
  103. SignerName: addressForm.SignerName,
  104. SignerMobile: addressForm.SignerMobile,
  105. })
  106. if err != nil {
  107. zap.S().Errorw("更新地址失败")
  108. api.HandleGrpcErrorToHttp(err, ctx)
  109. return
  110. }
  111. request := make(map[string]interface{})
  112. ctx.JSON(http.StatusOK, request)
  113. }

3. userfav

  1. package user_fav
  2. import (
  3. "context"
  4. "github.com/gin-gonic/gin"
  5. "go.uber.org/zap"
  6. "mxshop-api/userop-web/api"
  7. "mxshop-api/userop-web/forms"
  8. "mxshop-api/userop-web/global"
  9. "mxshop-api/userop-web/proto"
  10. "net/http"
  11. "strconv"
  12. )
  13. func List(ctx *gin.Context) {
  14. userId, _ := ctx.Get("userId")
  15. userFavRsp, err := global.UserFavClient.GetFavList(context.Background(), &proto.UserFavRequest{
  16. UserId: int32(userId.(uint)),
  17. })
  18. if err != nil {
  19. zap.S().Errorw("获取收藏列表失败")
  20. api.HandleGrpcErrorToHttp(err, ctx)
  21. return
  22. }
  23. ids := make([]int32, 0)
  24. for _, item := range userFavRsp.Data{
  25. ids = append(ids, item.GoodsId)
  26. }
  27. if len(ids) == 0 {
  28. ctx.JSON(http.StatusOK, gin.H{
  29. "total":0,
  30. })
  31. return
  32. }
  33. //请求商品服务
  34. goods, err := global.GoodsSrvClient.BatchGetGoods(context.Background(), &proto.BatchGoodsIdInfo{
  35. Id: ids,
  36. })
  37. if err != nil {
  38. zap.S().Errorw("[List] 批量查询【商品列表】失败")
  39. api.HandleGrpcErrorToHttp(err, ctx)
  40. return
  41. }
  42. reMap := map[string]interface{}{
  43. "total": userFavRsp.Total,
  44. }
  45. goodsList := make([]interface{}, 0)
  46. for _, item := range userFavRsp.Data{
  47. data := gin.H{
  48. "id":item.GoodsId,
  49. }
  50. for _, good := range goods.Data {
  51. if item.GoodsId == good.Id {
  52. data["name"] = good.Name
  53. data["shop_price"] = good.ShopPrice
  54. }
  55. }
  56. goodsList = append(goodsList, data)
  57. }
  58. reMap["data"] = goodsList
  59. ctx.JSON(http.StatusOK, reMap)
  60. }
  61. func New(ctx *gin.Context) {
  62. userFavForm := forms.UserFavForm{}
  63. if err := ctx.ShouldBindJSON(&userFavForm); err != nil {
  64. api.HandleValidatorError(ctx, err)
  65. return
  66. }
  67. //缺少一步, 这个时候应该去商品服务查询一下这个是否存在
  68. userId, _ := ctx.Get("userId")
  69. _, err := global.UserFavClient.AddUserFav(context.Background(), &proto.UserFavRequest{
  70. UserId: int32(userId.(uint)),
  71. GoodsId: userFavForm.GoodsId,
  72. })
  73. if err != nil {
  74. zap.S().Errorw("添加收藏记录失败")
  75. api.HandleGrpcErrorToHttp(err, ctx)
  76. return
  77. }
  78. ctx.JSON(http.StatusOK, gin.H{})
  79. }
  80. func Delete(ctx *gin.Context) {
  81. id := ctx.Param("id")
  82. i, err := strconv.ParseInt(id, 10, 32)
  83. if err != nil {
  84. ctx.Status(http.StatusNotFound)
  85. return
  86. }
  87. userId, _ := ctx.Get("userId")
  88. _, err = global.UserFavClient.DeleteUserFav(context.Background(), &proto.UserFavRequest{
  89. UserId: int32(userId.(uint)),
  90. GoodsId: int32(i),
  91. })
  92. if err != nil {
  93. zap.S().Errorw("删除收藏记录失败")
  94. api.HandleGrpcErrorToHttp(err, ctx)
  95. return
  96. }
  97. ctx.JSON(http.StatusOK, gin.H{
  98. "msg":"删除成功",
  99. })
  100. }
  101. func Detail(ctx *gin.Context) {
  102. goodsId := ctx.Param("id")
  103. goodsIdInt, err := strconv.ParseInt(goodsId, 10, 32)
  104. if err != nil {
  105. ctx.Status(http.StatusNotFound)
  106. return
  107. }
  108. userId, _ := ctx.Get("userId")
  109. _, err = global.UserFavClient.GetUserFavDetail(context.Background(), &proto.UserFavRequest{
  110. UserId: int32(userId.(uint)),
  111. GoodsId: int32(goodsIdInt),
  112. })
  113. if err != nil {
  114. zap.S().Errorw("查询收藏状态失败")
  115. api.HandleGrpcErrorToHttp(err, ctx)
  116. return
  117. }
  118. ctx.Status(http.StatusOK)
  119. }

3. form表单

1. message

  1. package forms
  2. type MessageForm struct {
  3. MessageType int32 `form:"type" json:"type" binding:"required,oneof=1 2 3 4 5"`
  4. Subject string `form:"subject" json:"subject" binding:"required"`
  5. Message string `form:"message" json:"message" binding:"required"`
  6. File string `form:"file" json:"file" binding:"required"`
  7. }

2. address

  1. package forms
  2. type AddressForm struct {
  3. Province string `form:"province" json:"province" binding:"required"`
  4. City string `form:"city" json:"city" binding:"required"`
  5. District string `form:"district" json:"district" binding:"required"`
  6. Address string `form:"address" json:"address" binding:"required"`
  7. SignerName string `form:"signer_name" json:"signer_name" binding:"required"`
  8. SignerMobile string `form:"signer_mobile" json:"signer_mobile" binding:"required"`
  9. }

2. userfav

  1. package forms
  2. type UserFavForm struct {
  3. GoodsId int32 `form:"goods" json:"goods" binding:"required"`
  4. }