liujiandao
2023-11-16 d20acf38c36c11ee4428c3e74a17f5870dc61b51
api/v1/test/member.go
New file
@@ -0,0 +1,235 @@
package test
import (
   "github.com/gin-gonic/gin"
   "go.uber.org/zap"
   "google.golang.org/grpc"
   "google.golang.org/grpc/credentials/insecure"
   "srm/global"
   "srm/model/common/request"
   "srm/model/common/response"
   "srm/model/test"
   testReq "srm/model/test/request"
   "srm/proto/user"
   "srm/service"
)
type MemberApi struct {
}
var mService = service.ServiceGroupApp.TestServiceGroup.MemberService
// CreateMember 创建Member
// @Tags Member
// @Summary 创建Member
// @Security ApiKeyAuth
// @accept application/json
// @Produce application/json
// @Param data body test.Member true "创建Member"
// @Success 200 {string} string "{"success":true,"data":{},"msg":"获取成功"}"
// @Router /m/createMember [post]
func (mApi *MemberApi) CreateMember(c *gin.Context) {
   var m test.Member
   err := c.ShouldBindJSON(&m)
   if err != nil {
      response.FailWithMessage(err.Error(), c)
      return
   }
   if err := mService.CreateMember(&m); err != nil {
      global.GVA_LOG.Error("创建失败!", zap.Error(err))
      response.FailWithMessage("创建失败", c)
   } else {
      response.OkWithMessage("创建成功", c)
   }
}
// DeleteMember 删除Member
// @Tags Member
// @Summary 删除Member
// @Security ApiKeyAuth
// @accept application/json
// @Produce application/json
// @Param data body test.Member true "删除Member"
// @Success 200 {string} string "{"success":true,"data":{},"msg":"删除成功"}"
// @Router /m/deleteMember [delete]
func (mApi *MemberApi) DeleteMember(c *gin.Context) {
   var m test.Member
   err := c.ShouldBindJSON(&m)
   if err != nil {
      response.FailWithMessage(err.Error(), c)
      return
   }
   if err := mService.DeleteMember(m); err != nil {
      global.GVA_LOG.Error("删除失败!", zap.Error(err))
      response.FailWithMessage("删除失败", c)
   } else {
      response.OkWithMessage("删除成功", c)
   }
}
// DeleteMemberByIds 批量删除Member
// @Tags Member
// @Summary 批量删除Member
// @Security ApiKeyAuth
// @accept application/json
// @Produce application/json
// @Param data body request.IdsReq true "批量删除Member"
// @Success 200 {string} string "{"success":true,"data":{},"msg":"批量删除成功"}"
// @Router /m/deleteMemberByIds [delete]
func (mApi *MemberApi) DeleteMemberByIds(c *gin.Context) {
   var IDS request.IdsReq
   err := c.ShouldBindJSON(&IDS)
   if err != nil {
      response.FailWithMessage(err.Error(), c)
      return
   }
   if err := mService.DeleteMemberByIds(IDS); err != nil {
      global.GVA_LOG.Error("批量删除失败!", zap.Error(err))
      response.FailWithMessage("批量删除失败", c)
   } else {
      response.OkWithMessage("批量删除成功", c)
   }
}
// UpdateMember 更新Member
// @Tags Member
// @Summary 更新Member
// @Security ApiKeyAuth
// @accept application/json
// @Produce application/json
// @Param data body test.Member true "更新Member"
// @Success 200 {string} string "{"success":true,"data":{},"msg":"更新成功"}"
// @Router /m/updateMember [put]
func (mApi *MemberApi) UpdateMember(c *gin.Context) {
   var m test.Member
   err := c.ShouldBindJSON(&m)
   if err != nil {
      response.FailWithMessage(err.Error(), c)
      return
   }
   if err := mService.UpdateMember(m); err != nil {
      global.GVA_LOG.Error("更新失败!", zap.Error(err))
      response.FailWithMessage("更新失败", c)
   } else {
      response.OkWithMessage("更新成功", c)
   }
}
// FindMember 用id查询Member
// @Tags Member
// @Summary 用id查询Member
// @Security ApiKeyAuth
// @accept application/json
// @Produce application/json
// @Param data query test.Member true "用id查询Member"
// @Success 200 {string} string "{"success":true,"data":{},"msg":"查询成功"}"
// @Router /m/findMember [get]
func (mApi *MemberApi) FindMember(c *gin.Context) {
   var m test.Member
   err := c.ShouldBindQuery(&m)
   if err != nil {
      response.FailWithMessage(err.Error(), c)
      return
   }
   if rem, err := mService.GetMember(m.ID); err != nil {
      global.GVA_LOG.Error("查询失败!", zap.Error(err))
      response.FailWithMessage("查询失败", c)
   } else {
      response.OkWithData(gin.H{"rem": rem}, c)
   }
}
// GetMemberList 分页获取Member列表
// @Tags Member
// @Summary 分页获取Member列表
// @Security ApiKeyAuth
// @accept application/json
// @Produce application/json
// @Param data query testReq.MemberSearch true "分页获取Member列表"
// @Success 200 {string} string "{"success":true,"data":{},"msg":"获取成功"}"
// @Router /m/getMemberList [get]
func (mApi *MemberApi) GetMemberList(c *gin.Context) {
   var pageInfo testReq.MemberSearch
   err := c.ShouldBindQuery(&pageInfo)
   if err != nil {
      response.FailWithMessage(err.Error(), c)
      return
   }
   if list, total, err := mService.GetMemberInfoList(pageInfo); err != nil {
      global.GVA_LOG.Error("获取失败!", zap.Error(err))
      response.FailWithMessage("获取失败", c)
   } else {
      response.OkWithDetailed(response.PageResult{
         List:     list,
         Total:    total,
         Page:     pageInfo.Page,
         PageSize: pageInfo.PageSize,
      }, "获取成功", c)
   }
}
var (
   userConn *grpc.ClientConn
)
func InitUserConn() {
   var err error
   userConn, err = grpc.Dial(global.GVA_CONFIG.System.GrpcAdminUrl, grpc.WithTransportCredentials(insecure.NewCredentials()))
   if err != nil {
      //logx.Errorf("grpc dial user service error: %v", err.Error())
      return
   }
}
func CloseUserConn() {
   if userConn != nil {
      userConn.Close()
   }
}
// GetMemberListFromGrpc 分页获取Member列表
// @Tags Member
// @Summary 分页获取Member列表
// @Security ApiKeyAuth
// @accept application/json
// @Produce application/json
// @Param data query testReq.MemberSearch true "分页获取Member列表"
// @Success 200 {string} string "{"success":true,"data":{},"msg":"获取成功"}"
// @Router /m/getMemberListFromGrpc [get]
func (mApi *MemberApi) GetMemberListFromGrpc(c *gin.Context) {
   var pageInfo testReq.MemberSearch
   err := c.ShouldBindQuery(&pageInfo)
   if err != nil {
      response.FailWithMessage(err.Error(), c)
      return
   }
   InitUserConn()
   defer CloseUserConn()
   cli := user.NewUserServiceClient(userConn)
   var users []*user.User
   getMemberListResponse, err := cli.SyncUser(c, &user.UserRequest{Users: users})
   rawMemberList := getMemberListResponse.List
   memberList := make([]*test.Member, len(rawMemberList))
   for i, member := range rawMemberList {
      memberList[i] = &test.Member{
         Uuid:     member.Uuid,
         UserName: member.Username,
         Nickname: member.Nickname,
      }
   }
   if err != nil || len(memberList) == 0 {
      global.GVA_LOG.Error("获取失败!", zap.Error(err))
      response.FailWithMessage("获取失败", c)
   } else {
      response.OkWithDetailed(response.PageResult{
         List:     memberList,
         Total:    int64(len(memberList)),
         Page:     pageInfo.Page,
         PageSize: pageInfo.PageSize,
      }, "获取成功", c)
   }
}