Compare commits
212 Commits
feat-cjy-n
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
abcd4609c7 | ||
|
|
f10c36d9fa | ||
|
|
6106253c98 | ||
| 7eba8c6293 | |||
| de4020fbbe | |||
| 050a82d732 | |||
| 354d71b53e | |||
| 151324b413 | |||
| 5081b26e25 | |||
| 302a5a40d0 | |||
| badb2eb240 | |||
| 773799e6e0 | |||
| 9a899613c3 | |||
| 60c8855993 | |||
| 9aefcc8f76 | |||
| cfdf82195c | |||
| dc677b4344 | |||
| 41a621ad1e | |||
| ca9ba548ec | |||
| 3380ba541f | |||
|
|
d0ea217581 | ||
|
|
f4a0117c04 | ||
| 9f12454100 | |||
| f7dbcfea06 | |||
| e6459e14a1 | |||
| 7b9f75f27e | |||
| 4f544673bb | |||
| 7ce6994bc4 | |||
| cecf48c37c | |||
| 3c57d024d0 | |||
| 81325137a9 | |||
| 2ba217c315 | |||
| 6b90728831 | |||
| a62549e503 | |||
|
|
5d3c21624c | ||
|
|
68f2de32ca | ||
|
|
efe79ec250 | ||
| d4bf96fef5 | |||
| f57532630c | |||
| 1b5461d005 | |||
| 0947f8533d | |||
|
|
b121c12f7c | ||
| 0562f21c3b | |||
|
|
fcc838ff43 | ||
| f4a3d39df6 | |||
| 50f2c59c0b | |||
| e295a58a43 | |||
| 44dd68fd84 | |||
| 3286f12505 | |||
| cf99647d57 | |||
| 7798f19d2b | |||
| 84e8a6dfda | |||
| 7e1bf3ca60 | |||
| fac24b72ac | |||
| b220a4ea96 | |||
| bcee7cdaf3 | |||
| 312ecca943 | |||
| f8e8f4806b | |||
| a92526a399 | |||
|
|
cfdd16ca47 | ||
| 68de32f89d | |||
| 1bdd0eabb2 | |||
| 751e5c4900 | |||
|
|
d095fdedf4 | ||
| 6ea7c95804 | |||
| b378f85bbd | |||
| ae88e366ee | |||
|
|
a3d942135d | ||
| b2050626b7 | |||
|
|
300a3eaebc | ||
| dfc8ddb9b1 | |||
| a5fa884ebc | |||
| 317d50bad6 | |||
| df21fe78fa | |||
| 3ded74991c | |||
|
|
1d136ceb8f | ||
| 93c085fb94 | |||
| 411c1ccbb3 | |||
| 390d3ea35b | |||
| ab8bdde9d9 | |||
| 3b2a6d059e | |||
|
|
6dde482bb4 | ||
|
|
4f74232571 | ||
|
|
150452f067 | ||
|
|
13caea6d29 | ||
|
|
420d706035 | ||
| aed787f8ca | |||
| d5a81f5c74 | |||
| 5bee5bf5aa | |||
| d8b972be26 | |||
| c17028fbcf | |||
| 3318bd45fc | |||
| 70452455b9 | |||
| 8ba457d1b8 | |||
| 74bfc30e82 | |||
|
|
646b4c7f3f | ||
|
|
e7aae9247c | ||
| dea92bc15c | |||
| 8b63419bd5 | |||
| cb395d19c2 | |||
|
|
28e7e3beba | ||
| 7f583f1a21 | |||
| e8289367bb | |||
| d074c80af4 | |||
| b04fe6fd62 | |||
| a3817266a8 | |||
|
|
0b2f0da573 | ||
| 3776c237de | |||
| 4fa0798449 | |||
|
|
f60487123e | ||
| 2f99d7d64a | |||
|
|
d040842181 | ||
| 6c7a8eb654 | |||
| 026996c311 | |||
| a5ce6f9de3 | |||
|
|
a81a85998b | ||
| 3fa85d3c34 | |||
| d34261a2ea | |||
| 96d5c78b11 | |||
| 07f8953310 | |||
| 3fbf7a5e06 | |||
| d34cef19c3 | |||
|
|
4110717751 | ||
|
|
db25e1bd36 | ||
|
|
a73f208810 | ||
| 7b8e56c0b4 | |||
|
|
2d182775ea | ||
| d3945f920c | |||
| 3591e8bccf | |||
| d464de6210 | |||
| 8939e5d5f9 | |||
|
|
4abc02807b | ||
|
|
f624dd09a4 | ||
|
|
32247c775e | ||
| 4069fe50c3 | |||
|
|
d1e96e4b2c | ||
|
|
da7d185455 | ||
|
|
057e8e5d15 | ||
|
|
0f52c6d265 | ||
| 0b7cd36b26 | |||
|
|
acfe5f9d3c | ||
| a0f7998a13 | |||
| 658722fe43 | |||
| 1505d88b25 | |||
|
|
f00c818f63 | ||
|
|
df5434ce0c | ||
|
|
a1ee6d3610 | ||
|
|
be5be3c990 | ||
|
|
d43647d0f1 | ||
| 83e9d8266d | |||
| ddf474d98a | |||
| 2284adef8a | |||
| 70a7b0545c | |||
| 3d6094f816 | |||
| d7210e2877 | |||
| 4e9720e14d | |||
| 817c38dffa | |||
| 81d99cbc91 | |||
| fb77d2560f | |||
| 127f030415 | |||
| 09dc29b966 | |||
| 3d2a70966e | |||
| 2cb1301cfa | |||
| 1f1b61e26f | |||
| 5a59be18db | |||
| 4bc97b1a7c | |||
| 79caa97771 | |||
| ad73d0daa2 | |||
| 367ba4ec79 | |||
| 67dfa1adcc | |||
| 79ed00a421 | |||
| 19fe2ecb49 | |||
| 32413251a8 | |||
|
|
560617806d | ||
|
|
53513764c8 | ||
|
|
582522a146 | ||
|
|
2900dddc2f | ||
|
|
85936fc340 | ||
|
|
66d5d9c114 | ||
|
|
ed9a384b9d | ||
|
|
3fb3b684f4 | ||
|
|
feb176680d | ||
|
|
36905994f9 | ||
|
|
8954360414 | ||
|
|
da43d8e174 | ||
|
|
da8c8a61d2 | ||
|
|
4db2456430 | ||
|
|
41e7dc9d75 | ||
|
|
f7fcd96762 | ||
|
|
540aeb23ea | ||
|
|
d8d840185f | ||
|
|
4edbf3f58b | ||
|
|
51d79406db | ||
|
|
dc28c258b9 | ||
|
|
db1e91d888 | ||
|
|
9d2cac4587 | ||
|
|
1bc900c6b1 | ||
|
|
94732f1fb4 | ||
|
|
c3cfc2b6e0 | ||
|
|
98c1476944 | ||
|
|
0119505418 | ||
|
|
663c8e235c | ||
|
|
9486aad885 | ||
|
|
c4aca47508 | ||
|
|
7aef40402e | ||
|
|
722d05bd7a | ||
|
|
d82f148687 | ||
|
|
9492a186e2 | ||
| e2cf0be0cb | |||
| 4c602f780f | |||
| 39dbc3a9a0 | |||
| 0a69aa8013 |
File diff suppressed because it is too large
Load Diff
@ -66,6 +66,9 @@ service AccountFiee {
|
||||
rpc SendNationMsg (SendNationMsgRequest) returns (SendMsgStatusResponse) {} //发送境外国际短信验证码 --艺术商城
|
||||
rpc VerifySliderStatus(VerifySliderStatusRequest) returns (VerifySliderStatusResponse) {}// 验证滑块验证码状态
|
||||
rpc SendNationTemplateMsg (SendNationMsgRequest) returns (SendMsgStatusResponse) {} //发送境外国际短信验证码 --艺术商城
|
||||
rpc GetInviterInfo(InviterInfoRequest) returns(InviterInfoResponse) {} //获取邀请人信息
|
||||
rpc GetInviterList(InviterListRequest) returns(InviterListResponse) {} //获取邀请人信息
|
||||
rpc WriteOff (WriteOffRequest) returns (RemoveResponse) {} //用户注销
|
||||
|
||||
|
||||
rpc CreateUserAndRealName (CreateUserAndRealNameRequest) returns (CreateUserAndRealNameResponse) {}// 创建用户并实名, 自动导入
|
||||
@ -101,7 +104,21 @@ service AccountFiee {
|
||||
rpc GetChatAutoReplyRulerDetail ( GetChatAutoReplyRulerByIdRequest )returns( ChatAutoReplyRulerData ){} //查询自动回复规则详情
|
||||
rpc GetChatAutoReplyRulerList ( GetChatAutoReplyRulerListRequest )returns( GetChatAutoReplyRulerListResp ){} //查询自动回复规则列表
|
||||
}
|
||||
|
||||
message InviterListRequest{
|
||||
repeated uint64 ids =1;
|
||||
}
|
||||
message InviterListResponse{
|
||||
repeated InviterInfoResponse list = 1;
|
||||
}
|
||||
message InviterInfoRequest{
|
||||
string code = 1;
|
||||
}
|
||||
message InviterInfoResponse{
|
||||
uint64 id = 1;
|
||||
string code = 2;
|
||||
string name = 3;
|
||||
string telNum = 4;
|
||||
}
|
||||
message VerifySliderStatusRequest {
|
||||
string nonceStr = 1;
|
||||
}
|
||||
@ -183,6 +200,11 @@ message UserListInfo{
|
||||
string idNumber = 21;
|
||||
string dateOfBirth = 22;
|
||||
string age = 23;
|
||||
string email = 24;
|
||||
string AbroadTelAreaCode = 25;
|
||||
string AbroadTel = 26;
|
||||
string inviterName = 27;
|
||||
string inviterCode = 28;
|
||||
}
|
||||
message UserListRequest{
|
||||
string domain = 1;
|
||||
@ -221,6 +243,11 @@ message UserInfoResponse{
|
||||
string telAreaCode = 19;
|
||||
string idNumber = 20;
|
||||
string dateOfBirth = 21;
|
||||
string email = 22;
|
||||
string AbroadTelAreaCode = 23;
|
||||
string AbroadTel = 24;
|
||||
uint64 inviterId = 25;
|
||||
|
||||
}
|
||||
message RealNameResponse{
|
||||
uint64 id = 1;
|
||||
@ -500,20 +527,6 @@ message RemoveRequest {
|
||||
}
|
||||
message WriteOffRequest{
|
||||
uint64 id = 1;
|
||||
string domain = 2;
|
||||
uint64 userId = 3;
|
||||
string tel = 4;
|
||||
string jonNum = 5;
|
||||
string userName = 6;
|
||||
string enterDate = 7;
|
||||
string positionName =8;
|
||||
uint64 positionId = 9;
|
||||
string siteName = 10;
|
||||
uint64 siteId =11;
|
||||
string authUrl =12;
|
||||
string type =13;
|
||||
uint32 status =14;
|
||||
string submitDate=15;
|
||||
}
|
||||
message WriteOffListRequest{
|
||||
uint64 page = 1;
|
||||
@ -541,6 +554,9 @@ message UpdateRequest {
|
||||
string Domain = 2 [json_name = "domain"];
|
||||
string Language = 3 [json_name = "language"];
|
||||
string NickName = 4 [json_name = "nickName"];
|
||||
string Email = 5 [json_name = "email"];
|
||||
string AbroadTel = 6 [json_name = "abroadTel"];
|
||||
string AbroadTelAreaCode = 7 [json_name = "abroadTelAreaCode"];
|
||||
}
|
||||
|
||||
message Operator {
|
||||
@ -632,6 +648,8 @@ message RegistRequest {
|
||||
string telAreaCode = 5;
|
||||
string language = 6;
|
||||
string nickName = 7;
|
||||
uint64 inviterID = 8;
|
||||
string inviterCode = 9;
|
||||
}
|
||||
|
||||
message LoginRequest {
|
||||
@ -709,6 +727,7 @@ message AccountInfo {
|
||||
string updatedAt = 41;
|
||||
string SecurityCode = 42 [json_name = "securityCode"];
|
||||
string BlockAddr = 43 [json_name = "blockAddr"];
|
||||
bool WriteOff = 44 [json_name = "writeOff"];
|
||||
}
|
||||
|
||||
message UserInfoV2 {
|
||||
|
||||
@ -17,6 +17,25 @@ var _ = proto.Marshal
|
||||
var _ = fmt.Errorf
|
||||
var _ = math.Inf
|
||||
|
||||
func (this *InviterListRequest) Validate() error {
|
||||
return nil
|
||||
}
|
||||
func (this *InviterListResponse) Validate() error {
|
||||
for _, item := range this.List {
|
||||
if item != nil {
|
||||
if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(item); err != nil {
|
||||
return github_com_mwitkow_go_proto_validators.FieldError("List", err)
|
||||
}
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
func (this *InviterInfoRequest) Validate() error {
|
||||
return nil
|
||||
}
|
||||
func (this *InviterInfoResponse) Validate() error {
|
||||
return nil
|
||||
}
|
||||
func (this *VerifySliderStatusRequest) Validate() error {
|
||||
return nil
|
||||
}
|
||||
|
||||
@ -70,6 +70,9 @@ type AccountFieeClient interface {
|
||||
SendNationMsg(ctx context.Context, in *SendNationMsgRequest, opts ...grpc_go.CallOption) (*SendMsgStatusResponse, common.ErrorWithAttachment)
|
||||
VerifySliderStatus(ctx context.Context, in *VerifySliderStatusRequest, opts ...grpc_go.CallOption) (*VerifySliderStatusResponse, common.ErrorWithAttachment)
|
||||
SendNationTemplateMsg(ctx context.Context, in *SendNationMsgRequest, opts ...grpc_go.CallOption) (*SendMsgStatusResponse, common.ErrorWithAttachment)
|
||||
GetInviterInfo(ctx context.Context, in *InviterInfoRequest, opts ...grpc_go.CallOption) (*InviterInfoResponse, common.ErrorWithAttachment)
|
||||
GetInviterList(ctx context.Context, in *InviterListRequest, opts ...grpc_go.CallOption) (*InviterListResponse, common.ErrorWithAttachment)
|
||||
WriteOff(ctx context.Context, in *WriteOffRequest, opts ...grpc_go.CallOption) (*RemoveResponse, common.ErrorWithAttachment)
|
||||
CreateUserAndRealName(ctx context.Context, in *CreateUserAndRealNameRequest, opts ...grpc_go.CallOption) (*CreateUserAndRealNameResponse, common.ErrorWithAttachment)
|
||||
// submit info
|
||||
SaveSubmitInfo(ctx context.Context, in *SubmitInfoRequest, opts ...grpc_go.CallOption) (*CommonResponse, common.ErrorWithAttachment)
|
||||
@ -148,6 +151,9 @@ type AccountFieeClientImpl struct {
|
||||
SendNationMsg func(ctx context.Context, in *SendNationMsgRequest) (*SendMsgStatusResponse, error)
|
||||
VerifySliderStatus func(ctx context.Context, in *VerifySliderStatusRequest) (*VerifySliderStatusResponse, error)
|
||||
SendNationTemplateMsg func(ctx context.Context, in *SendNationMsgRequest) (*SendMsgStatusResponse, error)
|
||||
GetInviterInfo func(ctx context.Context, in *InviterInfoRequest) (*InviterInfoResponse, error)
|
||||
GetInviterList func(ctx context.Context, in *InviterListRequest) (*InviterListResponse, error)
|
||||
WriteOff func(ctx context.Context, in *WriteOffRequest) (*RemoveResponse, error)
|
||||
CreateUserAndRealName func(ctx context.Context, in *CreateUserAndRealNameRequest) (*CreateUserAndRealNameResponse, error)
|
||||
SaveSubmitInfo func(ctx context.Context, in *SubmitInfoRequest) (*CommonResponse, error)
|
||||
CreateChatUser func(ctx context.Context, in *ChatUserData) (*CreateChatUserResp, error)
|
||||
@ -436,6 +442,24 @@ func (c *accountFieeClient) SendNationTemplateMsg(ctx context.Context, in *SendN
|
||||
return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/SendNationTemplateMsg", in, out)
|
||||
}
|
||||
|
||||
func (c *accountFieeClient) GetInviterInfo(ctx context.Context, in *InviterInfoRequest, opts ...grpc_go.CallOption) (*InviterInfoResponse, common.ErrorWithAttachment) {
|
||||
out := new(InviterInfoResponse)
|
||||
interfaceKey := ctx.Value(constant.InterfaceKey).(string)
|
||||
return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/GetInviterInfo", in, out)
|
||||
}
|
||||
|
||||
func (c *accountFieeClient) GetInviterList(ctx context.Context, in *InviterListRequest, opts ...grpc_go.CallOption) (*InviterListResponse, common.ErrorWithAttachment) {
|
||||
out := new(InviterListResponse)
|
||||
interfaceKey := ctx.Value(constant.InterfaceKey).(string)
|
||||
return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/GetInviterList", in, out)
|
||||
}
|
||||
|
||||
func (c *accountFieeClient) WriteOff(ctx context.Context, in *WriteOffRequest, opts ...grpc_go.CallOption) (*RemoveResponse, common.ErrorWithAttachment) {
|
||||
out := new(RemoveResponse)
|
||||
interfaceKey := ctx.Value(constant.InterfaceKey).(string)
|
||||
return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/WriteOff", in, out)
|
||||
}
|
||||
|
||||
func (c *accountFieeClient) CreateUserAndRealName(ctx context.Context, in *CreateUserAndRealNameRequest, opts ...grpc_go.CallOption) (*CreateUserAndRealNameResponse, common.ErrorWithAttachment) {
|
||||
out := new(CreateUserAndRealNameResponse)
|
||||
interfaceKey := ctx.Value(constant.InterfaceKey).(string)
|
||||
@ -650,6 +674,9 @@ type AccountFieeServer interface {
|
||||
SendNationMsg(context.Context, *SendNationMsgRequest) (*SendMsgStatusResponse, error)
|
||||
VerifySliderStatus(context.Context, *VerifySliderStatusRequest) (*VerifySliderStatusResponse, error)
|
||||
SendNationTemplateMsg(context.Context, *SendNationMsgRequest) (*SendMsgStatusResponse, error)
|
||||
GetInviterInfo(context.Context, *InviterInfoRequest) (*InviterInfoResponse, error)
|
||||
GetInviterList(context.Context, *InviterListRequest) (*InviterListResponse, error)
|
||||
WriteOff(context.Context, *WriteOffRequest) (*RemoveResponse, error)
|
||||
CreateUserAndRealName(context.Context, *CreateUserAndRealNameRequest) (*CreateUserAndRealNameResponse, error)
|
||||
// submit info
|
||||
SaveSubmitInfo(context.Context, *SubmitInfoRequest) (*CommonResponse, error)
|
||||
@ -811,6 +838,15 @@ func (UnimplementedAccountFieeServer) VerifySliderStatus(context.Context, *Verif
|
||||
func (UnimplementedAccountFieeServer) SendNationTemplateMsg(context.Context, *SendNationMsgRequest) (*SendMsgStatusResponse, error) {
|
||||
return nil, status.Errorf(codes.Unimplemented, "method SendNationTemplateMsg not implemented")
|
||||
}
|
||||
func (UnimplementedAccountFieeServer) GetInviterInfo(context.Context, *InviterInfoRequest) (*InviterInfoResponse, error) {
|
||||
return nil, status.Errorf(codes.Unimplemented, "method GetInviterInfo not implemented")
|
||||
}
|
||||
func (UnimplementedAccountFieeServer) GetInviterList(context.Context, *InviterListRequest) (*InviterListResponse, error) {
|
||||
return nil, status.Errorf(codes.Unimplemented, "method GetInviterList not implemented")
|
||||
}
|
||||
func (UnimplementedAccountFieeServer) WriteOff(context.Context, *WriteOffRequest) (*RemoveResponse, error) {
|
||||
return nil, status.Errorf(codes.Unimplemented, "method WriteOff not implemented")
|
||||
}
|
||||
func (UnimplementedAccountFieeServer) CreateUserAndRealName(context.Context, *CreateUserAndRealNameRequest) (*CreateUserAndRealNameResponse, error) {
|
||||
return nil, status.Errorf(codes.Unimplemented, "method CreateUserAndRealName not implemented")
|
||||
}
|
||||
@ -2112,6 +2148,93 @@ func _AccountFiee_SendNationTemplateMsg_Handler(srv interface{}, ctx context.Con
|
||||
return interceptor(ctx, in, info, handler)
|
||||
}
|
||||
|
||||
func _AccountFiee_GetInviterInfo_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) {
|
||||
in := new(InviterInfoRequest)
|
||||
if err := dec(in); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
base := srv.(dubbo3.Dubbo3GrpcService)
|
||||
args := []interface{}{}
|
||||
args = append(args, in)
|
||||
md, _ := metadata.FromIncomingContext(ctx)
|
||||
invAttachment := make(map[string]interface{}, len(md))
|
||||
for k, v := range md {
|
||||
invAttachment[k] = v
|
||||
}
|
||||
invo := invocation.NewRPCInvocation("GetInviterInfo", args, invAttachment)
|
||||
if interceptor == nil {
|
||||
result := base.XXX_GetProxyImpl().Invoke(ctx, invo)
|
||||
return result, result.Error()
|
||||
}
|
||||
info := &grpc_go.UnaryServerInfo{
|
||||
Server: srv,
|
||||
FullMethod: ctx.Value("XXX_TRIPLE_GO_INTERFACE_NAME").(string),
|
||||
}
|
||||
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
|
||||
result := base.XXX_GetProxyImpl().Invoke(ctx, invo)
|
||||
return result, result.Error()
|
||||
}
|
||||
return interceptor(ctx, in, info, handler)
|
||||
}
|
||||
|
||||
func _AccountFiee_GetInviterList_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) {
|
||||
in := new(InviterListRequest)
|
||||
if err := dec(in); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
base := srv.(dubbo3.Dubbo3GrpcService)
|
||||
args := []interface{}{}
|
||||
args = append(args, in)
|
||||
md, _ := metadata.FromIncomingContext(ctx)
|
||||
invAttachment := make(map[string]interface{}, len(md))
|
||||
for k, v := range md {
|
||||
invAttachment[k] = v
|
||||
}
|
||||
invo := invocation.NewRPCInvocation("GetInviterList", args, invAttachment)
|
||||
if interceptor == nil {
|
||||
result := base.XXX_GetProxyImpl().Invoke(ctx, invo)
|
||||
return result, result.Error()
|
||||
}
|
||||
info := &grpc_go.UnaryServerInfo{
|
||||
Server: srv,
|
||||
FullMethod: ctx.Value("XXX_TRIPLE_GO_INTERFACE_NAME").(string),
|
||||
}
|
||||
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
|
||||
result := base.XXX_GetProxyImpl().Invoke(ctx, invo)
|
||||
return result, result.Error()
|
||||
}
|
||||
return interceptor(ctx, in, info, handler)
|
||||
}
|
||||
|
||||
func _AccountFiee_WriteOff_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) {
|
||||
in := new(WriteOffRequest)
|
||||
if err := dec(in); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
base := srv.(dubbo3.Dubbo3GrpcService)
|
||||
args := []interface{}{}
|
||||
args = append(args, in)
|
||||
md, _ := metadata.FromIncomingContext(ctx)
|
||||
invAttachment := make(map[string]interface{}, len(md))
|
||||
for k, v := range md {
|
||||
invAttachment[k] = v
|
||||
}
|
||||
invo := invocation.NewRPCInvocation("WriteOff", args, invAttachment)
|
||||
if interceptor == nil {
|
||||
result := base.XXX_GetProxyImpl().Invoke(ctx, invo)
|
||||
return result, result.Error()
|
||||
}
|
||||
info := &grpc_go.UnaryServerInfo{
|
||||
Server: srv,
|
||||
FullMethod: ctx.Value("XXX_TRIPLE_GO_INTERFACE_NAME").(string),
|
||||
}
|
||||
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
|
||||
result := base.XXX_GetProxyImpl().Invoke(ctx, invo)
|
||||
return result, result.Error()
|
||||
}
|
||||
return interceptor(ctx, in, info, handler)
|
||||
}
|
||||
|
||||
func _AccountFiee_CreateUserAndRealName_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) {
|
||||
in := new(CreateUserAndRealNameRequest)
|
||||
if err := dec(in); err != nil {
|
||||
@ -3095,6 +3218,18 @@ var AccountFiee_ServiceDesc = grpc_go.ServiceDesc{
|
||||
MethodName: "SendNationTemplateMsg",
|
||||
Handler: _AccountFiee_SendNationTemplateMsg_Handler,
|
||||
},
|
||||
{
|
||||
MethodName: "GetInviterInfo",
|
||||
Handler: _AccountFiee_GetInviterInfo_Handler,
|
||||
},
|
||||
{
|
||||
MethodName: "GetInviterList",
|
||||
Handler: _AccountFiee_GetInviterList_Handler,
|
||||
},
|
||||
{
|
||||
MethodName: "WriteOff",
|
||||
Handler: _AccountFiee_WriteOff_Handler,
|
||||
},
|
||||
{
|
||||
MethodName: "CreateUserAndRealName",
|
||||
Handler: _AccountFiee_CreateUserAndRealName_Handler,
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@ -1,7 +1,7 @@
|
||||
// Code generated by protoc-gen-go-triple. DO NOT EDIT.
|
||||
// versions:
|
||||
// - protoc-gen-go-triple v1.0.8
|
||||
// - protoc v3.21.1
|
||||
// - protoc-gen-go-triple v1.0.5
|
||||
// - protoc v5.26.0
|
||||
// source: pb/bundle.proto
|
||||
|
||||
package bundle
|
||||
|
||||
10661
api/cast/cast.pb.go
10661
api/cast/cast.pb.go
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -9,7 +9,6 @@ package cron
|
||||
import (
|
||||
protoreflect "google.golang.org/protobuf/reflect/protoreflect"
|
||||
protoimpl "google.golang.org/protobuf/runtime/protoimpl"
|
||||
_ "google.golang.org/protobuf/types/known/emptypb"
|
||||
reflect "reflect"
|
||||
sync "sync"
|
||||
unsafe "unsafe"
|
||||
@ -641,6 +640,16 @@ type ExecutionResult struct {
|
||||
StatusDescription string `protobuf:"bytes,110,opt,name=status_description,json=statusDescription,proto3" json:"status_description"` // 执行状态描述
|
||||
ResultDescription string `protobuf:"bytes,111,opt,name=result_description,json=resultDescription,proto3" json:"result_description"` // 执行结果描述
|
||||
ContentTypeDescription string `protobuf:"bytes,115,opt,name=content_type_description,json=contentTypeDescription,proto3" json:"content_type_description"` // 内容类型描述
|
||||
TIKTOKStatusDesc string `protobuf:"bytes,121,opt,name=TIKTOKStatusDesc,proto3" json:"TIKTOKStatusDesc"`
|
||||
YOUTUBEStatusDesc string `protobuf:"bytes,122,opt,name=YOUTUBEStatusDesc,proto3" json:"YOUTUBEStatusDesc"`
|
||||
INSStatusDesc string `protobuf:"bytes,123,opt,name=INSStatusDesc,proto3" json:"INSStatusDesc"`
|
||||
DMStatusDesc string `protobuf:"bytes,124,opt,name=DMStatusDesc,proto3" json:"DMStatusDesc"`
|
||||
BULESKYStatusDesc string `protobuf:"bytes,125,opt,name=BULESKYStatusDesc,proto3" json:"BULESKYStatusDesc"`
|
||||
TIKTOKResult string `protobuf:"bytes,131,opt,name=TIKTOKResult,proto3" json:"TIKTOKResult"`
|
||||
YOUTUBEResult string `protobuf:"bytes,132,opt,name=YOUTUBEResult,proto3" json:"YOUTUBEResult"`
|
||||
INSResult string `protobuf:"bytes,133,opt,name=INSResult,proto3" json:"INSResult"`
|
||||
DMResult string `protobuf:"bytes,134,opt,name=DMResult,proto3" json:"DMResult"`
|
||||
BULESKYResult string `protobuf:"bytes,135,opt,name=BULESKYResult,proto3" json:"BULESKYResult"`
|
||||
unknownFields protoimpl.UnknownFields
|
||||
sizeCache protoimpl.SizeCache
|
||||
}
|
||||
@ -794,6 +803,76 @@ func (x *ExecutionResult) GetContentTypeDescription() string {
|
||||
return ""
|
||||
}
|
||||
|
||||
func (x *ExecutionResult) GetTIKTOKStatusDesc() string {
|
||||
if x != nil {
|
||||
return x.TIKTOKStatusDesc
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
func (x *ExecutionResult) GetYOUTUBEStatusDesc() string {
|
||||
if x != nil {
|
||||
return x.YOUTUBEStatusDesc
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
func (x *ExecutionResult) GetINSStatusDesc() string {
|
||||
if x != nil {
|
||||
return x.INSStatusDesc
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
func (x *ExecutionResult) GetDMStatusDesc() string {
|
||||
if x != nil {
|
||||
return x.DMStatusDesc
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
func (x *ExecutionResult) GetBULESKYStatusDesc() string {
|
||||
if x != nil {
|
||||
return x.BULESKYStatusDesc
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
func (x *ExecutionResult) GetTIKTOKResult() string {
|
||||
if x != nil {
|
||||
return x.TIKTOKResult
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
func (x *ExecutionResult) GetYOUTUBEResult() string {
|
||||
if x != nil {
|
||||
return x.YOUTUBEResult
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
func (x *ExecutionResult) GetINSResult() string {
|
||||
if x != nil {
|
||||
return x.INSResult
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
func (x *ExecutionResult) GetDMResult() string {
|
||||
if x != nil {
|
||||
return x.DMResult
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
func (x *ExecutionResult) GetBULESKYResult() string {
|
||||
if x != nil {
|
||||
return x.BULESKYResult
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
type CreateScheduleTaskRequest struct {
|
||||
state protoimpl.MessageState `protogen:"open.v1"`
|
||||
TaskTitle string `protobuf:"bytes,1,opt,name=task_title,json=taskTitle,proto3" json:"task_title"` // 任务标题
|
||||
@ -1039,18 +1118,18 @@ func (x *CreateScheduleTaskResponse) GetData() *ScheduleTask {
|
||||
}
|
||||
|
||||
type UpdateScheduleTaskRequest struct {
|
||||
state protoimpl.MessageState `protogen:"open.v1"`
|
||||
TaskId uint64 `protobuf:"varint,1,opt,name=task_id,json=taskId,proto3" json:"task_id"` // 任务ID,用于标识需要更新的任务
|
||||
TaskTitle string `protobuf:"bytes,2,opt,name=task_title,json=taskTitle,proto3" json:"task_title"` // 任务标题
|
||||
Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description"` // 描述
|
||||
PeriodType int32 `protobuf:"varint,4,opt,name=period_type,json=periodType,proto3" json:"period_type"` // 周期类型
|
||||
Weekdays []int32 `protobuf:"varint,5,rep,packed,name=weekdays,proto3" json:"weekdays"` // 每周任务的星期几
|
||||
CustomDays []string `protobuf:"bytes,6,rep,name=custom_days,json=customDays,proto3" json:"custom_days"` // 自定义日期
|
||||
StartDate string `protobuf:"bytes,7,opt,name=start_date,json=startDate,proto3" json:"start_date"` // 开始日期
|
||||
ExecuteStartTime string `protobuf:"bytes,8,opt,name=execute_start_time,json=executeStartTime,proto3" json:"execute_start_time"` // 执行开始时间
|
||||
ExecuteEndTime string `protobuf:"bytes,9,opt,name=execute_end_time,json=executeEndTime,proto3" json:"execute_end_time"` // 执行结束时间
|
||||
Remark string `protobuf:"bytes,10,opt,name=remark,proto3" json:"remark"` // 备注
|
||||
TaskDetail *TaskDetailRequest `protobuf:"bytes,11,opt,name=task_detail,json=taskDetail,proto3" json:"task_detail"` // 任务详情
|
||||
state protoimpl.MessageState `protogen:"open.v1"`
|
||||
TaskId uint64 `protobuf:"varint,1,opt,name=task_id,json=taskId,proto3" json:"task_id"` // 任务ID,用于标识需要更新的任务
|
||||
TaskTitle string `protobuf:"bytes,2,opt,name=task_title,json=taskTitle,proto3" json:"task_title"` // 任务标题
|
||||
Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description"` // 描述
|
||||
PeriodType int32 `protobuf:"varint,4,opt,name=period_type,json=periodType,proto3" json:"period_type"` // 周期类型
|
||||
Weekdays []int32 `protobuf:"varint,5,rep,packed,name=weekdays,proto3" json:"weekdays"` // 每周任务的星期几
|
||||
CustomDays []string `protobuf:"bytes,6,rep,name=custom_days,json=customDays,proto3" json:"custom_days"` // 自定义日期
|
||||
StartDate string `protobuf:"bytes,7,opt,name=start_date,json=startDate,proto3" json:"start_date"` // 开始日期
|
||||
ExecuteStartTime string `protobuf:"bytes,8,opt,name=execute_start_time,json=executeStartTime,proto3" json:"execute_start_time"` // 执行开始时间
|
||||
ExecuteEndTime string `protobuf:"bytes,9,opt,name=execute_end_time,json=executeEndTime,proto3" json:"execute_end_time"` // 执行结束时间
|
||||
Remark string `protobuf:"bytes,10,opt,name=remark,proto3" json:"remark"` // 备注
|
||||
TaskDetail *UpdateScheduleTaskRequestTaskDetail `protobuf:"bytes,11,opt,name=task_detail,json=taskDetail,proto3" json:"task_detail"` // 任务详情
|
||||
unknownFields protoimpl.UnknownFields
|
||||
sizeCache protoimpl.SizeCache
|
||||
}
|
||||
@ -1155,13 +1234,97 @@ func (x *UpdateScheduleTaskRequest) GetRemark() string {
|
||||
return ""
|
||||
}
|
||||
|
||||
func (x *UpdateScheduleTaskRequest) GetTaskDetail() *TaskDetailRequest {
|
||||
func (x *UpdateScheduleTaskRequest) GetTaskDetail() *UpdateScheduleTaskRequestTaskDetail {
|
||||
if x != nil {
|
||||
return x.TaskDetail
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
type UpdateScheduleTaskRequestTaskDetail struct {
|
||||
state protoimpl.MessageState `protogen:"open.v1"`
|
||||
Id int32 `protobuf:"varint,5,opt,name=id,proto3" json:"id"`
|
||||
TaskId int32 `protobuf:"varint,6,opt,name=task_id,json=taskId,proto3" json:"task_id"`
|
||||
ArtistCount int32 `protobuf:"varint,1,opt,name=artist_count,json=artistCount,proto3" json:"artist_count"` // 艺人数量
|
||||
Artists []*ArtistInfo `protobuf:"bytes,2,rep,name=artists,proto3" json:"artists"` // 艺人信息列表
|
||||
Num int32 `protobuf:"varint,3,opt,name=num,proto3" json:"num"` // 任务数量
|
||||
ContentType int32 `protobuf:"varint,4,opt,name=content_type,json=contentType,proto3" json:"content_type"` // 内容类型
|
||||
unknownFields protoimpl.UnknownFields
|
||||
sizeCache protoimpl.SizeCache
|
||||
}
|
||||
|
||||
func (x *UpdateScheduleTaskRequestTaskDetail) Reset() {
|
||||
*x = UpdateScheduleTaskRequestTaskDetail{}
|
||||
mi := &file_pb_cron_proto_msgTypes[11]
|
||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||
ms.StoreMessageInfo(mi)
|
||||
}
|
||||
|
||||
func (x *UpdateScheduleTaskRequestTaskDetail) String() string {
|
||||
return protoimpl.X.MessageStringOf(x)
|
||||
}
|
||||
|
||||
func (*UpdateScheduleTaskRequestTaskDetail) ProtoMessage() {}
|
||||
|
||||
func (x *UpdateScheduleTaskRequestTaskDetail) ProtoReflect() protoreflect.Message {
|
||||
mi := &file_pb_cron_proto_msgTypes[11]
|
||||
if x != nil {
|
||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||
if ms.LoadMessageInfo() == nil {
|
||||
ms.StoreMessageInfo(mi)
|
||||
}
|
||||
return ms
|
||||
}
|
||||
return mi.MessageOf(x)
|
||||
}
|
||||
|
||||
// Deprecated: Use UpdateScheduleTaskRequestTaskDetail.ProtoReflect.Descriptor instead.
|
||||
func (*UpdateScheduleTaskRequestTaskDetail) Descriptor() ([]byte, []int) {
|
||||
return file_pb_cron_proto_rawDescGZIP(), []int{11}
|
||||
}
|
||||
|
||||
func (x *UpdateScheduleTaskRequestTaskDetail) GetId() int32 {
|
||||
if x != nil {
|
||||
return x.Id
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
func (x *UpdateScheduleTaskRequestTaskDetail) GetTaskId() int32 {
|
||||
if x != nil {
|
||||
return x.TaskId
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
func (x *UpdateScheduleTaskRequestTaskDetail) GetArtistCount() int32 {
|
||||
if x != nil {
|
||||
return x.ArtistCount
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
func (x *UpdateScheduleTaskRequestTaskDetail) GetArtists() []*ArtistInfo {
|
||||
if x != nil {
|
||||
return x.Artists
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (x *UpdateScheduleTaskRequestTaskDetail) GetNum() int32 {
|
||||
if x != nil {
|
||||
return x.Num
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
func (x *UpdateScheduleTaskRequestTaskDetail) GetContentType() int32 {
|
||||
if x != nil {
|
||||
return x.ContentType
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
type UpdateScheduleTaskResponse struct {
|
||||
state protoimpl.MessageState `protogen:"open.v1"`
|
||||
Code int32 `protobuf:"varint,1,opt,name=code,proto3" json:"code"` // 响应码
|
||||
@ -1173,7 +1336,7 @@ type UpdateScheduleTaskResponse struct {
|
||||
|
||||
func (x *UpdateScheduleTaskResponse) Reset() {
|
||||
*x = UpdateScheduleTaskResponse{}
|
||||
mi := &file_pb_cron_proto_msgTypes[11]
|
||||
mi := &file_pb_cron_proto_msgTypes[12]
|
||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||
ms.StoreMessageInfo(mi)
|
||||
}
|
||||
@ -1185,7 +1348,7 @@ func (x *UpdateScheduleTaskResponse) String() string {
|
||||
func (*UpdateScheduleTaskResponse) ProtoMessage() {}
|
||||
|
||||
func (x *UpdateScheduleTaskResponse) ProtoReflect() protoreflect.Message {
|
||||
mi := &file_pb_cron_proto_msgTypes[11]
|
||||
mi := &file_pb_cron_proto_msgTypes[12]
|
||||
if x != nil {
|
||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||
if ms.LoadMessageInfo() == nil {
|
||||
@ -1198,7 +1361,7 @@ func (x *UpdateScheduleTaskResponse) ProtoReflect() protoreflect.Message {
|
||||
|
||||
// Deprecated: Use UpdateScheduleTaskResponse.ProtoReflect.Descriptor instead.
|
||||
func (*UpdateScheduleTaskResponse) Descriptor() ([]byte, []int) {
|
||||
return file_pb_cron_proto_rawDescGZIP(), []int{11}
|
||||
return file_pb_cron_proto_rawDescGZIP(), []int{12}
|
||||
}
|
||||
|
||||
func (x *UpdateScheduleTaskResponse) GetCode() int32 {
|
||||
@ -1232,13 +1395,14 @@ type GetListScheduleTaskRequest struct {
|
||||
EndTime string `protobuf:"bytes,6,opt,name=end_time,json=endTime,proto3" json:"end_time"` // 结束日期
|
||||
Status int32 `protobuf:"varint,7,opt,name=Status,proto3" json:"Status"` // 任务状态
|
||||
ContentType int32 `protobuf:"varint,8,opt,name=content_type,json=contentType,proto3" json:"content_type"` // 内容类型
|
||||
Sorts map[string]string `protobuf:"bytes,9,rep,name=sorts,proto3" json:"sorts" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
|
||||
unknownFields protoimpl.UnknownFields
|
||||
sizeCache protoimpl.SizeCache
|
||||
}
|
||||
|
||||
func (x *GetListScheduleTaskRequest) Reset() {
|
||||
*x = GetListScheduleTaskRequest{}
|
||||
mi := &file_pb_cron_proto_msgTypes[12]
|
||||
mi := &file_pb_cron_proto_msgTypes[13]
|
||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||
ms.StoreMessageInfo(mi)
|
||||
}
|
||||
@ -1250,7 +1414,7 @@ func (x *GetListScheduleTaskRequest) String() string {
|
||||
func (*GetListScheduleTaskRequest) ProtoMessage() {}
|
||||
|
||||
func (x *GetListScheduleTaskRequest) ProtoReflect() protoreflect.Message {
|
||||
mi := &file_pb_cron_proto_msgTypes[12]
|
||||
mi := &file_pb_cron_proto_msgTypes[13]
|
||||
if x != nil {
|
||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||
if ms.LoadMessageInfo() == nil {
|
||||
@ -1263,7 +1427,7 @@ func (x *GetListScheduleTaskRequest) ProtoReflect() protoreflect.Message {
|
||||
|
||||
// Deprecated: Use GetListScheduleTaskRequest.ProtoReflect.Descriptor instead.
|
||||
func (*GetListScheduleTaskRequest) Descriptor() ([]byte, []int) {
|
||||
return file_pb_cron_proto_rawDescGZIP(), []int{12}
|
||||
return file_pb_cron_proto_rawDescGZIP(), []int{13}
|
||||
}
|
||||
|
||||
func (x *GetListScheduleTaskRequest) GetPage() int32 {
|
||||
@ -1322,6 +1486,13 @@ func (x *GetListScheduleTaskRequest) GetContentType() int32 {
|
||||
return 0
|
||||
}
|
||||
|
||||
func (x *GetListScheduleTaskRequest) GetSorts() map[string]string {
|
||||
if x != nil {
|
||||
return x.Sorts
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
type GetListScheduleTaskResponse struct {
|
||||
state protoimpl.MessageState `protogen:"open.v1"`
|
||||
Code int32 `protobuf:"varint,1,opt,name=code,proto3" json:"code"` // 响应码
|
||||
@ -1336,7 +1507,7 @@ type GetListScheduleTaskResponse struct {
|
||||
|
||||
func (x *GetListScheduleTaskResponse) Reset() {
|
||||
*x = GetListScheduleTaskResponse{}
|
||||
mi := &file_pb_cron_proto_msgTypes[13]
|
||||
mi := &file_pb_cron_proto_msgTypes[14]
|
||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||
ms.StoreMessageInfo(mi)
|
||||
}
|
||||
@ -1348,7 +1519,7 @@ func (x *GetListScheduleTaskResponse) String() string {
|
||||
func (*GetListScheduleTaskResponse) ProtoMessage() {}
|
||||
|
||||
func (x *GetListScheduleTaskResponse) ProtoReflect() protoreflect.Message {
|
||||
mi := &file_pb_cron_proto_msgTypes[13]
|
||||
mi := &file_pb_cron_proto_msgTypes[14]
|
||||
if x != nil {
|
||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||
if ms.LoadMessageInfo() == nil {
|
||||
@ -1361,7 +1532,7 @@ func (x *GetListScheduleTaskResponse) ProtoReflect() protoreflect.Message {
|
||||
|
||||
// Deprecated: Use GetListScheduleTaskResponse.ProtoReflect.Descriptor instead.
|
||||
func (*GetListScheduleTaskResponse) Descriptor() ([]byte, []int) {
|
||||
return file_pb_cron_proto_rawDescGZIP(), []int{13}
|
||||
return file_pb_cron_proto_rawDescGZIP(), []int{14}
|
||||
}
|
||||
|
||||
func (x *GetListScheduleTaskResponse) GetCode() int32 {
|
||||
@ -1422,7 +1593,7 @@ type GetListExecutionRecordRequest struct {
|
||||
|
||||
func (x *GetListExecutionRecordRequest) Reset() {
|
||||
*x = GetListExecutionRecordRequest{}
|
||||
mi := &file_pb_cron_proto_msgTypes[14]
|
||||
mi := &file_pb_cron_proto_msgTypes[15]
|
||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||
ms.StoreMessageInfo(mi)
|
||||
}
|
||||
@ -1434,7 +1605,7 @@ func (x *GetListExecutionRecordRequest) String() string {
|
||||
func (*GetListExecutionRecordRequest) ProtoMessage() {}
|
||||
|
||||
func (x *GetListExecutionRecordRequest) ProtoReflect() protoreflect.Message {
|
||||
mi := &file_pb_cron_proto_msgTypes[14]
|
||||
mi := &file_pb_cron_proto_msgTypes[15]
|
||||
if x != nil {
|
||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||
if ms.LoadMessageInfo() == nil {
|
||||
@ -1447,7 +1618,7 @@ func (x *GetListExecutionRecordRequest) ProtoReflect() protoreflect.Message {
|
||||
|
||||
// Deprecated: Use GetListExecutionRecordRequest.ProtoReflect.Descriptor instead.
|
||||
func (*GetListExecutionRecordRequest) Descriptor() ([]byte, []int) {
|
||||
return file_pb_cron_proto_rawDescGZIP(), []int{14}
|
||||
return file_pb_cron_proto_rawDescGZIP(), []int{15}
|
||||
}
|
||||
|
||||
func (x *GetListExecutionRecordRequest) GetPage() int32 {
|
||||
@ -1520,7 +1691,7 @@ type GetListExecutionRecordResponse struct {
|
||||
|
||||
func (x *GetListExecutionRecordResponse) Reset() {
|
||||
*x = GetListExecutionRecordResponse{}
|
||||
mi := &file_pb_cron_proto_msgTypes[15]
|
||||
mi := &file_pb_cron_proto_msgTypes[16]
|
||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||
ms.StoreMessageInfo(mi)
|
||||
}
|
||||
@ -1532,7 +1703,7 @@ func (x *GetListExecutionRecordResponse) String() string {
|
||||
func (*GetListExecutionRecordResponse) ProtoMessage() {}
|
||||
|
||||
func (x *GetListExecutionRecordResponse) ProtoReflect() protoreflect.Message {
|
||||
mi := &file_pb_cron_proto_msgTypes[15]
|
||||
mi := &file_pb_cron_proto_msgTypes[16]
|
||||
if x != nil {
|
||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||
if ms.LoadMessageInfo() == nil {
|
||||
@ -1545,7 +1716,7 @@ func (x *GetListExecutionRecordResponse) ProtoReflect() protoreflect.Message {
|
||||
|
||||
// Deprecated: Use GetListExecutionRecordResponse.ProtoReflect.Descriptor instead.
|
||||
func (*GetListExecutionRecordResponse) Descriptor() ([]byte, []int) {
|
||||
return file_pb_cron_proto_rawDescGZIP(), []int{15}
|
||||
return file_pb_cron_proto_rawDescGZIP(), []int{16}
|
||||
}
|
||||
|
||||
func (x *GetListExecutionRecordResponse) GetCode() int32 {
|
||||
@ -1607,7 +1778,7 @@ type GetListExecutionResultRequest struct {
|
||||
|
||||
func (x *GetListExecutionResultRequest) Reset() {
|
||||
*x = GetListExecutionResultRequest{}
|
||||
mi := &file_pb_cron_proto_msgTypes[16]
|
||||
mi := &file_pb_cron_proto_msgTypes[17]
|
||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||
ms.StoreMessageInfo(mi)
|
||||
}
|
||||
@ -1619,7 +1790,7 @@ func (x *GetListExecutionResultRequest) String() string {
|
||||
func (*GetListExecutionResultRequest) ProtoMessage() {}
|
||||
|
||||
func (x *GetListExecutionResultRequest) ProtoReflect() protoreflect.Message {
|
||||
mi := &file_pb_cron_proto_msgTypes[16]
|
||||
mi := &file_pb_cron_proto_msgTypes[17]
|
||||
if x != nil {
|
||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||
if ms.LoadMessageInfo() == nil {
|
||||
@ -1632,7 +1803,7 @@ func (x *GetListExecutionResultRequest) ProtoReflect() protoreflect.Message {
|
||||
|
||||
// Deprecated: Use GetListExecutionResultRequest.ProtoReflect.Descriptor instead.
|
||||
func (*GetListExecutionResultRequest) Descriptor() ([]byte, []int) {
|
||||
return file_pb_cron_proto_rawDescGZIP(), []int{16}
|
||||
return file_pb_cron_proto_rawDescGZIP(), []int{17}
|
||||
}
|
||||
|
||||
func (x *GetListExecutionResultRequest) GetPage() int32 {
|
||||
@ -1712,7 +1883,7 @@ type GetListExecutionResultResponse struct {
|
||||
|
||||
func (x *GetListExecutionResultResponse) Reset() {
|
||||
*x = GetListExecutionResultResponse{}
|
||||
mi := &file_pb_cron_proto_msgTypes[17]
|
||||
mi := &file_pb_cron_proto_msgTypes[18]
|
||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||
ms.StoreMessageInfo(mi)
|
||||
}
|
||||
@ -1724,7 +1895,7 @@ func (x *GetListExecutionResultResponse) String() string {
|
||||
func (*GetListExecutionResultResponse) ProtoMessage() {}
|
||||
|
||||
func (x *GetListExecutionResultResponse) ProtoReflect() protoreflect.Message {
|
||||
mi := &file_pb_cron_proto_msgTypes[17]
|
||||
mi := &file_pb_cron_proto_msgTypes[18]
|
||||
if x != nil {
|
||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||
if ms.LoadMessageInfo() == nil {
|
||||
@ -1737,7 +1908,7 @@ func (x *GetListExecutionResultResponse) ProtoReflect() protoreflect.Message {
|
||||
|
||||
// Deprecated: Use GetListExecutionResultResponse.ProtoReflect.Descriptor instead.
|
||||
func (*GetListExecutionResultResponse) Descriptor() ([]byte, []int) {
|
||||
return file_pb_cron_proto_rawDescGZIP(), []int{17}
|
||||
return file_pb_cron_proto_rawDescGZIP(), []int{18}
|
||||
}
|
||||
|
||||
func (x *GetListExecutionResultResponse) GetCode() int32 {
|
||||
@ -1792,7 +1963,7 @@ type TaskStatus struct {
|
||||
|
||||
func (x *TaskStatus) Reset() {
|
||||
*x = TaskStatus{}
|
||||
mi := &file_pb_cron_proto_msgTypes[18]
|
||||
mi := &file_pb_cron_proto_msgTypes[19]
|
||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||
ms.StoreMessageInfo(mi)
|
||||
}
|
||||
@ -1804,7 +1975,7 @@ func (x *TaskStatus) String() string {
|
||||
func (*TaskStatus) ProtoMessage() {}
|
||||
|
||||
func (x *TaskStatus) ProtoReflect() protoreflect.Message {
|
||||
mi := &file_pb_cron_proto_msgTypes[18]
|
||||
mi := &file_pb_cron_proto_msgTypes[19]
|
||||
if x != nil {
|
||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||
if ms.LoadMessageInfo() == nil {
|
||||
@ -1817,7 +1988,7 @@ func (x *TaskStatus) ProtoReflect() protoreflect.Message {
|
||||
|
||||
// Deprecated: Use TaskStatus.ProtoReflect.Descriptor instead.
|
||||
func (*TaskStatus) Descriptor() ([]byte, []int) {
|
||||
return file_pb_cron_proto_rawDescGZIP(), []int{18}
|
||||
return file_pb_cron_proto_rawDescGZIP(), []int{19}
|
||||
}
|
||||
|
||||
func (x *TaskStatus) GetKey() int32 {
|
||||
@ -1845,7 +2016,7 @@ type GetScheduleTaskStatusResponse struct {
|
||||
|
||||
func (x *GetScheduleTaskStatusResponse) Reset() {
|
||||
*x = GetScheduleTaskStatusResponse{}
|
||||
mi := &file_pb_cron_proto_msgTypes[19]
|
||||
mi := &file_pb_cron_proto_msgTypes[20]
|
||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||
ms.StoreMessageInfo(mi)
|
||||
}
|
||||
@ -1857,7 +2028,7 @@ func (x *GetScheduleTaskStatusResponse) String() string {
|
||||
func (*GetScheduleTaskStatusResponse) ProtoMessage() {}
|
||||
|
||||
func (x *GetScheduleTaskStatusResponse) ProtoReflect() protoreflect.Message {
|
||||
mi := &file_pb_cron_proto_msgTypes[19]
|
||||
mi := &file_pb_cron_proto_msgTypes[20]
|
||||
if x != nil {
|
||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||
if ms.LoadMessageInfo() == nil {
|
||||
@ -1870,7 +2041,7 @@ func (x *GetScheduleTaskStatusResponse) ProtoReflect() protoreflect.Message {
|
||||
|
||||
// Deprecated: Use GetScheduleTaskStatusResponse.ProtoReflect.Descriptor instead.
|
||||
func (*GetScheduleTaskStatusResponse) Descriptor() ([]byte, []int) {
|
||||
return file_pb_cron_proto_rawDescGZIP(), []int{19}
|
||||
return file_pb_cron_proto_rawDescGZIP(), []int{20}
|
||||
}
|
||||
|
||||
func (x *GetScheduleTaskStatusResponse) GetCode() int32 {
|
||||
@ -1898,7 +2069,7 @@ var File_pb_cron_proto protoreflect.FileDescriptor
|
||||
|
||||
const file_pb_cron_proto_rawDesc = "" +
|
||||
"\n" +
|
||||
"\rpb/cron.proto\x12\x04cron\x1a\x1bgoogle/protobuf/empty.proto\"!\n" +
|
||||
"\rpb/cron.proto\x12\x04cron\"!\n" +
|
||||
"\x0fCommonIDRequest\x12\x0e\n" +
|
||||
"\x02id\x18\x01 \x01(\rR\x02id\">\n" +
|
||||
"\x0eCommonResponse\x12\x12\n" +
|
||||
@ -1968,7 +2139,7 @@ const file_pb_cron_proto_rawDesc = "" +
|
||||
"\n" +
|
||||
"task_title\x18\x0e \x01(\tR\ttaskTitle\x12!\n" +
|
||||
"\fcontent_type\x18\x0f \x01(\x05R\vcontentType\x12\x0e\n" +
|
||||
"\x02id\x18\x10 \x01(\x04R\x02id\"\xc8\x04\n" +
|
||||
"\x02id\x18\x10 \x01(\x04R\x02id\"\xc9\a\n" +
|
||||
"\x0fExecutionResult\x12!\n" +
|
||||
"\fexecution_id\x18\x01 \x01(\x05R\vexecutionId\x12\x17\n" +
|
||||
"\atask_id\x18\x02 \x01(\x05R\x06taskId\x12\x1b\n" +
|
||||
@ -1992,7 +2163,17 @@ const file_pb_cron_proto_rawDesc = "" +
|
||||
"work_title\x18\x10 \x01(\tR\tworkTitle\x12-\n" +
|
||||
"\x12status_description\x18n \x01(\tR\x11statusDescription\x12-\n" +
|
||||
"\x12result_description\x18o \x01(\tR\x11resultDescription\x128\n" +
|
||||
"\x18content_type_description\x18s \x01(\tR\x16contentTypeDescription\"\x83\x03\n" +
|
||||
"\x18content_type_description\x18s \x01(\tR\x16contentTypeDescription\x12*\n" +
|
||||
"\x10TIKTOKStatusDesc\x18y \x01(\tR\x10TIKTOKStatusDesc\x12,\n" +
|
||||
"\x11YOUTUBEStatusDesc\x18z \x01(\tR\x11YOUTUBEStatusDesc\x12$\n" +
|
||||
"\rINSStatusDesc\x18{ \x01(\tR\rINSStatusDesc\x12\"\n" +
|
||||
"\fDMStatusDesc\x18| \x01(\tR\fDMStatusDesc\x12,\n" +
|
||||
"\x11BULESKYStatusDesc\x18} \x01(\tR\x11BULESKYStatusDesc\x12#\n" +
|
||||
"\fTIKTOKResult\x18\x83\x01 \x01(\tR\fTIKTOKResult\x12%\n" +
|
||||
"\rYOUTUBEResult\x18\x84\x01 \x01(\tR\rYOUTUBEResult\x12\x1d\n" +
|
||||
"\tINSResult\x18\x85\x01 \x01(\tR\tINSResult\x12\x1b\n" +
|
||||
"\bDMResult\x18\x86\x01 \x01(\tR\bDMResult\x12%\n" +
|
||||
"\rBULESKYResult\x18\x87\x01 \x01(\tR\rBULESKYResult\"\x83\x03\n" +
|
||||
"\x19CreateScheduleTaskRequest\x12\x1d\n" +
|
||||
"\n" +
|
||||
"task_title\x18\x01 \x01(\tR\ttaskTitle\x12 \n" +
|
||||
@ -2018,7 +2199,7 @@ const file_pb_cron_proto_rawDesc = "" +
|
||||
"\x1aCreateScheduleTaskResponse\x12\x12\n" +
|
||||
"\x04code\x18\x01 \x01(\x05R\x04code\x12\x18\n" +
|
||||
"\amessage\x18\x02 \x01(\tR\amessage\x12&\n" +
|
||||
"\x04data\x18\x03 \x01(\v2\x12.cron.ScheduleTaskR\x04data\"\x9c\x03\n" +
|
||||
"\x04data\x18\x03 \x01(\v2\x12.cron.ScheduleTaskR\x04data\"\xae\x03\n" +
|
||||
"\x19UpdateScheduleTaskRequest\x12\x17\n" +
|
||||
"\atask_id\x18\x01 \x01(\x04R\x06taskId\x12\x1d\n" +
|
||||
"\n" +
|
||||
@ -2034,13 +2215,20 @@ const file_pb_cron_proto_rawDesc = "" +
|
||||
"\x12execute_start_time\x18\b \x01(\tR\x10executeStartTime\x12(\n" +
|
||||
"\x10execute_end_time\x18\t \x01(\tR\x0eexecuteEndTime\x12\x16\n" +
|
||||
"\x06remark\x18\n" +
|
||||
" \x01(\tR\x06remark\x128\n" +
|
||||
"\vtask_detail\x18\v \x01(\v2\x17.cron.TaskDetailRequestR\n" +
|
||||
"taskDetail\"r\n" +
|
||||
" \x01(\tR\x06remark\x12J\n" +
|
||||
"\vtask_detail\x18\v \x01(\v2).cron.UpdateScheduleTaskRequestTaskDetailR\n" +
|
||||
"taskDetail\"\xd2\x01\n" +
|
||||
"#UpdateScheduleTaskRequestTaskDetail\x12\x0e\n" +
|
||||
"\x02id\x18\x05 \x01(\x05R\x02id\x12\x17\n" +
|
||||
"\atask_id\x18\x06 \x01(\x05R\x06taskId\x12!\n" +
|
||||
"\fartist_count\x18\x01 \x01(\x05R\vartistCount\x12*\n" +
|
||||
"\aartists\x18\x02 \x03(\v2\x10.cron.ArtistInfoR\aartists\x12\x10\n" +
|
||||
"\x03num\x18\x03 \x01(\x05R\x03num\x12!\n" +
|
||||
"\fcontent_type\x18\x04 \x01(\x05R\vcontentType\"r\n" +
|
||||
"\x1aUpdateScheduleTaskResponse\x12\x12\n" +
|
||||
"\x04code\x18\x01 \x01(\x05R\x04code\x12\x18\n" +
|
||||
"\amessage\x18\x02 \x01(\tR\amessage\x12&\n" +
|
||||
"\x04data\x18\x03 \x01(\v2\x12.cron.ScheduleTaskR\x04data\"\x82\x02\n" +
|
||||
"\x04data\x18\x03 \x01(\v2\x12.cron.ScheduleTaskR\x04data\"\xff\x02\n" +
|
||||
"\x1aGetListScheduleTaskRequest\x12\x12\n" +
|
||||
"\x04page\x18\x01 \x01(\x05R\x04page\x12\x1b\n" +
|
||||
"\tpage_size\x18\x02 \x01(\x05R\bpageSize\x12\x1d\n" +
|
||||
@ -2052,7 +2240,12 @@ const file_pb_cron_proto_rawDesc = "" +
|
||||
"start_time\x18\x05 \x01(\tR\tstartTime\x12\x19\n" +
|
||||
"\bend_time\x18\x06 \x01(\tR\aendTime\x12\x16\n" +
|
||||
"\x06Status\x18\a \x01(\x05R\x06Status\x12!\n" +
|
||||
"\fcontent_type\x18\b \x01(\x05R\vcontentType\"\xb1\x01\n" +
|
||||
"\fcontent_type\x18\b \x01(\x05R\vcontentType\x12A\n" +
|
||||
"\x05sorts\x18\t \x03(\v2+.cron.GetListScheduleTaskRequest.SortsEntryR\x05sorts\x1a8\n" +
|
||||
"\n" +
|
||||
"SortsEntry\x12\x10\n" +
|
||||
"\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" +
|
||||
"\x05value\x18\x02 \x01(\tR\x05value:\x028\x01\"\xb1\x01\n" +
|
||||
"\x1bGetListScheduleTaskResponse\x12\x12\n" +
|
||||
"\x04code\x18\x01 \x01(\x05R\x04code\x12\x18\n" +
|
||||
"\amessage\x18\x02 \x01(\tR\amessage\x12\x14\n" +
|
||||
@ -2120,28 +2313,30 @@ func file_pb_cron_proto_rawDescGZIP() []byte {
|
||||
return file_pb_cron_proto_rawDescData
|
||||
}
|
||||
|
||||
var file_pb_cron_proto_msgTypes = make([]protoimpl.MessageInfo, 20)
|
||||
var file_pb_cron_proto_msgTypes = make([]protoimpl.MessageInfo, 22)
|
||||
var file_pb_cron_proto_goTypes = []any{
|
||||
(*CommonIDRequest)(nil), // 0: cron.CommonIDRequest
|
||||
(*CommonResponse)(nil), // 1: cron.CommonResponse
|
||||
(*ScheduleTask)(nil), // 2: cron.ScheduleTask
|
||||
(*TaskDetail)(nil), // 3: cron.TaskDetail
|
||||
(*ArtistInfo)(nil), // 4: cron.ArtistInfo
|
||||
(*ExecutionRecord)(nil), // 5: cron.ExecutionRecord
|
||||
(*ExecutionResult)(nil), // 6: cron.ExecutionResult
|
||||
(*CreateScheduleTaskRequest)(nil), // 7: cron.CreateScheduleTaskRequest
|
||||
(*TaskDetailRequest)(nil), // 8: cron.TaskDetailRequest
|
||||
(*CreateScheduleTaskResponse)(nil), // 9: cron.CreateScheduleTaskResponse
|
||||
(*UpdateScheduleTaskRequest)(nil), // 10: cron.UpdateScheduleTaskRequest
|
||||
(*UpdateScheduleTaskResponse)(nil), // 11: cron.UpdateScheduleTaskResponse
|
||||
(*GetListScheduleTaskRequest)(nil), // 12: cron.GetListScheduleTaskRequest
|
||||
(*GetListScheduleTaskResponse)(nil), // 13: cron.GetListScheduleTaskResponse
|
||||
(*GetListExecutionRecordRequest)(nil), // 14: cron.GetListExecutionRecordRequest
|
||||
(*GetListExecutionRecordResponse)(nil), // 15: cron.GetListExecutionRecordResponse
|
||||
(*GetListExecutionResultRequest)(nil), // 16: cron.GetListExecutionResultRequest
|
||||
(*GetListExecutionResultResponse)(nil), // 17: cron.GetListExecutionResultResponse
|
||||
(*TaskStatus)(nil), // 18: cron.TaskStatus
|
||||
(*GetScheduleTaskStatusResponse)(nil), // 19: cron.GetScheduleTaskStatusResponse
|
||||
(*CommonIDRequest)(nil), // 0: cron.CommonIDRequest
|
||||
(*CommonResponse)(nil), // 1: cron.CommonResponse
|
||||
(*ScheduleTask)(nil), // 2: cron.ScheduleTask
|
||||
(*TaskDetail)(nil), // 3: cron.TaskDetail
|
||||
(*ArtistInfo)(nil), // 4: cron.ArtistInfo
|
||||
(*ExecutionRecord)(nil), // 5: cron.ExecutionRecord
|
||||
(*ExecutionResult)(nil), // 6: cron.ExecutionResult
|
||||
(*CreateScheduleTaskRequest)(nil), // 7: cron.CreateScheduleTaskRequest
|
||||
(*TaskDetailRequest)(nil), // 8: cron.TaskDetailRequest
|
||||
(*CreateScheduleTaskResponse)(nil), // 9: cron.CreateScheduleTaskResponse
|
||||
(*UpdateScheduleTaskRequest)(nil), // 10: cron.UpdateScheduleTaskRequest
|
||||
(*UpdateScheduleTaskRequestTaskDetail)(nil), // 11: cron.UpdateScheduleTaskRequestTaskDetail
|
||||
(*UpdateScheduleTaskResponse)(nil), // 12: cron.UpdateScheduleTaskResponse
|
||||
(*GetListScheduleTaskRequest)(nil), // 13: cron.GetListScheduleTaskRequest
|
||||
(*GetListScheduleTaskResponse)(nil), // 14: cron.GetListScheduleTaskResponse
|
||||
(*GetListExecutionRecordRequest)(nil), // 15: cron.GetListExecutionRecordRequest
|
||||
(*GetListExecutionRecordResponse)(nil), // 16: cron.GetListExecutionRecordResponse
|
||||
(*GetListExecutionResultRequest)(nil), // 17: cron.GetListExecutionResultRequest
|
||||
(*GetListExecutionResultResponse)(nil), // 18: cron.GetListExecutionResultResponse
|
||||
(*TaskStatus)(nil), // 19: cron.TaskStatus
|
||||
(*GetScheduleTaskStatusResponse)(nil), // 20: cron.GetScheduleTaskStatusResponse
|
||||
nil, // 21: cron.GetListScheduleTaskRequest.SortsEntry
|
||||
}
|
||||
var file_pb_cron_proto_depIdxs = []int32{
|
||||
3, // 0: cron.ScheduleTask.task_detail:type_name -> cron.TaskDetail
|
||||
@ -2151,17 +2346,19 @@ var file_pb_cron_proto_depIdxs = []int32{
|
||||
8, // 4: cron.CreateScheduleTaskRequest.task_detail:type_name -> cron.TaskDetailRequest
|
||||
4, // 5: cron.TaskDetailRequest.artists:type_name -> cron.ArtistInfo
|
||||
2, // 6: cron.CreateScheduleTaskResponse.data:type_name -> cron.ScheduleTask
|
||||
8, // 7: cron.UpdateScheduleTaskRequest.task_detail:type_name -> cron.TaskDetailRequest
|
||||
2, // 8: cron.UpdateScheduleTaskResponse.data:type_name -> cron.ScheduleTask
|
||||
2, // 9: cron.GetListScheduleTaskResponse.data:type_name -> cron.ScheduleTask
|
||||
5, // 10: cron.GetListExecutionRecordResponse.data:type_name -> cron.ExecutionRecord
|
||||
6, // 11: cron.GetListExecutionResultResponse.data:type_name -> cron.ExecutionResult
|
||||
18, // 12: cron.GetScheduleTaskStatusResponse.data:type_name -> cron.TaskStatus
|
||||
13, // [13:13] is the sub-list for method output_type
|
||||
13, // [13:13] is the sub-list for method input_type
|
||||
13, // [13:13] is the sub-list for extension type_name
|
||||
13, // [13:13] is the sub-list for extension extendee
|
||||
0, // [0:13] is the sub-list for field type_name
|
||||
11, // 7: cron.UpdateScheduleTaskRequest.task_detail:type_name -> cron.UpdateScheduleTaskRequestTaskDetail
|
||||
4, // 8: cron.UpdateScheduleTaskRequestTaskDetail.artists:type_name -> cron.ArtistInfo
|
||||
2, // 9: cron.UpdateScheduleTaskResponse.data:type_name -> cron.ScheduleTask
|
||||
21, // 10: cron.GetListScheduleTaskRequest.sorts:type_name -> cron.GetListScheduleTaskRequest.SortsEntry
|
||||
2, // 11: cron.GetListScheduleTaskResponse.data:type_name -> cron.ScheduleTask
|
||||
5, // 12: cron.GetListExecutionRecordResponse.data:type_name -> cron.ExecutionRecord
|
||||
6, // 13: cron.GetListExecutionResultResponse.data:type_name -> cron.ExecutionResult
|
||||
19, // 14: cron.GetScheduleTaskStatusResponse.data:type_name -> cron.TaskStatus
|
||||
15, // [15:15] is the sub-list for method output_type
|
||||
15, // [15:15] is the sub-list for method input_type
|
||||
15, // [15:15] is the sub-list for extension type_name
|
||||
15, // [15:15] is the sub-list for extension extendee
|
||||
0, // [0:15] is the sub-list for field type_name
|
||||
}
|
||||
|
||||
func init() { file_pb_cron_proto_init() }
|
||||
@ -2175,7 +2372,7 @@ func file_pb_cron_proto_init() {
|
||||
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
|
||||
RawDescriptor: unsafe.Slice(unsafe.StringData(file_pb_cron_proto_rawDesc), len(file_pb_cron_proto_rawDesc)),
|
||||
NumEnums: 0,
|
||||
NumMessages: 20,
|
||||
NumMessages: 22,
|
||||
NumExtensions: 0,
|
||||
NumServices: 0,
|
||||
},
|
||||
|
||||
@ -7,7 +7,6 @@ import (
|
||||
fmt "fmt"
|
||||
math "math"
|
||||
proto "github.com/golang/protobuf/proto"
|
||||
_ "google.golang.org/protobuf/types/known/emptypb"
|
||||
github_com_mwitkow_go_proto_validators "github.com/mwitkow/go-proto-validators"
|
||||
)
|
||||
|
||||
@ -97,6 +96,16 @@ func (this *UpdateScheduleTaskRequest) Validate() error {
|
||||
}
|
||||
return nil
|
||||
}
|
||||
func (this *UpdateScheduleTaskRequestTaskDetail) Validate() error {
|
||||
for _, item := range this.Artists {
|
||||
if item != nil {
|
||||
if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(item); err != nil {
|
||||
return github_com_mwitkow_go_proto_validators.FieldError("Artists", err)
|
||||
}
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
func (this *UpdateScheduleTaskResponse) Validate() error {
|
||||
if this.Data != nil {
|
||||
if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(this.Data); err != nil {
|
||||
@ -106,6 +115,7 @@ func (this *UpdateScheduleTaskResponse) Validate() error {
|
||||
return nil
|
||||
}
|
||||
func (this *GetListScheduleTaskRequest) Validate() error {
|
||||
// Validation of proto3 map<> fields is unsupported.
|
||||
return nil
|
||||
}
|
||||
func (this *GetListScheduleTaskResponse) Validate() error {
|
||||
|
||||
644
api/emailAlerts/emailAlerts.pb.go
Normal file
644
api/emailAlerts/emailAlerts.pb.go
Normal file
@ -0,0 +1,644 @@
|
||||
// Code generated by protoc-gen-go. DO NOT EDIT.
|
||||
// versions:
|
||||
// protoc-gen-go v1.31.0
|
||||
// protoc v5.26.0
|
||||
// source: api/emailAlerts/emailAlerts.proto
|
||||
|
||||
package emailAlerts
|
||||
|
||||
import (
|
||||
protoreflect "google.golang.org/protobuf/reflect/protoreflect"
|
||||
protoimpl "google.golang.org/protobuf/runtime/protoimpl"
|
||||
reflect "reflect"
|
||||
sync "sync"
|
||||
)
|
||||
|
||||
const (
|
||||
// Verify that this generated code is sufficiently up-to-date.
|
||||
_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
|
||||
// Verify that runtime/protoimpl is sufficiently up-to-date.
|
||||
_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
|
||||
)
|
||||
|
||||
type EmailAlertsSubmitReq struct {
|
||||
state protoimpl.MessageState
|
||||
sizeCache protoimpl.SizeCache
|
||||
unknownFields protoimpl.UnknownFields
|
||||
|
||||
FirstName string `protobuf:"bytes,1,opt,name=firstName,proto3" json:"firstName"`
|
||||
LastName string `protobuf:"bytes,2,opt,name=lastName,proto3" json:"lastName"`
|
||||
Email string `protobuf:"bytes,3,opt,name=email,proto3" json:"email"`
|
||||
Company string `protobuf:"bytes,4,opt,name=company,proto3" json:"company"`
|
||||
Phone string `protobuf:"bytes,5,opt,name=phone,proto3" json:"phone"`
|
||||
}
|
||||
|
||||
func (x *EmailAlertsSubmitReq) Reset() {
|
||||
*x = EmailAlertsSubmitReq{}
|
||||
if protoimpl.UnsafeEnabled {
|
||||
mi := &file_api_emailAlerts_emailAlerts_proto_msgTypes[0]
|
||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||
ms.StoreMessageInfo(mi)
|
||||
}
|
||||
}
|
||||
|
||||
func (x *EmailAlertsSubmitReq) String() string {
|
||||
return protoimpl.X.MessageStringOf(x)
|
||||
}
|
||||
|
||||
func (*EmailAlertsSubmitReq) ProtoMessage() {}
|
||||
|
||||
func (x *EmailAlertsSubmitReq) ProtoReflect() protoreflect.Message {
|
||||
mi := &file_api_emailAlerts_emailAlerts_proto_msgTypes[0]
|
||||
if protoimpl.UnsafeEnabled && x != nil {
|
||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||
if ms.LoadMessageInfo() == nil {
|
||||
ms.StoreMessageInfo(mi)
|
||||
}
|
||||
return ms
|
||||
}
|
||||
return mi.MessageOf(x)
|
||||
}
|
||||
|
||||
// Deprecated: Use EmailAlertsSubmitReq.ProtoReflect.Descriptor instead.
|
||||
func (*EmailAlertsSubmitReq) Descriptor() ([]byte, []int) {
|
||||
return file_api_emailAlerts_emailAlerts_proto_rawDescGZIP(), []int{0}
|
||||
}
|
||||
|
||||
func (x *EmailAlertsSubmitReq) GetFirstName() string {
|
||||
if x != nil {
|
||||
return x.FirstName
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
func (x *EmailAlertsSubmitReq) GetLastName() string {
|
||||
if x != nil {
|
||||
return x.LastName
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
func (x *EmailAlertsSubmitReq) GetEmail() string {
|
||||
if x != nil {
|
||||
return x.Email
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
func (x *EmailAlertsSubmitReq) GetCompany() string {
|
||||
if x != nil {
|
||||
return x.Company
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
func (x *EmailAlertsSubmitReq) GetPhone() string {
|
||||
if x != nil {
|
||||
return x.Phone
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
type EmailAlertsSubmitResp struct {
|
||||
state protoimpl.MessageState
|
||||
sizeCache protoimpl.SizeCache
|
||||
unknownFields protoimpl.UnknownFields
|
||||
|
||||
Msg string `protobuf:"bytes,1,opt,name=msg,proto3" json:"msg"`
|
||||
}
|
||||
|
||||
func (x *EmailAlertsSubmitResp) Reset() {
|
||||
*x = EmailAlertsSubmitResp{}
|
||||
if protoimpl.UnsafeEnabled {
|
||||
mi := &file_api_emailAlerts_emailAlerts_proto_msgTypes[1]
|
||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||
ms.StoreMessageInfo(mi)
|
||||
}
|
||||
}
|
||||
|
||||
func (x *EmailAlertsSubmitResp) String() string {
|
||||
return protoimpl.X.MessageStringOf(x)
|
||||
}
|
||||
|
||||
func (*EmailAlertsSubmitResp) ProtoMessage() {}
|
||||
|
||||
func (x *EmailAlertsSubmitResp) ProtoReflect() protoreflect.Message {
|
||||
mi := &file_api_emailAlerts_emailAlerts_proto_msgTypes[1]
|
||||
if protoimpl.UnsafeEnabled && x != nil {
|
||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||
if ms.LoadMessageInfo() == nil {
|
||||
ms.StoreMessageInfo(mi)
|
||||
}
|
||||
return ms
|
||||
}
|
||||
return mi.MessageOf(x)
|
||||
}
|
||||
|
||||
// Deprecated: Use EmailAlertsSubmitResp.ProtoReflect.Descriptor instead.
|
||||
func (*EmailAlertsSubmitResp) Descriptor() ([]byte, []int) {
|
||||
return file_api_emailAlerts_emailAlerts_proto_rawDescGZIP(), []int{1}
|
||||
}
|
||||
|
||||
func (x *EmailAlertsSubmitResp) GetMsg() string {
|
||||
if x != nil {
|
||||
return x.Msg
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
// ========================= EmailInformatio ==============================
|
||||
type Filtrate struct {
|
||||
state protoimpl.MessageState
|
||||
sizeCache protoimpl.SizeCache
|
||||
unknownFields protoimpl.UnknownFields
|
||||
|
||||
Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name"`
|
||||
Email string `protobuf:"bytes,2,opt,name=email,proto3" json:"email"`
|
||||
Company string `protobuf:"bytes,3,opt,name=company,proto3" json:"company"`
|
||||
}
|
||||
|
||||
func (x *Filtrate) Reset() {
|
||||
*x = Filtrate{}
|
||||
if protoimpl.UnsafeEnabled {
|
||||
mi := &file_api_emailAlerts_emailAlerts_proto_msgTypes[2]
|
||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||
ms.StoreMessageInfo(mi)
|
||||
}
|
||||
}
|
||||
|
||||
func (x *Filtrate) String() string {
|
||||
return protoimpl.X.MessageStringOf(x)
|
||||
}
|
||||
|
||||
func (*Filtrate) ProtoMessage() {}
|
||||
|
||||
func (x *Filtrate) ProtoReflect() protoreflect.Message {
|
||||
mi := &file_api_emailAlerts_emailAlerts_proto_msgTypes[2]
|
||||
if protoimpl.UnsafeEnabled && x != nil {
|
||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||
if ms.LoadMessageInfo() == nil {
|
||||
ms.StoreMessageInfo(mi)
|
||||
}
|
||||
return ms
|
||||
}
|
||||
return mi.MessageOf(x)
|
||||
}
|
||||
|
||||
// Deprecated: Use Filtrate.ProtoReflect.Descriptor instead.
|
||||
func (*Filtrate) Descriptor() ([]byte, []int) {
|
||||
return file_api_emailAlerts_emailAlerts_proto_rawDescGZIP(), []int{2}
|
||||
}
|
||||
|
||||
func (x *Filtrate) GetName() string {
|
||||
if x != nil {
|
||||
return x.Name
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
func (x *Filtrate) GetEmail() string {
|
||||
if x != nil {
|
||||
return x.Email
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
func (x *Filtrate) GetCompany() string {
|
||||
if x != nil {
|
||||
return x.Company
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
type GetEmailInformationListReq struct {
|
||||
state protoimpl.MessageState
|
||||
sizeCache protoimpl.SizeCache
|
||||
unknownFields protoimpl.UnknownFields
|
||||
|
||||
Page int32 `protobuf:"varint,1,opt,name=page,proto3" json:"page"`
|
||||
PageSize int32 `protobuf:"varint,2,opt,name=pageSize,proto3" json:"pageSize"`
|
||||
Filtrate *Filtrate `protobuf:"bytes,3,opt,name=filtrate,proto3" json:"filtrate"`
|
||||
}
|
||||
|
||||
func (x *GetEmailInformationListReq) Reset() {
|
||||
*x = GetEmailInformationListReq{}
|
||||
if protoimpl.UnsafeEnabled {
|
||||
mi := &file_api_emailAlerts_emailAlerts_proto_msgTypes[3]
|
||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||
ms.StoreMessageInfo(mi)
|
||||
}
|
||||
}
|
||||
|
||||
func (x *GetEmailInformationListReq) String() string {
|
||||
return protoimpl.X.MessageStringOf(x)
|
||||
}
|
||||
|
||||
func (*GetEmailInformationListReq) ProtoMessage() {}
|
||||
|
||||
func (x *GetEmailInformationListReq) ProtoReflect() protoreflect.Message {
|
||||
mi := &file_api_emailAlerts_emailAlerts_proto_msgTypes[3]
|
||||
if protoimpl.UnsafeEnabled && x != nil {
|
||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||
if ms.LoadMessageInfo() == nil {
|
||||
ms.StoreMessageInfo(mi)
|
||||
}
|
||||
return ms
|
||||
}
|
||||
return mi.MessageOf(x)
|
||||
}
|
||||
|
||||
// Deprecated: Use GetEmailInformationListReq.ProtoReflect.Descriptor instead.
|
||||
func (*GetEmailInformationListReq) Descriptor() ([]byte, []int) {
|
||||
return file_api_emailAlerts_emailAlerts_proto_rawDescGZIP(), []int{3}
|
||||
}
|
||||
|
||||
func (x *GetEmailInformationListReq) GetPage() int32 {
|
||||
if x != nil {
|
||||
return x.Page
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
func (x *GetEmailInformationListReq) GetPageSize() int32 {
|
||||
if x != nil {
|
||||
return x.PageSize
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
func (x *GetEmailInformationListReq) GetFiltrate() *Filtrate {
|
||||
if x != nil {
|
||||
return x.Filtrate
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
type GetEmailInformationListResp struct {
|
||||
state protoimpl.MessageState
|
||||
sizeCache protoimpl.SizeCache
|
||||
unknownFields protoimpl.UnknownFields
|
||||
|
||||
Msg string `protobuf:"bytes,1,opt,name=msg,proto3" json:"msg"`
|
||||
Page int32 `protobuf:"varint,2,opt,name=page,proto3" json:"page"`
|
||||
PageSize int32 `protobuf:"varint,3,opt,name=pageSize,proto3" json:"pageSize"`
|
||||
Total int32 `protobuf:"varint,4,opt,name=total,proto3" json:"total"`
|
||||
Data []*EmailInformation `protobuf:"bytes,5,rep,name=data,proto3" json:"data"`
|
||||
}
|
||||
|
||||
func (x *GetEmailInformationListResp) Reset() {
|
||||
*x = GetEmailInformationListResp{}
|
||||
if protoimpl.UnsafeEnabled {
|
||||
mi := &file_api_emailAlerts_emailAlerts_proto_msgTypes[4]
|
||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||
ms.StoreMessageInfo(mi)
|
||||
}
|
||||
}
|
||||
|
||||
func (x *GetEmailInformationListResp) String() string {
|
||||
return protoimpl.X.MessageStringOf(x)
|
||||
}
|
||||
|
||||
func (*GetEmailInformationListResp) ProtoMessage() {}
|
||||
|
||||
func (x *GetEmailInformationListResp) ProtoReflect() protoreflect.Message {
|
||||
mi := &file_api_emailAlerts_emailAlerts_proto_msgTypes[4]
|
||||
if protoimpl.UnsafeEnabled && x != nil {
|
||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||
if ms.LoadMessageInfo() == nil {
|
||||
ms.StoreMessageInfo(mi)
|
||||
}
|
||||
return ms
|
||||
}
|
||||
return mi.MessageOf(x)
|
||||
}
|
||||
|
||||
// Deprecated: Use GetEmailInformationListResp.ProtoReflect.Descriptor instead.
|
||||
func (*GetEmailInformationListResp) Descriptor() ([]byte, []int) {
|
||||
return file_api_emailAlerts_emailAlerts_proto_rawDescGZIP(), []int{4}
|
||||
}
|
||||
|
||||
func (x *GetEmailInformationListResp) GetMsg() string {
|
||||
if x != nil {
|
||||
return x.Msg
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
func (x *GetEmailInformationListResp) GetPage() int32 {
|
||||
if x != nil {
|
||||
return x.Page
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
func (x *GetEmailInformationListResp) GetPageSize() int32 {
|
||||
if x != nil {
|
||||
return x.PageSize
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
func (x *GetEmailInformationListResp) GetTotal() int32 {
|
||||
if x != nil {
|
||||
return x.Total
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
func (x *GetEmailInformationListResp) GetData() []*EmailInformation {
|
||||
if x != nil {
|
||||
return x.Data
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
type EmailInformation struct {
|
||||
state protoimpl.MessageState
|
||||
sizeCache protoimpl.SizeCache
|
||||
unknownFields protoimpl.UnknownFields
|
||||
|
||||
Id int32 `protobuf:"varint,1,opt,name=id,proto3" json:"id"`
|
||||
FullName string `protobuf:"bytes,2,opt,name=fullName,proto3" json:"fullName"`
|
||||
Email string `protobuf:"bytes,3,opt,name=email,proto3" json:"email"`
|
||||
Company string `protobuf:"bytes,4,opt,name=company,proto3" json:"company"`
|
||||
Phone string `protobuf:"bytes,5,opt,name=phone,proto3" json:"phone"`
|
||||
CreatedAt string `protobuf:"bytes,6,opt,name=createdAt,proto3" json:"createdAt"`
|
||||
}
|
||||
|
||||
func (x *EmailInformation) Reset() {
|
||||
*x = EmailInformation{}
|
||||
if protoimpl.UnsafeEnabled {
|
||||
mi := &file_api_emailAlerts_emailAlerts_proto_msgTypes[5]
|
||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||
ms.StoreMessageInfo(mi)
|
||||
}
|
||||
}
|
||||
|
||||
func (x *EmailInformation) String() string {
|
||||
return protoimpl.X.MessageStringOf(x)
|
||||
}
|
||||
|
||||
func (*EmailInformation) ProtoMessage() {}
|
||||
|
||||
func (x *EmailInformation) ProtoReflect() protoreflect.Message {
|
||||
mi := &file_api_emailAlerts_emailAlerts_proto_msgTypes[5]
|
||||
if protoimpl.UnsafeEnabled && x != nil {
|
||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||
if ms.LoadMessageInfo() == nil {
|
||||
ms.StoreMessageInfo(mi)
|
||||
}
|
||||
return ms
|
||||
}
|
||||
return mi.MessageOf(x)
|
||||
}
|
||||
|
||||
// Deprecated: Use EmailInformation.ProtoReflect.Descriptor instead.
|
||||
func (*EmailInformation) Descriptor() ([]byte, []int) {
|
||||
return file_api_emailAlerts_emailAlerts_proto_rawDescGZIP(), []int{5}
|
||||
}
|
||||
|
||||
func (x *EmailInformation) GetId() int32 {
|
||||
if x != nil {
|
||||
return x.Id
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
func (x *EmailInformation) GetFullName() string {
|
||||
if x != nil {
|
||||
return x.FullName
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
func (x *EmailInformation) GetEmail() string {
|
||||
if x != nil {
|
||||
return x.Email
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
func (x *EmailInformation) GetCompany() string {
|
||||
if x != nil {
|
||||
return x.Company
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
func (x *EmailInformation) GetPhone() string {
|
||||
if x != nil {
|
||||
return x.Phone
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
func (x *EmailInformation) GetCreatedAt() string {
|
||||
if x != nil {
|
||||
return x.CreatedAt
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
var File_api_emailAlerts_emailAlerts_proto protoreflect.FileDescriptor
|
||||
|
||||
var file_api_emailAlerts_emailAlerts_proto_rawDesc = []byte{
|
||||
0x0a, 0x21, 0x61, 0x70, 0x69, 0x2f, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x41, 0x6c, 0x65, 0x72, 0x74,
|
||||
0x73, 0x2f, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x73, 0x2e, 0x70, 0x72,
|
||||
0x6f, 0x74, 0x6f, 0x12, 0x0b, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x73,
|
||||
0x22, 0x96, 0x01, 0x0a, 0x14, 0x45, 0x6d, 0x61, 0x69, 0x6c, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x73,
|
||||
0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x52, 0x65, 0x71, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x72,
|
||||
0x73, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x66, 0x69,
|
||||
0x72, 0x73, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x6c, 0x61, 0x73, 0x74, 0x4e,
|
||||
0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6c, 0x61, 0x73, 0x74, 0x4e,
|
||||
0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x03, 0x20, 0x01,
|
||||
0x28, 0x09, 0x52, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6d,
|
||||
0x70, 0x61, 0x6e, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6d, 0x70,
|
||||
0x61, 0x6e, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x70, 0x68, 0x6f, 0x6e, 0x65, 0x18, 0x05, 0x20, 0x01,
|
||||
0x28, 0x09, 0x52, 0x05, 0x70, 0x68, 0x6f, 0x6e, 0x65, 0x22, 0x29, 0x0a, 0x15, 0x45, 0x6d, 0x61,
|
||||
0x69, 0x6c, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x73, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x52, 0x65,
|
||||
0x73, 0x70, 0x12, 0x10, 0x0a, 0x03, 0x6d, 0x73, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
|
||||
0x03, 0x6d, 0x73, 0x67, 0x22, 0x4e, 0x0a, 0x08, 0x46, 0x69, 0x6c, 0x74, 0x72, 0x61, 0x74, 0x65,
|
||||
0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04,
|
||||
0x6e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x02, 0x20,
|
||||
0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f,
|
||||
0x6d, 0x70, 0x61, 0x6e, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6d,
|
||||
0x70, 0x61, 0x6e, 0x79, 0x22, 0x7f, 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x45, 0x6d, 0x61, 0x69, 0x6c,
|
||||
0x49, 0x6e, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x69, 0x73, 0x74, 0x52,
|
||||
0x65, 0x71, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05,
|
||||
0x52, 0x04, 0x70, 0x61, 0x67, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69,
|
||||
0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69,
|
||||
0x7a, 0x65, 0x12, 0x31, 0x0a, 0x08, 0x66, 0x69, 0x6c, 0x74, 0x72, 0x61, 0x74, 0x65, 0x18, 0x03,
|
||||
0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x41, 0x6c, 0x65, 0x72,
|
||||
0x74, 0x73, 0x2e, 0x46, 0x69, 0x6c, 0x74, 0x72, 0x61, 0x74, 0x65, 0x52, 0x08, 0x66, 0x69, 0x6c,
|
||||
0x74, 0x72, 0x61, 0x74, 0x65, 0x22, 0xa8, 0x01, 0x0a, 0x1b, 0x47, 0x65, 0x74, 0x45, 0x6d, 0x61,
|
||||
0x69, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x69, 0x73,
|
||||
0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x10, 0x0a, 0x03, 0x6d, 0x73, 0x67, 0x18, 0x01, 0x20, 0x01,
|
||||
0x28, 0x09, 0x52, 0x03, 0x6d, 0x73, 0x67, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x67, 0x65, 0x18,
|
||||
0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70,
|
||||
0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70,
|
||||
0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c,
|
||||
0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x31, 0x0a,
|
||||
0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x65, 0x6d,
|
||||
0x61, 0x69, 0x6c, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x73, 0x2e, 0x45, 0x6d, 0x61, 0x69, 0x6c, 0x49,
|
||||
0x6e, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61,
|
||||
0x22, 0xa2, 0x01, 0x0a, 0x10, 0x45, 0x6d, 0x61, 0x69, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x72, 0x6d,
|
||||
0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28,
|
||||
0x05, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x75, 0x6c, 0x6c, 0x4e, 0x61, 0x6d,
|
||||
0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x66, 0x75, 0x6c, 0x6c, 0x4e, 0x61, 0x6d,
|
||||
0x65, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09,
|
||||
0x52, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6d, 0x70, 0x61,
|
||||
0x6e, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e,
|
||||
0x79, 0x12, 0x14, 0x0a, 0x05, 0x70, 0x68, 0x6f, 0x6e, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09,
|
||||
0x52, 0x05, 0x70, 0x68, 0x6f, 0x6e, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74,
|
||||
0x65, 0x64, 0x41, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61,
|
||||
0x74, 0x65, 0x64, 0x41, 0x74, 0x32, 0xd7, 0x01, 0x0a, 0x0b, 0x45, 0x6d, 0x61, 0x69, 0x6c, 0x41,
|
||||
0x6c, 0x65, 0x72, 0x74, 0x73, 0x12, 0x5a, 0x0a, 0x11, 0x45, 0x6d, 0x61, 0x69, 0x6c, 0x41, 0x6c,
|
||||
0x65, 0x72, 0x74, 0x73, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x12, 0x21, 0x2e, 0x65, 0x6d, 0x61,
|
||||
0x69, 0x6c, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x73, 0x2e, 0x45, 0x6d, 0x61, 0x69, 0x6c, 0x41, 0x6c,
|
||||
0x65, 0x72, 0x74, 0x73, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x22, 0x2e,
|
||||
0x65, 0x6d, 0x61, 0x69, 0x6c, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x73, 0x2e, 0x45, 0x6d, 0x61, 0x69,
|
||||
0x6c, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x73, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x52, 0x65, 0x73,
|
||||
0x70, 0x12, 0x6c, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x45, 0x6d, 0x61, 0x69, 0x6c, 0x49, 0x6e, 0x66,
|
||||
0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x27, 0x2e, 0x65,
|
||||
0x6d, 0x61, 0x69, 0x6c, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x45, 0x6d,
|
||||
0x61, 0x69, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x69,
|
||||
0x73, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x28, 0x2e, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x41, 0x6c, 0x65,
|
||||
0x72, 0x74, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x45, 0x6d, 0x61, 0x69, 0x6c, 0x49, 0x6e, 0x66, 0x6f,
|
||||
0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x42,
|
||||
0x10, 0x5a, 0x0e, 0x2e, 0x2f, 0x3b, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x41, 0x6c, 0x65, 0x72, 0x74,
|
||||
0x73, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
|
||||
}
|
||||
|
||||
var (
|
||||
file_api_emailAlerts_emailAlerts_proto_rawDescOnce sync.Once
|
||||
file_api_emailAlerts_emailAlerts_proto_rawDescData = file_api_emailAlerts_emailAlerts_proto_rawDesc
|
||||
)
|
||||
|
||||
func file_api_emailAlerts_emailAlerts_proto_rawDescGZIP() []byte {
|
||||
file_api_emailAlerts_emailAlerts_proto_rawDescOnce.Do(func() {
|
||||
file_api_emailAlerts_emailAlerts_proto_rawDescData = protoimpl.X.CompressGZIP(file_api_emailAlerts_emailAlerts_proto_rawDescData)
|
||||
})
|
||||
return file_api_emailAlerts_emailAlerts_proto_rawDescData
|
||||
}
|
||||
|
||||
var file_api_emailAlerts_emailAlerts_proto_msgTypes = make([]protoimpl.MessageInfo, 6)
|
||||
var file_api_emailAlerts_emailAlerts_proto_goTypes = []interface{}{
|
||||
(*EmailAlertsSubmitReq)(nil), // 0: emailAlerts.EmailAlertsSubmitReq
|
||||
(*EmailAlertsSubmitResp)(nil), // 1: emailAlerts.EmailAlertsSubmitResp
|
||||
(*Filtrate)(nil), // 2: emailAlerts.Filtrate
|
||||
(*GetEmailInformationListReq)(nil), // 3: emailAlerts.GetEmailInformationListReq
|
||||
(*GetEmailInformationListResp)(nil), // 4: emailAlerts.GetEmailInformationListResp
|
||||
(*EmailInformation)(nil), // 5: emailAlerts.EmailInformation
|
||||
}
|
||||
var file_api_emailAlerts_emailAlerts_proto_depIdxs = []int32{
|
||||
2, // 0: emailAlerts.GetEmailInformationListReq.filtrate:type_name -> emailAlerts.Filtrate
|
||||
5, // 1: emailAlerts.GetEmailInformationListResp.data:type_name -> emailAlerts.EmailInformation
|
||||
0, // 2: emailAlerts.EmailAlerts.EmailAlertsSubmit:input_type -> emailAlerts.EmailAlertsSubmitReq
|
||||
3, // 3: emailAlerts.EmailAlerts.GetEmailInformationList:input_type -> emailAlerts.GetEmailInformationListReq
|
||||
1, // 4: emailAlerts.EmailAlerts.EmailAlertsSubmit:output_type -> emailAlerts.EmailAlertsSubmitResp
|
||||
4, // 5: emailAlerts.EmailAlerts.GetEmailInformationList:output_type -> emailAlerts.GetEmailInformationListResp
|
||||
4, // [4:6] is the sub-list for method output_type
|
||||
2, // [2:4] is the sub-list for method input_type
|
||||
2, // [2:2] is the sub-list for extension type_name
|
||||
2, // [2:2] is the sub-list for extension extendee
|
||||
0, // [0:2] is the sub-list for field type_name
|
||||
}
|
||||
|
||||
func init() { file_api_emailAlerts_emailAlerts_proto_init() }
|
||||
func file_api_emailAlerts_emailAlerts_proto_init() {
|
||||
if File_api_emailAlerts_emailAlerts_proto != nil {
|
||||
return
|
||||
}
|
||||
if !protoimpl.UnsafeEnabled {
|
||||
file_api_emailAlerts_emailAlerts_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
|
||||
switch v := v.(*EmailAlertsSubmitReq); i {
|
||||
case 0:
|
||||
return &v.state
|
||||
case 1:
|
||||
return &v.sizeCache
|
||||
case 2:
|
||||
return &v.unknownFields
|
||||
default:
|
||||
return nil
|
||||
}
|
||||
}
|
||||
file_api_emailAlerts_emailAlerts_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
|
||||
switch v := v.(*EmailAlertsSubmitResp); i {
|
||||
case 0:
|
||||
return &v.state
|
||||
case 1:
|
||||
return &v.sizeCache
|
||||
case 2:
|
||||
return &v.unknownFields
|
||||
default:
|
||||
return nil
|
||||
}
|
||||
}
|
||||
file_api_emailAlerts_emailAlerts_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
|
||||
switch v := v.(*Filtrate); i {
|
||||
case 0:
|
||||
return &v.state
|
||||
case 1:
|
||||
return &v.sizeCache
|
||||
case 2:
|
||||
return &v.unknownFields
|
||||
default:
|
||||
return nil
|
||||
}
|
||||
}
|
||||
file_api_emailAlerts_emailAlerts_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
|
||||
switch v := v.(*GetEmailInformationListReq); i {
|
||||
case 0:
|
||||
return &v.state
|
||||
case 1:
|
||||
return &v.sizeCache
|
||||
case 2:
|
||||
return &v.unknownFields
|
||||
default:
|
||||
return nil
|
||||
}
|
||||
}
|
||||
file_api_emailAlerts_emailAlerts_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
|
||||
switch v := v.(*GetEmailInformationListResp); i {
|
||||
case 0:
|
||||
return &v.state
|
||||
case 1:
|
||||
return &v.sizeCache
|
||||
case 2:
|
||||
return &v.unknownFields
|
||||
default:
|
||||
return nil
|
||||
}
|
||||
}
|
||||
file_api_emailAlerts_emailAlerts_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
|
||||
switch v := v.(*EmailInformation); i {
|
||||
case 0:
|
||||
return &v.state
|
||||
case 1:
|
||||
return &v.sizeCache
|
||||
case 2:
|
||||
return &v.unknownFields
|
||||
default:
|
||||
return nil
|
||||
}
|
||||
}
|
||||
}
|
||||
type x struct{}
|
||||
out := protoimpl.TypeBuilder{
|
||||
File: protoimpl.DescBuilder{
|
||||
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
|
||||
RawDescriptor: file_api_emailAlerts_emailAlerts_proto_rawDesc,
|
||||
NumEnums: 0,
|
||||
NumMessages: 6,
|
||||
NumExtensions: 0,
|
||||
NumServices: 1,
|
||||
},
|
||||
GoTypes: file_api_emailAlerts_emailAlerts_proto_goTypes,
|
||||
DependencyIndexes: file_api_emailAlerts_emailAlerts_proto_depIdxs,
|
||||
MessageInfos: file_api_emailAlerts_emailAlerts_proto_msgTypes,
|
||||
}.Build()
|
||||
File_api_emailAlerts_emailAlerts_proto = out.File
|
||||
file_api_emailAlerts_emailAlerts_proto_rawDesc = nil
|
||||
file_api_emailAlerts_emailAlerts_proto_goTypes = nil
|
||||
file_api_emailAlerts_emailAlerts_proto_depIdxs = nil
|
||||
}
|
||||
47
api/emailAlerts/emailAlerts.validator.pb.go
Normal file
47
api/emailAlerts/emailAlerts.validator.pb.go
Normal file
@ -0,0 +1,47 @@
|
||||
// Code generated by protoc-gen-gogo. DO NOT EDIT.
|
||||
// source: api/emailAlerts/emailAlerts.proto
|
||||
|
||||
package emailAlerts
|
||||
|
||||
import (
|
||||
fmt "fmt"
|
||||
math "math"
|
||||
proto "github.com/golang/protobuf/proto"
|
||||
github_com_mwitkow_go_proto_validators "github.com/mwitkow/go-proto-validators"
|
||||
)
|
||||
|
||||
// Reference imports to suppress errors if they are not otherwise used.
|
||||
var _ = proto.Marshal
|
||||
var _ = fmt.Errorf
|
||||
var _ = math.Inf
|
||||
|
||||
func (this *EmailAlertsSubmitReq) Validate() error {
|
||||
return nil
|
||||
}
|
||||
func (this *EmailAlertsSubmitResp) Validate() error {
|
||||
return nil
|
||||
}
|
||||
func (this *Filtrate) Validate() error {
|
||||
return nil
|
||||
}
|
||||
func (this *GetEmailInformationListReq) Validate() error {
|
||||
if this.Filtrate != nil {
|
||||
if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(this.Filtrate); err != nil {
|
||||
return github_com_mwitkow_go_proto_validators.FieldError("Filtrate", err)
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
func (this *GetEmailInformationListResp) Validate() error {
|
||||
for _, item := range this.Data {
|
||||
if item != nil {
|
||||
if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(item); err != nil {
|
||||
return github_com_mwitkow_go_proto_validators.FieldError("Data", err)
|
||||
}
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
func (this *EmailInformation) Validate() error {
|
||||
return nil
|
||||
}
|
||||
194
api/emailAlerts/emailAlerts_triple.pb.go
Normal file
194
api/emailAlerts/emailAlerts_triple.pb.go
Normal file
@ -0,0 +1,194 @@
|
||||
// Code generated by protoc-gen-go-triple. DO NOT EDIT.
|
||||
// versions:
|
||||
// - protoc-gen-go-triple v1.0.5
|
||||
// - protoc v5.26.0
|
||||
// source: api/emailAlerts/emailAlerts.proto
|
||||
|
||||
package emailAlerts
|
||||
|
||||
import (
|
||||
context "context"
|
||||
protocol "dubbo.apache.org/dubbo-go/v3/protocol"
|
||||
dubbo3 "dubbo.apache.org/dubbo-go/v3/protocol/dubbo3"
|
||||
invocation "dubbo.apache.org/dubbo-go/v3/protocol/invocation"
|
||||
grpc_go "github.com/dubbogo/grpc-go"
|
||||
codes "github.com/dubbogo/grpc-go/codes"
|
||||
metadata "github.com/dubbogo/grpc-go/metadata"
|
||||
status "github.com/dubbogo/grpc-go/status"
|
||||
common "github.com/dubbogo/triple/pkg/common"
|
||||
constant "github.com/dubbogo/triple/pkg/common/constant"
|
||||
triple "github.com/dubbogo/triple/pkg/triple"
|
||||
)
|
||||
|
||||
// This is a compile-time assertion to ensure that this generated file
|
||||
// is compatible with the grpc package it is being compiled against.
|
||||
const _ = grpc_go.SupportPackageIsVersion7
|
||||
|
||||
// EmailAlertsClient is the client API for EmailAlerts service.
|
||||
//
|
||||
// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream.
|
||||
type EmailAlertsClient interface {
|
||||
EmailAlertsSubmit(ctx context.Context, in *EmailAlertsSubmitReq, opts ...grpc_go.CallOption) (*EmailAlertsSubmitResp, common.ErrorWithAttachment)
|
||||
// ========================= EmailInformatio ==============================
|
||||
GetEmailInformationList(ctx context.Context, in *GetEmailInformationListReq, opts ...grpc_go.CallOption) (*GetEmailInformationListResp, common.ErrorWithAttachment)
|
||||
}
|
||||
|
||||
type emailAlertsClient struct {
|
||||
cc *triple.TripleConn
|
||||
}
|
||||
|
||||
type EmailAlertsClientImpl struct {
|
||||
EmailAlertsSubmit func(ctx context.Context, in *EmailAlertsSubmitReq) (*EmailAlertsSubmitResp, error)
|
||||
GetEmailInformationList func(ctx context.Context, in *GetEmailInformationListReq) (*GetEmailInformationListResp, error)
|
||||
}
|
||||
|
||||
func (c *EmailAlertsClientImpl) GetDubboStub(cc *triple.TripleConn) EmailAlertsClient {
|
||||
return NewEmailAlertsClient(cc)
|
||||
}
|
||||
|
||||
func (c *EmailAlertsClientImpl) XXX_InterfaceName() string {
|
||||
return "emailAlerts.EmailAlerts"
|
||||
}
|
||||
|
||||
func NewEmailAlertsClient(cc *triple.TripleConn) EmailAlertsClient {
|
||||
return &emailAlertsClient{cc}
|
||||
}
|
||||
|
||||
func (c *emailAlertsClient) EmailAlertsSubmit(ctx context.Context, in *EmailAlertsSubmitReq, opts ...grpc_go.CallOption) (*EmailAlertsSubmitResp, common.ErrorWithAttachment) {
|
||||
out := new(EmailAlertsSubmitResp)
|
||||
interfaceKey := ctx.Value(constant.InterfaceKey).(string)
|
||||
return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/EmailAlertsSubmit", in, out)
|
||||
}
|
||||
|
||||
func (c *emailAlertsClient) GetEmailInformationList(ctx context.Context, in *GetEmailInformationListReq, opts ...grpc_go.CallOption) (*GetEmailInformationListResp, common.ErrorWithAttachment) {
|
||||
out := new(GetEmailInformationListResp)
|
||||
interfaceKey := ctx.Value(constant.InterfaceKey).(string)
|
||||
return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/GetEmailInformationList", in, out)
|
||||
}
|
||||
|
||||
// EmailAlertsServer is the server API for EmailAlerts service.
|
||||
// All implementations must embed UnimplementedEmailAlertsServer
|
||||
// for forward compatibility
|
||||
type EmailAlertsServer interface {
|
||||
EmailAlertsSubmit(context.Context, *EmailAlertsSubmitReq) (*EmailAlertsSubmitResp, error)
|
||||
// ========================= EmailInformatio ==============================
|
||||
GetEmailInformationList(context.Context, *GetEmailInformationListReq) (*GetEmailInformationListResp, error)
|
||||
mustEmbedUnimplementedEmailAlertsServer()
|
||||
}
|
||||
|
||||
// UnimplementedEmailAlertsServer must be embedded to have forward compatible implementations.
|
||||
type UnimplementedEmailAlertsServer struct {
|
||||
proxyImpl protocol.Invoker
|
||||
}
|
||||
|
||||
func (UnimplementedEmailAlertsServer) EmailAlertsSubmit(context.Context, *EmailAlertsSubmitReq) (*EmailAlertsSubmitResp, error) {
|
||||
return nil, status.Errorf(codes.Unimplemented, "method EmailAlertsSubmit not implemented")
|
||||
}
|
||||
func (UnimplementedEmailAlertsServer) GetEmailInformationList(context.Context, *GetEmailInformationListReq) (*GetEmailInformationListResp, error) {
|
||||
return nil, status.Errorf(codes.Unimplemented, "method GetEmailInformationList not implemented")
|
||||
}
|
||||
func (s *UnimplementedEmailAlertsServer) XXX_SetProxyImpl(impl protocol.Invoker) {
|
||||
s.proxyImpl = impl
|
||||
}
|
||||
|
||||
func (s *UnimplementedEmailAlertsServer) XXX_GetProxyImpl() protocol.Invoker {
|
||||
return s.proxyImpl
|
||||
}
|
||||
|
||||
func (s *UnimplementedEmailAlertsServer) XXX_ServiceDesc() *grpc_go.ServiceDesc {
|
||||
return &EmailAlerts_ServiceDesc
|
||||
}
|
||||
func (s *UnimplementedEmailAlertsServer) XXX_InterfaceName() string {
|
||||
return "emailAlerts.EmailAlerts"
|
||||
}
|
||||
|
||||
func (UnimplementedEmailAlertsServer) mustEmbedUnimplementedEmailAlertsServer() {}
|
||||
|
||||
// UnsafeEmailAlertsServer may be embedded to opt out of forward compatibility for this service.
|
||||
// Use of this interface is not recommended, as added methods to EmailAlertsServer will
|
||||
// result in compilation errors.
|
||||
type UnsafeEmailAlertsServer interface {
|
||||
mustEmbedUnimplementedEmailAlertsServer()
|
||||
}
|
||||
|
||||
func RegisterEmailAlertsServer(s grpc_go.ServiceRegistrar, srv EmailAlertsServer) {
|
||||
s.RegisterService(&EmailAlerts_ServiceDesc, srv)
|
||||
}
|
||||
|
||||
func _EmailAlerts_EmailAlertsSubmit_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) {
|
||||
in := new(EmailAlertsSubmitReq)
|
||||
if err := dec(in); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
base := srv.(dubbo3.Dubbo3GrpcService)
|
||||
args := []interface{}{}
|
||||
args = append(args, in)
|
||||
md, _ := metadata.FromIncomingContext(ctx)
|
||||
invAttachment := make(map[string]interface{}, len(md))
|
||||
for k, v := range md {
|
||||
invAttachment[k] = v
|
||||
}
|
||||
invo := invocation.NewRPCInvocation("EmailAlertsSubmit", args, invAttachment)
|
||||
if interceptor == nil {
|
||||
result := base.XXX_GetProxyImpl().Invoke(ctx, invo)
|
||||
return result, result.Error()
|
||||
}
|
||||
info := &grpc_go.UnaryServerInfo{
|
||||
Server: srv,
|
||||
FullMethod: ctx.Value("XXX_TRIPLE_GO_INTERFACE_NAME").(string),
|
||||
}
|
||||
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
|
||||
result := base.XXX_GetProxyImpl().Invoke(ctx, invo)
|
||||
return result, result.Error()
|
||||
}
|
||||
return interceptor(ctx, in, info, handler)
|
||||
}
|
||||
|
||||
func _EmailAlerts_GetEmailInformationList_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) {
|
||||
in := new(GetEmailInformationListReq)
|
||||
if err := dec(in); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
base := srv.(dubbo3.Dubbo3GrpcService)
|
||||
args := []interface{}{}
|
||||
args = append(args, in)
|
||||
md, _ := metadata.FromIncomingContext(ctx)
|
||||
invAttachment := make(map[string]interface{}, len(md))
|
||||
for k, v := range md {
|
||||
invAttachment[k] = v
|
||||
}
|
||||
invo := invocation.NewRPCInvocation("GetEmailInformationList", args, invAttachment)
|
||||
if interceptor == nil {
|
||||
result := base.XXX_GetProxyImpl().Invoke(ctx, invo)
|
||||
return result, result.Error()
|
||||
}
|
||||
info := &grpc_go.UnaryServerInfo{
|
||||
Server: srv,
|
||||
FullMethod: ctx.Value("XXX_TRIPLE_GO_INTERFACE_NAME").(string),
|
||||
}
|
||||
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
|
||||
result := base.XXX_GetProxyImpl().Invoke(ctx, invo)
|
||||
return result, result.Error()
|
||||
}
|
||||
return interceptor(ctx, in, info, handler)
|
||||
}
|
||||
|
||||
// EmailAlerts_ServiceDesc is the grpc_go.ServiceDesc for EmailAlerts service.
|
||||
// It's only intended for direct use with grpc_go.RegisterService,
|
||||
// and not to be introspected or modified (even as a copy)
|
||||
var EmailAlerts_ServiceDesc = grpc_go.ServiceDesc{
|
||||
ServiceName: "emailAlerts.EmailAlerts",
|
||||
HandlerType: (*EmailAlertsServer)(nil),
|
||||
Methods: []grpc_go.MethodDesc{
|
||||
{
|
||||
MethodName: "EmailAlertsSubmit",
|
||||
Handler: _EmailAlerts_EmailAlertsSubmit_Handler,
|
||||
},
|
||||
{
|
||||
MethodName: "GetEmailInformationList",
|
||||
Handler: _EmailAlerts_GetEmailInformationList_Handler,
|
||||
},
|
||||
},
|
||||
Streams: []grpc_go.StreamDesc{},
|
||||
Metadata: "api/emailAlerts/emailAlerts.proto",
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
@ -9,20 +9,53 @@ service Governance{
|
||||
rpc List(ListReq) returns (ListResp) {}
|
||||
rpc Delete(DeleteReq) returns (DeleteResp) {}
|
||||
rpc Edit(EditReq) returns (EditResp) {}
|
||||
rpc UpdataStatus(UpdataStatusReq) returns (UpdataStatusResp) {}
|
||||
rpc GetGovernanceInfo(GetGovernanceInfoReq) returns (GetGovernanceInfoResp) {}
|
||||
rpc Create(CreateReq) returns (CreateResp) {}
|
||||
rpc Display(DisplayReq) returns (DisplayResp) {}
|
||||
}
|
||||
|
||||
message LangSetting {
|
||||
string langType = 1;//语言类型
|
||||
int32 isSetting = 2;//是否设置
|
||||
}
|
||||
|
||||
message GovernanceLangData{
|
||||
string title = 1;//标题
|
||||
string attachment = 2;//附件
|
||||
string attachmentName = 3;//附件名称
|
||||
int32 isSetting = 4;//是否设置
|
||||
}
|
||||
|
||||
message GovernanceLang{
|
||||
string langType = 1;//语言类型
|
||||
GovernanceLangData data = 2;//语言数据
|
||||
}
|
||||
|
||||
message GovernanceInfo{
|
||||
string uuid = 1;
|
||||
repeated GovernanceLang dataByLang = 2;//语言数据
|
||||
int32 sort = 3;//排序
|
||||
int32 status = 4;//状态
|
||||
}
|
||||
|
||||
message Item{
|
||||
int32 id = 1;
|
||||
string uuid = 1;
|
||||
string title = 2;
|
||||
string attachment = 3;
|
||||
string attachmentName = 4;
|
||||
int32 sort = 5;
|
||||
int32 status = 6;
|
||||
int64 updatedAt = 7;
|
||||
string operator = 8;
|
||||
int32 operatorId = 9;
|
||||
repeated LangSetting langSetting = 5;//语言设置
|
||||
int32 sort = 6;
|
||||
int32 status = 7;
|
||||
int64 updatedAt = 8;
|
||||
string operator = 9;
|
||||
int32 operatorId = 10;
|
||||
}
|
||||
|
||||
message DisplayItem{
|
||||
string title = 1;
|
||||
string attachment = 2;
|
||||
string attachmentName = 3;
|
||||
}
|
||||
|
||||
message ListReq{
|
||||
@ -38,34 +71,48 @@ message ListResp{
|
||||
}
|
||||
|
||||
message DeleteReq{
|
||||
int32 id = 1;
|
||||
string uuid = 1;
|
||||
}
|
||||
|
||||
message DeleteResp{
|
||||
}
|
||||
|
||||
message EditReq{
|
||||
uint32 id = 1;
|
||||
string title = 2;
|
||||
string attachment = 3;
|
||||
string attachmentName = 4;
|
||||
int32 sort = 5;
|
||||
int32 status = 6;
|
||||
string operator = 7;
|
||||
int32 operatorId = 8;
|
||||
string uuid = 1;
|
||||
repeated GovernanceLang dataByLang = 2;
|
||||
int32 sort = 3;
|
||||
string operator = 4;
|
||||
int32 operatorId = 5;
|
||||
}
|
||||
|
||||
message EditResp{
|
||||
}
|
||||
|
||||
message UpdataStatusReq{
|
||||
string uuid = 1;
|
||||
int32 status = 2;
|
||||
string operator = 3;
|
||||
int32 operatorId = 4;
|
||||
}
|
||||
message UpdataStatusResp{
|
||||
string msg = 1;
|
||||
}
|
||||
|
||||
message GetGovernanceInfoReq{
|
||||
string uuid = 1;
|
||||
}
|
||||
message GetGovernanceInfoResp{
|
||||
string msg = 1;
|
||||
GovernanceInfo data = 2;
|
||||
}
|
||||
|
||||
message CreateReq{
|
||||
string title = 1;
|
||||
uint32 sort = 2;
|
||||
string attachment = 3;
|
||||
string attachmentName = 4;
|
||||
int32 status = 5;
|
||||
string operator = 6;
|
||||
int32 operatorId = 7;
|
||||
string uuid = 1;
|
||||
repeated GovernanceLang dataByLang = 2;
|
||||
uint32 sort = 3;
|
||||
int32 status = 4;
|
||||
string operator = 5;
|
||||
int32 operatorId = 6;
|
||||
}
|
||||
|
||||
message CreateResp{
|
||||
@ -73,9 +120,9 @@ message CreateResp{
|
||||
}
|
||||
|
||||
message DisplayReq{
|
||||
|
||||
string langType = 1;//语言类型
|
||||
}
|
||||
|
||||
message DisplayResp{
|
||||
repeated Item data = 1;
|
||||
repeated DisplayItem data = 1;
|
||||
}
|
||||
@ -1,5 +1,5 @@
|
||||
// Code generated by protoc-gen-gogo. DO NOT EDIT.
|
||||
// source: governance.proto
|
||||
// source: api/governance/governance.proto
|
||||
|
||||
package governance
|
||||
|
||||
@ -15,7 +15,41 @@ var _ = proto.Marshal
|
||||
var _ = fmt.Errorf
|
||||
var _ = math.Inf
|
||||
|
||||
func (this *LangSetting) Validate() error {
|
||||
return nil
|
||||
}
|
||||
func (this *GovernanceLangData) Validate() error {
|
||||
return nil
|
||||
}
|
||||
func (this *GovernanceLang) Validate() error {
|
||||
if this.Data != nil {
|
||||
if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(this.Data); err != nil {
|
||||
return github_com_mwitkow_go_proto_validators.FieldError("Data", err)
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
func (this *GovernanceInfo) Validate() error {
|
||||
for _, item := range this.DataByLang {
|
||||
if item != nil {
|
||||
if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(item); err != nil {
|
||||
return github_com_mwitkow_go_proto_validators.FieldError("DataByLang", err)
|
||||
}
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
func (this *Item) Validate() error {
|
||||
for _, item := range this.LangSetting {
|
||||
if item != nil {
|
||||
if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(item); err != nil {
|
||||
return github_com_mwitkow_go_proto_validators.FieldError("LangSetting", err)
|
||||
}
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
func (this *DisplayItem) Validate() error {
|
||||
return nil
|
||||
}
|
||||
func (this *ListReq) Validate() error {
|
||||
@ -38,12 +72,43 @@ func (this *DeleteResp) Validate() error {
|
||||
return nil
|
||||
}
|
||||
func (this *EditReq) Validate() error {
|
||||
for _, item := range this.DataByLang {
|
||||
if item != nil {
|
||||
if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(item); err != nil {
|
||||
return github_com_mwitkow_go_proto_validators.FieldError("DataByLang", err)
|
||||
}
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
func (this *EditResp) Validate() error {
|
||||
return nil
|
||||
}
|
||||
func (this *UpdataStatusReq) Validate() error {
|
||||
return nil
|
||||
}
|
||||
func (this *UpdataStatusResp) Validate() error {
|
||||
return nil
|
||||
}
|
||||
func (this *GetGovernanceInfoReq) Validate() error {
|
||||
return nil
|
||||
}
|
||||
func (this *GetGovernanceInfoResp) Validate() error {
|
||||
if this.Data != nil {
|
||||
if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(this.Data); err != nil {
|
||||
return github_com_mwitkow_go_proto_validators.FieldError("Data", err)
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
func (this *CreateReq) Validate() error {
|
||||
for _, item := range this.DataByLang {
|
||||
if item != nil {
|
||||
if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(item); err != nil {
|
||||
return github_com_mwitkow_go_proto_validators.FieldError("DataByLang", err)
|
||||
}
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
func (this *CreateResp) Validate() error {
|
||||
|
||||
@ -1,8 +1,8 @@
|
||||
// Code generated by protoc-gen-go-triple. DO NOT EDIT.
|
||||
// versions:
|
||||
// - protoc-gen-go-triple v1.0.8
|
||||
// - protoc v3.20.3
|
||||
// source: governance.proto
|
||||
// - protoc-gen-go-triple v1.0.5
|
||||
// - protoc v5.26.0
|
||||
// source: api/governance/governance.proto
|
||||
|
||||
package governance
|
||||
|
||||
@ -31,6 +31,8 @@ type GovernanceClient interface {
|
||||
List(ctx context.Context, in *ListReq, opts ...grpc_go.CallOption) (*ListResp, common.ErrorWithAttachment)
|
||||
Delete(ctx context.Context, in *DeleteReq, opts ...grpc_go.CallOption) (*DeleteResp, common.ErrorWithAttachment)
|
||||
Edit(ctx context.Context, in *EditReq, opts ...grpc_go.CallOption) (*EditResp, common.ErrorWithAttachment)
|
||||
UpdataStatus(ctx context.Context, in *UpdataStatusReq, opts ...grpc_go.CallOption) (*UpdataStatusResp, common.ErrorWithAttachment)
|
||||
GetGovernanceInfo(ctx context.Context, in *GetGovernanceInfoReq, opts ...grpc_go.CallOption) (*GetGovernanceInfoResp, common.ErrorWithAttachment)
|
||||
Create(ctx context.Context, in *CreateReq, opts ...grpc_go.CallOption) (*CreateResp, common.ErrorWithAttachment)
|
||||
Display(ctx context.Context, in *DisplayReq, opts ...grpc_go.CallOption) (*DisplayResp, common.ErrorWithAttachment)
|
||||
}
|
||||
@ -40,11 +42,13 @@ type governanceClient struct {
|
||||
}
|
||||
|
||||
type GovernanceClientImpl struct {
|
||||
List func(ctx context.Context, in *ListReq) (*ListResp, error)
|
||||
Delete func(ctx context.Context, in *DeleteReq) (*DeleteResp, error)
|
||||
Edit func(ctx context.Context, in *EditReq) (*EditResp, error)
|
||||
Create func(ctx context.Context, in *CreateReq) (*CreateResp, error)
|
||||
Display func(ctx context.Context, in *DisplayReq) (*DisplayResp, error)
|
||||
List func(ctx context.Context, in *ListReq) (*ListResp, error)
|
||||
Delete func(ctx context.Context, in *DeleteReq) (*DeleteResp, error)
|
||||
Edit func(ctx context.Context, in *EditReq) (*EditResp, error)
|
||||
UpdataStatus func(ctx context.Context, in *UpdataStatusReq) (*UpdataStatusResp, error)
|
||||
GetGovernanceInfo func(ctx context.Context, in *GetGovernanceInfoReq) (*GetGovernanceInfoResp, error)
|
||||
Create func(ctx context.Context, in *CreateReq) (*CreateResp, error)
|
||||
Display func(ctx context.Context, in *DisplayReq) (*DisplayResp, error)
|
||||
}
|
||||
|
||||
func (c *GovernanceClientImpl) GetDubboStub(cc *triple.TripleConn) GovernanceClient {
|
||||
@ -77,6 +81,18 @@ func (c *governanceClient) Edit(ctx context.Context, in *EditReq, opts ...grpc_g
|
||||
return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/Edit", in, out)
|
||||
}
|
||||
|
||||
func (c *governanceClient) UpdataStatus(ctx context.Context, in *UpdataStatusReq, opts ...grpc_go.CallOption) (*UpdataStatusResp, common.ErrorWithAttachment) {
|
||||
out := new(UpdataStatusResp)
|
||||
interfaceKey := ctx.Value(constant.InterfaceKey).(string)
|
||||
return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/UpdataStatus", in, out)
|
||||
}
|
||||
|
||||
func (c *governanceClient) GetGovernanceInfo(ctx context.Context, in *GetGovernanceInfoReq, opts ...grpc_go.CallOption) (*GetGovernanceInfoResp, common.ErrorWithAttachment) {
|
||||
out := new(GetGovernanceInfoResp)
|
||||
interfaceKey := ctx.Value(constant.InterfaceKey).(string)
|
||||
return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/GetGovernanceInfo", in, out)
|
||||
}
|
||||
|
||||
func (c *governanceClient) Create(ctx context.Context, in *CreateReq, opts ...grpc_go.CallOption) (*CreateResp, common.ErrorWithAttachment) {
|
||||
out := new(CreateResp)
|
||||
interfaceKey := ctx.Value(constant.InterfaceKey).(string)
|
||||
@ -96,6 +112,8 @@ type GovernanceServer interface {
|
||||
List(context.Context, *ListReq) (*ListResp, error)
|
||||
Delete(context.Context, *DeleteReq) (*DeleteResp, error)
|
||||
Edit(context.Context, *EditReq) (*EditResp, error)
|
||||
UpdataStatus(context.Context, *UpdataStatusReq) (*UpdataStatusResp, error)
|
||||
GetGovernanceInfo(context.Context, *GetGovernanceInfoReq) (*GetGovernanceInfoResp, error)
|
||||
Create(context.Context, *CreateReq) (*CreateResp, error)
|
||||
Display(context.Context, *DisplayReq) (*DisplayResp, error)
|
||||
mustEmbedUnimplementedGovernanceServer()
|
||||
@ -115,6 +133,12 @@ func (UnimplementedGovernanceServer) Delete(context.Context, *DeleteReq) (*Delet
|
||||
func (UnimplementedGovernanceServer) Edit(context.Context, *EditReq) (*EditResp, error) {
|
||||
return nil, status.Errorf(codes.Unimplemented, "method Edit not implemented")
|
||||
}
|
||||
func (UnimplementedGovernanceServer) UpdataStatus(context.Context, *UpdataStatusReq) (*UpdataStatusResp, error) {
|
||||
return nil, status.Errorf(codes.Unimplemented, "method UpdataStatus not implemented")
|
||||
}
|
||||
func (UnimplementedGovernanceServer) GetGovernanceInfo(context.Context, *GetGovernanceInfoReq) (*GetGovernanceInfoResp, error) {
|
||||
return nil, status.Errorf(codes.Unimplemented, "method GetGovernanceInfo not implemented")
|
||||
}
|
||||
func (UnimplementedGovernanceServer) Create(context.Context, *CreateReq) (*CreateResp, error) {
|
||||
return nil, status.Errorf(codes.Unimplemented, "method Create not implemented")
|
||||
}
|
||||
@ -236,6 +260,64 @@ func _Governance_Edit_Handler(srv interface{}, ctx context.Context, dec func(int
|
||||
return interceptor(ctx, in, info, handler)
|
||||
}
|
||||
|
||||
func _Governance_UpdataStatus_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) {
|
||||
in := new(UpdataStatusReq)
|
||||
if err := dec(in); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
base := srv.(dubbo3.Dubbo3GrpcService)
|
||||
args := []interface{}{}
|
||||
args = append(args, in)
|
||||
md, _ := metadata.FromIncomingContext(ctx)
|
||||
invAttachment := make(map[string]interface{}, len(md))
|
||||
for k, v := range md {
|
||||
invAttachment[k] = v
|
||||
}
|
||||
invo := invocation.NewRPCInvocation("UpdataStatus", args, invAttachment)
|
||||
if interceptor == nil {
|
||||
result := base.XXX_GetProxyImpl().Invoke(ctx, invo)
|
||||
return result, result.Error()
|
||||
}
|
||||
info := &grpc_go.UnaryServerInfo{
|
||||
Server: srv,
|
||||
FullMethod: ctx.Value("XXX_TRIPLE_GO_INTERFACE_NAME").(string),
|
||||
}
|
||||
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
|
||||
result := base.XXX_GetProxyImpl().Invoke(ctx, invo)
|
||||
return result, result.Error()
|
||||
}
|
||||
return interceptor(ctx, in, info, handler)
|
||||
}
|
||||
|
||||
func _Governance_GetGovernanceInfo_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) {
|
||||
in := new(GetGovernanceInfoReq)
|
||||
if err := dec(in); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
base := srv.(dubbo3.Dubbo3GrpcService)
|
||||
args := []interface{}{}
|
||||
args = append(args, in)
|
||||
md, _ := metadata.FromIncomingContext(ctx)
|
||||
invAttachment := make(map[string]interface{}, len(md))
|
||||
for k, v := range md {
|
||||
invAttachment[k] = v
|
||||
}
|
||||
invo := invocation.NewRPCInvocation("GetGovernanceInfo", args, invAttachment)
|
||||
if interceptor == nil {
|
||||
result := base.XXX_GetProxyImpl().Invoke(ctx, invo)
|
||||
return result, result.Error()
|
||||
}
|
||||
info := &grpc_go.UnaryServerInfo{
|
||||
Server: srv,
|
||||
FullMethod: ctx.Value("XXX_TRIPLE_GO_INTERFACE_NAME").(string),
|
||||
}
|
||||
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
|
||||
result := base.XXX_GetProxyImpl().Invoke(ctx, invo)
|
||||
return result, result.Error()
|
||||
}
|
||||
return interceptor(ctx, in, info, handler)
|
||||
}
|
||||
|
||||
func _Governance_Create_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) {
|
||||
in := new(CreateReq)
|
||||
if err := dec(in); err != nil {
|
||||
@ -313,6 +395,14 @@ var Governance_ServiceDesc = grpc_go.ServiceDesc{
|
||||
MethodName: "Edit",
|
||||
Handler: _Governance_Edit_Handler,
|
||||
},
|
||||
{
|
||||
MethodName: "UpdataStatus",
|
||||
Handler: _Governance_UpdataStatus_Handler,
|
||||
},
|
||||
{
|
||||
MethodName: "GetGovernanceInfo",
|
||||
Handler: _Governance_GetGovernanceInfo_Handler,
|
||||
},
|
||||
{
|
||||
MethodName: "Create",
|
||||
Handler: _Governance_Create_Handler,
|
||||
@ -323,5 +413,5 @@ var Governance_ServiceDesc = grpc_go.ServiceDesc{
|
||||
},
|
||||
},
|
||||
Streams: []grpc_go.StreamDesc{},
|
||||
Metadata: "governance.proto",
|
||||
Metadata: "api/governance/governance.proto",
|
||||
}
|
||||
|
||||
5111
api/members/members.pb.go
Normal file
5111
api/members/members.pb.go
Normal file
File diff suppressed because it is too large
Load Diff
341
api/members/members.validator.pb.go
Normal file
341
api/members/members.validator.pb.go
Normal file
@ -0,0 +1,341 @@
|
||||
// Code generated by protoc-gen-gogo. DO NOT EDIT.
|
||||
// source: api/members/members.proto
|
||||
|
||||
package members
|
||||
|
||||
import (
|
||||
fmt "fmt"
|
||||
math "math"
|
||||
proto "github.com/golang/protobuf/proto"
|
||||
github_com_mwitkow_go_proto_validators "github.com/mwitkow/go-proto-validators"
|
||||
)
|
||||
|
||||
// Reference imports to suppress errors if they are not otherwise used.
|
||||
var _ = proto.Marshal
|
||||
var _ = fmt.Errorf
|
||||
var _ = math.Inf
|
||||
|
||||
func (this *Filtrate) Validate() error {
|
||||
return nil
|
||||
}
|
||||
func (this *LangSetting) Validate() error {
|
||||
return nil
|
||||
}
|
||||
func (this *ManagementLangData) Validate() error {
|
||||
return nil
|
||||
}
|
||||
func (this *ManagementLang) Validate() error {
|
||||
if this.Data != nil {
|
||||
if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(this.Data); err != nil {
|
||||
return github_com_mwitkow_go_proto_validators.FieldError("Data", err)
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
func (this *Management) Validate() error {
|
||||
for _, item := range this.LangSetting {
|
||||
if item != nil {
|
||||
if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(item); err != nil {
|
||||
return github_com_mwitkow_go_proto_validators.FieldError("LangSetting", err)
|
||||
}
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
func (this *AddManagementReq) Validate() error {
|
||||
for _, item := range this.DataByLang {
|
||||
if item != nil {
|
||||
if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(item); err != nil {
|
||||
return github_com_mwitkow_go_proto_validators.FieldError("DataByLang", err)
|
||||
}
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
func (this *AddManagementResp) Validate() error {
|
||||
return nil
|
||||
}
|
||||
func (this *SortAndStatusManagementReq) Validate() error {
|
||||
return nil
|
||||
}
|
||||
func (this *SortAndStatusManagementResp) Validate() error {
|
||||
return nil
|
||||
}
|
||||
func (this *EditManagementReq) Validate() error {
|
||||
for _, item := range this.DataByLang {
|
||||
if item != nil {
|
||||
if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(item); err != nil {
|
||||
return github_com_mwitkow_go_proto_validators.FieldError("DataByLang", err)
|
||||
}
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
func (this *EditManagementResp) Validate() error {
|
||||
return nil
|
||||
}
|
||||
func (this *DeleteManagementReq) Validate() error {
|
||||
return nil
|
||||
}
|
||||
func (this *DeleteManagementResp) Validate() error {
|
||||
return nil
|
||||
}
|
||||
func (this *GetManagementListReq) Validate() error {
|
||||
if this.Filtrate != nil {
|
||||
if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(this.Filtrate); err != nil {
|
||||
return github_com_mwitkow_go_proto_validators.FieldError("Filtrate", err)
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
func (this *GetManagementListResp) Validate() error {
|
||||
for _, item := range this.Data {
|
||||
if item != nil {
|
||||
if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(item); err != nil {
|
||||
return github_com_mwitkow_go_proto_validators.FieldError("Data", err)
|
||||
}
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
func (this *GetManagementInfoReq) Validate() error {
|
||||
return nil
|
||||
}
|
||||
func (this *GetManagementInfoResp) Validate() error {
|
||||
for _, item := range this.DataByLang {
|
||||
if item != nil {
|
||||
if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(item); err != nil {
|
||||
return github_com_mwitkow_go_proto_validators.FieldError("DataByLang", err)
|
||||
}
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
func (this *DisplayManagementReq) Validate() error {
|
||||
return nil
|
||||
}
|
||||
func (this *DisplayManagementResp) Validate() error {
|
||||
for _, item := range this.Item {
|
||||
if item != nil {
|
||||
if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(item); err != nil {
|
||||
return github_com_mwitkow_go_proto_validators.FieldError("Item", err)
|
||||
}
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
func (this *DisplayManagementItem) Validate() error {
|
||||
return nil
|
||||
}
|
||||
func (this *BoardOfDirectorsLang) Validate() error {
|
||||
if this.Data != nil {
|
||||
if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(this.Data); err != nil {
|
||||
return github_com_mwitkow_go_proto_validators.FieldError("Data", err)
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
func (this *BoardOfDirectorsLangData) Validate() error {
|
||||
return nil
|
||||
}
|
||||
func (this *BoardOfDirectors) Validate() error {
|
||||
for _, item := range this.LangSetting {
|
||||
if item != nil {
|
||||
if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(item); err != nil {
|
||||
return github_com_mwitkow_go_proto_validators.FieldError("LangSetting", err)
|
||||
}
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
func (this *AddBoardOfDirectorsReq) Validate() error {
|
||||
for _, item := range this.DataByLang {
|
||||
if item != nil {
|
||||
if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(item); err != nil {
|
||||
return github_com_mwitkow_go_proto_validators.FieldError("DataByLang", err)
|
||||
}
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
func (this *AddBoardOfDirectorsResp) Validate() error {
|
||||
return nil
|
||||
}
|
||||
func (this *SortAndStatusBoardOfDirectorsReq) Validate() error {
|
||||
return nil
|
||||
}
|
||||
func (this *SortAndStatusBoardOfDirectorsResp) Validate() error {
|
||||
return nil
|
||||
}
|
||||
func (this *EditBoardOfDirectorsReq) Validate() error {
|
||||
for _, item := range this.DataByLang {
|
||||
if item != nil {
|
||||
if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(item); err != nil {
|
||||
return github_com_mwitkow_go_proto_validators.FieldError("DataByLang", err)
|
||||
}
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
func (this *EditBoardOfDirectorsResp) Validate() error {
|
||||
return nil
|
||||
}
|
||||
func (this *DeleteBoardOfDirectorsReq) Validate() error {
|
||||
return nil
|
||||
}
|
||||
func (this *DeleteBoardOfDirectorsResp) Validate() error {
|
||||
return nil
|
||||
}
|
||||
func (this *GetBoardOfDirectorsListReq) Validate() error {
|
||||
if this.Filtrate != nil {
|
||||
if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(this.Filtrate); err != nil {
|
||||
return github_com_mwitkow_go_proto_validators.FieldError("Filtrate", err)
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
func (this *GetBoardOfDirectorsListResp) Validate() error {
|
||||
for _, item := range this.Data {
|
||||
if item != nil {
|
||||
if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(item); err != nil {
|
||||
return github_com_mwitkow_go_proto_validators.FieldError("Data", err)
|
||||
}
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
func (this *GetBoardOfDirectorsInfoReq) Validate() error {
|
||||
return nil
|
||||
}
|
||||
func (this *GetBoardOfDirectorsInfoResp) Validate() error {
|
||||
for _, item := range this.DataByLang {
|
||||
if item != nil {
|
||||
if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(item); err != nil {
|
||||
return github_com_mwitkow_go_proto_validators.FieldError("DataByLang", err)
|
||||
}
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
func (this *DisplayBoardOfDirectorsReq) Validate() error {
|
||||
return nil
|
||||
}
|
||||
func (this *DisplayBoardOfDirectorsResp) Validate() error {
|
||||
for _, item := range this.Item {
|
||||
if item != nil {
|
||||
if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(item); err != nil {
|
||||
return github_com_mwitkow_go_proto_validators.FieldError("Item", err)
|
||||
}
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
func (this *DisplayBoardOfDirectorItem) Validate() error {
|
||||
return nil
|
||||
}
|
||||
func (this *CommitteeAppointments) Validate() error {
|
||||
for _, item := range this.LangSetting {
|
||||
if item != nil {
|
||||
if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(item); err != nil {
|
||||
return github_com_mwitkow_go_proto_validators.FieldError("LangSetting", err)
|
||||
}
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
func (this *CommitteeAppointmentsLang) Validate() error {
|
||||
if this.Data != nil {
|
||||
if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(this.Data); err != nil {
|
||||
return github_com_mwitkow_go_proto_validators.FieldError("Data", err)
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
func (this *CommitteeAppointmentsLangData) Validate() error {
|
||||
return nil
|
||||
}
|
||||
func (this *AddCommitteeAppointmentsReq) Validate() error {
|
||||
for _, item := range this.DataByLang {
|
||||
if item != nil {
|
||||
if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(item); err != nil {
|
||||
return github_com_mwitkow_go_proto_validators.FieldError("DataByLang", err)
|
||||
}
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
func (this *AddCommitteeAppointmentsResp) Validate() error {
|
||||
return nil
|
||||
}
|
||||
func (this *SortAndStatusCommitteeAppointmentsReq) Validate() error {
|
||||
return nil
|
||||
}
|
||||
func (this *SortAndStatusCommitteeAppointmentsResp) Validate() error {
|
||||
return nil
|
||||
}
|
||||
func (this *EditCommitteeAppointmentsReq) Validate() error {
|
||||
for _, item := range this.DataByLang {
|
||||
if item != nil {
|
||||
if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(item); err != nil {
|
||||
return github_com_mwitkow_go_proto_validators.FieldError("DataByLang", err)
|
||||
}
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
func (this *EditCommitteeAppointmentsResp) Validate() error {
|
||||
return nil
|
||||
}
|
||||
func (this *DeleteCommitteeAppointmentsReq) Validate() error {
|
||||
return nil
|
||||
}
|
||||
func (this *DeleteCommitteeAppointmentsResp) Validate() error {
|
||||
return nil
|
||||
}
|
||||
func (this *GetCommitteeAppointmentsListReq) Validate() error {
|
||||
if this.Filtrate != nil {
|
||||
if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(this.Filtrate); err != nil {
|
||||
return github_com_mwitkow_go_proto_validators.FieldError("Filtrate", err)
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
func (this *GetCommitteeAppointmentsListResp) Validate() error {
|
||||
for _, item := range this.Data {
|
||||
if item != nil {
|
||||
if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(item); err != nil {
|
||||
return github_com_mwitkow_go_proto_validators.FieldError("Data", err)
|
||||
}
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
func (this *GetCommitteeAppointmentsInfoReq) Validate() error {
|
||||
return nil
|
||||
}
|
||||
func (this *GetCommitteeAppointmentsInfoResp) Validate() error {
|
||||
for _, item := range this.DataByLang {
|
||||
if item != nil {
|
||||
if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(item); err != nil {
|
||||
return github_com_mwitkow_go_proto_validators.FieldError("DataByLang", err)
|
||||
}
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
func (this *DisplayCommitteeAppointmentsReq) Validate() error {
|
||||
return nil
|
||||
}
|
||||
func (this *DisplayCommitteeAppointmentsResp) Validate() error {
|
||||
for _, item := range this.Item {
|
||||
if item != nil {
|
||||
if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(item); err != nil {
|
||||
return github_com_mwitkow_go_proto_validators.FieldError("Item", err)
|
||||
}
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
func (this *DisplayCommitteeAppointmentsItem) Validate() error {
|
||||
return nil
|
||||
}
|
||||
1095
api/members/members_triple.pb.go
Normal file
1095
api/members/members_triple.pb.go
Normal file
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -1,119 +0,0 @@
|
||||
syntax = "proto3";
|
||||
package pressreleases;
|
||||
//import "descriptor.proto";
|
||||
//import "validator.proto";
|
||||
|
||||
option go_package = "./;pressreleases";
|
||||
|
||||
service PressReleases{
|
||||
rpc List(ListReq) returns (ListResp) {}
|
||||
rpc Display(DisplayReq) returns (DisplayResp) {}
|
||||
rpc Edit(EditReq) returns (EditResp) {}
|
||||
rpc Create(CreateReq) returns (CreateResp) {}
|
||||
rpc Delete(DeleteReq) returns (DeleteResp) {}
|
||||
rpc Get(GetReq) returns (GetResp) {}
|
||||
}
|
||||
|
||||
message Item{
|
||||
uint32 id = 1;
|
||||
string title = 2;
|
||||
uint64 createdAt = 3;
|
||||
uint32 sort = 4;
|
||||
string content = 5;
|
||||
string attachment = 6;
|
||||
string attachmentName = 7;
|
||||
uint64 updatedAt = 8;
|
||||
uint32 status = 9;
|
||||
uint32 display = 10;
|
||||
string summary = 11;
|
||||
string operator = 12;
|
||||
int32 operatorId = 13;
|
||||
}
|
||||
|
||||
message ListReq{
|
||||
string title = 1;
|
||||
uint64 startTime = 2;
|
||||
uint64 endTime = 3;
|
||||
uint32 status = 4;
|
||||
uint32 display = 5;
|
||||
int32 page = 6;
|
||||
int32 pageSize = 7;
|
||||
}
|
||||
|
||||
message ListResp{
|
||||
uint64 total = 1;
|
||||
repeated Item data = 2;
|
||||
}
|
||||
|
||||
message DisplayReq{
|
||||
string query = 1;
|
||||
uint32 page = 2;
|
||||
uint32 pageSize = 3;
|
||||
int64 timeStart = 4;
|
||||
int64 timeEnd = 5;
|
||||
int32 display = 6;
|
||||
}
|
||||
|
||||
message DisplayResp{
|
||||
int64 total = 1;
|
||||
repeated Item data = 2;
|
||||
}
|
||||
|
||||
message EditReq{
|
||||
uint32 id = 1;
|
||||
string title = 2;
|
||||
uint64 createdAt = 3;
|
||||
uint32 sort = 4;
|
||||
string content = 5;
|
||||
string attachment = 6;
|
||||
string attachmentName = 7;
|
||||
uint32 status = 8;
|
||||
uint32 display = 9;
|
||||
string summary = 10;
|
||||
string operator = 11;
|
||||
int32 operatorId = 12;
|
||||
|
||||
}
|
||||
|
||||
message EditResp{
|
||||
}
|
||||
|
||||
message CreateReq{
|
||||
string title = 1;
|
||||
uint64 createdAt = 2;
|
||||
uint32 sort = 3;
|
||||
string content = 4;
|
||||
string attachment = 5;
|
||||
string attachmentName = 6;
|
||||
uint32 status = 7;
|
||||
uint32 display = 8;
|
||||
string summary = 9;
|
||||
string operator = 10;
|
||||
int32 operatorId = 11;
|
||||
}
|
||||
|
||||
message CreateResp{
|
||||
|
||||
}
|
||||
|
||||
message DeleteReq{
|
||||
uint32 id = 1;
|
||||
}
|
||||
|
||||
message DeleteResp{
|
||||
|
||||
}
|
||||
|
||||
message GetReq{
|
||||
int64 id = 1;
|
||||
}
|
||||
|
||||
message GetResp{
|
||||
uint32 id = 1;
|
||||
string title = 2;
|
||||
uint64 createdAt = 3;
|
||||
string content = 4;
|
||||
string attachment = 5;
|
||||
string attachmentName = 6;
|
||||
string summary = 7;
|
||||
}
|
||||
@ -1,5 +1,5 @@
|
||||
// Code generated by protoc-gen-gogo. DO NOT EDIT.
|
||||
// source: press_releases.proto
|
||||
// source: api/pressreleases/press_releases.proto
|
||||
|
||||
package pressreleases
|
||||
|
||||
@ -15,7 +15,23 @@ var _ = proto.Marshal
|
||||
var _ = fmt.Errorf
|
||||
var _ = math.Inf
|
||||
|
||||
func (this *Item) Validate() error {
|
||||
func (this *LangSetting) Validate() error {
|
||||
return nil
|
||||
}
|
||||
func (this *PressReleasesLang) Validate() error {
|
||||
return nil
|
||||
}
|
||||
func (this *PressReleasesData) Validate() error {
|
||||
for _, item := range this.LangSetting {
|
||||
if item != nil {
|
||||
if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(item); err != nil {
|
||||
return github_com_mwitkow_go_proto_validators.FieldError("LangSetting", err)
|
||||
}
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
func (this *DisplayItem) Validate() error {
|
||||
return nil
|
||||
}
|
||||
func (this *ListReq) Validate() error {
|
||||
@ -31,6 +47,25 @@ func (this *ListResp) Validate() error {
|
||||
}
|
||||
return nil
|
||||
}
|
||||
func (this *SortAndStatusReq) Validate() error {
|
||||
return nil
|
||||
}
|
||||
func (this *SortAndStatusResp) Validate() error {
|
||||
return nil
|
||||
}
|
||||
func (this *InfoReq) Validate() error {
|
||||
return nil
|
||||
}
|
||||
func (this *InfoResp) Validate() error {
|
||||
for _, item := range this.DataByLang {
|
||||
if item != nil {
|
||||
if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(item); err != nil {
|
||||
return github_com_mwitkow_go_proto_validators.FieldError("DataByLang", err)
|
||||
}
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
func (this *DisplayReq) Validate() error {
|
||||
return nil
|
||||
}
|
||||
@ -45,12 +80,26 @@ func (this *DisplayResp) Validate() error {
|
||||
return nil
|
||||
}
|
||||
func (this *EditReq) Validate() error {
|
||||
for _, item := range this.DataByLang {
|
||||
if item != nil {
|
||||
if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(item); err != nil {
|
||||
return github_com_mwitkow_go_proto_validators.FieldError("DataByLang", err)
|
||||
}
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
func (this *EditResp) Validate() error {
|
||||
return nil
|
||||
}
|
||||
func (this *CreateReq) Validate() error {
|
||||
for _, item := range this.DataByLang {
|
||||
if item != nil {
|
||||
if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(item); err != nil {
|
||||
return github_com_mwitkow_go_proto_validators.FieldError("DataByLang", err)
|
||||
}
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
func (this *CreateResp) Validate() error {
|
||||
@ -66,5 +115,10 @@ func (this *GetReq) Validate() error {
|
||||
return nil
|
||||
}
|
||||
func (this *GetResp) Validate() error {
|
||||
if this.Data != nil {
|
||||
if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(this.Data); err != nil {
|
||||
return github_com_mwitkow_go_proto_validators.FieldError("Data", err)
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
@ -1,8 +1,8 @@
|
||||
// Code generated by protoc-gen-go-triple. DO NOT EDIT.
|
||||
// versions:
|
||||
// - protoc-gen-go-triple v1.0.8
|
||||
// - protoc v3.20.3
|
||||
// source: press_releases.proto
|
||||
// - protoc-gen-go-triple v1.0.5
|
||||
// - protoc v5.26.0
|
||||
// source: api/pressreleases/press_releases.proto
|
||||
|
||||
package pressreleases
|
||||
|
||||
@ -29,6 +29,8 @@ const _ = grpc_go.SupportPackageIsVersion7
|
||||
// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream.
|
||||
type PressReleasesClient interface {
|
||||
List(ctx context.Context, in *ListReq, opts ...grpc_go.CallOption) (*ListResp, common.ErrorWithAttachment)
|
||||
SortAndStatus(ctx context.Context, in *SortAndStatusReq, opts ...grpc_go.CallOption) (*SortAndStatusResp, common.ErrorWithAttachment)
|
||||
Info(ctx context.Context, in *InfoReq, opts ...grpc_go.CallOption) (*InfoResp, common.ErrorWithAttachment)
|
||||
Display(ctx context.Context, in *DisplayReq, opts ...grpc_go.CallOption) (*DisplayResp, common.ErrorWithAttachment)
|
||||
Edit(ctx context.Context, in *EditReq, opts ...grpc_go.CallOption) (*EditResp, common.ErrorWithAttachment)
|
||||
Create(ctx context.Context, in *CreateReq, opts ...grpc_go.CallOption) (*CreateResp, common.ErrorWithAttachment)
|
||||
@ -41,12 +43,14 @@ type pressReleasesClient struct {
|
||||
}
|
||||
|
||||
type PressReleasesClientImpl struct {
|
||||
List func(ctx context.Context, in *ListReq) (*ListResp, error)
|
||||
Display func(ctx context.Context, in *DisplayReq) (*DisplayResp, error)
|
||||
Edit func(ctx context.Context, in *EditReq) (*EditResp, error)
|
||||
Create func(ctx context.Context, in *CreateReq) (*CreateResp, error)
|
||||
Delete func(ctx context.Context, in *DeleteReq) (*DeleteResp, error)
|
||||
Get func(ctx context.Context, in *GetReq) (*GetResp, error)
|
||||
List func(ctx context.Context, in *ListReq) (*ListResp, error)
|
||||
SortAndStatus func(ctx context.Context, in *SortAndStatusReq) (*SortAndStatusResp, error)
|
||||
Info func(ctx context.Context, in *InfoReq) (*InfoResp, error)
|
||||
Display func(ctx context.Context, in *DisplayReq) (*DisplayResp, error)
|
||||
Edit func(ctx context.Context, in *EditReq) (*EditResp, error)
|
||||
Create func(ctx context.Context, in *CreateReq) (*CreateResp, error)
|
||||
Delete func(ctx context.Context, in *DeleteReq) (*DeleteResp, error)
|
||||
Get func(ctx context.Context, in *GetReq) (*GetResp, error)
|
||||
}
|
||||
|
||||
func (c *PressReleasesClientImpl) GetDubboStub(cc *triple.TripleConn) PressReleasesClient {
|
||||
@ -67,6 +71,18 @@ func (c *pressReleasesClient) List(ctx context.Context, in *ListReq, opts ...grp
|
||||
return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/List", in, out)
|
||||
}
|
||||
|
||||
func (c *pressReleasesClient) SortAndStatus(ctx context.Context, in *SortAndStatusReq, opts ...grpc_go.CallOption) (*SortAndStatusResp, common.ErrorWithAttachment) {
|
||||
out := new(SortAndStatusResp)
|
||||
interfaceKey := ctx.Value(constant.InterfaceKey).(string)
|
||||
return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/SortAndStatus", in, out)
|
||||
}
|
||||
|
||||
func (c *pressReleasesClient) Info(ctx context.Context, in *InfoReq, opts ...grpc_go.CallOption) (*InfoResp, common.ErrorWithAttachment) {
|
||||
out := new(InfoResp)
|
||||
interfaceKey := ctx.Value(constant.InterfaceKey).(string)
|
||||
return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/Info", in, out)
|
||||
}
|
||||
|
||||
func (c *pressReleasesClient) Display(ctx context.Context, in *DisplayReq, opts ...grpc_go.CallOption) (*DisplayResp, common.ErrorWithAttachment) {
|
||||
out := new(DisplayResp)
|
||||
interfaceKey := ctx.Value(constant.InterfaceKey).(string)
|
||||
@ -102,6 +118,8 @@ func (c *pressReleasesClient) Get(ctx context.Context, in *GetReq, opts ...grpc_
|
||||
// for forward compatibility
|
||||
type PressReleasesServer interface {
|
||||
List(context.Context, *ListReq) (*ListResp, error)
|
||||
SortAndStatus(context.Context, *SortAndStatusReq) (*SortAndStatusResp, error)
|
||||
Info(context.Context, *InfoReq) (*InfoResp, error)
|
||||
Display(context.Context, *DisplayReq) (*DisplayResp, error)
|
||||
Edit(context.Context, *EditReq) (*EditResp, error)
|
||||
Create(context.Context, *CreateReq) (*CreateResp, error)
|
||||
@ -118,6 +136,12 @@ type UnimplementedPressReleasesServer struct {
|
||||
func (UnimplementedPressReleasesServer) List(context.Context, *ListReq) (*ListResp, error) {
|
||||
return nil, status.Errorf(codes.Unimplemented, "method List not implemented")
|
||||
}
|
||||
func (UnimplementedPressReleasesServer) SortAndStatus(context.Context, *SortAndStatusReq) (*SortAndStatusResp, error) {
|
||||
return nil, status.Errorf(codes.Unimplemented, "method SortAndStatus not implemented")
|
||||
}
|
||||
func (UnimplementedPressReleasesServer) Info(context.Context, *InfoReq) (*InfoResp, error) {
|
||||
return nil, status.Errorf(codes.Unimplemented, "method Info not implemented")
|
||||
}
|
||||
func (UnimplementedPressReleasesServer) Display(context.Context, *DisplayReq) (*DisplayResp, error) {
|
||||
return nil, status.Errorf(codes.Unimplemented, "method Display not implemented")
|
||||
}
|
||||
@ -190,6 +214,64 @@ func _PressReleases_List_Handler(srv interface{}, ctx context.Context, dec func(
|
||||
return interceptor(ctx, in, info, handler)
|
||||
}
|
||||
|
||||
func _PressReleases_SortAndStatus_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) {
|
||||
in := new(SortAndStatusReq)
|
||||
if err := dec(in); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
base := srv.(dubbo3.Dubbo3GrpcService)
|
||||
args := []interface{}{}
|
||||
args = append(args, in)
|
||||
md, _ := metadata.FromIncomingContext(ctx)
|
||||
invAttachment := make(map[string]interface{}, len(md))
|
||||
for k, v := range md {
|
||||
invAttachment[k] = v
|
||||
}
|
||||
invo := invocation.NewRPCInvocation("SortAndStatus", args, invAttachment)
|
||||
if interceptor == nil {
|
||||
result := base.XXX_GetProxyImpl().Invoke(ctx, invo)
|
||||
return result, result.Error()
|
||||
}
|
||||
info := &grpc_go.UnaryServerInfo{
|
||||
Server: srv,
|
||||
FullMethod: ctx.Value("XXX_TRIPLE_GO_INTERFACE_NAME").(string),
|
||||
}
|
||||
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
|
||||
result := base.XXX_GetProxyImpl().Invoke(ctx, invo)
|
||||
return result, result.Error()
|
||||
}
|
||||
return interceptor(ctx, in, info, handler)
|
||||
}
|
||||
|
||||
func _PressReleases_Info_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) {
|
||||
in := new(InfoReq)
|
||||
if err := dec(in); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
base := srv.(dubbo3.Dubbo3GrpcService)
|
||||
args := []interface{}{}
|
||||
args = append(args, in)
|
||||
md, _ := metadata.FromIncomingContext(ctx)
|
||||
invAttachment := make(map[string]interface{}, len(md))
|
||||
for k, v := range md {
|
||||
invAttachment[k] = v
|
||||
}
|
||||
invo := invocation.NewRPCInvocation("Info", args, invAttachment)
|
||||
if interceptor == nil {
|
||||
result := base.XXX_GetProxyImpl().Invoke(ctx, invo)
|
||||
return result, result.Error()
|
||||
}
|
||||
info := &grpc_go.UnaryServerInfo{
|
||||
Server: srv,
|
||||
FullMethod: ctx.Value("XXX_TRIPLE_GO_INTERFACE_NAME").(string),
|
||||
}
|
||||
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
|
||||
result := base.XXX_GetProxyImpl().Invoke(ctx, invo)
|
||||
return result, result.Error()
|
||||
}
|
||||
return interceptor(ctx, in, info, handler)
|
||||
}
|
||||
|
||||
func _PressReleases_Display_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) {
|
||||
in := new(DisplayReq)
|
||||
if err := dec(in); err != nil {
|
||||
@ -346,6 +428,14 @@ var PressReleases_ServiceDesc = grpc_go.ServiceDesc{
|
||||
MethodName: "List",
|
||||
Handler: _PressReleases_List_Handler,
|
||||
},
|
||||
{
|
||||
MethodName: "SortAndStatus",
|
||||
Handler: _PressReleases_SortAndStatus_Handler,
|
||||
},
|
||||
{
|
||||
MethodName: "Info",
|
||||
Handler: _PressReleases_Info_Handler,
|
||||
},
|
||||
{
|
||||
MethodName: "Display",
|
||||
Handler: _PressReleases_Display_Handler,
|
||||
@ -368,5 +458,5 @@ var PressReleases_ServiceDesc = grpc_go.ServiceDesc{
|
||||
},
|
||||
},
|
||||
Streams: []grpc_go.StreamDesc{},
|
||||
Metadata: "press_releases.proto",
|
||||
Metadata: "api/pressreleases/press_releases.proto",
|
||||
}
|
||||
|
||||
3439
api/reports/reports.pb.go
Normal file
3439
api/reports/reports.pb.go
Normal file
File diff suppressed because it is too large
Load Diff
227
api/reports/reports.validator.pb.go
Normal file
227
api/reports/reports.validator.pb.go
Normal file
@ -0,0 +1,227 @@
|
||||
// Code generated by protoc-gen-gogo. DO NOT EDIT.
|
||||
// source: api/reports/reports.proto
|
||||
|
||||
package reports
|
||||
|
||||
import (
|
||||
fmt "fmt"
|
||||
math "math"
|
||||
proto "github.com/golang/protobuf/proto"
|
||||
github_com_mwitkow_go_proto_validators "github.com/mwitkow/go-proto-validators"
|
||||
)
|
||||
|
||||
// Reference imports to suppress errors if they are not otherwise used.
|
||||
var _ = proto.Marshal
|
||||
var _ = fmt.Errorf
|
||||
var _ = math.Inf
|
||||
|
||||
func (this *Filtrate) Validate() error {
|
||||
return nil
|
||||
}
|
||||
func (this *FiltrateWeb) Validate() error {
|
||||
return nil
|
||||
}
|
||||
func (this *LangSetting) Validate() error {
|
||||
return nil
|
||||
}
|
||||
func (this *AnnualReport) Validate() error {
|
||||
for _, item := range this.LangSetting {
|
||||
if item != nil {
|
||||
if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(item); err != nil {
|
||||
return github_com_mwitkow_go_proto_validators.FieldError("LangSetting", err)
|
||||
}
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
func (this *AnnualReportLang) Validate() error {
|
||||
return nil
|
||||
}
|
||||
func (this *QuarterlyReport) Validate() error {
|
||||
for _, item := range this.LangSetting {
|
||||
if item != nil {
|
||||
if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(item); err != nil {
|
||||
return github_com_mwitkow_go_proto_validators.FieldError("LangSetting", err)
|
||||
}
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
func (this *QuarterlyReportLang) Validate() error {
|
||||
return nil
|
||||
}
|
||||
func (this *GetAnnualReportListReq) Validate() error {
|
||||
if this.Filtrate != nil {
|
||||
if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(this.Filtrate); err != nil {
|
||||
return github_com_mwitkow_go_proto_validators.FieldError("Filtrate", err)
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
func (this *GetAnnualReportListResp) Validate() error {
|
||||
for _, item := range this.Data {
|
||||
if item != nil {
|
||||
if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(item); err != nil {
|
||||
return github_com_mwitkow_go_proto_validators.FieldError("Data", err)
|
||||
}
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
func (this *GetAnnualReportInfoReq) Validate() error {
|
||||
return nil
|
||||
}
|
||||
func (this *GetAnnualReportInfoResp) Validate() error {
|
||||
for _, item := range this.DataByLang {
|
||||
if item != nil {
|
||||
if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(item); err != nil {
|
||||
return github_com_mwitkow_go_proto_validators.FieldError("DataByLang", err)
|
||||
}
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
func (this *AddAnnualReportReq) Validate() error {
|
||||
for _, item := range this.DataByLang {
|
||||
if item != nil {
|
||||
if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(item); err != nil {
|
||||
return github_com_mwitkow_go_proto_validators.FieldError("DataByLang", err)
|
||||
}
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
func (this *AddAnnualReportResp) Validate() error {
|
||||
return nil
|
||||
}
|
||||
func (this *SortAndStatusAnnualReportReq) Validate() error {
|
||||
return nil
|
||||
}
|
||||
func (this *SortAndStatusAnnualReportResp) Validate() error {
|
||||
return nil
|
||||
}
|
||||
func (this *EditAnnualReportReq) Validate() error {
|
||||
for _, item := range this.DataByLang {
|
||||
if item != nil {
|
||||
if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(item); err != nil {
|
||||
return github_com_mwitkow_go_proto_validators.FieldError("DataByLang", err)
|
||||
}
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
func (this *EditAnnualReportResp) Validate() error {
|
||||
return nil
|
||||
}
|
||||
func (this *DeleteAnnualReportReq) Validate() error {
|
||||
return nil
|
||||
}
|
||||
func (this *DeleteAnnualReportResp) Validate() error {
|
||||
return nil
|
||||
}
|
||||
func (this *DisplayAnnualReportReq) Validate() error {
|
||||
return nil
|
||||
}
|
||||
func (this *DisplayAnnualReportResp) Validate() error {
|
||||
for _, item := range this.Item {
|
||||
if item != nil {
|
||||
if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(item); err != nil {
|
||||
return github_com_mwitkow_go_proto_validators.FieldError("Item", err)
|
||||
}
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
func (this *DisplayAnnualReportItem) Validate() error {
|
||||
return nil
|
||||
}
|
||||
func (this *GetQuarterlyReportListReq) Validate() error {
|
||||
if this.Filtrate != nil {
|
||||
if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(this.Filtrate); err != nil {
|
||||
return github_com_mwitkow_go_proto_validators.FieldError("Filtrate", err)
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
func (this *GetQuarterlyReportListResp) Validate() error {
|
||||
for _, item := range this.Data {
|
||||
if item != nil {
|
||||
if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(item); err != nil {
|
||||
return github_com_mwitkow_go_proto_validators.FieldError("Data", err)
|
||||
}
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
func (this *GetQuarterlyReportInfoReq) Validate() error {
|
||||
return nil
|
||||
}
|
||||
func (this *GetQuarterlyReportInfoResp) Validate() error {
|
||||
for _, item := range this.DataByLang {
|
||||
if item != nil {
|
||||
if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(item); err != nil {
|
||||
return github_com_mwitkow_go_proto_validators.FieldError("DataByLang", err)
|
||||
}
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
func (this *AddQuarterlyReportReq) Validate() error {
|
||||
for _, item := range this.DataByLang {
|
||||
if item != nil {
|
||||
if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(item); err != nil {
|
||||
return github_com_mwitkow_go_proto_validators.FieldError("DataByLang", err)
|
||||
}
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
func (this *AddQuarterlyReportResp) Validate() error {
|
||||
return nil
|
||||
}
|
||||
func (this *SortAndStatusQuarterlyReportReq) Validate() error {
|
||||
return nil
|
||||
}
|
||||
func (this *SortAndStatusQuarterlyReportResp) Validate() error {
|
||||
return nil
|
||||
}
|
||||
func (this *EditQuarterlyReportReq) Validate() error {
|
||||
for _, item := range this.DataByLang {
|
||||
if item != nil {
|
||||
if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(item); err != nil {
|
||||
return github_com_mwitkow_go_proto_validators.FieldError("DataByLang", err)
|
||||
}
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
func (this *EditQuarterlyReportResp) Validate() error {
|
||||
return nil
|
||||
}
|
||||
func (this *DeleteQuarterlyReportReq) Validate() error {
|
||||
return nil
|
||||
}
|
||||
func (this *DeleteQuarterlyReportResp) Validate() error {
|
||||
return nil
|
||||
}
|
||||
func (this *DisplayQuarterlyReportReq) Validate() error {
|
||||
if this.Filtrate != nil {
|
||||
if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(this.Filtrate); err != nil {
|
||||
return github_com_mwitkow_go_proto_validators.FieldError("Filtrate", err)
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
func (this *DisplayQuarterlyReportResp) Validate() error {
|
||||
for _, item := range this.Item {
|
||||
if item != nil {
|
||||
if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(item); err != nil {
|
||||
return github_com_mwitkow_go_proto_validators.FieldError("Item", err)
|
||||
}
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
func (this *DisplayQuarterlyReportItem) Validate() error {
|
||||
return nil
|
||||
}
|
||||
736
api/reports/reports_triple.pb.go
Normal file
736
api/reports/reports_triple.pb.go
Normal file
@ -0,0 +1,736 @@
|
||||
// Code generated by protoc-gen-go-triple. DO NOT EDIT.
|
||||
// versions:
|
||||
// - protoc-gen-go-triple v1.0.5
|
||||
// - protoc v5.26.0
|
||||
// source: api/reports/reports.proto
|
||||
|
||||
package reports
|
||||
|
||||
import (
|
||||
context "context"
|
||||
protocol "dubbo.apache.org/dubbo-go/v3/protocol"
|
||||
dubbo3 "dubbo.apache.org/dubbo-go/v3/protocol/dubbo3"
|
||||
invocation "dubbo.apache.org/dubbo-go/v3/protocol/invocation"
|
||||
grpc_go "github.com/dubbogo/grpc-go"
|
||||
codes "github.com/dubbogo/grpc-go/codes"
|
||||
metadata "github.com/dubbogo/grpc-go/metadata"
|
||||
status "github.com/dubbogo/grpc-go/status"
|
||||
common "github.com/dubbogo/triple/pkg/common"
|
||||
constant "github.com/dubbogo/triple/pkg/common/constant"
|
||||
triple "github.com/dubbogo/triple/pkg/triple"
|
||||
)
|
||||
|
||||
// This is a compile-time assertion to ensure that this generated file
|
||||
// is compatible with the grpc package it is being compiled against.
|
||||
const _ = grpc_go.SupportPackageIsVersion7
|
||||
|
||||
// ReportsClient is the client API for Reports service.
|
||||
//
|
||||
// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream.
|
||||
type ReportsClient interface {
|
||||
// ==================================年度报告======================================
|
||||
GetAnnualReportList(ctx context.Context, in *GetAnnualReportListReq, opts ...grpc_go.CallOption) (*GetAnnualReportListResp, common.ErrorWithAttachment)
|
||||
GetAnnualReportInfo(ctx context.Context, in *GetAnnualReportInfoReq, opts ...grpc_go.CallOption) (*GetAnnualReportInfoResp, common.ErrorWithAttachment)
|
||||
AddAnnualReport(ctx context.Context, in *AddAnnualReportReq, opts ...grpc_go.CallOption) (*AddAnnualReportResp, common.ErrorWithAttachment)
|
||||
SortAndStatusAnnualReport(ctx context.Context, in *SortAndStatusAnnualReportReq, opts ...grpc_go.CallOption) (*SortAndStatusAnnualReportResp, common.ErrorWithAttachment)
|
||||
EditAnnualReport(ctx context.Context, in *EditAnnualReportReq, opts ...grpc_go.CallOption) (*EditAnnualReportResp, common.ErrorWithAttachment)
|
||||
DeleteAnnualReport(ctx context.Context, in *DeleteAnnualReportReq, opts ...grpc_go.CallOption) (*DeleteAnnualReportResp, common.ErrorWithAttachment)
|
||||
DisplayAnnualReport(ctx context.Context, in *DisplayAnnualReportReq, opts ...grpc_go.CallOption) (*DisplayAnnualReportResp, common.ErrorWithAttachment)
|
||||
// ==================================季度报告======================================
|
||||
GetQuarterlyReportList(ctx context.Context, in *GetQuarterlyReportListReq, opts ...grpc_go.CallOption) (*GetQuarterlyReportListResp, common.ErrorWithAttachment)
|
||||
GetQuarterlyReportInfo(ctx context.Context, in *GetQuarterlyReportInfoReq, opts ...grpc_go.CallOption) (*GetQuarterlyReportInfoResp, common.ErrorWithAttachment)
|
||||
AddQuarterlyReport(ctx context.Context, in *AddQuarterlyReportReq, opts ...grpc_go.CallOption) (*AddQuarterlyReportResp, common.ErrorWithAttachment)
|
||||
SortAndStatusQuarterlyReport(ctx context.Context, in *SortAndStatusQuarterlyReportReq, opts ...grpc_go.CallOption) (*SortAndStatusQuarterlyReportResp, common.ErrorWithAttachment)
|
||||
EditQuarterlyReport(ctx context.Context, in *EditQuarterlyReportReq, opts ...grpc_go.CallOption) (*EditQuarterlyReportResp, common.ErrorWithAttachment)
|
||||
DeleteQuarterlyReport(ctx context.Context, in *DeleteQuarterlyReportReq, opts ...grpc_go.CallOption) (*DeleteQuarterlyReportResp, common.ErrorWithAttachment)
|
||||
DisplayQuarterlyReport(ctx context.Context, in *DisplayQuarterlyReportReq, opts ...grpc_go.CallOption) (*DisplayQuarterlyReportResp, common.ErrorWithAttachment)
|
||||
}
|
||||
|
||||
type reportsClient struct {
|
||||
cc *triple.TripleConn
|
||||
}
|
||||
|
||||
type ReportsClientImpl struct {
|
||||
GetAnnualReportList func(ctx context.Context, in *GetAnnualReportListReq) (*GetAnnualReportListResp, error)
|
||||
GetAnnualReportInfo func(ctx context.Context, in *GetAnnualReportInfoReq) (*GetAnnualReportInfoResp, error)
|
||||
AddAnnualReport func(ctx context.Context, in *AddAnnualReportReq) (*AddAnnualReportResp, error)
|
||||
SortAndStatusAnnualReport func(ctx context.Context, in *SortAndStatusAnnualReportReq) (*SortAndStatusAnnualReportResp, error)
|
||||
EditAnnualReport func(ctx context.Context, in *EditAnnualReportReq) (*EditAnnualReportResp, error)
|
||||
DeleteAnnualReport func(ctx context.Context, in *DeleteAnnualReportReq) (*DeleteAnnualReportResp, error)
|
||||
DisplayAnnualReport func(ctx context.Context, in *DisplayAnnualReportReq) (*DisplayAnnualReportResp, error)
|
||||
GetQuarterlyReportList func(ctx context.Context, in *GetQuarterlyReportListReq) (*GetQuarterlyReportListResp, error)
|
||||
GetQuarterlyReportInfo func(ctx context.Context, in *GetQuarterlyReportInfoReq) (*GetQuarterlyReportInfoResp, error)
|
||||
AddQuarterlyReport func(ctx context.Context, in *AddQuarterlyReportReq) (*AddQuarterlyReportResp, error)
|
||||
SortAndStatusQuarterlyReport func(ctx context.Context, in *SortAndStatusQuarterlyReportReq) (*SortAndStatusQuarterlyReportResp, error)
|
||||
EditQuarterlyReport func(ctx context.Context, in *EditQuarterlyReportReq) (*EditQuarterlyReportResp, error)
|
||||
DeleteQuarterlyReport func(ctx context.Context, in *DeleteQuarterlyReportReq) (*DeleteQuarterlyReportResp, error)
|
||||
DisplayQuarterlyReport func(ctx context.Context, in *DisplayQuarterlyReportReq) (*DisplayQuarterlyReportResp, error)
|
||||
}
|
||||
|
||||
func (c *ReportsClientImpl) GetDubboStub(cc *triple.TripleConn) ReportsClient {
|
||||
return NewReportsClient(cc)
|
||||
}
|
||||
|
||||
func (c *ReportsClientImpl) XXX_InterfaceName() string {
|
||||
return "reports.Reports"
|
||||
}
|
||||
|
||||
func NewReportsClient(cc *triple.TripleConn) ReportsClient {
|
||||
return &reportsClient{cc}
|
||||
}
|
||||
|
||||
func (c *reportsClient) GetAnnualReportList(ctx context.Context, in *GetAnnualReportListReq, opts ...grpc_go.CallOption) (*GetAnnualReportListResp, common.ErrorWithAttachment) {
|
||||
out := new(GetAnnualReportListResp)
|
||||
interfaceKey := ctx.Value(constant.InterfaceKey).(string)
|
||||
return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/GetAnnualReportList", in, out)
|
||||
}
|
||||
|
||||
func (c *reportsClient) GetAnnualReportInfo(ctx context.Context, in *GetAnnualReportInfoReq, opts ...grpc_go.CallOption) (*GetAnnualReportInfoResp, common.ErrorWithAttachment) {
|
||||
out := new(GetAnnualReportInfoResp)
|
||||
interfaceKey := ctx.Value(constant.InterfaceKey).(string)
|
||||
return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/GetAnnualReportInfo", in, out)
|
||||
}
|
||||
|
||||
func (c *reportsClient) AddAnnualReport(ctx context.Context, in *AddAnnualReportReq, opts ...grpc_go.CallOption) (*AddAnnualReportResp, common.ErrorWithAttachment) {
|
||||
out := new(AddAnnualReportResp)
|
||||
interfaceKey := ctx.Value(constant.InterfaceKey).(string)
|
||||
return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/AddAnnualReport", in, out)
|
||||
}
|
||||
|
||||
func (c *reportsClient) SortAndStatusAnnualReport(ctx context.Context, in *SortAndStatusAnnualReportReq, opts ...grpc_go.CallOption) (*SortAndStatusAnnualReportResp, common.ErrorWithAttachment) {
|
||||
out := new(SortAndStatusAnnualReportResp)
|
||||
interfaceKey := ctx.Value(constant.InterfaceKey).(string)
|
||||
return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/SortAndStatusAnnualReport", in, out)
|
||||
}
|
||||
|
||||
func (c *reportsClient) EditAnnualReport(ctx context.Context, in *EditAnnualReportReq, opts ...grpc_go.CallOption) (*EditAnnualReportResp, common.ErrorWithAttachment) {
|
||||
out := new(EditAnnualReportResp)
|
||||
interfaceKey := ctx.Value(constant.InterfaceKey).(string)
|
||||
return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/EditAnnualReport", in, out)
|
||||
}
|
||||
|
||||
func (c *reportsClient) DeleteAnnualReport(ctx context.Context, in *DeleteAnnualReportReq, opts ...grpc_go.CallOption) (*DeleteAnnualReportResp, common.ErrorWithAttachment) {
|
||||
out := new(DeleteAnnualReportResp)
|
||||
interfaceKey := ctx.Value(constant.InterfaceKey).(string)
|
||||
return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/DeleteAnnualReport", in, out)
|
||||
}
|
||||
|
||||
func (c *reportsClient) DisplayAnnualReport(ctx context.Context, in *DisplayAnnualReportReq, opts ...grpc_go.CallOption) (*DisplayAnnualReportResp, common.ErrorWithAttachment) {
|
||||
out := new(DisplayAnnualReportResp)
|
||||
interfaceKey := ctx.Value(constant.InterfaceKey).(string)
|
||||
return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/DisplayAnnualReport", in, out)
|
||||
}
|
||||
|
||||
func (c *reportsClient) GetQuarterlyReportList(ctx context.Context, in *GetQuarterlyReportListReq, opts ...grpc_go.CallOption) (*GetQuarterlyReportListResp, common.ErrorWithAttachment) {
|
||||
out := new(GetQuarterlyReportListResp)
|
||||
interfaceKey := ctx.Value(constant.InterfaceKey).(string)
|
||||
return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/GetQuarterlyReportList", in, out)
|
||||
}
|
||||
|
||||
func (c *reportsClient) GetQuarterlyReportInfo(ctx context.Context, in *GetQuarterlyReportInfoReq, opts ...grpc_go.CallOption) (*GetQuarterlyReportInfoResp, common.ErrorWithAttachment) {
|
||||
out := new(GetQuarterlyReportInfoResp)
|
||||
interfaceKey := ctx.Value(constant.InterfaceKey).(string)
|
||||
return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/GetQuarterlyReportInfo", in, out)
|
||||
}
|
||||
|
||||
func (c *reportsClient) AddQuarterlyReport(ctx context.Context, in *AddQuarterlyReportReq, opts ...grpc_go.CallOption) (*AddQuarterlyReportResp, common.ErrorWithAttachment) {
|
||||
out := new(AddQuarterlyReportResp)
|
||||
interfaceKey := ctx.Value(constant.InterfaceKey).(string)
|
||||
return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/AddQuarterlyReport", in, out)
|
||||
}
|
||||
|
||||
func (c *reportsClient) SortAndStatusQuarterlyReport(ctx context.Context, in *SortAndStatusQuarterlyReportReq, opts ...grpc_go.CallOption) (*SortAndStatusQuarterlyReportResp, common.ErrorWithAttachment) {
|
||||
out := new(SortAndStatusQuarterlyReportResp)
|
||||
interfaceKey := ctx.Value(constant.InterfaceKey).(string)
|
||||
return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/SortAndStatusQuarterlyReport", in, out)
|
||||
}
|
||||
|
||||
func (c *reportsClient) EditQuarterlyReport(ctx context.Context, in *EditQuarterlyReportReq, opts ...grpc_go.CallOption) (*EditQuarterlyReportResp, common.ErrorWithAttachment) {
|
||||
out := new(EditQuarterlyReportResp)
|
||||
interfaceKey := ctx.Value(constant.InterfaceKey).(string)
|
||||
return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/EditQuarterlyReport", in, out)
|
||||
}
|
||||
|
||||
func (c *reportsClient) DeleteQuarterlyReport(ctx context.Context, in *DeleteQuarterlyReportReq, opts ...grpc_go.CallOption) (*DeleteQuarterlyReportResp, common.ErrorWithAttachment) {
|
||||
out := new(DeleteQuarterlyReportResp)
|
||||
interfaceKey := ctx.Value(constant.InterfaceKey).(string)
|
||||
return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/DeleteQuarterlyReport", in, out)
|
||||
}
|
||||
|
||||
func (c *reportsClient) DisplayQuarterlyReport(ctx context.Context, in *DisplayQuarterlyReportReq, opts ...grpc_go.CallOption) (*DisplayQuarterlyReportResp, common.ErrorWithAttachment) {
|
||||
out := new(DisplayQuarterlyReportResp)
|
||||
interfaceKey := ctx.Value(constant.InterfaceKey).(string)
|
||||
return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/DisplayQuarterlyReport", in, out)
|
||||
}
|
||||
|
||||
// ReportsServer is the server API for Reports service.
|
||||
// All implementations must embed UnimplementedReportsServer
|
||||
// for forward compatibility
|
||||
type ReportsServer interface {
|
||||
// ==================================年度报告======================================
|
||||
GetAnnualReportList(context.Context, *GetAnnualReportListReq) (*GetAnnualReportListResp, error)
|
||||
GetAnnualReportInfo(context.Context, *GetAnnualReportInfoReq) (*GetAnnualReportInfoResp, error)
|
||||
AddAnnualReport(context.Context, *AddAnnualReportReq) (*AddAnnualReportResp, error)
|
||||
SortAndStatusAnnualReport(context.Context, *SortAndStatusAnnualReportReq) (*SortAndStatusAnnualReportResp, error)
|
||||
EditAnnualReport(context.Context, *EditAnnualReportReq) (*EditAnnualReportResp, error)
|
||||
DeleteAnnualReport(context.Context, *DeleteAnnualReportReq) (*DeleteAnnualReportResp, error)
|
||||
DisplayAnnualReport(context.Context, *DisplayAnnualReportReq) (*DisplayAnnualReportResp, error)
|
||||
// ==================================季度报告======================================
|
||||
GetQuarterlyReportList(context.Context, *GetQuarterlyReportListReq) (*GetQuarterlyReportListResp, error)
|
||||
GetQuarterlyReportInfo(context.Context, *GetQuarterlyReportInfoReq) (*GetQuarterlyReportInfoResp, error)
|
||||
AddQuarterlyReport(context.Context, *AddQuarterlyReportReq) (*AddQuarterlyReportResp, error)
|
||||
SortAndStatusQuarterlyReport(context.Context, *SortAndStatusQuarterlyReportReq) (*SortAndStatusQuarterlyReportResp, error)
|
||||
EditQuarterlyReport(context.Context, *EditQuarterlyReportReq) (*EditQuarterlyReportResp, error)
|
||||
DeleteQuarterlyReport(context.Context, *DeleteQuarterlyReportReq) (*DeleteQuarterlyReportResp, error)
|
||||
DisplayQuarterlyReport(context.Context, *DisplayQuarterlyReportReq) (*DisplayQuarterlyReportResp, error)
|
||||
mustEmbedUnimplementedReportsServer()
|
||||
}
|
||||
|
||||
// UnimplementedReportsServer must be embedded to have forward compatible implementations.
|
||||
type UnimplementedReportsServer struct {
|
||||
proxyImpl protocol.Invoker
|
||||
}
|
||||
|
||||
func (UnimplementedReportsServer) GetAnnualReportList(context.Context, *GetAnnualReportListReq) (*GetAnnualReportListResp, error) {
|
||||
return nil, status.Errorf(codes.Unimplemented, "method GetAnnualReportList not implemented")
|
||||
}
|
||||
func (UnimplementedReportsServer) GetAnnualReportInfo(context.Context, *GetAnnualReportInfoReq) (*GetAnnualReportInfoResp, error) {
|
||||
return nil, status.Errorf(codes.Unimplemented, "method GetAnnualReportInfo not implemented")
|
||||
}
|
||||
func (UnimplementedReportsServer) AddAnnualReport(context.Context, *AddAnnualReportReq) (*AddAnnualReportResp, error) {
|
||||
return nil, status.Errorf(codes.Unimplemented, "method AddAnnualReport not implemented")
|
||||
}
|
||||
func (UnimplementedReportsServer) SortAndStatusAnnualReport(context.Context, *SortAndStatusAnnualReportReq) (*SortAndStatusAnnualReportResp, error) {
|
||||
return nil, status.Errorf(codes.Unimplemented, "method SortAndStatusAnnualReport not implemented")
|
||||
}
|
||||
func (UnimplementedReportsServer) EditAnnualReport(context.Context, *EditAnnualReportReq) (*EditAnnualReportResp, error) {
|
||||
return nil, status.Errorf(codes.Unimplemented, "method EditAnnualReport not implemented")
|
||||
}
|
||||
func (UnimplementedReportsServer) DeleteAnnualReport(context.Context, *DeleteAnnualReportReq) (*DeleteAnnualReportResp, error) {
|
||||
return nil, status.Errorf(codes.Unimplemented, "method DeleteAnnualReport not implemented")
|
||||
}
|
||||
func (UnimplementedReportsServer) DisplayAnnualReport(context.Context, *DisplayAnnualReportReq) (*DisplayAnnualReportResp, error) {
|
||||
return nil, status.Errorf(codes.Unimplemented, "method DisplayAnnualReport not implemented")
|
||||
}
|
||||
func (UnimplementedReportsServer) GetQuarterlyReportList(context.Context, *GetQuarterlyReportListReq) (*GetQuarterlyReportListResp, error) {
|
||||
return nil, status.Errorf(codes.Unimplemented, "method GetQuarterlyReportList not implemented")
|
||||
}
|
||||
func (UnimplementedReportsServer) GetQuarterlyReportInfo(context.Context, *GetQuarterlyReportInfoReq) (*GetQuarterlyReportInfoResp, error) {
|
||||
return nil, status.Errorf(codes.Unimplemented, "method GetQuarterlyReportInfo not implemented")
|
||||
}
|
||||
func (UnimplementedReportsServer) AddQuarterlyReport(context.Context, *AddQuarterlyReportReq) (*AddQuarterlyReportResp, error) {
|
||||
return nil, status.Errorf(codes.Unimplemented, "method AddQuarterlyReport not implemented")
|
||||
}
|
||||
func (UnimplementedReportsServer) SortAndStatusQuarterlyReport(context.Context, *SortAndStatusQuarterlyReportReq) (*SortAndStatusQuarterlyReportResp, error) {
|
||||
return nil, status.Errorf(codes.Unimplemented, "method SortAndStatusQuarterlyReport not implemented")
|
||||
}
|
||||
func (UnimplementedReportsServer) EditQuarterlyReport(context.Context, *EditQuarterlyReportReq) (*EditQuarterlyReportResp, error) {
|
||||
return nil, status.Errorf(codes.Unimplemented, "method EditQuarterlyReport not implemented")
|
||||
}
|
||||
func (UnimplementedReportsServer) DeleteQuarterlyReport(context.Context, *DeleteQuarterlyReportReq) (*DeleteQuarterlyReportResp, error) {
|
||||
return nil, status.Errorf(codes.Unimplemented, "method DeleteQuarterlyReport not implemented")
|
||||
}
|
||||
func (UnimplementedReportsServer) DisplayQuarterlyReport(context.Context, *DisplayQuarterlyReportReq) (*DisplayQuarterlyReportResp, error) {
|
||||
return nil, status.Errorf(codes.Unimplemented, "method DisplayQuarterlyReport not implemented")
|
||||
}
|
||||
func (s *UnimplementedReportsServer) XXX_SetProxyImpl(impl protocol.Invoker) {
|
||||
s.proxyImpl = impl
|
||||
}
|
||||
|
||||
func (s *UnimplementedReportsServer) XXX_GetProxyImpl() protocol.Invoker {
|
||||
return s.proxyImpl
|
||||
}
|
||||
|
||||
func (s *UnimplementedReportsServer) XXX_ServiceDesc() *grpc_go.ServiceDesc {
|
||||
return &Reports_ServiceDesc
|
||||
}
|
||||
func (s *UnimplementedReportsServer) XXX_InterfaceName() string {
|
||||
return "reports.Reports"
|
||||
}
|
||||
|
||||
func (UnimplementedReportsServer) mustEmbedUnimplementedReportsServer() {}
|
||||
|
||||
// UnsafeReportsServer may be embedded to opt out of forward compatibility for this service.
|
||||
// Use of this interface is not recommended, as added methods to ReportsServer will
|
||||
// result in compilation errors.
|
||||
type UnsafeReportsServer interface {
|
||||
mustEmbedUnimplementedReportsServer()
|
||||
}
|
||||
|
||||
func RegisterReportsServer(s grpc_go.ServiceRegistrar, srv ReportsServer) {
|
||||
s.RegisterService(&Reports_ServiceDesc, srv)
|
||||
}
|
||||
|
||||
func _Reports_GetAnnualReportList_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) {
|
||||
in := new(GetAnnualReportListReq)
|
||||
if err := dec(in); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
base := srv.(dubbo3.Dubbo3GrpcService)
|
||||
args := []interface{}{}
|
||||
args = append(args, in)
|
||||
md, _ := metadata.FromIncomingContext(ctx)
|
||||
invAttachment := make(map[string]interface{}, len(md))
|
||||
for k, v := range md {
|
||||
invAttachment[k] = v
|
||||
}
|
||||
invo := invocation.NewRPCInvocation("GetAnnualReportList", args, invAttachment)
|
||||
if interceptor == nil {
|
||||
result := base.XXX_GetProxyImpl().Invoke(ctx, invo)
|
||||
return result, result.Error()
|
||||
}
|
||||
info := &grpc_go.UnaryServerInfo{
|
||||
Server: srv,
|
||||
FullMethod: ctx.Value("XXX_TRIPLE_GO_INTERFACE_NAME").(string),
|
||||
}
|
||||
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
|
||||
result := base.XXX_GetProxyImpl().Invoke(ctx, invo)
|
||||
return result, result.Error()
|
||||
}
|
||||
return interceptor(ctx, in, info, handler)
|
||||
}
|
||||
|
||||
func _Reports_GetAnnualReportInfo_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) {
|
||||
in := new(GetAnnualReportInfoReq)
|
||||
if err := dec(in); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
base := srv.(dubbo3.Dubbo3GrpcService)
|
||||
args := []interface{}{}
|
||||
args = append(args, in)
|
||||
md, _ := metadata.FromIncomingContext(ctx)
|
||||
invAttachment := make(map[string]interface{}, len(md))
|
||||
for k, v := range md {
|
||||
invAttachment[k] = v
|
||||
}
|
||||
invo := invocation.NewRPCInvocation("GetAnnualReportInfo", args, invAttachment)
|
||||
if interceptor == nil {
|
||||
result := base.XXX_GetProxyImpl().Invoke(ctx, invo)
|
||||
return result, result.Error()
|
||||
}
|
||||
info := &grpc_go.UnaryServerInfo{
|
||||
Server: srv,
|
||||
FullMethod: ctx.Value("XXX_TRIPLE_GO_INTERFACE_NAME").(string),
|
||||
}
|
||||
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
|
||||
result := base.XXX_GetProxyImpl().Invoke(ctx, invo)
|
||||
return result, result.Error()
|
||||
}
|
||||
return interceptor(ctx, in, info, handler)
|
||||
}
|
||||
|
||||
func _Reports_AddAnnualReport_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) {
|
||||
in := new(AddAnnualReportReq)
|
||||
if err := dec(in); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
base := srv.(dubbo3.Dubbo3GrpcService)
|
||||
args := []interface{}{}
|
||||
args = append(args, in)
|
||||
md, _ := metadata.FromIncomingContext(ctx)
|
||||
invAttachment := make(map[string]interface{}, len(md))
|
||||
for k, v := range md {
|
||||
invAttachment[k] = v
|
||||
}
|
||||
invo := invocation.NewRPCInvocation("AddAnnualReport", args, invAttachment)
|
||||
if interceptor == nil {
|
||||
result := base.XXX_GetProxyImpl().Invoke(ctx, invo)
|
||||
return result, result.Error()
|
||||
}
|
||||
info := &grpc_go.UnaryServerInfo{
|
||||
Server: srv,
|
||||
FullMethod: ctx.Value("XXX_TRIPLE_GO_INTERFACE_NAME").(string),
|
||||
}
|
||||
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
|
||||
result := base.XXX_GetProxyImpl().Invoke(ctx, invo)
|
||||
return result, result.Error()
|
||||
}
|
||||
return interceptor(ctx, in, info, handler)
|
||||
}
|
||||
|
||||
func _Reports_SortAndStatusAnnualReport_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) {
|
||||
in := new(SortAndStatusAnnualReportReq)
|
||||
if err := dec(in); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
base := srv.(dubbo3.Dubbo3GrpcService)
|
||||
args := []interface{}{}
|
||||
args = append(args, in)
|
||||
md, _ := metadata.FromIncomingContext(ctx)
|
||||
invAttachment := make(map[string]interface{}, len(md))
|
||||
for k, v := range md {
|
||||
invAttachment[k] = v
|
||||
}
|
||||
invo := invocation.NewRPCInvocation("SortAndStatusAnnualReport", args, invAttachment)
|
||||
if interceptor == nil {
|
||||
result := base.XXX_GetProxyImpl().Invoke(ctx, invo)
|
||||
return result, result.Error()
|
||||
}
|
||||
info := &grpc_go.UnaryServerInfo{
|
||||
Server: srv,
|
||||
FullMethod: ctx.Value("XXX_TRIPLE_GO_INTERFACE_NAME").(string),
|
||||
}
|
||||
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
|
||||
result := base.XXX_GetProxyImpl().Invoke(ctx, invo)
|
||||
return result, result.Error()
|
||||
}
|
||||
return interceptor(ctx, in, info, handler)
|
||||
}
|
||||
|
||||
func _Reports_EditAnnualReport_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) {
|
||||
in := new(EditAnnualReportReq)
|
||||
if err := dec(in); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
base := srv.(dubbo3.Dubbo3GrpcService)
|
||||
args := []interface{}{}
|
||||
args = append(args, in)
|
||||
md, _ := metadata.FromIncomingContext(ctx)
|
||||
invAttachment := make(map[string]interface{}, len(md))
|
||||
for k, v := range md {
|
||||
invAttachment[k] = v
|
||||
}
|
||||
invo := invocation.NewRPCInvocation("EditAnnualReport", args, invAttachment)
|
||||
if interceptor == nil {
|
||||
result := base.XXX_GetProxyImpl().Invoke(ctx, invo)
|
||||
return result, result.Error()
|
||||
}
|
||||
info := &grpc_go.UnaryServerInfo{
|
||||
Server: srv,
|
||||
FullMethod: ctx.Value("XXX_TRIPLE_GO_INTERFACE_NAME").(string),
|
||||
}
|
||||
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
|
||||
result := base.XXX_GetProxyImpl().Invoke(ctx, invo)
|
||||
return result, result.Error()
|
||||
}
|
||||
return interceptor(ctx, in, info, handler)
|
||||
}
|
||||
|
||||
func _Reports_DeleteAnnualReport_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) {
|
||||
in := new(DeleteAnnualReportReq)
|
||||
if err := dec(in); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
base := srv.(dubbo3.Dubbo3GrpcService)
|
||||
args := []interface{}{}
|
||||
args = append(args, in)
|
||||
md, _ := metadata.FromIncomingContext(ctx)
|
||||
invAttachment := make(map[string]interface{}, len(md))
|
||||
for k, v := range md {
|
||||
invAttachment[k] = v
|
||||
}
|
||||
invo := invocation.NewRPCInvocation("DeleteAnnualReport", args, invAttachment)
|
||||
if interceptor == nil {
|
||||
result := base.XXX_GetProxyImpl().Invoke(ctx, invo)
|
||||
return result, result.Error()
|
||||
}
|
||||
info := &grpc_go.UnaryServerInfo{
|
||||
Server: srv,
|
||||
FullMethod: ctx.Value("XXX_TRIPLE_GO_INTERFACE_NAME").(string),
|
||||
}
|
||||
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
|
||||
result := base.XXX_GetProxyImpl().Invoke(ctx, invo)
|
||||
return result, result.Error()
|
||||
}
|
||||
return interceptor(ctx, in, info, handler)
|
||||
}
|
||||
|
||||
func _Reports_DisplayAnnualReport_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) {
|
||||
in := new(DisplayAnnualReportReq)
|
||||
if err := dec(in); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
base := srv.(dubbo3.Dubbo3GrpcService)
|
||||
args := []interface{}{}
|
||||
args = append(args, in)
|
||||
md, _ := metadata.FromIncomingContext(ctx)
|
||||
invAttachment := make(map[string]interface{}, len(md))
|
||||
for k, v := range md {
|
||||
invAttachment[k] = v
|
||||
}
|
||||
invo := invocation.NewRPCInvocation("DisplayAnnualReport", args, invAttachment)
|
||||
if interceptor == nil {
|
||||
result := base.XXX_GetProxyImpl().Invoke(ctx, invo)
|
||||
return result, result.Error()
|
||||
}
|
||||
info := &grpc_go.UnaryServerInfo{
|
||||
Server: srv,
|
||||
FullMethod: ctx.Value("XXX_TRIPLE_GO_INTERFACE_NAME").(string),
|
||||
}
|
||||
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
|
||||
result := base.XXX_GetProxyImpl().Invoke(ctx, invo)
|
||||
return result, result.Error()
|
||||
}
|
||||
return interceptor(ctx, in, info, handler)
|
||||
}
|
||||
|
||||
func _Reports_GetQuarterlyReportList_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) {
|
||||
in := new(GetQuarterlyReportListReq)
|
||||
if err := dec(in); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
base := srv.(dubbo3.Dubbo3GrpcService)
|
||||
args := []interface{}{}
|
||||
args = append(args, in)
|
||||
md, _ := metadata.FromIncomingContext(ctx)
|
||||
invAttachment := make(map[string]interface{}, len(md))
|
||||
for k, v := range md {
|
||||
invAttachment[k] = v
|
||||
}
|
||||
invo := invocation.NewRPCInvocation("GetQuarterlyReportList", args, invAttachment)
|
||||
if interceptor == nil {
|
||||
result := base.XXX_GetProxyImpl().Invoke(ctx, invo)
|
||||
return result, result.Error()
|
||||
}
|
||||
info := &grpc_go.UnaryServerInfo{
|
||||
Server: srv,
|
||||
FullMethod: ctx.Value("XXX_TRIPLE_GO_INTERFACE_NAME").(string),
|
||||
}
|
||||
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
|
||||
result := base.XXX_GetProxyImpl().Invoke(ctx, invo)
|
||||
return result, result.Error()
|
||||
}
|
||||
return interceptor(ctx, in, info, handler)
|
||||
}
|
||||
|
||||
func _Reports_GetQuarterlyReportInfo_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) {
|
||||
in := new(GetQuarterlyReportInfoReq)
|
||||
if err := dec(in); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
base := srv.(dubbo3.Dubbo3GrpcService)
|
||||
args := []interface{}{}
|
||||
args = append(args, in)
|
||||
md, _ := metadata.FromIncomingContext(ctx)
|
||||
invAttachment := make(map[string]interface{}, len(md))
|
||||
for k, v := range md {
|
||||
invAttachment[k] = v
|
||||
}
|
||||
invo := invocation.NewRPCInvocation("GetQuarterlyReportInfo", args, invAttachment)
|
||||
if interceptor == nil {
|
||||
result := base.XXX_GetProxyImpl().Invoke(ctx, invo)
|
||||
return result, result.Error()
|
||||
}
|
||||
info := &grpc_go.UnaryServerInfo{
|
||||
Server: srv,
|
||||
FullMethod: ctx.Value("XXX_TRIPLE_GO_INTERFACE_NAME").(string),
|
||||
}
|
||||
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
|
||||
result := base.XXX_GetProxyImpl().Invoke(ctx, invo)
|
||||
return result, result.Error()
|
||||
}
|
||||
return interceptor(ctx, in, info, handler)
|
||||
}
|
||||
|
||||
func _Reports_AddQuarterlyReport_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) {
|
||||
in := new(AddQuarterlyReportReq)
|
||||
if err := dec(in); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
base := srv.(dubbo3.Dubbo3GrpcService)
|
||||
args := []interface{}{}
|
||||
args = append(args, in)
|
||||
md, _ := metadata.FromIncomingContext(ctx)
|
||||
invAttachment := make(map[string]interface{}, len(md))
|
||||
for k, v := range md {
|
||||
invAttachment[k] = v
|
||||
}
|
||||
invo := invocation.NewRPCInvocation("AddQuarterlyReport", args, invAttachment)
|
||||
if interceptor == nil {
|
||||
result := base.XXX_GetProxyImpl().Invoke(ctx, invo)
|
||||
return result, result.Error()
|
||||
}
|
||||
info := &grpc_go.UnaryServerInfo{
|
||||
Server: srv,
|
||||
FullMethod: ctx.Value("XXX_TRIPLE_GO_INTERFACE_NAME").(string),
|
||||
}
|
||||
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
|
||||
result := base.XXX_GetProxyImpl().Invoke(ctx, invo)
|
||||
return result, result.Error()
|
||||
}
|
||||
return interceptor(ctx, in, info, handler)
|
||||
}
|
||||
|
||||
func _Reports_SortAndStatusQuarterlyReport_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) {
|
||||
in := new(SortAndStatusQuarterlyReportReq)
|
||||
if err := dec(in); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
base := srv.(dubbo3.Dubbo3GrpcService)
|
||||
args := []interface{}{}
|
||||
args = append(args, in)
|
||||
md, _ := metadata.FromIncomingContext(ctx)
|
||||
invAttachment := make(map[string]interface{}, len(md))
|
||||
for k, v := range md {
|
||||
invAttachment[k] = v
|
||||
}
|
||||
invo := invocation.NewRPCInvocation("SortAndStatusQuarterlyReport", args, invAttachment)
|
||||
if interceptor == nil {
|
||||
result := base.XXX_GetProxyImpl().Invoke(ctx, invo)
|
||||
return result, result.Error()
|
||||
}
|
||||
info := &grpc_go.UnaryServerInfo{
|
||||
Server: srv,
|
||||
FullMethod: ctx.Value("XXX_TRIPLE_GO_INTERFACE_NAME").(string),
|
||||
}
|
||||
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
|
||||
result := base.XXX_GetProxyImpl().Invoke(ctx, invo)
|
||||
return result, result.Error()
|
||||
}
|
||||
return interceptor(ctx, in, info, handler)
|
||||
}
|
||||
|
||||
func _Reports_EditQuarterlyReport_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) {
|
||||
in := new(EditQuarterlyReportReq)
|
||||
if err := dec(in); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
base := srv.(dubbo3.Dubbo3GrpcService)
|
||||
args := []interface{}{}
|
||||
args = append(args, in)
|
||||
md, _ := metadata.FromIncomingContext(ctx)
|
||||
invAttachment := make(map[string]interface{}, len(md))
|
||||
for k, v := range md {
|
||||
invAttachment[k] = v
|
||||
}
|
||||
invo := invocation.NewRPCInvocation("EditQuarterlyReport", args, invAttachment)
|
||||
if interceptor == nil {
|
||||
result := base.XXX_GetProxyImpl().Invoke(ctx, invo)
|
||||
return result, result.Error()
|
||||
}
|
||||
info := &grpc_go.UnaryServerInfo{
|
||||
Server: srv,
|
||||
FullMethod: ctx.Value("XXX_TRIPLE_GO_INTERFACE_NAME").(string),
|
||||
}
|
||||
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
|
||||
result := base.XXX_GetProxyImpl().Invoke(ctx, invo)
|
||||
return result, result.Error()
|
||||
}
|
||||
return interceptor(ctx, in, info, handler)
|
||||
}
|
||||
|
||||
func _Reports_DeleteQuarterlyReport_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) {
|
||||
in := new(DeleteQuarterlyReportReq)
|
||||
if err := dec(in); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
base := srv.(dubbo3.Dubbo3GrpcService)
|
||||
args := []interface{}{}
|
||||
args = append(args, in)
|
||||
md, _ := metadata.FromIncomingContext(ctx)
|
||||
invAttachment := make(map[string]interface{}, len(md))
|
||||
for k, v := range md {
|
||||
invAttachment[k] = v
|
||||
}
|
||||
invo := invocation.NewRPCInvocation("DeleteQuarterlyReport", args, invAttachment)
|
||||
if interceptor == nil {
|
||||
result := base.XXX_GetProxyImpl().Invoke(ctx, invo)
|
||||
return result, result.Error()
|
||||
}
|
||||
info := &grpc_go.UnaryServerInfo{
|
||||
Server: srv,
|
||||
FullMethod: ctx.Value("XXX_TRIPLE_GO_INTERFACE_NAME").(string),
|
||||
}
|
||||
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
|
||||
result := base.XXX_GetProxyImpl().Invoke(ctx, invo)
|
||||
return result, result.Error()
|
||||
}
|
||||
return interceptor(ctx, in, info, handler)
|
||||
}
|
||||
|
||||
func _Reports_DisplayQuarterlyReport_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) {
|
||||
in := new(DisplayQuarterlyReportReq)
|
||||
if err := dec(in); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
base := srv.(dubbo3.Dubbo3GrpcService)
|
||||
args := []interface{}{}
|
||||
args = append(args, in)
|
||||
md, _ := metadata.FromIncomingContext(ctx)
|
||||
invAttachment := make(map[string]interface{}, len(md))
|
||||
for k, v := range md {
|
||||
invAttachment[k] = v
|
||||
}
|
||||
invo := invocation.NewRPCInvocation("DisplayQuarterlyReport", args, invAttachment)
|
||||
if interceptor == nil {
|
||||
result := base.XXX_GetProxyImpl().Invoke(ctx, invo)
|
||||
return result, result.Error()
|
||||
}
|
||||
info := &grpc_go.UnaryServerInfo{
|
||||
Server: srv,
|
||||
FullMethod: ctx.Value("XXX_TRIPLE_GO_INTERFACE_NAME").(string),
|
||||
}
|
||||
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
|
||||
result := base.XXX_GetProxyImpl().Invoke(ctx, invo)
|
||||
return result, result.Error()
|
||||
}
|
||||
return interceptor(ctx, in, info, handler)
|
||||
}
|
||||
|
||||
// Reports_ServiceDesc is the grpc_go.ServiceDesc for Reports service.
|
||||
// It's only intended for direct use with grpc_go.RegisterService,
|
||||
// and not to be introspected or modified (even as a copy)
|
||||
var Reports_ServiceDesc = grpc_go.ServiceDesc{
|
||||
ServiceName: "reports.Reports",
|
||||
HandlerType: (*ReportsServer)(nil),
|
||||
Methods: []grpc_go.MethodDesc{
|
||||
{
|
||||
MethodName: "GetAnnualReportList",
|
||||
Handler: _Reports_GetAnnualReportList_Handler,
|
||||
},
|
||||
{
|
||||
MethodName: "GetAnnualReportInfo",
|
||||
Handler: _Reports_GetAnnualReportInfo_Handler,
|
||||
},
|
||||
{
|
||||
MethodName: "AddAnnualReport",
|
||||
Handler: _Reports_AddAnnualReport_Handler,
|
||||
},
|
||||
{
|
||||
MethodName: "SortAndStatusAnnualReport",
|
||||
Handler: _Reports_SortAndStatusAnnualReport_Handler,
|
||||
},
|
||||
{
|
||||
MethodName: "EditAnnualReport",
|
||||
Handler: _Reports_EditAnnualReport_Handler,
|
||||
},
|
||||
{
|
||||
MethodName: "DeleteAnnualReport",
|
||||
Handler: _Reports_DeleteAnnualReport_Handler,
|
||||
},
|
||||
{
|
||||
MethodName: "DisplayAnnualReport",
|
||||
Handler: _Reports_DisplayAnnualReport_Handler,
|
||||
},
|
||||
{
|
||||
MethodName: "GetQuarterlyReportList",
|
||||
Handler: _Reports_GetQuarterlyReportList_Handler,
|
||||
},
|
||||
{
|
||||
MethodName: "GetQuarterlyReportInfo",
|
||||
Handler: _Reports_GetQuarterlyReportInfo_Handler,
|
||||
},
|
||||
{
|
||||
MethodName: "AddQuarterlyReport",
|
||||
Handler: _Reports_AddQuarterlyReport_Handler,
|
||||
},
|
||||
{
|
||||
MethodName: "SortAndStatusQuarterlyReport",
|
||||
Handler: _Reports_SortAndStatusQuarterlyReport_Handler,
|
||||
},
|
||||
{
|
||||
MethodName: "EditQuarterlyReport",
|
||||
Handler: _Reports_EditQuarterlyReport_Handler,
|
||||
},
|
||||
{
|
||||
MethodName: "DeleteQuarterlyReport",
|
||||
Handler: _Reports_DeleteQuarterlyReport_Handler,
|
||||
},
|
||||
{
|
||||
MethodName: "DisplayQuarterlyReport",
|
||||
Handler: _Reports_DisplayQuarterlyReport_Handler,
|
||||
},
|
||||
},
|
||||
Streams: []grpc_go.StreamDesc{},
|
||||
Metadata: "api/reports/reports.proto",
|
||||
}
|
||||
2245
api/supplier/supplier.pb.go
Normal file
2245
api/supplier/supplier.pb.go
Normal file
File diff suppressed because it is too large
Load Diff
212
api/supplier/supplier.proto
Normal file
212
api/supplier/supplier.proto
Normal file
@ -0,0 +1,212 @@
|
||||
syntax = "proto3";
|
||||
package supplier;
|
||||
|
||||
option go_package = "./;supplier";
|
||||
|
||||
// FiEE供应商微服务
|
||||
service Supplier {
|
||||
//供应商curd
|
||||
rpc GetSupplier(GetSupplierRequest) returns (UpdateSupplierRequest) {}
|
||||
rpc CreateSupplier(CreateSupplierRequest) returns (CreateSupplierResponse) {}
|
||||
rpc UpdateSupplier(UpdateSupplierRequest) returns (CreateSupplierResponse) {}
|
||||
rpc GetSupplierList(GetSupplierListRequest) returns (GetSupplierListResponse) {}
|
||||
//组织字典
|
||||
rpc CreateOrganizeDictionary(CreateOrganizeDictionaryRequest) returns (CreateOrganizeDictionaryResponse) {}
|
||||
rpc GetOrganizeDictionaryList(GetOrganizeDictionaryListRequest) returns (GetOrganizeDictionaryListResponse) {}
|
||||
rpc GetOrganizeDictionaryInfo(CreateOrganizeDictionaryRequest) returns (OrganizeDictionary) {}
|
||||
//国家组织
|
||||
rpc GetCountryRegionList(GetCountryRegionListRequest) returns (GetCountryRegionListResponse) {}
|
||||
rpc GetCountryRegionInfo(GetCountryRegionInfoRequest) returns (CountryRegion) {}
|
||||
//导入
|
||||
rpc CreateImportRecord(CreateImportRecordRequest) returns (CreateImportRecordResponse) {}
|
||||
rpc GetImportRecordInfo(GetImportRecordRequest) returns (GetImportRecordResponse) {}
|
||||
}
|
||||
message GetImportRecordRequest{
|
||||
string uuid = 1;
|
||||
}
|
||||
message GetImportRecordResponse{
|
||||
uint64 successNum = 1;
|
||||
uint64 failNum = 2;
|
||||
string deriveUrl = 3;
|
||||
}
|
||||
message CreateImportRecordRequest{
|
||||
repeated string supplierCodes = 1;
|
||||
uint64 status = 2;
|
||||
uint64 userId = 3;
|
||||
string toLeadUrl = 4;
|
||||
string deriveUrl = 5;
|
||||
string uuid = 6;
|
||||
uint64 successNum = 7;
|
||||
uint64 failNum = 8;
|
||||
}
|
||||
message CreateImportRecordResponse{
|
||||
uint64 id = 1;
|
||||
}
|
||||
message GetCountryRegionListResponse{
|
||||
repeated CountryRegion data = 1;
|
||||
uint64 page = 2;
|
||||
uint64 pageSize = 3;
|
||||
uint64 total = 4;
|
||||
}
|
||||
message CountryRegion{
|
||||
uint64 id = 1;
|
||||
string nameEN = 2;
|
||||
string nameCN = 3;
|
||||
string code = 4;
|
||||
}
|
||||
message GetCountryRegionInfoRequest{
|
||||
string zhAndCode = 1;
|
||||
}
|
||||
message GetCountryRegionListRequest{
|
||||
uint64 page = 1;
|
||||
uint64 pageSize = 2;
|
||||
string nameEN = 3;
|
||||
string nameCN = 4;
|
||||
string code = 5;
|
||||
}
|
||||
message OrganizeDictionary{
|
||||
uint64 id = 1;
|
||||
string name = 2;
|
||||
}
|
||||
message GetOrganizeDictionaryListResponse{
|
||||
repeated OrganizeDictionary data = 1;
|
||||
uint64 page = 2;
|
||||
uint64 pageSize = 3;
|
||||
uint64 total = 4;
|
||||
}
|
||||
message CreateOrganizeDictionaryRequest{
|
||||
string name = 1;
|
||||
}
|
||||
message CreateOrganizeDictionaryResponse{
|
||||
uint64 id = 1;
|
||||
}
|
||||
message GetOrganizeDictionaryListRequest{
|
||||
uint64 page = 1;
|
||||
uint64 pageSize = 2;
|
||||
string name = 3;
|
||||
}
|
||||
message GetSupplierListRequest{
|
||||
uint64 page = 1;
|
||||
uint64 pageSize = 2;
|
||||
uint64 owningEntityId = 3;
|
||||
string supplierUniqueCode = 4;
|
||||
string legalName =5;
|
||||
string localName = 6;
|
||||
string abbreviationName =7;
|
||||
uint64 countryOrRegionId = 8;
|
||||
string companyRegistrationNumber =9;
|
||||
string supplierType =10;
|
||||
string approvalStatus = 11;
|
||||
string approvalDateStart = 12;
|
||||
string approvalDateEnd = 13;
|
||||
string lastReviewDateStart = 14;
|
||||
string lastReviewDateEnd = 15;
|
||||
string legalEntityType = 16;
|
||||
string sanctionsCountryScreeningResult = 17;
|
||||
string keyFinancial = 18;
|
||||
string companyAddress = 19;
|
||||
string primaryContact = 20;
|
||||
string dataOwnerDepartment = 21;
|
||||
string basicCompanyInformation = 22;
|
||||
uint64 status = 23;
|
||||
string updateStart = 24;
|
||||
string updateEnd = 25;
|
||||
string connectedParty = 26;
|
||||
}
|
||||
message GetSupplierListResponse{
|
||||
uint64 total = 1;
|
||||
repeated SupplierInfo data = 2;
|
||||
uint64 page = 3;
|
||||
uint64 pageSize = 4;
|
||||
}
|
||||
message SupplierInfo{
|
||||
uint64 id = 1;
|
||||
uint64 owningEntityId = 2;
|
||||
string legalName = 3;
|
||||
string localName = 4;
|
||||
string abbreviationName = 5;
|
||||
uint64 countryOrRegionId = 6;
|
||||
string companyRegistrationNumber = 7;
|
||||
string supplierType = 8;
|
||||
string approvalStatus = 9;
|
||||
string approvalDate = 10;
|
||||
string lastReviewDate = 11;
|
||||
string legalEntityType = 12;
|
||||
string sanctionsCountryScreeningResult = 13;
|
||||
string keyFinancial = 14;
|
||||
string companyAddress = 15;
|
||||
string primaryContact = 16;
|
||||
string dataOwnerDepartment = 17;
|
||||
string basicCompanyInformation = 18;
|
||||
string linkAddress = 19;
|
||||
string supplementaryText = 20;
|
||||
repeated attachment attachments = 21;
|
||||
uint64 status = 22;
|
||||
string createdAt = 23;
|
||||
string updatedAt = 24;
|
||||
string supplierUniqueCode = 25;
|
||||
string owningEntityName = 26;
|
||||
string countryOrRegionCode = 27;
|
||||
string connectedParty = 28;
|
||||
}
|
||||
message UpdateSupplierRequest{
|
||||
uint64 id = 1;
|
||||
uint64 owningEntityId = 2;
|
||||
string legalName = 3;
|
||||
string localName = 4;
|
||||
string abbreviationName = 5;
|
||||
uint64 countryOrRegionId = 6;
|
||||
string companyRegistrationNumber = 7;
|
||||
string supplierType = 8;
|
||||
string approvalStatus = 9;
|
||||
string approvalDate = 10;
|
||||
string lastReviewDate = 11;
|
||||
string legalEntityType = 12;
|
||||
string sanctionsCountryScreeningResult = 13;
|
||||
string keyFinancial = 14;
|
||||
string companyAddress = 15;
|
||||
string primaryContact = 16;
|
||||
string dataOwnerDepartment = 17;
|
||||
string basicCompanyInformation = 18;
|
||||
string linkAddress = 19;
|
||||
string supplementaryText = 20;
|
||||
repeated attachment attachments = 21;
|
||||
uint64 status = 22;
|
||||
string connectedParty = 23;
|
||||
}
|
||||
message CreateSupplierRequest{
|
||||
uint64 owningEntityId = 1;
|
||||
string legalName = 2;
|
||||
string localName = 3;
|
||||
string abbreviationName = 4;
|
||||
uint64 countryOrRegionId = 5;
|
||||
string companyRegistrationNumber = 6;
|
||||
string supplierType = 7;
|
||||
string approvalStatus = 8;
|
||||
string approvalDate = 9;
|
||||
string lastReviewDate = 10;
|
||||
string legalEntityType = 11;
|
||||
string sanctionsCountryScreeningResult = 12;
|
||||
string keyFinancial = 13;
|
||||
string companyAddress = 14;
|
||||
string primaryContact = 15;
|
||||
string dataOwnerDepartment = 16;
|
||||
string basicCompanyInformation = 17;
|
||||
string linkAddress = 18;
|
||||
string supplementaryText = 19;
|
||||
repeated attachment attachments = 20;
|
||||
uint64 status = 21;
|
||||
string connectedParty = 22;
|
||||
}
|
||||
message attachment{
|
||||
string url = 1;
|
||||
string type = 2;
|
||||
string name = 3;
|
||||
}
|
||||
message CreateSupplierResponse{
|
||||
uint64 id = 1;
|
||||
string supplierCode = 2;
|
||||
}
|
||||
message GetSupplierRequest{
|
||||
uint64 id = 1;
|
||||
}
|
||||
122
api/supplier/supplier.validator.pb.go
Normal file
122
api/supplier/supplier.validator.pb.go
Normal file
@ -0,0 +1,122 @@
|
||||
// Code generated by protoc-gen-gogo. DO NOT EDIT.
|
||||
// source: api/supplier/supplier.proto
|
||||
|
||||
package supplier
|
||||
|
||||
import (
|
||||
fmt "fmt"
|
||||
math "math"
|
||||
proto "github.com/golang/protobuf/proto"
|
||||
github_com_mwitkow_go_proto_validators "github.com/mwitkow/go-proto-validators"
|
||||
)
|
||||
|
||||
// Reference imports to suppress errors if they are not otherwise used.
|
||||
var _ = proto.Marshal
|
||||
var _ = fmt.Errorf
|
||||
var _ = math.Inf
|
||||
|
||||
func (this *GetImportRecordRequest) Validate() error {
|
||||
return nil
|
||||
}
|
||||
func (this *GetImportRecordResponse) Validate() error {
|
||||
return nil
|
||||
}
|
||||
func (this *CreateImportRecordRequest) Validate() error {
|
||||
return nil
|
||||
}
|
||||
func (this *CreateImportRecordResponse) Validate() error {
|
||||
return nil
|
||||
}
|
||||
func (this *GetCountryRegionListResponse) Validate() error {
|
||||
for _, item := range this.Data {
|
||||
if item != nil {
|
||||
if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(item); err != nil {
|
||||
return github_com_mwitkow_go_proto_validators.FieldError("Data", err)
|
||||
}
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
func (this *CountryRegion) Validate() error {
|
||||
return nil
|
||||
}
|
||||
func (this *GetCountryRegionInfoRequest) Validate() error {
|
||||
return nil
|
||||
}
|
||||
func (this *GetCountryRegionListRequest) Validate() error {
|
||||
return nil
|
||||
}
|
||||
func (this *OrganizeDictionary) Validate() error {
|
||||
return nil
|
||||
}
|
||||
func (this *GetOrganizeDictionaryListResponse) Validate() error {
|
||||
for _, item := range this.Data {
|
||||
if item != nil {
|
||||
if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(item); err != nil {
|
||||
return github_com_mwitkow_go_proto_validators.FieldError("Data", err)
|
||||
}
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
func (this *CreateOrganizeDictionaryRequest) Validate() error {
|
||||
return nil
|
||||
}
|
||||
func (this *CreateOrganizeDictionaryResponse) Validate() error {
|
||||
return nil
|
||||
}
|
||||
func (this *GetOrganizeDictionaryListRequest) Validate() error {
|
||||
return nil
|
||||
}
|
||||
func (this *GetSupplierListRequest) Validate() error {
|
||||
return nil
|
||||
}
|
||||
func (this *GetSupplierListResponse) Validate() error {
|
||||
for _, item := range this.Data {
|
||||
if item != nil {
|
||||
if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(item); err != nil {
|
||||
return github_com_mwitkow_go_proto_validators.FieldError("Data", err)
|
||||
}
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
func (this *SupplierInfo) Validate() error {
|
||||
for _, item := range this.Attachments {
|
||||
if item != nil {
|
||||
if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(item); err != nil {
|
||||
return github_com_mwitkow_go_proto_validators.FieldError("Attachments", err)
|
||||
}
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
func (this *UpdateSupplierRequest) Validate() error {
|
||||
for _, item := range this.Attachments {
|
||||
if item != nil {
|
||||
if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(item); err != nil {
|
||||
return github_com_mwitkow_go_proto_validators.FieldError("Attachments", err)
|
||||
}
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
func (this *CreateSupplierRequest) Validate() error {
|
||||
for _, item := range this.Attachments {
|
||||
if item != nil {
|
||||
if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(item); err != nil {
|
||||
return github_com_mwitkow_go_proto_validators.FieldError("Attachments", err)
|
||||
}
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
func (this *Attachment) Validate() error {
|
||||
return nil
|
||||
}
|
||||
func (this *CreateSupplierResponse) Validate() error {
|
||||
return nil
|
||||
}
|
||||
func (this *GetSupplierRequest) Validate() error {
|
||||
return nil
|
||||
}
|
||||
605
api/supplier/supplier_triple.pb.go
Normal file
605
api/supplier/supplier_triple.pb.go
Normal file
@ -0,0 +1,605 @@
|
||||
// Code generated by protoc-gen-go-triple. DO NOT EDIT.
|
||||
// versions:
|
||||
// - protoc-gen-go-triple v1.0.5
|
||||
// - protoc v6.32.0
|
||||
// source: api/supplier/supplier.proto
|
||||
|
||||
package supplier
|
||||
|
||||
import (
|
||||
context "context"
|
||||
protocol "dubbo.apache.org/dubbo-go/v3/protocol"
|
||||
dubbo3 "dubbo.apache.org/dubbo-go/v3/protocol/dubbo3"
|
||||
invocation "dubbo.apache.org/dubbo-go/v3/protocol/invocation"
|
||||
grpc_go "github.com/dubbogo/grpc-go"
|
||||
codes "github.com/dubbogo/grpc-go/codes"
|
||||
metadata "github.com/dubbogo/grpc-go/metadata"
|
||||
status "github.com/dubbogo/grpc-go/status"
|
||||
common "github.com/dubbogo/triple/pkg/common"
|
||||
constant "github.com/dubbogo/triple/pkg/common/constant"
|
||||
triple "github.com/dubbogo/triple/pkg/triple"
|
||||
)
|
||||
|
||||
// This is a compile-time assertion to ensure that this generated file
|
||||
// is compatible with the grpc package it is being compiled against.
|
||||
const _ = grpc_go.SupportPackageIsVersion7
|
||||
|
||||
// SupplierClient is the client API for Supplier service.
|
||||
//
|
||||
// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream.
|
||||
type SupplierClient interface {
|
||||
// 供应商curd
|
||||
GetSupplier(ctx context.Context, in *GetSupplierRequest, opts ...grpc_go.CallOption) (*UpdateSupplierRequest, common.ErrorWithAttachment)
|
||||
CreateSupplier(ctx context.Context, in *CreateSupplierRequest, opts ...grpc_go.CallOption) (*CreateSupplierResponse, common.ErrorWithAttachment)
|
||||
UpdateSupplier(ctx context.Context, in *UpdateSupplierRequest, opts ...grpc_go.CallOption) (*CreateSupplierResponse, common.ErrorWithAttachment)
|
||||
GetSupplierList(ctx context.Context, in *GetSupplierListRequest, opts ...grpc_go.CallOption) (*GetSupplierListResponse, common.ErrorWithAttachment)
|
||||
// 组织字典
|
||||
CreateOrganizeDictionary(ctx context.Context, in *CreateOrganizeDictionaryRequest, opts ...grpc_go.CallOption) (*CreateOrganizeDictionaryResponse, common.ErrorWithAttachment)
|
||||
GetOrganizeDictionaryList(ctx context.Context, in *GetOrganizeDictionaryListRequest, opts ...grpc_go.CallOption) (*GetOrganizeDictionaryListResponse, common.ErrorWithAttachment)
|
||||
GetOrganizeDictionaryInfo(ctx context.Context, in *CreateOrganizeDictionaryRequest, opts ...grpc_go.CallOption) (*OrganizeDictionary, common.ErrorWithAttachment)
|
||||
// 国家组织
|
||||
GetCountryRegionList(ctx context.Context, in *GetCountryRegionListRequest, opts ...grpc_go.CallOption) (*GetCountryRegionListResponse, common.ErrorWithAttachment)
|
||||
GetCountryRegionInfo(ctx context.Context, in *GetCountryRegionInfoRequest, opts ...grpc_go.CallOption) (*CountryRegion, common.ErrorWithAttachment)
|
||||
// 导入
|
||||
CreateImportRecord(ctx context.Context, in *CreateImportRecordRequest, opts ...grpc_go.CallOption) (*CreateImportRecordResponse, common.ErrorWithAttachment)
|
||||
GetImportRecordInfo(ctx context.Context, in *GetImportRecordRequest, opts ...grpc_go.CallOption) (*GetImportRecordResponse, common.ErrorWithAttachment)
|
||||
}
|
||||
|
||||
type supplierClient struct {
|
||||
cc *triple.TripleConn
|
||||
}
|
||||
|
||||
type SupplierClientImpl struct {
|
||||
GetSupplier func(ctx context.Context, in *GetSupplierRequest) (*UpdateSupplierRequest, error)
|
||||
CreateSupplier func(ctx context.Context, in *CreateSupplierRequest) (*CreateSupplierResponse, error)
|
||||
UpdateSupplier func(ctx context.Context, in *UpdateSupplierRequest) (*CreateSupplierResponse, error)
|
||||
GetSupplierList func(ctx context.Context, in *GetSupplierListRequest) (*GetSupplierListResponse, error)
|
||||
CreateOrganizeDictionary func(ctx context.Context, in *CreateOrganizeDictionaryRequest) (*CreateOrganizeDictionaryResponse, error)
|
||||
GetOrganizeDictionaryList func(ctx context.Context, in *GetOrganizeDictionaryListRequest) (*GetOrganizeDictionaryListResponse, error)
|
||||
GetOrganizeDictionaryInfo func(ctx context.Context, in *CreateOrganizeDictionaryRequest) (*OrganizeDictionary, error)
|
||||
GetCountryRegionList func(ctx context.Context, in *GetCountryRegionListRequest) (*GetCountryRegionListResponse, error)
|
||||
GetCountryRegionInfo func(ctx context.Context, in *GetCountryRegionInfoRequest) (*CountryRegion, error)
|
||||
CreateImportRecord func(ctx context.Context, in *CreateImportRecordRequest) (*CreateImportRecordResponse, error)
|
||||
GetImportRecordInfo func(ctx context.Context, in *GetImportRecordRequest) (*GetImportRecordResponse, error)
|
||||
}
|
||||
|
||||
func (c *SupplierClientImpl) GetDubboStub(cc *triple.TripleConn) SupplierClient {
|
||||
return NewSupplierClient(cc)
|
||||
}
|
||||
|
||||
func (c *SupplierClientImpl) XXX_InterfaceName() string {
|
||||
return "supplier.Supplier"
|
||||
}
|
||||
|
||||
func NewSupplierClient(cc *triple.TripleConn) SupplierClient {
|
||||
return &supplierClient{cc}
|
||||
}
|
||||
|
||||
func (c *supplierClient) GetSupplier(ctx context.Context, in *GetSupplierRequest, opts ...grpc_go.CallOption) (*UpdateSupplierRequest, common.ErrorWithAttachment) {
|
||||
out := new(UpdateSupplierRequest)
|
||||
interfaceKey := ctx.Value(constant.InterfaceKey).(string)
|
||||
return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/GetSupplier", in, out)
|
||||
}
|
||||
|
||||
func (c *supplierClient) CreateSupplier(ctx context.Context, in *CreateSupplierRequest, opts ...grpc_go.CallOption) (*CreateSupplierResponse, common.ErrorWithAttachment) {
|
||||
out := new(CreateSupplierResponse)
|
||||
interfaceKey := ctx.Value(constant.InterfaceKey).(string)
|
||||
return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/CreateSupplier", in, out)
|
||||
}
|
||||
|
||||
func (c *supplierClient) UpdateSupplier(ctx context.Context, in *UpdateSupplierRequest, opts ...grpc_go.CallOption) (*CreateSupplierResponse, common.ErrorWithAttachment) {
|
||||
out := new(CreateSupplierResponse)
|
||||
interfaceKey := ctx.Value(constant.InterfaceKey).(string)
|
||||
return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/UpdateSupplier", in, out)
|
||||
}
|
||||
|
||||
func (c *supplierClient) GetSupplierList(ctx context.Context, in *GetSupplierListRequest, opts ...grpc_go.CallOption) (*GetSupplierListResponse, common.ErrorWithAttachment) {
|
||||
out := new(GetSupplierListResponse)
|
||||
interfaceKey := ctx.Value(constant.InterfaceKey).(string)
|
||||
return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/GetSupplierList", in, out)
|
||||
}
|
||||
|
||||
func (c *supplierClient) CreateOrganizeDictionary(ctx context.Context, in *CreateOrganizeDictionaryRequest, opts ...grpc_go.CallOption) (*CreateOrganizeDictionaryResponse, common.ErrorWithAttachment) {
|
||||
out := new(CreateOrganizeDictionaryResponse)
|
||||
interfaceKey := ctx.Value(constant.InterfaceKey).(string)
|
||||
return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/CreateOrganizeDictionary", in, out)
|
||||
}
|
||||
|
||||
func (c *supplierClient) GetOrganizeDictionaryList(ctx context.Context, in *GetOrganizeDictionaryListRequest, opts ...grpc_go.CallOption) (*GetOrganizeDictionaryListResponse, common.ErrorWithAttachment) {
|
||||
out := new(GetOrganizeDictionaryListResponse)
|
||||
interfaceKey := ctx.Value(constant.InterfaceKey).(string)
|
||||
return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/GetOrganizeDictionaryList", in, out)
|
||||
}
|
||||
|
||||
func (c *supplierClient) GetOrganizeDictionaryInfo(ctx context.Context, in *CreateOrganizeDictionaryRequest, opts ...grpc_go.CallOption) (*OrganizeDictionary, common.ErrorWithAttachment) {
|
||||
out := new(OrganizeDictionary)
|
||||
interfaceKey := ctx.Value(constant.InterfaceKey).(string)
|
||||
return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/GetOrganizeDictionaryInfo", in, out)
|
||||
}
|
||||
|
||||
func (c *supplierClient) GetCountryRegionList(ctx context.Context, in *GetCountryRegionListRequest, opts ...grpc_go.CallOption) (*GetCountryRegionListResponse, common.ErrorWithAttachment) {
|
||||
out := new(GetCountryRegionListResponse)
|
||||
interfaceKey := ctx.Value(constant.InterfaceKey).(string)
|
||||
return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/GetCountryRegionList", in, out)
|
||||
}
|
||||
|
||||
func (c *supplierClient) GetCountryRegionInfo(ctx context.Context, in *GetCountryRegionInfoRequest, opts ...grpc_go.CallOption) (*CountryRegion, common.ErrorWithAttachment) {
|
||||
out := new(CountryRegion)
|
||||
interfaceKey := ctx.Value(constant.InterfaceKey).(string)
|
||||
return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/GetCountryRegionInfo", in, out)
|
||||
}
|
||||
|
||||
func (c *supplierClient) CreateImportRecord(ctx context.Context, in *CreateImportRecordRequest, opts ...grpc_go.CallOption) (*CreateImportRecordResponse, common.ErrorWithAttachment) {
|
||||
out := new(CreateImportRecordResponse)
|
||||
interfaceKey := ctx.Value(constant.InterfaceKey).(string)
|
||||
return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/CreateImportRecord", in, out)
|
||||
}
|
||||
|
||||
func (c *supplierClient) GetImportRecordInfo(ctx context.Context, in *GetImportRecordRequest, opts ...grpc_go.CallOption) (*GetImportRecordResponse, common.ErrorWithAttachment) {
|
||||
out := new(GetImportRecordResponse)
|
||||
interfaceKey := ctx.Value(constant.InterfaceKey).(string)
|
||||
return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/GetImportRecordInfo", in, out)
|
||||
}
|
||||
|
||||
// SupplierServer is the server API for Supplier service.
|
||||
// All implementations must embed UnimplementedSupplierServer
|
||||
// for forward compatibility
|
||||
type SupplierServer interface {
|
||||
// 供应商curd
|
||||
GetSupplier(context.Context, *GetSupplierRequest) (*UpdateSupplierRequest, error)
|
||||
CreateSupplier(context.Context, *CreateSupplierRequest) (*CreateSupplierResponse, error)
|
||||
UpdateSupplier(context.Context, *UpdateSupplierRequest) (*CreateSupplierResponse, error)
|
||||
GetSupplierList(context.Context, *GetSupplierListRequest) (*GetSupplierListResponse, error)
|
||||
// 组织字典
|
||||
CreateOrganizeDictionary(context.Context, *CreateOrganizeDictionaryRequest) (*CreateOrganizeDictionaryResponse, error)
|
||||
GetOrganizeDictionaryList(context.Context, *GetOrganizeDictionaryListRequest) (*GetOrganizeDictionaryListResponse, error)
|
||||
GetOrganizeDictionaryInfo(context.Context, *CreateOrganizeDictionaryRequest) (*OrganizeDictionary, error)
|
||||
// 国家组织
|
||||
GetCountryRegionList(context.Context, *GetCountryRegionListRequest) (*GetCountryRegionListResponse, error)
|
||||
GetCountryRegionInfo(context.Context, *GetCountryRegionInfoRequest) (*CountryRegion, error)
|
||||
// 导入
|
||||
CreateImportRecord(context.Context, *CreateImportRecordRequest) (*CreateImportRecordResponse, error)
|
||||
GetImportRecordInfo(context.Context, *GetImportRecordRequest) (*GetImportRecordResponse, error)
|
||||
mustEmbedUnimplementedSupplierServer()
|
||||
}
|
||||
|
||||
// UnimplementedSupplierServer must be embedded to have forward compatible implementations.
|
||||
type UnimplementedSupplierServer struct {
|
||||
proxyImpl protocol.Invoker
|
||||
}
|
||||
|
||||
func (UnimplementedSupplierServer) GetSupplier(context.Context, *GetSupplierRequest) (*UpdateSupplierRequest, error) {
|
||||
return nil, status.Errorf(codes.Unimplemented, "method GetSupplier not implemented")
|
||||
}
|
||||
func (UnimplementedSupplierServer) CreateSupplier(context.Context, *CreateSupplierRequest) (*CreateSupplierResponse, error) {
|
||||
return nil, status.Errorf(codes.Unimplemented, "method CreateSupplier not implemented")
|
||||
}
|
||||
func (UnimplementedSupplierServer) UpdateSupplier(context.Context, *UpdateSupplierRequest) (*CreateSupplierResponse, error) {
|
||||
return nil, status.Errorf(codes.Unimplemented, "method UpdateSupplier not implemented")
|
||||
}
|
||||
func (UnimplementedSupplierServer) GetSupplierList(context.Context, *GetSupplierListRequest) (*GetSupplierListResponse, error) {
|
||||
return nil, status.Errorf(codes.Unimplemented, "method GetSupplierList not implemented")
|
||||
}
|
||||
func (UnimplementedSupplierServer) CreateOrganizeDictionary(context.Context, *CreateOrganizeDictionaryRequest) (*CreateOrganizeDictionaryResponse, error) {
|
||||
return nil, status.Errorf(codes.Unimplemented, "method CreateOrganizeDictionary not implemented")
|
||||
}
|
||||
func (UnimplementedSupplierServer) GetOrganizeDictionaryList(context.Context, *GetOrganizeDictionaryListRequest) (*GetOrganizeDictionaryListResponse, error) {
|
||||
return nil, status.Errorf(codes.Unimplemented, "method GetOrganizeDictionaryList not implemented")
|
||||
}
|
||||
func (UnimplementedSupplierServer) GetOrganizeDictionaryInfo(context.Context, *CreateOrganizeDictionaryRequest) (*OrganizeDictionary, error) {
|
||||
return nil, status.Errorf(codes.Unimplemented, "method GetOrganizeDictionaryInfo not implemented")
|
||||
}
|
||||
func (UnimplementedSupplierServer) GetCountryRegionList(context.Context, *GetCountryRegionListRequest) (*GetCountryRegionListResponse, error) {
|
||||
return nil, status.Errorf(codes.Unimplemented, "method GetCountryRegionList not implemented")
|
||||
}
|
||||
func (UnimplementedSupplierServer) GetCountryRegionInfo(context.Context, *GetCountryRegionInfoRequest) (*CountryRegion, error) {
|
||||
return nil, status.Errorf(codes.Unimplemented, "method GetCountryRegionInfo not implemented")
|
||||
}
|
||||
func (UnimplementedSupplierServer) CreateImportRecord(context.Context, *CreateImportRecordRequest) (*CreateImportRecordResponse, error) {
|
||||
return nil, status.Errorf(codes.Unimplemented, "method CreateImportRecord not implemented")
|
||||
}
|
||||
func (UnimplementedSupplierServer) GetImportRecordInfo(context.Context, *GetImportRecordRequest) (*GetImportRecordResponse, error) {
|
||||
return nil, status.Errorf(codes.Unimplemented, "method GetImportRecordInfo not implemented")
|
||||
}
|
||||
func (s *UnimplementedSupplierServer) XXX_SetProxyImpl(impl protocol.Invoker) {
|
||||
s.proxyImpl = impl
|
||||
}
|
||||
|
||||
func (s *UnimplementedSupplierServer) XXX_GetProxyImpl() protocol.Invoker {
|
||||
return s.proxyImpl
|
||||
}
|
||||
|
||||
func (s *UnimplementedSupplierServer) XXX_ServiceDesc() *grpc_go.ServiceDesc {
|
||||
return &Supplier_ServiceDesc
|
||||
}
|
||||
func (s *UnimplementedSupplierServer) XXX_InterfaceName() string {
|
||||
return "supplier.Supplier"
|
||||
}
|
||||
|
||||
func (UnimplementedSupplierServer) mustEmbedUnimplementedSupplierServer() {}
|
||||
|
||||
// UnsafeSupplierServer may be embedded to opt out of forward compatibility for this service.
|
||||
// Use of this interface is not recommended, as added methods to SupplierServer will
|
||||
// result in compilation errors.
|
||||
type UnsafeSupplierServer interface {
|
||||
mustEmbedUnimplementedSupplierServer()
|
||||
}
|
||||
|
||||
func RegisterSupplierServer(s grpc_go.ServiceRegistrar, srv SupplierServer) {
|
||||
s.RegisterService(&Supplier_ServiceDesc, srv)
|
||||
}
|
||||
|
||||
func _Supplier_GetSupplier_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) {
|
||||
in := new(GetSupplierRequest)
|
||||
if err := dec(in); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
base := srv.(dubbo3.Dubbo3GrpcService)
|
||||
args := []interface{}{}
|
||||
args = append(args, in)
|
||||
md, _ := metadata.FromIncomingContext(ctx)
|
||||
invAttachment := make(map[string]interface{}, len(md))
|
||||
for k, v := range md {
|
||||
invAttachment[k] = v
|
||||
}
|
||||
invo := invocation.NewRPCInvocation("GetSupplier", args, invAttachment)
|
||||
if interceptor == nil {
|
||||
result := base.XXX_GetProxyImpl().Invoke(ctx, invo)
|
||||
return result, result.Error()
|
||||
}
|
||||
info := &grpc_go.UnaryServerInfo{
|
||||
Server: srv,
|
||||
FullMethod: ctx.Value("XXX_TRIPLE_GO_INTERFACE_NAME").(string),
|
||||
}
|
||||
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
|
||||
result := base.XXX_GetProxyImpl().Invoke(ctx, invo)
|
||||
return result, result.Error()
|
||||
}
|
||||
return interceptor(ctx, in, info, handler)
|
||||
}
|
||||
|
||||
func _Supplier_CreateSupplier_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) {
|
||||
in := new(CreateSupplierRequest)
|
||||
if err := dec(in); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
base := srv.(dubbo3.Dubbo3GrpcService)
|
||||
args := []interface{}{}
|
||||
args = append(args, in)
|
||||
md, _ := metadata.FromIncomingContext(ctx)
|
||||
invAttachment := make(map[string]interface{}, len(md))
|
||||
for k, v := range md {
|
||||
invAttachment[k] = v
|
||||
}
|
||||
invo := invocation.NewRPCInvocation("CreateSupplier", args, invAttachment)
|
||||
if interceptor == nil {
|
||||
result := base.XXX_GetProxyImpl().Invoke(ctx, invo)
|
||||
return result, result.Error()
|
||||
}
|
||||
info := &grpc_go.UnaryServerInfo{
|
||||
Server: srv,
|
||||
FullMethod: ctx.Value("XXX_TRIPLE_GO_INTERFACE_NAME").(string),
|
||||
}
|
||||
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
|
||||
result := base.XXX_GetProxyImpl().Invoke(ctx, invo)
|
||||
return result, result.Error()
|
||||
}
|
||||
return interceptor(ctx, in, info, handler)
|
||||
}
|
||||
|
||||
func _Supplier_UpdateSupplier_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) {
|
||||
in := new(UpdateSupplierRequest)
|
||||
if err := dec(in); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
base := srv.(dubbo3.Dubbo3GrpcService)
|
||||
args := []interface{}{}
|
||||
args = append(args, in)
|
||||
md, _ := metadata.FromIncomingContext(ctx)
|
||||
invAttachment := make(map[string]interface{}, len(md))
|
||||
for k, v := range md {
|
||||
invAttachment[k] = v
|
||||
}
|
||||
invo := invocation.NewRPCInvocation("UpdateSupplier", args, invAttachment)
|
||||
if interceptor == nil {
|
||||
result := base.XXX_GetProxyImpl().Invoke(ctx, invo)
|
||||
return result, result.Error()
|
||||
}
|
||||
info := &grpc_go.UnaryServerInfo{
|
||||
Server: srv,
|
||||
FullMethod: ctx.Value("XXX_TRIPLE_GO_INTERFACE_NAME").(string),
|
||||
}
|
||||
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
|
||||
result := base.XXX_GetProxyImpl().Invoke(ctx, invo)
|
||||
return result, result.Error()
|
||||
}
|
||||
return interceptor(ctx, in, info, handler)
|
||||
}
|
||||
|
||||
func _Supplier_GetSupplierList_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) {
|
||||
in := new(GetSupplierListRequest)
|
||||
if err := dec(in); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
base := srv.(dubbo3.Dubbo3GrpcService)
|
||||
args := []interface{}{}
|
||||
args = append(args, in)
|
||||
md, _ := metadata.FromIncomingContext(ctx)
|
||||
invAttachment := make(map[string]interface{}, len(md))
|
||||
for k, v := range md {
|
||||
invAttachment[k] = v
|
||||
}
|
||||
invo := invocation.NewRPCInvocation("GetSupplierList", args, invAttachment)
|
||||
if interceptor == nil {
|
||||
result := base.XXX_GetProxyImpl().Invoke(ctx, invo)
|
||||
return result, result.Error()
|
||||
}
|
||||
info := &grpc_go.UnaryServerInfo{
|
||||
Server: srv,
|
||||
FullMethod: ctx.Value("XXX_TRIPLE_GO_INTERFACE_NAME").(string),
|
||||
}
|
||||
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
|
||||
result := base.XXX_GetProxyImpl().Invoke(ctx, invo)
|
||||
return result, result.Error()
|
||||
}
|
||||
return interceptor(ctx, in, info, handler)
|
||||
}
|
||||
|
||||
func _Supplier_CreateOrganizeDictionary_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) {
|
||||
in := new(CreateOrganizeDictionaryRequest)
|
||||
if err := dec(in); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
base := srv.(dubbo3.Dubbo3GrpcService)
|
||||
args := []interface{}{}
|
||||
args = append(args, in)
|
||||
md, _ := metadata.FromIncomingContext(ctx)
|
||||
invAttachment := make(map[string]interface{}, len(md))
|
||||
for k, v := range md {
|
||||
invAttachment[k] = v
|
||||
}
|
||||
invo := invocation.NewRPCInvocation("CreateOrganizeDictionary", args, invAttachment)
|
||||
if interceptor == nil {
|
||||
result := base.XXX_GetProxyImpl().Invoke(ctx, invo)
|
||||
return result, result.Error()
|
||||
}
|
||||
info := &grpc_go.UnaryServerInfo{
|
||||
Server: srv,
|
||||
FullMethod: ctx.Value("XXX_TRIPLE_GO_INTERFACE_NAME").(string),
|
||||
}
|
||||
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
|
||||
result := base.XXX_GetProxyImpl().Invoke(ctx, invo)
|
||||
return result, result.Error()
|
||||
}
|
||||
return interceptor(ctx, in, info, handler)
|
||||
}
|
||||
|
||||
func _Supplier_GetOrganizeDictionaryList_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) {
|
||||
in := new(GetOrganizeDictionaryListRequest)
|
||||
if err := dec(in); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
base := srv.(dubbo3.Dubbo3GrpcService)
|
||||
args := []interface{}{}
|
||||
args = append(args, in)
|
||||
md, _ := metadata.FromIncomingContext(ctx)
|
||||
invAttachment := make(map[string]interface{}, len(md))
|
||||
for k, v := range md {
|
||||
invAttachment[k] = v
|
||||
}
|
||||
invo := invocation.NewRPCInvocation("GetOrganizeDictionaryList", args, invAttachment)
|
||||
if interceptor == nil {
|
||||
result := base.XXX_GetProxyImpl().Invoke(ctx, invo)
|
||||
return result, result.Error()
|
||||
}
|
||||
info := &grpc_go.UnaryServerInfo{
|
||||
Server: srv,
|
||||
FullMethod: ctx.Value("XXX_TRIPLE_GO_INTERFACE_NAME").(string),
|
||||
}
|
||||
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
|
||||
result := base.XXX_GetProxyImpl().Invoke(ctx, invo)
|
||||
return result, result.Error()
|
||||
}
|
||||
return interceptor(ctx, in, info, handler)
|
||||
}
|
||||
|
||||
func _Supplier_GetOrganizeDictionaryInfo_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) {
|
||||
in := new(CreateOrganizeDictionaryRequest)
|
||||
if err := dec(in); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
base := srv.(dubbo3.Dubbo3GrpcService)
|
||||
args := []interface{}{}
|
||||
args = append(args, in)
|
||||
md, _ := metadata.FromIncomingContext(ctx)
|
||||
invAttachment := make(map[string]interface{}, len(md))
|
||||
for k, v := range md {
|
||||
invAttachment[k] = v
|
||||
}
|
||||
invo := invocation.NewRPCInvocation("GetOrganizeDictionaryInfo", args, invAttachment)
|
||||
if interceptor == nil {
|
||||
result := base.XXX_GetProxyImpl().Invoke(ctx, invo)
|
||||
return result, result.Error()
|
||||
}
|
||||
info := &grpc_go.UnaryServerInfo{
|
||||
Server: srv,
|
||||
FullMethod: ctx.Value("XXX_TRIPLE_GO_INTERFACE_NAME").(string),
|
||||
}
|
||||
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
|
||||
result := base.XXX_GetProxyImpl().Invoke(ctx, invo)
|
||||
return result, result.Error()
|
||||
}
|
||||
return interceptor(ctx, in, info, handler)
|
||||
}
|
||||
|
||||
func _Supplier_GetCountryRegionList_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) {
|
||||
in := new(GetCountryRegionListRequest)
|
||||
if err := dec(in); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
base := srv.(dubbo3.Dubbo3GrpcService)
|
||||
args := []interface{}{}
|
||||
args = append(args, in)
|
||||
md, _ := metadata.FromIncomingContext(ctx)
|
||||
invAttachment := make(map[string]interface{}, len(md))
|
||||
for k, v := range md {
|
||||
invAttachment[k] = v
|
||||
}
|
||||
invo := invocation.NewRPCInvocation("GetCountryRegionList", args, invAttachment)
|
||||
if interceptor == nil {
|
||||
result := base.XXX_GetProxyImpl().Invoke(ctx, invo)
|
||||
return result, result.Error()
|
||||
}
|
||||
info := &grpc_go.UnaryServerInfo{
|
||||
Server: srv,
|
||||
FullMethod: ctx.Value("XXX_TRIPLE_GO_INTERFACE_NAME").(string),
|
||||
}
|
||||
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
|
||||
result := base.XXX_GetProxyImpl().Invoke(ctx, invo)
|
||||
return result, result.Error()
|
||||
}
|
||||
return interceptor(ctx, in, info, handler)
|
||||
}
|
||||
|
||||
func _Supplier_GetCountryRegionInfo_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) {
|
||||
in := new(GetCountryRegionInfoRequest)
|
||||
if err := dec(in); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
base := srv.(dubbo3.Dubbo3GrpcService)
|
||||
args := []interface{}{}
|
||||
args = append(args, in)
|
||||
md, _ := metadata.FromIncomingContext(ctx)
|
||||
invAttachment := make(map[string]interface{}, len(md))
|
||||
for k, v := range md {
|
||||
invAttachment[k] = v
|
||||
}
|
||||
invo := invocation.NewRPCInvocation("GetCountryRegionInfo", args, invAttachment)
|
||||
if interceptor == nil {
|
||||
result := base.XXX_GetProxyImpl().Invoke(ctx, invo)
|
||||
return result, result.Error()
|
||||
}
|
||||
info := &grpc_go.UnaryServerInfo{
|
||||
Server: srv,
|
||||
FullMethod: ctx.Value("XXX_TRIPLE_GO_INTERFACE_NAME").(string),
|
||||
}
|
||||
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
|
||||
result := base.XXX_GetProxyImpl().Invoke(ctx, invo)
|
||||
return result, result.Error()
|
||||
}
|
||||
return interceptor(ctx, in, info, handler)
|
||||
}
|
||||
|
||||
func _Supplier_CreateImportRecord_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) {
|
||||
in := new(CreateImportRecordRequest)
|
||||
if err := dec(in); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
base := srv.(dubbo3.Dubbo3GrpcService)
|
||||
args := []interface{}{}
|
||||
args = append(args, in)
|
||||
md, _ := metadata.FromIncomingContext(ctx)
|
||||
invAttachment := make(map[string]interface{}, len(md))
|
||||
for k, v := range md {
|
||||
invAttachment[k] = v
|
||||
}
|
||||
invo := invocation.NewRPCInvocation("CreateImportRecord", args, invAttachment)
|
||||
if interceptor == nil {
|
||||
result := base.XXX_GetProxyImpl().Invoke(ctx, invo)
|
||||
return result, result.Error()
|
||||
}
|
||||
info := &grpc_go.UnaryServerInfo{
|
||||
Server: srv,
|
||||
FullMethod: ctx.Value("XXX_TRIPLE_GO_INTERFACE_NAME").(string),
|
||||
}
|
||||
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
|
||||
result := base.XXX_GetProxyImpl().Invoke(ctx, invo)
|
||||
return result, result.Error()
|
||||
}
|
||||
return interceptor(ctx, in, info, handler)
|
||||
}
|
||||
|
||||
func _Supplier_GetImportRecordInfo_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) {
|
||||
in := new(GetImportRecordRequest)
|
||||
if err := dec(in); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
base := srv.(dubbo3.Dubbo3GrpcService)
|
||||
args := []interface{}{}
|
||||
args = append(args, in)
|
||||
md, _ := metadata.FromIncomingContext(ctx)
|
||||
invAttachment := make(map[string]interface{}, len(md))
|
||||
for k, v := range md {
|
||||
invAttachment[k] = v
|
||||
}
|
||||
invo := invocation.NewRPCInvocation("GetImportRecordInfo", args, invAttachment)
|
||||
if interceptor == nil {
|
||||
result := base.XXX_GetProxyImpl().Invoke(ctx, invo)
|
||||
return result, result.Error()
|
||||
}
|
||||
info := &grpc_go.UnaryServerInfo{
|
||||
Server: srv,
|
||||
FullMethod: ctx.Value("XXX_TRIPLE_GO_INTERFACE_NAME").(string),
|
||||
}
|
||||
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
|
||||
result := base.XXX_GetProxyImpl().Invoke(ctx, invo)
|
||||
return result, result.Error()
|
||||
}
|
||||
return interceptor(ctx, in, info, handler)
|
||||
}
|
||||
|
||||
// Supplier_ServiceDesc is the grpc_go.ServiceDesc for Supplier service.
|
||||
// It's only intended for direct use with grpc_go.RegisterService,
|
||||
// and not to be introspected or modified (even as a copy)
|
||||
var Supplier_ServiceDesc = grpc_go.ServiceDesc{
|
||||
ServiceName: "supplier.Supplier",
|
||||
HandlerType: (*SupplierServer)(nil),
|
||||
Methods: []grpc_go.MethodDesc{
|
||||
{
|
||||
MethodName: "GetSupplier",
|
||||
Handler: _Supplier_GetSupplier_Handler,
|
||||
},
|
||||
{
|
||||
MethodName: "CreateSupplier",
|
||||
Handler: _Supplier_CreateSupplier_Handler,
|
||||
},
|
||||
{
|
||||
MethodName: "UpdateSupplier",
|
||||
Handler: _Supplier_UpdateSupplier_Handler,
|
||||
},
|
||||
{
|
||||
MethodName: "GetSupplierList",
|
||||
Handler: _Supplier_GetSupplierList_Handler,
|
||||
},
|
||||
{
|
||||
MethodName: "CreateOrganizeDictionary",
|
||||
Handler: _Supplier_CreateOrganizeDictionary_Handler,
|
||||
},
|
||||
{
|
||||
MethodName: "GetOrganizeDictionaryList",
|
||||
Handler: _Supplier_GetOrganizeDictionaryList_Handler,
|
||||
},
|
||||
{
|
||||
MethodName: "GetOrganizeDictionaryInfo",
|
||||
Handler: _Supplier_GetOrganizeDictionaryInfo_Handler,
|
||||
},
|
||||
{
|
||||
MethodName: "GetCountryRegionList",
|
||||
Handler: _Supplier_GetCountryRegionList_Handler,
|
||||
},
|
||||
{
|
||||
MethodName: "GetCountryRegionInfo",
|
||||
Handler: _Supplier_GetCountryRegionInfo_Handler,
|
||||
},
|
||||
{
|
||||
MethodName: "CreateImportRecord",
|
||||
Handler: _Supplier_CreateImportRecord_Handler,
|
||||
},
|
||||
{
|
||||
MethodName: "GetImportRecordInfo",
|
||||
Handler: _Supplier_GetImportRecordInfo_Handler,
|
||||
},
|
||||
},
|
||||
Streams: []grpc_go.StreamDesc{},
|
||||
Metadata: "api/supplier/supplier.proto",
|
||||
}
|
||||
@ -54,6 +54,9 @@ dubbo:
|
||||
FieeCronClientImpl:
|
||||
protocol: tri
|
||||
interface: com.fontree.microservices.fiee.cron
|
||||
SupplierClientImpl:
|
||||
protocol: tri
|
||||
interface: com.fontree.microservices.common.supplier
|
||||
logger:
|
||||
zap-config:
|
||||
level: error # 日志级别
|
||||
|
||||
BIN
data/话题标签导入模板.xlsx
Normal file
BIN
data/话题标签导入模板.xlsx
Normal file
Binary file not shown.
@ -61,6 +61,9 @@ dubbo:
|
||||
methods:
|
||||
- name: SecurityScan
|
||||
timeout: 120000
|
||||
SupplierClientImpl:
|
||||
protocol: tri
|
||||
interface: com.fontree.microservices.common.supplier
|
||||
logger:
|
||||
zap-config:
|
||||
level: error # 日志级别
|
||||
|
||||
@ -63,6 +63,9 @@ dubbo:
|
||||
methods:
|
||||
- name: SecurityScan
|
||||
timeout: 120000
|
||||
SupplierClientImpl:
|
||||
protocol: tri
|
||||
interface: com.fontree.microservices.common.supplier
|
||||
logger:
|
||||
zap-config:
|
||||
level: error # 日志级别
|
||||
|
||||
@ -61,6 +61,9 @@ dubbo:
|
||||
methods:
|
||||
- name: SecurityScan
|
||||
timeout: 120000
|
||||
SupplierClientImpl:
|
||||
protocol: tri
|
||||
interface: com.fontree.microservices.common.supplier
|
||||
logger:
|
||||
zap-config:
|
||||
level: error # 日志级别
|
||||
|
||||
@ -182,6 +182,30 @@ var EnMessages = map[string]string{
|
||||
"未知增值服务": "Unknown value-added service",
|
||||
"套餐未绑定增值服务": "Bundle not bound to value-added service",
|
||||
"网络错误": "Network error",
|
||||
|
||||
// Website report related messages
|
||||
"创建官网报告失败": "Failed to create website report",
|
||||
"删除官网报告失败": "Failed to delete website report",
|
||||
"官网报告列表查询失败": "Failed to query website report list",
|
||||
"编辑官网报告失败": "Failed to edit website report",
|
||||
"显示官网报告失败": "Failed to display website report",
|
||||
|
||||
// Website member management related messages
|
||||
"创建官网成员失败": "Failed to create website member",
|
||||
"删除官网成员失败": "Failed to delete website member",
|
||||
"官网成员列表查询失败": "Failed to query website member list",
|
||||
"编辑官网成员失败": "Failed to edit website member",
|
||||
"显示官网成员失败": "Failed to display website member",
|
||||
"编辑董事会成员失败": "Failed to edit board of directors member",
|
||||
"编辑委员会成员失败": "Failed to edit committee member",
|
||||
"显示委员会成员失败": "Failed to display committee member",
|
||||
"编辑管理员失败": "Failed to edit administrator",
|
||||
"显示管理员失败": "Failed to display administrator",
|
||||
"显示董事会成员失败": "Failed to display board of directors member",
|
||||
|
||||
// Website email alert related messages
|
||||
"提交邮箱通知失败": "Failed to submit email alert",
|
||||
"获取邮箱通知列表失败": "Failed to get email information list",
|
||||
}
|
||||
|
||||
var DeDEMessages = map[string]string{
|
||||
@ -358,6 +382,30 @@ var DeDEMessages = map[string]string{
|
||||
"未知增值服务": "Unbekannter Mehrwertdienst",
|
||||
"套餐未绑定增值服务": "Bundle nicht an Mehrwertdienst gebunden",
|
||||
"网络错误": "Netzwerkfehler",
|
||||
|
||||
// Website report related messages
|
||||
"创建官网报告失败": "Fehler beim Erstellen des Website-Berichts",
|
||||
"删除官网报告失败": "Fehler beim Löschen des Website-Berichts",
|
||||
"官网报告列表查询失败": "Fehler beim Abfragen der Website-Berichtsliste",
|
||||
"编辑官网报告失败": "Fehler beim Bearbeiten des Website-Berichts",
|
||||
"显示官网报告失败": "Fehler beim Anzeigen des Website-Berichts",
|
||||
|
||||
// Website member management related messages
|
||||
"创建官网成员失败": "Fehler beim Erstellen des Website-Mitglieds",
|
||||
"删除官网成员失败": "Fehler beim Löschen des Website-Mitglieds",
|
||||
"官网成员列表查询失败": "Fehler beim Abfragen der Website-Mitgliederliste",
|
||||
"编辑官网成员失败": "Fehler beim Bearbeiten des Website-Mitglieds",
|
||||
"显示官网成员失败": "Fehler beim Anzeigen des Website-Mitglieds",
|
||||
"编辑董事会成员失败": "Fehler beim Bearbeiten des Vorstandsmitglieds",
|
||||
"编辑委员会成员失败": "Fehler beim Bearbeiten des Ausschussmitglieds",
|
||||
"显示委员会成员失败": "Fehler beim Anzeigen des Ausschussmitglieds",
|
||||
"编辑管理员失败": "Fehler beim Bearbeiten des Administrators",
|
||||
"显示管理员失败": "Fehler beim Anzeigen des Administrators",
|
||||
"显示董事会成员失败": "Fehler beim Anzeigen des Vorstandsmitglieds",
|
||||
|
||||
// Website email alert related messages
|
||||
"提交邮箱通知失败": "Fehler beim Senden der E-Mail-Benachrichtigung",
|
||||
"获取邮箱通知列表失败": "Fehler beim Abrufen der E-Mail-Informationsliste",
|
||||
}
|
||||
|
||||
var JaJPMessages = map[string]string{
|
||||
@ -535,6 +583,30 @@ var JaJPMessages = map[string]string{
|
||||
"未知增值服务": "未知の付加価値サービス",
|
||||
"套餐未绑定增值服务": "バンドルが付加価値サービスにバインドされていません",
|
||||
"网络错误": "ネットワークエラー",
|
||||
|
||||
// Website report related messages
|
||||
"创建官网报告失败": "ウェブサイトレポートの作成に失敗しました",
|
||||
"删除官网报告失败": "ウェブサイトレポートの削除に失敗しました",
|
||||
"官网报告列表查询失败": "ウェブサイトレポートリストの検索に失敗しました",
|
||||
"编辑官网报告失败": "ウェブサイトレポートの編集に失敗しました",
|
||||
"显示官网报告失败": "ウェブサイトレポートの表示に失敗しました",
|
||||
|
||||
// Website member management related messages
|
||||
"创建官网成员失败": "ウェブサイトメンバーの作成に失敗しました",
|
||||
"删除官网成员失败": "ウェブサイトメンバーの削除に失敗しました",
|
||||
"官网成员列表查询失败": "ウェブサイトメンバーリストの検索に失敗しました",
|
||||
"编辑官网成员失败": "ウェブサイトメンバーの編集に失敗しました",
|
||||
"显示官网成员失败": "ウェブサイトメンバーの表示に失敗しました",
|
||||
"编辑董事会成员失败": "取締役会メンバーの編集に失敗しました",
|
||||
"编辑委员会成员失败": "委員会メンバーの編集に失敗しました",
|
||||
"显示委员会成员失败": "委員会メンバーの表示に失敗しました",
|
||||
"编辑管理员失败": "管理者の編集に失敗しました",
|
||||
"显示管理员失败": "管理者の表示に失敗しました",
|
||||
"显示董事会成员失败": "取締役会メンバーの表示に失敗しました",
|
||||
|
||||
// Website email alert related messages
|
||||
"提交邮箱通知失败": "メール通知の送信に失敗しました",
|
||||
"获取邮箱通知列表失败": "メール情報リストの取得に失敗しました",
|
||||
}
|
||||
|
||||
var ZhTWMessages = map[string]string{
|
||||
@ -722,4 +794,28 @@ var ZhTWMessages = map[string]string{
|
||||
"未知增值服务": "未知增值服務",
|
||||
"套餐未绑定增值服务": "套餐未綁定增值服務",
|
||||
"网络错误": "網絡錯誤",
|
||||
|
||||
// Website report related messages
|
||||
"创建官网报告失败": "創建官網報告失敗",
|
||||
"删除官网报告失败": "刪除官網報告失敗",
|
||||
"官网报告列表查询失败": "官網報告列表查詢失敗",
|
||||
"编辑官网报告失败": "編輯官網報告失敗",
|
||||
"显示官网报告失败": "顯示官網報告失敗",
|
||||
|
||||
// Website member management related messages
|
||||
"创建官网成员失败": "創建官網成員失敗",
|
||||
"删除官网成员失败": "刪除官網成員失敗",
|
||||
"官网成员列表查询失败": "官網成員列表查詢失敗",
|
||||
"编辑官网成员失败": "編輯官網成員失敗",
|
||||
"显示官网成员失败": "顯示官網成員失敗",
|
||||
"编辑董事会成员失败": "編輯董事會成員失敗",
|
||||
"编辑委员会成员失败": "編輯委員會成員失敗",
|
||||
"显示委员会成员失败": "顯示委員會成員失敗",
|
||||
"编辑管理员失败": "編輯管理員失敗",
|
||||
"显示管理员失败": "顯示管理員失敗",
|
||||
"显示董事会成员失败": "顯示董事會成員失敗",
|
||||
|
||||
// Website email alert related messages
|
||||
"提交邮箱通知失败": "提交郵箱通知失敗",
|
||||
"获取邮箱通知列表失败": "獲取郵箱通知列表失敗",
|
||||
}
|
||||
|
||||
@ -236,6 +236,7 @@ func (o *ChatRoom) SendSessionMessage(sender *accountFiee.ChatUserData, sessionI
|
||||
o.Session[sessionId] = usableClients
|
||||
fmt.Printf("sessionId:[%s],客户端数量%d\n", sessionId, len(o.Session[sessionId]))
|
||||
fmt.Println("userIdInSession", userIdInSession)
|
||||
fmt.Println("pushed", pushed)
|
||||
return
|
||||
}
|
||||
func (o *ChatRoom) GetUserIdInSession(sessionId string, withoutUserId ...int64) (userIds []int64) {
|
||||
|
||||
264
pkg/cron/task.go
264
pkg/cron/task.go
@ -5,16 +5,19 @@ import (
|
||||
"encoding/json"
|
||||
"errors"
|
||||
"fmt"
|
||||
"fonchain-fiee/api/aryshare"
|
||||
"fonchain-fiee/api/bundle"
|
||||
"fonchain-fiee/api/cast"
|
||||
"fonchain-fiee/pkg/cache"
|
||||
bundleModel "fonchain-fiee/pkg/model/bundle"
|
||||
modelCast "fonchain-fiee/pkg/model/cast"
|
||||
"fonchain-fiee/pkg/service"
|
||||
"fonchain-fiee/pkg/service/bundle/common"
|
||||
serverCast "fonchain-fiee/pkg/service/cast"
|
||||
"log"
|
||||
"math/rand"
|
||||
"strconv"
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
"github.com/go-redis/redis"
|
||||
@ -26,17 +29,22 @@ func InitTasks() error {
|
||||
cm := GetCronManager()
|
||||
err := cm.AddTask("refreshWorkApprovalStatus", "0 */1 * * * *", RefreshWorkApprovalStatusTask)
|
||||
err = cm.AddTask("artistAutoConfirm", "0 */1 * * * *", ArtistAutoConfirmTask)
|
||||
err = cm.AddTask("refreshPublishStatus", "0 */1 * * * *", RefreshPublishStatusTask)
|
||||
err = cm.AddTask("scheduledPublish", "0 */1 * * * *", ScheduledPublishTask)
|
||||
err = cm.AddTask("refreshPublishStatus", "0 */1 * * * *", PublishTask)
|
||||
err = cm.AddTask("scheduledPublish", "0 */10 * * * *", ScheduledPublishTask)
|
||||
|
||||
err = cm.AddTask("artistAutoConfirmAnalysis", "0 */1 * * * *", ArtistAutoConfirmAnalysisTask)
|
||||
err = cm.AddTask("refreshWorkAnalysisApprovalStatus", "0 */1 * * * *", RefreshWorkAnalysisApprovalStatusTask)
|
||||
err = cm.AddTask("refreshArtistOrder", "0 */30 * * * *", RefreshArtistOrderTask)
|
||||
|
||||
// 每天 00:30 和 12:30 执行 Ayrshare 指标采集任务
|
||||
err = cm.AddTask("ayrshareMetricsCollector", "0 30 0,12 * * *", AyrshareMetricsCollectorTask)
|
||||
// err = cm.AddTask("ayrshareMetricsCollector", "0 30 0,12 * * *", AyrshareMetricsCollectorTask)
|
||||
err = cm.AddTask("ayrshareMetricsCollector", "0 30 0 * * *", AyrshareMetricsCollectorTask)
|
||||
if err != nil {
|
||||
log.Printf("添加定时任务失败: %v", err)
|
||||
}
|
||||
|
||||
// 每2分钟执行一次标签观看次数更新任务
|
||||
// err = cm.AddTask("updateCastTagWatchCount", "0 */1 * * * *", UpdateCastTagWatchCountTask)
|
||||
cm.Start()
|
||||
|
||||
// 启动队列消费者
|
||||
@ -136,6 +144,17 @@ func AutoManuallyConfirmWorkTask() {
|
||||
continue
|
||||
}
|
||||
|
||||
if balanceInfoRes.BundleStatus == common.BundleExpired {
|
||||
_, err = service.CastProvider.UpdateStatus(context.Background(), &cast.UpdateStatusReq{
|
||||
WorkAction: cast.WorkActionENUM_CONFIRM,
|
||||
WorkUuid: req.WorkUuid,
|
||||
ConfirmRemark: req.ConfirmRemark,
|
||||
ConfirmStatus: 3,
|
||||
})
|
||||
log.Printf("套餐已过期,作品uuid:"+req.WorkUuid, zap.Error(err))
|
||||
continue
|
||||
}
|
||||
|
||||
wordInfoRes, err := service.CastProvider.WorkDetail(context.Background(), &cast.WorkDetailReq{
|
||||
WorkUuid: req.WorkUuid,
|
||||
})
|
||||
@ -258,11 +277,15 @@ func RefreshPublishStatusTask() {
|
||||
//zap.L().Info("刷新发布状态成功")
|
||||
}
|
||||
|
||||
// ScheduledPublishTask 定时发布任务,从Redis Sorted Set中获取所有workUuid并根据score判断处理
|
||||
// PublishTask 定时发布任务,从Redis Sorted Set中获取所有workUuid并根据score判断处理
|
||||
func PublishTask() {
|
||||
go RefreshPublishStatusTask() // 刷新发布状态
|
||||
go TaskStatus() // 异步任务状态
|
||||
}
|
||||
func ScheduledPublishTask() {
|
||||
// 加上锁
|
||||
lockKey := "scheduled_publish:lock"
|
||||
reply := cache.RedisClient.SetNX(lockKey, time.Now().Format("2006-01-02 15:04:05"), 1*time.Hour)
|
||||
reply := cache.RedisClient.SetNX(lockKey, time.Now().Format("2006-01-02 15:04:05"), 2*time.Hour)
|
||||
if !reply.Val() {
|
||||
zap.L().Warn("定时发布任务正在被其他实例处理")
|
||||
return
|
||||
@ -289,12 +312,15 @@ func ScheduledPublishTask() {
|
||||
|
||||
publishCount := 0
|
||||
expiredCount := 0
|
||||
const batchSize = 10 // 每批发布10个
|
||||
const batchSize = 8 // 每批发布8个,与PublishWork的workerCount保持一致
|
||||
|
||||
zap.L().Info("发现定时发布任务", zap.Int("total_count", len(workList)))
|
||||
zap.L().Info("发现定时发布任务 列表", zap.Any("workList", workList))
|
||||
|
||||
now := float64(time.Now().Unix())
|
||||
publishBatch := make([]string, 0, batchSize)
|
||||
// 使用 map 进行去重,防止同一个 work_uuid 被多次添加
|
||||
publishedUuids := make(map[string]bool)
|
||||
|
||||
// 遍历所有数据,根据score判断处理
|
||||
for _, item := range workList {
|
||||
@ -317,11 +343,32 @@ func ScheduledPublishTask() {
|
||||
continue
|
||||
}
|
||||
|
||||
// 先从 Redis 中删除,采用"先删后处理"的策略,防止重复处理
|
||||
removed, delErr := cache.RedisClient.ZRem(modelCast.ScheduledPublishQueueKey, workUuid).Result()
|
||||
if delErr != nil {
|
||||
zap.L().Error("删除定时发布任务失败", zap.Error(delErr), zap.String("work_uuid", workUuid))
|
||||
continue // 删除失败则跳过,避免重复处理
|
||||
}
|
||||
if removed == 0 {
|
||||
zap.L().Warn("定时发布任务已被删除,跳过",
|
||||
zap.String("work_uuid", workUuid))
|
||||
continue // 已被其他实例删除,跳过
|
||||
}
|
||||
|
||||
// 检查是否已经在当前批次中(去重)
|
||||
if publishedUuids[workUuid] {
|
||||
zap.L().Warn("发现重复的定时发布任务,跳过",
|
||||
zap.String("work_uuid", workUuid))
|
||||
continue
|
||||
}
|
||||
|
||||
// score大于等于当前时间,添加到待发布批次
|
||||
zap.L().Info("添加到发布批次",
|
||||
zap.String("work_uuid", workUuid),
|
||||
zap.Float64("score", score))
|
||||
publishBatch = append(publishBatch, workUuid)
|
||||
publishedUuids[workUuid] = true
|
||||
publishCount++
|
||||
|
||||
// 当批次达到指定大小时,批量发布
|
||||
if len(publishBatch) >= batchSize {
|
||||
@ -329,15 +376,6 @@ func ScheduledPublishTask() {
|
||||
_ = serverCast.PublishWork(context.Background(), &cast.PublishReq{
|
||||
WorkUuids: publishBatch,
|
||||
})
|
||||
// 批量删除已发布的任务
|
||||
for _, uuid := range publishBatch {
|
||||
removed, delErr := cache.RedisClient.ZRem(modelCast.ScheduledPublishQueueKey, uuid).Result()
|
||||
if delErr != nil {
|
||||
zap.L().Error("删除定时发布任务失败", zap.Error(delErr), zap.String("work_uuid", uuid))
|
||||
} else if removed > 0 {
|
||||
publishCount++
|
||||
}
|
||||
}
|
||||
zap.L().Info("批次发布完成", zap.Int("published", len(publishBatch)))
|
||||
// 清空批次,准备下一批
|
||||
publishBatch = make([]string, 0, batchSize)
|
||||
@ -350,15 +388,6 @@ func ScheduledPublishTask() {
|
||||
_ = serverCast.PublishWork(context.Background(), &cast.PublishReq{
|
||||
WorkUuids: publishBatch,
|
||||
})
|
||||
// 批量删除已发布的任务
|
||||
for _, uuid := range publishBatch {
|
||||
removed, delErr := cache.RedisClient.ZRem(modelCast.ScheduledPublishQueueKey, uuid).Result()
|
||||
if delErr != nil {
|
||||
zap.L().Error("删除定时发布任务失败", zap.Error(delErr), zap.String("work_uuid", uuid))
|
||||
} else if removed > 0 {
|
||||
publishCount++
|
||||
}
|
||||
}
|
||||
zap.L().Info("剩余批次发布完成", zap.Int("published", len(publishBatch)))
|
||||
}
|
||||
|
||||
@ -368,6 +397,61 @@ func ScheduledPublishTask() {
|
||||
zap.Int("total_count", len(workList)))
|
||||
}
|
||||
|
||||
func TaskStatus() {
|
||||
var actions []string = []string{"publishBatch1", "publishBatch2"}
|
||||
for _, action := range actions {
|
||||
resp, err := service.CastProvider.ListTaskList(context.Background(), &cast.ListTaskListReq{
|
||||
Action: action,
|
||||
Status: 1,
|
||||
Page: 1,
|
||||
PageSize: 100,
|
||||
})
|
||||
if err != nil {
|
||||
zap.L().Error("获取任务列表失败", zap.Error(err))
|
||||
return
|
||||
}
|
||||
for _, v := range resp.Data {
|
||||
var extraData modelCast.PublishTaskDto
|
||||
if v.ExtraData == "" {
|
||||
continue
|
||||
}
|
||||
_ = json.Unmarshal([]byte(v.ExtraData), &extraData)
|
||||
var allDone = true
|
||||
for _, workUuid := range extraData.WorkUuids {
|
||||
infoResp, _err := service.CastProvider.WorkInfo(context.Background(), &cast.WorkInfoReq{WorkUuid: workUuid})
|
||||
if _err != nil {
|
||||
zap.L().Error("获取作品信息失败", zap.Error(_err))
|
||||
allDone = false
|
||||
break
|
||||
}
|
||||
if infoResp.PublishStatus != cast.PublishStatusENUM_PublishMediaStatus_DONE {
|
||||
allDone = false
|
||||
break
|
||||
}
|
||||
}
|
||||
var excelUrl string
|
||||
if allDone {
|
||||
excelUrl, err = serverCast.PublishTaskExcel(extraData.WorkUuids, true, v.Action)
|
||||
if err != nil {
|
||||
zap.L().Error("生成发布任务Excel失败", zap.Error(err))
|
||||
continue
|
||||
}
|
||||
_, err = service.CastProvider.UpsertTaskList(context.Background(), &cast.UpsertTaskListReq{
|
||||
Uuid: v.Uuid,
|
||||
Action: v.Action,
|
||||
Url: excelUrl,
|
||||
Status: 3,
|
||||
})
|
||||
if err != nil {
|
||||
zap.L().Error("更新任务状态失败", zap.Error(err))
|
||||
continue
|
||||
}
|
||||
zap.L().Info("任务已完成,更新状态为完成", zap.String("task_uuid", v.Uuid), zap.String("excel_url", excelUrl))
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// WorkPublishQueueConsumer 监听work:publish:queue队列的消费者
|
||||
func WorkPublishQueueConsumer() {
|
||||
zap.L().Info("开始监听work:publish:queue队列(批量处理模式)")
|
||||
@ -490,3 +574,135 @@ func ArtistAutoConfirmAnalysisTask() {
|
||||
func AyrshareMetricsCollectorTask() {
|
||||
serverCast.ExecuteAyrshareMetricsCollector()
|
||||
}
|
||||
|
||||
func RefreshArtistOrderTask() {
|
||||
_, _ = service.CastProvider.Tools(context.Background(), &cast.ToolsReq{Action: "artistOrderInfo"})
|
||||
}
|
||||
|
||||
// UpdateCastTagWatchCountTask 更新标签观看次数的定时任务(每5分钟执行一次)
|
||||
func UpdateCastTagWatchCountTask() {
|
||||
ctx := context.Background()
|
||||
|
||||
// 计算两天前的00:00:00
|
||||
now := time.Now()
|
||||
twoDaysAgo := now.AddDate(0, 0, -2)
|
||||
createdAtStart := time.Date(twoDaysAgo.Year(), twoDaysAgo.Month(), twoDaysAgo.Day(), 0, 0, 0, 0, twoDaysAgo.Location())
|
||||
createdAtEnd := now
|
||||
|
||||
// 格式化时间字符串:2026-01-01 00:00:00
|
||||
createdAtStartStr := createdAtStart.Format("2006-01-02 15:04:05")
|
||||
createdAtEndStr := createdAtEnd.Format("2006-01-02 15:04:05")
|
||||
|
||||
// 调用 ListCastTags 接口,筛选 IsWatchCountCalled = 2 的数据
|
||||
listReq := &cast.ListCastTagsReq{
|
||||
CreatedAtStart: createdAtStartStr,
|
||||
CreatedAtEnd: createdAtEndStr,
|
||||
IsWatchCountCalled: 2, // 2表示未调用
|
||||
Page: 1,
|
||||
PageSize: 10,
|
||||
}
|
||||
|
||||
listResp, err := service.CastProvider.ListCastTags(ctx, listReq)
|
||||
if err != nil {
|
||||
zap.L().Error("获取标签列表失败", zap.Error(err))
|
||||
return
|
||||
}
|
||||
|
||||
if listResp.Data == nil || len(listResp.Data) == 0 {
|
||||
return
|
||||
}
|
||||
|
||||
zap.L().Info("获取到需要更新的标签", zap.Int("count", len(listResp.Data)))
|
||||
|
||||
// 获取有效的 profileKey
|
||||
profileKey, err := serverCast.GetValidProfileKey(ctx, []uint32{1})
|
||||
if err != nil {
|
||||
zap.L().Error("获取有效profileKey失败", zap.Error(err))
|
||||
return
|
||||
}
|
||||
|
||||
// 准备批量更新的数据
|
||||
updateData := make([]*cast.CastTagInfo, 0, len(listResp.Data))
|
||||
|
||||
// 遍历每个标签,调用 RecommendHashtags 接口
|
||||
for _, tag := range listResp.Data {
|
||||
if tag.HashTag == "" {
|
||||
zap.L().Warn("标签HashTag为空,跳过", zap.String("uuid", tag.Uuid))
|
||||
// 即使HashTag为空,也要更新IsWatchCountCalled为1
|
||||
updateData = append(updateData, &cast.CastTagInfo{
|
||||
Uuid: tag.Uuid,
|
||||
WatchCount: 1,
|
||||
IsWatchCountCalled: 1,
|
||||
})
|
||||
continue
|
||||
}
|
||||
|
||||
// 调用 RecommendHashtags 接口
|
||||
recommendReq := &aryshare.RecommendHashtagsRequest{
|
||||
Keyword: tag.HashTag,
|
||||
ProfileKey: profileKey,
|
||||
}
|
||||
|
||||
recommendResp, err := service.AyrshareProvider.RecommendHashtags(ctx, recommendReq)
|
||||
if err != nil {
|
||||
zap.L().Error("调用RecommendHashtags接口失败",
|
||||
zap.String("hashTag", tag.HashTag),
|
||||
zap.String("uuid", tag.Uuid),
|
||||
zap.Error(err))
|
||||
// 调用失败时,将WatchCount更新为1,IsWatchCountCalled更新为1
|
||||
updateData = append(updateData, &cast.CastTagInfo{
|
||||
Uuid: tag.Uuid,
|
||||
WatchCount: 1,
|
||||
IsWatchCountCalled: 1,
|
||||
})
|
||||
continue
|
||||
}
|
||||
|
||||
// 对比返回结果,查找完全一致的标签
|
||||
var matchedViewCount int64 = 0
|
||||
if recommendResp.Recommendations != nil {
|
||||
for _, recommendation := range recommendResp.Recommendations {
|
||||
// 完全一致匹配(不区分大小写)
|
||||
if strings.EqualFold(recommendation.Name, tag.HashTag) {
|
||||
matchedViewCount = recommendation.ViewCount
|
||||
break
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 根据匹配结果更新WatchCount
|
||||
var watchCount int32 = 1
|
||||
if matchedViewCount > 0 {
|
||||
watchCount = int32(matchedViewCount)
|
||||
}
|
||||
|
||||
// 添加到更新列表
|
||||
updateData = append(updateData, &cast.CastTagInfo{
|
||||
Uuid: tag.Uuid,
|
||||
WatchCount: watchCount,
|
||||
IsWatchCountCalled: 1,
|
||||
})
|
||||
|
||||
zap.L().Debug("处理标签完成",
|
||||
zap.String("hashTag", tag.HashTag),
|
||||
zap.String("uuid", tag.Uuid),
|
||||
zap.Int64("matchedViewCount", matchedViewCount),
|
||||
zap.Int32("watchCount", watchCount))
|
||||
}
|
||||
|
||||
// 如果没有需要更新的数据,直接返回
|
||||
if len(updateData) == 0 {
|
||||
return
|
||||
}
|
||||
|
||||
// 批量更新标签
|
||||
batchUpdateReq := &cast.BatchUpdateCastTagsReq{
|
||||
Data: updateData,
|
||||
}
|
||||
|
||||
_, err = service.CastProvider.BatchUpdateCastTags(ctx, batchUpdateReq)
|
||||
if err != nil {
|
||||
zap.L().Error("批量更新标签失败", zap.Error(err), zap.Int("count", len(updateData)))
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
@ -79,7 +79,7 @@ func (w *Work) ExportExcelWorkList(data []*cast.WorkListResp_Info) (*excelize.Fi
|
||||
info.Remark,
|
||||
mediaAccountNames,
|
||||
managerNames,
|
||||
info.Status1Time,
|
||||
info.SubmitTime,
|
||||
info.Status4Time,
|
||||
info.Status9Time,
|
||||
info.Status6Time,
|
||||
|
||||
182
pkg/logic/supplier.go
Normal file
182
pkg/logic/supplier.go
Normal file
@ -0,0 +1,182 @@
|
||||
package logic
|
||||
|
||||
import (
|
||||
"crypto/sha256"
|
||||
"errors"
|
||||
"fmt"
|
||||
"strconv"
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
"github.com/tealeg/xlsx"
|
||||
)
|
||||
|
||||
type SupplierLogic struct {
|
||||
OwningEntityName string `json:"owningEntityName"`
|
||||
LegalName string `json:"legalName"`
|
||||
LocalName string `json:"localName"`
|
||||
AbbreviationName string `json:"abbreviationName"`
|
||||
CountryOrRegionName string `json:"countryOrRegionName"`
|
||||
CompanyRegistrationNumber string `json:"companyRegistrationNumber"`
|
||||
SupplierType string `json:"supplierType"`
|
||||
ApprovalStatus string `json:"approvalStatus"`
|
||||
ApprovalDate string `json:"approvalDate"`
|
||||
LastReviewDate string `json:"lastReviewDate"`
|
||||
LegalEntityType string `json:"legalEntityType"`
|
||||
SanctionsCountryScreeningResult string `json:"sanctionsCountryScreeningResult"`
|
||||
KeyFinancial string `json:"keyFinancial"`
|
||||
CompanyAddress string `json:"companyAddress"`
|
||||
PrimaryContact string `json:"primaryContact"`
|
||||
DataOwnerDepartment string `json:"dataOwnerDepartment"`
|
||||
BasicCompanyInformation string `json:"basicCompanyInformation"`
|
||||
SupplementaryText string `json:"supplementaryText"`
|
||||
ConnectedParty string `json:"connectedParty"`
|
||||
}
|
||||
type ErrSupplierRes struct {
|
||||
ID int `json:"id"`
|
||||
LegalName string `json:"legalName"`
|
||||
Remark string `json:"remark"`
|
||||
}
|
||||
|
||||
func ImportSupplier(filePath string) ([]*SupplierLogic, error) {
|
||||
xlFile, err := xlsx.OpenFile(filePath)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
//开辟除表头外的行数的数组内存
|
||||
//遍历sheet
|
||||
for sheetIndex, sheet := range xlFile.Sheets {
|
||||
var resourceArr []map[int]string
|
||||
//遍历每一行
|
||||
//for rowIndex, row := range sheet.Rows {
|
||||
for _, row := range sheet.Rows {
|
||||
//开辟除表头外的行数的数组内存
|
||||
objMap := make(map[int]string)
|
||||
|
||||
//if len(row.Cells) <= 0 || row.Cells[0].String() == "" {
|
||||
// continue
|
||||
//}
|
||||
for cellIndex, cell := range row.Cells {
|
||||
text := cell.String()
|
||||
//如果是每一行的第一个单元格
|
||||
objMap[cellIndex] = text
|
||||
}
|
||||
resourceArr = append(resourceArr, objMap)
|
||||
}
|
||||
if len(resourceArr) >= 2 {
|
||||
suppliers, err := getListFromRaw(resourceArr)
|
||||
if err != nil {
|
||||
return nil, errors.New(fmt.Sprintf("页码:%d,文件读取错误信息%s", sheetIndex+1, err.Error()))
|
||||
}
|
||||
if len(suppliers) > 0 {
|
||||
return suppliers, nil
|
||||
}
|
||||
}
|
||||
break
|
||||
}
|
||||
|
||||
return nil, nil
|
||||
}
|
||||
func getListFromRaw(list []map[int]string) ([]*SupplierLogic, error) {
|
||||
var entrusts []*SupplierLogic
|
||||
kkMap := map[string]string{
|
||||
"*使用组织/Owning Entity": "owningEntityName",
|
||||
"*供应商法定全称/Legal Name": "legalName",
|
||||
"供应商本地名称(如有)/Local Name (if applicable)": "localName",
|
||||
"供应商简称(如有)/Abbreviation/Trade Name (if applicable)": "abbreviationName",
|
||||
"*所在国家或地区/Country or Region": "countryOrRegionName",
|
||||
"*公司注册编号/Company Registration Number": "companyRegistrationNumber",
|
||||
"*供应商类型/Supplier Type": "supplierType",
|
||||
"*准入状态/Approval Status": "approvalStatus",
|
||||
"准入日期/Approval Date": "approvalDate",
|
||||
"法律实体形式/Legal Entity Type": "legalEntityType",
|
||||
"制裁与高风险国家筛查结果/Sanctions & High-Risk Country Screening Result": "sanctionsCountryScreeningResult",
|
||||
"关键财务与付款信息/Key Financial & Payment Information": "keyFinancial",
|
||||
"公司地址/Company Address": "companyAddress",
|
||||
"主要联系人、职位及联系方式/Primary Contact, Position&Details": "primaryContact",
|
||||
"数据维护部门&人员/Data Owner Department/Personnel": "dataOwnerDepartment",
|
||||
"公司信息概要/Summary of Basic Company Information": "basicCompanyInformation",
|
||||
"其他补充信息/Other Supplementary Information": "supplementaryText",
|
||||
"*是否关联方/Connected party": "connectedParty",
|
||||
}
|
||||
keyMap := list[0]
|
||||
for index, tt := range list {
|
||||
if index == 0 {
|
||||
continue
|
||||
}
|
||||
temp := &SupplierLogic{}
|
||||
for i, r := range tt {
|
||||
t := strings.TrimSpace(r)
|
||||
if _, ok := keyMap[i]; !ok {
|
||||
continue
|
||||
}
|
||||
keyString := strings.TrimSpace(keyMap[i])
|
||||
if _, ok := kkMap[keyString]; !ok {
|
||||
fmt.Println(fmt.Sprintf("行数:%d字段信息(%s)没有匹配,请以模版为准", i, keyString))
|
||||
continue
|
||||
}
|
||||
switch kkMap[keyString] {
|
||||
case "owningEntityName":
|
||||
temp.OwningEntityName = t
|
||||
case "legalName":
|
||||
temp.LegalName = t
|
||||
case "localName":
|
||||
temp.LocalName = t
|
||||
case "abbreviationName":
|
||||
temp.AbbreviationName = t
|
||||
case "countryOrRegionName":
|
||||
temp.CountryOrRegionName = t
|
||||
case "companyRegistrationNumber":
|
||||
temp.CompanyRegistrationNumber = t
|
||||
case "supplierType":
|
||||
temp.SupplierType = t
|
||||
case "approvalStatus":
|
||||
temp.ApprovalStatus = t
|
||||
case "approvalDate":
|
||||
temp.ApprovalDate = ParseExcelDate(t)
|
||||
//temp.ApprovalDate = t
|
||||
case "legalEntityType":
|
||||
temp.LegalEntityType = t
|
||||
case "sanctionsCountryScreeningResult":
|
||||
temp.SanctionsCountryScreeningResult = t
|
||||
case "keyFinancial":
|
||||
temp.KeyFinancial = t
|
||||
case "companyAddress":
|
||||
temp.CompanyAddress = t
|
||||
case "primaryContact":
|
||||
temp.PrimaryContact = t
|
||||
case "dataOwnerDepartment":
|
||||
temp.DataOwnerDepartment = t
|
||||
case "basicCompanyInformation":
|
||||
temp.BasicCompanyInformation = t
|
||||
case "supplementaryText":
|
||||
temp.SupplementaryText = t
|
||||
case "connectedParty":
|
||||
temp.ConnectedParty = t
|
||||
|
||||
}
|
||||
}
|
||||
entrusts = append(entrusts, temp)
|
||||
}
|
||||
sha256.New()
|
||||
return entrusts, nil
|
||||
}
|
||||
func ParseExcelDate(v string) string {
|
||||
if v == "" {
|
||||
return ""
|
||||
}
|
||||
|
||||
// 非数字,直接认为是 yyyy-mm-dd
|
||||
if _, err := strconv.ParseFloat(v, 64); err != nil {
|
||||
t, err := time.Parse("2006-01-02", v)
|
||||
if err != nil {
|
||||
return ""
|
||||
}
|
||||
return t.Format("2006-01-02")
|
||||
}
|
||||
|
||||
// Excel 序列号
|
||||
f, _ := strconv.ParseFloat(v, 64)
|
||||
base := time.Date(1899, 12, 30, 0, 0, 0, 0, time.Local)
|
||||
return base.AddDate(0, 0, int(f)).Format("2006-01-02")
|
||||
}
|
||||
@ -70,6 +70,7 @@ func CheckLogin(provider *api.AccountFieeClientImpl) gin.HandlerFunc {
|
||||
TelNum: jwt.Phone,
|
||||
SubscriberNumber: infoRes.SubscriberNumber,
|
||||
IdNumber: infoRes.IdNumber,
|
||||
InviterID: infoRes.InviterId,
|
||||
}
|
||||
|
||||
ctx.Set("jwtInfo", loginInfo)
|
||||
|
||||
13
pkg/model/cast/task.go
Normal file
13
pkg/model/cast/task.go
Normal file
@ -0,0 +1,13 @@
|
||||
package cast
|
||||
|
||||
type PublishTaskDto struct {
|
||||
WorkUuids []string
|
||||
MediaAccountUuids []string
|
||||
PlatformIds []string
|
||||
}
|
||||
|
||||
var TaskActionName = map[string]string{
|
||||
"importWorkBatch": "批量导入图文",
|
||||
"publishBatch1": "批量发布",
|
||||
"publishBatch2": "多账号同步",
|
||||
}
|
||||
@ -29,6 +29,7 @@ type Info struct {
|
||||
TelNum string `json:"telNum"`
|
||||
SubscriberNumber string `json:"subscriberNumber"`
|
||||
IdNumber string `json:"idNumber"`
|
||||
InviterID uint64 `json:"inviterId"`
|
||||
}
|
||||
|
||||
func GetUserInfoFromC(c *gin.Context) Info {
|
||||
|
||||
@ -10,7 +10,7 @@ import (
|
||||
)
|
||||
|
||||
func AnalysisRouter(r *gin.RouterGroup) {
|
||||
r.POST("analysis/trigger-ayrshare-metrics", serviceCast.TriggerAyrshareMetricsCollector)
|
||||
// r.POST("analysis/trigger-ayrshare-metrics", serviceCast.TriggerAyrshareMetricsCollector)
|
||||
|
||||
analysis := r.Group("analysis")
|
||||
analysis.Use(middleware.CheckWebLogin(service.AccountProvider))
|
||||
@ -31,7 +31,8 @@ func AnalysisRouter(r *gin.RouterGroup) {
|
||||
analysis.POST("artist-metrics-single", serviceCast.ArtistMetricsDailyWindow) // 艺人指标日窗口
|
||||
analysis.POST("tobe-confirmed-list", serviceCast.TobeConfirmedList) // 待确认数据列表
|
||||
analysis.POST("update-approval-id", serviceCast.UpdateWorkAnalysisApprovalID) // 更新作品分析审批ID
|
||||
// analysis.POST("trigger-ayrshare-metrics", serviceCast.TriggerAyrshareMetricsCollector) // 手动触发 Ayrshare 指标采集任务
|
||||
|
||||
analysis.POST("trigger-ayrshare-metrics", serviceCast.TriggerAyrshareMetricsCollector) // 手动触发 Ayrshare 指标采集任务
|
||||
|
||||
}
|
||||
|
||||
|
||||
@ -23,6 +23,7 @@ func cronRouter(r *gin.RouterGroup) {
|
||||
cron.POST("exportExcelExecutionResult", cronService.ExportExcelExecutionResult)
|
||||
cron.POST("getListExecutionRecord", cronService.GetListExecutionRecord)
|
||||
cron.POST("getScheduleTaskStatus", cronService.GetScheduleTaskStatus)
|
||||
cron.POST("getImportData", cronService.GetImportData)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -62,6 +62,8 @@ func MediaRouter(r *gin.RouterGroup) {
|
||||
task := auth.Group("task")
|
||||
{
|
||||
task.POST("list", serviceCast.TaskList)
|
||||
task.POST("delete", serviceCast.DeleteTasK)
|
||||
task.POST("download", serviceCast.DownloadTaskFile)
|
||||
}
|
||||
|
||||
layout := auth.Group("layout")
|
||||
@ -79,6 +81,18 @@ func MediaRouter(r *gin.RouterGroup) {
|
||||
prompt.POST("delete", serviceCast.DeletePrompt)
|
||||
}
|
||||
|
||||
tag := auth.Group("tag")
|
||||
{
|
||||
tag.POST("update", serviceCast.UpdateCastTag)
|
||||
tag.POST("list", serviceCast.ListCastTags)
|
||||
tag.POST("import-batch", serviceCast.ImportTagBatch)
|
||||
tag.POST("recalculate-quote-count", serviceCast.RecalculateCastTagQuoteCount)
|
||||
// tag.POST("auto-hashtags", serviceCast.AutoHashtags)
|
||||
// 这两个接口需要关闭ins,通过facebook授权
|
||||
// tag.POST("recommend-hashtags", serviceCast.RecommendHashtags)
|
||||
// tag.POST("search-hashtags", serviceCast.SearchHashtags)
|
||||
}
|
||||
|
||||
//AI 生图
|
||||
aiNoAuth := noAuth.Group("ai")
|
||||
{
|
||||
|
||||
@ -7,13 +7,17 @@ import (
|
||||
"fonchain-fiee/pkg/service/account"
|
||||
"fonchain-fiee/pkg/service/asChat"
|
||||
"fonchain-fiee/pkg/service/auth"
|
||||
"fonchain-fiee/pkg/service/bundle"
|
||||
emailAlert "fonchain-fiee/pkg/service/emailAlerts"
|
||||
"fonchain-fiee/pkg/service/file"
|
||||
"fonchain-fiee/pkg/service/governance"
|
||||
imports "fonchain-fiee/pkg/service/import"
|
||||
"fonchain-fiee/pkg/service/lang"
|
||||
"fonchain-fiee/pkg/service/members"
|
||||
"fonchain-fiee/pkg/service/pressreleases"
|
||||
"fonchain-fiee/pkg/service/qr"
|
||||
"fonchain-fiee/pkg/service/redirect"
|
||||
"fonchain-fiee/pkg/service/reports"
|
||||
"fonchain-fiee/pkg/service/upload"
|
||||
"fonchain-fiee/pkg/service/version"
|
||||
"net/http"
|
||||
@ -57,6 +61,7 @@ func NewRouter() *gin.Engine {
|
||||
SecFilingRouter(privateGroup)
|
||||
app.MediaAppRouter(privateGroup)
|
||||
cronRouter(privateGroup)
|
||||
SupplierRouter(privateGroup)
|
||||
{
|
||||
v1.POST("version", version.Version) //版本号公共
|
||||
}
|
||||
@ -69,6 +74,7 @@ func NewRouter() *gin.Engine {
|
||||
privateGroup.POST("user/check/msg", account.CheckMsg) //校验验证码
|
||||
privateGroup.POST("generate/captcha", account.GenerateCaptcha) //生成滑块验证码
|
||||
privateGroup.POST("validate/captcha", account.ValidateCaptcha) //验证滑块验证码
|
||||
privateGroup.POST("check/register", account.CheckRegister) //校验是否注册
|
||||
acRoute := privateGroup.Group("/user")
|
||||
acRoute.Use(middleware.CheckLogin(service.AccountFieeProvider))
|
||||
{
|
||||
@ -76,6 +82,7 @@ func NewRouter() *gin.Engine {
|
||||
acRoute.POST("info", account.UserInfo) //用户详情
|
||||
acRoute.POST("update", account.UserUpdate) //用户更新
|
||||
acRoute.POST("ocr", account.CheckIdOcr) //
|
||||
acRoute.POST("write/off", account.WriteOff) //
|
||||
}
|
||||
webAcRouter := privateGroup.Group("/user")
|
||||
//webAcRouter.Use(middleware.CheckWebLogin(service.AccountProvider))
|
||||
@ -83,6 +90,7 @@ func NewRouter() *gin.Engine {
|
||||
{
|
||||
webAcRouter.POST("list", account.UserList) //用户列表
|
||||
webAcRouter.POST("approval", account.UserApproval) //实名审核
|
||||
webAcRouter.POST("admin-update", account.AdminUpdate) //更新用户信息
|
||||
webAcRouter.POST("excel/download", account.UserExcelDownload) //excel下载
|
||||
}
|
||||
}
|
||||
@ -177,11 +185,13 @@ func NewRouter() *gin.Engine {
|
||||
governanceRoute := v1.Group("/governance")
|
||||
governanceRouteLogin := governanceRoute.Group("", middleware.CheckWebLogin(service.AccountProvider))
|
||||
|
||||
governanceRoute.GET("/display", middleware.Cors(), governance.Display)
|
||||
governanceRoute.POST("/display", middleware.Cors(), governance.Display)
|
||||
governanceRouteLogin.POST("/list", governance.List)
|
||||
governanceRouteLogin.POST("", governance.Create)
|
||||
governanceRouteLogin.POST("/edit", governance.Edit)
|
||||
governanceRouteLogin.POST("/delete", governance.Delete)
|
||||
governanceRouteLogin.POST("/updataStatus", governance.UpdataStatus)
|
||||
governanceRouteLogin.POST("/getGovernanceInfo", governance.GetGovernanceInfo)
|
||||
|
||||
}
|
||||
{
|
||||
@ -191,12 +201,72 @@ func NewRouter() *gin.Engine {
|
||||
|
||||
pressreleasesRoute.POST("/display", middleware.Cors(), pressreleases.Display)
|
||||
pressreleasesRoute.GET("", middleware.Cors(), pressreleases.Get)
|
||||
pressreleasesRouteLogin.POST("/sortAndStatus", pressreleases.SortAndStatus)
|
||||
pressreleasesRouteLogin.POST("/info", pressreleases.Info)
|
||||
pressreleasesRouteLogin.POST("/list", pressreleases.List)
|
||||
pressreleasesRouteLogin.POST("", pressreleases.Create)
|
||||
pressreleasesRouteLogin.POST("/edit", pressreleases.Edit)
|
||||
pressreleasesRouteLogin.POST("/delete", pressreleases.Delete)
|
||||
|
||||
}
|
||||
{
|
||||
// 官网报告
|
||||
reportsRoute := v1.Group("/reports")
|
||||
reportsRouteLogin := reportsRoute.Group("", middleware.CheckWebLogin(service.AccountProvider))
|
||||
// 年度报告
|
||||
reportsRoute.POST("/annual/display", middleware.Cors(), reports.AnnualReportDisplay)
|
||||
reportsRouteLogin.POST("/annual/create", reports.AnnualReportCreate)
|
||||
reportsRouteLogin.POST("/annual/sortAndStatus", reports.AnnualReportSortAndStatus)
|
||||
reportsRouteLogin.POST("/annual/info", reports.AnnualReportInfo)
|
||||
reportsRouteLogin.POST("/annual/list", reports.AnnualReportList)
|
||||
reportsRouteLogin.POST("/annual/delete", reports.AnnualReportDelete)
|
||||
reportsRouteLogin.POST("/annual/edit", reports.AnnualReportEdit)
|
||||
// 季度报告
|
||||
reportsRoute.POST("/quarterly/display", middleware.Cors(), reports.QuarterlyReportDisplay)
|
||||
reportsRouteLogin.POST("/quarterly/create", reports.QuarterlyReportCreate)
|
||||
reportsRouteLogin.POST("/quarterly/sortAndStatus", reports.QuarterlyReportSortAndStatus)
|
||||
reportsRouteLogin.POST("/quarterly/info", reports.QuarterlyReportInfo)
|
||||
reportsRouteLogin.POST("/quarterly/list", reports.QuarterlyReportList)
|
||||
reportsRouteLogin.POST("/quarterly/delete", reports.QuarterlyReportDelete)
|
||||
reportsRouteLogin.POST("/quarterly/edit", reports.QuarterlyReportEdit)
|
||||
}
|
||||
{
|
||||
// 邮箱通知
|
||||
emailAlertsRoute := v1.Group("/emailalerts")
|
||||
emailAlertsRouteLogin := emailAlertsRoute.Group("", middleware.CheckWebLogin(service.AccountProvider))
|
||||
|
||||
emailAlertsRoute.POST("/submit", middleware.Cors(), emailAlert.EmailAlertSubmit)
|
||||
emailAlertsRouteLogin.POST("/list", emailAlert.GetEmailInformationList)
|
||||
}
|
||||
{
|
||||
// 成员管理
|
||||
membersRoute := v1.Group("/members")
|
||||
membersRouteLogin := membersRoute.Group("", middleware.CheckWebLogin(service.AccountProvider))
|
||||
// 成员部门信息管理
|
||||
membersRouteLogin.POST("/management/add", members.AddManagement)
|
||||
membersRouteLogin.POST("/management/list", members.GetManagementList)
|
||||
membersRouteLogin.POST("/management/info", members.GetManagementInfo)
|
||||
membersRouteLogin.POST("/management/delete", members.DeleteManagement)
|
||||
membersRouteLogin.POST("/management/updata", members.UpdataManagement)
|
||||
membersRouteLogin.POST("/management/edit", members.EditManagement)
|
||||
membersRoute.POST("/management/display", middleware.Cors(), members.DisplayManagement)
|
||||
// 董事会信息管理
|
||||
membersRouteLogin.POST("/boardofdirectors/add", members.AddBoardOfDirectors)
|
||||
membersRouteLogin.POST("/boardofdirectors/list", members.GetBoardOfDirectorsList)
|
||||
membersRouteLogin.POST("/boardofdirectors/info", members.GetBoardOfDirectorsInfo)
|
||||
membersRouteLogin.POST("/boardofdirectors/delete", members.DeleteBoardOfDirectors)
|
||||
membersRouteLogin.POST("/boardofdirectors/updata", members.UpdataBoardOfDirectors)
|
||||
membersRouteLogin.POST("/boardofdirectors/edit", members.EditBoardOfDirectors)
|
||||
membersRoute.POST("/boardofdirectors/display", middleware.Cors(), members.DisplayBoardOfDirectors)
|
||||
// 委员会任命管理
|
||||
membersRouteLogin.POST("/committeeappointments/add", members.AddCommitteeAppointments)
|
||||
membersRouteLogin.POST("/committeeappointments/list", members.GetCommitteeAppointmentsList)
|
||||
membersRouteLogin.POST("/committeeappointments/info", members.GetCommitteeAppointmentsInfo)
|
||||
membersRouteLogin.POST("/committeeappointments/delete", members.DeleteCommitteeAppointments)
|
||||
membersRouteLogin.POST("/committeeappointments/updata", members.UpdataCommitteeAppointments)
|
||||
membersRouteLogin.POST("/committeeappointments/edit", members.EditCommitteeAppointments)
|
||||
membersRoute.POST("/committeeappointments/display", middleware.Cors(), members.DisplayCommitteeAppointments)
|
||||
}
|
||||
{
|
||||
importRoute := v1.Group("/import")
|
||||
importRoute.Use(middleware.CheckWebLogin(service.AccountProvider))
|
||||
@ -215,6 +285,10 @@ func NewRouter() *gin.Engine {
|
||||
importRoute.GET("generate/photo/test2", imports.Test2)
|
||||
|
||||
}
|
||||
{
|
||||
//健康检测
|
||||
v1.GET("health", bundle.HealthCheck)
|
||||
}
|
||||
//静态文件
|
||||
r.StaticFS("/api/fiee/static", http.Dir("./runtime"))
|
||||
r.NoRoute(func(c *gin.Context) {
|
||||
|
||||
35
pkg/router/supplier.go
Normal file
35
pkg/router/supplier.go
Normal file
@ -0,0 +1,35 @@
|
||||
package router
|
||||
|
||||
import (
|
||||
"fonchain-fiee/pkg/middleware"
|
||||
"fonchain-fiee/pkg/service"
|
||||
"fonchain-fiee/pkg/service/supplier"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
)
|
||||
|
||||
func SupplierRouter(r *gin.RouterGroup) {
|
||||
|
||||
supplierRoute := r.Group("supplier/web")
|
||||
|
||||
supplierRoute.Use(middleware.CheckWebLogin(service.AccountProvider))
|
||||
{
|
||||
supplierRoute.POST("info", supplier.GetSupplier)
|
||||
supplierRoute.POST("create", supplier.CreateSupplier)
|
||||
supplierRoute.POST("update", supplier.UpdateSupplier)
|
||||
supplierRoute.POST("list", supplier.GetSupplierList)
|
||||
}
|
||||
{
|
||||
supplierRoute.POST("dictionary/create", supplier.CreateOrganizeDictionary)
|
||||
supplierRoute.POST("dictionary/list", supplier.GetOrganizeDictionaryList)
|
||||
}
|
||||
{
|
||||
supplierRoute.POST("country-region/list", supplier.GetCountryRegionList)
|
||||
}
|
||||
{
|
||||
supplierRoute.POST("import/record", supplier.CreateImportRecord)
|
||||
supplierRoute.POST("import/info", supplier.GetImportRecordInfo)
|
||||
supplierRoute.POST("export/list", supplier.GetExportList)
|
||||
}
|
||||
|
||||
}
|
||||
@ -126,10 +126,41 @@ func UserUpdate(c *gin.Context) {
|
||||
req.ID = user.ID
|
||||
req.Domain = user.Domain
|
||||
res, err := service.AccountFieeProvider.Update(c, &account.UpdateRequest{
|
||||
ID: req.ID,
|
||||
Domain: req.Domain,
|
||||
Language: req.Language,
|
||||
NickName: req.NickName,
|
||||
ID: req.ID,
|
||||
Domain: req.Domain,
|
||||
Language: req.Language,
|
||||
NickName: req.NickName,
|
||||
Email: req.Email,
|
||||
AbroadTel: req.AbroadTel,
|
||||
AbroadTelAreaCode: req.AbroadTelAreaCode,
|
||||
})
|
||||
if err != nil {
|
||||
service.Error(c, err)
|
||||
return
|
||||
}
|
||||
service.Success(c, res)
|
||||
return
|
||||
}
|
||||
|
||||
func AdminUpdate(c *gin.Context) {
|
||||
var req account.UpdateRequest
|
||||
if err := c.ShouldBindBodyWith(&req, binding.JSON); err != nil {
|
||||
service.Error(c, err)
|
||||
return
|
||||
}
|
||||
if req.ID == 0 {
|
||||
service.Error(c, errors.New("用户ID不能为空"))
|
||||
return
|
||||
}
|
||||
req.Domain = "app"
|
||||
res, err := service.AccountFieeProvider.Update(c, &account.UpdateRequest{
|
||||
ID: req.ID,
|
||||
Domain: req.Domain,
|
||||
//Language: req.Language,
|
||||
//NickName: req.NickName,
|
||||
Email: req.Email,
|
||||
AbroadTel: req.AbroadTel,
|
||||
AbroadTelAreaCode: req.AbroadTelAreaCode,
|
||||
})
|
||||
if err != nil {
|
||||
service.Error(c, err)
|
||||
@ -157,6 +188,26 @@ func CheckIdOcr(c *gin.Context) {
|
||||
return
|
||||
}
|
||||
|
||||
func WriteOff(c *gin.Context) {
|
||||
|
||||
var req account.WriteOffRequest
|
||||
if err := c.ShouldBindBodyWith(&req, binding.JSON); err != nil {
|
||||
service.Error(c, err)
|
||||
return
|
||||
}
|
||||
user := login.GetUserInfoFromC(c)
|
||||
|
||||
res, err := service.AccountFieeProvider.WriteOff(c, &account.WriteOffRequest{
|
||||
Id: user.ID,
|
||||
})
|
||||
if err != nil {
|
||||
service.Error(c, err)
|
||||
return
|
||||
}
|
||||
service.Success(c, res)
|
||||
return
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取身份证OCR识别结果
|
||||
* @param realIDImgA string - 身份证图片的URL地址
|
||||
@ -241,6 +292,11 @@ func SendMsg(c *gin.Context) {
|
||||
}
|
||||
req.Project = "fiee"
|
||||
req.TelNum = req.Zone + req.TelNum
|
||||
//todo 审核使用账号
|
||||
if req.TelNum == "8618888888888" {
|
||||
service.Success1(c, "发送成功", &account.SendMsgStatusResponse{})
|
||||
return
|
||||
}
|
||||
if req.Zone != e.ZoneCn && req.Zone != "" {
|
||||
// ============================== redis检查ip开始
|
||||
ip := c.ClientIP()
|
||||
@ -285,7 +341,6 @@ func SendMsg(c *gin.Context) {
|
||||
//cache.RedisClient.Incr(daykey)
|
||||
//cache.RedisClient.Incr(minutekey)
|
||||
// ============================== redis检查ip结束
|
||||
|
||||
tempReq := &account.SendNationMsgRequest{
|
||||
Domain: req.Domain,
|
||||
TelNum: req.TelNum,
|
||||
@ -409,6 +464,31 @@ func ValidateCaptcha(c *gin.Context) {
|
||||
service.Success(c, res)
|
||||
|
||||
}
|
||||
func CheckRegister(c *gin.Context) {
|
||||
type CheckRegisterRes struct {
|
||||
IsRegister bool `json:"is_register"`
|
||||
}
|
||||
req := account.UserByTelRequest{}
|
||||
req.Domain = "app"
|
||||
if err := c.ShouldBindBodyWith(&req, binding.JSON); err != nil {
|
||||
service.Error(c, err)
|
||||
return
|
||||
}
|
||||
|
||||
data, err := service.AccountFieeProvider.UserByTel(context.Background(), &req)
|
||||
if err != nil {
|
||||
service.Error(c, err)
|
||||
return
|
||||
}
|
||||
var res CheckRegisterRes
|
||||
if data.Id == 0 {
|
||||
res.IsRegister = false
|
||||
} else {
|
||||
res.IsRegister = true
|
||||
}
|
||||
service.Success(c, res)
|
||||
return
|
||||
}
|
||||
func UserLogout(c *gin.Context) {
|
||||
req := account.DecryptJwtRequest{}
|
||||
req.Token = c.GetHeader(e.Authorization)
|
||||
@ -428,6 +508,16 @@ func UserRegister(c *gin.Context) {
|
||||
return
|
||||
}
|
||||
req.Domain = "app"
|
||||
if req.InviterCode != "" {
|
||||
codeRes, err := service.AccountFieeProvider.GetInviterInfo(context.Background(), &account.InviterInfoRequest{
|
||||
Code: req.InviterCode,
|
||||
})
|
||||
if err != nil || codeRes.Id == 0 {
|
||||
service.Error(c, errors.New("邀请码错误"))
|
||||
return
|
||||
}
|
||||
req.InviterID = codeRes.Id
|
||||
}
|
||||
res, err := service.AccountFieeProvider.Register(context.Background(), &req)
|
||||
if err != nil {
|
||||
service.Error(c, err)
|
||||
@ -443,6 +533,10 @@ func UserRegister(c *gin.Context) {
|
||||
service.Error(c, err)
|
||||
return
|
||||
}
|
||||
if tokenInfo.AccountInfo.WriteOff == true {
|
||||
service.Error(c, errors.New("此账号已注销,无法登录"))
|
||||
return
|
||||
}
|
||||
res.Token = tokenInfo.Token
|
||||
service.Success(c, res)
|
||||
return
|
||||
|
||||
@ -630,13 +630,13 @@ func (a *ChatHandler) UserSwitchAutoReplyStatus(c *gin.Context) {
|
||||
}
|
||||
service.Success(c, resp)
|
||||
}
|
||||
|
||||
func (a *ChatHandler) SetSwitchAutoReplyStatus(c *gin.Context) {
|
||||
chatUser, code := jwt.ParseToChatUser(c)
|
||||
if code != 0 {
|
||||
service.ErrWithCode(c, code)
|
||||
return
|
||||
}
|
||||
sessionId := a.cache.GetUserSession(chatUser.ID)
|
||||
var req dto.UserSwitchAutoReplyReq
|
||||
if err := c.ShouldBindJSON(&req); err != nil {
|
||||
service.Error(c, err)
|
||||
@ -652,9 +652,18 @@ func (a *ChatHandler) SetSwitchAutoReplyStatus(c *gin.Context) {
|
||||
} else {
|
||||
msg.Text = "已进入人工,不会接收自动消息"
|
||||
}
|
||||
err := logic.NewMessage(c, &a.cache, chatUser, dto.NewMessageRequest{
|
||||
sender := &accountFiee.ChatUserData{
|
||||
ID: a.robot.Info.ID,
|
||||
NickName: a.robot.Name,
|
||||
Account: a.robot.Info.Account,
|
||||
Role: 3,
|
||||
Origin: a.robot.Info.Origin,
|
||||
OriginId: a.robot.Info.OriginId,
|
||||
Avatar: a.robot.Info.Avatar,
|
||||
}
|
||||
err := logic.NewMessage(c, &a.cache, sender, dto.NewMessageRequest{
|
||||
Robot: true,
|
||||
SessionId: fmt.Sprintf("%d", chatUser.ID),
|
||||
SessionId: sessionId,
|
||||
Message: msg,
|
||||
})
|
||||
if err != nil {
|
||||
|
||||
@ -105,6 +105,7 @@ func NewMessage(ctx context.Context, cache *chatCache.ChatCache, sender *account
|
||||
notice.BuildMessage(resp.Data)
|
||||
fmt.Printf("ws消息提醒:%+v\n", notice)
|
||||
_, err = consts.ChatRoom.SendSessionMessage(sender, request.SessionId, ws.NewChatMsgType, notice)
|
||||
fmt.Println("消息提醒结果:", err)
|
||||
if err != nil {
|
||||
log.Print("发送新消息通知失败", zap.Error(err), zap.Any("notice", notice))
|
||||
}
|
||||
|
||||
@ -197,6 +197,18 @@ func WorkConfirm(c *gin.Context) { // 确认作品并扣除余量
|
||||
service.Error(c, errors.New(common.GetWorkDetailFailed))
|
||||
return
|
||||
}
|
||||
|
||||
if balanceInfoRes.BundleStatus == common.BundleExpired {
|
||||
_, err = service.CastProvider.UpdateStatus(c, &cast.UpdateStatusReq{
|
||||
WorkAction: cast.WorkActionENUM_CONFIRM,
|
||||
WorkUuid: req.WorkUuid,
|
||||
ConfirmRemark: req.ConfirmRemark,
|
||||
ConfirmStatus: 3,
|
||||
})
|
||||
service.Error(c, errors.New("套餐已过期"))
|
||||
return
|
||||
}
|
||||
|
||||
if wordInfoRes.WorkStatus != 4 {
|
||||
service.Error(c, errors.New("作品不是待确认状态"))
|
||||
return
|
||||
@ -209,6 +221,12 @@ func WorkConfirm(c *gin.Context) { // 确认作品并扣除余量
|
||||
case 1:
|
||||
{
|
||||
if balanceInfoRes.ImageExtendConsumptionNumber >= balanceInfoRes.ImageExtendNumber { // 图文余量不足
|
||||
_, err = service.CastProvider.UpdateStatus(c, &cast.UpdateStatusReq{
|
||||
WorkAction: cast.WorkActionENUM_CONFIRM,
|
||||
WorkUuid: req.WorkUuid,
|
||||
ConfirmRemark: req.ConfirmRemark,
|
||||
ConfirmStatus: 3,
|
||||
})
|
||||
service.Error(c, errors.New("图文余量不足"))
|
||||
return
|
||||
}
|
||||
@ -217,6 +235,12 @@ func WorkConfirm(c *gin.Context) { // 确认作品并扣除余量
|
||||
case 2:
|
||||
{
|
||||
if balanceInfoRes.VideoExtendConsumptionNumber >= balanceInfoRes.VideoExtendNumber { // 视频余量不足
|
||||
_, err = service.CastProvider.UpdateStatus(c, &cast.UpdateStatusReq{
|
||||
WorkAction: cast.WorkActionENUM_CONFIRM,
|
||||
WorkUuid: req.WorkUuid,
|
||||
ConfirmRemark: req.ConfirmRemark,
|
||||
ConfirmStatus: 3,
|
||||
})
|
||||
service.Error(c, errors.New("视频余量不足"))
|
||||
return
|
||||
}
|
||||
@ -428,6 +452,7 @@ func writeToExcel(filename string, items []*bundle.BundleBalanceExportItem) erro
|
||||
"所属月份", "用户编号", "姓名", "手机号", "购买套餐时间",
|
||||
"套餐金额", "增值服务金额", "支付金额", "币种", "手续费",
|
||||
"套餐视频总数", "增值服务视频总数", "套餐视频单价", "增值视频单价",
|
||||
"当月消耗套餐金额($)", "当月消耗增值金额($)",
|
||||
"套餐账号总数", "增值账号总数", "套餐账号使用数", "增值账号使用数",
|
||||
"当前可用套餐视频数", "当前可用增值视频数", "当前已用套餐视频数", "当前已用增值视频数", "当前作废套餐视频数", "当前作废增值视频数", "当月新增可用套餐视频数", "当月新增可用增值视频数", "当月使用套餐视频数", "当月使用增值视频数", "当月作废套餐视频数", "当月作废增值视频数",
|
||||
"当前可用套餐图文数", "当前可用增值图文数", "当前已用套餐图文数", "当前已用增值图文数", "当前作废套餐图文数", "当前作废增值图文数", "当月新增可用套餐图文数", "当月新增可用增值图文数", "当月使用套餐图文数", "当月使用增值图文数", "当月作废套餐图文数", "当月作废增值图文数",
|
||||
@ -470,64 +495,76 @@ func writeToExcel(filename string, items []*bundle.BundleBalanceExportItem) erro
|
||||
_ = write(13, fmt.Sprintf("%.2f", it.BundleVideoUnitPrice))
|
||||
_ = write(14, fmt.Sprintf("%.2f", it.IncreaseVideoUnitPrice))
|
||||
|
||||
// 当月视频消耗金额($)
|
||||
monthlyBundleVideoConsumptionPrice, err := strconv.ParseFloat(it.MonthlyBundleVideoConsumptionPrice, 64)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
monthlyIncreaseVideoConsumptionPrice, err := strconv.ParseFloat(it.MonthlyIncreaseVideoConsumptionPrice, 64)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
_ = write(15, fmt.Sprintf("%.2f", monthlyBundleVideoConsumptionPrice))
|
||||
_ = write(16, fmt.Sprintf("%.2f", monthlyIncreaseVideoConsumptionPrice))
|
||||
|
||||
// 账号类
|
||||
_ = write(15, int(it.BundleAccountNumber))
|
||||
_ = write(16, int(it.IncreaseAccountNumber))
|
||||
_ = write(17, int(it.BundleAccountConsumptionNumber))
|
||||
_ = write(18, int(it.IncreaseAccountConsumptionNumber))
|
||||
_ = write(17, int(it.BundleAccountNumber))
|
||||
_ = write(18, int(it.IncreaseAccountNumber))
|
||||
_ = write(19, int(it.BundleAccountConsumptionNumber))
|
||||
_ = write(20, int(it.IncreaseAccountConsumptionNumber))
|
||||
|
||||
// 视频类
|
||||
_ = write(19, int(it.MonthlyBundleVideoNumber))
|
||||
_ = write(20, int(it.MonthlyIncreaseVideoNumber))
|
||||
_ = write(21, int(it.BundleVideoConsumptionNumber))
|
||||
_ = write(22, int(it.IncreaseVideoConsumptionNumber))
|
||||
_ = write(23, int(it.InvalidBundleVideoNumber))
|
||||
_ = write(24, int(it.InvalidIncreaseVideoNumber))
|
||||
_ = write(25, int(it.MonthlyNewBundleVideoNumber))
|
||||
_ = write(26, int(it.MonthlyNewIncreaseVideoNumber))
|
||||
_ = write(27, int(it.MonthlyBundleVideoConsumptionNumber))
|
||||
_ = write(28, int(it.MonthlyIncreaseVideoConsumptionNumber))
|
||||
_ = write(29, int(it.MonthlyInvalidBundleVideoNumber))
|
||||
_ = write(30, int(it.MonthlyInvalidIncreaseVideoNumber))
|
||||
_ = write(21, int(it.MonthlyBundleVideoNumber))
|
||||
_ = write(22, int(it.MonthlyIncreaseVideoNumber))
|
||||
_ = write(23, int(it.BundleVideoConsumptionNumber))
|
||||
_ = write(24, int(it.IncreaseVideoConsumptionNumber))
|
||||
_ = write(25, int(it.InvalidBundleVideoNumber))
|
||||
_ = write(26, int(it.InvalidIncreaseVideoNumber))
|
||||
_ = write(27, int(it.MonthlyNewBundleVideoNumber))
|
||||
_ = write(28, int(it.MonthlyNewIncreaseVideoNumber))
|
||||
_ = write(29, int(it.MonthlyBundleVideoConsumptionNumber))
|
||||
_ = write(30, int(it.MonthlyIncreaseVideoConsumptionNumber))
|
||||
_ = write(31, int(it.MonthlyInvalidBundleVideoNumber))
|
||||
_ = write(32, int(it.MonthlyInvalidIncreaseVideoNumber))
|
||||
|
||||
// 图文类
|
||||
_ = write(31, int(it.MonthlyBundleImageNumber))
|
||||
_ = write(32, int(it.MonthlyIncreaseImageNumber))
|
||||
_ = write(33, int(it.BundleImageConsumptionNumber))
|
||||
_ = write(34, int(it.IncreaseImageConsumptionNumber))
|
||||
_ = write(35, int(it.InvalidBundleImageNumber))
|
||||
_ = write(36, int(it.InvalidIncreaseImageNumber))
|
||||
_ = write(37, int(it.MonthlyNewBundleImageNumber))
|
||||
_ = write(38, int(it.MonthlyNewIncreaseImageNumber))
|
||||
_ = write(39, int(it.MonthlyBundleImageConsumptionNumber))
|
||||
_ = write(40, int(it.MonthlyIncreaseImageConsumptionNumber))
|
||||
_ = write(41, int(it.MonthlyInvalidBundleImageNumber))
|
||||
_ = write(42, int(it.MonthlyInvalidIncreaseImageNumber))
|
||||
_ = write(33, int(it.MonthlyBundleImageNumber))
|
||||
_ = write(34, int(it.MonthlyIncreaseImageNumber))
|
||||
_ = write(35, int(it.BundleImageConsumptionNumber))
|
||||
_ = write(36, int(it.IncreaseImageConsumptionNumber))
|
||||
_ = write(37, int(it.InvalidBundleImageNumber))
|
||||
_ = write(38, int(it.InvalidIncreaseImageNumber))
|
||||
_ = write(39, int(it.MonthlyNewBundleImageNumber))
|
||||
_ = write(40, int(it.MonthlyNewIncreaseImageNumber))
|
||||
_ = write(41, int(it.MonthlyBundleImageConsumptionNumber))
|
||||
_ = write(42, int(it.MonthlyIncreaseImageConsumptionNumber))
|
||||
_ = write(43, int(it.MonthlyInvalidBundleImageNumber))
|
||||
_ = write(44, int(it.MonthlyInvalidIncreaseImageNumber))
|
||||
|
||||
// 数据分析类
|
||||
_ = write(43, int(it.MonthlyBundleDataAnalysisNumber))
|
||||
_ = write(44, int(it.MonthlyIncreaseDataAnalysisNumber))
|
||||
_ = write(45, int(it.BundleDataAnalysisConsumptionNumber))
|
||||
_ = write(46, int(it.IncreaseDataAnalysisConsumptionNumber))
|
||||
_ = write(47, int(it.InvalidBundleDataAnalysisNumber))
|
||||
_ = write(48, int(it.InvalidIncreaseDataAnalysisNumber))
|
||||
_ = write(49, int(it.MonthlyNewBundleDataAnalysisNumber))
|
||||
_ = write(50, int(it.MonthlyNewIncreaseDataAnalysisNumber))
|
||||
_ = write(51, int(it.MonthlyBundleDataAnalysisConsumptionNumber))
|
||||
_ = write(52, int(it.MonthlyIncreaseDataAnalysisConsumptionNumber))
|
||||
_ = write(53, int(it.MonthlyInvalidBundleDataAnalysisNumber))
|
||||
_ = write(54, int(it.MonthlyInvalidIncreaseDataAnalysisNumber))
|
||||
_ = write(45, int(it.MonthlyBundleDataAnalysisNumber))
|
||||
_ = write(46, int(it.MonthlyIncreaseDataAnalysisNumber))
|
||||
_ = write(47, int(it.BundleDataAnalysisConsumptionNumber))
|
||||
_ = write(48, int(it.IncreaseDataAnalysisConsumptionNumber))
|
||||
_ = write(49, int(it.InvalidBundleDataAnalysisNumber))
|
||||
_ = write(50, int(it.InvalidIncreaseDataAnalysisNumber))
|
||||
_ = write(51, int(it.MonthlyNewBundleDataAnalysisNumber))
|
||||
_ = write(52, int(it.MonthlyNewIncreaseDataAnalysisNumber))
|
||||
_ = write(53, int(it.MonthlyBundleDataAnalysisConsumptionNumber))
|
||||
_ = write(54, int(it.MonthlyIncreaseDataAnalysisConsumptionNumber))
|
||||
_ = write(55, int(it.MonthlyInvalidBundleDataAnalysisNumber))
|
||||
_ = write(56, int(it.MonthlyInvalidIncreaseDataAnalysisNumber))
|
||||
|
||||
// 手动扩展类
|
||||
_ = write(55, int(it.MonthlyNewManualAccountNumber))
|
||||
_ = write(56, int(it.MonthlyNewManualVideoNumber))
|
||||
_ = write(57, int(it.MonthlyNewManualImageNumber))
|
||||
_ = write(58, int(it.MonthlyNewManualDataAnalysisNumber))
|
||||
_ = write(59, int(it.MonthlyNewDurationNumber))
|
||||
_ = write(60, int(it.MonthlyManualAccountConsumptionNumber))
|
||||
_ = write(61, int(it.MonthlyManualVideoConsumptionNumber))
|
||||
_ = write(62, int(it.MonthlyManualImageConsumptionNumber))
|
||||
_ = write(63, int(it.MonthlyManualDataAnalysisConsumptionNumber))
|
||||
_ = write(57, int(it.MonthlyNewManualAccountNumber))
|
||||
_ = write(58, int(it.MonthlyNewManualVideoNumber))
|
||||
_ = write(59, int(it.MonthlyNewManualImageNumber))
|
||||
_ = write(60, int(it.MonthlyNewManualDataAnalysisNumber))
|
||||
_ = write(61, int(it.MonthlyNewDurationNumber))
|
||||
_ = write(62, int(it.MonthlyManualAccountConsumptionNumber))
|
||||
_ = write(63, int(it.MonthlyManualVideoConsumptionNumber))
|
||||
_ = write(64, int(it.MonthlyManualImageConsumptionNumber))
|
||||
_ = write(65, int(it.MonthlyManualDataAnalysisConsumptionNumber))
|
||||
|
||||
}
|
||||
|
||||
@ -547,7 +584,7 @@ func GetAccountBundleBalance(c *gin.Context) {
|
||||
service.Error(c, err)
|
||||
return
|
||||
}
|
||||
req.Month = time.Now().Format("2006-01")
|
||||
req.Month = []string{time.Now().Format("2006-01")}
|
||||
res, err := service.BundleProvider.GetBundleBalanceList(context.Background(), &req)
|
||||
if err != nil {
|
||||
service.Error(c, errors.New(common.GetBundleBalanceListFailed))
|
||||
|
||||
@ -17,7 +17,6 @@ import (
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
"github.com/duke-git/lancet/v2/datetime"
|
||||
"github.com/shopspring/decimal"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
@ -93,9 +92,30 @@ func MetricsBundlePurchaseExport(ctx *gin.Context) {
|
||||
sumFee := decimal.Zero
|
||||
|
||||
for _, i := range data {
|
||||
sumPayment = sumPayment.Add(decimal.NewFromFloat(float64(i.PaymentAmount)))
|
||||
sumFinal = sumFinal.Add(decimal.NewFromFloat(float64(i.FinalAmount)))
|
||||
sumFee = sumFee.Add(decimal.NewFromFloat(float64(i.FeeAmount)))
|
||||
|
||||
s := fmt.Sprintf("%.2f", i.PaymentAmount)
|
||||
d, err := decimal.NewFromString(s)
|
||||
if err != nil {
|
||||
service.Error(ctx, errors.New(common.MetricsBundlePurchaseExportFailed))
|
||||
return
|
||||
}
|
||||
sumPayment = sumPayment.Add(d)
|
||||
|
||||
s = fmt.Sprintf("%.2f", i.FinalAmount)
|
||||
d, err = decimal.NewFromString(s)
|
||||
if err != nil {
|
||||
service.Error(ctx, errors.New(common.MetricsBundlePurchaseExportFailed))
|
||||
return
|
||||
}
|
||||
sumFinal = sumFinal.Add(d)
|
||||
|
||||
s = fmt.Sprintf("%.2f", i.FeeAmount)
|
||||
d, err = decimal.NewFromString(s)
|
||||
if err != nil {
|
||||
service.Error(ctx, errors.New(common.MetricsBundlePurchaseExportFailed))
|
||||
return
|
||||
}
|
||||
sumFee = sumFee.Add(d)
|
||||
}
|
||||
|
||||
f.SetCellValue(sheet, fmt.Sprintf("A%d", endRow+1), "合计支付金额(美元)")
|
||||
@ -171,7 +191,7 @@ func MetricsArtistAccountExport(ctx *gin.Context) {
|
||||
utils.CheckDirPath("./runtime/"+fmt.Sprint(userInfo.ID), true)
|
||||
sheet := "Sheet1"
|
||||
f := excelize.NewFile()
|
||||
headers := []string{"序号", "艺人", "用户编号", "DM账号名", "DM账号状态", "Instagram账号名", "Instagram账号状态", "TikTok账号名", "TikTok账号状态"}
|
||||
headers := []string{"序号", "艺人", "用户编号", "DM账号名", "DM账号状态", "Instagram账号名", "Instagram账号状态", "TikTok账号名", "TikTok账号状态", "Bluesky账号名", "Bluesky账号状态", "Youtube账号名", "Youtube账号状态"}
|
||||
for i, h := range headers {
|
||||
col, _ := excelize.ColumnNumberToName(i + 1)
|
||||
cell := col + "1"
|
||||
@ -206,6 +226,10 @@ func MetricsArtistAccountExport(ctx *gin.Context) {
|
||||
_ = write(7, authStatus[it.InsAuthStatus])
|
||||
_ = write(8, it.TiktokNickname)
|
||||
_ = write(9, authStatus[it.TiktokAuthStatus])
|
||||
_ = write(10, it.BlueskyNickname)
|
||||
_ = write(11, authStatus[it.BlueskyAuthStatus])
|
||||
_ = write(12, it.YoutubeNickname)
|
||||
_ = write(13, authStatus[it.YoutubeAuthStatus])
|
||||
}
|
||||
// 可选:设置列宽,使表格更美观
|
||||
_ = f.SetColWidth(sheet, "A", "AZ", 18)
|
||||
@ -232,13 +256,11 @@ func MetricsVideoSubmitExport(ctx *gin.Context) {
|
||||
return
|
||||
}
|
||||
newCtx := serviceCast.NewCtxWithUserInfo(ctx)
|
||||
t, err := time.Parse("2006-01", req.Month)
|
||||
if err == nil {
|
||||
if len(req.Month) > 0 {
|
||||
resp, err = service.CastProvider.WorkList(newCtx, &cast.WorkListReq{
|
||||
SubmitStartTime: datetime.BeginOfMonth(t).Format(time.DateTime),
|
||||
SubmitEndTime: datetime.EndOfMonth(t).Format(time.DateTime),
|
||||
Page: 1,
|
||||
PageSize: 99999,
|
||||
SubmitTimeMonths: req.Month,
|
||||
Page: 1,
|
||||
PageSize: 99999,
|
||||
})
|
||||
fmt.Printf("resp.Count: %v\n", resp.Count)
|
||||
} else {
|
||||
|
||||
@ -246,10 +246,16 @@ func CreateBundleOrderSignature(c *gin.Context) {
|
||||
service.Error(c, err)
|
||||
return
|
||||
}
|
||||
|
||||
if userInfo.InviterID != 0 && logic.CheckUserFirstOrder(userInfo.ID) {
|
||||
req.InviterId = userInfo.InviterID
|
||||
}
|
||||
// 组装订单信息
|
||||
req = logic.BuildOrderRequest(req, userInfo, bundleDetail, addRecords, addTotalPrice, lastContractNo, signContract)
|
||||
|
||||
// 校验发布平台
|
||||
if len(req.PlatformIds) == 0 {
|
||||
req.PlatformIds = []uint32{1, 4, 5}
|
||||
}
|
||||
// 创建订单
|
||||
res, err := service.BundleProvider.CreateOrderRecord(context.Background(), &req)
|
||||
if err != nil {
|
||||
@ -514,7 +520,6 @@ func OrderRecordsListV2(c *gin.Context) {
|
||||
for id := range userIdSet {
|
||||
userIds = append(userIds, id)
|
||||
}
|
||||
|
||||
userListResp, err := service.AccountFieeProvider.UserList(context.Background(), &accountFiee.UserListRequest{
|
||||
Ids: userIds,
|
||||
Domain: "app",
|
||||
@ -536,6 +541,10 @@ func OrderRecordsListV2(c *gin.Context) {
|
||||
item.CustomerName = u.Name
|
||||
item.TelNum = u.TelNum
|
||||
item.SubNum = u.SubNum
|
||||
if item.InviterId != 0 {
|
||||
item.InviterCode = u.InviterCode
|
||||
item.InviterName = u.InviterName
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -618,6 +627,10 @@ func OrderRecordsListDownload(c *gin.Context) {
|
||||
item.CustomerName = u.Name
|
||||
item.TelNum = u.TelNum
|
||||
item.SubNum = u.SubNum
|
||||
if item.InviterId != 0 {
|
||||
item.InviterCode = u.InviterCode
|
||||
item.InviterName = u.InviterName
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -642,7 +655,7 @@ func exportExcel(orderList []*bundle.OrderBundleRecordInfo) (*excelize.File, err
|
||||
|
||||
headers := []string{
|
||||
"套餐订单号", "套餐类型", "套餐付款状态", "艺人手机号", "用户编号", "艺人", "套餐订单创建时间", "套餐支付时间", "套餐金额",
|
||||
"增值服务订单号", "增值税服务金额", "支付金额", "币种", "手续费", "增值订单创建时间", "增值付款状态",
|
||||
"增值服务订单号", "增值税服务金额", "支付金额", "币种", "手续费", "增值订单创建时间", "增值付款状态", "邀请码", "邀请码所属人",
|
||||
}
|
||||
for i, h := range headers {
|
||||
cell := fmt.Sprintf("%s%d", string(rune('A'+i)), 1)
|
||||
@ -676,6 +689,8 @@ func exportExcel(orderList []*bundle.OrderBundleRecordInfo) (*excelize.File, err
|
||||
f.SetCellValue(sheetName, fmt.Sprintf("G%d", rowIndex), bundleInfo.BundleCreateAt)
|
||||
f.SetCellValue(sheetName, fmt.Sprintf("H%d", rowIndex), bundleInfo.PayTime)
|
||||
f.SetCellValue(sheetName, fmt.Sprintf("I%d", rowIndex), bundleInfo.Amount)
|
||||
f.SetCellValue(sheetName, fmt.Sprintf("Q%d", rowIndex), bundleInfo.InviterCode)
|
||||
f.SetCellValue(sheetName, fmt.Sprintf("R%d", rowIndex), bundleInfo.InviterName)
|
||||
|
||||
if addCount > 0 {
|
||||
for i, add := range bundleInfo.AddBundleInfo {
|
||||
|
||||
@ -105,6 +105,8 @@ const (
|
||||
GetWorkDetailFailed = "获取作品详情失败"
|
||||
)
|
||||
|
||||
//用户套餐状态
|
||||
|
||||
// 余量
|
||||
const (
|
||||
BundleExtendFailed = "套餐扩展失败"
|
||||
@ -122,9 +124,10 @@ const (
|
||||
InsufficientBalance = "余量不足"
|
||||
)
|
||||
|
||||
//用户套餐状态
|
||||
const (
|
||||
BundleExpired = 1
|
||||
BundleNotExpired = 0
|
||||
BundleExpired = 1 //已过期
|
||||
BundleNotExpired = 0 //未过期
|
||||
)
|
||||
|
||||
// 数据指标
|
||||
|
||||
180
pkg/service/bundle/healthCheck.go
Normal file
180
pkg/service/bundle/healthCheck.go
Normal file
@ -0,0 +1,180 @@
|
||||
package bundle
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fonchain-fiee/api/bundle"
|
||||
"fonchain-fiee/api/cast"
|
||||
"fonchain-fiee/api/files"
|
||||
"fonchain-fiee/api/governance"
|
||||
"fonchain-fiee/api/order"
|
||||
"fonchain-fiee/api/payment"
|
||||
"fonchain-fiee/pkg/cache"
|
||||
"fonchain-fiee/pkg/service"
|
||||
"net/http"
|
||||
"time"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
)
|
||||
|
||||
// HealthCheck 健康检测接口
|
||||
func HealthCheck(c *gin.Context) {
|
||||
healthStatus := gin.H{
|
||||
"status": "ok",
|
||||
"timestamp": time.Now().Unix(),
|
||||
"checks": make(map[string]interface{}),
|
||||
}
|
||||
|
||||
// 检查 Redis 连接
|
||||
redisStatus := "ok"
|
||||
redisErr := ""
|
||||
if cache.RedisClient != nil {
|
||||
_, cancel := context.WithTimeout(context.Background(), 2*time.Second)
|
||||
defer cancel()
|
||||
_, err := cache.RedisClient.Ping().Result()
|
||||
if err != nil {
|
||||
redisStatus = "failed"
|
||||
redisErr = err.Error()
|
||||
}
|
||||
} else {
|
||||
redisStatus = "failed"
|
||||
redisErr = "Redis client is nil"
|
||||
}
|
||||
healthStatus["checks"].(map[string]interface{})["redis"] = gin.H{
|
||||
"status": redisStatus,
|
||||
"error": redisErr,
|
||||
}
|
||||
|
||||
// 检查微服务连接(调用一个简单的服务方法)
|
||||
serviceStatus := "ok"
|
||||
serviceErr := ""
|
||||
ctx, cancel := context.WithTimeout(context.Background(), 3*time.Second)
|
||||
defer cancel()
|
||||
|
||||
// 调用 BundleProvider 的简单方法进行健康检测
|
||||
_, err := service.BundleProvider.GetBundleBalanceByUserId(ctx, &bundle.GetBundleBalanceByUserIdReq{
|
||||
UserId: 0, // 使用一个不存在的用户ID,只检测服务连通性
|
||||
})
|
||||
if err != nil {
|
||||
// 检查是否是超时或连接错误
|
||||
if ctx.Err() == context.DeadlineExceeded {
|
||||
serviceStatus = "Bundle Service timeout"
|
||||
serviceErr = "Service timeout"
|
||||
} else {
|
||||
// 其他错误(如业务错误)认为服务是可用的
|
||||
serviceStatus = "ok"
|
||||
serviceErr = ""
|
||||
}
|
||||
}
|
||||
healthStatus["checks"].(map[string]interface{})["bundleService"] = gin.H{
|
||||
"status": serviceStatus,
|
||||
"error": serviceErr,
|
||||
}
|
||||
//调用 OrderProvider 的简单方法进行健康检测
|
||||
_, err = service.OrderProvider.GetOrder(ctx, &order.CommonRequest{
|
||||
ID: 0,
|
||||
Domain: "",
|
||||
SeriesUid: "", // 使用一个不存在的订单ID,只检测服务连通性
|
||||
})
|
||||
if err != nil {
|
||||
if ctx.Err() == context.DeadlineExceeded {
|
||||
serviceStatus = "Order Service timeout"
|
||||
serviceErr = "Service timeout"
|
||||
} else {
|
||||
// 其他错误(如业务错误)认为服务是可用的
|
||||
serviceStatus = "ok"
|
||||
serviceErr = ""
|
||||
}
|
||||
}
|
||||
healthStatus["checks"].(map[string]interface{})["orderService"] = gin.H{
|
||||
"status": serviceStatus,
|
||||
"error": serviceErr,
|
||||
}
|
||||
//调用 FilesProvider 的简单方法进行健康检测
|
||||
_, err = service.FilesProvider.List(ctx, &files.FileListReq{
|
||||
Path: "/",
|
||||
UserSpacePath: "/fiee",
|
||||
Page: 1,
|
||||
PageSize: 50,
|
||||
})
|
||||
if err != nil {
|
||||
if ctx.Err() == context.DeadlineExceeded {
|
||||
serviceStatus = "Filesbrowser Service timeout"
|
||||
serviceErr = "Service timeout"
|
||||
} else {
|
||||
// 其他错误(如业务错误)认为服务是可用的
|
||||
serviceStatus = "ok"
|
||||
serviceErr = ""
|
||||
}
|
||||
}
|
||||
healthStatus["checks"].(map[string]interface{})["filesbrowserService"] = gin.H{
|
||||
"status": serviceStatus,
|
||||
"error": serviceErr,
|
||||
}
|
||||
//调用 PaymentProvider 的简单方法进行健康检测
|
||||
_, err = service.PaymentProvider.QueryPayByOutTradeNo(ctx, &payment.PayQueryRequest{
|
||||
PayType: "2",
|
||||
OutTradeNo: "1234567890",
|
||||
})
|
||||
if err != nil {
|
||||
if ctx.Err() == context.DeadlineExceeded {
|
||||
serviceStatus = "Payment Service timeout"
|
||||
serviceErr = "Service timeout"
|
||||
} else {
|
||||
// 其他错误(如业务错误)认为服务是可用的
|
||||
serviceStatus = "ok"
|
||||
serviceErr = ""
|
||||
}
|
||||
}
|
||||
healthStatus["checks"].(map[string]interface{})["paymentService"] = gin.H{
|
||||
"status": serviceStatus,
|
||||
"error": serviceErr,
|
||||
}
|
||||
|
||||
//调用 CastProvider 的简单方法进行健康检测
|
||||
_, err = service.CastProvider.WorkList(ctx, &cast.WorkListReq{
|
||||
Page: 1,
|
||||
PageSize: 10,
|
||||
})
|
||||
if err != nil {
|
||||
if ctx.Err() == context.DeadlineExceeded {
|
||||
serviceStatus = "Cast Service timeout"
|
||||
serviceErr = "Service timeout"
|
||||
} else {
|
||||
// 其他错误(如业务错误)认为服务是可用的
|
||||
serviceStatus = "ok"
|
||||
serviceErr = ""
|
||||
}
|
||||
}
|
||||
healthStatus["checks"].(map[string]interface{})["castService"] = gin.H{
|
||||
"status": serviceStatus,
|
||||
"error": serviceErr,
|
||||
}
|
||||
//调用 GovernanceProvider 的简单方法进行健康检测
|
||||
_, err = service.GovernanceProvider.List(ctx, &governance.ListReq{
|
||||
Page: 1,
|
||||
PageSize: 10,
|
||||
})
|
||||
if err != nil {
|
||||
if ctx.Err() == context.DeadlineExceeded {
|
||||
serviceStatus = "Document Service timeout"
|
||||
serviceErr = "Service timeout"
|
||||
} else {
|
||||
// 其他错误(如业务错误)认为服务是可用的
|
||||
serviceStatus = "ok"
|
||||
serviceErr = ""
|
||||
}
|
||||
}
|
||||
healthStatus["checks"].(map[string]interface{})["documentService"] = gin.H{
|
||||
"status": serviceStatus,
|
||||
"error": serviceErr,
|
||||
}
|
||||
|
||||
// 如果所有检查都通过,返回 200,否则返回 503
|
||||
httpStatus := http.StatusOK
|
||||
if redisStatus != "ok" || serviceStatus != "ok" {
|
||||
httpStatus = http.StatusServiceUnavailable
|
||||
healthStatus["status"] = "degraded"
|
||||
}
|
||||
|
||||
c.JSON(httpStatus, healthStatus)
|
||||
}
|
||||
@ -63,6 +63,24 @@ func CheckUserOrder(userID uint64) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
// 校验用户是否首次购买
|
||||
func CheckUserFirstOrder(userID uint64) bool {
|
||||
req := bundle.OrderRecordsDetailRequest{
|
||||
CustomerID: strconv.FormatUint(userID, 10),
|
||||
Status: 2,
|
||||
}
|
||||
records, _ := service.BundleProvider.OrderRecordsDetail(context.Background(), &req)
|
||||
// 用户没有任何订单记录
|
||||
if records.OrderRecord == nil {
|
||||
return true
|
||||
}
|
||||
// 检查订单是否属于该用户
|
||||
if records.OrderRecord.CustomerID != strconv.FormatUint(userID, 10) {
|
||||
return true
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
// 获取最后一次合同编号
|
||||
func GetLastContractNo() (string, error) {
|
||||
records, err := service.BundleProvider.OrderRecordsList(context.Background(), &bundle.OrderRecordsRequest{
|
||||
|
||||
@ -277,6 +277,7 @@ func AutoCreateUserAndOrder(c *gin.Context) {
|
||||
var TotalPrice float32
|
||||
var expirationDay string
|
||||
numMap := make(map[string]int32)
|
||||
numMap["1500.00"] = 0
|
||||
numMap["3150.00"] = 3
|
||||
numMap["4200.00"] = 5
|
||||
numMap["5600.00"] = 8
|
||||
@ -289,6 +290,7 @@ func AutoCreateUserAndOrder(c *gin.Context) {
|
||||
numMap["18300.00"] = 40
|
||||
numMap["26700.00"] = 60
|
||||
incrMap := make(map[string]float32)
|
||||
incrMap["1500.00"] = 0
|
||||
incrMap["3150.00"] = 1650
|
||||
incrMap["4200.00"] = 2700
|
||||
incrMap["5600.00"] = 4100
|
||||
@ -364,7 +366,7 @@ func AutoCreateUserAndOrder(c *gin.Context) {
|
||||
ValueUid: accountUuid,
|
||||
CurrencyType: 2, //美元
|
||||
Amount: 0, //增值服务金额
|
||||
Num: 3,
|
||||
Num: 5,
|
||||
Unit: "个",
|
||||
Source: 1,
|
||||
PaymentStatus: 1,
|
||||
@ -416,6 +418,7 @@ func AutoCreateUserAndOrder(c *gin.Context) {
|
||||
orderReq.OrderNo = unfinishInfo.OrderNo
|
||||
//expirationTime := t.AddDate(10, 0, 0).Format("2006-01-02 15:04:05")
|
||||
//orderReq.ExpirationTime = expirationTime
|
||||
orderReq.PlatformIds = []uint32{1, 4, 5}
|
||||
_, err = service.BundleProvider.CreateOrderRecord(context.Background(), &orderReq)
|
||||
if err != nil {
|
||||
service.Error(c, err)
|
||||
|
||||
@ -780,8 +780,9 @@ func executeAyrshareMetricsCollector() {
|
||||
zap.L().Info("Ayrshare 指标采集任务执行完成")
|
||||
fmt.Printf("[%s] [INFO] Ayrshare 指标采集任务执行完成\n", time.Now().Format("2006-01-02 15:04:05"))
|
||||
|
||||
// 暂停重试
|
||||
// 第三步:重试失败的记录(使用并发处理)
|
||||
retryFailedMetricsForAyrshareConcurrent(ctx, dateCN)
|
||||
// retryFailedMetricsForAyrshareConcurrent(ctx, dateCN)
|
||||
|
||||
// 第四步:根据作品数据计算并更新账号日级指标
|
||||
zap.L().Info("开始计算账号日级指标")
|
||||
|
||||
40
pkg/service/cast/images.go
Normal file
40
pkg/service/cast/images.go
Normal file
@ -0,0 +1,40 @@
|
||||
package cast
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fonchain-fiee/api/cast"
|
||||
"fonchain-fiee/pkg/service"
|
||||
)
|
||||
|
||||
func CheckImage(workUuid string) error {
|
||||
detailResp, err := service.CastProvider.WorkDetail(context.Background(), &cast.WorkDetailReq{WorkUuid: workUuid})
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if detailResp.CoverUrl == "" {
|
||||
return nil
|
||||
}
|
||||
if detailResp.WorkCategory == 1 {
|
||||
return nil
|
||||
}
|
||||
resourceResp, err := service.CastProvider.WorkResource(context.Background(), &cast.WorkResourceReq{WorkUuid: workUuid})
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if detailResp.CoverUrl == resourceResp.OldCoverUrl {
|
||||
return nil
|
||||
}
|
||||
mediaUrls, err := ProcessImg([]string{detailResp.CoverUrl})
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if len(mediaUrls) > 0 {
|
||||
_, _ = service.CastProvider.UpdateWorkResource(context.Background(), &cast.UpdateWorkResourceReq{
|
||||
Uuid: "",
|
||||
WorkUuid: detailResp.WorkUuid,
|
||||
OldCoverUrl: detailResp.CoverUrl,
|
||||
NewCoverUrl: mediaUrls[0],
|
||||
})
|
||||
}
|
||||
return nil
|
||||
}
|
||||
@ -44,28 +44,32 @@ func MediaUserList(ctx *gin.Context) {
|
||||
service.Error(ctx, err)
|
||||
return
|
||||
}
|
||||
var statResp *bundle.ArtistUploadStatsResponse
|
||||
zap.L().Info("MediaUserList 1")
|
||||
if req.NeedStats {
|
||||
var statResp *bundle.ArtistUploadStatsResponse
|
||||
zap.L().Info("MediaUserList 1")
|
||||
//取出艺人num
|
||||
var artistSubNums []string
|
||||
for _, v := range resp.Data {
|
||||
zap.L().Info("MediaUserList 1.1", zap.Any("MediaAccountUuid", v.MediaAccountUuid))
|
||||
statResp, err = service.BundleProvider.GetArtistUploadStatsList(context.Background(), &bundle.TaskQueryRequest{
|
||||
Keyword: v.ArtistPhone,
|
||||
Page: 0,
|
||||
PageSize: 0,
|
||||
SortBy: "",
|
||||
SortType: "",
|
||||
LastTaskAssignee: "",
|
||||
SubNums: nil,
|
||||
})
|
||||
if err != nil {
|
||||
//service.Error(ctx, errors.New("查询艺人数据错误"))
|
||||
//return
|
||||
zap.L().Error("GetArtistUploadStatsList error", zap.Error(err))
|
||||
} else {
|
||||
zap.L().Info("MediaUserList 1.2", zap.Any("MediaAccountUuid", v.MediaAccountUuid))
|
||||
if statResp != nil && len(statResp.Items) > 0 {
|
||||
info := statResp.Items[0]
|
||||
artistSubNums = append(artistSubNums, v.ArtistSubNum)
|
||||
}
|
||||
statResp, err = service.BundleProvider.GetArtistUploadStatsList(context.Background(), &bundle.TaskQueryRequest{
|
||||
Keyword: "",
|
||||
Page: 0,
|
||||
PageSize: 0,
|
||||
SortBy: "",
|
||||
SortType: "",
|
||||
LastTaskAssignee: "",
|
||||
SubNums: artistSubNums,
|
||||
})
|
||||
zap.L().Info("MediaUserList 2")
|
||||
if err != nil {
|
||||
service.Error(ctx, err)
|
||||
return
|
||||
}
|
||||
for _, v := range resp.Data {
|
||||
for _, vv := range statResp.Items {
|
||||
if v.ArtistSubNum == vv.SubNum {
|
||||
info := vv
|
||||
// "pendingVideoCount": 10, // 待上传视频数 "uploadedVideoCount": 25, // 已上传视频数 "releasedVideoTotal": 35, // 已释放视频总数
|
||||
//"pendingPostCount": 14, // 待上传图文数 "uploadedPostCount": 21, // 已上传图文数 "releasedPostTotal": 35, // 已释放图文总数
|
||||
v.PendingVideoCount = info.PendingVideoCount
|
||||
@ -78,7 +82,7 @@ func MediaUserList(ctx *gin.Context) {
|
||||
}
|
||||
}
|
||||
}
|
||||
zap.L().Info("MediaUserList 2")
|
||||
zap.L().Info("MediaUserList 3")
|
||||
go func() {
|
||||
for _, v := range resp.Data {
|
||||
_ = SyncAsAuth(v.ArtistUuid)
|
||||
@ -165,7 +169,7 @@ func UpdateMediaAccount(ctx *gin.Context) {
|
||||
}
|
||||
if userResp != nil && len(userResp.Data) > 0 {
|
||||
for _, v := range userResp.Data {
|
||||
if v.PlatformID == uint32(req.PlatformID) {
|
||||
if v.PlatformID == uint32(req.PlatformID) && v.Expired == 1 {
|
||||
service.Error(ctx, errors.New("账号已存在"))
|
||||
return
|
||||
}
|
||||
@ -254,6 +258,10 @@ func OAuthAccount(ctx *gin.Context) {
|
||||
service.Error(ctx, errors.New("未找到该账号"))
|
||||
return
|
||||
}
|
||||
if mediaResp.Data[0].Expired != 1 {
|
||||
service.Error(ctx, errors.New("账号已过期"))
|
||||
return
|
||||
}
|
||||
if err = SyncAsAuth(mediaResp.Data[0].ArtistUuid); err != nil {
|
||||
service.Error(ctx, err)
|
||||
return
|
||||
@ -321,6 +329,7 @@ func OAuth2Callback(ctx *gin.Context) {
|
||||
service.Error(ctx, errors.New(e.GetMsg(e.InvalidParams)))
|
||||
return
|
||||
}
|
||||
req.State = state
|
||||
zap.L().Info("OAuth2Callback", zap.Any("req", req), zap.Any("code", code), zap.Any("state", state))
|
||||
_, err := service.CastProvider.OAuthCodeToToken(ctx, req)
|
||||
if err != nil {
|
||||
@ -377,6 +386,7 @@ func SyncAsAuth(artistUuid string) error {
|
||||
InstagramDetails: true,
|
||||
})
|
||||
if err != nil {
|
||||
zap.L().Error("SyncAsAuth error", zap.Error(err))
|
||||
return errors.New("获取艺人绑定信息错误")
|
||||
}
|
||||
authReq := &cast.UpdateOAuthReq{Data: make([]*cast.UpdateOAuthReq_Info, 0)}
|
||||
@ -403,10 +413,14 @@ func SyncAsAuth(artistUuid string) error {
|
||||
if platformIDENUM == cast.PlatformIDENUM_UNKNOWN {
|
||||
continue
|
||||
}
|
||||
asID := v.Id
|
||||
if platformIDENUM == cast.PlatformIDENUM_BULESKY && asID == "" {
|
||||
asID = v.Username
|
||||
}
|
||||
authReq.Data = append(authReq.Data, &cast.UpdateOAuthReq_Info{
|
||||
ArtistUuid: artistUuid,
|
||||
PlatformID: platformIDENUM,
|
||||
AsID: v.Id,
|
||||
AsID: asID,
|
||||
PlatformUserName: v.Username,
|
||||
AutInfo: string(asInfoB),
|
||||
})
|
||||
@ -647,6 +661,7 @@ func ImportMediaAccount(ctx *gin.Context) {
|
||||
excelSetRemark(excelData, line, fmt.Sprintf("%s:%s", blueskyName, err.Error()))
|
||||
}
|
||||
}
|
||||
_ = CheckAsProfile(subInfoResp)
|
||||
}
|
||||
// 保存Excel文件到磁盘
|
||||
resultPath := fmt.Sprintf("./runtime/media/%s", fileName)
|
||||
|
||||
440
pkg/service/cast/tag.go
Normal file
440
pkg/service/cast/tag.go
Normal file
@ -0,0 +1,440 @@
|
||||
package cast
|
||||
|
||||
import (
|
||||
"context"
|
||||
"errors"
|
||||
"fmt"
|
||||
"fonchain-fiee/api/aryshare"
|
||||
"fonchain-fiee/api/cast"
|
||||
"fonchain-fiee/cmd/config"
|
||||
"fonchain-fiee/pkg/model/login"
|
||||
"fonchain-fiee/pkg/service"
|
||||
"fonchain-fiee/pkg/utils"
|
||||
"math/rand"
|
||||
"path/filepath"
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
"github.com/xuri/excelize/v2"
|
||||
"go.uber.org/zap"
|
||||
"google.golang.org/protobuf/types/known/emptypb"
|
||||
)
|
||||
|
||||
// UpdateCastTag 更新话题标签
|
||||
func UpdateCastTag(ctx *gin.Context) {
|
||||
var req *cast.UpdateCastTagReq
|
||||
var err error
|
||||
if err = ctx.ShouldBind(&req); err != nil {
|
||||
service.Error(ctx, err)
|
||||
return
|
||||
}
|
||||
newCtx := NewCtxWithUserInfo(ctx)
|
||||
resp, err := service.CastProvider.UpdateCastTag(newCtx, req)
|
||||
if err != nil {
|
||||
service.Error(ctx, err)
|
||||
return
|
||||
}
|
||||
service.Success(ctx, resp)
|
||||
return
|
||||
}
|
||||
|
||||
// ListCastTags 获取话题标签列表
|
||||
func ListCastTags(ctx *gin.Context) {
|
||||
var req *cast.ListCastTagsReq
|
||||
var err error
|
||||
if err = ctx.ShouldBind(&req); err != nil {
|
||||
service.Error(ctx, err)
|
||||
return
|
||||
}
|
||||
newCtx := NewCtxWithUserInfo(ctx)
|
||||
resp, err := service.CastProvider.ListCastTags(newCtx, req)
|
||||
if err != nil {
|
||||
service.Error(ctx, err)
|
||||
return
|
||||
}
|
||||
service.Success(ctx, resp)
|
||||
return
|
||||
}
|
||||
|
||||
// ImportTagBatch 批量导入话题标签
|
||||
func ImportTagBatch(ctx *gin.Context) {
|
||||
// 接收form表单的Excel保存到本地进行解析
|
||||
excelFile, err := ctx.FormFile("file")
|
||||
if err != nil {
|
||||
service.Error(ctx, err)
|
||||
return
|
||||
}
|
||||
tempDir := "./runtime/tag"
|
||||
_, err = utils.CheckDirPath(tempDir, true)
|
||||
fileName := time.Now().Format("20060102150405") + "_in_tag.xlsx"
|
||||
excelPath := filepath.Join(tempDir, fileName)
|
||||
if err = ctx.SaveUploadedFile(excelFile, excelPath); err != nil {
|
||||
service.Error(ctx, err)
|
||||
return
|
||||
}
|
||||
// 读取Excel中的数据
|
||||
excelData, err := excelize.OpenFile(excelPath)
|
||||
if err != nil {
|
||||
service.Error(ctx, err)
|
||||
return
|
||||
}
|
||||
defer excelData.Close()
|
||||
// 解析Excel中的数据
|
||||
rows, err := excelData.GetRows("Sheet1")
|
||||
if err != nil {
|
||||
service.Error(ctx, err)
|
||||
return
|
||||
}
|
||||
req := cast.UpdateCastTagBatchReq{
|
||||
Data: make([]*cast.CastTagInfo, 0),
|
||||
}
|
||||
userInfo := login.GetUserInfoFromC(ctx)
|
||||
for line, row := range rows {
|
||||
if line == 0 {
|
||||
continue
|
||||
}
|
||||
temp := cast.CastTagInfo{
|
||||
CreatorUuid: fmt.Sprint(userInfo.ID),
|
||||
CreatorName: userInfo.Name,
|
||||
Source: 1, // 固定来源:人工导入
|
||||
Status: 1, // 固定状态:有效
|
||||
}
|
||||
// 解析Excel列:A-话题标签,B-备注
|
||||
if len(row) > 0 {
|
||||
temp.HashTag = strings.TrimSpace(row[0])
|
||||
}
|
||||
if len(row) > 1 {
|
||||
temp.Remark = strings.TrimSpace(row[1])
|
||||
}
|
||||
zap.L().Info("ImportTagBatch row", zap.Int("line", line), zap.Strings("row", row))
|
||||
// 验证必填字段:话题标签不能为空
|
||||
if utils.CleanString(temp.HashTag) == "" {
|
||||
temp.Remark = "必填项未填"
|
||||
req.Data = append(req.Data, &temp)
|
||||
continue
|
||||
}
|
||||
req.Data = append(req.Data, &temp)
|
||||
}
|
||||
newCtx := NewCtxWithUserInfo(ctx)
|
||||
resp, _err := service.CastProvider.UpdateCastTagBatch(newCtx, &req)
|
||||
if _err != nil {
|
||||
service.Error(ctx, _err)
|
||||
return
|
||||
}
|
||||
// 打开模板 写入resp 返回的数据
|
||||
templatePath := "./data/话题标签导入模板.xlsx"
|
||||
template, err := excelize.OpenFile(templatePath)
|
||||
if err != nil {
|
||||
service.Error(ctx, err)
|
||||
return
|
||||
}
|
||||
defer template.Close()
|
||||
var urlResult string
|
||||
if resp.FailCount != 0 {
|
||||
rowIndex := 2 // 从第2行开始写入(第1行是表头)
|
||||
for _, v := range resp.Data {
|
||||
if v.Success {
|
||||
continue
|
||||
}
|
||||
// 写入失败的数据到Excel模板(只写入话题标签和备注两列)
|
||||
template.SetCellValue("Sheet1", fmt.Sprintf("A%d", rowIndex), v.HashTag)
|
||||
template.SetCellValue("Sheet1", fmt.Sprintf("B%d", rowIndex), v.Remark)
|
||||
rowIndex++
|
||||
}
|
||||
resultFilename := strings.Replace(fileName, "_in_tag.xlsx", "_out_tag.xlsx", -1)
|
||||
resultPath := fmt.Sprintf("./runtime/tag/%s", resultFilename)
|
||||
if err = template.SaveAs(resultPath); err != nil {
|
||||
service.Error(ctx, err)
|
||||
return
|
||||
}
|
||||
urlHost := config.AppConfig.System.FieeHost
|
||||
urlResult = fmt.Sprintf("%s/api/fiee/static/tag/%s", urlHost, resultFilename)
|
||||
}
|
||||
|
||||
service.Success(ctx, map[string]interface{}{
|
||||
"successCount": resp.SuccessCount,
|
||||
"failCount": resp.FailCount,
|
||||
"resultUrl": urlResult,
|
||||
})
|
||||
return
|
||||
}
|
||||
|
||||
// RecalculateCastTagQuoteCount 重新计算话题标签引用数量
|
||||
func RecalculateCastTagQuoteCount(ctx *gin.Context) {
|
||||
newCtx := NewCtxWithUserInfo(ctx)
|
||||
// 创建空的请求对象
|
||||
req := &emptypb.Empty{}
|
||||
resp, err := service.CastProvider.RecalculateCastTagQuoteCount(newCtx, req)
|
||||
if err != nil {
|
||||
service.Error(ctx, err)
|
||||
return
|
||||
}
|
||||
service.Success(ctx, resp)
|
||||
return
|
||||
}
|
||||
|
||||
// findNewTags 对比两次标签,找出新增的标签
|
||||
func findNewTags(beforeTags, afterTags []string) []string {
|
||||
// 将 beforeTags 转换为 map,方便查找
|
||||
beforeMap := make(map[string]bool)
|
||||
for _, tag := range beforeTags {
|
||||
cleanTag := strings.TrimSpace(tag)
|
||||
if cleanTag != "" {
|
||||
beforeMap[cleanTag] = true
|
||||
}
|
||||
}
|
||||
|
||||
// 找出 afterTags 中不在 beforeTags 中的标签
|
||||
newTags := make([]string, 0)
|
||||
for _, tag := range afterTags {
|
||||
cleanTag := strings.TrimSpace(tag)
|
||||
if cleanTag != "" && !beforeMap[cleanTag] {
|
||||
newTags = append(newTags, cleanTag)
|
||||
}
|
||||
}
|
||||
|
||||
return newTags
|
||||
}
|
||||
|
||||
func GetValidProfileKey(ctx context.Context, platformIDs []uint32) (string, error) {
|
||||
if len(platformIDs) == 0 {
|
||||
platformIDs = []uint32{1, 2, 3, 5}
|
||||
}
|
||||
profileKeys, err := service.CastProvider.GetArtistAyrShareInfoByPlatformIDs(ctx, &cast.GetArtistAyrShareInfoByPlatformIDsReq{
|
||||
PlatformIDs: platformIDs,
|
||||
Page: 1,
|
||||
PageSize: 20,
|
||||
})
|
||||
if err != nil {
|
||||
zap.L().Error("GetArtistAyrShareInfoByPlatformIDs failed", zap.Error(err))
|
||||
return "", errors.New("获取有效profileKey失败")
|
||||
}
|
||||
if len(profileKeys.Data) == 0 {
|
||||
return "", errors.New("当前没有有效的profileKey")
|
||||
}
|
||||
|
||||
// 过滤出所有非空的 profileKey
|
||||
validProfileKeys := make([]string, 0)
|
||||
for _, item := range profileKeys.Data {
|
||||
if item.ProfileKey != "" {
|
||||
validProfileKeys = append(validProfileKeys, item.ProfileKey)
|
||||
}
|
||||
}
|
||||
|
||||
if len(validProfileKeys) == 0 {
|
||||
return "", errors.New("profileKey为空")
|
||||
}
|
||||
|
||||
// 从有效的 profileKey 中随机选择一个
|
||||
randIndex := rand.Intn(len(validProfileKeys))
|
||||
return validProfileKeys[randIndex], nil
|
||||
}
|
||||
|
||||
// SaveTagsToDatabase 将标签保存到数据库
|
||||
func SaveTagsToDatabase(ctx *gin.Context, tags []string, source uint32) error {
|
||||
if len(tags) == 0 {
|
||||
return nil
|
||||
}
|
||||
|
||||
// 获取用户信息
|
||||
userInfo := login.GetUserInfoFromC(ctx)
|
||||
newCtx := NewCtxWithUserInfo(ctx)
|
||||
|
||||
// 构建批量导入请求
|
||||
req := cast.UpdateCastTagBatchReq{
|
||||
Data: make([]*cast.CastTagInfo, 0, len(tags)),
|
||||
}
|
||||
|
||||
for _, tag := range tags {
|
||||
tagInfo := &cast.CastTagInfo{
|
||||
HashTag: tag,
|
||||
CreatorUuid: fmt.Sprint(userInfo.ID),
|
||||
CreatorName: userInfo.Name,
|
||||
Source: source, // 4: 自动标签(从内容中自动提取)
|
||||
Status: 1, // 1: 有效
|
||||
}
|
||||
req.Data = append(req.Data, tagInfo)
|
||||
}
|
||||
|
||||
// 调用批量导入接口
|
||||
_, err := service.CastProvider.UpdateCastTagBatch(newCtx, &req)
|
||||
if err != nil {
|
||||
err = errors.New("标签保存到数据库失败")
|
||||
zap.L().Error("SaveTagsToDatabase UpdateCastTagBatch failed", zap.Error(err))
|
||||
return err
|
||||
}
|
||||
zap.L().Info("SaveTagsToDatabase success", zap.Int("tagCount", len(tags)), zap.Strings("tags", tags), zap.Uint32("source", source))
|
||||
return nil
|
||||
}
|
||||
|
||||
func GenerateAutoHashtags(ctx context.Context, post string, max int32, position, language string) (*aryshare.AutoHashtagsResponse, []string, bool, error) {
|
||||
// 验证帖子内容
|
||||
if post == "" {
|
||||
return nil, nil, false, errors.New("帖子内容不能为空")
|
||||
}
|
||||
// post 的长度不能超过1000个字符
|
||||
if len(post) > 1000 {
|
||||
return nil, nil, false, errors.New("自动生成标签的帖子内容不能超过1000个字符")
|
||||
}
|
||||
|
||||
// 提取生成前的标签
|
||||
beforeTags := utils.ExtractTags(post)
|
||||
zap.L().Info("GenerateAutoHashtags beforeTags", zap.Strings("beforeTags", beforeTags))
|
||||
|
||||
// 如果标签数量已经达到或超过5个,不需要生成
|
||||
if len(beforeTags) >= 5 {
|
||||
return nil, nil, false, nil
|
||||
}
|
||||
|
||||
// 设置默认值
|
||||
if position == "" {
|
||||
position = "end"
|
||||
}
|
||||
if language == "" {
|
||||
language = "zh"
|
||||
}
|
||||
|
||||
// 如果 max 为0,则根据现有标签数自动计算,确保总数为5
|
||||
if max == 0 {
|
||||
max = int32(5 - len(beforeTags))
|
||||
}
|
||||
|
||||
// 如果此时 max 小于等于0,则直接返回
|
||||
if max <= 0 {
|
||||
return nil, nil, false, nil
|
||||
}
|
||||
|
||||
profileKey, err := GetValidProfileKey(ctx, []uint32{1, 2, 3, 5})
|
||||
if err != nil {
|
||||
return nil, nil, false, err
|
||||
}
|
||||
|
||||
// 构建请求
|
||||
req := &aryshare.AutoHashtagsRequest{
|
||||
Post: post,
|
||||
Max: max,
|
||||
Position: position,
|
||||
Language: language,
|
||||
ProfileKey: profileKey,
|
||||
}
|
||||
|
||||
// 调用 Ayrshare 的 AutoHashtags 接口
|
||||
resp, err := service.AyrshareProvider.AutoHashtags(ctx, req)
|
||||
if err != nil {
|
||||
zap.L().Error("AutoHashtags failed", zap.Error(err))
|
||||
return nil, nil, false, errors.New("自动生成标签失败")
|
||||
}
|
||||
|
||||
if resp.Post == "" {
|
||||
return nil, nil, false, errors.New("自动生成标签返回的帖子内容为空")
|
||||
}
|
||||
|
||||
// 去掉自动标签返回的帖子内容多余的引号
|
||||
resp.Post = utils.CleanAutoHashtagsQuote(resp.Post)
|
||||
|
||||
// 提取生成后的标签
|
||||
afterTags := utils.ExtractTags(resp.Post)
|
||||
zap.L().Info("GenerateAutoHashtags afterTags", zap.Strings("afterTags", afterTags))
|
||||
|
||||
// 对比两次标签,找出新增的标签
|
||||
newTags := findNewTags(beforeTags, afterTags)
|
||||
|
||||
return resp, newTags, true, nil
|
||||
}
|
||||
|
||||
// AutoHashtags 自动生成标签
|
||||
func AutoHashtags(ctx *gin.Context) {
|
||||
var req *aryshare.AutoHashtagsRequest
|
||||
var err error
|
||||
if err = ctx.ShouldBind(&req); err != nil {
|
||||
service.Error(ctx, err)
|
||||
return
|
||||
}
|
||||
|
||||
// 调用核心逻辑生成标签
|
||||
resp, newTags, needMore, err := GenerateAutoHashtags(
|
||||
context.Background(),
|
||||
req.Post,
|
||||
req.Max,
|
||||
req.Position,
|
||||
req.Language,
|
||||
)
|
||||
if err != nil {
|
||||
service.Error(ctx, err)
|
||||
return
|
||||
}
|
||||
|
||||
// 如果标签已满5个,直接返回
|
||||
if !needMore {
|
||||
service.Success(ctx, map[string]interface{}{
|
||||
"message": "当前帖子的标签已经有5个了",
|
||||
})
|
||||
return
|
||||
}
|
||||
|
||||
// 保存新增的标签到数据库,Source 设置为 4(自动标签)
|
||||
if len(newTags) > 0 {
|
||||
if err = SaveTagsToDatabase(ctx, newTags, 4); err != nil {
|
||||
zap.L().Error("SaveTagsToDatabase failed", zap.Error(err), zap.Strings("newTags", newTags))
|
||||
err = errors.New("标签保存到数据库失败")
|
||||
service.Error(ctx, err)
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
service.Success(ctx, resp)
|
||||
return
|
||||
}
|
||||
|
||||
// RecommendHashtags 推荐标签
|
||||
func RecommendHashtags(ctx *gin.Context) {
|
||||
var req *aryshare.RecommendHashtagsRequest
|
||||
var err error
|
||||
if err = ctx.ShouldBind(&req); err != nil {
|
||||
service.Error(ctx, err)
|
||||
return
|
||||
}
|
||||
profileKey, err := GetValidProfileKey(context.Background(), []uint32{1})
|
||||
if err != nil {
|
||||
service.Error(ctx, err)
|
||||
return
|
||||
}
|
||||
req.ProfileKey = profileKey
|
||||
resp, err := service.AyrshareProvider.RecommendHashtags(context.Background(), req)
|
||||
if err != nil {
|
||||
fmt.Println("err", err)
|
||||
zap.L().Error("RecommendHashtags failed", zap.Error(err))
|
||||
err = errors.New("推荐标签失败")
|
||||
service.Error(ctx, err)
|
||||
return
|
||||
}
|
||||
service.Success(ctx, resp)
|
||||
return
|
||||
}
|
||||
|
||||
// SearchHashtags 搜索标签
|
||||
func SearchHashtags(ctx *gin.Context) {
|
||||
var req *aryshare.SearchHashtagsRequest
|
||||
var err error
|
||||
if err = ctx.ShouldBind(&req); err != nil {
|
||||
service.Error(ctx, err)
|
||||
return
|
||||
}
|
||||
profileKey, err := GetValidProfileKey(context.Background(), []uint32{3})
|
||||
if err != nil {
|
||||
service.Error(ctx, err)
|
||||
return
|
||||
}
|
||||
req.ProfileKey = profileKey
|
||||
resp, err := service.AyrshareProvider.SearchHashtags(context.Background(), req)
|
||||
if err != nil {
|
||||
fmt.Println("err", err)
|
||||
err = errors.New("获取热门话题标签失败")
|
||||
zap.L().Error("SearchHashtags failed", zap.Error(err))
|
||||
service.Error(ctx, err)
|
||||
return
|
||||
}
|
||||
service.Success(ctx, resp)
|
||||
return
|
||||
}
|
||||
@ -2,12 +2,23 @@ package cast
|
||||
|
||||
import (
|
||||
"context"
|
||||
"encoding/json"
|
||||
"errors"
|
||||
"fmt"
|
||||
"fonchain-fiee/cmd/config"
|
||||
"fonchain-fiee/pkg/service/upload"
|
||||
"os"
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
"fonchain-fiee/api/cast"
|
||||
modelCast "fonchain-fiee/pkg/model/cast"
|
||||
"fonchain-fiee/pkg/model/login"
|
||||
"fonchain-fiee/pkg/service"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
"github.com/xuri/excelize/v2"
|
||||
"go.uber.org/zap"
|
||||
)
|
||||
|
||||
func TaskList(ctx *gin.Context) {
|
||||
@ -26,3 +37,164 @@ func TaskList(ctx *gin.Context) {
|
||||
}
|
||||
service.Success(ctx, resp)
|
||||
}
|
||||
|
||||
func DeleteTasK(ctx *gin.Context) {
|
||||
var req *cast.DeleteTaskListReq
|
||||
var err error
|
||||
if err = ctx.ShouldBind(&req); err != nil {
|
||||
service.Error(ctx, err)
|
||||
return
|
||||
}
|
||||
//loginInfo := login.GetUserInfoFromC(ctx)
|
||||
//req.OperatorID = fmt.Sprint(loginInfo.ID)
|
||||
resp, err := service.CastProvider.DeleteTaskList(context.Background(), req)
|
||||
if err != nil {
|
||||
service.Error(ctx, err)
|
||||
return
|
||||
}
|
||||
service.Success(ctx, resp)
|
||||
}
|
||||
|
||||
func DownloadTaskFile(ctx *gin.Context) {
|
||||
var req *cast.GetTaskListReq
|
||||
var err error
|
||||
if err = ctx.ShouldBind(&req); err != nil {
|
||||
service.Error(ctx, err)
|
||||
return
|
||||
}
|
||||
resp, err := service.CastProvider.GetTaskList(context.Background(), req)
|
||||
if err != nil {
|
||||
service.Error(ctx, err)
|
||||
return
|
||||
}
|
||||
if resp == nil || resp.Data == nil {
|
||||
service.Error(ctx, errors.New("没有此任务"))
|
||||
return
|
||||
}
|
||||
|
||||
var taskInfo modelCast.PublishTaskDto
|
||||
if resp.Data.ExtraData != "" {
|
||||
_ = json.Unmarshal([]byte(resp.Data.ExtraData), &taskInfo)
|
||||
}
|
||||
exportUrl, err := PublishTaskExcel(taskInfo.WorkUuids, false, resp.Data.Action)
|
||||
if err != nil {
|
||||
service.Error(ctx, err)
|
||||
return
|
||||
}
|
||||
service.Success(ctx, gin.H{
|
||||
"url": exportUrl,
|
||||
})
|
||||
}
|
||||
|
||||
func PublishTaskExcel(workUuids []string, uploadOss bool, action string) (string, error) {
|
||||
// 创建Excel文件
|
||||
f := excelize.NewFile()
|
||||
sheetName := "Sheet1"
|
||||
f.SetSheetName("Sheet1", sheetName)
|
||||
// 设置表头
|
||||
headers := []interface{}{
|
||||
"艺人编号", "艺人姓名", "内容类型", "内容标题",
|
||||
"执行结果", "TIKTOK", "YOUTUBE", "INS", "DM", "BULESKY",
|
||||
}
|
||||
sw, err := f.NewStreamWriter(sheetName)
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
if err = sw.SetRow("A1", headers); err != nil {
|
||||
return "", err
|
||||
}
|
||||
// 遍历所有作品,收集数据
|
||||
rowIndex := 2
|
||||
for _, workUuid := range workUuids {
|
||||
var workResp *cast.WorkDetailResp
|
||||
workResp, err = service.CastProvider.WorkDetail(context.Background(), &cast.WorkDetailReq{WorkUuid: workUuid})
|
||||
if err != nil {
|
||||
continue // 如果某个作品获取失败,跳过继续处理其他作品
|
||||
}
|
||||
// 内容类型
|
||||
contentType := ""
|
||||
if workResp.WorkCategory == 1 {
|
||||
contentType = "图文"
|
||||
} else if workResp.WorkCategory == 2 {
|
||||
contentType = "视频"
|
||||
}
|
||||
// 执行结果
|
||||
executionResult := modelCast.WorkStatusMM[int(workResp.WorkStatus)]
|
||||
tiktokStatus := ""
|
||||
youtubeStatus := ""
|
||||
insStatus := ""
|
||||
dmStatus := ""
|
||||
blueskyStatus := ""
|
||||
|
||||
// 获取平台信息和艺人姓名
|
||||
artistName := ""
|
||||
var infoResp *cast.WorkInfoResp
|
||||
infoResp, err = service.CastProvider.WorkInfo(context.Background(), &cast.WorkInfoReq{WorkUuid: workUuid})
|
||||
if err == nil && infoResp != nil {
|
||||
artistName = infoResp.ArtistName
|
||||
if infoResp.PlatformInfoData != nil {
|
||||
for _, platform := range infoResp.PlatformInfoData {
|
||||
statusText := modelCast.PlatformPublishStatusMM[platform.PublishMediaStatus]
|
||||
switch cast.PlatformIDENUM(platform.PlatformID) {
|
||||
case cast.PlatformIDENUM_TIKTOK:
|
||||
tiktokStatus = statusText
|
||||
case cast.PlatformIDENUM_YOUTUBE:
|
||||
youtubeStatus = statusText
|
||||
case cast.PlatformIDENUM_INS:
|
||||
insStatus = statusText
|
||||
case cast.PlatformIDENUM_DM:
|
||||
dmStatus = statusText
|
||||
case cast.PlatformIDENUM_BULESKY:
|
||||
blueskyStatus = statusText
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
row := []interface{}{
|
||||
workResp.ArtistSubNum,
|
||||
artistName,
|
||||
contentType,
|
||||
workResp.Title,
|
||||
executionResult,
|
||||
tiktokStatus,
|
||||
youtubeStatus,
|
||||
insStatus,
|
||||
dmStatus,
|
||||
blueskyStatus,
|
||||
}
|
||||
cell, _ := excelize.CoordinatesToCellName(1, rowIndex)
|
||||
if err = sw.SetRow(cell, row); err != nil {
|
||||
continue
|
||||
}
|
||||
rowIndex++
|
||||
}
|
||||
if err = sw.Flush(); err != nil {
|
||||
zap.L().Error("PublishTaskExcel Flush err", zap.Error(err))
|
||||
return "", errors.New("生成Excel文件失败")
|
||||
}
|
||||
tempDir := "./runtime/task"
|
||||
if _, err = os.Stat(tempDir); os.IsNotExist(err) {
|
||||
if err = os.MkdirAll(tempDir, 0755); err != nil {
|
||||
return "", err
|
||||
}
|
||||
}
|
||||
TaskActionName, ok := modelCast.TaskActionName[action]
|
||||
if !ok {
|
||||
TaskActionName = "未知任务"
|
||||
}
|
||||
filename := fmt.Sprintf("%s_%s.xlsx", TaskActionName, time.Now().Format("20060102150405"))
|
||||
filePath := tempDir + "/" + filename
|
||||
var exportUrl string = fmt.Sprintf("%s/api/fiee/static/%s", config.AppConfig.System.FieeHost, strings.Replace(filePath, "./runtime/", "", 1))
|
||||
if err = f.SaveAs(filePath); err != nil {
|
||||
zap.L().Error("PublishTaskExcel SaveAs err", zap.Error(err))
|
||||
return "", errors.New("保存Excel文件失败")
|
||||
}
|
||||
if uploadOss {
|
||||
// 上传到阿里云
|
||||
exportUrl, err = upload.PutBos(filePath, "excel", true)
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
}
|
||||
return exportUrl, nil
|
||||
}
|
||||
|
||||
@ -16,6 +16,17 @@ import (
|
||||
|
||||
func Test(ctx *gin.Context) {
|
||||
action := ctx.PostForm("action")
|
||||
if action == "" {
|
||||
workUuid := ctx.PostForm("workUuid")
|
||||
err := CheckImage(workUuid)
|
||||
if err != nil {
|
||||
service.Error(ctx, err)
|
||||
return
|
||||
}
|
||||
service.Success(ctx, nil)
|
||||
return
|
||||
}
|
||||
|
||||
if action == "getPost" {
|
||||
id := ctx.PostForm("id")
|
||||
profileKey := ctx.PostForm("profileKey")
|
||||
@ -70,19 +81,6 @@ func Test(ctx *gin.Context) {
|
||||
return
|
||||
}
|
||||
|
||||
if action == "" {
|
||||
profileKey := ctx.PostForm("profileKey")
|
||||
resp, err := service.AyrshareProvider.GetUser(context.Background(), &aryshare.GetUserRequest{
|
||||
ProfileKey: profileKey,
|
||||
InstagramDetails: true,
|
||||
})
|
||||
if err != nil {
|
||||
service.Error(ctx, err)
|
||||
return
|
||||
}
|
||||
service.Success(ctx, resp)
|
||||
return
|
||||
}
|
||||
if action == "getProfile" {
|
||||
//profileKey := ctx.PostForm("profileKey")
|
||||
resp, err := service.AyrshareProvider.GetProfiles(context.Background(), &aryshare.GetProfilesRequest{
|
||||
@ -156,6 +154,25 @@ func Test(ctx *gin.Context) {
|
||||
}
|
||||
service.Success(ctx, "ok")
|
||||
}
|
||||
if action == "SyncAsAuth" {
|
||||
artistUuid := ctx.PostForm("artistUuid")
|
||||
err := SyncAsAuth(artistUuid)
|
||||
if err != nil {
|
||||
service.Error(ctx, err)
|
||||
return
|
||||
}
|
||||
service.Success(ctx, "ok")
|
||||
}
|
||||
|
||||
if action == "RefreshWorkList" {
|
||||
resp, err := service.CastProvider.RefreshWorkList(context.Background(), &cast.RefreshWorkListReq{PublishStatus: 1})
|
||||
if err != nil {
|
||||
service.Error(ctx, err)
|
||||
return
|
||||
}
|
||||
service.Success(ctx, resp)
|
||||
return
|
||||
}
|
||||
|
||||
service.Success(ctx, "unknow")
|
||||
return
|
||||
|
||||
@ -19,38 +19,46 @@ import (
|
||||
"fonchain-fiee/pkg/service"
|
||||
"fonchain-fiee/pkg/service/bundle/common"
|
||||
"fonchain-fiee/pkg/service/check"
|
||||
"fonchain-fiee/pkg/service/upload"
|
||||
"fonchain-fiee/pkg/utils"
|
||||
utilsImg "fonchain-fiee/pkg/utils/img"
|
||||
"fonchain-fiee/pkg/utils/stime"
|
||||
_ "image/gif"
|
||||
_ "image/png"
|
||||
"image"
|
||||
"image/jpeg"
|
||||
"io"
|
||||
"net/url"
|
||||
"os"
|
||||
"path/filepath"
|
||||
"strconv"
|
||||
"strings"
|
||||
"sync"
|
||||
"time"
|
||||
|
||||
_ "image/gif"
|
||||
_ "image/png"
|
||||
|
||||
"github.com/google/uuid"
|
||||
// 图片格式解码器
|
||||
_ "golang.org/x/image/bmp"
|
||||
_ "golang.org/x/image/tiff"
|
||||
_ "golang.org/x/image/webp"
|
||||
|
||||
"dubbo.apache.org/dubbo-go/v3/common/constant"
|
||||
"github.com/gin-gonic/gin"
|
||||
"github.com/xuri/excelize/v2"
|
||||
"go.uber.org/zap"
|
||||
)
|
||||
|
||||
func UpdateWorkImage(ctx *gin.Context) {
|
||||
var req *cast.UpdateWorkImageReq
|
||||
// UpdateWorkImageCore 更新作品图片的核心逻辑,可以被其他函数复用
|
||||
func UpdateWorkImageCore(ctx *gin.Context, req *cast.UpdateWorkImageReq) (*cast.UpdateWorkImageResp, error) {
|
||||
var infoResp *accountFiee.UserInfoResponse
|
||||
var err error
|
||||
var ok bool
|
||||
if err = ctx.ShouldBind(&req); err != nil {
|
||||
service.Error(ctx, err)
|
||||
return
|
||||
}
|
||||
loginInfo := login.GetUserInfoFromC(ctx)
|
||||
lockKey := fmt.Sprintf("lock_update_work_image_%d", loginInfo.ID)
|
||||
reply := cache.RedisClient.SetNX(lockKey, time.Now().Format("2006-01-02 15:04:05"), time.Second*5)
|
||||
if !reply.Val() {
|
||||
service.Error(ctx, errors.New("请勿重复提交"))
|
||||
return
|
||||
return nil, errors.New("请勿重复提交")
|
||||
}
|
||||
defer func() {
|
||||
cache.RedisClient.Del(lockKey)
|
||||
@ -60,56 +68,87 @@ func UpdateWorkImage(ctx *gin.Context) {
|
||||
/*for _, v := range req.Images {
|
||||
ok, err = check.SecurityFile(v)
|
||||
if err != nil {
|
||||
service.Error(ctx, err)
|
||||
return
|
||||
return nil, err
|
||||
}
|
||||
if !ok {
|
||||
service.Error(ctx, errors.New("图片鉴定未通过"))
|
||||
return
|
||||
return nil, errors.New("图片鉴定未通过")
|
||||
}
|
||||
}
|
||||
ok, err = check.SecurityText(req.Title)
|
||||
if err != nil {
|
||||
service.Error(ctx, err)
|
||||
return
|
||||
return nil, err
|
||||
}
|
||||
if !ok {
|
||||
service.Error(ctx, errors.New("标题鉴定未通过"))
|
||||
return
|
||||
return nil, errors.New("标题鉴定未通过")
|
||||
}
|
||||
ok, err = check.SecurityText(req.Content)
|
||||
if err != nil {
|
||||
service.Error(ctx, err)
|
||||
return
|
||||
return nil, err
|
||||
}
|
||||
if !ok {
|
||||
service.Error(ctx, errors.New("内容鉴定未通过"))
|
||||
return
|
||||
return nil, errors.New("内容鉴定未通过")
|
||||
}*/
|
||||
if req.From != "ai" {
|
||||
for _, v := range req.Images {
|
||||
if filepath.Ext(v) != ".jpg" && filepath.Ext(v) != ".jpeg" {
|
||||
return nil, errors.New("图片格式只支持jpg")
|
||||
}
|
||||
}
|
||||
}
|
||||
images := req.Images
|
||||
req.Images = []string{}
|
||||
var imageUrl string
|
||||
for _, v := range images {
|
||||
imageUrl, err = checkAndReuploadImage(v, "image")
|
||||
if err != nil {
|
||||
return nil, errors.New("图片转换错误")
|
||||
}
|
||||
req.Images = append(req.Images, imageUrl)
|
||||
}
|
||||
artistId, _ := strconv.ParseUint(req.ArtistUuid, 10, 64)
|
||||
infoResp, err = service.AccountFieeProvider.Info(context.Background(), &accountFiee.InfoRequest{
|
||||
ID: artistId,
|
||||
Domain: "app",
|
||||
})
|
||||
zap.L().Info("UpdateWorkImage infoResp", zap.Any("infoResp", infoResp))
|
||||
zap.L().Info("UpdateWorkImage infoResp1", zap.Any("infoResp", infoResp))
|
||||
if err != nil {
|
||||
service.Error(ctx, err)
|
||||
return
|
||||
return nil, err
|
||||
}
|
||||
|
||||
req.ArtistName = infoResp.Name
|
||||
req.ArtistPhone = infoResp.TelNum
|
||||
req.ArtistPhoneAreaCode = infoResp.TelAreaCode
|
||||
req.ArtistSubNum = infoResp.SubNum
|
||||
//artistID, _ := strconv.ParseUint(req.ArtistUuid, 10, 64)
|
||||
//if _, err = CheckUserBundleBalance(int32(artistID), modelCast.BalanceTypeImageValue); err != nil {
|
||||
// service.Error(ctx, err)
|
||||
// return
|
||||
// return nil, err
|
||||
//}
|
||||
|
||||
// 处理内容中的标签:提取、验证并批量导入,以及自动生成标签
|
||||
content, err := processContentAndAutoTags(ctx, req.Content)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
// 将自动生成标签后的内容更新到请求中
|
||||
req.Content = content
|
||||
newCtx := NewCtxWithUserInfo(ctx)
|
||||
req.Source = 1
|
||||
resp, err := service.CastProvider.UpdateWorkImage(newCtx, req)
|
||||
zap.L().Info("UpdateWorkImage resp", zap.Any("resp", resp))
|
||||
if err != nil {
|
||||
zap.L().Error("UpdateWorkImage err", zap.Error(err))
|
||||
return nil, err
|
||||
}
|
||||
return resp, nil
|
||||
}
|
||||
|
||||
func UpdateWorkImage(ctx *gin.Context) {
|
||||
var req *cast.UpdateWorkImageReq
|
||||
var err error
|
||||
if err = ctx.ShouldBind(&req); err != nil {
|
||||
service.Error(ctx, err)
|
||||
return
|
||||
}
|
||||
resp, err := UpdateWorkImageCore(ctx, req)
|
||||
if err != nil {
|
||||
service.Error(ctx, err)
|
||||
return
|
||||
@ -140,21 +179,115 @@ func UpdateWorkImage(ctx *gin.Context) {
|
||||
return
|
||||
}
|
||||
|
||||
func UpdateWorkVideo(ctx *gin.Context) {
|
||||
var req *cast.UpdateWorkVideoReq
|
||||
func processContentTags(ctx *gin.Context, content string) error {
|
||||
// 如果内容为空,直接返回
|
||||
if content == "" {
|
||||
return nil
|
||||
}
|
||||
|
||||
// 提取标签
|
||||
tags := utils.ExtractTags(content)
|
||||
if len(tags) == 0 {
|
||||
return nil
|
||||
}
|
||||
|
||||
// 第一步:检查标签格式(验证标签不为空且有效)
|
||||
validTags := make([]string, 0, len(tags))
|
||||
for _, tag := range tags {
|
||||
// 去除空白字符后检查
|
||||
cleanTag := strings.TrimSpace(tag)
|
||||
if cleanTag != "" {
|
||||
validTags = append(validTags, cleanTag)
|
||||
}
|
||||
}
|
||||
|
||||
// 如果没有有效标签,直接返回
|
||||
if len(validTags) == 0 {
|
||||
return nil
|
||||
}
|
||||
|
||||
// 第二步:检查是否有重复的标签
|
||||
tagMap := make(map[string]bool)
|
||||
for _, tag := range validTags {
|
||||
tagLower := strings.ToLower(tag)
|
||||
if tagMap[tagLower] {
|
||||
return errors.New("帖子标签不能重复")
|
||||
}
|
||||
tagMap[tagLower] = true
|
||||
}
|
||||
|
||||
// 第三步:检查标签数量是否超过5个
|
||||
if len(validTags) > 5 {
|
||||
return errors.New("帖子标签数量不能超过5个")
|
||||
}
|
||||
|
||||
fmt.Println("validTags", validTags)
|
||||
|
||||
// 第四步:调用 SaveTagsToDatabase 函数批量导入标签,Source 设置为 3(推荐标签)
|
||||
if err := SaveTagsToDatabase(ctx, validTags, 3); err != nil {
|
||||
zap.L().Error("processContentTags SaveTagsToDatabase failed", zap.Error(err))
|
||||
return errors.New("批量导入标签失败")
|
||||
}
|
||||
|
||||
zap.L().Info("processContentTags success", zap.Int("tagCount", len(validTags)), zap.Strings("tags", validTags))
|
||||
return nil
|
||||
}
|
||||
|
||||
// processContentAndAutoTags 处理内容标签并自动生成标签
|
||||
func processContentAndAutoTags(ctx *gin.Context, content string) (string, error) {
|
||||
// 如果内容为空,直接返回
|
||||
if content == "" {
|
||||
return "", nil
|
||||
}
|
||||
// 处理内容中的标签:提取、验证并批量导入
|
||||
if err := processContentTags(ctx, content); err != nil {
|
||||
return content, err
|
||||
}
|
||||
// 处理完内容标签后,自动生成标签并存入数据库
|
||||
resp, newTags, needMore, err := GenerateAutoHashtags(
|
||||
context.Background(),
|
||||
content,
|
||||
0, // max 为0时自动计算
|
||||
"", // position 使用默认值
|
||||
"", // language 使用默认值
|
||||
)
|
||||
if err != nil {
|
||||
return content, err
|
||||
}
|
||||
|
||||
if resp == nil {
|
||||
return content, nil
|
||||
}
|
||||
|
||||
// 保存新生成的标签到数据库
|
||||
if needMore && len(newTags) > 0 {
|
||||
if saveErr := SaveTagsToDatabase(ctx, newTags, 4); saveErr != nil {
|
||||
zap.L().Error("processContentAndAutoTags SaveTagsToDatabase failed", zap.Error(saveErr))
|
||||
return content, errors.New("自动生成标签保存到数据库失败")
|
||||
}
|
||||
}
|
||||
// 检查一下 resp.Post 是否为空
|
||||
if resp.Post == "" {
|
||||
return content, nil
|
||||
}
|
||||
return resp.Post, nil
|
||||
}
|
||||
|
||||
// UpdateWorkVideoCore 更新作品视频的核心逻辑,可以被其他函数复用
|
||||
func UpdateWorkVideoCore(ctx *gin.Context, req *cast.UpdateWorkVideoReq) (*cast.UpdateWorkVideoResp, error) {
|
||||
var infoResp *accountFiee.UserInfoResponse
|
||||
var err error
|
||||
var ok bool
|
||||
if err = ctx.ShouldBind(&req); err != nil {
|
||||
service.Error(ctx, err)
|
||||
return
|
||||
if req.CoverUrl != "" {
|
||||
if filepath.Ext(req.CoverUrl) != ".jpg" && filepath.Ext(req.CoverUrl) != ".jpeg" {
|
||||
return nil, errors.New("图片格式只支持jpg")
|
||||
}
|
||||
}
|
||||
loginInfo := login.GetUserInfoFromC(ctx)
|
||||
lockKey := fmt.Sprintf("lock_update_work_video_%d", loginInfo.ID)
|
||||
reply := cache.RedisClient.SetNX(lockKey, time.Now().Format("2006-01-02 15:04:05"), time.Second*5)
|
||||
if !reply.Val() {
|
||||
service.Error(ctx, errors.New("请勿重复提交"))
|
||||
return
|
||||
return nil, errors.New("请勿重复提交")
|
||||
}
|
||||
defer func() {
|
||||
cache.RedisClient.Del(lockKey)
|
||||
@ -162,45 +295,36 @@ func UpdateWorkVideo(ctx *gin.Context) {
|
||||
fmt.Println(ok)
|
||||
/* ok, err = check.SecurityText(req.Title)
|
||||
if err != nil {
|
||||
service.Error(ctx, err)
|
||||
return
|
||||
return nil, err
|
||||
}
|
||||
if !ok {
|
||||
service.Error(ctx, errors.New("标题鉴定未通过"))
|
||||
return
|
||||
return nil, errors.New("标题鉴定未通过")
|
||||
}
|
||||
ok, err = check.SecurityText(req.Content)
|
||||
if err != nil {
|
||||
service.Error(ctx, err)
|
||||
return
|
||||
return nil, err
|
||||
}
|
||||
if !ok {
|
||||
service.Error(ctx, errors.New("内容鉴定未通过"))
|
||||
return
|
||||
return nil, errors.New("内容鉴定未通过")
|
||||
}
|
||||
ok, err = check.SecurityFile(req.CoverUrl)
|
||||
if err != nil {
|
||||
service.Error(ctx, err)
|
||||
return
|
||||
return nil, err
|
||||
}
|
||||
if !ok {
|
||||
service.Error(ctx, errors.New("图片鉴定未通过"))
|
||||
return
|
||||
return nil, errors.New("图片鉴定未通过")
|
||||
}*/
|
||||
|
||||
if req.VideoUrl != "" {
|
||||
if req.VideoUrl != "" && false {
|
||||
//请求接口判断
|
||||
fileResp, errs := service.FilesProvider.GetFileSecurityStatus(ctx, &files.GetFileSecurityStatusReq{
|
||||
Url: req.VideoUrl,
|
||||
FileName: "",
|
||||
})
|
||||
if errs != nil {
|
||||
service.Error(ctx, err)
|
||||
return
|
||||
return nil, errs
|
||||
}
|
||||
if fileResp.SecurityStatus == "high" {
|
||||
service.Error(ctx, errors.New("视频鉴定未通过"))
|
||||
return
|
||||
return nil, errors.New("视频鉴定未通过")
|
||||
}
|
||||
}
|
||||
if config.AppConfig.System.AppMode != "dev" {
|
||||
@ -211,8 +335,7 @@ func UpdateWorkVideo(ctx *gin.Context) {
|
||||
})
|
||||
zap.L().Info("UpdateWorkVideo", zap.Any("infoResp", infoResp))
|
||||
if err != nil {
|
||||
service.Error(ctx, err)
|
||||
return
|
||||
return nil, err
|
||||
}
|
||||
} else {
|
||||
infoResp = &accountFiee.UserInfoResponse{
|
||||
@ -223,17 +346,39 @@ func UpdateWorkVideo(ctx *gin.Context) {
|
||||
}
|
||||
//artistID, _ := strconv.ParseUint(req.ArtistUuid, 10, 64)
|
||||
//if _, err = CheckUserBundleBalance(int32(artistID), modelCast.BalanceTypeVideoValue); err != nil {
|
||||
// service.Error(ctx, err)
|
||||
// return
|
||||
// return nil, err
|
||||
//}
|
||||
req.ArtistName = infoResp.Name
|
||||
req.ArtistPhone = infoResp.TelNum
|
||||
req.ArtistPhoneAreaCode = infoResp.TelAreaCode
|
||||
req.ArtistSubNum = infoResp.SubNum
|
||||
|
||||
// 处理内容中的标签:提取、验证并批量导入,以及自动生成标签
|
||||
fmt.Println("UpdateWorkVideoCore: req.Content=", req.Content, "req.Title=", req.Title)
|
||||
content, err := processContentAndAutoTags(ctx, req.Content)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
// 将自动生成标签后的内容更新到请求中
|
||||
req.Content = content
|
||||
newCtx := NewCtxWithUserInfo(ctx)
|
||||
req.Source = 1
|
||||
resp, err := service.CastProvider.UpdateWorkVideo(newCtx, req)
|
||||
zap.L().Info("UpdateWorkVideo", zap.Any("resp", resp))
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return resp, nil
|
||||
}
|
||||
|
||||
func UpdateWorkVideo(ctx *gin.Context) {
|
||||
var req *cast.UpdateWorkVideoReq
|
||||
var err error
|
||||
if err = ctx.ShouldBind(&req); err != nil {
|
||||
service.Error(ctx, err)
|
||||
return
|
||||
}
|
||||
resp, err := UpdateWorkVideoCore(ctx, req)
|
||||
if err != nil {
|
||||
service.Error(ctx, err)
|
||||
return
|
||||
@ -401,10 +546,26 @@ func Publish(ctx *gin.Context) {
|
||||
return
|
||||
}
|
||||
newCtx := NewCtxWithUserInfo(ctx)
|
||||
loginInfo := login.GetUserInfoFromC(ctx)
|
||||
var extraBytes []byte
|
||||
extraBytes, _ = json.Marshal(req)
|
||||
_, err = service.CastProvider.UpsertTaskList(newCtx, &cast.UpsertTaskListReq{
|
||||
Action: "publishBatch1",
|
||||
Url: "",
|
||||
Status: 1,
|
||||
OperatorID: fmt.Sprint(loginInfo.ID),
|
||||
OperatorName: loginInfo.Name,
|
||||
ExtraData: string(extraBytes),
|
||||
})
|
||||
if err != nil {
|
||||
service.Error(ctx, err)
|
||||
return
|
||||
}
|
||||
if err = PublishWork(newCtx, req); err != nil {
|
||||
service.Error(ctx, err)
|
||||
return
|
||||
}
|
||||
|
||||
service.Success(ctx, req)
|
||||
return
|
||||
}
|
||||
@ -412,7 +573,6 @@ func Publish(ctx *gin.Context) {
|
||||
// PublishWork 统一发布
|
||||
func PublishWork(ctx context.Context, req *cast.PublishReq) error {
|
||||
var (
|
||||
wg sync.WaitGroup
|
||||
errsMu sync.Mutex
|
||||
errs []error
|
||||
)
|
||||
@ -420,32 +580,69 @@ func PublishWork(ctx context.Context, req *cast.PublishReq) error {
|
||||
if len(req.WorkUuids) == 0 {
|
||||
return errors.New("请选择作品")
|
||||
}
|
||||
jobs := make(chan string, len(req.WorkUuids))
|
||||
// 添加日志
|
||||
zap.L().Info("开始发布作品", zap.Int("总数", len(req.WorkUuids)))
|
||||
startTime := time.Now().Unix()
|
||||
workerCount := 10
|
||||
if len(req.WorkUuids) < workerCount {
|
||||
workerCount = len(req.WorkUuids) // 避免创建多余的协程
|
||||
}
|
||||
for i := 0; i < workerCount; i++ {
|
||||
wg.Add(1)
|
||||
go func() {
|
||||
defer wg.Done()
|
||||
for workUuid := range jobs {
|
||||
if err := PostAS(workUuid); err != nil {
|
||||
errsMu.Lock()
|
||||
errs = append(errs, err)
|
||||
errsMu.Unlock()
|
||||
|
||||
// 每批次协程数量设为8
|
||||
workerCount := 8
|
||||
batchSize := workerCount // 每批处理8个任务
|
||||
|
||||
// 分批处理
|
||||
for batchStart := 0; batchStart < len(req.WorkUuids); batchStart += batchSize {
|
||||
batchEnd := batchStart + batchSize
|
||||
if batchEnd > len(req.WorkUuids) {
|
||||
batchEnd = len(req.WorkUuids)
|
||||
}
|
||||
|
||||
currentBatch := req.WorkUuids[batchStart:batchEnd]
|
||||
batchNum := batchStart/batchSize + 1
|
||||
totalBatches := (len(req.WorkUuids) + batchSize - 1) / batchSize
|
||||
|
||||
zap.L().Info("开始处理批次",
|
||||
zap.Int("批次", batchNum),
|
||||
zap.Int("总批次", totalBatches),
|
||||
zap.Int("本批数量", len(currentBatch)))
|
||||
|
||||
// 处理当前批次
|
||||
var wg sync.WaitGroup
|
||||
jobs := make(chan string, len(currentBatch))
|
||||
|
||||
currentWorkerCount := workerCount
|
||||
if len(currentBatch) < workerCount {
|
||||
currentWorkerCount = len(currentBatch) // 避免创建多余的协程
|
||||
}
|
||||
|
||||
for i := 0; i < currentWorkerCount; i++ {
|
||||
wg.Add(1)
|
||||
go func() {
|
||||
defer wg.Done()
|
||||
for workUuid := range jobs {
|
||||
if err := PostAS(ctx, workUuid); err != nil {
|
||||
errsMu.Lock()
|
||||
errs = append(errs, err)
|
||||
errsMu.Unlock()
|
||||
}
|
||||
}
|
||||
}
|
||||
}()
|
||||
}()
|
||||
}
|
||||
|
||||
for _, workUuid := range currentBatch {
|
||||
jobs <- workUuid
|
||||
}
|
||||
close(jobs)
|
||||
wg.Wait()
|
||||
|
||||
zap.L().Info("批次处理完成", zap.Int("批次", batchNum))
|
||||
|
||||
// 如果不是最后一批,等待10-15秒再进行下一批
|
||||
if batchEnd < len(req.WorkUuids) {
|
||||
waitTime := 10 + time.Duration(time.Now().UnixNano()%6) // 随机10-15秒
|
||||
zap.L().Info("等待后再处理下一批", zap.Int64("等待秒数", int64(waitTime)))
|
||||
time.Sleep(waitTime * time.Second)
|
||||
}
|
||||
}
|
||||
for _, workUuid := range req.WorkUuids {
|
||||
jobs <- workUuid
|
||||
}
|
||||
close(jobs)
|
||||
wg.Wait()
|
||||
|
||||
// 统计结果
|
||||
successCount := len(req.WorkUuids) - len(errs)
|
||||
zap.L().Info("发布完成",
|
||||
@ -460,9 +657,11 @@ func PublishWork(ctx context.Context, req *cast.PublishReq) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func PostAS(workUuid string) error {
|
||||
func PostAS(ctx context.Context, workUuid string) error {
|
||||
var err error
|
||||
_, err = service.CastProvider.Publish(context.Background(), &cast.PublishReq{WorkUuids: []string{workUuid}})
|
||||
//检查封面
|
||||
_ = CheckImage(workUuid)
|
||||
_, err = service.CastProvider.Publish(ctx, &cast.PublishReq{WorkUuids: []string{workUuid}})
|
||||
if err != nil {
|
||||
zap.L().Error("Publish err", zap.String("workUuid", workUuid), zap.Error(err))
|
||||
return err
|
||||
@ -484,7 +683,8 @@ func PostAS(workUuid string) error {
|
||||
needPlatformIDs := workDetail.NeedPlatformIDs
|
||||
if len(needPlatformIDs) == 0 {
|
||||
zap.L().Error("Publish WorkDetail failed 作品无发布平台", zap.String("workUuid", workUuid))
|
||||
return errors.New("作品无发布平台")
|
||||
return nil
|
||||
//return errors.New("作品无发布平台")
|
||||
}
|
||||
zap.L().Info("post 2", zap.Any("workUuid", workUuid))
|
||||
var mediaUrls []string
|
||||
@ -494,7 +694,12 @@ func PostAS(workUuid string) error {
|
||||
if workDetail.WorkCategory == 1 {
|
||||
isVideo = false
|
||||
// 先用服务器上的文件,不上传到第三方
|
||||
mediaUrls = workDetail.Images
|
||||
//mediaUrls = workDetail.Images
|
||||
mediaUrls, err = ProcessImg(workDetail.Images)
|
||||
if err != nil {
|
||||
mediaUrls = workDetail.Images
|
||||
err = nil
|
||||
}
|
||||
/* for _, imageUrl := range workDetail.Images {
|
||||
urlResp, err = UploadMediaByURL(context.Background(), imageUrl, "", "")
|
||||
if err != nil {
|
||||
@ -510,6 +715,10 @@ func PostAS(workUuid string) error {
|
||||
isVideo = true
|
||||
mediaUrls = []string{workDetail.VideoUrl}
|
||||
coverUrl = workDetail.CoverUrl
|
||||
coverUrls, _ := ProcessImg([]string{workDetail.CoverUrl})
|
||||
if len(coverUrls) > 0 {
|
||||
coverUrl = coverUrls[0]
|
||||
}
|
||||
// 先用服务器上的文件,不上传到第三方
|
||||
/*urlResp, err = UploadMediaByURL(context.Background(), workDetail.VideoUrl, "", "")
|
||||
if err != nil {
|
||||
@ -646,14 +855,14 @@ func PostAS(workUuid string) error {
|
||||
}
|
||||
infoReq := &cast.UpdateWorkPlatformInfoReq{PlatformInfoData: make([]*cast.PlatformInfo, 0)}
|
||||
infoReq.PlatformInfoData = append(infoReq.PlatformInfoData, &cast.PlatformInfo{
|
||||
WorkUuid: workDetail.WorkUuid,
|
||||
MediaAccountUuid: "",
|
||||
PlatformID: uint32(platformID),
|
||||
PublishType: 2,
|
||||
PublishResp: _err.Error(),
|
||||
PublishMediaId: "",
|
||||
PublishStatus: cast.PublishStatusENUM_PublishMediaStatus_EXCEPTION,
|
||||
Remark: "",
|
||||
WorkUuid: workDetail.WorkUuid,
|
||||
MediaAccountUuid: "",
|
||||
PlatformID: uint32(platformID),
|
||||
PublishType: 2,
|
||||
PublishResp: _err.Error(),
|
||||
PublishMediaId: "",
|
||||
PublishMediaStatus: cast.PublishStatusENUM_PublishMediaStatus_EXCEPTION,
|
||||
Remark: "",
|
||||
})
|
||||
zap.L().Info("UpdateWorkPlatformInfo", zap.Any("infoReq", infoReq))
|
||||
_, errS = service.CastProvider.UpdateWorkPlatformInfo(context.Background(), infoReq)
|
||||
@ -707,14 +916,14 @@ func PostAS(workUuid string) error {
|
||||
}
|
||||
postBytes, _ = json.Marshal(postInfo)
|
||||
infoReq.PlatformInfoData = append(infoReq.PlatformInfoData, &cast.PlatformInfo{
|
||||
WorkUuid: workDetail.WorkUuid,
|
||||
MediaAccountUuid: "",
|
||||
PlatformID: pid,
|
||||
PublishType: 2,
|
||||
PublishResp: string(postBytes),
|
||||
PublishMediaId: postResp.Posts[0].Id,
|
||||
PublishStatus: publishStatus,
|
||||
Remark: string(postData),
|
||||
WorkUuid: workDetail.WorkUuid,
|
||||
MediaAccountUuid: "",
|
||||
PlatformID: pid,
|
||||
PublishType: 2,
|
||||
PublishResp: string(postBytes),
|
||||
PublishMediaId: postResp.Posts[0].Id,
|
||||
PublishMediaStatus: publishStatus,
|
||||
Remark: string(postData),
|
||||
})
|
||||
}
|
||||
zap.L().Info("post 10", zap.Any("workUuid", workUuid), zap.Any("platformID", platformID))
|
||||
@ -772,7 +981,22 @@ func RePublish(ctx *gin.Context) {
|
||||
service.Error(ctx, err)
|
||||
return
|
||||
}
|
||||
fmt.Println(resp)
|
||||
loginInfo := login.GetUserInfoFromC(ctx)
|
||||
var extraBytes []byte
|
||||
extraBytes, _ = json.Marshal(req)
|
||||
_, err = service.CastProvider.UpsertTaskList(newCtx, &cast.UpsertTaskListReq{
|
||||
Action: "publishBatch2",
|
||||
Url: "",
|
||||
Status: 1,
|
||||
OperatorID: fmt.Sprint(loginInfo.ID),
|
||||
OperatorName: loginInfo.Name,
|
||||
ExtraData: string(extraBytes),
|
||||
})
|
||||
if err != nil {
|
||||
zap.L().Error("RePublish UpsertTaskList failed", zap.Error(err))
|
||||
service.Error(ctx, err)
|
||||
return
|
||||
}
|
||||
if err = PublishWork(newCtx, &cast.PublishReq{WorkUuids: resp.WorkUuids}); err != nil {
|
||||
service.Error(ctx, err)
|
||||
return
|
||||
@ -940,31 +1164,87 @@ func PublishInfo(ctx *gin.Context) {
|
||||
|
||||
func WorkListExport(ctx *gin.Context) {
|
||||
var (
|
||||
req *cast.WorkListReq
|
||||
resp *cast.WorkListResp
|
||||
req *cast.WorkListReq
|
||||
)
|
||||
var err error
|
||||
if err = ctx.ShouldBind(&req); err != nil {
|
||||
service.Error(ctx, err)
|
||||
return
|
||||
}
|
||||
loginInfo := login.GetUserInfoFromC(ctx)
|
||||
newCtx := NewCtxWithUserInfo(ctx)
|
||||
resp, err = service.CastProvider.WorkList(newCtx, req)
|
||||
if err != nil {
|
||||
service.Error(ctx, err)
|
||||
lockKey := "WorkListExport" + fmt.Sprint(loginInfo.ID)
|
||||
replay := cache.RedisClient.SetNX(lockKey, time.Now().Unix(), time.Minute*30)
|
||||
if !replay.Val() {
|
||||
service.Error(ctx, errors.New("请勿重复导出"))
|
||||
return
|
||||
}
|
||||
defer cache.RedisClient.Del(lockKey)
|
||||
const batchSize = 5000
|
||||
var allData []*cast.WorkListResp_Info
|
||||
// 使用map去重,避免重复导出
|
||||
page := int32(1)
|
||||
if req.Page > 0 {
|
||||
page = req.Page
|
||||
}
|
||||
|
||||
// 保存原始的PageSize
|
||||
originalPageSize := req.PageSize
|
||||
req.PageSize = batchSize
|
||||
|
||||
zap.L().Info("开始分批导出作品列表", zap.Int32("batchSize", batchSize))
|
||||
|
||||
for {
|
||||
req.Page = page
|
||||
zap.L().Info("获取第 N 页数据", zap.Int32("page", page), zap.Int32("pageSize", req.PageSize))
|
||||
|
||||
resp, err := service.CastProvider.WorkList(newCtx, req)
|
||||
if err != nil {
|
||||
zap.L().Error("获取作品列表失败", zap.Error(err), zap.Int32("page", page))
|
||||
service.Error(ctx, errors.New("获取数据失败"))
|
||||
return
|
||||
}
|
||||
|
||||
if resp == nil || len(resp.Data) == 0 {
|
||||
zap.L().Info("没有更多数据", zap.Int32("page", page))
|
||||
break
|
||||
}
|
||||
// 去重并添加数据
|
||||
addedCount := 0
|
||||
allData = append(allData, resp.Data...)
|
||||
zap.L().Info("获取数据成功",
|
||||
zap.Int32("page", page),
|
||||
zap.Int("本批次数量", len(resp.Data)),
|
||||
zap.Int("去重后新增", addedCount),
|
||||
zap.Int("累计总数", len(allData)))
|
||||
if len(resp.Data) < batchSize {
|
||||
zap.L().Info("已到最后一页", zap.Int32("page", page))
|
||||
break
|
||||
}
|
||||
page++
|
||||
}
|
||||
req.PageSize = originalPageSize
|
||||
zap.L().Info("数据获取完成,开始生成Excel", zap.Int("总数据量", len(allData)))
|
||||
if len(allData) == 0 {
|
||||
service.Error(ctx, errors.New("没有可导出的数据"))
|
||||
return
|
||||
}
|
||||
|
||||
var logicCastWork = new(logicCast.Work)
|
||||
excelFile, err := logicCastWork.ExportExcelWorkList(resp.Data)
|
||||
excelFile, err := logicCastWork.ExportExcelWorkList(allData)
|
||||
if err != nil {
|
||||
zap.L().Error("生成Excel失败", zap.Error(err))
|
||||
service.Error(ctx, err)
|
||||
return
|
||||
}
|
||||
|
||||
fileName := fmt.Sprintf("作品列表_%s.xlsx", time.Now().Format("20060102"))
|
||||
ctx.Header("Content-Type", "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet")
|
||||
ctx.Header("Content-Disposition", "attachment; filename="+fileName)
|
||||
ctx.Header("File-Name", fileName)
|
||||
ctx.Header("Access-Control-Expose-Headers", "File-Name")
|
||||
|
||||
zap.L().Info("Excel导出成功", zap.String("文件名", fileName), zap.Int("记录数", len(allData)))
|
||||
_ = excelFile.Write(ctx.Writer)
|
||||
}
|
||||
|
||||
@ -1246,6 +1526,15 @@ func ImportWorkBatch(ctx *gin.Context) {
|
||||
req.ImageWorks = append(req.ImageWorks, temp)
|
||||
break
|
||||
}
|
||||
// 处理内容中的标签:提取、验证并批量导入,以及自动生成标签
|
||||
processedContent, err := processContentAndAutoTags(ctx, temp.Content)
|
||||
if err != nil {
|
||||
temp.Remark = fmt.Sprintf("%s", err.Error())
|
||||
req.ImageWorks = append(req.ImageWorks, temp)
|
||||
break
|
||||
}
|
||||
// 将处理后的内容更新到 temp.Content
|
||||
temp.Content = processedContent
|
||||
}
|
||||
}
|
||||
for i := 10; i <= 20; i++ {
|
||||
@ -1474,9 +1763,11 @@ func ImportWorkBatch(ctx *gin.Context) {
|
||||
return
|
||||
}
|
||||
}
|
||||
service.CastProvider.UpsertTaskList(context.Background(), &cast.UpsertTaskListReq{
|
||||
urlResult, _ = upload.PutBos(excelPath, "excel", true)
|
||||
_, _ = service.CastProvider.UpsertTaskList(context.Background(), &cast.UpsertTaskListReq{
|
||||
Uuid: taskResp.Uuid,
|
||||
Status: 3,
|
||||
Url: urlResult,
|
||||
})
|
||||
service.Success(ctx, map[string]interface{}{
|
||||
"successCount": resp.SuccessCount,
|
||||
@ -1510,6 +1801,14 @@ func RefreshPublish() error {
|
||||
}
|
||||
for _, platformInfo := range workInfo.PlatformInfoData {
|
||||
if platformInfo.PublishMediaID == "" {
|
||||
var infoReq = &cast.UpdateWorkPlatformInfoReq{
|
||||
PlatformInfoData: make([]*cast.PlatformInfo, 0),
|
||||
}
|
||||
infoReq.PlatformInfoData = append(infoReq.PlatformInfoData, &cast.PlatformInfo{
|
||||
WorkUuid: workInfo.WorkUuid,
|
||||
PublishMediaStatus: cast.PublishStatusENUM_PublishMediaStatus_NO,
|
||||
})
|
||||
_, _ = service.CastProvider.UpdateWorkPlatformInfo(context.Background(), infoReq)
|
||||
continue
|
||||
}
|
||||
var infoReq = &cast.UpdateWorkPlatformInfoReq{
|
||||
@ -1522,15 +1821,15 @@ func RefreshPublish() error {
|
||||
map[string]string{"Authorization": "Bearer " + platformInfo.Token}, config.AppConfig.System.ProxyUrl)
|
||||
if err != nil {
|
||||
infoReq.PlatformInfoData = append(infoReq.PlatformInfoData, &cast.PlatformInfo{
|
||||
WorkUuid: workInfo.WorkUuid,
|
||||
MediaAccountUuid: "",
|
||||
PlatformID: uint32(platformInfo.PlatformID),
|
||||
PublishType: 2,
|
||||
PublishResp: err.Error(),
|
||||
PublishMediaId: platformInfo.PublishMediaID,
|
||||
PublishStatus: cast.PublishStatusENUM_PublishMediaStatus_EXCEPTION,
|
||||
Remark: "",
|
||||
PlatformUuid: platformInfo.PlatformUuid,
|
||||
WorkUuid: workInfo.WorkUuid,
|
||||
MediaAccountUuid: "",
|
||||
PlatformID: uint32(platformInfo.PlatformID),
|
||||
PublishType: 2,
|
||||
PublishResp: err.Error(),
|
||||
PublishMediaId: platformInfo.PublishMediaID,
|
||||
PublishMediaStatus: cast.PublishStatusENUM_PublishMediaStatus_EXCEPTION,
|
||||
Remark: "",
|
||||
PlatformUuid: platformInfo.PlatformUuid,
|
||||
})
|
||||
_, _ = service.CastProvider.UpdateWorkPlatformInfo(context.Background(), infoReq)
|
||||
continue
|
||||
@ -1539,15 +1838,15 @@ func RefreshPublish() error {
|
||||
_ = json.Unmarshal(dmData, &dmPost)
|
||||
if dmPost.Published {
|
||||
infoReq.PlatformInfoData = append(infoReq.PlatformInfoData, &cast.PlatformInfo{
|
||||
WorkUuid: workInfo.WorkUuid,
|
||||
MediaAccountUuid: "",
|
||||
PlatformID: uint32(platformInfo.PlatformID),
|
||||
PublishType: 2,
|
||||
PublishResp: string(dmData),
|
||||
PublishMediaId: platformInfo.PublishMediaID,
|
||||
PublishStatus: cast.PublishStatusENUM_PublishMediaStatus_DONE,
|
||||
Remark: "",
|
||||
PlatformUuid: platformInfo.PlatformUuid,
|
||||
WorkUuid: workInfo.WorkUuid,
|
||||
MediaAccountUuid: "",
|
||||
PlatformID: uint32(platformInfo.PlatformID),
|
||||
PublishType: 2,
|
||||
PublishResp: string(dmData),
|
||||
PublishMediaId: platformInfo.PublishMediaID,
|
||||
PublishMediaStatus: cast.PublishStatusENUM_PublishMediaStatus_DONE,
|
||||
Remark: "",
|
||||
PlatformUuid: platformInfo.PlatformUuid,
|
||||
})
|
||||
_, _ = service.CastProvider.UpdateWorkPlatformInfo(context.Background(), infoReq)
|
||||
} else {
|
||||
@ -1592,15 +1891,15 @@ func RefreshPublish() error {
|
||||
})
|
||||
}(workInfo)
|
||||
infoReq.PlatformInfoData = append(infoReq.PlatformInfoData, &cast.PlatformInfo{
|
||||
WorkUuid: workInfo.WorkUuid,
|
||||
MediaAccountUuid: "",
|
||||
PlatformID: uint32(platformInfo.PlatformID),
|
||||
PublishType: 2,
|
||||
PublishResp: _err.Error(),
|
||||
PublishMediaId: platformInfo.PublishMediaID,
|
||||
PublishStatus: cast.PublishStatusENUM_PublishMediaStatus_EXCEPTION,
|
||||
Remark: "",
|
||||
PlatformUuid: platformInfo.PlatformUuid,
|
||||
WorkUuid: workInfo.WorkUuid,
|
||||
MediaAccountUuid: "",
|
||||
PlatformID: uint32(platformInfo.PlatformID),
|
||||
PublishType: 2,
|
||||
PublishResp: _err.Error(),
|
||||
PublishMediaId: platformInfo.PublishMediaID,
|
||||
PublishMediaStatus: cast.PublishStatusENUM_PublishMediaStatus_EXCEPTION,
|
||||
Remark: "",
|
||||
PlatformUuid: platformInfo.PlatformUuid,
|
||||
})
|
||||
_, _ = service.CastProvider.UpdateWorkPlatformInfo(context.Background(), infoReq)
|
||||
continue
|
||||
@ -1612,15 +1911,15 @@ func RefreshPublish() error {
|
||||
postBytes, _ = json.Marshal(postResp)
|
||||
if len(postResp.PostIds) == 0 || len(postResp.Errors) > 0 {
|
||||
infoReq.PlatformInfoData = append(infoReq.PlatformInfoData, &cast.PlatformInfo{
|
||||
WorkUuid: workInfo.WorkUuid,
|
||||
MediaAccountUuid: "",
|
||||
PlatformID: uint32(platformInfo.PlatformID),
|
||||
PublishType: 2,
|
||||
PublishResp: string(postBytes),
|
||||
PublishMediaId: platformInfo.PublishMediaID,
|
||||
PublishStatus: cast.PublishStatusENUM_PublishMediaStatus_FAIL,
|
||||
Remark: "",
|
||||
PlatformUuid: platformInfo.PlatformUuid,
|
||||
WorkUuid: workInfo.WorkUuid,
|
||||
MediaAccountUuid: "",
|
||||
PlatformID: uint32(platformInfo.PlatformID),
|
||||
PublishType: 2,
|
||||
PublishResp: string(postBytes),
|
||||
PublishMediaId: platformInfo.PublishMediaID,
|
||||
PublishMediaStatus: cast.PublishStatusENUM_PublishMediaStatus_FAIL,
|
||||
Remark: "",
|
||||
PlatformUuid: platformInfo.PlatformUuid,
|
||||
})
|
||||
_, _ = service.CastProvider.UpdateWorkPlatformInfo(context.Background(), infoReq)
|
||||
}
|
||||
@ -1642,15 +1941,15 @@ func RefreshPublish() error {
|
||||
}
|
||||
platformID := modelCast.NamePlatformIDKv[vv.Platform]
|
||||
infoReq.PlatformInfoData = append(infoReq.PlatformInfoData, &cast.PlatformInfo{
|
||||
WorkUuid: workInfo.WorkUuid,
|
||||
MediaAccountUuid: "",
|
||||
PlatformID: platformID,
|
||||
PublishType: 2,
|
||||
PublishResp: string(postBytes),
|
||||
PublishMediaId: platformInfo.PublishMediaID,
|
||||
PublishStatus: publishStatus,
|
||||
Remark: "",
|
||||
PlatformUuid: platformInfo.PlatformUuid,
|
||||
WorkUuid: workInfo.WorkUuid,
|
||||
MediaAccountUuid: "",
|
||||
PlatformID: platformID,
|
||||
PublishType: 2,
|
||||
PublishResp: string(postBytes),
|
||||
PublishMediaId: platformInfo.PublishMediaID,
|
||||
PublishMediaStatus: publishStatus,
|
||||
Remark: "",
|
||||
PlatformUuid: platformInfo.PlatformUuid,
|
||||
})
|
||||
}
|
||||
_, _ = service.CastProvider.UpdateWorkPlatformInfo(context.Background(), infoReq)
|
||||
@ -1659,3 +1958,88 @@ func RefreshPublish() error {
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// checkAndReuploadImage 检查图片链接是否包含aliyuncs.com,如果包含则下载并重新上传
|
||||
func checkAndReuploadImage(imageUrl string, mediaType string) (string, error) {
|
||||
var fullPath string
|
||||
var err error
|
||||
u, err := url.Parse(imageUrl)
|
||||
if err != nil {
|
||||
return "", errors.New("图片链接解析错误")
|
||||
}
|
||||
fileExt := filepath.Ext(u.Path)
|
||||
if strings.Contains(imageUrl, "aliyuncs.com") || (fileExt != ".jpg" && fileExt != ".jpeg") {
|
||||
fullPath, err = utils.SaveUrlFileDisk(imageUrl, "runtime/work/", uuid.New().String()+fileExt)
|
||||
if err != nil {
|
||||
zap.L().Error("SaveUrlFileDisk err", zap.Error(err))
|
||||
return "", errors.New("保存图片失败")
|
||||
}
|
||||
}
|
||||
if fullPath == "" {
|
||||
return imageUrl, nil
|
||||
}
|
||||
file, _ := os.Open(fullPath)
|
||||
defer file.Close()
|
||||
img, format, err := image.Decode(file)
|
||||
if err != nil {
|
||||
return "", errors.New("图片解码失败")
|
||||
}
|
||||
fmt.Println("原始图片格式:", format)
|
||||
newFilePath := "./runtime/work/" + uuid.New().String() + ".jpg"
|
||||
// 如果不是 jpg,则转换
|
||||
if format != "jpeg" {
|
||||
out, err := os.Create(newFilePath)
|
||||
if err != nil {
|
||||
return "", errors.New("打开文件失败")
|
||||
}
|
||||
defer out.Close()
|
||||
|
||||
err = jpeg.Encode(out, img, &jpeg.Options{Quality: 90})
|
||||
if err != nil {
|
||||
return "", errors.New("打开文件失败")
|
||||
}
|
||||
fmt.Println("已转换为 JPG: output.jpg")
|
||||
} else {
|
||||
fmt.Println("本身就是 JPG,无需转换")
|
||||
}
|
||||
compressUrl, err := upload.PutBos(newFilePath, mediaType, true)
|
||||
if err != nil {
|
||||
return "", errors.New(common.ErrorUploadFile)
|
||||
}
|
||||
return compressUrl, nil
|
||||
}
|
||||
|
||||
func ProcessImg(imgs []string) ([]string, error) {
|
||||
var newImgs []string
|
||||
for _, img := range imgs {
|
||||
newPath, err := utilsImg.ProcessFromURL(
|
||||
img,
|
||||
utilsImg.Options{
|
||||
TargetWidth: 1024,
|
||||
TargetHeight: 1024,
|
||||
MaxSizeMB: 1, // 提高到 2MB,对于 1024x1024 更合理
|
||||
Mode: utilsImg.ResizeModePad, // 等比缩放+留白
|
||||
OutputDir: "./runtime/tmp/images/processed",
|
||||
MinQuality: 20, // 最低质量阈值
|
||||
MaxRetries: 15, // 最大尝试次数
|
||||
AllowResolutionReduction: true, // 允许降低分辨率
|
||||
ForceJPEG: true, // 强制转换为 JPEG 格式
|
||||
},
|
||||
)
|
||||
if err != nil {
|
||||
zap.L().Error("processImg err", zap.Error(err), zap.Any("img", img))
|
||||
newImgs = append(newImgs, img)
|
||||
err = nil
|
||||
continue
|
||||
}
|
||||
exportUrl, err := upload.PutBos(newPath, "fieework", true)
|
||||
if err != nil {
|
||||
zap.L().Error("upload.PutBos err", zap.Error(err), zap.Any("img", img))
|
||||
newImgs = append(newImgs, img)
|
||||
err = nil
|
||||
continue
|
||||
}
|
||||
newImgs = append(newImgs, exportUrl)
|
||||
}
|
||||
return newImgs, nil
|
||||
}
|
||||
|
||||
@ -56,6 +56,7 @@ func ImageCheckByte(file *multipart.FileHeader) (bool, error) {
|
||||
}
|
||||
|
||||
func SecurityFile(textVal string) (bool, error) {
|
||||
return true, nil
|
||||
if textVal == "" {
|
||||
return true, nil
|
||||
}
|
||||
@ -79,6 +80,7 @@ func SecurityFile(textVal string) (bool, error) {
|
||||
return true, nil
|
||||
}
|
||||
func SecurityText(textVal string) (bool, error) {
|
||||
return true, nil
|
||||
aliConfig, err := pkgSecurity.GetGlobalConfig("./data/alibabacloud.env")
|
||||
if err != nil {
|
||||
return false, err
|
||||
|
||||
@ -4,13 +4,19 @@ import (
|
||||
"context"
|
||||
"errors"
|
||||
"fmt"
|
||||
account "fonchain-fiee/api/accountFiee"
|
||||
"fonchain-fiee/api/cron"
|
||||
"fonchain-fiee/pkg/service"
|
||||
"fonchain-fiee/pkg/utils"
|
||||
"log"
|
||||
"os"
|
||||
"path/filepath"
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
"github.com/gin-gonic/gin/binding"
|
||||
"github.com/xuri/excelize/v2"
|
||||
"google.golang.org/protobuf/types/known/emptypb"
|
||||
)
|
||||
|
||||
@ -112,20 +118,36 @@ func ExportExcelExecutionResult(c *gin.Context) {
|
||||
service.Error(c, errors.New("网络超时,请重试"))
|
||||
return
|
||||
}
|
||||
userListRes, err := service.AccountFieeProvider.UserList(context.Background(), &account.UserListRequest{
|
||||
Domain: "app",
|
||||
})
|
||||
if err != nil {
|
||||
service.Error(c, errors.New("用户查询失败"))
|
||||
return
|
||||
}
|
||||
idFindSubName := make(map[uint64]string)
|
||||
for _, v := range userListRes.UserList {
|
||||
idFindSubName[v.Id] = v.SubNum
|
||||
}
|
||||
|
||||
titleList := []string{
|
||||
"任务标题", "艺人编号", "艺人姓名", "内容类型", "内容标题", "执行结果", "原因",
|
||||
"任务标题", "艺人编号", "艺人姓名", "内容类型", "内容标题", "执行结果", "原因", "TIKTOK", "YOUTUBE", "INS", "DM", "BULESKY",
|
||||
}
|
||||
var dataList []interface{}
|
||||
for _, task := range res.Data {
|
||||
data := []interface{}{
|
||||
task.TaskTitle,
|
||||
task.ArtistId,
|
||||
idFindSubName[uint64(task.ArtistId)],
|
||||
task.ArtistName,
|
||||
task.ContentTypeDescription,
|
||||
task.WorkTitle,
|
||||
task.ResultDescription,
|
||||
task.ResultDesc,
|
||||
task.TIKTOKStatusDesc,
|
||||
task.YOUTUBEStatusDesc,
|
||||
task.INSStatusDesc,
|
||||
task.DMStatusDesc,
|
||||
task.BULESKYStatusDesc,
|
||||
}
|
||||
dataList = append(dataList, &data)
|
||||
}
|
||||
@ -205,3 +227,160 @@ func GetScheduleTaskStatus(c *gin.Context) {
|
||||
}
|
||||
service.Success(c, res)
|
||||
}
|
||||
|
||||
func GetImportData(c *gin.Context) {
|
||||
defer func() {
|
||||
if r := recover(); r != nil {
|
||||
service.Error(c, errors.New("操作失败"))
|
||||
}
|
||||
}()
|
||||
|
||||
// 导入excel
|
||||
excelFile, err := c.FormFile("excel")
|
||||
if err != nil {
|
||||
service.Error(c, errors.New("缺少excel文件"))
|
||||
return
|
||||
}
|
||||
|
||||
// 创建临时文件
|
||||
tempDir := "tmp"
|
||||
if err = os.MkdirAll(tempDir, 0755); err != nil {
|
||||
service.Error(c, errors.New("创建临时目录失败"))
|
||||
return
|
||||
}
|
||||
defer os.RemoveAll(tempDir)
|
||||
|
||||
// 保存excel
|
||||
excelPath := filepath.Join(tempDir, "excel.xlsx")
|
||||
if err = c.SaveUploadedFile(excelFile, excelPath); err != nil {
|
||||
service.Error(c, errors.New("保存excel文件失败"))
|
||||
return
|
||||
}
|
||||
|
||||
// 读取excel
|
||||
readExcelResult, err := readExcel(excelPath)
|
||||
if err != nil {
|
||||
service.Error(c, fmt.Errorf("读取excel失败: %v", err))
|
||||
return
|
||||
}
|
||||
if len(readExcelResult) == 0 {
|
||||
service.Error(c, errors.New("请检查excel文件"))
|
||||
return
|
||||
}
|
||||
//去重操作
|
||||
set := make(map[string]struct{})
|
||||
var uniqueExcelData []excelData
|
||||
for _, data := range readExcelResult {
|
||||
if _, exists := set[data.SubName]; !exists {
|
||||
set[data.SubName] = struct{}{}
|
||||
uniqueExcelData = append(uniqueExcelData, data)
|
||||
}
|
||||
}
|
||||
res, err := service.AccountFieeProvider.UserList(context.Background(), &account.UserListRequest{
|
||||
Domain: "app",
|
||||
})
|
||||
if err != nil {
|
||||
service.Error(c, errors.New("用户查询失败"))
|
||||
return
|
||||
}
|
||||
//检查subname是否正确是否存在
|
||||
subNames := make(map[string]struct{}, len(res.UserList))
|
||||
for _, v := range res.UserList {
|
||||
subNames[v.SubNum] = struct{}{}
|
||||
}
|
||||
for _, v := range uniqueExcelData {
|
||||
if _, ok := subNames[v.SubName]; !ok {
|
||||
service.Error(c, errors.New(fmt.Sprintf("第 %d 行数据错误,请检查数据!", v.Line)))
|
||||
return
|
||||
}
|
||||
}
|
||||
//检查subname和name是否匹配
|
||||
subNameFindExcelData := make(map[string]excelData, len(uniqueExcelData))
|
||||
for _, v := range uniqueExcelData {
|
||||
subNameFindExcelData[v.SubName] = v
|
||||
}
|
||||
subNameFindID := make(map[string]uint64, len(uniqueExcelData))
|
||||
result := make([]excelDataResult, 0, len(uniqueExcelData))
|
||||
for _, v := range res.UserList {
|
||||
subNameFindID[v.SubNum] = v.Id
|
||||
if subNameFindExcelData[v.SubNum].Name != v.Name && subNameFindExcelData[v.SubNum].Name != "" {
|
||||
fmt.Println(subNameFindExcelData[v.SubNum], v.Name)
|
||||
service.Error(c, errors.New(fmt.Sprintf("第 %d 行数据错误,请检查数据!", subNameFindExcelData[v.SubNum].Line)))
|
||||
return
|
||||
}
|
||||
}
|
||||
for _, v := range uniqueExcelData {
|
||||
result = append(result, excelDataResult{
|
||||
Id: subNameFindID[v.SubName],
|
||||
Name: v.Name,
|
||||
})
|
||||
}
|
||||
service.Success(c, result)
|
||||
return
|
||||
}
|
||||
|
||||
type excelData struct {
|
||||
Line uint `json:"line"`
|
||||
SubName string `json:"subName"`
|
||||
Name string `json:"name"`
|
||||
}
|
||||
|
||||
type excelDataResult struct {
|
||||
Id uint64 `json:"id"`
|
||||
Name string `json:"name"`
|
||||
}
|
||||
|
||||
func readExcel(excelPath string) ([]excelData, error) {
|
||||
//打开excel
|
||||
f, err := excelize.OpenFile(excelPath)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
defer f.Close()
|
||||
|
||||
//读取第一页
|
||||
sheetName := f.GetSheetName(0)
|
||||
if sheetName == "" {
|
||||
return nil, errors.New("excel文件中没有工作表")
|
||||
}
|
||||
|
||||
//读取数据
|
||||
rows, err := f.GetRows(sheetName)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("读取工作表失败: %v", err)
|
||||
}
|
||||
|
||||
if len(rows) <= 1 {
|
||||
return nil, errors.New("excel文件没有数据行(只有表头或为空)")
|
||||
}
|
||||
var result []excelData
|
||||
for i := 1; i < len(rows); i++ { // 从第2行开始(跳过表头)
|
||||
row := rows[i]
|
||||
if len(row) == 0 {
|
||||
continue
|
||||
}
|
||||
|
||||
subName := getCellValue(f, sheetName, i, 0)
|
||||
name := getCellValue(f, sheetName, i, 1)
|
||||
data := excelData{
|
||||
Line: uint(i + 1),
|
||||
SubName: subName,
|
||||
Name: name,
|
||||
}
|
||||
result = append(result, data)
|
||||
}
|
||||
|
||||
return result, nil
|
||||
}
|
||||
func getCellValue(f *excelize.File, sheetName string, rowIndex, colIndex int) string {
|
||||
colName, _ := excelize.ColumnNumberToName(colIndex + 1)
|
||||
cell := fmt.Sprintf("%s%d", colName, rowIndex+1)
|
||||
|
||||
value, err := f.GetCellValue(sheetName, cell)
|
||||
if err != nil {
|
||||
log.Printf("读取单元格 %s 失败: %v", cell, err)
|
||||
return ""
|
||||
}
|
||||
|
||||
return strings.TrimSpace(value)
|
||||
}
|
||||
|
||||
38
pkg/service/emailAlerts/emailAlerts.go
Normal file
38
pkg/service/emailAlerts/emailAlerts.go
Normal file
@ -0,0 +1,38 @@
|
||||
package emailalerts
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"fonchain-fiee/api/emailAlerts"
|
||||
"fonchain-fiee/pkg/service"
|
||||
"fonchain-fiee/pkg/service/bundle/common"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
)
|
||||
|
||||
func EmailAlertSubmit(ctx *gin.Context) {
|
||||
var req emailAlerts.EmailAlertsSubmitReq
|
||||
if err := ctx.ShouldBindJSON(&req); err != nil {
|
||||
service.Error(ctx, err)
|
||||
return
|
||||
}
|
||||
resp, err := service.EmailAlertsProvider.EmailAlertsSubmit(ctx, &req)
|
||||
if err != nil {
|
||||
service.Error(ctx, errors.New(common.ErrorEmailAlertSubmitFailed))
|
||||
return
|
||||
}
|
||||
service.Success(ctx, resp)
|
||||
}
|
||||
|
||||
func GetEmailInformationList(ctx *gin.Context) {
|
||||
var req emailAlerts.GetEmailInformationListReq
|
||||
if err := ctx.ShouldBindJSON(&req); err != nil {
|
||||
service.Error(ctx, err)
|
||||
return
|
||||
}
|
||||
resp, err := service.EmailAlertsProvider.GetEmailInformationList(ctx, &req)
|
||||
if err != nil {
|
||||
service.Error(ctx, errors.New(common.ErrorGetEmailInformationListFailed))
|
||||
return
|
||||
}
|
||||
service.Success(ctx, resp)
|
||||
}
|
||||
@ -4,6 +4,7 @@ import (
|
||||
"bytes"
|
||||
"context"
|
||||
"errors"
|
||||
"fmt"
|
||||
"fonchain-fiee/api/files"
|
||||
"fonchain-fiee/pkg/service"
|
||||
"fonchain-fiee/pkg/service/bundle/common"
|
||||
@ -102,6 +103,15 @@ func Create(ctx *gin.Context) {
|
||||
}
|
||||
|
||||
func Delete(ctx *gin.Context) {
|
||||
path := ctx.DefaultQuery("path", "/")
|
||||
nowYear := time.Now().Year()
|
||||
nowMonth := time.Now().Month()
|
||||
nowYearPath := fmt.Sprintf("/fiee/video/%d", nowYear)
|
||||
nowMonthPath := fmt.Sprintf("/fiee/video/%d/%d-%d", nowYear, nowYear, nowMonth)
|
||||
if path == nowYearPath || path == nowMonthPath || path == "/fiee" || path == "/fiee/video" || path == "/fiee/video/old" {
|
||||
service.Error(ctx, errors.New("无法删除该目录"))
|
||||
return
|
||||
}
|
||||
resp, err := service.FilesProvider.Delete(ctx, &files.DeleteReq{
|
||||
Path: ctx.DefaultQuery("path", "/"),
|
||||
UserSpacePath: getUserSpacePath(ctx),
|
||||
|
||||
@ -47,7 +47,12 @@ func Delete(ctx *gin.Context) {
|
||||
}
|
||||
|
||||
func Display(ctx *gin.Context) {
|
||||
resp, err := service.GovernanceProvider.Display(ctx, &governance.DisplayReq{})
|
||||
var req governance.DisplayReq
|
||||
if err := ctx.ShouldBindJSON(&req); err != nil {
|
||||
service.Error(ctx, err)
|
||||
return
|
||||
}
|
||||
resp, err := service.GovernanceProvider.Display(ctx, &req)
|
||||
if err != nil {
|
||||
service.Error(ctx, errors.New(common.DisplayGovernanceFailed))
|
||||
return
|
||||
@ -85,3 +90,34 @@ func Edit(ctx *gin.Context) {
|
||||
}
|
||||
service.Success(ctx, resp)
|
||||
}
|
||||
|
||||
func UpdataStatus(ctx *gin.Context) {
|
||||
var req governance.UpdataStatusReq
|
||||
if err := ctx.ShouldBindJSON(&req); err != nil {
|
||||
service.Error(ctx, err)
|
||||
return
|
||||
}
|
||||
user := login.GetUserInfoFromC(ctx)
|
||||
req.Operator = user.Name
|
||||
req.OperatorId = int32(user.ID)
|
||||
resp, err := service.GovernanceProvider.UpdataStatus(ctx, &req)
|
||||
if err != nil {
|
||||
service.Error(ctx, err)
|
||||
return
|
||||
}
|
||||
service.Success(ctx, resp)
|
||||
}
|
||||
|
||||
func GetGovernanceInfo(ctx *gin.Context) {
|
||||
var req governance.GetGovernanceInfoReq
|
||||
if err := ctx.ShouldBindJSON(&req); err != nil {
|
||||
service.Error(ctx, err)
|
||||
return
|
||||
}
|
||||
resp, err := service.GovernanceProvider.GetGovernanceInfo(ctx, &req)
|
||||
if err != nil {
|
||||
service.Error(ctx, err)
|
||||
return
|
||||
}
|
||||
service.Success(ctx, resp)
|
||||
}
|
||||
|
||||
@ -30,6 +30,8 @@ type excelData struct {
|
||||
SubNum string //用户编号 必须字段
|
||||
TikTok string
|
||||
Instagram string
|
||||
YouTube string
|
||||
BlueSky string
|
||||
Youtube string
|
||||
Desc string //艺人简介
|
||||
TitleRequire string //标题要求 必须字段
|
||||
@ -178,27 +180,30 @@ func readExcel(excelPath string) ([]excelData, error) {
|
||||
if subNum == "" {
|
||||
return nil, fmt.Errorf("第%d行应该有编号", i+1)
|
||||
}
|
||||
tikTok := getCellValue(f, sheetName, i, 2)
|
||||
blueSky := getCellValue(f, sheetName, i, 2)
|
||||
if blueSky == "" {
|
||||
return nil, fmt.Errorf("第%d行应该有bluesky账号昵称", i+1)
|
||||
}
|
||||
tikTok := getCellValue(f, sheetName, i, 3)
|
||||
if tikTok == "" {
|
||||
return nil, fmt.Errorf("第%d行应该有tiktok账号昵称", i+1)
|
||||
}
|
||||
instagram := getCellValue(f, sheetName, i, 3)
|
||||
if instagram == "" {
|
||||
return nil, fmt.Errorf("第%d行应该有ins账号昵称", i+1)
|
||||
}
|
||||
desc := getCellValue(f, sheetName, i, 4)
|
||||
titleRequire := getCellValue(f, sheetName, i, 5)
|
||||
instagram := getCellValue(f, sheetName, i, 4)
|
||||
|
||||
desc := getCellValue(f, sheetName, i, 5)
|
||||
|
||||
titleRequire := getCellValue(f, sheetName, i, 6)
|
||||
if titleRequire == "" {
|
||||
return nil, fmt.Errorf("第%d行应该有标题要求", i+1)
|
||||
}
|
||||
contentRequire := getCellValue(f, sheetName, i, 6)
|
||||
contentRequire := getCellValue(f, sheetName, i, 7)
|
||||
if contentRequire == "" {
|
||||
return nil, fmt.Errorf("第%d行应该有内容要求", i+1)
|
||||
}
|
||||
photoRequire := getCellValue(f, sheetName, i, 7)
|
||||
photoUrl := getCellValue(f, sheetName, i, 8)
|
||||
photoNumStr := getCellValue(f, sheetName, i, 9)
|
||||
photoDpi := getCellValue(f, sheetName, i, 10)
|
||||
photoRequire := getCellValue(f, sheetName, i, 8)
|
||||
photoUrl := getCellValue(f, sheetName, i, 9)
|
||||
photoNumStr := getCellValue(f, sheetName, i, 10)
|
||||
photoDpi := getCellValue(f, sheetName, i, 11)
|
||||
var num int
|
||||
if photoUrl == "" { //如果没有关联画作,数量必须有,需求必须有
|
||||
//需求必须有
|
||||
@ -220,6 +225,7 @@ func readExcel(excelPath string) ([]excelData, error) {
|
||||
data := excelData{
|
||||
ArtistName: artistName,
|
||||
SubNum: subNum,
|
||||
BlueSky: blueSky,
|
||||
TikTok: tikTok,
|
||||
Instagram: instagram,
|
||||
Desc: desc,
|
||||
|
||||
@ -1,6 +1,7 @@
|
||||
package imports
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"context"
|
||||
"errors"
|
||||
"fmt"
|
||||
@ -8,6 +9,9 @@ import (
|
||||
apiCast "fonchain-fiee/api/cast"
|
||||
"fonchain-fiee/pkg/config"
|
||||
"fonchain-fiee/pkg/service"
|
||||
"image"
|
||||
"image/draw"
|
||||
"image/jpeg"
|
||||
"io"
|
||||
"log"
|
||||
"math/rand"
|
||||
@ -293,33 +297,62 @@ func (p *BatchProcessor) submitTask(req *excelData) error {
|
||||
if !tiktokFound {
|
||||
return fmt.Errorf("未找到匹配的TikTok账号: %s", req.TikTok)
|
||||
}
|
||||
// 获取 Instagram 自媒体账号
|
||||
accountListIns, err := service.CastProvider.MediaUserList(context.Background(), &apiCast.MediaUserListReq{
|
||||
if req.Instagram != "" {
|
||||
// 获取 Instagram 自媒体账号
|
||||
accountListIns, err := service.CastProvider.MediaUserList(context.Background(), &apiCast.MediaUserListReq{
|
||||
ArtistVal: req.ArtistName,
|
||||
PlatformID: 3,
|
||||
Page: 1,
|
||||
PageSize: 10,
|
||||
ArtistUuid: strconv.FormatUint(list.UserList[0].Id, 10),
|
||||
})
|
||||
if err != nil {
|
||||
return fmt.Errorf("获取 Instagram 账号失败: %s", err.Error())
|
||||
}
|
||||
if accountListIns == nil || len(accountListIns.Data) == 0 {
|
||||
return fmt.Errorf("ins自媒体账号数量为0")
|
||||
}
|
||||
// 查找 Instagram 账号
|
||||
insFound := false
|
||||
for _, user := range accountListIns.Data {
|
||||
if user.PlatformUserName == req.Instagram {
|
||||
req.MediaAccountNames = append(req.MediaAccountNames, user.PlatformUserName)
|
||||
req.MediaAccountUuids = append(req.MediaAccountUuids, user.MediaAccountUuid)
|
||||
insFound = true
|
||||
break
|
||||
}
|
||||
}
|
||||
if !insFound {
|
||||
return fmt.Errorf("未找到匹配的Instagram账号: %s", req.Instagram)
|
||||
}
|
||||
|
||||
}
|
||||
// 获取 Bluesky 自媒体账号
|
||||
accountListBlueSky, err := service.CastProvider.MediaUserList(context.Background(), &apiCast.MediaUserListReq{
|
||||
ArtistVal: req.ArtistName,
|
||||
PlatformID: 3,
|
||||
PlatformID: 5, // Bluesky platform ID
|
||||
Page: 1,
|
||||
PageSize: 10,
|
||||
ArtistUuid: strconv.FormatUint(list.UserList[0].Id, 10),
|
||||
})
|
||||
if err != nil {
|
||||
return fmt.Errorf("获取 Instagram 账号失败: %s", err.Error())
|
||||
return fmt.Errorf("获取 Bluesky 账号失败: %s", err.Error())
|
||||
}
|
||||
if accountListIns == nil || len(accountListIns.Data) == 0 {
|
||||
return fmt.Errorf("ins自媒体账号数量为0")
|
||||
if accountListBlueSky == nil || len(accountListBlueSky.Data) == 0 {
|
||||
return fmt.Errorf("bluesky自媒体账号数量为0")
|
||||
}
|
||||
|
||||
// 查找 Instagram 账号
|
||||
insFound := false
|
||||
for _, user := range accountListIns.Data {
|
||||
if user.PlatformUserName == req.Instagram {
|
||||
// 查找 Bluesky 账号
|
||||
blueSkyFound := false
|
||||
for _, user := range accountListBlueSky.Data {
|
||||
if user.PlatformUserName == req.BlueSky {
|
||||
req.MediaAccountNames = append(req.MediaAccountNames, user.PlatformUserName)
|
||||
req.MediaAccountUuids = append(req.MediaAccountUuids, user.MediaAccountUuid)
|
||||
insFound = true
|
||||
blueSkyFound = true
|
||||
break
|
||||
}
|
||||
}
|
||||
if !insFound {
|
||||
return fmt.Errorf("未找到匹配的Instagram账号: %s", req.Instagram)
|
||||
if !blueSkyFound {
|
||||
return fmt.Errorf("未找到匹配的Bluesky账号: %s", req.BlueSky)
|
||||
}
|
||||
|
||||
switch {
|
||||
@ -543,21 +576,17 @@ func downloadAndUploadToBucket(imageURL string) (string, error) {
|
||||
return "", fmt.Errorf("创建临时目录失败: %v", err)
|
||||
}
|
||||
defer os.RemoveAll(tempDir) // 程序结束时清理整个目录
|
||||
|
||||
// 生成唯一文件名
|
||||
rand.Seed(time.Now().UnixNano())
|
||||
fileName := fmt.Sprintf("%d%04d.jpg", time.Now().Unix(), rand.Intn(10000))
|
||||
timestamp := time.Now().Unix()
|
||||
randomNum := rand.Intn(10000)
|
||||
fileName := fmt.Sprintf("%d%04d.jpg", timestamp, randomNum)
|
||||
|
||||
// 构建文件路径
|
||||
imgPath := filepath.Join(tempDir, fileName)
|
||||
|
||||
// 创建文件
|
||||
file, err := os.Create(imgPath)
|
||||
if err != nil {
|
||||
return "", fmt.Errorf("创建文件失败: %v", err)
|
||||
}
|
||||
defer file.Close()
|
||||
|
||||
log.Printf("文件创建在: %s", imgPath)
|
||||
|
||||
// 下载图片到文件
|
||||
// 下载图片
|
||||
resp, err := http.Get(imageURL)
|
||||
if err != nil {
|
||||
return "", fmt.Errorf("下载图片失败: %v", err)
|
||||
@ -568,50 +597,62 @@ func downloadAndUploadToBucket(imageURL string) (string, error) {
|
||||
return "", fmt.Errorf("下载失败,状态码: %d", resp.StatusCode)
|
||||
}
|
||||
|
||||
// 复制到文件
|
||||
_, err = io.Copy(file, resp.Body)
|
||||
// 读取图片数据
|
||||
imgData, err := io.ReadAll(resp.Body)
|
||||
if err != nil {
|
||||
return "", fmt.Errorf("保存文件失败: %v", err)
|
||||
return "", fmt.Errorf("读取图片数据失败: %v", err)
|
||||
}
|
||||
|
||||
file.Sync()
|
||||
|
||||
fileBytes, err := os.ReadFile(imgPath)
|
||||
// 检测图片格式并转换为JPG
|
||||
jpgData, err := convertToJPG(imgData)
|
||||
if err != nil {
|
||||
return "", fmt.Errorf("读取本地文件失败: %v", err)
|
||||
return "", fmt.Errorf("转换图片格式失败: %v", err)
|
||||
}
|
||||
|
||||
// 保存转换后的JPG文件
|
||||
if err := os.WriteFile(imgPath, jpgData, 0644); err != nil {
|
||||
return "", fmt.Errorf("保存JPG文件失败: %v", err)
|
||||
}
|
||||
|
||||
// 上传到对象存储
|
||||
BOSClient, err := objstorage.NewOSS(
|
||||
os.Getenv(config.ConfigData.Oss.AccessKeyId),
|
||||
os.Getenv(config.ConfigData.Oss.AccessKeySecret),
|
||||
os.Getenv(config.ConfigData.Oss.Endpoint),
|
||||
)
|
||||
if BOSClient == nil {
|
||||
return "", fmt.Errorf("上传文件失败: %v", err)
|
||||
if err != nil {
|
||||
return "", fmt.Errorf("创建OSS客户端失败: %v", err)
|
||||
}
|
||||
_, err = BOSClient.PutObjectFromBytes(os.Getenv(config.ConfigData.Oss.BucketName), fileName, fileBytes)
|
||||
if BOSClient == nil {
|
||||
return "", fmt.Errorf("OSS客户端为空")
|
||||
}
|
||||
|
||||
_, err = BOSClient.PutObjectFromBytes(os.Getenv(config.ConfigData.Oss.BucketName), fileName, jpgData)
|
||||
if err != nil {
|
||||
return "", fmt.Errorf("上传文件失败: %v", err)
|
||||
}
|
||||
url := fmt.Sprintf("%s/%s", os.Getenv(config.ConfigData.Oss.CdnHost), fileName)
|
||||
//上传到桶
|
||||
//BOSClient, err := objstorage.NewOSS(
|
||||
// config.ConfigData.Oss.AccessKeyId,
|
||||
// config.ConfigData.Oss.AccessKeySecret,
|
||||
// config.ConfigData.Oss.Endpoint,
|
||||
//)
|
||||
//if BOSClient == nil {
|
||||
// return "", fmt.Errorf("上传文件失败: %v", err)
|
||||
//}
|
||||
//_, err = BOSClient.PutObjectFromBytes(config.ConfigData.Oss.BucketName, fileName, fileBytes)
|
||||
//if err != nil {
|
||||
// return "", fmt.Errorf("上传文件失败: %v", err)
|
||||
//}
|
||||
//url := fmt.Sprintf("%s/%s", config.ConfigData.Oss.CdnHost, fileName)
|
||||
|
||||
// 返回CDN URL
|
||||
url := fmt.Sprintf("%s/%s", os.Getenv(config.ConfigData.Oss.CdnHost), fileName)
|
||||
return url, nil
|
||||
}
|
||||
|
||||
//上传到桶
|
||||
//BOSClient, err := objstorage.NewOSS(
|
||||
// config.ConfigData.Oss.AccessKeyId,
|
||||
// config.ConfigData.Oss.AccessKeySecret,
|
||||
// config.ConfigData.Oss.Endpoint,
|
||||
//)
|
||||
//if BOSClient == nil {
|
||||
// return "", fmt.Errorf("上传文件失败: %v", err)
|
||||
//}
|
||||
//_, err = BOSClient.PutObjectFromBytes(config.ConfigData.Oss.BucketName, fileName, fileBytes)
|
||||
//if err != nil {
|
||||
// return "", fmt.Errorf("上传文件失败: %v", err)
|
||||
//}
|
||||
//url := fmt.Sprintf("%s/%s", config.ConfigData.Oss.CdnHost, fileName)
|
||||
|
||||
func (p *BatchProcessor) generateTitleAndContent(req *excelData) (string, string, error) {
|
||||
if req.PhotoUrl != "" {
|
||||
title, content, err := NewAiGenerator().GenerateTitleAndContentFromImage(
|
||||
@ -651,7 +692,7 @@ func (p *BatchProcessor) generateImage(req *excelData) (string, error) {
|
||||
prompt += "\n要求不能出现:低质量、残缺、人物正脸、多余的手指、乱码字符和文字、比例不良,场景以国内场景为主"
|
||||
|
||||
if req.PhotoDpi == "" {
|
||||
req.PhotoDpi = "720*1280"
|
||||
req.PhotoDpi = "1024*1024"
|
||||
|
||||
}
|
||||
result, err := NewAiGenerator().TextToImage(
|
||||
@ -665,6 +706,33 @@ func (p *BatchProcessor) generateImage(req *excelData) (string, error) {
|
||||
return result.Output.TaskID, nil
|
||||
}
|
||||
|
||||
// convertToJPG 将图片数据转换为JPG格式
|
||||
func convertToJPG(imgData []byte) ([]byte, error) {
|
||||
// 使用标准库解码
|
||||
img, format, err := image.Decode(bytes.NewReader(imgData))
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("解码图片失败: %v", err)
|
||||
}
|
||||
|
||||
log.Printf("检测到图片格式: %s, 尺寸: %dx%d", format, img.Bounds().Dx(), img.Bounds().Dy())
|
||||
|
||||
// 创建新的RGBA图片
|
||||
bounds := img.Bounds()
|
||||
rgba := image.NewRGBA(bounds)
|
||||
|
||||
// 绘制到RGBA
|
||||
draw.Draw(rgba, bounds, img, bounds.Min, draw.Src)
|
||||
|
||||
// 编码为JPG
|
||||
var buf bytes.Buffer
|
||||
opts := &jpeg.Options{Quality: 90} // 设置质量为90%
|
||||
if err := jpeg.Encode(&buf, rgba, opts); err != nil {
|
||||
return nil, fmt.Errorf("编码JPG失败: %v", err)
|
||||
}
|
||||
|
||||
return buf.Bytes(), nil
|
||||
}
|
||||
|
||||
//func (p *BatchProcessor) StartPolling() {
|
||||
// go func() {
|
||||
// ticker := time.NewTicker(p.pollInterval) // 1秒间隔
|
||||
|
||||
@ -58,6 +58,7 @@ func publishImage(req publishImageReq) (err error) {
|
||||
|
||||
//---------------------------------------------------发布
|
||||
_, err = service.CastProvider.UpdateWorkImage(context.Background(), &apiCast.UpdateWorkImageReq{
|
||||
ArtistSubNum: list.UserList[0].SubNum,
|
||||
Title: req.Title,
|
||||
Content: req.Content,
|
||||
Images: req.GeneratePhotoUrl,
|
||||
|
||||
@ -8,12 +8,16 @@ import (
|
||||
"fonchain-fiee/api/bundle"
|
||||
"fonchain-fiee/api/cast"
|
||||
"fonchain-fiee/api/cron"
|
||||
"fonchain-fiee/api/emailAlerts"
|
||||
"fonchain-fiee/api/files"
|
||||
"fonchain-fiee/api/governance"
|
||||
"fonchain-fiee/api/members"
|
||||
"fonchain-fiee/api/order"
|
||||
"fonchain-fiee/api/payment"
|
||||
"fonchain-fiee/api/pressreleases"
|
||||
"fonchain-fiee/api/reports"
|
||||
"fonchain-fiee/api/secFilings"
|
||||
"fonchain-fiee/api/supplier"
|
||||
pkConfig "fonchain-fiee/pkg/config"
|
||||
"os"
|
||||
|
||||
@ -35,6 +39,10 @@ var PressReleasesProvider = new(pressreleases.PressReleasesClientImpl)
|
||||
var SecFilingProvider = new(secFilings.SecFilingsClientImpl)
|
||||
var AyrshareProvider = new(aryshare.AyrshareClientImpl)
|
||||
var CronProvider = new(cron.CronClientImpl)
|
||||
var SupplierProvider = new(supplier.SupplierClientImpl)
|
||||
var ReportsProvider = new(reports.ReportsClientImpl)
|
||||
var EmailAlertsProvider = new(emailAlerts.EmailAlertsClientImpl)
|
||||
var MembersProvider = new(members.MembersClientImpl)
|
||||
|
||||
func init() {
|
||||
config.SetConsumerService(BundleProvider)
|
||||
@ -49,6 +57,10 @@ func init() {
|
||||
config.SetConsumerService(SecFilingProvider)
|
||||
config.SetConsumerService(AyrshareProvider)
|
||||
config.SetConsumerService(CronProvider)
|
||||
config.SetConsumerService(SupplierProvider)
|
||||
config.SetConsumerService(ReportsProvider)
|
||||
config.SetConsumerService(EmailAlertsProvider)
|
||||
config.SetConsumerService(MembersProvider)
|
||||
|
||||
if err := config.Load(); err != nil {
|
||||
panic(err)
|
||||
|
||||
319
pkg/service/members/members.go
Normal file
319
pkg/service/members/members.go
Normal file
@ -0,0 +1,319 @@
|
||||
package members
|
||||
|
||||
import (
|
||||
"fonchain-fiee/api/members"
|
||||
"fonchain-fiee/pkg/model/login"
|
||||
"fonchain-fiee/pkg/service"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
)
|
||||
|
||||
// =======================成员管理==============================
|
||||
func AddManagement(ctx *gin.Context) {
|
||||
var req members.AddManagementReq
|
||||
if err := ctx.ShouldBindJSON(&req); err != nil {
|
||||
service.Error(ctx, err)
|
||||
return
|
||||
}
|
||||
user := login.GetUserInfoFromC(ctx)
|
||||
req.Operator = user.Name
|
||||
req.OperatorId = int32(user.ID)
|
||||
resp, err := service.MembersProvider.AddManagement(ctx, &req)
|
||||
if err != nil {
|
||||
service.Error(ctx, err)
|
||||
return
|
||||
}
|
||||
service.Success(ctx, resp)
|
||||
}
|
||||
func GetManagementList(ctx *gin.Context) {
|
||||
var req members.GetManagementListReq
|
||||
if err := ctx.ShouldBindJSON(&req); err != nil {
|
||||
service.Error(ctx, err)
|
||||
return
|
||||
}
|
||||
resp, err := service.MembersProvider.GetManagementList(ctx, &req)
|
||||
if err != nil {
|
||||
service.Error(ctx, err)
|
||||
return
|
||||
}
|
||||
service.Success(ctx, resp)
|
||||
}
|
||||
func GetManagementInfo(ctx *gin.Context) {
|
||||
var req members.GetManagementInfoReq
|
||||
if err := ctx.ShouldBindJSON(&req); err != nil {
|
||||
service.Error(ctx, err)
|
||||
return
|
||||
}
|
||||
resp, err := service.MembersProvider.GetManagementInfo(ctx, &req)
|
||||
if err != nil {
|
||||
service.Error(ctx, err)
|
||||
return
|
||||
}
|
||||
service.Success(ctx, resp)
|
||||
}
|
||||
func DeleteManagement(ctx *gin.Context) {
|
||||
var req members.DeleteManagementReq
|
||||
if err := ctx.ShouldBindJSON(&req); err != nil {
|
||||
service.Error(ctx, err)
|
||||
return
|
||||
}
|
||||
resp, err := service.MembersProvider.DeleteManagement(ctx, &req)
|
||||
if err != nil {
|
||||
service.Error(ctx, err)
|
||||
return
|
||||
}
|
||||
service.Success(ctx, resp)
|
||||
}
|
||||
|
||||
func UpdataManagement(ctx *gin.Context) {
|
||||
var req members.SortAndStatusManagementReq
|
||||
if err := ctx.ShouldBindJSON(&req); err != nil {
|
||||
service.Error(ctx, err)
|
||||
return
|
||||
}
|
||||
user := login.GetUserInfoFromC(ctx)
|
||||
req.Operator = user.Name
|
||||
req.OperatorId = int32(user.ID)
|
||||
resp, err := service.MembersProvider.SortAndStatusManagement(ctx, &req)
|
||||
if err != nil {
|
||||
service.Error(ctx, err)
|
||||
return
|
||||
}
|
||||
service.Success(ctx, resp)
|
||||
}
|
||||
func EditManagement(ctx *gin.Context) {
|
||||
var req members.EditManagementReq
|
||||
if err := ctx.ShouldBindJSON(&req); err != nil {
|
||||
service.Error(ctx, err)
|
||||
return
|
||||
}
|
||||
user := login.GetUserInfoFromC(ctx)
|
||||
req.Operator = user.Name
|
||||
req.OperatorId = int32(user.ID)
|
||||
resp, err := service.MembersProvider.EditManagement(ctx, &req)
|
||||
if err != nil {
|
||||
service.Error(ctx, err)
|
||||
return
|
||||
}
|
||||
service.Success(ctx, resp)
|
||||
}
|
||||
func DisplayManagement(ctx *gin.Context) {
|
||||
var req members.DisplayManagementReq
|
||||
if err := ctx.ShouldBindJSON(&req); err != nil {
|
||||
service.Error(ctx, err)
|
||||
return
|
||||
}
|
||||
resp, err := service.MembersProvider.DisplayManagement(ctx, &req)
|
||||
if err != nil {
|
||||
service.Error(ctx, err)
|
||||
return
|
||||
}
|
||||
service.Success(ctx, resp)
|
||||
}
|
||||
|
||||
// ======================董事会管理===========================
|
||||
func AddBoardOfDirectors(ctx *gin.Context) {
|
||||
var req members.AddBoardOfDirectorsReq
|
||||
if err := ctx.ShouldBindJSON(&req); err != nil {
|
||||
service.Error(ctx, err)
|
||||
return
|
||||
}
|
||||
user := login.GetUserInfoFromC(ctx)
|
||||
req.Operator = user.Name
|
||||
req.OperatorId = int32(user.ID)
|
||||
resp, err := service.MembersProvider.AddBoardOfDirectors(ctx, &req)
|
||||
if err != nil {
|
||||
service.Error(ctx, err)
|
||||
return
|
||||
}
|
||||
service.Success(ctx, resp)
|
||||
}
|
||||
|
||||
func GetBoardOfDirectorsList(ctx *gin.Context) {
|
||||
var req members.GetBoardOfDirectorsListReq
|
||||
if err := ctx.ShouldBindJSON(&req); err != nil {
|
||||
service.Error(ctx, err)
|
||||
return
|
||||
}
|
||||
resp, err := service.MembersProvider.GetBoardOfDirectorsList(ctx, &req)
|
||||
if err != nil {
|
||||
service.Error(ctx, err)
|
||||
return
|
||||
}
|
||||
service.Success(ctx, resp)
|
||||
}
|
||||
func GetBoardOfDirectorsInfo(ctx *gin.Context) {
|
||||
var req members.GetBoardOfDirectorsInfoReq
|
||||
if err := ctx.ShouldBindJSON(&req); err != nil {
|
||||
service.Error(ctx, err)
|
||||
return
|
||||
}
|
||||
resp, err := service.MembersProvider.GetBoardOfDirectorsInfo(ctx, &req)
|
||||
if err != nil {
|
||||
service.Error(ctx, err)
|
||||
return
|
||||
}
|
||||
service.Success(ctx, resp)
|
||||
}
|
||||
func DeleteBoardOfDirectors(ctx *gin.Context) {
|
||||
var req members.DeleteBoardOfDirectorsReq
|
||||
if err := ctx.ShouldBindJSON(&req); err != nil {
|
||||
service.Error(ctx, err)
|
||||
return
|
||||
}
|
||||
resp, err := service.MembersProvider.DeleteBoardOfDirectors(ctx, &req)
|
||||
if err != nil {
|
||||
service.Error(ctx, err)
|
||||
return
|
||||
}
|
||||
service.Success(ctx, resp)
|
||||
}
|
||||
|
||||
func UpdataBoardOfDirectors(ctx *gin.Context) {
|
||||
var req members.SortAndStatusBoardOfDirectorsReq
|
||||
if err := ctx.ShouldBindJSON(&req); err != nil {
|
||||
service.Error(ctx, err)
|
||||
return
|
||||
}
|
||||
user := login.GetUserInfoFromC(ctx)
|
||||
req.Operator = user.Name
|
||||
req.OperatorId = int32(user.ID)
|
||||
resp, err := service.MembersProvider.SortAndStatusBoardOfDirectors(ctx, &req)
|
||||
if err != nil {
|
||||
service.Error(ctx, err)
|
||||
return
|
||||
}
|
||||
service.Success(ctx, resp)
|
||||
}
|
||||
func EditBoardOfDirectors(ctx *gin.Context) {
|
||||
var req members.EditBoardOfDirectorsReq
|
||||
if err := ctx.ShouldBindJSON(&req); err != nil {
|
||||
service.Error(ctx, err)
|
||||
return
|
||||
}
|
||||
user := login.GetUserInfoFromC(ctx)
|
||||
req.Operator = user.Name
|
||||
req.OperatorId = int32(user.ID)
|
||||
resp, err := service.MembersProvider.EditBoardOfDirectors(ctx, &req)
|
||||
if err != nil {
|
||||
service.Error(ctx, err)
|
||||
return
|
||||
}
|
||||
service.Success(ctx, resp)
|
||||
}
|
||||
func DisplayBoardOfDirectors(ctx *gin.Context) {
|
||||
var req members.DisplayBoardOfDirectorsReq
|
||||
if err := ctx.ShouldBindJSON(&req); err != nil {
|
||||
service.Error(ctx, err)
|
||||
return
|
||||
}
|
||||
resp, err := service.MembersProvider.DisplayBoardOfDirectors(ctx, &req)
|
||||
if err != nil {
|
||||
service.Error(ctx, err)
|
||||
return
|
||||
}
|
||||
service.Success(ctx, resp)
|
||||
}
|
||||
|
||||
// ======================委员会任命管理===========================
|
||||
func AddCommitteeAppointments(ctx *gin.Context) {
|
||||
var req members.AddCommitteeAppointmentsReq
|
||||
if err := ctx.ShouldBindJSON(&req); err != nil {
|
||||
service.Error(ctx, err)
|
||||
return
|
||||
}
|
||||
user := login.GetUserInfoFromC(ctx)
|
||||
req.Operator = user.Name
|
||||
req.OperatorId = int32(user.ID)
|
||||
resp, err := service.MembersProvider.AddCommitteeAppointments(ctx, &req)
|
||||
if err != nil {
|
||||
service.Error(ctx, err)
|
||||
return
|
||||
}
|
||||
service.Success(ctx, resp)
|
||||
}
|
||||
func GetCommitteeAppointmentsList(ctx *gin.Context) {
|
||||
var req members.GetCommitteeAppointmentsListReq
|
||||
if err := ctx.ShouldBindJSON(&req); err != nil {
|
||||
service.Error(ctx, err)
|
||||
return
|
||||
}
|
||||
resp, err := service.MembersProvider.GetCommitteeAppointmentsList(ctx, &req)
|
||||
if err != nil {
|
||||
service.Error(ctx, err)
|
||||
return
|
||||
}
|
||||
service.Success(ctx, resp)
|
||||
}
|
||||
func GetCommitteeAppointmentsInfo(ctx *gin.Context) {
|
||||
var req members.GetCommitteeAppointmentsInfoReq
|
||||
if err := ctx.ShouldBindJSON(&req); err != nil {
|
||||
service.Error(ctx, err)
|
||||
return
|
||||
}
|
||||
resp, err := service.MembersProvider.GetCommitteeAppointmentsInfo(ctx, &req)
|
||||
if err != nil {
|
||||
service.Error(ctx, err)
|
||||
return
|
||||
}
|
||||
service.Success(ctx, resp)
|
||||
}
|
||||
func DeleteCommitteeAppointments(ctx *gin.Context) {
|
||||
var req members.DeleteCommitteeAppointmentsReq
|
||||
if err := ctx.ShouldBindJSON(&req); err != nil {
|
||||
service.Error(ctx, err)
|
||||
return
|
||||
}
|
||||
resp, err := service.MembersProvider.DeleteCommitteeAppointments(ctx, &req)
|
||||
if err != nil {
|
||||
service.Error(ctx, err)
|
||||
return
|
||||
}
|
||||
service.Success(ctx, resp)
|
||||
}
|
||||
func UpdataCommitteeAppointments(ctx *gin.Context) {
|
||||
var req members.SortAndStatusCommitteeAppointmentsReq
|
||||
if err := ctx.ShouldBindJSON(&req); err != nil {
|
||||
service.Error(ctx, err)
|
||||
return
|
||||
}
|
||||
user := login.GetUserInfoFromC(ctx)
|
||||
req.Operator = user.Name
|
||||
req.OperatorId = int32(user.ID)
|
||||
resp, err := service.MembersProvider.SortAndStatusCommitteeAppointments(ctx, &req)
|
||||
if err != nil {
|
||||
service.Error(ctx, err)
|
||||
return
|
||||
}
|
||||
service.Success(ctx, resp)
|
||||
}
|
||||
func EditCommitteeAppointments(ctx *gin.Context) {
|
||||
var req members.EditCommitteeAppointmentsReq
|
||||
if err := ctx.ShouldBindJSON(&req); err != nil {
|
||||
service.Error(ctx, err)
|
||||
return
|
||||
}
|
||||
user := login.GetUserInfoFromC(ctx)
|
||||
req.Operator = user.Name
|
||||
req.OperatorId = int32(user.ID)
|
||||
resp, err := service.MembersProvider.EditCommitteeAppointments(ctx, &req)
|
||||
if err != nil {
|
||||
service.Error(ctx, err)
|
||||
return
|
||||
}
|
||||
service.Success(ctx, resp)
|
||||
}
|
||||
|
||||
func DisplayCommitteeAppointments(ctx *gin.Context) {
|
||||
var req members.DisplayCommitteeAppointmentsReq
|
||||
if err := ctx.ShouldBindJSON(&req); err != nil {
|
||||
service.Error(ctx, err)
|
||||
return
|
||||
}
|
||||
resp, err := service.MembersProvider.DisplayCommitteeAppointments(ctx, &req)
|
||||
if err != nil {
|
||||
service.Error(ctx, err)
|
||||
return
|
||||
}
|
||||
service.Success(ctx, resp)
|
||||
}
|
||||
@ -2,7 +2,6 @@ package pressreleases
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"strconv"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
|
||||
@ -49,6 +48,10 @@ func Display(ctx *gin.Context) {
|
||||
service.Error(ctx, err)
|
||||
return
|
||||
}
|
||||
if req.LangType == "" {
|
||||
service.Error(ctx, errors.New("语言类型为空"))
|
||||
return
|
||||
}
|
||||
resp, err := service.PressReleasesProvider.Display(ctx, &req)
|
||||
if err != nil {
|
||||
service.Error(ctx, errors.New(common.ListPressReleasesFailed))
|
||||
@ -57,6 +60,34 @@ func Display(ctx *gin.Context) {
|
||||
service.Success(ctx, resp)
|
||||
}
|
||||
|
||||
func SortAndStatus(ctx *gin.Context) {
|
||||
var req pressreleases.SortAndStatusReq
|
||||
if err := ctx.ShouldBindJSON(&req); err != nil {
|
||||
service.Error(ctx, err)
|
||||
return
|
||||
}
|
||||
resp, err := service.PressReleasesProvider.SortAndStatus(ctx, &req)
|
||||
if err != nil {
|
||||
service.Error(ctx, err)
|
||||
return
|
||||
}
|
||||
service.Success(ctx, resp)
|
||||
}
|
||||
|
||||
func Info(ctx *gin.Context) {
|
||||
var req pressreleases.InfoReq
|
||||
if err := ctx.ShouldBindJSON(&req); err != nil {
|
||||
service.Error(ctx, err)
|
||||
return
|
||||
}
|
||||
resp, err := service.PressReleasesProvider.Info(ctx, &req)
|
||||
if err != nil {
|
||||
service.Error(ctx, err)
|
||||
return
|
||||
}
|
||||
service.Success(ctx, resp)
|
||||
}
|
||||
|
||||
func List(ctx *gin.Context) {
|
||||
var req pressreleases.ListReq
|
||||
if err := ctx.ShouldBindJSON(&req); err != nil {
|
||||
@ -89,14 +120,20 @@ func Edit(ctx *gin.Context) {
|
||||
}
|
||||
|
||||
func Get(ctx *gin.Context) {
|
||||
id, err := strconv.Atoi(ctx.Query("id"))
|
||||
if err != nil {
|
||||
service.Error(ctx, err)
|
||||
var req pressreleases.GetReq
|
||||
uuid := ctx.Query("uuid")
|
||||
if uuid == "" {
|
||||
service.Error(ctx, errors.New("uuid 参数不能为空"))
|
||||
return
|
||||
}
|
||||
resp, err := service.PressReleasesProvider.Get(ctx, &pressreleases.GetReq{
|
||||
Id: int64(id),
|
||||
})
|
||||
langType := ctx.Query("langType")
|
||||
if langType == "" {
|
||||
service.Error(ctx, errors.New("langType 参数不能为空"))
|
||||
return
|
||||
}
|
||||
req.Uuid = uuid
|
||||
req.LangType = langType
|
||||
resp, err := service.PressReleasesProvider.Get(ctx, &req)
|
||||
if err != nil {
|
||||
service.Error(ctx, errors.New(common.GetPressReleasesFailed))
|
||||
return
|
||||
|
||||
132
pkg/service/reports/annualReports.go
Normal file
132
pkg/service/reports/annualReports.go
Normal file
@ -0,0 +1,132 @@
|
||||
package reports
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"fonchain-fiee/api/reports"
|
||||
"fonchain-fiee/pkg/model/login"
|
||||
"fonchain-fiee/pkg/service"
|
||||
"fonchain-fiee/pkg/service/bundle/common"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
)
|
||||
|
||||
func AnnualReportCreate(ctx *gin.Context) {
|
||||
var req reports.AddAnnualReportReq
|
||||
if err := ctx.ShouldBindJSON(&req); err != nil {
|
||||
service.Error(ctx, err)
|
||||
return
|
||||
}
|
||||
user := login.GetUserInfoFromC(ctx)
|
||||
req.Operator = user.Name
|
||||
req.OperatorId = int32(user.ID)
|
||||
resp, err := service.ReportsProvider.AddAnnualReport(ctx, &req)
|
||||
if err != nil {
|
||||
service.Error(ctx, errors.New(common.ErrorCreateReportFailed))
|
||||
return
|
||||
}
|
||||
service.Success(ctx, resp)
|
||||
}
|
||||
|
||||
// 修改年度报告排序和状态
|
||||
func AnnualReportSortAndStatus(ctx *gin.Context) {
|
||||
var req reports.SortAndStatusAnnualReportReq
|
||||
if err := ctx.ShouldBindJSON(&req); err != nil {
|
||||
service.Error(ctx, err)
|
||||
return
|
||||
}
|
||||
resp, err := service.ReportsProvider.SortAndStatusAnnualReport(ctx, &req)
|
||||
if err != nil {
|
||||
service.Error(ctx, err)
|
||||
return
|
||||
}
|
||||
service.Success(ctx, resp)
|
||||
}
|
||||
|
||||
// 获取年度报告信息
|
||||
func AnnualReportInfo(ctx *gin.Context) {
|
||||
var req reports.GetAnnualReportInfoReq
|
||||
if err := ctx.ShouldBindJSON(&req); err != nil {
|
||||
service.Error(ctx, err)
|
||||
return
|
||||
}
|
||||
resp, err := service.ReportsProvider.GetAnnualReportInfo(ctx, &req)
|
||||
if err != nil {
|
||||
service.Error(ctx, err)
|
||||
return
|
||||
}
|
||||
service.Success(ctx, resp)
|
||||
}
|
||||
|
||||
// 获取年度报告列表
|
||||
func AnnualReportList(ctx *gin.Context) {
|
||||
var req reports.GetAnnualReportListReq
|
||||
if err := ctx.ShouldBindJSON(&req); err != nil {
|
||||
service.Error(ctx, err)
|
||||
return
|
||||
}
|
||||
resp, err := service.ReportsProvider.GetAnnualReportList(ctx, &req)
|
||||
if err != nil {
|
||||
service.Error(ctx, errors.New(common.ErrorListReportFailed))
|
||||
return
|
||||
}
|
||||
service.Success(ctx, resp)
|
||||
}
|
||||
|
||||
func AnnualReportDelete(ctx *gin.Context) {
|
||||
var req reports.DeleteAnnualReportReq
|
||||
if err := ctx.ShouldBindJSON(&req); err != nil {
|
||||
service.Error(ctx, err)
|
||||
return
|
||||
}
|
||||
resp, err := service.ReportsProvider.DeleteAnnualReport(ctx, &req)
|
||||
if err != nil {
|
||||
service.Error(ctx, errors.New(common.ErrorDeleteReportFailed))
|
||||
return
|
||||
}
|
||||
service.Success(ctx, resp)
|
||||
}
|
||||
|
||||
func AnnualReportEdit(ctx *gin.Context) {
|
||||
var req reports.EditAnnualReportReq
|
||||
if err := ctx.ShouldBindJSON(&req); err != nil {
|
||||
service.Error(ctx, err)
|
||||
return
|
||||
}
|
||||
user := login.GetUserInfoFromC(ctx)
|
||||
req.Operator = user.Name
|
||||
req.OperatorId = int32(user.ID)
|
||||
resp, err := service.ReportsProvider.EditAnnualReport(ctx, &req)
|
||||
if err != nil {
|
||||
service.Error(ctx, errors.New(common.ErrorEditReportFailed))
|
||||
return
|
||||
}
|
||||
service.Success(ctx, resp)
|
||||
}
|
||||
|
||||
func AnnualReportDisplay(ctx *gin.Context) {
|
||||
var req reports.DisplayAnnualReportReq
|
||||
if err := ctx.ShouldBindJSON(&req); err != nil {
|
||||
service.Error(ctx, err)
|
||||
return
|
||||
}
|
||||
resp, err := service.ReportsProvider.DisplayAnnualReport(ctx, &req)
|
||||
if err != nil {
|
||||
service.Error(ctx, errors.New(common.ErrorDisplayReportFailed))
|
||||
return
|
||||
}
|
||||
service.Success(ctx, resp)
|
||||
}
|
||||
|
||||
func QuarterlyReportDisplay(ctx *gin.Context) {
|
||||
var req reports.DisplayQuarterlyReportReq
|
||||
if err := ctx.ShouldBindJSON(&req); err != nil {
|
||||
service.Error(ctx, err)
|
||||
return
|
||||
}
|
||||
resp, err := service.ReportsProvider.DisplayQuarterlyReport(ctx, &req)
|
||||
if err != nil {
|
||||
service.Error(ctx, errors.New(common.ErrorDisplayReportFailed))
|
||||
return
|
||||
}
|
||||
service.Success(ctx, resp)
|
||||
}
|
||||
103
pkg/service/reports/quarterlyReports.go
Normal file
103
pkg/service/reports/quarterlyReports.go
Normal file
@ -0,0 +1,103 @@
|
||||
package reports
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"fonchain-fiee/api/reports"
|
||||
"fonchain-fiee/pkg/model/login"
|
||||
"fonchain-fiee/pkg/service"
|
||||
"fonchain-fiee/pkg/service/bundle/common"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
)
|
||||
|
||||
func QuarterlyReportCreate(ctx *gin.Context) {
|
||||
var req reports.AddQuarterlyReportReq
|
||||
if err := ctx.ShouldBindJSON(&req); err != nil {
|
||||
service.Error(ctx, err)
|
||||
return
|
||||
}
|
||||
user := login.GetUserInfoFromC(ctx)
|
||||
req.Operator = user.Name
|
||||
req.OperatorId = int32(user.ID)
|
||||
resp, err := service.ReportsProvider.AddQuarterlyReport(ctx, &req)
|
||||
if err != nil {
|
||||
service.Error(ctx, errors.New(common.ErrorCreateReportFailed))
|
||||
return
|
||||
}
|
||||
service.Success(ctx, resp)
|
||||
}
|
||||
|
||||
// 修改季度报告排序和状态
|
||||
func QuarterlyReportSortAndStatus(ctx *gin.Context) {
|
||||
var req reports.SortAndStatusQuarterlyReportReq
|
||||
if err := ctx.ShouldBindJSON(&req); err != nil {
|
||||
service.Error(ctx, err)
|
||||
return
|
||||
}
|
||||
resp, err := service.ReportsProvider.SortAndStatusQuarterlyReport(ctx, &req)
|
||||
if err != nil {
|
||||
service.Error(ctx, err)
|
||||
return
|
||||
}
|
||||
service.Success(ctx, resp)
|
||||
}
|
||||
|
||||
// 获取季度报告信息
|
||||
func QuarterlyReportInfo(ctx *gin.Context) {
|
||||
var req reports.GetQuarterlyReportInfoReq
|
||||
if err := ctx.ShouldBindJSON(&req); err != nil {
|
||||
service.Error(ctx, err)
|
||||
return
|
||||
}
|
||||
resp, err := service.ReportsProvider.GetQuarterlyReportInfo(ctx, &req)
|
||||
if err != nil {
|
||||
service.Error(ctx, err)
|
||||
return
|
||||
}
|
||||
service.Success(ctx, resp)
|
||||
}
|
||||
|
||||
func QuarterlyReportList(ctx *gin.Context) {
|
||||
var req reports.GetQuarterlyReportListReq
|
||||
if err := ctx.ShouldBindJSON(&req); err != nil {
|
||||
service.Error(ctx, err)
|
||||
return
|
||||
}
|
||||
resp, err := service.ReportsProvider.GetQuarterlyReportList(ctx, &req)
|
||||
if err != nil {
|
||||
service.Error(ctx, errors.New(common.ErrorListReportFailed))
|
||||
return
|
||||
}
|
||||
service.Success(ctx, resp)
|
||||
}
|
||||
|
||||
func QuarterlyReportDelete(ctx *gin.Context) {
|
||||
var req reports.DeleteQuarterlyReportReq
|
||||
if err := ctx.ShouldBindJSON(&req); err != nil {
|
||||
service.Error(ctx, err)
|
||||
return
|
||||
}
|
||||
resp, err := service.ReportsProvider.DeleteQuarterlyReport(ctx, &req)
|
||||
if err != nil {
|
||||
service.Error(ctx, errors.New(common.ErrorDeleteReportFailed))
|
||||
return
|
||||
}
|
||||
service.Success(ctx, resp)
|
||||
}
|
||||
|
||||
func QuarterlyReportEdit(ctx *gin.Context) {
|
||||
var req reports.EditQuarterlyReportReq
|
||||
if err := ctx.ShouldBindJSON(&req); err != nil {
|
||||
service.Error(ctx, err)
|
||||
return
|
||||
}
|
||||
user := login.GetUserInfoFromC(ctx)
|
||||
req.Operator = user.Name
|
||||
req.OperatorId = int32(user.ID)
|
||||
resp, err := service.ReportsProvider.EditQuarterlyReport(ctx, &req)
|
||||
if err != nil {
|
||||
service.Error(ctx, errors.New(common.ErrorEditReportFailed))
|
||||
return
|
||||
}
|
||||
service.Success(ctx, resp)
|
||||
}
|
||||
394
pkg/service/supplier/supplier.go
Normal file
394
pkg/service/supplier/supplier.go
Normal file
@ -0,0 +1,394 @@
|
||||
package supplier
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"fmt"
|
||||
"fonchain-fiee/api/supplier"
|
||||
"fonchain-fiee/pkg/logic"
|
||||
"fonchain-fiee/pkg/model/login"
|
||||
"fonchain-fiee/pkg/service"
|
||||
"fonchain-fiee/pkg/service/upload"
|
||||
"fonchain-fiee/pkg/utils"
|
||||
"fonchain-fiee/pkg/utils/excel"
|
||||
"os"
|
||||
"time"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
"github.com/gin-gonic/gin/binding"
|
||||
"github.com/google/uuid"
|
||||
)
|
||||
|
||||
func GetSupplier(c *gin.Context) {
|
||||
req := &supplier.GetSupplierRequest{}
|
||||
if err := c.ShouldBindBodyWith(&req, binding.JSON); err != nil {
|
||||
service.Error(c, err)
|
||||
return
|
||||
}
|
||||
res, err := service.SupplierProvider.GetSupplier(c, req)
|
||||
if err != nil {
|
||||
service.Error(c, err)
|
||||
return
|
||||
}
|
||||
|
||||
service.Success(c, res)
|
||||
return
|
||||
}
|
||||
func CreateSupplier(c *gin.Context) {
|
||||
req := &supplier.CreateSupplierRequest{}
|
||||
if err := c.ShouldBindBodyWith(&req, binding.JSON); err != nil {
|
||||
service.Error(c, err)
|
||||
return
|
||||
}
|
||||
res, err := service.SupplierProvider.CreateSupplier(c, req)
|
||||
if err != nil {
|
||||
service.Error(c, err)
|
||||
return
|
||||
}
|
||||
service.Success(c, res)
|
||||
return
|
||||
}
|
||||
|
||||
func UpdateSupplier(c *gin.Context) {
|
||||
req := &supplier.UpdateSupplierRequest{}
|
||||
if err := c.ShouldBindBodyWith(&req, binding.JSON); err != nil {
|
||||
service.Error(c, err)
|
||||
return
|
||||
}
|
||||
info, err := service.SupplierProvider.GetSupplier(c, &supplier.GetSupplierRequest{Id: req.Id})
|
||||
if err != nil {
|
||||
service.Error(c, err)
|
||||
return
|
||||
}
|
||||
if info.Status == 3 {
|
||||
service.Error(c, errors.New("审核中不可修改")) //todo 修改:审核中并且存在审核人 不可修改
|
||||
return
|
||||
}
|
||||
if req.Status != 1 && req.Status != 2 {
|
||||
service.Error(c, errors.New("审批状态错误")) //todo 只允许前端暂存或提交审核申请
|
||||
}
|
||||
res, err := service.SupplierProvider.UpdateSupplier(c, req)
|
||||
if err != nil {
|
||||
service.Error(c, err)
|
||||
return
|
||||
}
|
||||
service.Success(c, res)
|
||||
return
|
||||
}
|
||||
|
||||
func GetSupplierList(c *gin.Context) {
|
||||
req := &supplier.GetSupplierListRequest{}
|
||||
if err := c.ShouldBindBodyWith(&req, binding.JSON); err != nil {
|
||||
service.Error(c, err)
|
||||
return
|
||||
}
|
||||
res, err := service.SupplierProvider.GetSupplierList(c, req)
|
||||
if err != nil {
|
||||
service.Error(c, err)
|
||||
return
|
||||
}
|
||||
service.Success(c, res)
|
||||
return
|
||||
}
|
||||
|
||||
func CreateOrganizeDictionary(c *gin.Context) {
|
||||
req := &supplier.CreateOrganizeDictionaryRequest{}
|
||||
if err := c.ShouldBindBodyWith(&req, binding.JSON); err != nil {
|
||||
service.Error(c, err)
|
||||
return
|
||||
}
|
||||
res, err := service.SupplierProvider.CreateOrganizeDictionary(c, req)
|
||||
if err != nil {
|
||||
service.Error(c, err)
|
||||
return
|
||||
}
|
||||
service.Success(c, res)
|
||||
return
|
||||
}
|
||||
|
||||
func GetOrganizeDictionaryList(c *gin.Context) {
|
||||
req := &supplier.GetOrganizeDictionaryListRequest{}
|
||||
if err := c.ShouldBindBodyWith(&req, binding.JSON); err != nil {
|
||||
service.Error(c, err)
|
||||
return
|
||||
}
|
||||
res, err := service.SupplierProvider.GetOrganizeDictionaryList(c, req)
|
||||
if err != nil {
|
||||
service.Error(c, err)
|
||||
return
|
||||
}
|
||||
service.Success(c, res)
|
||||
return
|
||||
}
|
||||
|
||||
func GetCountryRegionList(c *gin.Context) {
|
||||
req := &supplier.GetCountryRegionListRequest{}
|
||||
if err := c.ShouldBindBodyWith(&req, binding.JSON); err != nil {
|
||||
service.Error(c, err)
|
||||
return
|
||||
}
|
||||
res, err := service.SupplierProvider.GetCountryRegionList(c, req)
|
||||
if err != nil {
|
||||
service.Error(c, err)
|
||||
return
|
||||
}
|
||||
service.Success(c, res)
|
||||
return
|
||||
}
|
||||
|
||||
func CreateImportRecord(c *gin.Context) {
|
||||
file, err := c.FormFile("file")
|
||||
if err != nil {
|
||||
service.Error(c, err)
|
||||
}
|
||||
safeFilename := fmt.Sprintf("%d", time.Now().Unix()) + "_" + file.Filename
|
||||
userInfo := login.GetUserInfoFromC(c)
|
||||
fileDir := fmt.Sprintf("/fiee/supplier/%s/%s_%s", time.Now().Format("2006-01-02"), userInfo.Name, safeFilename)
|
||||
// 保存上传的文件到本地
|
||||
if err = c.SaveUploadedFile(file, safeFilename); err != nil {
|
||||
service.Error(c, err)
|
||||
return
|
||||
}
|
||||
defer func() {
|
||||
if err := os.Remove(safeFilename); err != nil {
|
||||
// 处理删除文件失败的情况
|
||||
fmt.Println("Failed to delete file:", err)
|
||||
}
|
||||
}()
|
||||
inputUrl, err := upload.PutBosWithName(safeFilename, false, fileDir)
|
||||
if err != nil {
|
||||
service.Error(c, err)
|
||||
return
|
||||
}
|
||||
supplierList, err := logic.ImportSupplier(safeFilename)
|
||||
if err != nil {
|
||||
service.Error(c, err)
|
||||
return
|
||||
}
|
||||
if len(supplierList) == 0 {
|
||||
service.Error(c, errors.New("导入数据为空"))
|
||||
return
|
||||
}
|
||||
uuid, _ := uuid.NewUUID()
|
||||
var SuccessNum uint64
|
||||
var SupplierCodes []string
|
||||
var ErrSupplierRes []*logic.ErrSupplierRes
|
||||
for idx, i := range supplierList {
|
||||
rowNum := idx + 1
|
||||
if i.OwningEntityName == "" || i.LegalName == "" || i.CountryOrRegionName == "" || i.CompanyRegistrationNumber == "" || i.SupplierType == "" || i.ApprovalStatus == "" || i.ConnectedParty == "" {
|
||||
ErrSupplierRes = append(ErrSupplierRes, &logic.ErrSupplierRes{
|
||||
ID: rowNum,
|
||||
LegalName: i.LegalName,
|
||||
Remark: "必填项存在空值",
|
||||
})
|
||||
continue
|
||||
}
|
||||
OwningEntityRes, _ := service.SupplierProvider.GetOrganizeDictionaryInfo(c, &supplier.CreateOrganizeDictionaryRequest{Name: i.OwningEntityName})
|
||||
if OwningEntityRes == nil || OwningEntityRes.Id == 0 {
|
||||
ErrSupplierRes = append(ErrSupplierRes, &logic.ErrSupplierRes{
|
||||
ID: rowNum,
|
||||
LegalName: i.LegalName,
|
||||
Remark: "所属组织不存在",
|
||||
})
|
||||
continue
|
||||
}
|
||||
countryRegionRes, _ := service.SupplierProvider.GetCountryRegionInfo(c, &supplier.GetCountryRegionInfoRequest{ZhAndCode: i.CountryOrRegionName})
|
||||
if countryRegionRes == nil || countryRegionRes.Id == 0 {
|
||||
ErrSupplierRes = append(ErrSupplierRes, &logic.ErrSupplierRes{
|
||||
ID: rowNum,
|
||||
LegalName: i.LegalName,
|
||||
Remark: "所属国家或地区不存在",
|
||||
})
|
||||
continue
|
||||
}
|
||||
var LastReviewDate string
|
||||
if i.ApprovalDate != "" {
|
||||
t, err := time.Parse("2006-01-02", i.ApprovalDate)
|
||||
if err != nil {
|
||||
LastReviewDate = ""
|
||||
i.ApprovalDate = ""
|
||||
} else {
|
||||
LastReviewDate = t.AddDate(1, 0, 0).Format("2006-01-02")
|
||||
}
|
||||
}
|
||||
createRes, err := service.SupplierProvider.CreateSupplier(c, &supplier.CreateSupplierRequest{
|
||||
OwningEntityId: OwningEntityRes.Id,
|
||||
LegalName: i.LegalName,
|
||||
LocalName: i.LocalName,
|
||||
AbbreviationName: i.AbbreviationName,
|
||||
CountryOrRegionId: countryRegionRes.Id,
|
||||
CompanyRegistrationNumber: i.CompanyRegistrationNumber,
|
||||
SupplierType: i.SupplierType,
|
||||
ApprovalStatus: i.ApprovalStatus,
|
||||
ApprovalDate: i.ApprovalDate,
|
||||
LastReviewDate: LastReviewDate,
|
||||
LegalEntityType: i.LegalEntityType,
|
||||
SanctionsCountryScreeningResult: i.SanctionsCountryScreeningResult,
|
||||
KeyFinancial: i.KeyFinancial,
|
||||
CompanyAddress: i.CompanyAddress,
|
||||
PrimaryContact: i.PrimaryContact,
|
||||
DataOwnerDepartment: i.DataOwnerDepartment,
|
||||
BasicCompanyInformation: i.BasicCompanyInformation,
|
||||
SupplementaryText: i.SupplementaryText,
|
||||
Status: 1,
|
||||
ConnectedParty: i.ConnectedParty,
|
||||
})
|
||||
if err != nil {
|
||||
ErrSupplierRes = append(ErrSupplierRes, &logic.ErrSupplierRes{
|
||||
ID: rowNum,
|
||||
LegalName: i.LegalName,
|
||||
Remark: err.Error(),
|
||||
})
|
||||
continue
|
||||
} else {
|
||||
SupplierCodes = append(SupplierCodes, createRes.SupplierCode)
|
||||
SuccessNum++
|
||||
}
|
||||
|
||||
}
|
||||
status := 2
|
||||
outUrl := ""
|
||||
if len(ErrSupplierRes) == 0 {
|
||||
status = 1
|
||||
} else {
|
||||
var sheet1Columns = []string{"行数", "供应商法定全称", "错误信息"}
|
||||
var sheet1 = excel.NewSheet("Sheet1", ErrSupplierRes, sheet1Columns)
|
||||
ex, err := excel.NewExcelCreatorFromTemplate("./mistake.xlsx", "./supplier/excel/", "", sheet1)
|
||||
ex.UseOption(excel.OptionFileNameSuffixWithUnixTime)
|
||||
path, _, err := ex.WriteToFile()
|
||||
outUrl, err = upload.PutBos(path, "", false)
|
||||
if err != nil {
|
||||
service.Error(c, err)
|
||||
return
|
||||
}
|
||||
defer func() {
|
||||
os.RemoveAll("./supplier")
|
||||
}()
|
||||
}
|
||||
req := &supplier.CreateImportRecordRequest{
|
||||
SupplierCodes: SupplierCodes,
|
||||
Status: uint64(status),
|
||||
UserId: userInfo.ID,
|
||||
ToLeadUrl: inputUrl,
|
||||
DeriveUrl: outUrl,
|
||||
Uuid: uuid.String(),
|
||||
SuccessNum: SuccessNum,
|
||||
FailNum: uint64(len(ErrSupplierRes)),
|
||||
}
|
||||
_, err = service.SupplierProvider.CreateImportRecord(c, req)
|
||||
if err != nil {
|
||||
service.Error(c, err)
|
||||
return
|
||||
}
|
||||
service.Success(c, req)
|
||||
return
|
||||
}
|
||||
|
||||
func GetImportRecordInfo(c *gin.Context) {
|
||||
req := &supplier.GetImportRecordRequest{}
|
||||
if err := c.ShouldBindBodyWith(&req, binding.JSON); err != nil {
|
||||
service.Error(c, err)
|
||||
return
|
||||
}
|
||||
res, err := service.SupplierProvider.GetImportRecordInfo(c, req)
|
||||
if err != nil {
|
||||
service.Error(c, err)
|
||||
return
|
||||
}
|
||||
service.Success(c, res)
|
||||
return
|
||||
}
|
||||
|
||||
func GetExportList(c *gin.Context) {
|
||||
req := &supplier.GetSupplierListRequest{}
|
||||
if err := c.ShouldBindBodyWith(&req, binding.JSON); err != nil {
|
||||
service.Error(c, err)
|
||||
return
|
||||
}
|
||||
infoRes, err := service.SupplierProvider.GetSupplierList(c, req)
|
||||
if err != nil {
|
||||
service.Error(c, err)
|
||||
return
|
||||
}
|
||||
// 定义标题列表
|
||||
titleList := []string{
|
||||
"状态/State", "使用组织/Owning Entity", "供应商唯一编码/SupplierUnique Code", "供应商法定全称(英文)/LegalName (English)", "供应商本地名称(如有)/LocalName (if applicable)",
|
||||
"所在国家或地区/Country or Region", "公司注册编号/Company RegistrationNumber", "供应商类型/Supplier Type", "*是否关联方/Connected party", "准入状态/Approval Status", "准入日期/ApprovalDate",
|
||||
"法律实体形式/Legal Entity Type", "制裁与高风险国家筛查结果/Sanctions & High-RiskCountry Screening Result", "关键财务与付款信息/Key Financial & Payment Information",
|
||||
"公司地址/Company Address", "主要联系人、职位及联系方式/Primary Contact,Position&Details", "数据维护部门&人员/Data Owner Department/Personnel", "最后更新日期/Last Updated Date",
|
||||
"公司信息概要/Summary of Basic Company Information",
|
||||
}
|
||||
// 定义数据结构
|
||||
type DataInfo struct {
|
||||
Status string
|
||||
OwningEntity string
|
||||
SupplierUniqueCode string
|
||||
LegalName string
|
||||
LocalName string
|
||||
CountryOrRegion string
|
||||
CompanyRegistrationNumber string
|
||||
SupplierType string
|
||||
ConnectedParty string
|
||||
ApprovalStatus string
|
||||
ApprovalDate string
|
||||
LegalEntityType string
|
||||
SanctionsCountryScreeningResult string
|
||||
KeyFinancial string
|
||||
CompanyAddress string
|
||||
PrimaryContact string
|
||||
DataOwnerDepartment string
|
||||
UpdatedAt string
|
||||
BasicCompanyInformation string
|
||||
}
|
||||
// 创建员工ID到DataInfo的映射
|
||||
dataMap := make(map[string]*DataInfo)
|
||||
statusMap := map[uint64]string{
|
||||
1: "草稿",
|
||||
2: "审核中",
|
||||
3: "已驳回",
|
||||
4: "已成功",
|
||||
}
|
||||
for _, info := range infoRes.Data {
|
||||
dataMap[info.SupplierUniqueCode] = &DataInfo{
|
||||
Status: statusMap[info.Status],
|
||||
OwningEntity: info.OwningEntityName,
|
||||
SupplierUniqueCode: info.SupplierUniqueCode,
|
||||
LegalName: info.LegalName,
|
||||
LocalName: info.LocalName,
|
||||
CountryOrRegion: info.CountryOrRegionCode,
|
||||
CompanyRegistrationNumber: info.CompanyRegistrationNumber,
|
||||
SupplierType: info.SupplierType,
|
||||
ConnectedParty: info.ConnectedParty,
|
||||
ApprovalStatus: info.ApprovalStatus,
|
||||
ApprovalDate: info.ApprovalDate,
|
||||
LegalEntityType: info.LegalEntityType,
|
||||
SanctionsCountryScreeningResult: info.SanctionsCountryScreeningResult,
|
||||
KeyFinancial: info.KeyFinancial,
|
||||
CompanyAddress: info.CompanyAddress,
|
||||
PrimaryContact: info.PrimaryContact,
|
||||
DataOwnerDepartment: info.DataOwnerDepartment,
|
||||
UpdatedAt: info.UpdatedAt,
|
||||
BasicCompanyInformation: info.BasicCompanyInformation,
|
||||
}
|
||||
}
|
||||
// 生成最终数据列表
|
||||
var dataList []interface{}
|
||||
for _, data := range dataMap {
|
||||
dataList = append(dataList, &[]any{
|
||||
data.Status, data.OwningEntity, data.SupplierUniqueCode, data.LegalName, data.LocalName,
|
||||
data.CountryOrRegion, data.CompanyRegistrationNumber, data.SupplierType, data.ConnectedParty, data.ApprovalStatus, data.ApprovalDate,
|
||||
data.LegalEntityType, data.SanctionsCountryScreeningResult, data.KeyFinancial, data.CompanyAddress, data.PrimaryContact,
|
||||
data.DataOwnerDepartment, data.UpdatedAt, data.BasicCompanyInformation,
|
||||
})
|
||||
}
|
||||
|
||||
// 生成Excel文件
|
||||
content, err := utils.ToExcelByType(titleList, dataList, "slice", "")
|
||||
if err != nil {
|
||||
service.Error(c, err)
|
||||
return
|
||||
}
|
||||
|
||||
// 返回Excel文件
|
||||
utils.ResponseXls(c, content, "供应商库")
|
||||
return
|
||||
}
|
||||
@ -376,6 +376,11 @@ func UpdateWorkImageWithTaskUUID(ctx *gin.Context) {
|
||||
service.Error(ctx, errors.New("任务已中止,不能上传图文"))
|
||||
return
|
||||
}
|
||||
resp, err := castService.UpdateWorkImageCore(ctx, req.UpdateWorkImageReq)
|
||||
if err != nil {
|
||||
service.Error(ctx, err)
|
||||
return
|
||||
}
|
||||
if config.AppConfig.System.AppMode != "dev" {
|
||||
artistId, _ := strconv.ParseUint(req.ArtistUuid, 10, 64)
|
||||
infoResp, err = service.AccountFieeProvider.Info(context.Background(), &accountFiee.InfoRequest{
|
||||
@ -393,21 +398,6 @@ func UpdateWorkImageWithTaskUUID(ctx *gin.Context) {
|
||||
TelAreaCode: "86",
|
||||
}
|
||||
}
|
||||
req.ArtistName = infoResp.Name
|
||||
req.ArtistPhone = infoResp.TelNum
|
||||
req.ArtistPhoneAreaCode = infoResp.TelAreaCode
|
||||
// artistID, _ := strconv.ParseUint(req.ArtistUuid, 10, 64)
|
||||
// if _, err = castService.CheckUserBundleBalance(int32(artistID), modelCast.BalanceTypeImageValue); err != nil {
|
||||
// service.Error(ctx, err)
|
||||
// return
|
||||
// }
|
||||
newCtx := castService.NewCtxWithUserInfo(ctx)
|
||||
req.Source = 1
|
||||
resp, err := service.CastProvider.UpdateWorkImage(newCtx, req.UpdateWorkImageReq)
|
||||
if err != nil {
|
||||
service.Error(ctx, err)
|
||||
return
|
||||
}
|
||||
// EmployeeName 和 EmployeeNum 从 toekn 里面拿
|
||||
userInfo := login.GetUserInfoFromC(ctx)
|
||||
// 调用员工实际任务状态更新
|
||||
@ -474,6 +464,11 @@ func UpdateWorkVideoWithUUID(ctx *gin.Context) {
|
||||
service.Error(ctx, errors.New("任务已中止,不能上传视频"))
|
||||
return
|
||||
}
|
||||
resp, err := castService.UpdateWorkVideoCore(ctx, req.UpdateWorkVideoReq)
|
||||
if err != nil {
|
||||
service.Error(ctx, err)
|
||||
return
|
||||
}
|
||||
if config.AppConfig.System.AppMode != "dev" {
|
||||
artistId, _ := strconv.ParseUint(req.ArtistUuid, 10, 64)
|
||||
infoResp, err = service.AccountFieeProvider.Info(context.Background(), &accountFiee.InfoRequest{
|
||||
@ -491,21 +486,6 @@ func UpdateWorkVideoWithUUID(ctx *gin.Context) {
|
||||
TelAreaCode: "86",
|
||||
}
|
||||
}
|
||||
// artistID, _ := strconv.ParseUint(req.ArtistUuid, 10, 64)
|
||||
// if _, err = castService.CheckUserBundleBalance(int32(artistID), modelCast.BalanceTypeVideoValue); err != nil {
|
||||
// service.Error(ctx, err)
|
||||
// return
|
||||
// }
|
||||
req.ArtistName = infoResp.Name
|
||||
req.ArtistPhone = infoResp.TelNum
|
||||
req.ArtistPhoneAreaCode = infoResp.TelAreaCode
|
||||
newCtx := castService.NewCtxWithUserInfo(ctx)
|
||||
req.Source = 1
|
||||
resp, err := service.CastProvider.UpdateWorkVideo(newCtx, req.UpdateWorkVideoReq)
|
||||
if err != nil {
|
||||
service.Error(ctx, err)
|
||||
return
|
||||
}
|
||||
// EmployeeName 和 EmployeeNum 从 toekn 里面拿
|
||||
userInfo := login.GetUserInfoFromC(ctx)
|
||||
// 调用员工实际任务状态更新
|
||||
|
||||
@ -12,14 +12,15 @@ import (
|
||||
"fonchain-fiee/pkg/model"
|
||||
"fonchain-fiee/pkg/service"
|
||||
"fonchain-fiee/pkg/utils"
|
||||
"io"
|
||||
|
||||
cmdConf "fonchain-fiee/cmd/config"
|
||||
|
||||
"github.com/disintegration/imaging"
|
||||
"github.com/fonchain_enterprise/utils/objstorage"
|
||||
"github.com/gin-gonic/gin"
|
||||
uuid "github.com/satori/go.uuid"
|
||||
"io"
|
||||
|
||||
ffmpeg "github.com/u2takey/ffmpeg-go"
|
||||
"go.uber.org/zap"
|
||||
"io/ioutil"
|
||||
"mime/multipart"
|
||||
"net/url"
|
||||
@ -28,6 +29,9 @@ import (
|
||||
"path/filepath"
|
||||
"strconv"
|
||||
"strings"
|
||||
|
||||
ffmpeg "github.com/u2takey/ffmpeg-go"
|
||||
"go.uber.org/zap"
|
||||
)
|
||||
|
||||
const (
|
||||
@ -216,7 +220,7 @@ func quickBos(file *multipart.FileHeader, mediaType string, mask string, source
|
||||
return
|
||||
}
|
||||
}
|
||||
var objectName string = fmt.Sprintf("%s/%s/%s", config.ConfigData.Oss.BaseDir, config.Env, filePath)
|
||||
var objectName string = fmt.Sprintf("%s/%s/%s", config.ConfigData.Oss.BaseDir, cmdConf.AppConfig.System.AppMode, filePath)
|
||||
BOSClient, _ := objstorage.NewOSS(os.Getenv(config.ConfigData.Oss.AccessKeyId), os.Getenv(config.ConfigData.Oss.AccessKeySecret), os.Getenv(config.ConfigData.Oss.Endpoint))
|
||||
_, err = BOSClient.PutObjectFromBytes(os.Getenv(config.ConfigData.Oss.BucketName), objectName, fileBytes)
|
||||
if err != nil {
|
||||
@ -290,7 +294,7 @@ func PutBos(filePath string, mediaType string, needRemove bool) (url string, err
|
||||
}
|
||||
}
|
||||
filePath = strings.Replace(filePath, model.MediaPath, "", 1)
|
||||
var objectName string = fmt.Sprintf("%s/%s%s", config.ConfigData.Oss.BaseDir, config.Env, filePath)
|
||||
var objectName string = fmt.Sprintf("%s/%s%s", config.ConfigData.Oss.BaseDir, cmdConf.AppConfig.System.AppMode, filePath)
|
||||
_, err = BOSClient.PutObjectFromBytes(os.Getenv(config.ConfigData.Oss.BucketName), objectName, fileBytes)
|
||||
if err != nil {
|
||||
fmt.Println("=== PutBos PutObject err ", err)
|
||||
@ -347,3 +351,30 @@ func getEnvDir(cloudStoreSubPath string) (ep string) {
|
||||
ep, _ = url.JoinPath("fiee", cloudStoreSubPath)
|
||||
return ep
|
||||
}
|
||||
func PutBosWithName(filePath string, needRemove bool, ossPath string) (url string, err error) {
|
||||
BOSClient, err := objstorage.NewOSS(os.Getenv(config.ConfigData.Oss.AccessKeyId), os.Getenv(config.ConfigData.Oss.AccessKeySecret), os.Getenv(config.ConfigData.Oss.Endpoint))
|
||||
//BOSClient, err := objstorage.NewOSS(config.ConfigData.Oss.AccessKeyId, config.ConfigData.Oss.AccessKeySecret, config.ConfigData.Oss.Endpoint)
|
||||
if err != nil {
|
||||
//logger.Errorf("PutBosWithName err1 ", err)
|
||||
err = errors.New(e.GetMsg(e.ErrorUploadBos))
|
||||
return
|
||||
}
|
||||
if ossPath == "" {
|
||||
ossPath = filePath[1:]
|
||||
}
|
||||
var objectName string = fmt.Sprintf("%s/%s%s", config.ConfigData.Oss.BaseDir, cmdConf.AppConfig.System.AppMode, ossPath)
|
||||
_, err = BOSClient.PutObject(os.Getenv(config.ConfigData.Oss.BucketName), objectName, filePath)
|
||||
//_, err = BOSClient.PutObject(config.ConfigData.Oss.BucketName, objectName, filePath)
|
||||
if err != nil {
|
||||
//logger.Errorf("PutBosWithName err2 ", err)
|
||||
err = errors.New(e.GetMsg(e.ErrorUploadBos))
|
||||
return
|
||||
}
|
||||
//删除本地文件
|
||||
if needRemove {
|
||||
_ = os.Remove(filePath)
|
||||
}
|
||||
url = fmt.Sprintf("%s/%s", os.Getenv(config.ConfigData.Oss.CdnHost), objectName)
|
||||
//url = fmt.Sprintf("%s/%s", config.ConfigData.Oss.CdnHost, objectName)
|
||||
return
|
||||
}
|
||||
|
||||
381
pkg/utils/excel/excelInter.go
Normal file
381
pkg/utils/excel/excelInter.go
Normal file
@ -0,0 +1,381 @@
|
||||
// Package excel -----------------------------
|
||||
// @file : templateInter.go
|
||||
// @author : JJXu
|
||||
// @contact : wavingbear@163.com
|
||||
// @time : 2022/7/23 15:34
|
||||
// -------------------------------------------
|
||||
package excel
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"errors"
|
||||
"fmt"
|
||||
"io"
|
||||
"log"
|
||||
"os"
|
||||
"path/filepath"
|
||||
"reflect"
|
||||
"sync"
|
||||
|
||||
"github.com/tealeg/xlsx"
|
||||
"github.com/xuri/excelize/v2"
|
||||
)
|
||||
|
||||
var (
|
||||
ErrSheetNotExist = errors.New("sheet does not exist")
|
||||
ErrSheetDataFormatNotSupport = errors.New("sheet data format not support")
|
||||
//ErrSheetNameNotInTemplate = errors.New("sheet name not in emailTemplate")
|
||||
)
|
||||
|
||||
// ======================================================================================================================
|
||||
//
|
||||
// Sheet define
|
||||
type HeaderRow struct {
|
||||
RowNum int //行号
|
||||
Values []string
|
||||
}
|
||||
|
||||
// 抽象工作簿
|
||||
type Sheet interface {
|
||||
GetData() any //数据,支持struct、[]struct、[]*struct三种类型
|
||||
SheetName() string //表名称
|
||||
SheetHeaders() []string //表头名称,没有则跳过插入表头的步骤
|
||||
GetJsonFiledList() []string //指定字段的排列顺序,默认按照结构体中的顺序排列(表头与数据没有关联,使用这个指定字段插入顺序)
|
||||
}
|
||||
|
||||
// 实例化工作簿,使用模板生成excel的话用这个
|
||||
func NewTemplateSheet(sheetName string, datas any) Sheet {
|
||||
return &newSheetDefine{
|
||||
Datas: datas,
|
||||
Name: sheetName,
|
||||
}
|
||||
}
|
||||
|
||||
// 实例化工作簿,不通过模板生成excel的话用这个
|
||||
func NewSheet(sheetName string, datas any, headers []string, jsonFiledList ...[]string) Sheet {
|
||||
st := &newSheetDefine{
|
||||
Datas: datas,
|
||||
Name: sheetName,
|
||||
Headers: headers,
|
||||
}
|
||||
if jsonFiledList != nil {
|
||||
st.JsonFiledList = jsonFiledList[0]
|
||||
}
|
||||
return st
|
||||
}
|
||||
|
||||
// 定义一个能够通用的工作簿结构,此结构必须遵循Sheet接口规范
|
||||
type newSheetDefine struct {
|
||||
Datas any
|
||||
Name string
|
||||
Headers []string
|
||||
JsonFiledList []string
|
||||
}
|
||||
|
||||
func (s *newSheetDefine) GetData() any {
|
||||
return s.Datas
|
||||
}
|
||||
func (s *newSheetDefine) SheetName() string {
|
||||
return s.Name
|
||||
}
|
||||
func (s *newSheetDefine) SheetHeaders() []string {
|
||||
return s.Headers
|
||||
}
|
||||
func (s *newSheetDefine) GetJsonFiledList() []string {
|
||||
return s.JsonFiledList
|
||||
}
|
||||
|
||||
//======================================================================================================================
|
||||
// Sheet define
|
||||
|
||||
// WriteToExcel 通过模板文件写入数据并另存为
|
||||
// param fileName : 文件名
|
||||
// param filesSuffix : 文件后缀名生成函数
|
||||
// param fileRoot : 导出目录
|
||||
// param templatePath : 模板文件路径
|
||||
// param sheets : Sheet类型的数据,类型为[]Sheet
|
||||
// return path : 文件路径
|
||||
// return exfileName : 导出后的文件名
|
||||
// return err
|
||||
func WriteToExcel(fileName string, fileRoot string, templatePath string, sheets ...Sheet) (path string, exFileName string, err error) {
|
||||
var exc *Excel
|
||||
exc, err = NewExcelCreatorFromTemplate(fileName, fileRoot, templatePath, sheets...)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
exc.UseOption(OptionFileNameSuffixWithUnixTime)
|
||||
return exc.WriteToFile()
|
||||
}
|
||||
|
||||
// ReadDataFromExcel 从excel文件读取数据
|
||||
func ReadDataFromExcel(filepath string, sheetName string, handler func(rowIndex int, rows []string)) error {
|
||||
ex := Excel{OriginFilePath: filepath}
|
||||
return ex.ReadSheetData(sheetName, handler)
|
||||
}
|
||||
|
||||
// ReadDataFromBytes 从io口读取数据,用户http上传的附件
|
||||
func ReadDataFromBytes(file io.Reader, sheetName string, handler func(rowIndex int, row []string)) error {
|
||||
exce, err := excelize.OpenReader(file)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
var ex = Excel{ex: exce}
|
||||
return ex.ReadSheetData(sheetName, handler)
|
||||
}
|
||||
|
||||
// 读取模板并创建工作表生成器
|
||||
func NewExcelCreatorFromTemplate(fileName string, fileRoot string, templatePath string, sheets ...Sheet) (exc *Excel, err error) {
|
||||
exc = &Excel{
|
||||
SaveRoot: fileRoot,
|
||||
SaveName: fileName,
|
||||
OriginFilePath: templatePath,
|
||||
rwLock: sync.RWMutex{},
|
||||
}
|
||||
if sheets != nil {
|
||||
err = exc.AddSheets(sheets...)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
}
|
||||
return exc, nil
|
||||
}
|
||||
|
||||
// 新建文件并创建工作表生成器
|
||||
func NewExcelCreatorWithNewFile(fileName string, fileRoot string, sheets ...Sheet) (exc *Excel, err error) {
|
||||
return NewExcelCreatorFromTemplate(fileName, fileRoot, "", sheets...)
|
||||
}
|
||||
|
||||
type Excel struct {
|
||||
ex *excelize.File
|
||||
SaveRoot string
|
||||
SaveName string
|
||||
OriginFilePath string
|
||||
Sheets map[string]Sheet
|
||||
rwLock sync.RWMutex
|
||||
Opts []Option
|
||||
After []Option
|
||||
}
|
||||
|
||||
// UseOption 使用可选项
|
||||
func (s *Excel) UseOption(opts ...Option) {
|
||||
if opts != nil {
|
||||
s.Opts = append(s.Opts, opts...)
|
||||
}
|
||||
}
|
||||
func (s *Excel) AfterAddData(after ...Option) {
|
||||
if after != nil {
|
||||
s.After = append(s.After, after...)
|
||||
}
|
||||
}
|
||||
|
||||
// 添加工作簿
|
||||
// 注意如果添加相同的工作簿,之前的会被覆盖
|
||||
func (s *Excel) AddSheets(sheets ...Sheet) (err error) {
|
||||
if s.Sheets == nil {
|
||||
s.Sheets = make(map[string]Sheet, 0)
|
||||
}
|
||||
for _, sheet := range sheets {
|
||||
var sheetName = sheet.SheetName()
|
||||
s.Sheets[sheetName] = sheet
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
// 删除工作簿
|
||||
func (s *Excel) DeleteSheets(sheetName string) error {
|
||||
if s.Sheets == nil {
|
||||
return nil
|
||||
} else if s.Sheets[sheetName] != nil {
|
||||
delete(s.Sheets, sheetName)
|
||||
} else {
|
||||
return ErrSheetNotExist
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// 读取工作簿
|
||||
func (s *Excel) ReadSheetData(sheetName string, handler func(rowIndex int, row []string)) (err error) {
|
||||
if s.ex == nil {
|
||||
s.ex, err = excelize.OpenFile(s.OriginFilePath)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
}
|
||||
datas, err := s.ex.GetRows(sheetName)
|
||||
for i, row := range datas {
|
||||
handler(i, row)
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// 写入到文件
|
||||
func (s *Excel) WriteToFile() (path string, fileName string, err error) {
|
||||
if s.ex == nil {
|
||||
if s.OriginFilePath == "" {
|
||||
s.ex = excelize.NewFile()
|
||||
} else {
|
||||
s.ex, err = excelize.OpenFile(s.OriginFilePath)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
}
|
||||
}
|
||||
if s.Opts != nil {
|
||||
for _, opt := range s.Opts {
|
||||
opt(s)
|
||||
}
|
||||
}
|
||||
//插入数据
|
||||
for sheetName, st := range s.Sheets {
|
||||
//添加表头,没有定义则不插入
|
||||
if st.SheetHeaders() != nil {
|
||||
for i, c := range st.SheetHeaders() {
|
||||
err = s.ex.SetCellValue(sheetName, GetCellIndex(1, i+1), c)
|
||||
if err != nil {
|
||||
fmt.Println(err.Error())
|
||||
return
|
||||
}
|
||||
}
|
||||
headerStyleID, errs := s.ex.NewStyle(NewDefaultHeaderStyle())
|
||||
if errs != nil {
|
||||
fmt.Println(errs)
|
||||
err = errs
|
||||
return
|
||||
}
|
||||
//表头设置为默认样式,边框加粗、字体加粗
|
||||
if err = s.ex.SetCellStyle(st.SheetName(), "A1", GetCellIndex(1, len(st.SheetHeaders())), headerStyleID); err != nil {
|
||||
return
|
||||
}
|
||||
}
|
||||
//添加数据
|
||||
var firstRow = s.getFirstEmptyRowIndex(s.ex, sheetName)
|
||||
var SheetData = reflect.ValueOf(st.GetData())
|
||||
var SheetType = reflect.TypeOf(st.GetData())
|
||||
writerFunc, exists := writerMap[SheetData.Kind()]
|
||||
if exists {
|
||||
err = writerFunc(s, st, SheetData, SheetType, firstRow)
|
||||
} else {
|
||||
return "", "", ErrSheetDataFormatNotSupport
|
||||
}
|
||||
}
|
||||
if s.After != nil {
|
||||
for _, after := range s.After {
|
||||
after(s)
|
||||
}
|
||||
}
|
||||
//检测并生成目录
|
||||
_ = os.MkdirAll(s.SaveRoot, os.ModePerm)
|
||||
//保存
|
||||
path = filepath.ToSlash(filepath.Join(s.SaveRoot, s.SaveName))
|
||||
fileName = s.SaveName
|
||||
s.rwLock.Lock()
|
||||
if err = s.ex.SaveAs(path); err != nil {
|
||||
log.Println(fmt.Sprintf("save file error :%v", err))
|
||||
s.rwLock.Unlock()
|
||||
return
|
||||
}
|
||||
s.rwLock.Unlock()
|
||||
return
|
||||
}
|
||||
|
||||
// getJsonFieldList 获取json字段列表
|
||||
func (s *Excel) getJsonFieldList(sheetType reflect.Type) (tagList []string) {
|
||||
t := sheetType.Elem()
|
||||
if t.Kind() == reflect.Ptr {
|
||||
t = t.Elem()
|
||||
if t.Kind() != reflect.Struct {
|
||||
return
|
||||
}
|
||||
}
|
||||
for i := 0; i < t.NumField(); i++ {
|
||||
var tag = t.Field(i).Tag.Get("json")
|
||||
if tag != "" {
|
||||
tagList = append(tagList, tag)
|
||||
}
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
// dataToMap 数据转字典
|
||||
func (s *Excel) dataToMap(sheet reflect.Value, sheetType reflect.Type) (dataMap map[string]any) {
|
||||
dataMap = make(map[string]any)
|
||||
t := sheetType.Elem()
|
||||
//指针类型结构体拿真实的对象
|
||||
if t.Kind() == reflect.Ptr {
|
||||
t = t.Elem()
|
||||
sheet = sheet.Elem()
|
||||
}
|
||||
for i := 0; i < t.NumField(); i++ {
|
||||
var tag = t.Field(i).Tag.Get("json")
|
||||
if tag != "" {
|
||||
dataMap[t.Field(i).Tag.Get("json")] = sheet.Field(i).Interface()
|
||||
}
|
||||
}
|
||||
return dataMap
|
||||
}
|
||||
|
||||
// getFirstEmptyRowIndex 获取首个空行的索引位置
|
||||
func (s *Excel) getFirstEmptyRowIndex(ex *excelize.File, sheetName string) (index int) {
|
||||
rows, err := ex.GetRows(sheetName)
|
||||
if err != nil {
|
||||
return 1
|
||||
}
|
||||
return len(rows)
|
||||
}
|
||||
|
||||
func ToExcel(titleList []string, dataList []interface{}) (content io.ReadSeeker) {
|
||||
// 生成一个新的文件
|
||||
file := xlsx.NewFile()
|
||||
// 添加sheet页
|
||||
sheet, _ := file.AddSheet("Sheet1")
|
||||
// 插入表头
|
||||
titleRow := sheet.AddRow()
|
||||
for _, v := range titleList {
|
||||
cell := titleRow.AddCell()
|
||||
cell.Value = v
|
||||
}
|
||||
// 插入内容
|
||||
for _, v := range dataList {
|
||||
row := sheet.AddRow()
|
||||
row.WriteStruct(v, -1)
|
||||
}
|
||||
|
||||
var buffer bytes.Buffer
|
||||
_ = file.Write(&buffer)
|
||||
file.Save("1.xlsx")
|
||||
content = bytes.NewReader(buffer.Bytes())
|
||||
return
|
||||
}
|
||||
|
||||
// 自动设置单元格宽度
|
||||
func (s *Excel) autoResetCellWidth(sheetObj Sheet) {
|
||||
// 获取最大字符宽度
|
||||
maxWidths := make(map[int]int)
|
||||
var sheetData = reflect.ValueOf(sheetObj.GetData())
|
||||
var rowLen = 1
|
||||
var columnLen = len(sheetObj.GetJsonFiledList())
|
||||
if sheetData.Kind() == reflect.Slice {
|
||||
rowLen = sheetData.Len()
|
||||
}
|
||||
limitWidth := 90
|
||||
for col := 1; col <= columnLen; col++ {
|
||||
var maxWidth int
|
||||
for row := 0; row < rowLen; row++ {
|
||||
value, _ := s.ex.GetCellValue(sheetObj.SheetName(), GetCellIndex(row+1, col))
|
||||
width := len(value)
|
||||
if width > limitWidth {
|
||||
width = limitWidth
|
||||
}
|
||||
if width > maxWidth {
|
||||
maxWidth = width
|
||||
}
|
||||
}
|
||||
maxWidths[col] = maxWidth
|
||||
}
|
||||
|
||||
// 设置列宽度
|
||||
for col, width := range maxWidths {
|
||||
colChar := GetColumnIndex(col)
|
||||
s.ex.SetColWidth(sheetObj.SheetName(), colChar, colChar, float64(width+2))
|
||||
}
|
||||
}
|
||||
52
pkg/utils/excel/options.go
Normal file
52
pkg/utils/excel/options.go
Normal file
@ -0,0 +1,52 @@
|
||||
// Package excel -----------------------------
|
||||
// @file : options.go
|
||||
// @author : JJXu
|
||||
// @contact : wavingBear@163.com
|
||||
// @time : 2022/12/19 12:41:40
|
||||
// -------------------------------------------
|
||||
package excel
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"path/filepath"
|
||||
"strings"
|
||||
"time"
|
||||
)
|
||||
|
||||
type Option func(excel *Excel)
|
||||
|
||||
// func AddSaveFileSuffixWithUnixTime(excel *Excel) {
|
||||
// excel.SaveName
|
||||
// fmt.Sprintf("%v", time.Now().Unix())
|
||||
// }
|
||||
//
|
||||
// 时间戳作为文件后缀
|
||||
func OptionFileNameSuffixWithUnixTime(excel *Excel) {
|
||||
ext := filepath.Ext(excel.SaveName)
|
||||
name := strings.Split(excel.SaveName, ext)[0]
|
||||
excel.SaveName = fmt.Sprintf("%s_%v%s", name, time.Now().Unix(), ext)
|
||||
}
|
||||
|
||||
// 为第一行添加表头
|
||||
func AfterAddHeader1(sheet Sheet, text string) func(excel *Excel) {
|
||||
return func(excel *Excel) {
|
||||
err := excel.ex.InsertRows(sheet.SheetName(), 1, 1)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
err = excel.ex.SetCellValue(sheet.SheetName(), GetCellIndex(1, 1), text)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
headerStyleID, errs := excel.ex.NewStyle(NewHeaderOneStyle())
|
||||
if errs != nil {
|
||||
fmt.Println(errs)
|
||||
err = errs
|
||||
return
|
||||
}
|
||||
//表头设置为默认样式,边框加粗、字体加粗
|
||||
_ = excel.ex.SetCellStyle(sheet.SheetName(), "A1", GetCellIndex(1, len(sheet.SheetHeaders())), headerStyleID)
|
||||
_ = excel.ex.MergeCell(sheet.SheetName(), "A1", GetCellIndex(1, len(sheet.SheetHeaders())))
|
||||
|
||||
}
|
||||
}
|
||||
54
pkg/utils/excel/style.go
Normal file
54
pkg/utils/excel/style.go
Normal file
@ -0,0 +1,54 @@
|
||||
// Package excel -----------------------------
|
||||
// @file : style.go
|
||||
// @author : JJXu
|
||||
// @contact : wavingbear@163.com
|
||||
// @time : 2023/9/1 13:50
|
||||
// -------------------------------------------
|
||||
package excel
|
||||
|
||||
import (
|
||||
"github.com/xuri/excelize/v2"
|
||||
)
|
||||
|
||||
func NewDefaultHeaderStyle() *excelize.Style {
|
||||
return &excelize.Style{
|
||||
Border: []excelize.Border{
|
||||
{Type: "left", Color: "000000", Style: 2},
|
||||
{Type: "top", Color: "000000", Style: 2},
|
||||
{Type: "bottom", Color: "000000", Style: 2},
|
||||
{Type: "right", Color: "000000", Style: 2},
|
||||
},
|
||||
Font: &excelize.Font{Bold: true, Size: 12},
|
||||
Alignment: &excelize.Alignment{
|
||||
Horizontal: "center",
|
||||
},
|
||||
}
|
||||
}
|
||||
func NewDefaultDataStyle() *excelize.Style {
|
||||
return &excelize.Style{
|
||||
Border: []excelize.Border{
|
||||
{Type: "left", Color: "000000", Style: 1},
|
||||
{Type: "bottom", Color: "000000", Style: 1},
|
||||
{Type: "right", Color: "000000", Style: 1},
|
||||
},
|
||||
Font: &excelize.Font{Size: 12},
|
||||
Alignment: &excelize.Alignment{
|
||||
Horizontal: "left",
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
func NewHeaderOneStyle() *excelize.Style {
|
||||
return &excelize.Style{
|
||||
Border: []excelize.Border{
|
||||
{Type: "left", Color: "000000", Style: 2},
|
||||
{Type: "top", Color: "000000", Style: 2},
|
||||
{Type: "bottom", Color: "000000", Style: 2},
|
||||
{Type: "right", Color: "000000", Style: 2},
|
||||
},
|
||||
Font: &excelize.Font{Bold: true, Size: 14},
|
||||
Alignment: &excelize.Alignment{
|
||||
Horizontal: "center",
|
||||
},
|
||||
}
|
||||
}
|
||||
41
pkg/utils/excel/utils.go
Normal file
41
pkg/utils/excel/utils.go
Normal file
@ -0,0 +1,41 @@
|
||||
// Package utils -----------------------------
|
||||
// @file : excelHelper.go
|
||||
// @author : JJXu
|
||||
// @contact : wavingbear@163.com
|
||||
// @time : 2022/6/9 13:41
|
||||
// -------------------------------------------
|
||||
package excel
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"strconv"
|
||||
)
|
||||
|
||||
// 行列坐标值转换为excel的坐标。注意row和columnCount的初始值都是1
|
||||
func GetCellIndex(row int, columnCount int) string {
|
||||
var column = GetColumnIndex(columnCount)
|
||||
return fmt.Sprintf("%s%d", column, row)
|
||||
}
|
||||
|
||||
// 获取excel的列索引
|
||||
var columnIndices = []string{"A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"}
|
||||
|
||||
func GetColumnIndex(num int) string {
|
||||
num--
|
||||
var column = columnIndices[num%26]
|
||||
for num = num / 26; num > 0; num = num / 26 {
|
||||
column = columnIndices[(num-1)%26] + column
|
||||
num--
|
||||
}
|
||||
return column
|
||||
}
|
||||
|
||||
func Int[T int | uint | uint8 | uint32 | uint64 | int32 | int64](value string) T {
|
||||
v, _ := strconv.Atoi(value)
|
||||
return T(v)
|
||||
}
|
||||
|
||||
func Float[T float64 | float32](value string) T {
|
||||
v, _ := strconv.ParseFloat(value, 64)
|
||||
return T(v)
|
||||
}
|
||||
81
pkg/utils/excel/writer.go
Normal file
81
pkg/utils/excel/writer.go
Normal file
@ -0,0 +1,81 @@
|
||||
// Package excel -----------------------------
|
||||
// @file : writer.go
|
||||
// @author : JJXu
|
||||
// @contact : wavingbear@163.com
|
||||
// @time : 2023/9/1 14:11
|
||||
// -------------------------------------------
|
||||
package excel
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"fmt"
|
||||
"reflect"
|
||||
)
|
||||
|
||||
var writerMap = map[reflect.Kind]func(exc *Excel, sheetObj Sheet, SheetData reflect.Value, SheetType reflect.Type, firstRow int) error{
|
||||
reflect.Slice: sliceWriter,
|
||||
reflect.Struct: structWriter,
|
||||
}
|
||||
|
||||
func RegisterWriter(dataKind reflect.Kind, function func(exc *Excel, sheetObj Sheet, SheetData reflect.Value, SheetType reflect.Type, firstRow int) error) error {
|
||||
if _, exists := writerMap[dataKind]; exists {
|
||||
return errors.New(fmt.Sprintf("dataKind: %v has existed", dataKind))
|
||||
}
|
||||
writerMap[dataKind] = function
|
||||
return nil
|
||||
}
|
||||
|
||||
func sliceWriter(exc *Excel, sheetObj Sheet, SheetData reflect.Value, SheetDataType reflect.Type, firstRow int) error {
|
||||
var cellNameList = sheetObj.GetJsonFiledList()
|
||||
if cellNameList == nil {
|
||||
cellNameList = exc.getJsonFieldList(SheetDataType)
|
||||
}
|
||||
var rowLen = SheetData.Len()
|
||||
for i := 0; i < rowLen; i++ {
|
||||
var dataMap = exc.dataToMap(SheetData.Index(i), SheetDataType)
|
||||
for column, v := range cellNameList {
|
||||
var axis = GetCellIndex(i+firstRow+1, column+1)
|
||||
err := exc.ex.SetCellValue(sheetObj.SheetName(), axis, dataMap[v])
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
}
|
||||
//设置数据格式
|
||||
dataStyleID, errs := exc.ex.NewStyle(NewDefaultDataStyle())
|
||||
if errs != nil {
|
||||
return errs
|
||||
}
|
||||
if err := exc.ex.SetCellStyle(sheetObj.SheetName(), GetCellIndex(firstRow+1, 1), GetCellIndex(rowLen+1, len(sheetObj.SheetHeaders())), dataStyleID); err != nil {
|
||||
return err
|
||||
}
|
||||
//设置默认列宽
|
||||
//exc.ex.SetColWidth(sheetObj.SheetName(), GetColumnIndex(1), GetColumnIndex(len(sheetObj.SheetHeaders())), 12.0)
|
||||
exc.autoResetCellWidth(sheetObj)
|
||||
return nil
|
||||
}
|
||||
|
||||
func structWriter(exc *Excel, sheetObj Sheet, SheetData reflect.Value, SheetType reflect.Type, firstRow int) error {
|
||||
var cellNameList = exc.getJsonFieldList(SheetType)
|
||||
var dataMap = exc.dataToMap(SheetData, SheetType)
|
||||
for column, v := range cellNameList {
|
||||
var axis = GetCellIndex(firstRow+1, column+1)
|
||||
err := exc.ex.SetCellValue(sheetObj.SheetName(), axis, dataMap[v])
|
||||
if err != nil {
|
||||
fmt.Println(err.Error())
|
||||
return err
|
||||
}
|
||||
}
|
||||
//设置数据格式
|
||||
dataStyleID, err := exc.ex.NewStyle(NewDefaultDataStyle())
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if err = exc.ex.SetCellStyle(sheetObj.SheetName(), GetCellIndex(firstRow, 1), GetCellIndex(firstRow+1, len(sheetObj.SheetHeaders())), dataStyleID); err != nil {
|
||||
return err
|
||||
}
|
||||
//设置默认列宽
|
||||
//exc.ex.SetColWidth(sheetObj.SheetName(), GetColumnIndex(1), GetColumnIndex(len(sheetObj.SheetHeaders())), 12.0)
|
||||
exc.autoResetCellWidth(sheetObj)
|
||||
return nil
|
||||
}
|
||||
555
pkg/utils/img/imageproc.go
Normal file
555
pkg/utils/img/imageproc.go
Normal file
@ -0,0 +1,555 @@
|
||||
package img
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"context"
|
||||
"crypto/sha256"
|
||||
"encoding/hex"
|
||||
"errors"
|
||||
"fmt"
|
||||
"image"
|
||||
"image/color"
|
||||
"image/gif"
|
||||
"image/jpeg"
|
||||
"image/png"
|
||||
"io"
|
||||
"net/http"
|
||||
"net/url"
|
||||
"os"
|
||||
"path/filepath"
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
"github.com/disintegration/imaging"
|
||||
)
|
||||
|
||||
// ResizeMode controls how the source image is mapped to the target WxH.
|
||||
//
|
||||
// - ResizeModeFit: contain (keep aspect), no cropping; resulting image may be smaller than WxH
|
||||
// - ResizeModeFill: cover + crop (center crop) to exactly WxH
|
||||
// - ResizeModePad: keep aspect + pad (letterbox) to exactly WxH (no crop, no stretch)
|
||||
//
|
||||
// If you only pass a single dimension (e.g. W>0, H=0), Fit will keep aspect.
|
||||
// Fill/Pad requires both W and H.
|
||||
//
|
||||
// Note: GIF input will be processed as a single frame (first frame).
|
||||
// If you need animated GIF support, we can extend this later.
|
||||
type ResizeMode string
|
||||
|
||||
const (
|
||||
ResizeModeFit ResizeMode = "fit"
|
||||
ResizeModeFill ResizeMode = "fill"
|
||||
// ResizeModePad keeps aspect ratio (no crop, no stretch) and pads to exactly WxH.
|
||||
// Typical use: 16:9 -> 1024x1024 with white/black bars.
|
||||
ResizeModePad ResizeMode = "pad"
|
||||
)
|
||||
|
||||
type Options struct {
|
||||
TargetWidth int
|
||||
TargetHeight int
|
||||
MaxSizeMB float64
|
||||
|
||||
Mode ResizeMode
|
||||
|
||||
// PadColor is used only when Mode == ResizeModePad.
|
||||
// Default: white.
|
||||
PadColor color.Color
|
||||
|
||||
// OutputDir is where the processed image will be written.
|
||||
// Default: ./runtime/tmp/images/processed
|
||||
OutputDir string
|
||||
|
||||
// Timeout controls total download time.
|
||||
// Default: 30s.
|
||||
Timeout time.Duration
|
||||
|
||||
// MaxDownloadMB caps download size to protect memory/disk.
|
||||
// Default: max( maxSizeMB*6, 30MB ).
|
||||
MaxDownloadMB float64
|
||||
|
||||
// MinQuality is the minimum JPEG quality to try (1-100).
|
||||
// Default: 10. If compression still can't meet MaxSizeMB, returns error.
|
||||
MinQuality int
|
||||
|
||||
// MaxRetries controls how many quality adjustments to attempt.
|
||||
// Default: 15.
|
||||
MaxRetries int
|
||||
|
||||
// AllowResolutionReduction allows reducing resolution further if compression fails.
|
||||
// Default: false.
|
||||
AllowResolutionReduction bool
|
||||
|
||||
// ForceJPEG forces output to JPEG format even if input is PNG/GIF/etc.
|
||||
// If image has alpha channel, it will be flattened to white background.
|
||||
// Default: false.
|
||||
ForceJPEG bool
|
||||
}
|
||||
|
||||
// ProcessFromURL downloads an image from imgURL, resizes it, compresses it to <= MaxSizeMB,
|
||||
// and returns the local output path.
|
||||
//
|
||||
// Contract:
|
||||
// - imgURL: http/https
|
||||
// - TargetWidth/TargetHeight: pixels, >=0
|
||||
// - MaxSizeMB: >0
|
||||
// - returns: absolute or relative file path (depending on OutputDir), and error
|
||||
func ProcessFromURL(imgURL string, opt Options) (string, error) {
|
||||
if strings.TrimSpace(imgURL) == "" {
|
||||
return "", errors.New("imgURL is empty")
|
||||
}
|
||||
u, err := url.Parse(imgURL)
|
||||
if err != nil || (u.Scheme != "http" && u.Scheme != "https") {
|
||||
return "", errors.New("imgURL must be http/https")
|
||||
}
|
||||
if opt.MaxSizeMB <= 0 {
|
||||
return "", errors.New("MaxSizeMB must be > 0")
|
||||
}
|
||||
if opt.TargetWidth < 0 || opt.TargetHeight < 0 {
|
||||
return "", errors.New("TargetWidth/TargetHeight must be >= 0")
|
||||
}
|
||||
if opt.TargetWidth == 0 && opt.TargetHeight == 0 {
|
||||
return "", errors.New("TargetWidth and TargetHeight cannot both be 0")
|
||||
}
|
||||
if opt.Mode == "" {
|
||||
opt.Mode = ResizeModeFit
|
||||
}
|
||||
if opt.Mode != ResizeModeFit && opt.Mode != ResizeModeFill && opt.Mode != ResizeModePad {
|
||||
return "", errors.New("invalid resize Mode")
|
||||
}
|
||||
if (opt.Mode == ResizeModeFill || opt.Mode == ResizeModePad) && (opt.TargetWidth == 0 || opt.TargetHeight == 0) {
|
||||
return "", errors.New("fill/pad mode requires both TargetWidth and TargetHeight")
|
||||
}
|
||||
if opt.Timeout <= 0 {
|
||||
opt.Timeout = 30 * time.Second
|
||||
}
|
||||
if opt.OutputDir == "" {
|
||||
opt.OutputDir = filepath.FromSlash("./runtime/tmp/images/processed")
|
||||
}
|
||||
if opt.MaxDownloadMB <= 0 {
|
||||
opt.MaxDownloadMB = opt.MaxSizeMB * 6
|
||||
if opt.MaxDownloadMB < 30 {
|
||||
opt.MaxDownloadMB = 30
|
||||
}
|
||||
if opt.MaxDownloadMB > 200 {
|
||||
opt.MaxDownloadMB = 200
|
||||
}
|
||||
}
|
||||
if opt.MinQuality <= 0 {
|
||||
opt.MinQuality = 10
|
||||
}
|
||||
if opt.MinQuality > 100 {
|
||||
opt.MinQuality = 100
|
||||
}
|
||||
if opt.MaxRetries <= 0 {
|
||||
opt.MaxRetries = 15
|
||||
}
|
||||
|
||||
// Ensure output dir exists.
|
||||
if err := os.MkdirAll(opt.OutputDir, os.ModePerm); err != nil {
|
||||
return "", err
|
||||
}
|
||||
|
||||
ctx, cancel := context.WithTimeout(context.Background(), opt.Timeout)
|
||||
defer cancel()
|
||||
|
||||
data, contentType, err := downloadWithLimit(ctx, imgURL, int64(opt.MaxDownloadMB*1024*1024))
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
|
||||
img, fmtName, err := decodeImage(data, contentType)
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
|
||||
// Check if image already meets requirements
|
||||
if alreadyMeetsRequirements(img, data, opt) {
|
||||
return "", nil
|
||||
}
|
||||
|
||||
img = applyResize(img, opt)
|
||||
|
||||
// Determine output format
|
||||
outExt := ".jpg"
|
||||
outFormat := "jpeg"
|
||||
|
||||
if opt.ForceJPEG {
|
||||
// Force JPEG output, flatten alpha if needed
|
||||
outFormat = "jpeg"
|
||||
outExt = ".jpg"
|
||||
if imageHasAlpha(img) {
|
||||
img = flattenToWhite(img)
|
||||
}
|
||||
} else {
|
||||
// Auto-detect: if image has alpha, output PNG; otherwise JPEG
|
||||
hasAlpha := imageHasAlpha(img)
|
||||
if hasAlpha {
|
||||
outExt = ".png"
|
||||
outFormat = "png"
|
||||
}
|
||||
}
|
||||
|
||||
// Create a stable file name based on url + options + content signature.
|
||||
h := sha256.New()
|
||||
h.Write([]byte(imgURL))
|
||||
h.Write([]byte(fmt.Sprintf("|%d|%d|%f|%s|%s", opt.TargetWidth, opt.TargetHeight, opt.MaxSizeMB, opt.Mode, outFormat)))
|
||||
h.Write(data[:minInt(len(data), 1024)])
|
||||
name := hex.EncodeToString(h.Sum(nil))[:32] + outExt
|
||||
outPath := filepath.Join(opt.OutputDir, name)
|
||||
|
||||
maxBytes := int64(opt.MaxSizeMB * 1024 * 1024)
|
||||
encoded, err := encodeUnderSize(img, outFormat, maxBytes, opt.MinQuality, opt.MaxRetries)
|
||||
if err != nil {
|
||||
// Fallback: if PNG can't fit, try JPEG (dropping alpha with white background).
|
||||
if outFormat == "png" {
|
||||
flattened := flattenToWhite(img)
|
||||
encoded, err = encodeUnderSize(flattened, "jpeg", maxBytes, opt.MinQuality, opt.MaxRetries)
|
||||
if err == nil {
|
||||
outPath = strings.TrimSuffix(outPath, filepath.Ext(outPath)) + ".jpg"
|
||||
} else {
|
||||
// If AllowResolutionReduction is true, try reducing resolution
|
||||
if opt.AllowResolutionReduction {
|
||||
return tryWithReducedResolution(img, opt, outPath, maxBytes)
|
||||
}
|
||||
return "", err
|
||||
}
|
||||
} else {
|
||||
// If AllowResolutionReduction is true, try reducing resolution
|
||||
if opt.AllowResolutionReduction {
|
||||
return tryWithReducedResolution(img, opt, outPath, maxBytes)
|
||||
}
|
||||
return "", err
|
||||
}
|
||||
}
|
||||
|
||||
tmpPath := outPath + ".tmp"
|
||||
if err := os.WriteFile(tmpPath, encoded, 0o644); err != nil {
|
||||
return "", err
|
||||
}
|
||||
if err := os.Rename(tmpPath, outPath); err != nil {
|
||||
_ = os.Remove(tmpPath)
|
||||
return "", err
|
||||
}
|
||||
|
||||
_ = fmtName // reserved for future behavior
|
||||
return outPath, nil
|
||||
}
|
||||
|
||||
func downloadWithLimit(ctx context.Context, imgURL string, maxBytes int64) ([]byte, string, error) {
|
||||
req, err := http.NewRequestWithContext(ctx, http.MethodGet, imgURL, nil)
|
||||
if err != nil {
|
||||
return nil, "", err
|
||||
}
|
||||
// Reasonable defaults; could be overridden later.
|
||||
req.Header.Set("User-Agent", "fonchain-tools/1.0")
|
||||
|
||||
client := &http.Client{}
|
||||
resp, err := client.Do(req)
|
||||
if err != nil {
|
||||
return nil, "", err
|
||||
}
|
||||
defer func() { _ = resp.Body.Close() }()
|
||||
|
||||
if resp.StatusCode < 200 || resp.StatusCode >= 300 {
|
||||
return nil, "", fmt.Errorf("download failed: %s", resp.Status)
|
||||
}
|
||||
if resp.ContentLength > 0 && resp.ContentLength > maxBytes {
|
||||
return nil, "", fmt.Errorf("remote file too large: %d > %d", resp.ContentLength, maxBytes)
|
||||
}
|
||||
|
||||
lr := &io.LimitedReader{R: resp.Body, N: maxBytes + 1}
|
||||
b, err := io.ReadAll(lr)
|
||||
if err != nil {
|
||||
return nil, "", err
|
||||
}
|
||||
if int64(len(b)) > maxBytes {
|
||||
return nil, "", fmt.Errorf("download exceeded limit: %d > %d", len(b), maxBytes)
|
||||
}
|
||||
return b, resp.Header.Get("Content-Type"), nil
|
||||
}
|
||||
|
||||
func decodeImage(data []byte, contentType string) (image.Image, string, error) {
|
||||
// Register gif (jpeg/png already registered) for Decode.
|
||||
_ = gif.GIF{}
|
||||
reader := bytes.NewReader(data)
|
||||
img, fmtName, err := image.Decode(reader)
|
||||
if err == nil {
|
||||
return img, fmtName, nil
|
||||
}
|
||||
|
||||
// Some servers set odd content-type; try simple sniff.
|
||||
_ = contentType
|
||||
return nil, "", fmt.Errorf("decode image failed: %w", err)
|
||||
}
|
||||
|
||||
func applyResize(img image.Image, opt Options) image.Image {
|
||||
w := opt.TargetWidth
|
||||
h := opt.TargetHeight
|
||||
|
||||
srcW := img.Bounds().Dx()
|
||||
srcH := img.Bounds().Dy()
|
||||
if srcW <= 0 || srcH <= 0 {
|
||||
return img
|
||||
}
|
||||
|
||||
switch opt.Mode {
|
||||
case ResizeModeFill:
|
||||
return imaging.Fill(img, w, h, imaging.Center, imaging.Lanczos)
|
||||
case ResizeModeFit:
|
||||
// If only one dimension is provided, keep aspect.
|
||||
if w == 0 {
|
||||
w = int(float64(srcW) * (float64(h) / float64(srcH)))
|
||||
if w < 1 {
|
||||
w = 1
|
||||
}
|
||||
}
|
||||
if h == 0 {
|
||||
h = int(float64(srcH) * (float64(w) / float64(srcW)))
|
||||
if h < 1 {
|
||||
h = 1
|
||||
}
|
||||
}
|
||||
// imaging.Fit ensures the result fits within w,h without cropping.
|
||||
return imaging.Fit(img, w, h, imaging.Lanczos)
|
||||
case ResizeModePad:
|
||||
bg := opt.PadColor
|
||||
if bg == nil {
|
||||
bg = color.White
|
||||
}
|
||||
// First, fit within WxH (no crop).
|
||||
fitted := imaging.Fit(img, w, h, imaging.Lanczos)
|
||||
// Then, paste centered onto WxH canvas.
|
||||
canvas := imaging.New(w, h, bg)
|
||||
x := (w - fitted.Bounds().Dx()) / 2
|
||||
y := (h - fitted.Bounds().Dy()) / 2
|
||||
return imaging.Paste(canvas, fitted, image.Pt(x, y))
|
||||
default:
|
||||
return img
|
||||
}
|
||||
}
|
||||
|
||||
func encodeUnderSize(img image.Image, format string, maxBytes int64, minQuality, maxRetries int) ([]byte, error) {
|
||||
if maxBytes <= 0 {
|
||||
return nil, errors.New("maxBytes must be > 0")
|
||||
}
|
||||
|
||||
switch format {
|
||||
case "jpeg":
|
||||
// Binary search quality.
|
||||
lo, hi := minQuality, 92
|
||||
var best []byte
|
||||
iterations := 0
|
||||
maxIterations := maxInt(8, maxRetries/2)
|
||||
|
||||
for i := 0; i < maxIterations && lo <= hi; i++ {
|
||||
iterations++
|
||||
q := (lo + hi) / 2
|
||||
b, err := encodeJPEG(img, q)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if int64(len(b)) <= maxBytes {
|
||||
best = b
|
||||
lo = q + 1
|
||||
} else {
|
||||
hi = q - 1
|
||||
}
|
||||
}
|
||||
|
||||
if best != nil {
|
||||
return best, nil
|
||||
}
|
||||
|
||||
// Try more aggressive qualities from minQuality down to 1
|
||||
qualities := []int{}
|
||||
for q := minQuality; q >= 1; q -= 5 {
|
||||
qualities = append(qualities, q)
|
||||
}
|
||||
// Ensure we try the lowest qualities
|
||||
if minQuality > 3 {
|
||||
qualities = append(qualities, 3, 1)
|
||||
}
|
||||
|
||||
var lastSize int64
|
||||
for _, q := range qualities {
|
||||
if iterations >= maxRetries {
|
||||
break
|
||||
}
|
||||
iterations++
|
||||
b, err := encodeJPEG(img, q)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
lastSize = int64(len(b))
|
||||
if lastSize <= maxBytes {
|
||||
return b, nil
|
||||
}
|
||||
}
|
||||
|
||||
sizeMB := float64(lastSize) / (1024 * 1024)
|
||||
targetMB := float64(maxBytes) / (1024 * 1024)
|
||||
return nil, fmt.Errorf("cannot compress to %.2fMB (best: %.2fMB at quality %d after %d attempts). Consider increasing MaxSizeMB or enabling AllowResolutionReduction",
|
||||
targetMB, sizeMB, minQuality, iterations)
|
||||
|
||||
case "png":
|
||||
// PNG size depends heavily on content; try best compression.
|
||||
b, err := encodePNG(img, png.BestCompression)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if int64(len(b)) <= maxBytes {
|
||||
return b, nil
|
||||
}
|
||||
sizeMB := float64(len(b)) / (1024 * 1024)
|
||||
targetMB := float64(maxBytes) / (1024 * 1024)
|
||||
return nil, fmt.Errorf("PNG cannot compress to %.2fMB (got %.2fMB). Consider using JPEG format or enabling AllowResolutionReduction",
|
||||
targetMB, sizeMB)
|
||||
|
||||
default:
|
||||
return nil, errors.New("unsupported output format")
|
||||
}
|
||||
}
|
||||
|
||||
func encodeJPEG(img image.Image, quality int) ([]byte, error) {
|
||||
var buf bytes.Buffer
|
||||
// Use 4:2:0 subsampling (default) for smaller size.
|
||||
err := jpeg.Encode(&buf, img, &jpeg.Options{Quality: quality})
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return buf.Bytes(), nil
|
||||
}
|
||||
|
||||
func encodePNG(img image.Image, level png.CompressionLevel) ([]byte, error) {
|
||||
var buf bytes.Buffer
|
||||
enc := png.Encoder{CompressionLevel: level}
|
||||
if err := enc.Encode(&buf, img); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return buf.Bytes(), nil
|
||||
}
|
||||
|
||||
func imageHasAlpha(img image.Image) bool {
|
||||
switch img.(type) {
|
||||
case *image.NRGBA, *image.NRGBA64, *image.RGBA, *image.RGBA64, *image.Alpha, *image.Alpha16, *image.Paletted:
|
||||
// Need to inspect pixels if we want exactness; but this is good enough and stable.
|
||||
return true
|
||||
default:
|
||||
return false
|
||||
}
|
||||
}
|
||||
|
||||
func flattenToWhite(img image.Image) image.Image {
|
||||
b := img.Bounds()
|
||||
dst := image.NewRGBA(b)
|
||||
|
||||
// Fill with white.
|
||||
for y := b.Min.Y; y < b.Max.Y; y++ {
|
||||
for x := b.Min.X; x < b.Max.X; x++ {
|
||||
dst.Set(x, y, image.White)
|
||||
}
|
||||
}
|
||||
|
||||
// Draw original image over white background.
|
||||
return imaging.Overlay(dst, img, image.Pt(0, 0), 1.0)
|
||||
}
|
||||
|
||||
func minInt(a, b int) int {
|
||||
if a < b {
|
||||
return a
|
||||
}
|
||||
return b
|
||||
}
|
||||
|
||||
func maxInt(a, b int) int {
|
||||
if a > b {
|
||||
return a
|
||||
}
|
||||
return b
|
||||
}
|
||||
|
||||
// alreadyMeetsRequirements checks if the image already satisfies the size and dimension requirements
|
||||
func alreadyMeetsRequirements(img image.Image, data []byte, opt Options) bool {
|
||||
// Check file size
|
||||
maxBytes := int64(opt.MaxSizeMB * 1024 * 1024)
|
||||
if int64(len(data)) > maxBytes {
|
||||
return false
|
||||
}
|
||||
|
||||
// Check dimensions based on mode
|
||||
srcW := img.Bounds().Dx()
|
||||
srcH := img.Bounds().Dy()
|
||||
targetW := opt.TargetWidth
|
||||
targetH := opt.TargetHeight
|
||||
|
||||
switch opt.Mode {
|
||||
case ResizeModeFit:
|
||||
// For fit mode, check if image is already within or equal to target dimensions
|
||||
if targetW > 0 && srcW > targetW {
|
||||
return false
|
||||
}
|
||||
if targetH > 0 && srcH > targetH {
|
||||
return false
|
||||
}
|
||||
// If only one dimension is specified, check aspect ratio compatibility
|
||||
if targetW > 0 && targetH == 0 && srcW <= targetW {
|
||||
return true
|
||||
}
|
||||
if targetH > 0 && targetW == 0 && srcH <= targetH {
|
||||
return true
|
||||
}
|
||||
if targetW > 0 && targetH > 0 && srcW <= targetW && srcH <= targetH {
|
||||
return true
|
||||
}
|
||||
return false
|
||||
|
||||
case ResizeModeFill, ResizeModePad:
|
||||
// For fill/pad mode, image must be exactly the target dimensions
|
||||
if srcW != targetW || srcH != targetH {
|
||||
return false
|
||||
}
|
||||
return true
|
||||
|
||||
default:
|
||||
return false
|
||||
}
|
||||
}
|
||||
|
||||
// tryWithReducedResolution attempts to compress by progressively reducing resolution
|
||||
func tryWithReducedResolution(img image.Image, opt Options, outPath string, maxBytes int64) (string, error) {
|
||||
bounds := img.Bounds()
|
||||
w := bounds.Dx()
|
||||
h := bounds.Dy()
|
||||
|
||||
// Try reducing resolution in steps: 90%, 80%, 70%, 60%, 50%
|
||||
reductions := []float64{0.9, 0.8, 0.7, 0.6, 0.5}
|
||||
|
||||
for _, factor := range reductions {
|
||||
newW := int(float64(w) * factor)
|
||||
newH := int(float64(h) * factor)
|
||||
|
||||
if newW < 100 || newH < 100 {
|
||||
break // Don't reduce too much
|
||||
}
|
||||
|
||||
resized := imaging.Resize(img, newW, newH, imaging.Lanczos)
|
||||
|
||||
// Try to encode with reduced resolution
|
||||
encoded, err := encodeUnderSize(resized, "jpeg", maxBytes, opt.MinQuality, opt.MaxRetries/2)
|
||||
if err == nil {
|
||||
// Success! Save it
|
||||
tmpPath := outPath + ".tmp"
|
||||
if err := os.WriteFile(tmpPath, encoded, 0o644); err != nil {
|
||||
return "", err
|
||||
}
|
||||
if err := os.Rename(tmpPath, outPath); err != nil {
|
||||
_ = os.Remove(tmpPath)
|
||||
return "", err
|
||||
}
|
||||
return outPath, nil
|
||||
}
|
||||
}
|
||||
|
||||
targetMB := float64(maxBytes) / (1024 * 1024)
|
||||
return "", fmt.Errorf("cannot compress to %.2fMB even after reducing resolution to 50%%. Original size too large", targetMB)
|
||||
}
|
||||
@ -1,6 +1,9 @@
|
||||
package utils
|
||||
|
||||
import "strings"
|
||||
import (
|
||||
"regexp"
|
||||
"strings"
|
||||
)
|
||||
|
||||
// CleanString 移除所有空白字符
|
||||
func CleanString(s string) string {
|
||||
@ -18,3 +21,33 @@ func TruncateString(s string, maxLen int) string {
|
||||
}
|
||||
return string(runes[:maxLen])
|
||||
}
|
||||
|
||||
// ExtractTags 从文本中提取标签,标签以 # 开头,后面不能直接跟空格
|
||||
func ExtractTags(s string) []string {
|
||||
if len(s) == 0 {
|
||||
return []string{}
|
||||
}
|
||||
re := regexp.MustCompile(`#[^\s#\p{P}]+`)
|
||||
matches := re.FindAllString(s, -1)
|
||||
|
||||
tags := make([]string, 0, len(matches))
|
||||
for _, match := range matches {
|
||||
// 去掉开头的 #,只保留标签内容
|
||||
tag := match[1:]
|
||||
if len(tag) > 0 {
|
||||
tags = append(tags, tag)
|
||||
}
|
||||
}
|
||||
|
||||
return tags
|
||||
}
|
||||
|
||||
// 去掉自动标签里面多余的引号
|
||||
func CleanAutoHashtagsQuote(input string) string {
|
||||
if input == "" {
|
||||
return ""
|
||||
}
|
||||
cleaned := strings.ReplaceAll(input, "\\\"", "")
|
||||
cleaned = strings.ReplaceAll(cleaned, "\"", "")
|
||||
return cleaned
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user