Эх сурвалжийг харах

wip:认领相关rpc、单元测试、rpc接口测试用例

fuwencai 2 жил өмнө
parent
commit
cefb774a66

+ 0 - 1
entity/code.go

@@ -4,7 +4,6 @@ package entity
 const (
 	CODE_MEDICAL_INSTITUTION_LEVEL = "code_level"
 	CODE_MEDICAL_INSTITUTION_TYPE  = "code_type"
-	DOMAIN_ENT_FOLLOW              = "domain_ent_follow"
 	DOMAIN_CAPITAL_RETENTION       = "domain_capital_retention"
 	TableDomainEntClaim            = "domain_ent_claim"
 )

+ 1 - 0
go.mod

@@ -5,6 +5,7 @@ go 1.16
 require (
 	app.yhyue.com/moapp/jybase v0.0.0-20220802080941-07f401baab8b
 	github.com/go-sql-driver/mysql v1.6.0
+	github.com/golang/protobuf v1.5.2
 	github.com/zeromicro/go-zero v1.4.0
 	google.golang.org/grpc v1.48.0
 	google.golang.org/protobuf v1.28.1

+ 0 - 4
go.sum

@@ -1,4 +1,3 @@
-app.yhyue.com/moapp/esv1 v0.0.0-20220414031211-3da4123e648d h1:WPsYuuptAd3UEgN+jPzpnsDe/OvcshDUUtOTZPYGSJ8=
 app.yhyue.com/moapp/esv1 v0.0.0-20220414031211-3da4123e648d/go.mod h1:91/lSD/hS+ckMVP3WdidRzDhC60lLMdyce9QHy0cSMA=
 app.yhyue.com/moapp/jybase v0.0.0-20220802080941-07f401baab8b h1:7EtDV0o2XsluZI0ftgb2Twa/QlX7HxHP2SKhtyfnJV4=
 app.yhyue.com/moapp/jybase v0.0.0-20220802080941-07f401baab8b/go.mod h1:HelrO6tcD9TcKb/HOP2BLbzppyDz2kpQSFhPMQTUgbQ=
@@ -282,7 +281,6 @@ github.com/jinzhu/now v1.1.1/go.mod h1:d3SSVoowX0Lcu0IBviAWJpolVfI5UJVZZ7cO71lE/
 github.com/jmespath/go-jmespath v0.4.0/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHWvzYPziyZiYoo=
 github.com/jmespath/go-jmespath/internal/testify v1.5.1/go.mod h1:L3OGu8Wl2/fWfCI6z80xFu9LTZmf1ZRjMHUOPmWr69U=
 github.com/jmoiron/sqlx v1.2.0/go.mod h1:1FEQNm3xlJgrMD+FBdI9+xvCksHtbpVBBw5dYhBSsks=
-github.com/josharian/intern v1.0.0 h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8HmY=
 github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y=
 github.com/jpillora/backoff v1.0.0/go.mod h1:J/6gKK9jxlEcS3zixgDgUAsiuZ7yrSoa/FX5e0EB2j4=
 github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU=
@@ -316,7 +314,6 @@ github.com/lib/pq v1.10.6/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o=
 github.com/mailru/easyjson v0.0.0-20190614124828-94de47d64c63/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc=
 github.com/mailru/easyjson v0.0.0-20190626092158-b2ccc519800e/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc=
 github.com/mailru/easyjson v0.7.6/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc=
-github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0=
 github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc=
 github.com/mattn/go-colorable v0.1.9 h1:sqDoxXbdeALODt0DAeJCVp38ps9ZogZEAXjus69YV3U=
 github.com/mattn/go-colorable v0.1.9/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc=
@@ -352,7 +349,6 @@ github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI
 github.com/nxadm/tail v1.4.8 h1:nPr65rt6Y5JFSKQO7qToXr7pePgD6Gwiw05lkbyAQTE=
 github.com/nxadm/tail v1.4.8/go.mod h1:+ncqLTQzXmGhMZNUePPaPqPvBxHAIsmXswZKocGu+AU=
 github.com/olekukonko/tablewriter v0.0.5/go.mod h1:hPp6KlRPjbx+hW8ykQs1w3UBbZlj6HuIJcUGPhkA7kY=
-github.com/olivere/elastic v6.2.37+incompatible h1:UfSGJem5czY+x/LqxgeCBgjDn6St+z8OnsCuxwD3L0U=
 github.com/olivere/elastic v6.2.37+incompatible/go.mod h1:J+q1zQJTgAz9woqsbVRqGeB5G1iqDKVBWLNSYW8yfJ8=
 github.com/olivere/elastic/v7 v7.0.22/go.mod h1:VDexNy9NjmtAkrjNoI7tImv7FR4tf5zUA3ickqu5Pc8=
 github.com/onsi/ginkgo v0.0.0-20170829012221-11459a886d9c/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=

+ 2 - 2
rpc/medical/etc/medical.yaml

@@ -6,14 +6,14 @@ Etcd:
   Key: medical.rpc
 MysqlMain:
   dbName: field_medical_data
-  address: 192.168.3.217:4000
+  address: 192.168.3.14:4000
   userName: root
   passWord: =PDT49#80Z!RVv52_z
   maxOpenConns: 5
   maxIdleConns: 5
 BaseMysqlMain:
   dbName: base_service
-  address: 192.168.3.217:4000
+  address: 192.168.3.14:4000
   userName: root
   passWord: =PDT49#80Z!RVv52_z
   maxOpenConns: 5

+ 28 - 26
rpc/medical/internal/logic/claimeddistributorlistlogic.go

@@ -1,6 +1,7 @@
 package logic
 
 import (
+	"app.yhyue.com/moapp/jybase/common"
 	"bp.jydev.jianyu360.cn/ApplicationCenter/medicalField/entity"
 	"bp.jydev.jianyu360.cn/ApplicationCenter/medicalField/rpc/medical/internal/svc"
 	"bp.jydev.jianyu360.cn/ApplicationCenter/medicalField/rpc/medical/medical"
@@ -23,32 +24,33 @@ func NewClaimedDistributorListLogic(ctx context.Context, svcCtx *svc.ServiceCont
 }
 
 // ClaimedDistributorList 我认领的经销商列表
-func (l *ClaimedDistributorListLogic) ClaimedDistributorList(in *medical.ClaimedReq) (*medical.CommonResp, error) {
-	//rs, total := l.svcCtx.EntClaimSrv.DistributorList(int(in.UserId), in.AppId, int(in.Page), int(in.PageSize))
-	//resultList := []medical.ClaimReq{}
-	//if rs!=nil{
-	//	//for i:=0;i<len(*rs);i++{
-	//	//	resultList = append(resultList,
-	//	//		medical.ClaimReq{
-	//	//		Id: common.Int64All((*rs)[i]["id"]),
-	//	//		AppId: (*rs)[i]["appid"],
-	//	//		Id: common.Int64All((*rs)[i]["ent_id"]),
-	//	//		Id: common.Int64All((*rs)[i]["ent_name"]),
-	//	//		Id: common.Int64All((*rs)[i]["address"]),
-	//	//		Id: common.Int64All((*rs)[i]["establish_date"]),
-	//	//		Id: common.Int64All((*rs)[i]["regist_capital"]),
-	//	//		Id: common.Int64All((*rs)[i]["phone"]),
-	//	//		Id: common.Int64All((*rs)[i]["update_time"]),
-	//	//		: common.Int64All((*rs)[i]["create_time"]),
-	//	//
-	//	//		}
-	//	//		)
-	//	//}
-	//}
-
-	return &medical.CommonResp{
+func (l *ClaimedDistributorListLogic) ClaimedDistributorList(in *medical.ClaimedReq) (*medical.EntClaimListResp, error) {
+	rs, total := l.svcCtx.EntClaimSrv.DistributorList(int(in.UserId), in.AppId, int(in.Page), int(in.PageSize))
+	resultList := medical.EntClaimListStruct{}
+	if rs != nil {
+		for i := 0; i < len(*rs); i++ {
+			resultList.List = append(resultList.List,
+				&medical.EntClaim{
+					Id:              common.Int64All((*rs)[i]["id"]),
+					AppId:           common.ObjToString((*rs)[i]["appid"]),
+					EntId:           common.ObjToString((*rs)[i]["ent_id"]),
+					EntName:         common.ObjToString((*rs)[i]["ent_name"]),
+					Address:         common.ObjToString((*rs)[i]["address"]),
+					EstablishDate:   common.ObjToString((*rs)[i]["establish_date"]),
+					RegisterCapital: common.ObjToString((*rs)[i]["regist_capital"]),
+					Phone:           common.ObjToString((*rs)[i]["phone"]),
+					UpdateTime:      common.ObjToString((*rs)[i]["update_time"]),
+					CreateTime:      common.ObjToString((*rs)[i]["create_time"])},
+			)
+		}
+		resultList.Total = int64(total)
+	} else {
+		resultList.List = []*medical.EntClaim{}
+		resultList.Total = 0
+	}
+	return &medical.EntClaimListResp{
 		ErrorMsg:  "",
-		ErrorCode: entity.ERRORCODE,
-		Data:      nil,
+		ErrorCode: entity.SUCCESSCODE,
+		Data:      &resultList,
 	}, nil
 }

+ 31 - 4
rpc/medical/internal/logic/claimedinstitutionlistlogic.go

@@ -1,6 +1,8 @@
 package logic
 
 import (
+	"app.yhyue.com/moapp/jybase/common"
+	"bp.jydev.jianyu360.cn/ApplicationCenter/medicalField/entity"
 	"context"
 
 	"bp.jydev.jianyu360.cn/ApplicationCenter/medicalField/rpc/medical/internal/svc"
@@ -24,8 +26,33 @@ func NewClaimedInstitutionListLogic(ctx context.Context, svcCtx *svc.ServiceCont
 }
 
 // ClaimedInstitutionList 我认领的医疗机构列表
-func (l *ClaimedInstitutionListLogic) ClaimedInstitutionList(in *medical.ClaimedReq) (*medical.CommonResp, error) {
-	// todo: add your logic here and delete this line
-
-	return &medical.CommonResp{}, nil
+func (l *ClaimedInstitutionListLogic) ClaimedInstitutionList(in *medical.ClaimedReq) (*medical.EntClaimListResp, error) {
+	rs, total := l.svcCtx.EntClaimSrv.InstitutionList(int(in.UserId), in.AppId, int(in.Page), int(in.PageSize))
+	resultList := medical.EntClaimListStruct{}
+	if rs != nil {
+		for i := 0; i < len(*rs); i++ {
+			resultList.List = append(resultList.List,
+				&medical.EntClaim{
+					Id:              common.Int64All((*rs)[i]["id"]),
+					AppId:           common.ObjToString((*rs)[i]["appid"]),
+					EntId:           common.ObjToString((*rs)[i]["ent_id"]),
+					EntName:         common.ObjToString((*rs)[i]["ent_name"]),
+					Address:         common.ObjToString((*rs)[i]["address"]),
+					EstablishDate:   common.ObjToString((*rs)[i]["establish_date"]),
+					RegisterCapital: common.ObjToString((*rs)[i]["regist_capital"]),
+					Phone:           common.ObjToString((*rs)[i]["phone"]),
+					UpdateTime:      common.ObjToString((*rs)[i]["update_time"]),
+					CreateTime:      common.ObjToString((*rs)[i]["create_time"])},
+			)
+		}
+		resultList.Total = int64(total)
+	} else {
+		resultList.List = []*medical.EntClaim{}
+		resultList.Total = 0
+	}
+	return &medical.EntClaimListResp{
+		ErrorMsg:  "",
+		ErrorCode: entity.SUCCESSCODE,
+		Data:      &resultList,
+	}, nil
 }

+ 1 - 1
rpc/medical/internal/logic/claimlogic.go

@@ -49,6 +49,6 @@ func (l *ClaimLogic) Claim(in *medical.ClaimReq) (*medical.CommonResp, error) {
 	}
 	return &medical.CommonResp{
 		ErrorMsg:  "",
-		ErrorCode: entity.ERRORCODE,
+		ErrorCode: entity.SUCCESSCODE,
 	}, nil
 }

+ 9 - 5
rpc/medical/internal/logic/isclaimedlogic.go

@@ -1,6 +1,7 @@
 package logic
 
 import (
+	"bp.jydev.jianyu360.cn/ApplicationCenter/medicalField/entity"
 	"context"
 
 	"bp.jydev.jianyu360.cn/ApplicationCenter/medicalField/rpc/medical/internal/svc"
@@ -23,9 +24,12 @@ func NewIsClaimedLogic(ctx context.Context, svcCtx *svc.ServiceContext) *IsClaim
 	}
 }
 
-//  是否认领(经销商/医疗机构)
-func (l *IsClaimedLogic) IsClaimed(in *medical.IsClaimedReq) (*medical.CommonResp, error) {
-	// todo: add your logic here and delete this line
-
-	return &medical.CommonResp{}, nil
+// IsClaimed 是否认领(经销商/医疗机构)
+func (l *IsClaimedLogic) IsClaimed(in *medical.IsClaimedReq) (*medical.IsClaimedResp, error) {
+	rs := l.svcCtx.EntClaimSrv.IsClaimed(int(in.UserId), in.AppId, in.EntId, int(in.Type))
+	return &medical.IsClaimedResp{
+		ErrorCode: entity.SUCCESSCODE,
+		ErrorMsg:  "",
+		Status:    rs,
+	}, nil
 }

+ 13 - 4
rpc/medical/internal/logic/unclaimedlogic.go

@@ -1,6 +1,7 @@
 package logic
 
 import (
+	"bp.jydev.jianyu360.cn/ApplicationCenter/medicalField/entity"
 	"context"
 
 	"bp.jydev.jianyu360.cn/ApplicationCenter/medicalField/rpc/medical/internal/svc"
@@ -23,9 +24,17 @@ func NewUnClaimedLogic(ctx context.Context, svcCtx *svc.ServiceContext) *UnClaim
 	}
 }
 
-//  取消认领(经销商/医疗机构)
+// UnClaimed 取消认领(经销商/医疗机构)
 func (l *UnClaimedLogic) UnClaimed(in *medical.UnclaimedReq) (*medical.CommonResp, error) {
-	// todo: add your logic here and delete this line
-
-	return &medical.CommonResp{}, nil
+	rs := l.svcCtx.EntClaimSrv.Unclaimed(int(in.Id), int(in.UserId))
+	if !rs {
+		return &medical.CommonResp{
+			ErrorMsg:  "操作失败",
+			ErrorCode: entity.ERRORCODE,
+		}, nil
+	}
+	return &medical.CommonResp{
+		ErrorMsg:  "",
+		ErrorCode: entity.SUCCESSCODE,
+	}, nil
 }

+ 3 - 3
rpc/medical/internal/server/medicalserver.go

@@ -71,19 +71,19 @@ func (s *MedicalServer) UnClaimed(ctx context.Context, in *medical.UnclaimedReq)
 }
 
 //  是否认领(经销商/医疗机构)
-func (s *MedicalServer) IsClaimed(ctx context.Context, in *medical.IsClaimedReq) (*medical.CommonResp, error) {
+func (s *MedicalServer) IsClaimed(ctx context.Context, in *medical.IsClaimedReq) (*medical.IsClaimedResp, error) {
 	l := logic.NewIsClaimedLogic(ctx, s.svcCtx)
 	return l.IsClaimed(in)
 }
 
 //  我认领的经销商列表
-func (s *MedicalServer) ClaimedDistributorList(ctx context.Context, in *medical.ClaimedReq) (*medical.CommonResp, error) {
+func (s *MedicalServer) ClaimedDistributorList(ctx context.Context, in *medical.ClaimedReq) (*medical.EntClaimListResp, error) {
 	l := logic.NewClaimedDistributorListLogic(ctx, s.svcCtx)
 	return l.ClaimedDistributorList(in)
 }
 
 //  我认领的医疗机构列表
-func (s *MedicalServer) ClaimedInstitutionList(ctx context.Context, in *medical.ClaimedReq) (*medical.CommonResp, error) {
+func (s *MedicalServer) ClaimedInstitutionList(ctx context.Context, in *medical.ClaimedReq) (*medical.EntClaimListResp, error) {
 	l := logic.NewClaimedInstitutionListLogic(ctx, s.svcCtx)
 	return l.ClaimedInstitutionList(in)
 }

+ 38 - 6
rpc/medical/medical.proto

@@ -15,7 +15,7 @@ message Response {
 message CommonResp{
   int64           ErrorCode = 1;  // 响应代码
   string          ErrorMsg = 2;   // 响应信息
-  google.protobuf.Any Data = 3;   // 响应数据
+  bytes           Data = 3;   // 响应数据
 }
 message CommonReq {
     int64           userId  =1;
@@ -132,7 +132,6 @@ message PortraitResp{
 }
 // 认领
 message ClaimReq{
-  int64 Id = 10;
   int64 UserId = 1 ;// 用户id
   string EntId = 2 ;// 公司id
   string EntName = 3 ;// 公司名称
@@ -143,6 +142,7 @@ message ClaimReq{
   string Phone = 8 ;// 联系方式
   string AppId = 9 ;//appid
 }
+
 // 取消认领
 message UnclaimedReq{
   int64  UserId = 1 ;// 用户id
@@ -152,8 +152,14 @@ message UnclaimedReq{
 // 是否是认领的
 message IsClaimedReq{
   int64  UserId = 1 ;// 用户id
-  int64  Id = 2; // 认领记录id
+  string  EntId = 2; // 认领记录id
   string AppId = 3 ;//appid
+  int64  Type = 4;// 1-医疗机构 2-经销商
+}
+message IsClaimedResp{
+  int64  ErrorCode = 1;  // 响应代码
+  string ErrorMsg = 2;   // 响应信息
+  bool   Status =3;// 是否认领
 }
 // 我认领的
 message ClaimedReq{
@@ -162,6 +168,32 @@ message ClaimedReq{
   int64  Page = 3; // 认领记录id
   int64 PageSize = 4 ;//appid
 }
+message  EntClaim{
+  int64 Id = 10;
+  int64 UserId = 1 ;// 用户id
+  string EntId = 2 ;// 公司id
+  string EntName = 3 ;// 公司名称
+  int64 Type = 4 ;// 类型;1:医疗机构 2:经销商'
+  string Address = 5 ;// 企业地址
+  string EstablishDate = 6 ;// 成立日期
+  string RegisterCapital = 7 ;// 注册资本
+  string Phone = 8 ;// 联系方式
+  string AppId = 9 ;//appid
+  string CreateTime = 11 ;//appid
+  string UpdateTime = 12 ;//appid
+}
+// 列表
+message  EntClaimListStruct{
+  repeated EntClaim List =1;
+  int64    Total = 2;
+}
+// 关注列表响应
+message  EntClaimListResp{
+  int64           ErrorCode = 1;  // 响应代码
+  string          ErrorMsg = 2;   // 响应信息
+  EntClaimListStruct Data =3;
+}
+
 service Medical {
       //搜索医疗机构
       rpc Institution(SearchInstitutionReq) returns(CompanyResp);
@@ -180,9 +212,9 @@ service Medical {
       // 取消认领(经销商/医疗机构)
       rpc UnClaimed(UnclaimedReq) returns(CommonResp);
       // 是否认领(经销商/医疗机构)
-      rpc IsClaimed(IsClaimedReq) returns(CommonResp);
+      rpc IsClaimed(IsClaimedReq) returns(IsClaimedResp);
       // 我认领的经销商列表
-      rpc ClaimedDistributorList(ClaimedReq) returns(CommonResp);
+      rpc ClaimedDistributorList(ClaimedReq) returns(EntClaimListResp);
       // 我认领的医疗机构列表
-      rpc ClaimedInstitutionList(ClaimedReq) returns(CommonResp);
+      rpc ClaimedInstitutionList(ClaimedReq) returns(EntClaimListResp);
 }

+ 6 - 6
rpc/medical/medical/medical.go

@@ -29,11 +29,11 @@ type (
 		//  取消认领(经销商/医疗机构)
 		UnClaimed(ctx context.Context, in *UnclaimedReq, opts ...grpc.CallOption) (*CommonResp, error)
 		//  是否认领(经销商/医疗机构)
-		IsClaimed(ctx context.Context, in *IsClaimedReq, opts ...grpc.CallOption) (*CommonResp, error)
+		IsClaimed(ctx context.Context, in *IsClaimedReq, opts ...grpc.CallOption) (*IsClaimedResp, error)
 		//  我认领的经销商列表
-		ClaimedDistributorList(ctx context.Context, in *ClaimedReq, opts ...grpc.CallOption) (*CommonResp, error)
+		ClaimedDistributorList(ctx context.Context, in *ClaimedReq, opts ...grpc.CallOption) (*EntClaimListResp, error)
 		//  我认领的医疗机构列表
-		ClaimedInstitutionList(ctx context.Context, in *ClaimedReq, opts ...grpc.CallOption) (*CommonResp, error)
+		ClaimedInstitutionList(ctx context.Context, in *ClaimedReq, opts ...grpc.CallOption) (*EntClaimListResp, error)
 	}
 
 	defaultMedical struct {
@@ -96,19 +96,19 @@ func (m *defaultMedical) UnClaimed(ctx context.Context, in *UnclaimedReq, opts .
 }
 
 //  是否认领(经销商/医疗机构)
-func (m *defaultMedical) IsClaimed(ctx context.Context, in *IsClaimedReq, opts ...grpc.CallOption) (*CommonResp, error) {
+func (m *defaultMedical) IsClaimed(ctx context.Context, in *IsClaimedReq, opts ...grpc.CallOption) (*IsClaimedResp, error) {
 	client := NewMedicalClient(m.cli.Conn())
 	return client.IsClaimed(ctx, in, opts...)
 }
 
 //  我认领的经销商列表
-func (m *defaultMedical) ClaimedDistributorList(ctx context.Context, in *ClaimedReq, opts ...grpc.CallOption) (*CommonResp, error) {
+func (m *defaultMedical) ClaimedDistributorList(ctx context.Context, in *ClaimedReq, opts ...grpc.CallOption) (*EntClaimListResp, error) {
 	client := NewMedicalClient(m.cli.Conn())
 	return client.ClaimedDistributorList(ctx, in, opts...)
 }
 
 //  我认领的医疗机构列表
-func (m *defaultMedical) ClaimedInstitutionList(ctx context.Context, in *ClaimedReq, opts ...grpc.CallOption) (*CommonResp, error) {
+func (m *defaultMedical) ClaimedInstitutionList(ctx context.Context, in *ClaimedReq, opts ...grpc.CallOption) (*EntClaimListResp, error) {
 	client := NewMedicalClient(m.cli.Conn())
 	return client.ClaimedInstitutionList(ctx, in, opts...)
 }

Файлын зөрүү хэтэрхий том тул дарагдсан байна
+ 654 - 292
rpc/medical/medical/medical.pb.go


+ 16 - 16
rpc/medical/medical/medical_grpc.pb.go

@@ -1,7 +1,7 @@
 // Code generated by protoc-gen-go-grpc. DO NOT EDIT.
 // versions:
 // - protoc-gen-go-grpc v1.2.0
-// - protoc             v3.15.1
+// - protoc             v3.19.4
 // source: medical.proto
 
 package medical
@@ -39,11 +39,11 @@ type MedicalClient interface {
 	// 取消认领(经销商/医疗机构)
 	UnClaimed(ctx context.Context, in *UnclaimedReq, opts ...grpc.CallOption) (*CommonResp, error)
 	// 是否认领(经销商/医疗机构)
-	IsClaimed(ctx context.Context, in *IsClaimedReq, opts ...grpc.CallOption) (*CommonResp, error)
+	IsClaimed(ctx context.Context, in *IsClaimedReq, opts ...grpc.CallOption) (*IsClaimedResp, error)
 	// 我认领的经销商列表
-	ClaimedDistributorList(ctx context.Context, in *ClaimedReq, opts ...grpc.CallOption) (*CommonResp, error)
+	ClaimedDistributorList(ctx context.Context, in *ClaimedReq, opts ...grpc.CallOption) (*EntClaimListResp, error)
 	// 我认领的医疗机构列表
-	ClaimedInstitutionList(ctx context.Context, in *ClaimedReq, opts ...grpc.CallOption) (*CommonResp, error)
+	ClaimedInstitutionList(ctx context.Context, in *ClaimedReq, opts ...grpc.CallOption) (*EntClaimListResp, error)
 }
 
 type medicalClient struct {
@@ -126,8 +126,8 @@ func (c *medicalClient) UnClaimed(ctx context.Context, in *UnclaimedReq, opts ..
 	return out, nil
 }
 
-func (c *medicalClient) IsClaimed(ctx context.Context, in *IsClaimedReq, opts ...grpc.CallOption) (*CommonResp, error) {
-	out := new(CommonResp)
+func (c *medicalClient) IsClaimed(ctx context.Context, in *IsClaimedReq, opts ...grpc.CallOption) (*IsClaimedResp, error) {
+	out := new(IsClaimedResp)
 	err := c.cc.Invoke(ctx, "/medical.Medical/IsClaimed", in, out, opts...)
 	if err != nil {
 		return nil, err
@@ -135,8 +135,8 @@ func (c *medicalClient) IsClaimed(ctx context.Context, in *IsClaimedReq, opts ..
 	return out, nil
 }
 
-func (c *medicalClient) ClaimedDistributorList(ctx context.Context, in *ClaimedReq, opts ...grpc.CallOption) (*CommonResp, error) {
-	out := new(CommonResp)
+func (c *medicalClient) ClaimedDistributorList(ctx context.Context, in *ClaimedReq, opts ...grpc.CallOption) (*EntClaimListResp, error) {
+	out := new(EntClaimListResp)
 	err := c.cc.Invoke(ctx, "/medical.Medical/ClaimedDistributorList", in, out, opts...)
 	if err != nil {
 		return nil, err
@@ -144,8 +144,8 @@ func (c *medicalClient) ClaimedDistributorList(ctx context.Context, in *ClaimedR
 	return out, nil
 }
 
-func (c *medicalClient) ClaimedInstitutionList(ctx context.Context, in *ClaimedReq, opts ...grpc.CallOption) (*CommonResp, error) {
-	out := new(CommonResp)
+func (c *medicalClient) ClaimedInstitutionList(ctx context.Context, in *ClaimedReq, opts ...grpc.CallOption) (*EntClaimListResp, error) {
+	out := new(EntClaimListResp)
 	err := c.cc.Invoke(ctx, "/medical.Medical/ClaimedInstitutionList", in, out, opts...)
 	if err != nil {
 		return nil, err
@@ -174,11 +174,11 @@ type MedicalServer interface {
 	// 取消认领(经销商/医疗机构)
 	UnClaimed(context.Context, *UnclaimedReq) (*CommonResp, error)
 	// 是否认领(经销商/医疗机构)
-	IsClaimed(context.Context, *IsClaimedReq) (*CommonResp, error)
+	IsClaimed(context.Context, *IsClaimedReq) (*IsClaimedResp, error)
 	// 我认领的经销商列表
-	ClaimedDistributorList(context.Context, *ClaimedReq) (*CommonResp, error)
+	ClaimedDistributorList(context.Context, *ClaimedReq) (*EntClaimListResp, error)
 	// 我认领的医疗机构列表
-	ClaimedInstitutionList(context.Context, *ClaimedReq) (*CommonResp, error)
+	ClaimedInstitutionList(context.Context, *ClaimedReq) (*EntClaimListResp, error)
 	mustEmbedUnimplementedMedicalServer()
 }
 
@@ -210,13 +210,13 @@ func (UnimplementedMedicalServer) Claim(context.Context, *ClaimReq) (*CommonResp
 func (UnimplementedMedicalServer) UnClaimed(context.Context, *UnclaimedReq) (*CommonResp, error) {
 	return nil, status.Errorf(codes.Unimplemented, "method UnClaimed not implemented")
 }
-func (UnimplementedMedicalServer) IsClaimed(context.Context, *IsClaimedReq) (*CommonResp, error) {
+func (UnimplementedMedicalServer) IsClaimed(context.Context, *IsClaimedReq) (*IsClaimedResp, error) {
 	return nil, status.Errorf(codes.Unimplemented, "method IsClaimed not implemented")
 }
-func (UnimplementedMedicalServer) ClaimedDistributorList(context.Context, *ClaimedReq) (*CommonResp, error) {
+func (UnimplementedMedicalServer) ClaimedDistributorList(context.Context, *ClaimedReq) (*EntClaimListResp, error) {
 	return nil, status.Errorf(codes.Unimplemented, "method ClaimedDistributorList not implemented")
 }
-func (UnimplementedMedicalServer) ClaimedInstitutionList(context.Context, *ClaimedReq) (*CommonResp, error) {
+func (UnimplementedMedicalServer) ClaimedInstitutionList(context.Context, *ClaimedReq) (*EntClaimListResp, error) {
 	return nil, status.Errorf(codes.Unimplemented, "method ClaimedInstitutionList not implemented")
 }
 func (UnimplementedMedicalServer) mustEmbedUnimplementedMedicalServer() {}

+ 2 - 2
service/InstitutionService_test.go

@@ -11,7 +11,7 @@ var EntClaimSrv EntClaimService
 
 func init() {
 	entity.Mysql = &mysql.Mysql{
-		Address:      "192.168.3.217:4000",
+		Address:      "192.168.3.14:4000",
 		UserName:     "root",
 		PassWord:     "=PDT49#80Z!RVv52_z",
 		DBName:       "field_medical_data",
@@ -20,7 +20,7 @@ func init() {
 	}
 	entity.Mysql.Init()
 	BaseMysqlConn := &mysql.Mysql{
-		Address:      "192.168.3.217:4000",
+		Address:      "192.168.3.14:4000",
 		UserName:     "root",
 		PassWord:     "=PDT49#80Z!RVv52_z",
 		DBName:       "base_service",

+ 4 - 1
service/claim.go

@@ -21,6 +21,9 @@ func NewEntClaimSrv(conn *entity.Conn) *EntClaimService {
 
 // Claim 认领
 func (e *EntClaimService) Claim(data *entity.EntClaim) bool {
+	if e.IsClaimed(data.UserId, data.AppId, data.EntId, data.Type) {
+		return true
+	}
 	return e.BaseMysql.Insert(entity.TableDomainEntClaim, common.StructToMapMore(data)) > 0
 }
 
@@ -50,7 +53,7 @@ func (e *EntClaimService) Unclaimed(id, userId int) bool {
 }
 
 // IsClaimed 是否认领
-func (e *EntClaimService) IsClaimed(userId int, appId string, entId int, typeCode int) bool {
+func (e *EntClaimService) IsClaimed(userId int, appId string, entId string, typeCode int) bool {
 	query := map[string]interface{}{
 		"user_id": userId,
 		"type":    typeCode,

+ 33 - 13
service/claim_test.go

@@ -2,7 +2,7 @@ package service
 
 import (
 	"bp.jydev.jianyu360.cn/ApplicationCenter/medicalField/entity"
-	"reflect"
+	"fmt"
 	"testing"
 )
 
@@ -18,7 +18,11 @@ func TestEntClaimService_Claim(t *testing.T) {
 		want bool
 	}{
 		{"认领医疗机构", args{
-			data: &entity.EntClaim{UserId: 1, AppId: "10000", EntId: "11", EntName: "877", Status: entity.StatusClaimed, Type: entity.TypeInstitution, Address: "2223", EstablishDate: "2022", RegisterCapital: "dd", Phone: "18238182402", CreateTime: "2022-08-19 15:08:00"},
+			data: &entity.EntClaim{UserId: 1, AppId: "10000", EntId: "1122", EntName: "877", Status: entity.StatusClaimed, Type: entity.TypeInstitution, Address: "2223", EstablishDate: "2022", RegisterCapital: "dd", Phone: "18238182402", CreateTime: "2022-08-19 15:08:00"},
+		}, true,
+		},
+		{"认领医疗机构-2", args{
+			data: &entity.EntClaim{UserId: 2, AppId: "10000", EntId: "7", EntName: "8757", Status: entity.StatusClaimed, Type: entity.TypeDistributor, Address: "2223", EstablishDate: "2022", RegisterCapital: "dd", Phone: "18238182402", CreateTime: "2022-08-19 15:08:00"},
 		}, true,
 		},
 	}
@@ -30,6 +34,7 @@ func TestEntClaimService_Claim(t *testing.T) {
 			}
 		})
 	}
+
 }
 
 // 我认领的经销商的列表
@@ -46,14 +51,17 @@ func TestEntClaimService_DistributorList(t *testing.T) {
 		want *[]map[string]interface{}
 	}{
 		{
-			name: "我认领的医疗机构", args: args{userId: 1, appId: "10000", page: 1, pageSize: 10}, want: nil,
+			name: "我认领的经销商", args: args{userId: 1, appId: "10000", page: 0, pageSize: 10}, want: nil,
+		},
+		{
+			name: "我认领的经销商-2", args: args{userId: 8, appId: "10000", page: 0, pageSize: 10}, want: nil,
 		},
 	}
 	for _, tt := range tests {
 		t.Run(tt.name, func(t *testing.T) {
-			if got, _ := EntClaimSrv.DistributorList(tt.args.userId, tt.args.appId, tt.args.page, tt.args.pageSize); !reflect.DeepEqual(got, tt.want) {
-				t.Errorf("DistributorList() = %v, want %v", got, tt.want)
-			}
+			got, total := EntClaimSrv.DistributorList(tt.args.userId, tt.args.appId, tt.args.page, tt.args.pageSize)
+			fmt.Println(got, total)
+			t.Log(got, total)
 		})
 	}
 }
@@ -71,13 +79,17 @@ func TestEntClaimService_InstitutionList(t *testing.T) {
 		args args
 		want *[]map[string]interface{}
 	}{
-		// TODO: Add test cases.
+		{
+			name: "我认领的医疗机构", args: args{userId: 1, appId: "10000", page: 0, pageSize: 10}, want: nil,
+		},
+		{
+			name: "我认领的医疗机构-2", args: args{userId: 3, appId: "10000", page: 0, pageSize: 10}, want: nil,
+		},
 	}
 	for _, tt := range tests {
 		t.Run(tt.name, func(t *testing.T) {
-			if got, _ := EntClaimSrv.InstitutionList(tt.args.userId, tt.args.appId, tt.args.page, tt.args.pageSize); !reflect.DeepEqual(got, tt.want) {
-				t.Errorf("InstitutionList() = %v, want %v", got, tt.want)
-			}
+			got, total := EntClaimSrv.InstitutionList(tt.args.userId, tt.args.appId, tt.args.page, tt.args.pageSize)
+			t.Log(got, total)
 		})
 	}
 }
@@ -87,7 +99,7 @@ func TestEntClaimService_IsClaimed(t *testing.T) {
 	type args struct {
 		userId   int
 		appId    string
-		entId    int
+		entId    string
 		typeCode int
 	}
 	tests := []struct {
@@ -95,7 +107,7 @@ func TestEntClaimService_IsClaimed(t *testing.T) {
 		args args
 		want bool
 	}{
-		// TODO: Add test cases.
+		{"是否认领", args{userId: 1, typeCode: 1, entId: "1", appId: "10000"}, true},
 	}
 	for _, tt := range tests {
 		t.Run(tt.name, func(t *testing.T) {
@@ -117,7 +129,15 @@ func TestEntClaimService_Unclaimed(t *testing.T) {
 		args args
 		want bool
 	}{
-		// TODO: Add test cases.
+		{
+			"取消认领", args{userId: 1, id: 2}, true,
+		},
+		{
+			"取消认领-2", args{userId: 100, id: 2}, false,
+		},
+		{
+			"取消认领-3", args{userId: 100, id: 900009}, false,
+		},
 	}
 	for _, tt := range tests {
 		t.Run(tt.name, func(t *testing.T) {

+ 113 - 10
service/coverage.html

@@ -59,6 +59,8 @@
 				
 				<option value="file1">bp.jydev.jianyu360.cn/ApplicationCenter/medicalField/service/InstitutionService.go (100.0%)</option>
 				
+				<option value="file2">bp.jydev.jianyu360.cn/ApplicationCenter/medicalField/service/claim.go (93.5%)</option>
+				
 				</select>
 			</div>
 			<div id="legend">
@@ -96,7 +98,7 @@ type AuthService struct{}
 func (b AuthService) UserAuthInfoSave(in *medical.UserInfo) (bool, string) <span class="cov10" title="4">{
         //先判断用户是否存在
         user := entity.BaseMysql.FindOne(entity.DOMAIN_CAPITAL_RETENTION, map[string]interface{}{
-                "user_id": in.UserId,"appid":in.Appid,
+                "user_id": in.UserId, "appid": in.Appid,
         }, "id", "")
         if user != nil </span><span class="cov5" title="2">{
                 if in.OperationType == "add" </span><span class="cov1" title="1">{
@@ -111,15 +113,15 @@ func (b AuthService) UserAuthInfoSave(in *medical.UserInfo) (bool, string) <span
         <span class="cov5" title="2">if in.OperationType == "update" </span><span class="cov1" title="1">{
                 //修改处理
                 data := map[string]interface{}{
-                        "name":  in.Name,
-                        "phone": in.Phone,
+                        "name":       in.Name,
+                        "phone":      in.Phone,
                         "position":   in.Position,
                         "department": in.Department,
-                        "mail":  in.Mail,
+                        "mail":       in.Mail,
                         "ent_code":   in.EntCode,
                         "ent_name":   in.EntName,
                 }
-                ok1 := entity.BaseMysql.Update(entity.DOMAIN_CAPITAL_RETENTION, map[string]interface{}{"user_id": in.UserId,"appid":in.Appid}, data)
+                ok1 := entity.BaseMysql.Update(entity.DOMAIN_CAPITAL_RETENTION, map[string]interface{}{"user_id": in.UserId, "appid": in.Appid}, data)
                 if ok1 </span><span class="cov1" title="1">{
                         return true, ""
                 }</span> else<span class="cov0" title="0"> {
@@ -129,16 +131,16 @@ func (b AuthService) UserAuthInfoSave(in *medical.UserInfo) (bool, string) <span
         } else<span class="cov1" title="1"> {
                 //新增处理
                 data := map[string]interface{}{
-                        "name":   in.Name,
-                        "phone":  in.Phone,
+                        "name":        in.Name,
+                        "phone":       in.Phone,
                         "position":    in.Position,
                         "department":  in.Department,
-                        "mail":   in.Mail,
+                        "mail":        in.Mail,
                         "ent_code":    in.EntCode,
                         "ent_name":    in.EntName,
                         "user_id":     in.UserId,
                         "create_time": time.Now().Local(),
-                        "appid":in.Appid,
+                        "appid":       in.Appid,
                 }
                 ok := entity.BaseMysql.Insert(entity.DOMAIN_CAPITAL_RETENTION, data)
                 if ok &gt; 0 </span><span class="cov1" title="1">{
@@ -154,7 +156,7 @@ func (b AuthService) UserAuthInfoSave(in *medical.UserInfo) (bool, string) <span
 func (b AuthService) UserAuthInfo(in *medical.CommonReq) *map[string]interface{} <span class="cov5" title="2">{
         //先判断用户是否存在
         user := entity.BaseMysql.FindOne(entity.DOMAIN_CAPITAL_RETENTION, map[string]interface{}{
-                "user_id": in.UserId,"appid":in.Appid,
+                "user_id": in.UserId, "appid": in.Appid,
         }, "id", "")
         return user
 }</span>
@@ -176,6 +178,107 @@ func (b InstitutionService) GetFilterItem() (levelList, typeList *[]map[string]i
         typeList = entity.Mysql.Find(entity.CODE_MEDICAL_INSTITUTION_TYPE, nil, "*", "", -1, -1)
         return
 }</span>
+</pre>
+		
+		<pre class="file" id="file2" style="display: none">package service
+
+import (
+        "app.yhyue.com/moapp/jybase/common"
+        "app.yhyue.com/moapp/jybase/date"
+        "bp.jydev.jianyu360.cn/ApplicationCenter/medicalField/entity"
+        "github.com/zeromicro/go-zero/core/logx"
+)
+
+// EntClaimService 企业认领
+type EntClaimService struct {
+        *entity.Conn
+}
+
+// NewEntClaimSrv 创建一个EntClaimSrv实例
+func NewEntClaimSrv(conn *entity.Conn) *EntClaimService <span class="cov1" title="1">{
+        return &amp;EntClaimService{
+                conn,
+        }
+}</span>
+
+// Claim 认领
+func (e *EntClaimService) Claim(data *entity.EntClaim) bool <span class="cov6" title="2">{
+        if e.IsClaimed(data.UserId, data.AppId, data.EntId, data.Type) </span><span class="cov0" title="0">{
+                return true
+        }</span>
+        <span class="cov6" title="2">return e.BaseMysql.Insert(entity.TableDomainEntClaim, common.StructToMapMore(data)) &gt; 0</span>
+}
+
+// Unclaimed // 取消认领
+func (e *EntClaimService) Unclaimed(id, userId int) bool <span class="cov10" title="3">{
+        query := map[string]interface{}{
+                "id": id,
+        }
+        // 1. 查询该条数据
+        rs := e.BaseMysql.FindOne(entity.TableDomainEntClaim, query, "user_id", "")
+        if rs == nil || len(*rs) == 0 </span><span class="cov1" title="1">{
+                logx.Errorf("取消认领:无效的id %v", id)
+                return false
+        }</span>
+        // 2. 存在则判断是否是该用户的
+        <span class="cov6" title="2">rsUerId := common.IntAll((*rs)["user_id"])
+        if rsUerId != userId </span><span class="cov1" title="1">{
+                logx.Errorf("取消认领:id[%v]与用户id[%v]不匹配 ", id, userId)
+                return false
+        }</span>
+        // 3. 取消认领
+        <span class="cov1" title="1">update := map[string]interface{}{
+                "status":      entity.StatusUnClaimed,
+                "update_time": date.NowFormat(date.Date_Full_Layout),
+        }
+        return e.BaseMysql.Update(entity.TableDomainEntClaim, query, update)</span>
+}
+
+// IsClaimed 是否认领
+func (e *EntClaimService) IsClaimed(userId int, appId string, entId string, typeCode int) bool <span class="cov10" title="3">{
+        query := map[string]interface{}{
+                "user_id": userId,
+                "type":    typeCode,
+                "ent_id":  entId,
+                "status":  entity.StatusClaimed,
+        }
+        return e.BaseMysql.Count(entity.TableDomainEntClaim, query) &gt; 0
+}</span>
+
+// DistributorList 关注的经销商列表
+func (e *EntClaimService) DistributorList(userId int, appId string, page int, pageSize int) (*[]map[string]interface{}, int) <span class="cov6" title="2">{
+
+        query := map[string]interface{}{
+                "user_id": userId,
+                "appid":   appId,
+                "type":    entity.TypeDistributor,
+                "status":  entity.StatusClaimed,
+        }
+        field := "id,appid,user_id,ent_id,ent_name,address,create_time"
+        order := "create_time desc"
+        total := e.BaseMysql.Count(entity.TableDomainEntClaim, query)
+        if total == 0 </span><span class="cov6" title="2">{
+                return nil, 0
+        }</span>
+        <span class="cov0" title="0">return e.BaseMysql.Find(entity.TableDomainEntClaim, query, field, order, (page-1)*pageSize, pageSize), int(total)</span>
+}
+
+// InstitutionList  我关注的医疗机构列表
+func (e *EntClaimService) InstitutionList(userId int, appId string, page int, pageSize int) (*[]map[string]interface{}, int) <span class="cov6" title="2">{
+        query := map[string]interface{}{
+                "user_id": userId,
+                "appid":   appId,
+                "type":    entity.TypeInstitution,
+                "status":  entity.StatusClaimed,
+        }
+        field := "id,appid,user_id,ent_id,ent_name,address,create_time"
+        order := "create_time desc"
+        total := e.BaseMysql.Count(entity.TableDomainEntClaim, query)
+        if total == 0 </span><span class="cov1" title="1">{
+                return nil, 0
+        }</span>
+        <span class="cov1" title="1">return e.BaseMysql.Find(entity.TableDomainEntClaim, query, field, order, (page-1)*pageSize, pageSize), int(total)</span>
+}
 </pre>
 		
 		</div>

+ 17 - 1
service/test_cover.out

@@ -1,5 +1,4 @@
 mode: count
-bp.jydev.jianyu360.cn/ApplicationCenter/medicalField/service/InstitutionService.go:10.93,16.2 3 1
 bp.jydev.jianyu360.cn/ApplicationCenter/medicalField/service/AuthService.go:14.76,19.17 2 4
 bp.jydev.jianyu360.cn/ApplicationCenter/medicalField/service/AuthService.go:29.2,29.34 1 2
 bp.jydev.jianyu360.cn/ApplicationCenter/medicalField/service/AuthService.go:19.17,20.32 1 2
@@ -13,3 +12,20 @@ bp.jydev.jianyu360.cn/ApplicationCenter/medicalField/service/AuthService.go:47.8
 bp.jydev.jianyu360.cn/ApplicationCenter/medicalField/service/AuthService.go:62.13,64.4 1 1
 bp.jydev.jianyu360.cn/ApplicationCenter/medicalField/service/AuthService.go:64.9,67.4 2 0
 bp.jydev.jianyu360.cn/ApplicationCenter/medicalField/service/AuthService.go:72.82,78.2 2 2
+bp.jydev.jianyu360.cn/ApplicationCenter/medicalField/service/InstitutionService.go:10.93,16.2 3 1
+bp.jydev.jianyu360.cn/ApplicationCenter/medicalField/service/claim.go:16.57,20.2 1 1
+bp.jydev.jianyu360.cn/ApplicationCenter/medicalField/service/claim.go:23.61,24.65 1 2
+bp.jydev.jianyu360.cn/ApplicationCenter/medicalField/service/claim.go:27.2,27.89 1 2
+bp.jydev.jianyu360.cn/ApplicationCenter/medicalField/service/claim.go:24.65,26.3 1 0
+bp.jydev.jianyu360.cn/ApplicationCenter/medicalField/service/claim.go:31.58,37.32 3 3
+bp.jydev.jianyu360.cn/ApplicationCenter/medicalField/service/claim.go:42.2,43.23 2 2
+bp.jydev.jianyu360.cn/ApplicationCenter/medicalField/service/claim.go:48.2,52.70 2 1
+bp.jydev.jianyu360.cn/ApplicationCenter/medicalField/service/claim.go:37.32,40.3 2 1
+bp.jydev.jianyu360.cn/ApplicationCenter/medicalField/service/claim.go:43.23,46.3 2 1
+bp.jydev.jianyu360.cn/ApplicationCenter/medicalField/service/claim.go:56.96,64.2 2 3
+bp.jydev.jianyu360.cn/ApplicationCenter/medicalField/service/claim.go:67.126,78.16 5 2
+bp.jydev.jianyu360.cn/ApplicationCenter/medicalField/service/claim.go:81.2,81.115 1 0
+bp.jydev.jianyu360.cn/ApplicationCenter/medicalField/service/claim.go:78.16,80.3 1 2
+bp.jydev.jianyu360.cn/ApplicationCenter/medicalField/service/claim.go:85.126,95.16 5 2
+bp.jydev.jianyu360.cn/ApplicationCenter/medicalField/service/claim.go:98.2,98.115 1 1
+bp.jydev.jianyu360.cn/ApplicationCenter/medicalField/service/claim.go:95.16,97.3 1 1

+ 45 - 2
test/rpc_test.http

@@ -1,8 +1,51 @@
+### 我认领的经销商列表
 GRPC {{host}}:8080/medical.Medical/ClaimedDistributorList
 
 {
-  "AppId": "1000",
+  "AppId": "10000",
   "UserId": 1,
   "Page": 0,
   "PageSize": 10
-}
+}
+
+### 我认领的医疗机构列表
+GRPC {{host}}:8080/medical.Medical/ClaimedInstitutionList
+
+{
+  "AppId": "10000",
+  "UserId": 1,
+  "Page": 0,
+  "PageSize": 10
+}
+
+### 认领
+GRPC {{host}}:8080/medical.Medical/Claim
+
+{
+  "AppId": "10000",
+  "UserId": 1,
+  "EntId": "2022",
+  "EntName": "剑鱼",
+  "Type": 1,
+  "Address": "郑州",
+  "EstablishDate": "2022-08-22 14:28:00",
+  "Phone": "18238182402",
+  "RegisterCapital": "高新区"
+}
+### 取消认领
+GRPC {{host}}:8080/medical.Medical/UnClaimed
+
+{
+  "UserId": 1,
+  "Id": 1,
+  "AppId": "10000"
+}
+### 是否认领
+GRPC {{host}}:8080/medical.Medical/IsClaimed
+
+{
+  "AppId": "10000",
+  "UserId": 1,
+  "Type": 1,
+  "EntId": "1"
+}

Энэ ялгаанд хэт олон файл өөрчлөгдсөн тул зарим файлыг харуулаагүй болно