package test import ( "context" "github.com/gin-gonic/gin" "go.uber.org/zap" "google.golang.org/grpc" "google.golang.org/grpc/credentials/insecure" "google.golang.org/grpc/metadata" "srm/constvar" "srm/global" "srm/model/common/request" "srm/model/common/response" "srm/model/test" testReq "srm/model/test/request" "srm/pkg/contextx" "srm/pkg/ecode" "srm/proto/user" "srm/service" "strings" "time" ) 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) ctx, cancel := context.WithTimeout(context.Background(), time.Second*5) defer cancel() slices := strings.Split(c.GetHeader("Authorization"), " ") if len(slices) != 2 { ctx := new(contextx.Context).SetCtx(c) ctx.Fail(ecode.JWTEmpty) return } token := slices[1] // 创建一个自定义的 metadata md := metadata.Pairs("token", token) // 将 metadata 添加到 context 中 ctx = metadata.NewOutgoingContext(ctx, md) getMemberListResponse, err := cli.SyncAllUser(ctx, &user.AllUserRequest{SystemType: constvar.SystemTypeSrm}) if err != nil { global.GVA_LOG.Error("user.AllUserRequest fail:", zap.Error(err)) response.FailWithMessage("获取失败", c) return } 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) return } response.OkWithDetailed(response.PageResult{ List: memberList, Total: getMemberListResponse.Total, Page: pageInfo.Page, PageSize: pageInfo.PageSize, }, "获取成功", c) }