From ff2996853a029136a106c1f7e7e8fb0d48edfb29 Mon Sep 17 00:00:00 2001 From: zhengshilong <1725838433@qq.com> Date: Wed, 20 Aug 2025 19:52:13 +0800 Subject: [PATCH] =?UTF-8?q?bug=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- acquaintances/biz/dal/mysql/friend_moments.go | 1 - .../biz/dal/mysql/friend_relationship.go | 54 ++- acquaintances/biz/dal/mysql/user_assets.go | 92 +++-- .../user/friend_relationship_service.go | 24 +- acquaintances/biz/model/user/user.go | 358 +++++++++++++++++- acquaintances/biz/router/user/middleware.go | 10 + acquaintances/biz/router/user/user.go | 4 + acquaintances/idl/user.thrift | 3 +- 8 files changed, 504 insertions(+), 42 deletions(-) diff --git a/acquaintances/biz/dal/mysql/friend_moments.go b/acquaintances/biz/dal/mysql/friend_moments.go index 0af35d1..6bdf2b8 100644 --- a/acquaintances/biz/dal/mysql/friend_moments.go +++ b/acquaintances/biz/dal/mysql/friend_moments.go @@ -50,7 +50,6 @@ func CheckUserExists(userID string) (bool, error) { return count > 0, nil } -// 获取当前用户的好友ID列表 // 获取当前用户的好友ID列表 func getFriendUserIDs(userID string) ([]string, error) { var friends []model.FriendRelationship diff --git a/acquaintances/biz/dal/mysql/friend_relationship.go b/acquaintances/biz/dal/mysql/friend_relationship.go index 4c7985e..1bdcfeb 100644 --- a/acquaintances/biz/dal/mysql/friend_relationship.go +++ b/acquaintances/biz/dal/mysql/friend_relationship.go @@ -91,10 +91,62 @@ func HandleFriendApplication(applicationID int64, status model.FriendApplication return nil } -// GetApplications 获取收到的好友申请/获取发出的好友申请 +// GetApplications 获取好友申请 func GetApplications(req user.ListFriendRelationshipReq, status ...model.FriendApplicationStatus) ([]*user.FriendRelationshipListInfo, error) { tx := DB + var applications []*model.FriendRelationship + query := tx.Where("target_user_id = ? ", req.UserID) + + if len(status) > 0 { + query = query.Where("status IN (?)", status) + } + + if err := query.Order("created_at DESC").Find(&applications).Error; err != nil { + return nil, err + } + var result []*user.FriendRelationshipListInfo + for _, v := range applications { + info := &user.FriendRelationshipListInfo{ + ID: int64(v.ID), + ApplicationMessage: v.ApplicationMessage, + Status: int8(v.Status), + } + + // 发出的申请:获取目标用户信息(TargetUserID) + if v.ApplicantID == req.UserID { + info.UserID = v.TargetUserID + userInfo, err := InfoUser(v.TargetUserID) // 假设改为获取单个用户的函数 + if err != nil { + hlog.Errorf("获取目标用户 %s 信息失败: %v", v.TargetUserID, err) + // 可设置默认值(如"未知用户"),避免漏显示 + info.UserName = "未知用户" + } else { + info.UserName = userInfo.UserName + info.AvatarImageURL = userInfo.AvatarImageURL + } + } else if v.TargetUserID == req.UserID { // 收到的申请:获取申请人信息(ApplicantID) + info.UserID = v.ApplicantID + userInfo, err := InfoUser(v.ApplicantID) + if err != nil { + hlog.Errorf("获取申请人 %s 信息失败: %v", v.ApplicantID, err) + info.UserName = "未知用户" + } else { + info.UserName = userInfo.UserName + info.AvatarImageURL = userInfo.AvatarImageURL + } + } + + result = append(result, info) + } + + return result, nil +} + +// GetApplicationsRecord 获取好友申请记录 +func GetApplicationsRecord(req user.ListFriendRelationshipReq, status ...model.FriendApplicationStatus) ([]*user.FriendRelationshipListInfo, error) { + tx := DB + var applications []*model.FriendRelationship query := tx.Where("target_user_id = ? or applicant_id = ?", req.UserID, req.UserID) diff --git a/acquaintances/biz/dal/mysql/user_assets.go b/acquaintances/biz/dal/mysql/user_assets.go index 8451ee2..197c276 100644 --- a/acquaintances/biz/dal/mysql/user_assets.go +++ b/acquaintances/biz/dal/mysql/user_assets.go @@ -11,41 +11,49 @@ import ( "time" ) -func GetUserAssets(req user_assets.GetUserAssetsRequest) (*user_assets.UserAssets, error) { - // 检查用户ID是否为空 - if req.UserID == "" { - return nil, errors.New("用户ID不能为空") +func GetUserAssets(req user_assets.GetUserAssetsRequest) (*user_assets.UserAssets, error) { // 1. 参数验证 if req.UserID == "" { return nil, errors.New("用户ID不能为空") } + // 2. 初始化响应结构体 + userAssets := &user_assets.UserAssets{ + UserID: req.UserID, // 确保用户 ID 始终返回 } - - // 初始化接收结果的结构体 - userAssets := &user_assets.UserAssets{} - - // 构建查询:关联用户资产主表和各类资产表 - db := DB.Model(&model.UserAssets{}). - Joins("JOIN diamond ON user_assets.user_id = diamond.user_id"). - Joins("JOIN gold_bean ON user_assets.user_id = gold_bean.user_id"). - Joins("JOIN gold_leaf ON user_assets.user_id = gold_leaf.user_id"). - Where("user_assets.user_id = ?", req.UserID) - - // 执行查询并扫描结果到结构体 - err := db.Select(` - user_assets.user_id, - user_assets.status, - user_assets.created_at, - user_assets.updated_at, - diamond.diamond, - gold_bean.gold_bean, - gold_leaf.gold_leaf - `).First(userAssets).Error - - // 处理查询错误 + // 3. 查询用户资产主表信息(状态、时间戳) + var mainAsset model.UserAssets + err := DB.Model(&model.UserAssets{}). + Where("user_id = ?", req.UserID). + First(&mainAsset).Error + // 4. 处理主表记录不存在的情况(不直接报错,允许资产明细单独存在) if err != nil { - if errors.Is(err, gorm.ErrRecordNotFound) { - return nil, errors.New("用户资产记录不存在") + if !errors.Is(err, gorm.ErrRecordNotFound) { + // 非 "记录不存在" 的数据库错误才返回错误 + return nil, fmt.Errorf("查询用户资产主表失败: % w", err) } - return nil, fmt.Errorf("查询用户资产失败: %w", err) - } + } + // 5. 分别查询各类资产明细(避免 JOIN 导致的记录缺失问题) + var ( + diamond model.Diamond + goldBean model.GoldBean + goldLeaf model.GoldLeaf + ) + // 查询钻石 + if err := DB.Where("user_id = ?", req.UserID).First(&diamond).Error; err != nil && !errors.Is(err, gorm.ErrRecordNotFound) { + return nil, fmt.Errorf("查询钻石资产失败: %w", err) + } + userAssets.Diamond = diamond.Diamond.String() + // 查询金豆 + if err := DB.Where("user_id = ?", req.UserID).First(&goldBean).Error; err != nil && !errors.Is(err, gorm.ErrRecordNotFound) { + return nil, fmt.Errorf("查询金豆资产失败: %w", err) + } + userAssets.GoldBean = goldBean.GoldBean.String() + // 查询金叶 + if err := DB.Where("user_id = ?", req.UserID).First(&goldLeaf).Error; err != nil && !errors.Is(err, gorm.ErrRecordNotFound) { + return nil, fmt.Errorf("查询金叶资产失败: %w", err) + } + userAssets.GoldLeaf = goldLeaf.GoldLeaf.String() + // 6. 检查是否所有资产都不存在(可选:根据业务需求决定是否返回错误) + if mainAsset.ID == 0 && diamond.ID == 0 && goldBean.ID == 0 && goldLeaf.ID == 0 { + return nil, errors.New("用户资产记录不存在") + } return userAssets, nil } @@ -65,6 +73,20 @@ func AddDiamond(req user_assets.AddDiamondRequest) error { return errors.New("钻石数量必须大于0") } + // 查询银行卡信息,验证存在性和归属关系 + var bankcard model.Bankcard + if err := DB.Where("bankcard_number = ?", req.BankcardNumber).First(&bankcard).Error; err != nil { + if errors.Is(err, gorm.ErrRecordNotFound) { + return errors.New("银行卡不存在") + } + return fmt.Errorf("查询银行卡信息失败: %w", err) + } + + // 4. 验证用户ID(如果指定) + if bankcard.UserID != req.UserID { + return errors.New("银行卡不属于指定用户") + } + // 3. 使用事务确保数据一致性 return DB.Transaction(func(tx *gorm.DB) error { // 4. 查询用户当前钻石数量 @@ -110,7 +132,7 @@ func AddDiamond(req user_assets.AddDiamondRequest) error { AfterAmount: afterAmount, BusinessType: "recharge_diamond", // 业务类型:钻石充值 BusinessID: generateBusinessID(), // 生成业务唯一ID - Remark: fmt.Sprintf("银行卡充值: %s", req.BankcardNumber), + Remark: req.BankcardNumber, Operator: "system", SourceType: model.SourceTypeBankcard, } @@ -203,7 +225,7 @@ func AddGoldBean(req user_assets.AddGoldBeanRequest) error { AfterAmount: afterAmount, BusinessType: "recharge_gold_bean", // 业务类型:金豆充值 BusinessID: generateGoldBeanBusinessID(), - Remark: fmt.Sprintf("银行卡充值: %s", req.BankcardNumber), + Remark: req.BankcardNumber, Operator: "system", SourceType: model.SourceTypeBankcard, } @@ -296,7 +318,7 @@ func AddGoldLeaf(req user_assets.AddGoldLeafRequest) error { AfterAmount: afterAmount, BusinessType: "recharge_gold_leaf", // 业务类型:金叶充值 BusinessID: generateGoldLeafBusinessID(), - Remark: fmt.Sprintf("银行卡充值: %s", req.BankcardNumber), + Remark: req.BankcardNumber, Operator: "system", SourceType: model.SourceTypeBankcard, } @@ -582,7 +604,7 @@ func ListConsumptionByBankcard(req user_assets.ListConsumptionByBankcardRequest) // 5. 构建查询条件:用户ID + 银行卡来源类型 query := DB.Model(&model.ConsumptionRecord{}). - Where("user_id = ? AND source_type = ?", targetUserID, model.SourceTypeBankcard) + Where("user_id = ? AND source_type = ? AND remark= ?", targetUserID, model.SourceTypeBankcard, req.BankcardNumber) // 6. 查询总记录数 var total int64 diff --git a/acquaintances/biz/handler/user/friend_relationship_service.go b/acquaintances/biz/handler/user/friend_relationship_service.go index 956ffaf..ebae748 100644 --- a/acquaintances/biz/handler/user/friend_relationship_service.go +++ b/acquaintances/biz/handler/user/friend_relationship_service.go @@ -88,7 +88,7 @@ func ListFriendRelationship(ctx context.Context, c *app.RequestContext) { c.JSON(consts.StatusBadRequest, err.Error()) return } - data, err := mysql.GetApplications(req, model.ApplicationPending, model.ApplicationAccepted, model.ApplicationRejected) + data, err := mysql.GetApplications(req, model.ApplicationPending) if err != nil { c.JSON(consts.StatusBadRequest, err.Error()) return @@ -98,3 +98,25 @@ func ListFriendRelationship(ctx context.Context, c *app.RequestContext) { resp.Total = int64(len(data)) c.JSON(consts.StatusOK, resp) } + +// ListFriendRelationshipRecord . +// @router /v1/user/friendRelationship/record/ [GET] +func ListFriendRelationshipRecord(ctx context.Context, c *app.RequestContext) { + var err error + var req user.ListFriendRelationshipReq + err = c.BindAndValidate(&req) + if err != nil { + c.String(consts.StatusBadRequest, err.Error()) + return + } + data, err := mysql.GetApplicationsRecord(req, model.ApplicationPending, model.ApplicationAccepted, model.ApplicationRejected) + if err != nil { + c.JSON(consts.StatusBadRequest, err.Error()) + return + } + resp := new(user.ListFriendRelationshipRes) + resp.FriendRelationshipInfos = data + resp.Total = int64(len(data)) + + c.JSON(consts.StatusOK, resp) +} diff --git a/acquaintances/biz/model/user/user.go b/acquaintances/biz/model/user/user.go index 5d74708..81608e0 100644 --- a/acquaintances/biz/model/user/user.go +++ b/acquaintances/biz/model/user/user.go @@ -1822,12 +1822,12 @@ func (p *UserInfoReq) String() string { } type CreateUserRequest struct { - Name string `thrift:"name,1" form:"name" json:"name" vd:"(len($) > 0 && len($) < 100)"` + Name string `thrift:"name,1" form:"name" form:"name" json:"name" vd:"(len($) > 0 && len($) < 100)"` Gender Gender `thrift:"gender,2" form:"gender" json:"gender" vd:"($ == 1||$ == 2)"` Age int64 `thrift:"age,3" form:"age" json:"age" vd:"$>0"` Mobile string `thrift:"mobile,4" form:"mobile" json:"mobile" vd:"(len($) > 0 && len($) < 12)"` - Area int64 `thrift:"area,5" form:"area" json:"area" vd:"$>0"` - UserPassword string `thrift:"user_password,6" form:"user_password" json:"user_password" vd:"(len($) > 0 && len($) < 15)"` + Area int64 `thrift:"area,5" form:"area" form:"area" json:"area" vd:"$>0"` + UserPassword string `thrift:"user_password,6" form:"user_password" form:"user_password" json:"user_password" vd:"(len($) > 0 && len($) < 15)"` } func NewCreateUserRequest() *CreateUserRequest { @@ -18787,6 +18787,8 @@ type FriendRelationshipService interface { UpdateFriendRelationship(ctx context.Context, req *UpdateFriendRelationshipReq) (r *UpdateFriendRelationshipRes, err error) ListFriendRelationship(ctx context.Context, req *ListFriendRelationshipReq) (r *ListFriendRelationshipRes, err error) + + ListFriendRelationshipRecord(ctx context.Context, req *ListFriendRelationshipReq) (r *ListFriendRelationshipRes, err error) } type FriendRelationshipServiceClient struct { @@ -18842,6 +18844,15 @@ func (p *FriendRelationshipServiceClient) ListFriendRelationship(ctx context.Con } return _result.GetSuccess(), nil } +func (p *FriendRelationshipServiceClient) ListFriendRelationshipRecord(ctx context.Context, req *ListFriendRelationshipReq) (r *ListFriendRelationshipRes, err error) { + var _args FriendRelationshipServiceListFriendRelationshipRecordArgs + _args.Req = req + var _result FriendRelationshipServiceListFriendRelationshipRecordResult + if err = p.Client_().Call(ctx, "ListFriendRelationshipRecord", &_args, &_result); err != nil { + return + } + return _result.GetSuccess(), nil +} type ChatGroupService interface { CreateChatGroup(ctx context.Context, req *CreateChatGroupReq) (r *CreateChatGroupRes, err error) @@ -23285,6 +23296,7 @@ func NewFriendRelationshipServiceProcessor(handler FriendRelationshipService) *F self.AddToProcessorMap("CreateFriendRelationship", &friendRelationshipServiceProcessorCreateFriendRelationship{handler: handler}) self.AddToProcessorMap("UpdateFriendRelationship", &friendRelationshipServiceProcessorUpdateFriendRelationship{handler: handler}) self.AddToProcessorMap("ListFriendRelationship", &friendRelationshipServiceProcessorListFriendRelationship{handler: handler}) + self.AddToProcessorMap("ListFriendRelationshipRecord", &friendRelationshipServiceProcessorListFriendRelationshipRecord{handler: handler}) return self } func (p *FriendRelationshipServiceProcessor) Process(ctx context.Context, iprot, oprot thrift.TProtocol) (success bool, err thrift.TException) { @@ -23449,6 +23461,54 @@ func (p *friendRelationshipServiceProcessorListFriendRelationship) Process(ctx c return true, err } +type friendRelationshipServiceProcessorListFriendRelationshipRecord struct { + handler FriendRelationshipService +} + +func (p *friendRelationshipServiceProcessorListFriendRelationshipRecord) Process(ctx context.Context, seqId int32, iprot, oprot thrift.TProtocol) (success bool, err thrift.TException) { + args := FriendRelationshipServiceListFriendRelationshipRecordArgs{} + if err = args.Read(iprot); err != nil { + iprot.ReadMessageEnd() + x := thrift.NewTApplicationException(thrift.PROTOCOL_ERROR, err.Error()) + oprot.WriteMessageBegin("ListFriendRelationshipRecord", thrift.EXCEPTION, seqId) + x.Write(oprot) + oprot.WriteMessageEnd() + oprot.Flush(ctx) + return false, err + } + + iprot.ReadMessageEnd() + var err2 error + result := FriendRelationshipServiceListFriendRelationshipRecordResult{} + var retval *ListFriendRelationshipRes + if retval, err2 = p.handler.ListFriendRelationshipRecord(ctx, args.Req); err2 != nil { + x := thrift.NewTApplicationException(thrift.INTERNAL_ERROR, "Internal error processing ListFriendRelationshipRecord: "+err2.Error()) + oprot.WriteMessageBegin("ListFriendRelationshipRecord", thrift.EXCEPTION, seqId) + x.Write(oprot) + oprot.WriteMessageEnd() + oprot.Flush(ctx) + return true, err2 + } else { + result.Success = retval + } + if err2 = oprot.WriteMessageBegin("ListFriendRelationshipRecord", thrift.REPLY, seqId); err2 != nil { + err = err2 + } + if err2 = result.Write(oprot); err == nil && err2 != nil { + err = err2 + } + if err2 = oprot.WriteMessageEnd(); err == nil && err2 != nil { + err = err2 + } + if err2 = oprot.Flush(ctx); err == nil && err2 != nil { + err = err2 + } + if err != nil { + return + } + return true, err +} + type FriendRelationshipServiceCreateFriendRelationshipArgs struct { Req *CreateFriendRelationshipReq `thrift:"req,1"` } @@ -24325,6 +24385,298 @@ func (p *FriendRelationshipServiceListFriendRelationshipResult) String() string } +type FriendRelationshipServiceListFriendRelationshipRecordArgs struct { + Req *ListFriendRelationshipReq `thrift:"req,1"` +} + +func NewFriendRelationshipServiceListFriendRelationshipRecordArgs() *FriendRelationshipServiceListFriendRelationshipRecordArgs { + return &FriendRelationshipServiceListFriendRelationshipRecordArgs{} +} + +func (p *FriendRelationshipServiceListFriendRelationshipRecordArgs) InitDefault() { +} + +var FriendRelationshipServiceListFriendRelationshipRecordArgs_Req_DEFAULT *ListFriendRelationshipReq + +func (p *FriendRelationshipServiceListFriendRelationshipRecordArgs) GetReq() (v *ListFriendRelationshipReq) { + if !p.IsSetReq() { + return FriendRelationshipServiceListFriendRelationshipRecordArgs_Req_DEFAULT + } + return p.Req +} + +var fieldIDToName_FriendRelationshipServiceListFriendRelationshipRecordArgs = map[int16]string{ + 1: "req", +} + +func (p *FriendRelationshipServiceListFriendRelationshipRecordArgs) IsSetReq() bool { + return p.Req != nil +} + +func (p *FriendRelationshipServiceListFriendRelationshipRecordArgs) Read(iprot thrift.TProtocol) (err error) { + var fieldTypeId thrift.TType + var fieldId int16 + + if _, err = iprot.ReadStructBegin(); err != nil { + goto ReadStructBeginError + } + + for { + _, fieldTypeId, fieldId, err = iprot.ReadFieldBegin() + if err != nil { + goto ReadFieldBeginError + } + if fieldTypeId == thrift.STOP { + break + } + + switch fieldId { + case 1: + if fieldTypeId == thrift.STRUCT { + if err = p.ReadField1(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + default: + if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + } + if err = iprot.ReadFieldEnd(); err != nil { + goto ReadFieldEndError + } + } + if err = iprot.ReadStructEnd(); err != nil { + goto ReadStructEndError + } + + return nil +ReadStructBeginError: + return thrift.PrependError(fmt.Sprintf("%T read struct begin error: ", p), err) +ReadFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) +ReadFieldError: + return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_FriendRelationshipServiceListFriendRelationshipRecordArgs[fieldId]), err) +SkipFieldError: + return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) + +ReadFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T read field end error", p), err) +ReadStructEndError: + return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) +} + +func (p *FriendRelationshipServiceListFriendRelationshipRecordArgs) ReadField1(iprot thrift.TProtocol) error { + _field := NewListFriendRelationshipReq() + if err := _field.Read(iprot); err != nil { + return err + } + p.Req = _field + return nil +} + +func (p *FriendRelationshipServiceListFriendRelationshipRecordArgs) Write(oprot thrift.TProtocol) (err error) { + var fieldId int16 + if err = oprot.WriteStructBegin("ListFriendRelationshipRecord_args"); err != nil { + goto WriteStructBeginError + } + if p != nil { + if err = p.writeField1(oprot); err != nil { + fieldId = 1 + goto WriteFieldError + } + } + if err = oprot.WriteFieldStop(); err != nil { + goto WriteFieldStopError + } + if err = oprot.WriteStructEnd(); err != nil { + goto WriteStructEndError + } + return nil +WriteStructBeginError: + return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err) +WriteFieldError: + return thrift.PrependError(fmt.Sprintf("%T write field %d error: ", p, fieldId), err) +WriteFieldStopError: + return thrift.PrependError(fmt.Sprintf("%T write field stop error: ", p), err) +WriteStructEndError: + return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) +} + +func (p *FriendRelationshipServiceListFriendRelationshipRecordArgs) writeField1(oprot thrift.TProtocol) (err error) { + if err = oprot.WriteFieldBegin("req", thrift.STRUCT, 1); err != nil { + goto WriteFieldBeginError + } + if err := p.Req.Write(oprot); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 1 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 1 end error: ", p), err) +} + +func (p *FriendRelationshipServiceListFriendRelationshipRecordArgs) String() string { + if p == nil { + return "" + } + return fmt.Sprintf("FriendRelationshipServiceListFriendRelationshipRecordArgs(%+v)", *p) + +} + +type FriendRelationshipServiceListFriendRelationshipRecordResult struct { + Success *ListFriendRelationshipRes `thrift:"success,0,optional"` +} + +func NewFriendRelationshipServiceListFriendRelationshipRecordResult() *FriendRelationshipServiceListFriendRelationshipRecordResult { + return &FriendRelationshipServiceListFriendRelationshipRecordResult{} +} + +func (p *FriendRelationshipServiceListFriendRelationshipRecordResult) InitDefault() { +} + +var FriendRelationshipServiceListFriendRelationshipRecordResult_Success_DEFAULT *ListFriendRelationshipRes + +func (p *FriendRelationshipServiceListFriendRelationshipRecordResult) GetSuccess() (v *ListFriendRelationshipRes) { + if !p.IsSetSuccess() { + return FriendRelationshipServiceListFriendRelationshipRecordResult_Success_DEFAULT + } + return p.Success +} + +var fieldIDToName_FriendRelationshipServiceListFriendRelationshipRecordResult = map[int16]string{ + 0: "success", +} + +func (p *FriendRelationshipServiceListFriendRelationshipRecordResult) IsSetSuccess() bool { + return p.Success != nil +} + +func (p *FriendRelationshipServiceListFriendRelationshipRecordResult) Read(iprot thrift.TProtocol) (err error) { + var fieldTypeId thrift.TType + var fieldId int16 + + if _, err = iprot.ReadStructBegin(); err != nil { + goto ReadStructBeginError + } + + for { + _, fieldTypeId, fieldId, err = iprot.ReadFieldBegin() + if err != nil { + goto ReadFieldBeginError + } + if fieldTypeId == thrift.STOP { + break + } + + switch fieldId { + case 0: + if fieldTypeId == thrift.STRUCT { + if err = p.ReadField0(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + default: + if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + } + if err = iprot.ReadFieldEnd(); err != nil { + goto ReadFieldEndError + } + } + if err = iprot.ReadStructEnd(); err != nil { + goto ReadStructEndError + } + + return nil +ReadStructBeginError: + return thrift.PrependError(fmt.Sprintf("%T read struct begin error: ", p), err) +ReadFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) +ReadFieldError: + return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_FriendRelationshipServiceListFriendRelationshipRecordResult[fieldId]), err) +SkipFieldError: + return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) + +ReadFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T read field end error", p), err) +ReadStructEndError: + return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) +} + +func (p *FriendRelationshipServiceListFriendRelationshipRecordResult) ReadField0(iprot thrift.TProtocol) error { + _field := NewListFriendRelationshipRes() + if err := _field.Read(iprot); err != nil { + return err + } + p.Success = _field + return nil +} + +func (p *FriendRelationshipServiceListFriendRelationshipRecordResult) Write(oprot thrift.TProtocol) (err error) { + var fieldId int16 + if err = oprot.WriteStructBegin("ListFriendRelationshipRecord_result"); err != nil { + goto WriteStructBeginError + } + if p != nil { + if err = p.writeField0(oprot); err != nil { + fieldId = 0 + goto WriteFieldError + } + } + if err = oprot.WriteFieldStop(); err != nil { + goto WriteFieldStopError + } + if err = oprot.WriteStructEnd(); err != nil { + goto WriteStructEndError + } + return nil +WriteStructBeginError: + return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err) +WriteFieldError: + return thrift.PrependError(fmt.Sprintf("%T write field %d error: ", p, fieldId), err) +WriteFieldStopError: + return thrift.PrependError(fmt.Sprintf("%T write field stop error: ", p), err) +WriteStructEndError: + return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) +} + +func (p *FriendRelationshipServiceListFriendRelationshipRecordResult) writeField0(oprot thrift.TProtocol) (err error) { + if p.IsSetSuccess() { + if err = oprot.WriteFieldBegin("success", thrift.STRUCT, 0); err != nil { + goto WriteFieldBeginError + } + if err := p.Success.Write(oprot); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 0 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 0 end error: ", p), err) +} + +func (p *FriendRelationshipServiceListFriendRelationshipRecordResult) String() string { + if p == nil { + return "" + } + return fmt.Sprintf("FriendRelationshipServiceListFriendRelationshipRecordResult(%+v)", *p) + +} + type ChatGroupServiceProcessor struct { processorMap map[string]thrift.TProcessorFunction handler ChatGroupService diff --git a/acquaintances/biz/router/user/middleware.go b/acquaintances/biz/router/user/middleware.go index 5b373c3..acc81b9 100644 --- a/acquaintances/biz/router/user/middleware.go +++ b/acquaintances/biz/router/user/middleware.go @@ -335,3 +335,13 @@ func _checkotpMw() []app.HandlerFunc { // your code... return nil } + +func _recordMw() []app.HandlerFunc { + // your code... + return nil +} + +func _listfriendrelationshiprecordMw() []app.HandlerFunc { + // your code... + return nil +} diff --git a/acquaintances/biz/router/user/user.go b/acquaintances/biz/router/user/user.go index 897ee9d..7a7cf89 100644 --- a/acquaintances/biz/router/user/user.go +++ b/acquaintances/biz/router/user/user.go @@ -94,6 +94,10 @@ func Register(r *server.Hertz) { _friendrelationship.GET("/", append(_listfriendrelationshipMw(), user.ListFriendRelationship)...) _friendrelationship.POST("/", append(_createfriendrelationshipMw(), user.CreateFriendRelationship)...) _friendrelationship.PUT("/", append(_updatefriendrelationshipMw(), user.UpdateFriendRelationship)...) + { + _record := _friendrelationship.Group("/record", _recordMw()...) + _record.GET("/", append(_listfriendrelationshiprecordMw(), user.ListFriendRelationshipRecord)...) + } } { _login := _user0.Group("/login", _loginMw()...) diff --git a/acquaintances/idl/user.thrift b/acquaintances/idl/user.thrift index adc2baa..c323a7b 100644 --- a/acquaintances/idl/user.thrift +++ b/acquaintances/idl/user.thrift @@ -278,7 +278,8 @@ struct ListFriendRelationshipRes{ service FriendRelationshipService { CreateFriendRelationshipRes CreateFriendRelationship(1:CreateFriendRelationshipReq req)(api.post="/v1/user/friendRelationship/") //发起好友申请 UpdateFriendRelationshipRes UpdateFriendRelationship(1:UpdateFriendRelationshipReq req)(api.put="/v1/user/friendRelationship/") //同意或拒绝好友申请 - ListFriendRelationshipRes ListFriendRelationship(1:ListFriendRelationshipReq req)(api.get="/v1/user/friendRelationship/") //获取添加或申请记录列表 + ListFriendRelationshipRes ListFriendRelationship(1:ListFriendRelationshipReq req)(api.get="/v1/user/friendRelationship/") //获取好友添加请求列表 + ListFriendRelationshipRes ListFriendRelationshipRecord(1:ListFriendRelationshipReq req)(api.get="/v1/user/friendRelationship/record/") //获取好友添加记录列表 }