diff --git a/README.md b/README.md index 37dd270..d28de8e 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,8 @@ ## 常用命令 ```bash +D:\Git\bin\bash.exe rpc/scripts/gen-rpc.sh order +或者 rpc/scripts/gen-rpc.sh order ``` diff --git a/bff/internal/dialer/nacos.go b/bff/internal/dialer/nacos.go index 41d4433..d0452d2 100644 --- a/bff/internal/dialer/nacos.go +++ b/bff/internal/dialer/nacos.go @@ -6,6 +6,7 @@ import ( "lone-services/bff/internal/response" "lone-services/pkg/discovery" "net" + "time" "github.com/zeromicro/go-zero/zrpc" "google.golang.org/grpc" @@ -26,6 +27,11 @@ func Nacos(conf zrpc.RpcClientConf) zrpc.Client { return zrpc.MustNewClient(cliConf, zrpc.WithDialOption(grpc.WithTransportCredentials(insecure.NewCredentials())), zrpc.WithDialOption(grpc.WithUnaryInterceptor(response.UserClientInterceptor)), + // 等重连/重新 Pick + zrpc.WithDialOption(grpc.WithDefaultCallOptions(grpc.WaitForReady(true))), + zrpc.WithDialOption(grpc.WithConnectParams(grpc.ConnectParams{ + MinConnectTimeout: 2 * time.Second, + })), zrpc.WithDialOption(grpc.WithContextDialer(func(ctx context.Context, _ string) (net.Conn, error) { inst, err := discovery.Pick(serviceName) if err != nil { diff --git a/pkg/log/log.go b/pkg/log/log.go deleted file mode 100644 index 489d021..0000000 --- a/pkg/log/log.go +++ /dev/null @@ -1,137 +0,0 @@ -package log - -import ( - "fmt" - "os" - "time" - - "go.uber.org/zap" - "go.uber.org/zap/zapcore" - "gopkg.in/natefinch/lumberjack.v2" -) - -var sugar *zap.SugaredLogger - -type Config struct { - Path string - InfoFile string - ErrorFile string - FatalFile string - MaxSize int - MaxBackups int - MaxAge int -} - -func Init(c Config) error { - l, err := New(c) - if err != nil { - return err - } - sugar = l - return nil -} - -func Info(args ...any) { sugar.Info(args...) } -func Infof(template string, args ...any) { sugar.Infof(template, args...) } -func Warn(args ...any) { sugar.Warn(args...) } -func Warnf(template string, args ...any) { sugar.Warnf(template, args...) } -func Error(args ...any) { sugar.Error(args...) } -func Errorf(template string, args ...any) { sugar.Errorf(template, args...) } -func Fatal(args ...any) { sugar.Fatal(args...) } -func Fatalf(template string, args ...any) { sugar.Fatalf(template, args...) } - -func New(c Config) (*zap.SugaredLogger, error) { - if c.Path == "" { - c.Path = "logs" - } - if c.InfoFile == "" { - c.InfoFile = "info.log" - } - if c.ErrorFile == "" { - c.ErrorFile = "error.log" - } - if c.FatalFile == "" { - c.FatalFile = "fatal.log" - } - if c.MaxSize == 0 { - c.MaxSize = 100 - } - if c.MaxBackups == 0 { - c.MaxBackups = 10 - } - if c.MaxAge == 0 { - c.MaxAge = 30 - } - - if err := os.MkdirAll(c.Path, 0o755); err != nil { - return nil, fmt.Errorf("log mkdir: %w", err) - } - - consoleEncoder := zapcore.NewConsoleEncoder(zapcore.EncoderConfig{ - MessageKey: "msg", - LevelKey: "level", - EncodeLevel: zapcore.LowercaseColorLevelEncoder, - TimeKey: "ts", - EncodeTime: func(t time.Time, enc zapcore.PrimitiveArrayEncoder) { - enc.AppendString(t.Format("2006-01-02 15:04:05")) - }, - CallerKey: "file", - EncodeCaller: zapcore.ShortCallerEncoder, - EncodeDuration: func(d time.Duration, enc zapcore.PrimitiveArrayEncoder) { - enc.AppendInt64(int64(d) / 1e6) - }, - }) - - fileEncoder := zapcore.NewConsoleEncoder(zapcore.EncoderConfig{ - MessageKey: "msg", - LevelKey: "level", - EncodeLevel: zapcore.LowercaseLevelEncoder, - TimeKey: "ts", - EncodeTime: func(t time.Time, enc zapcore.PrimitiveArrayEncoder) { - enc.AppendString(t.Format("2006-01-02 15:04:05")) - }, - CallerKey: "file", - EncodeCaller: zapcore.ShortCallerEncoder, - EncodeDuration: func(d time.Duration, enc zapcore.PrimitiveArrayEncoder) { - enc.AppendInt64(int64(d) / 1e6) - }, - }) - - infoLevel := zap.LevelEnablerFunc(func(lvl zapcore.Level) bool { - return lvl == zapcore.InfoLevel - }) - errorLevel := zap.LevelEnablerFunc(func(lvl zapcore.Level) bool { - return lvl == zapcore.ErrorLevel - }) - fatalLevel := zap.LevelEnablerFunc(func(lvl zapcore.Level) bool { - return lvl == zapcore.FatalLevel - }) - - today := time.Now().Format("2006-01-02") - infoWriter := getWriter(c.Path+"/"+today+"-"+c.InfoFile, c) - errorWriter := getWriter(c.Path+"/"+today+"-"+c.ErrorFile, c) - fatalWriter := getWriter(c.Path+"/"+today+"-"+c.FatalFile, c) - - core := zapcore.NewTee( - zapcore.NewCore(consoleEncoder, zapcore.AddSync(os.Stdout), zap.LevelEnablerFunc(func(lvl zapcore.Level) bool { - return lvl >= zapcore.InfoLevel - })), - zapcore.NewCore(fileEncoder, infoWriter, infoLevel), - zapcore.NewCore(fileEncoder, errorWriter, errorLevel), - zapcore.NewCore(fileEncoder, fatalWriter, fatalLevel), - ) - - // AddCallerSkip(1):经包级 Info/Errorf 转发时显示真实调用方 - return zap.New(core, zap.AddCaller(), zap.AddCallerSkip(1)).Sugar(), nil -} - -func getWriter(filename string, c Config) zapcore.WriteSyncer { - return zapcore.AddSync(&lumberjack.Logger{ - Filename: filename, - MaxSize: c.MaxSize, - MaxBackups: c.MaxBackups, - MaxAge: c.MaxAge, - Compress: false, - LocalTime: true, - }) -} diff --git a/rpc/ad/ad.pb b/rpc/ad/ad.pb index 9a5b311..d55b41a 100644 Binary files a/rpc/ad/ad.pb and b/rpc/ad/ad.pb differ diff --git a/rpc/ad/ad.proto b/rpc/ad/ad.proto index 0672e1a..429d7a0 100644 --- a/rpc/ad/ad.proto +++ b/rpc/ad/ad.proto @@ -5,34 +5,36 @@ option go_package = "lone-services/rpc/ad"; import "google/api/annotations.proto"; service Ad { - // 添加广告 rpc Create(CreateReq) returns (Response) { option (google.api.http) = { post: "/admin/v3/ad" body: "*" }; } - // 编辑广告 rpc Edit(EditReq) returns (Response) { option (google.api.http) = { put: "/admin/v3/ad" body: "*" }; } - // 广告列表 rpc Items(ItemsReq) returns (Response) { option (google.api.http) = { get: "/admin/v3/ad" body: "*" }; } - // 广告状态 rpc Status(StatusReq) returns (Response) { option (google.api.http) = { put: "/admin/v3/ad/status" body: "*" }; } + rpc WebItems(WebItemsReq) returns (Response) { + option (google.api.http) = { + get: "/api/v3/ad" + body: "*" + }; + } } message Response { @@ -61,6 +63,11 @@ message ItemsReq { uint32 page_size = 2; } +// type: 逗号分隔,如 "1,2,3" +message WebItemsReq { + string type = 1; +} + message StatusReq { int64 id = 1; uint32 status = 2; @@ -83,3 +90,11 @@ message Item { string update_time = 8; string create_time = 9; } + +message WebItem { + int64 id = 1; + uint32 type = 2; + string image = 3; + string content = 4; + string url = 5; +} diff --git a/rpc/ad/pb/ad.pb.go b/rpc/ad/pb/ad.pb.go index 582b8e3..7045710 100644 --- a/rpc/ad/pb/ad.pb.go +++ b/rpc/ad/pb/ad.pb.go @@ -82,7 +82,6 @@ func (x *Response) GetData() string { return "" } -// type: 1、商城首页banner 2、商城首页视频 3、商城首页公告 4、商城首页教程 type CreateReq struct { state protoimpl.MessageState `protogen:"open.v1"` Type uint32 `protobuf:"varint,1,opt,name=type,proto3" json:"type,omitempty"` @@ -279,7 +278,51 @@ func (x *ItemsReq) GetPageSize() uint32 { return 0 } -// status: 1 正常, 2 禁用 +// type: 逗号分隔,如 "1,2,3" +type WebItemsReq struct { + state protoimpl.MessageState `protogen:"open.v1"` + Type string `protobuf:"bytes,1,opt,name=type,proto3" json:"type,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *WebItemsReq) Reset() { + *x = WebItemsReq{} + mi := &file_ad_ad_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *WebItemsReq) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*WebItemsReq) ProtoMessage() {} + +func (x *WebItemsReq) ProtoReflect() protoreflect.Message { + mi := &file_ad_ad_proto_msgTypes[4] + 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 WebItemsReq.ProtoReflect.Descriptor instead. +func (*WebItemsReq) Descriptor() ([]byte, []int) { + return file_ad_ad_proto_rawDescGZIP(), []int{4} +} + +func (x *WebItemsReq) GetType() string { + if x != nil { + return x.Type + } + return "" +} + type StatusReq struct { state protoimpl.MessageState `protogen:"open.v1"` Id int64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` @@ -291,7 +334,7 @@ type StatusReq struct { func (x *StatusReq) Reset() { *x = StatusReq{} - mi := &file_ad_ad_proto_msgTypes[4] + mi := &file_ad_ad_proto_msgTypes[5] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -303,7 +346,7 @@ func (x *StatusReq) String() string { func (*StatusReq) ProtoMessage() {} func (x *StatusReq) ProtoReflect() protoreflect.Message { - mi := &file_ad_ad_proto_msgTypes[4] + mi := &file_ad_ad_proto_msgTypes[5] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -316,7 +359,7 @@ func (x *StatusReq) ProtoReflect() protoreflect.Message { // Deprecated: Use StatusReq.ProtoReflect.Descriptor instead. func (*StatusReq) Descriptor() ([]byte, []int) { - return file_ad_ad_proto_rawDescGZIP(), []int{4} + return file_ad_ad_proto_rawDescGZIP(), []int{5} } func (x *StatusReq) GetId() int64 { @@ -350,7 +393,7 @@ type ItemsData struct { func (x *ItemsData) Reset() { *x = ItemsData{} - mi := &file_ad_ad_proto_msgTypes[5] + mi := &file_ad_ad_proto_msgTypes[6] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -362,7 +405,7 @@ func (x *ItemsData) String() string { func (*ItemsData) ProtoMessage() {} func (x *ItemsData) ProtoReflect() protoreflect.Message { - mi := &file_ad_ad_proto_msgTypes[5] + mi := &file_ad_ad_proto_msgTypes[6] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -375,7 +418,7 @@ func (x *ItemsData) ProtoReflect() protoreflect.Message { // Deprecated: Use ItemsData.ProtoReflect.Descriptor instead. func (*ItemsData) Descriptor() ([]byte, []int) { - return file_ad_ad_proto_rawDescGZIP(), []int{5} + return file_ad_ad_proto_rawDescGZIP(), []int{6} } func (x *ItemsData) GetCount() int64 { @@ -409,7 +452,7 @@ type Item struct { func (x *Item) Reset() { *x = Item{} - mi := &file_ad_ad_proto_msgTypes[6] + mi := &file_ad_ad_proto_msgTypes[7] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -421,7 +464,7 @@ func (x *Item) String() string { func (*Item) ProtoMessage() {} func (x *Item) ProtoReflect() protoreflect.Message { - mi := &file_ad_ad_proto_msgTypes[6] + mi := &file_ad_ad_proto_msgTypes[7] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -434,7 +477,7 @@ func (x *Item) ProtoReflect() protoreflect.Message { // Deprecated: Use Item.ProtoReflect.Descriptor instead. func (*Item) Descriptor() ([]byte, []int) { - return file_ad_ad_proto_rawDescGZIP(), []int{6} + return file_ad_ad_proto_rawDescGZIP(), []int{7} } func (x *Item) GetId() int64 { @@ -500,6 +543,82 @@ func (x *Item) GetCreateTime() string { return "" } +type WebItem struct { + state protoimpl.MessageState `protogen:"open.v1"` + Id int64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + Type uint32 `protobuf:"varint,2,opt,name=type,proto3" json:"type,omitempty"` + Image string `protobuf:"bytes,3,opt,name=image,proto3" json:"image,omitempty"` + Content string `protobuf:"bytes,4,opt,name=content,proto3" json:"content,omitempty"` + Url string `protobuf:"bytes,5,opt,name=url,proto3" json:"url,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *WebItem) Reset() { + *x = WebItem{} + mi := &file_ad_ad_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *WebItem) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*WebItem) ProtoMessage() {} + +func (x *WebItem) ProtoReflect() protoreflect.Message { + mi := &file_ad_ad_proto_msgTypes[8] + 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 WebItem.ProtoReflect.Descriptor instead. +func (*WebItem) Descriptor() ([]byte, []int) { + return file_ad_ad_proto_rawDescGZIP(), []int{8} +} + +func (x *WebItem) GetId() int64 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *WebItem) GetType() uint32 { + if x != nil { + return x.Type + } + return 0 +} + +func (x *WebItem) GetImage() string { + if x != nil { + return x.Image + } + return "" +} + +func (x *WebItem) GetContent() string { + if x != nil { + return x.Content + } + return "" +} + +func (x *WebItem) GetUrl() string { + if x != nil { + return x.Url + } + return "" +} + var File_ad_ad_proto protoreflect.FileDescriptor const file_ad_ad_proto_rawDesc = "" + @@ -522,7 +641,9 @@ const file_ad_ad_proto_rawDesc = "" + "\x03url\x18\x05 \x01(\tR\x03url\";\n" + "\bItemsReq\x12\x12\n" + "\x04page\x18\x01 \x01(\rR\x04page\x12\x1b\n" + - "\tpage_size\x18\x02 \x01(\rR\bpageSize\"K\n" + + "\tpage_size\x18\x02 \x01(\rR\bpageSize\"!\n" + + "\vWebItemsReq\x12\x12\n" + + "\x04type\x18\x01 \x01(\tR\x04type\"K\n" + "\tStatusReq\x12\x0e\n" + "\x02id\x18\x01 \x01(\x03R\x02id\x12\x16\n" + "\x06status\x18\x02 \x01(\rR\x06status\x12\x16\n" + @@ -541,12 +662,20 @@ const file_ad_ad_proto_rawDesc = "" + "\vupdate_time\x18\b \x01(\tR\n" + "updateTime\x12\x1f\n" + "\vcreate_time\x18\t \x01(\tR\n" + - "createTime2\x85\x02\n" + + "createTime\"o\n" + + "\aWebItem\x12\x0e\n" + + "\x02id\x18\x01 \x01(\x03R\x02id\x12\x12\n" + + "\x04type\x18\x02 \x01(\rR\x04type\x12\x14\n" + + "\x05image\x18\x03 \x01(\tR\x05image\x12\x18\n" + + "\acontent\x18\x04 \x01(\tR\acontent\x12\x10\n" + + "\x03url\x18\x05 \x01(\tR\x03url2\xc7\x02\n" + "\x02Ad\x12>\n" + "\x06Create\x12\r.ad.CreateReq\x1a\f.ad.Response\"\x17\x82\xd3\xe4\x93\x02\x11:\x01*\"\f/admin/v3/ad\x12:\n" + "\x04Edit\x12\v.ad.EditReq\x1a\f.ad.Response\"\x17\x82\xd3\xe4\x93\x02\x11:\x01*\x1a\f/admin/v3/ad\x12<\n" + "\x05Items\x12\f.ad.ItemsReq\x1a\f.ad.Response\"\x17\x82\xd3\xe4\x93\x02\x11:\x01*\x12\f/admin/v3/ad\x12E\n" + - "\x06Status\x12\r.ad.StatusReq\x1a\f.ad.Response\"\x1e\x82\xd3\xe4\x93\x02\x18:\x01*\x1a\x13/admin/v3/ad/statusB\x16Z\x14lone-services/rpc/adb\x06proto3" + "\x06Status\x12\r.ad.StatusReq\x1a\f.ad.Response\"\x1e\x82\xd3\xe4\x93\x02\x18:\x01*\x1a\x13/admin/v3/ad/status\x12@\n" + + "\bWebItems\x12\x0f.ad.WebItemsReq\x1a\f.ad.Response\"\x15\x82\xd3\xe4\x93\x02\x0f:\x01*\x12\n" + + "/api/v3/adB\x16Z\x14lone-services/rpc/adb\x06proto3" var ( file_ad_ad_proto_rawDescOnce sync.Once @@ -560,28 +689,32 @@ func file_ad_ad_proto_rawDescGZIP() []byte { return file_ad_ad_proto_rawDescData } -var file_ad_ad_proto_msgTypes = make([]protoimpl.MessageInfo, 7) +var file_ad_ad_proto_msgTypes = make([]protoimpl.MessageInfo, 9) var file_ad_ad_proto_goTypes = []any{ - (*Response)(nil), // 0: ad.Response - (*CreateReq)(nil), // 1: ad.CreateReq - (*EditReq)(nil), // 2: ad.EditReq - (*ItemsReq)(nil), // 3: ad.ItemsReq - (*StatusReq)(nil), // 4: ad.StatusReq - (*ItemsData)(nil), // 5: ad.ItemsData - (*Item)(nil), // 6: ad.Item + (*Response)(nil), // 0: ad.Response + (*CreateReq)(nil), // 1: ad.CreateReq + (*EditReq)(nil), // 2: ad.EditReq + (*ItemsReq)(nil), // 3: ad.ItemsReq + (*WebItemsReq)(nil), // 4: ad.WebItemsReq + (*StatusReq)(nil), // 5: ad.StatusReq + (*ItemsData)(nil), // 6: ad.ItemsData + (*Item)(nil), // 7: ad.Item + (*WebItem)(nil), // 8: ad.WebItem } var file_ad_ad_proto_depIdxs = []int32{ - 6, // 0: ad.ItemsData.items:type_name -> ad.Item + 7, // 0: ad.ItemsData.items:type_name -> ad.Item 1, // 1: ad.Ad.Create:input_type -> ad.CreateReq 2, // 2: ad.Ad.Edit:input_type -> ad.EditReq 3, // 3: ad.Ad.Items:input_type -> ad.ItemsReq - 4, // 4: ad.Ad.Status:input_type -> ad.StatusReq - 0, // 5: ad.Ad.Create:output_type -> ad.Response - 0, // 6: ad.Ad.Edit:output_type -> ad.Response - 0, // 7: ad.Ad.Items:output_type -> ad.Response - 0, // 8: ad.Ad.Status:output_type -> ad.Response - 5, // [5:9] is the sub-list for method output_type - 1, // [1:5] is the sub-list for method input_type + 5, // 4: ad.Ad.Status:input_type -> ad.StatusReq + 4, // 5: ad.Ad.WebItems:input_type -> ad.WebItemsReq + 0, // 6: ad.Ad.Create:output_type -> ad.Response + 0, // 7: ad.Ad.Edit:output_type -> ad.Response + 0, // 8: ad.Ad.Items:output_type -> ad.Response + 0, // 9: ad.Ad.Status:output_type -> ad.Response + 0, // 10: ad.Ad.WebItems:output_type -> ad.Response + 6, // [6:11] is the sub-list for method output_type + 1, // [1:6] is the sub-list for method input_type 1, // [1:1] is the sub-list for extension type_name 1, // [1:1] is the sub-list for extension extendee 0, // [0:1] is the sub-list for field type_name @@ -598,7 +731,7 @@ func file_ad_ad_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: unsafe.Slice(unsafe.StringData(file_ad_ad_proto_rawDesc), len(file_ad_ad_proto_rawDesc)), NumEnums: 0, - NumMessages: 7, + NumMessages: 9, NumExtensions: 0, NumServices: 1, }, diff --git a/rpc/ad/pb/ad_grpc.pb.go b/rpc/ad/pb/ad_grpc.pb.go index afa6510..c1d1119 100644 --- a/rpc/ad/pb/ad_grpc.pb.go +++ b/rpc/ad/pb/ad_grpc.pb.go @@ -19,10 +19,11 @@ import ( const _ = grpc.SupportPackageIsVersion9 const ( - Ad_Create_FullMethodName = "/ad.Ad/Create" - Ad_Edit_FullMethodName = "/ad.Ad/Edit" - Ad_Items_FullMethodName = "/ad.Ad/Items" - Ad_Status_FullMethodName = "/ad.Ad/Status" + Ad_Create_FullMethodName = "/ad.Ad/Create" + Ad_Edit_FullMethodName = "/ad.Ad/Edit" + Ad_Items_FullMethodName = "/ad.Ad/Items" + Ad_Status_FullMethodName = "/ad.Ad/Status" + Ad_WebItems_FullMethodName = "/ad.Ad/WebItems" ) // AdClient is the client API for Ad service. @@ -33,10 +34,12 @@ type AdClient interface { Create(ctx context.Context, in *CreateReq, opts ...grpc.CallOption) (*Response, error) // 编辑广告 Edit(ctx context.Context, in *EditReq, opts ...grpc.CallOption) (*Response, error) - // 广告列表 + // 广告列表(后台) Items(ctx context.Context, in *ItemsReq, opts ...grpc.CallOption) (*Response, error) // 广告状态 Status(ctx context.Context, in *StatusReq, opts ...grpc.CallOption) (*Response, error) + // 广告列表(C 端) + WebItems(ctx context.Context, in *WebItemsReq, opts ...grpc.CallOption) (*Response, error) } type adClient struct { @@ -87,6 +90,16 @@ func (c *adClient) Status(ctx context.Context, in *StatusReq, opts ...grpc.CallO return out, nil } +func (c *adClient) WebItems(ctx context.Context, in *WebItemsReq, opts ...grpc.CallOption) (*Response, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(Response) + err := c.cc.Invoke(ctx, Ad_WebItems_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + // AdServer is the server API for Ad service. // All implementations must embed UnimplementedAdServer // for forward compatibility. @@ -95,10 +108,12 @@ type AdServer interface { Create(context.Context, *CreateReq) (*Response, error) // 编辑广告 Edit(context.Context, *EditReq) (*Response, error) - // 广告列表 + // 广告列表(后台) Items(context.Context, *ItemsReq) (*Response, error) // 广告状态 Status(context.Context, *StatusReq) (*Response, error) + // 广告列表(C 端) + WebItems(context.Context, *WebItemsReq) (*Response, error) mustEmbedUnimplementedAdServer() } @@ -121,6 +136,9 @@ func (UnimplementedAdServer) Items(context.Context, *ItemsReq) (*Response, error func (UnimplementedAdServer) Status(context.Context, *StatusReq) (*Response, error) { return nil, status.Error(codes.Unimplemented, "method Status not implemented") } +func (UnimplementedAdServer) WebItems(context.Context, *WebItemsReq) (*Response, error) { + return nil, status.Error(codes.Unimplemented, "method WebItems not implemented") +} func (UnimplementedAdServer) mustEmbedUnimplementedAdServer() {} func (UnimplementedAdServer) testEmbeddedByValue() {} @@ -214,6 +232,24 @@ func _Ad_Status_Handler(srv interface{}, ctx context.Context, dec func(interface return interceptor(ctx, in, info, handler) } +func _Ad_WebItems_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(WebItemsReq) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(AdServer).WebItems(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Ad_WebItems_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(AdServer).WebItems(ctx, req.(*WebItemsReq)) + } + return interceptor(ctx, in, info, handler) +} + // Ad_ServiceDesc is the grpc.ServiceDesc for Ad service. // It's only intended for direct use with grpc.RegisterService, // and not to be introspected or modified (even as a copy) @@ -237,6 +273,10 @@ var Ad_ServiceDesc = grpc.ServiceDesc{ MethodName: "Status", Handler: _Ad_Status_Handler, }, + { + MethodName: "WebItems", + Handler: _Ad_WebItems_Handler, + }, }, Streams: []grpc.StreamDesc{}, Metadata: "ad/ad.proto", diff --git a/services/ad/adclient/ad.go b/services/ad/adclient/ad.go index e74b5a4..6304ce4 100644 --- a/services/ad/adclient/ad.go +++ b/services/ad/adclient/ad.go @@ -14,23 +14,27 @@ import ( ) type ( - CreateReq = ad.CreateReq - EditReq = ad.EditReq - Item = ad.Item - ItemsData = ad.ItemsData - ItemsReq = ad.ItemsReq - Response = ad.Response - StatusReq = ad.StatusReq + CreateReq = ad.CreateReq + EditReq = ad.EditReq + Item = ad.Item + ItemsData = ad.ItemsData + ItemsReq = ad.ItemsReq + Response = ad.Response + StatusReq = ad.StatusReq + WebItem = ad.WebItem + WebItemsReq = ad.WebItemsReq Ad interface { // 添加广告 Create(ctx context.Context, in *CreateReq, opts ...grpc.CallOption) (*Response, error) // 编辑广告 Edit(ctx context.Context, in *EditReq, opts ...grpc.CallOption) (*Response, error) - // 广告列表 + // 广告列表(后台) Items(ctx context.Context, in *ItemsReq, opts ...grpc.CallOption) (*Response, error) // 广告状态 Status(ctx context.Context, in *StatusReq, opts ...grpc.CallOption) (*Response, error) + // 广告列表(C 端) + WebItems(ctx context.Context, in *WebItemsReq, opts ...grpc.CallOption) (*Response, error) } defaultAd struct { @@ -56,7 +60,7 @@ func (m *defaultAd) Edit(ctx context.Context, in *EditReq, opts ...grpc.CallOpti return client.Edit(ctx, in, opts...) } -// 广告列表 +// 广告列表(后台) func (m *defaultAd) Items(ctx context.Context, in *ItemsReq, opts ...grpc.CallOption) (*Response, error) { client := ad.NewAdClient(m.cli.Conn()) return client.Items(ctx, in, opts...) @@ -67,3 +71,9 @@ func (m *defaultAd) Status(ctx context.Context, in *StatusReq, opts ...grpc.Call client := ad.NewAdClient(m.cli.Conn()) return client.Status(ctx, in, opts...) } + +// 广告列表(C 端) +func (m *defaultAd) WebItems(ctx context.Context, in *WebItemsReq, opts ...grpc.CallOption) (*Response, error) { + client := ad.NewAdClient(m.cli.Conn()) + return client.WebItems(ctx, in, opts...) +} diff --git a/services/ad/internal/dao/ad.go b/services/ad/internal/dao/ad.go index 4a8e2a4..1339480 100644 --- a/services/ad/internal/dao/ad.go +++ b/services/ad/internal/dao/ad.go @@ -8,31 +8,39 @@ const ( // type: 1、商城首页banner 2、商城首页视频 3、商城首页公告 4、商城首页教程 type AdCreate struct { - Id int `gorm:"column:id;primaryKey;autoIncrement"` - Type uint8 `gorm:"column:type"` - Image string `gorm:"column:image"` - Content string `gorm:"column:content"` - Url string `gorm:"column:url"` - AdminId int `gorm:"column:admin_id"` - AdminName string `gorm:"column:admin_name"` + Id int `gorm:"column:id;primaryKey;autoIncrement" json:"id"` + Type uint8 `gorm:"column:type" json:"type"` + Image string `gorm:"column:image" json:"image"` + Content string `gorm:"column:content" json:"content"` + Url string `gorm:"column:url" json:"url"` + AdminId int `gorm:"column:admin_id" json:"admin_id"` + AdminName string `gorm:"column:admin_name" json:"admin_name"` } type AdInfo struct { - Id int `gorm:"column:id"` - Type uint8 `gorm:"column:type"` - Image string `gorm:"column:image"` - Content string `gorm:"column:content"` - Reason string `gorm:"column:reason"` - Status uint8 `gorm:"column:status"` - Url string `gorm:"column:url"` - UpdateTime string `gorm:"column:update_time"` - CreateTime string `gorm:"column:create_time"` + Id int `gorm:"column:id" json:"id"` + Type uint8 `gorm:"column:type" json:"type"` + Image string `gorm:"column:image" json:"image"` + Content string `gorm:"column:content" json:"content"` + Reason string `gorm:"column:reason" json:"reason"` + Status uint8 `gorm:"column:status" json:"status"` + Url string `gorm:"column:url" json:"url"` + UpdateTime string `gorm:"column:update_time" json:"update_time"` + CreateTime string `gorm:"column:create_time" json:"create_time"` } type AdStatus struct { - Id int `gorm:"column:id;primaryKey"` - Reason string `gorm:"column:reason"` - Status uint8 `gorm:"column:status"` - AdminId int `gorm:"column:admin_id"` - AdminName string `gorm:"column:admin_name"` + Id int `gorm:"column:id;primaryKey" json:"id"` + Reason string `gorm:"column:reason" json:"reason"` + Status uint8 `gorm:"column:status" json:"status"` + AdminId int `gorm:"column:admin_id" json:"admin_id"` + AdminName string `gorm:"column:admin_name" json:"admin_name"` +} + +type AdWebInfo struct { + Id int `gorm:"column:id" json:"id"` + Type uint8 `gorm:"column:type" json:"type"` + Image string `gorm:"column:image" json:"image"` + Content string `gorm:"column:content" json:"content"` + Url string `gorm:"column:url" json:"url"` } diff --git a/services/ad/internal/logic/convert.go b/services/ad/internal/logic/convert.go index 1b7d3de..e6b0741 100644 --- a/services/ad/internal/logic/convert.go +++ b/services/ad/internal/logic/convert.go @@ -18,3 +18,13 @@ func toAdItem(row dao.AdInfo) *ad.Item { CreateTime: row.CreateTime, } } + +func toAdWebItem(row dao.AdWebInfo) *ad.WebItem { + return &ad.WebItem{ + Id: int64(row.Id), + Type: uint32(row.Type), + Image: row.Image, + Content: row.Content, + Url: row.Url, + } +} diff --git a/services/ad/internal/logic/createLogic.go b/services/ad/internal/logic/createLogic.go index 8be6ae0..8b30a10 100644 --- a/services/ad/internal/logic/createLogic.go +++ b/services/ad/internal/logic/createLogic.go @@ -2,9 +2,7 @@ package logic import ( "context" - "strconv" - "lone-services/pkg/log" "lone-services/pkg/utils" "lone-services/pkg/validate" ad "lone-services/rpc/ad/pb" @@ -50,9 +48,9 @@ func (l *CreateLogic) Create(in *ad.CreateReq) (*ad.Response, error) { AdminName: adminInfo.Name, } if err := (model.AdModel{}.Init().Create(&data)); err != nil { - log.Errorf("create ad: %v", err) + l.Errorf("create ad: %v", err) return failResponse(utils.Fail), nil } - return okResponse(strconv.Itoa(data.Id)), nil + return okResponse(utils.StringEmpty), nil } diff --git a/services/ad/internal/logic/editLogic.go b/services/ad/internal/logic/editLogic.go index 491ed68..eeed63e 100644 --- a/services/ad/internal/logic/editLogic.go +++ b/services/ad/internal/logic/editLogic.go @@ -4,7 +4,6 @@ import ( "context" "strconv" - "lone-services/pkg/log" "lone-services/pkg/modelbase" "lone-services/pkg/utils" "lone-services/pkg/validate" @@ -46,7 +45,7 @@ func (l *EditLogic) Edit(in *ad.EditReq) (*ad.Response, error) { var info dao.AdCreate m := model.AdModel{}.Init() if err := m.GetOne(w, &info); err != nil { - log.Errorf("edit ad get: %v", err) + l.Errorf("edit ad get: %v", err) return failResponse(utils.Fail), nil } if info.Id < utils.NumberOne { @@ -61,7 +60,7 @@ func (l *EditLogic) Edit(in *ad.EditReq) (*ad.Response, error) { info.AdminName = adminInfo.Name if _, err := m.Edit(w, &info); err != nil { - log.Errorf("edit ad: %v", err) + l.Errorf("edit ad: %v", err) return failResponse(utils.Fail), nil } diff --git a/services/ad/internal/logic/itemsLogic.go b/services/ad/internal/logic/itemsLogic.go index 373f8a8..261e201 100644 --- a/services/ad/internal/logic/itemsLogic.go +++ b/services/ad/internal/logic/itemsLogic.go @@ -3,7 +3,6 @@ package logic import ( "context" - "lone-services/pkg/log" "lone-services/pkg/modelbase" "lone-services/pkg/utils" "lone-services/pkg/validate" @@ -54,7 +53,7 @@ func (l *ItemsLogic) Items(in *ad.ItemsReq) (*ad.Response, error) { var info []dao.AdInfo result, err := model.AdModel{}.Init().Page(w, &info) if err != nil { - log.Errorf("ad items: %v", err) + l.Errorf("ad items: %v", err) return failResponse(utils.Fail), nil } diff --git a/services/ad/internal/logic/statusLogic.go b/services/ad/internal/logic/statusLogic.go index e794144..3c09c55 100644 --- a/services/ad/internal/logic/statusLogic.go +++ b/services/ad/internal/logic/statusLogic.go @@ -4,7 +4,6 @@ import ( "context" "strconv" - "lone-services/pkg/log" "lone-services/pkg/modelbase" "lone-services/pkg/utils" "lone-services/pkg/validate" @@ -41,7 +40,7 @@ func (l *StatusLogic) Status(in *ad.StatusReq) (*ad.Response, error) { var info dao.AdStatus m := model.AdModel{}.Init() if err := m.GetOne(w, &info); err != nil { - log.Errorf("ad status get: %v", err) + l.Errorf("ad status get: %v", err) return failResponse(utils.Fail), nil } if info.Id < utils.NumberOne { @@ -59,7 +58,7 @@ func (l *StatusLogic) Status(in *ad.StatusReq) (*ad.Response, error) { info.AdminName = adminInfo.Name if _, err := m.Edit(w, &info); err != nil { - log.Errorf("ad status edit: %v", err) + l.Errorf("ad status edit: %v", err) return failResponse(utils.Fail), nil } diff --git a/services/ad/internal/logic/webItemsLogic.go b/services/ad/internal/logic/webItemsLogic.go new file mode 100644 index 0000000..db91a7b --- /dev/null +++ b/services/ad/internal/logic/webItemsLogic.go @@ -0,0 +1,68 @@ +package logic + +import ( + "context" + "strings" + + "lone-services/pkg/modelbase" + "lone-services/pkg/utils" + "lone-services/pkg/validate" + ad "lone-services/rpc/ad/pb" + "lone-services/services/ad/internal/dao" + "lone-services/services/ad/internal/model" + "lone-services/services/ad/internal/svc" + "lone-services/services/ad/validator" + + "github.com/zeromicro/go-zero/core/logx" +) + +type WebItemsLogic struct { + ctx context.Context + svcCtx *svc.ServiceContext + logx.Logger +} + +func NewWebItemsLogic(ctx context.Context, svcCtx *svc.ServiceContext) *WebItemsLogic { + return &WebItemsLogic{ + ctx: ctx, + svcCtx: svcCtx, + Logger: logx.WithContext(ctx), + } +} + +func (l *WebItemsLogic) WebItems(in *ad.WebItemsReq) (*ad.Response, error) { + var req validator.AdWebItemsValidator + if msg := validate.ValidateFromProto(in, &req); msg != utils.StringEmpty { + return outResponse(utils.ErrorParams, msg), nil + } + + types := make([]string, 0) + for _, t := range strings.Split(req.Type, utils.DecollatorComma) { + t = strings.TrimSpace(t) + if t != "" { + types = append(types, t) + } + } + if len(types) < 1 { + return outResponse(utils.ErrorParams, "请选择类型"), nil + } + + w := modelbase.Params{ + Order: "type asc", + In: map[string][]string{"type": types}, + Eq: map[string]string{"status": utils.StringStatusOk}, + } + + var info []dao.AdWebInfo + if err := (model.AdModel{}.Init().Items(w, &info)); err != nil { + l.Errorf("ad web items: %v", err) + return failResponse(utils.Fail), nil + } + + items := make([]*ad.WebItem, 0, len(info)) + for _, row := range info { + items = append(items, toAdWebItem(row)) + } + + return okResponse(utils.StructToJson(items)), nil +} diff --git a/services/ad/internal/server/adServer.go b/services/ad/internal/server/adServer.go index c1326ac..1982cae 100644 --- a/services/ad/internal/server/adServer.go +++ b/services/ad/internal/server/adServer.go @@ -35,7 +35,7 @@ func (s *AdServer) Edit(ctx context.Context, in *ad.EditReq) (*ad.Response, erro return l.Edit(in) } -// 广告列表 +// 广告列表(后台) func (s *AdServer) Items(ctx context.Context, in *ad.ItemsReq) (*ad.Response, error) { l := logic.NewItemsLogic(ctx, s.svcCtx) return l.Items(in) @@ -46,3 +46,9 @@ func (s *AdServer) Status(ctx context.Context, in *ad.StatusReq) (*ad.Response, l := logic.NewStatusLogic(ctx, s.svcCtx) return l.Status(in) } + +// 广告列表(C 端) +func (s *AdServer) WebItems(ctx context.Context, in *ad.WebItemsReq) (*ad.Response, error) { + l := logic.NewWebItemsLogic(ctx, s.svcCtx) + return l.WebItems(in) +} diff --git a/services/ad/validator/validator.go b/services/ad/validator/validator.go index 33b8763..2e3c5b2 100644 --- a/services/ad/validator/validator.go +++ b/services/ad/validator/validator.go @@ -11,13 +11,13 @@ type AdCreateValidator struct { func (p AdCreateValidator) GetMessage() validate.ValidatorMessages { return validate.ValidatorMessages{ - "Type.required": "请选择类型", - "Type.oneof": "类型不对", - "Image.required_without": "图片与文本内容必须填写一个", - "Content.required_without": "图片与文本内容必须填写一个", - "Image.max": "图片长度不能超过255", - "Content.max": "内容长度不能超过255", - "Url.max": "链接长度不能超过255", + "Type.required": "请选择类型", + "Type.oneof": "类型不对", + "Image.required_without": "图片与文本内容必须填写一个", + "Content.required_without": "图片与文本内容必须填写一个", + "Image.max": "图片长度不能超过255", + "Content.max": "内容长度不能超过255", + "Url.max": "链接长度不能超过255", } } @@ -31,15 +31,15 @@ type AdEditValidator struct { func (p AdEditValidator) GetMessage() validate.ValidatorMessages { return validate.ValidatorMessages{ - "Id.required": "ID不能为空", - "Id.gt": "ID必须大于0", - "Type.required": "请选择类型", - "Type.oneof": "类型不对", - "Image.required_without": "图片与文本内容必须填写一个", - "Content.required_without": "图片与文本内容必须填写一个", - "Image.max": "图片长度不能超过255", - "Content.max": "内容长度不能超过255", - "Url.max": "链接长度不能超过255", + "Id.required": "ID不能为空", + "Id.gt": "ID必须大于0", + "Type.required": "请选择类型", + "Type.oneof": "类型不对", + "Image.required_without": "图片与文本内容必须填写一个", + "Content.required_without": "图片与文本内容必须填写一个", + "Image.max": "图片长度不能超过255", + "Content.max": "内容长度不能超过255", + "Url.max": "链接长度不能超过255", } } @@ -64,11 +64,22 @@ type AdStatusValidator struct { func (p AdStatusValidator) GetMessage() validate.ValidatorMessages { return validate.ValidatorMessages{ - "Id.required": "ID不能为空", - "Id.gt": "ID必须大于0", - "Status.required": "状态不能为空", - "Status.oneof": "状态不对", - "Reason.required_if": "禁用状态,理由不能为空", - "Reason.max": "理由长度不能超过255", + "Id.required": "ID不能为空", + "Id.gt": "ID必须大于0", + "Status.required": "状态不能为空", + "Status.oneof": "状态不对", + "Reason.required_if": "禁用状态,理由不能为空", + "Reason.max": "理由长度不能超过255", + } +} + +type AdWebItemsValidator struct { + Type string `validate:"required,max=64"` +} + +func (p AdWebItemsValidator) GetMessage() validate.ValidatorMessages { + return validate.ValidatorMessages{ + "Type.required": "请选择类型", + "Type.max": "类型长度不能超过64", } } diff --git a/services/product/internal/apply/apply.go b/services/product/internal/apply/apply.go index 0e5a7ec..69e3948 100644 --- a/services/product/internal/apply/apply.go +++ b/services/product/internal/apply/apply.go @@ -2,7 +2,6 @@ package apply import ( "context" - "lone-services/pkg/log" "lone-services/pkg/redis" "lone-services/pkg/utils" "lone-services/services/product/internal/dao" @@ -12,6 +11,7 @@ import ( "time" jsoniter "github.com/json-iterator/go" + "github.com/zeromicro/go-zero/core/logx" ) const ( @@ -94,7 +94,7 @@ func Set(ctx context.Context, uId, objId int, reason string) error { err = model.ActionApplyLogModel{}.Init().Create(&add) if err != nil { _ = Del(ctx, uId, objId) - log.Errorf("action apply log create: %v", err) + logx.WithContext(ctx).Errorf("action apply log create: %v", err) return err } @@ -134,7 +134,7 @@ func saveRedis(ctx context.Context, data *Data) (string, error) { func CanEdit(ctx context.Context, uId, objId int) bool { data, err := Get(ctx, uId, objId) if err != nil { - log.Errorf("apply get: %v", err) + logx.WithContext(ctx).Errorf("apply get: %v", err) return false } return data.Status == dao.ApplyStatusDone @@ -182,7 +182,7 @@ func Pass(ctx context.Context, uId, objId int) error { } err = model.ActionApplyLogModel{}.Init().Create(&add) if err != nil { - log.Errorf("action apply log pass: %v", err) + logx.WithContext(ctx).Errorf("action apply log pass: %v", err) return err } diff --git a/services/product/internal/logic/createlogic.go b/services/product/internal/logic/createlogic.go index 654992a..04a0aed 100644 --- a/services/product/internal/logic/createlogic.go +++ b/services/product/internal/logic/createlogic.go @@ -3,7 +3,6 @@ package logic import ( "context" "errors" - "lone-services/pkg/log" "lone-services/pkg/modelbase" "lone-services/pkg/utils" "lone-services/pkg/validate" @@ -63,7 +62,7 @@ func (l *CreateLogic) Create(in *product.CreateReq) (*product.Response, error) { Eq: map[string]string{"name": req.Name}, }, &check) if err != nil { - log.Errorf("check product name: %v", err) + l.Errorf("check product name: %v", err) return failResponse(utils.Fail), nil } if check.Id > 0 { @@ -148,7 +147,7 @@ func (l *CreateLogic) Create(in *product.CreateReq) (*product.Response, error) { return model.VerifyModel{}.Init().WithTX(tx).Create(&verify) }) if err != nil { - log.Errorf("create product: %v", err) + l.Errorf("create product: %v", err) return failResponse(utils.Fail), nil } diff --git a/services/product/internal/logic/editapplylogic.go b/services/product/internal/logic/editapplylogic.go index 58ef589..6fd2739 100644 --- a/services/product/internal/logic/editapplylogic.go +++ b/services/product/internal/logic/editapplylogic.go @@ -2,7 +2,6 @@ package logic import ( "context" - "lone-services/pkg/log" "lone-services/pkg/modelbase" "lone-services/pkg/utils" "lone-services/pkg/validate" @@ -42,7 +41,7 @@ func (l *EditApplyLogic) EditApply(in *product.EditApplyReq) (*product.Response, Eq: map[string]string{"id": strconv.FormatInt(req.Id, 10)}, }, &exist) if err != nil { - log.Errorf("edit apply product get: %v", err) + l.Errorf("edit apply product get: %v", err) return failResponse(utils.Fail), nil } if exist.Id < 1 { @@ -57,7 +56,7 @@ func (l *EditApplyLogic) EditApply(in *product.EditApplyReq) (*product.Response, info, err := apply.Get(l.ctx, adminId, int(req.Id)) if err != nil { - log.Errorf("edit apply get: %v", err) + l.Errorf("edit apply get: %v", err) return failResponse(utils.Fail), nil } if info.Status == dao.ApplyStatusWaitPass || info.Status == dao.ApplyStatusDone { @@ -65,7 +64,7 @@ func (l *EditApplyLogic) EditApply(in *product.EditApplyReq) (*product.Response, } if err = apply.Set(l.ctx, adminId, int(req.Id), req.Reason); err != nil { - log.Errorf("edit apply set: %v", err) + l.Errorf("edit apply set: %v", err) return failResponse(utils.Fail), nil } @@ -84,7 +83,7 @@ func (l *EditApplyLogic) EditApplyPass(in *product.EditApplyPassReq) (*product.R Eq: map[string]string{"id": strconv.FormatInt(req.Id, 10)}, }, &exist) if err != nil { - log.Errorf("edit apply pass product get: %v", err) + l.Errorf("edit apply pass product get: %v", err) return failResponse(utils.Fail), nil } if exist.Id < 1 { @@ -101,7 +100,7 @@ func (l *EditApplyLogic) EditApplyPass(in *product.EditApplyPassReq) (*product.R if apply.IsAlreadyHandled(err) { return outResponse(utils.Fail, err.Error()), nil } - log.Errorf("edit apply pass: %v", err) + l.Errorf("edit apply pass: %v", err) return failResponse(utils.Fail), nil } diff --git a/services/product/internal/logic/editbaselogic.go b/services/product/internal/logic/editbaselogic.go index e030a8d..6804935 100644 --- a/services/product/internal/logic/editbaselogic.go +++ b/services/product/internal/logic/editbaselogic.go @@ -2,7 +2,6 @@ package logic import ( "context" - "lone-services/pkg/log" "lone-services/pkg/modelbase" "lone-services/pkg/utils" "lone-services/pkg/validate" @@ -55,7 +54,7 @@ func (l *EditBaseLogic) EditBase(in *product.EditBaseReq) (*product.Response, er m := model.ProductModel{}.Init() err := m.GetOne(w, &old) if err != nil { - log.Errorf("edit base get: %v", err) + l.Errorf("edit base get: %v", err) return failResponse(utils.Fail), nil } if old.Id < 1 { @@ -65,7 +64,7 @@ func (l *EditBaseLogic) EditBase(in *product.EditBaseReq) (*product.Response, er var nameCheck dao.ProductCheckExist err = m.GetOne(modelbase.Params{Eq: map[string]string{"name": req.Name}}, &nameCheck) if err != nil { - log.Errorf("edit base name check: %v", err) + l.Errorf("edit base name check: %v", err) return failResponse(utils.Fail), nil } if nameCheck.Id > 0 && nameCheck.Id != int(req.Id) { @@ -107,7 +106,7 @@ func (l *EditBaseLogic) EditBase(in *product.EditBaseReq) (*product.Response, er } if _, err = m.Edit(w, &data); err != nil { - log.Errorf("edit base: %v", err) + l.Errorf("edit base: %v", err) return failResponse(utils.Fail), nil } diff --git a/services/product/internal/logic/editlog_helper.go b/services/product/internal/logic/editlog_helper.go index f4e343f..54a091c 100644 --- a/services/product/internal/logic/editlog_helper.go +++ b/services/product/internal/logic/editlog_helper.go @@ -1,10 +1,11 @@ package logic import ( - "lone-services/pkg/log" "lone-services/pkg/utils" "lone-services/services/product/internal/dao" "lone-services/services/product/internal/model" + + "github.com/zeromicro/go-zero/core/logx" ) func addEditLog(objId int, objType uint8, adminId int, adminName string, data, oldData interface{}) { @@ -21,6 +22,6 @@ func addEditLog(objId int, objType uint8, adminId int, adminName string, data, o } err := model.EditLogModel{}.Init().Create(&add) if err != nil { - log.Errorf("edit log create: %v", err) + logx.Errorf("edit log create: %v", err) } } diff --git a/services/product/internal/logic/editsusceptiblelogic.go b/services/product/internal/logic/editsusceptiblelogic.go index 6b175b1..8bd8cc3 100644 --- a/services/product/internal/logic/editsusceptiblelogic.go +++ b/services/product/internal/logic/editsusceptiblelogic.go @@ -2,7 +2,6 @@ package logic import ( "context" - "lone-services/pkg/log" "lone-services/pkg/modelbase" "lone-services/pkg/utils" "lone-services/pkg/validate" @@ -72,7 +71,7 @@ func (l *EditSusceptibleLogic) EditSusceptible(in *product.EditSusceptibleReq) ( var old dao.ProductEditSusceptible err := model.ProductModel{}.Init().GetOne(w, &old) if err != nil { - log.Errorf("edit susceptible get: %v", err) + l.Errorf("edit susceptible get: %v", err) return failResponse(utils.Fail), nil } if old.Id < 1 { @@ -97,7 +96,7 @@ func (l *EditSusceptibleLogic) EditSusceptible(in *product.EditSusceptibleReq) ( contentBytes, err := jsoniter.Marshal(data) if err != nil { - log.Errorf("edit susceptible marshal: %v", err) + l.Errorf("edit susceptible marshal: %v", err) return failResponse(utils.Fail), nil } @@ -116,7 +115,7 @@ func (l *EditSusceptibleLogic) EditSusceptible(in *product.EditSusceptibleReq) ( return model.VerifyModel{}.Init().WithTX(tx).Create(&verify) }) if err != nil { - log.Errorf("edit susceptible tx: %v", err) + l.Errorf("edit susceptible tx: %v", err) return failResponse(utils.Fail), nil } diff --git a/services/product/internal/logic/infologic.go b/services/product/internal/logic/infologic.go index 6b3e168..2ba4b80 100644 --- a/services/product/internal/logic/infologic.go +++ b/services/product/internal/logic/infologic.go @@ -2,7 +2,6 @@ package logic import ( "context" - "lone-services/pkg/log" "lone-services/pkg/modelbase" "lone-services/pkg/utils" "lone-services/pkg/validate" @@ -42,7 +41,7 @@ func (l *InfoLogic) Info(in *product.InfoReq) (*product.Response, error) { Eq: map[string]string{"id": strconv.FormatInt(req.Id, 10)}, }, &info) if err != nil { - log.Errorf("product info: %v", err) + l.Errorf("product info: %v", err) return failResponse(utils.Fail), nil } if info.Id < 1 { diff --git a/services/product/internal/logic/itemslogic.go b/services/product/internal/logic/itemslogic.go index a3b637b..49fd705 100644 --- a/services/product/internal/logic/itemslogic.go +++ b/services/product/internal/logic/itemslogic.go @@ -2,7 +2,6 @@ package logic import ( "context" - "lone-services/pkg/log" "lone-services/pkg/modelbase" "lone-services/pkg/utils" "lone-services/pkg/validate" @@ -59,7 +58,7 @@ func (l *ItemsLogic) Items(in *product.ItemsReq) (*product.Response, error) { var info []dao.ProductInfo result, err := model.ProductModel{}.Init().Page(w, &info) if err != nil { - log.Errorf("product items: %v", err) + l.Errorf("product items: %v", err) return failResponse(utils.Fail), nil } diff --git a/services/product/internal/logic/nameslogic.go b/services/product/internal/logic/nameslogic.go index 4bd7ffb..c7b8aac 100644 --- a/services/product/internal/logic/nameslogic.go +++ b/services/product/internal/logic/nameslogic.go @@ -2,7 +2,6 @@ package logic import ( "context" - "lone-services/pkg/log" "lone-services/pkg/modelbase" "lone-services/pkg/utils" product "lone-services/rpc/product/pb" @@ -34,7 +33,7 @@ func (l *NamesLogic) Names(_ *product.NamesReq) (*product.Response, error) { Eq: map[string]string{"status": strconv.Itoa(int(dao.ProductStatusNormal))}, }, &info) if err != nil { - log.Errorf("product names: %v", err) + l.Errorf("product names: %v", err) return failResponse(utils.Fail), nil } diff --git a/services/product/internal/logic/sortlogic.go b/services/product/internal/logic/sortlogic.go index aaabdf8..639005a 100644 --- a/services/product/internal/logic/sortlogic.go +++ b/services/product/internal/logic/sortlogic.go @@ -2,7 +2,6 @@ package logic import ( "context" - "lone-services/pkg/log" "lone-services/pkg/modelbase" "lone-services/pkg/utils" "lone-services/pkg/validate" @@ -43,7 +42,7 @@ func (l *SortLogic) Sort(in *product.SortReq) (*product.Response, error) { m := model.ProductModel{}.Init() err := m.GetOne(w, &info) if err != nil { - log.Errorf("product sort get: %v", err) + l.Errorf("product sort get: %v", err) return failResponse(utils.Fail), nil } if info.Id < 1 { @@ -60,7 +59,7 @@ func (l *SortLogic) Sort(in *product.SortReq) (*product.Response, error) { info.AdminId = int(adminInfo.ID) if _, err = m.Edit(w, &info); err != nil { - log.Errorf("product sort edit: %v", err) + l.Errorf("product sort edit: %v", err) return failResponse(utils.Fail), nil } diff --git a/services/product/internal/logic/statuslogic.go b/services/product/internal/logic/statuslogic.go index a8c8250..7f774e1 100644 --- a/services/product/internal/logic/statuslogic.go +++ b/services/product/internal/logic/statuslogic.go @@ -2,7 +2,6 @@ package logic import ( "context" - "lone-services/pkg/log" "lone-services/pkg/modelbase" "lone-services/pkg/utils" "lone-services/pkg/validate" @@ -50,7 +49,7 @@ func (l *StatusLogic) Status(in *product.StatusReq) (*product.Response, error) { m := model.ProductModel{}.Init() err := m.GetOne(w, &info) if err != nil { - log.Errorf("product status get: %v", err) + l.Errorf("product status get: %v", err) return failResponse(utils.Fail), nil } if info.Id < 1 { @@ -69,7 +68,7 @@ func (l *StatusLogic) Status(in *product.StatusReq) (*product.Response, error) { AdminId: int(adminInfo.ID), } if _, err = m.Edit(w, &update); err != nil { - log.Errorf("product status edit: %v", err) + l.Errorf("product status edit: %v", err) return failResponse(utils.Fail), nil } diff --git a/services/product/internal/logic/verifylogic.go b/services/product/internal/logic/verifylogic.go index 0caa4f2..7e98829 100644 --- a/services/product/internal/logic/verifylogic.go +++ b/services/product/internal/logic/verifylogic.go @@ -2,7 +2,6 @@ package logic import ( "context" - "lone-services/pkg/log" "lone-services/pkg/modelbase" "lone-services/pkg/utils" "lone-services/pkg/validate" @@ -62,7 +61,7 @@ func (l *VerifyLogic) Verify(in *product.VerifyReq) (*product.Response, error) { var rows []dao.ProductVerifyListRow result, err := model.ProductModel{}.Init().Page(w, &rows) if err != nil { - log.Errorf("product verify list: %v", err) + l.Errorf("product verify list: %v", err) return failResponse(utils.Fail), nil } @@ -89,7 +88,7 @@ func (l *VerifyLogic) Verify(in *product.VerifyReq) (*product.Response, error) { var verifies []dao.VerifyInfo err = model.VerifyModel{}.Init().Items(ww, &verifies) if err != nil { - log.Errorf("verify info items: %v", err) + l.Errorf("verify info items: %v", err) return failResponse(utils.Fail), nil } @@ -106,7 +105,7 @@ func (l *VerifyLogic) Verify(in *product.VerifyReq) (*product.Response, error) { var content dao.ProductVerify err = jsoniter.Unmarshal([]byte(v.Content), &content) if err != nil { - log.Errorf("product verify content json: %v", err) + l.Errorf("product verify content json: %v", err) return failResponse(utils.ErrorFormatDataError), nil } items = append(items, &product.VerifyItem{ diff --git a/services/product/internal/logic/verifystatuslogic.go b/services/product/internal/logic/verifystatuslogic.go index 81a4549..5989dd6 100644 --- a/services/product/internal/logic/verifystatuslogic.go +++ b/services/product/internal/logic/verifystatuslogic.go @@ -3,7 +3,6 @@ package logic import ( "context" "encoding/json" - "lone-services/pkg/log" "lone-services/pkg/modelbase" "lone-services/pkg/utils" "lone-services/pkg/validate" @@ -63,7 +62,7 @@ func (l *VerifyStatusLogic) verifyStatus(expectStatus uint8, in *product.VerifyS } err := model.VerifyModel{}.Init().GetOne(w, &info) if err != nil { - log.Errorf("verify status get: %v", err) + l.Errorf("verify status get: %v", err) return failResponse(utils.Fail), nil } if info.Id < 1 { @@ -89,7 +88,7 @@ func (l *VerifyStatusLogic) verifyStatus(expectStatus uint8, in *product.VerifyS var productExist dao.ProductCheckExist err = model.ProductModel{}.Init().GetOne(productWhere, &productExist) if err != nil { - log.Errorf("verify product get: %v", err) + l.Errorf("verify product get: %v", err) return failResponse(utils.Fail), nil } if productExist.Id < 1 { @@ -133,7 +132,7 @@ func (l *VerifyStatusLogic) verifyStatus(expectStatus uint8, in *product.VerifyS if nextStatus == dao.VerifyStatusPass { var content dao.ProductVerify if err := jsoniter.Unmarshal([]byte(info.Content), &content); err != nil { - log.Errorf("product verify content json: %v content=%s", err, info.Content) + l.Errorf("product verify content json: %v content=%s", err, info.Content) return err } _, err := pm.Edit(productWhere, &dao.ProductVerifySecondOkStatus{ @@ -164,7 +163,7 @@ func (l *VerifyStatusLogic) verifyStatus(expectStatus uint8, in *product.VerifyS return err }) if err != nil { - log.Errorf("verify status tx: %v", err) + l.Errorf("verify status tx: %v", err) if isJSONError(err) { return failResponse(utils.ErrorFormatDataError), nil } diff --git a/services/product/internal/wecom/notify.go b/services/product/internal/wecom/notify.go index 11f8830..d052ce5 100644 --- a/services/product/internal/wecom/notify.go +++ b/services/product/internal/wecom/notify.go @@ -1,6 +1,6 @@ package wecom -import "lone-services/pkg/log" +import "github.com/zeromicro/go-zero/core/logx" const ( ProductApplyReview uint8 = 1 // 编辑申请按钮卡片 @@ -21,6 +21,6 @@ type NotifyJob struct { } func NotifyProduct(job NotifyJob) { - log.Infof("wecom stub skip: type=%d objId=%d action=%d reason=%s key=%s", + logx.Infof("wecom stub skip: type=%d objId=%d action=%d reason=%s key=%s", job.Type, job.ObjId, job.Action, job.Reason, job.Key) } diff --git a/services/user/internal/logic/loginLogic.go b/services/user/internal/logic/loginLogic.go index e2d4055..fb6af88 100644 --- a/services/user/internal/logic/loginLogic.go +++ b/services/user/internal/logic/loginLogic.go @@ -2,7 +2,6 @@ package logic import ( "context" - "lone-services/pkg/log" "lone-services/pkg/modelbase" "lone-services/pkg/utils" "lone-services/pkg/validate" @@ -43,7 +42,7 @@ func (l *LoginLogic) Login(in *user.LoginReq) (*user.Response, error) { }, }, &row) if err != nil { - log.Errorf("login by openid: %v", err) + l.Errorf("login by openid: %v", err) return failResponse(utils.Fail), nil } if row.Id < utils.NumberOne { diff --git a/services/user/internal/logic/registerByUserLogic.go b/services/user/internal/logic/registerByUserLogic.go index 53893b2..e21a37f 100644 --- a/services/user/internal/logic/registerByUserLogic.go +++ b/services/user/internal/logic/registerByUserLogic.go @@ -2,7 +2,6 @@ package logic import ( "context" - "lone-services/pkg/log" "lone-services/pkg/modelbase" "lone-services/pkg/redis" "lone-services/pkg/utils" @@ -58,7 +57,7 @@ func (l *RegisterByUserLogic) RegisterByUser(in *user.RegisterByUserReq) (*user. }, }, &old) if err != nil { - log.Errorf("registerByUser check account: %v", err) + l.Errorf("registerByUser check account: %v", err) return failResponse(utils.Fail), nil } if old.Id > utils.NumberZero { @@ -79,14 +78,14 @@ func (l *RegisterByUserLogic) RegisterByUser(in *user.RegisterByUserReq) (*user. pwd := utils.GetSaltPassword(add.Salt, v.Pwd) add.Password, err = utils.EncryptPassword(pwd) if err != nil { - log.Errorf("registerByUser encrypt password: %v", err) + l.Errorf("registerByUser encrypt password: %v", err) return failResponse(utils.Fail), nil } if v.Type == utils.NumberOne { encryptMobile, cErr := utils.Crypto{}.AESEncryptECB(v.Account) if cErr != nil { - log.Errorf("registerByUser encrypt mobile: %v", cErr) + l.Errorf("registerByUser encrypt mobile: %v", cErr) return failResponse(utils.ErrorEncryptAesError), nil } add.Mobile = encryptMobile @@ -94,7 +93,7 @@ func (l *RegisterByUserLogic) RegisterByUser(in *user.RegisterByUserReq) (*user. err = model.UserModel{}.Init().CreateByPwd(&add) if err != nil || add.Id < utils.NumberOne { - log.Errorf("registerByUser create: %v", err) + l.Errorf("registerByUser create: %v", err) return failResponse(utils.Fail), nil } diff --git a/services/user/internal/logic/registerLogic.go b/services/user/internal/logic/registerLogic.go index cce3f58..7088763 100644 --- a/services/user/internal/logic/registerLogic.go +++ b/services/user/internal/logic/registerLogic.go @@ -2,7 +2,6 @@ package logic import ( "context" - "lone-services/pkg/log" "lone-services/pkg/modelbase" "lone-services/pkg/utils" "lone-services/pkg/validate" @@ -45,7 +44,7 @@ func (l *RegisterLogic) Register(in *user.RegisterReq) (*user.Response, error) { Eq: map[string]string{"openid": openid}, }, &exist) if err != nil { - log.Errorf("register check openid: %v", err) + l.Errorf("register check openid: %v", err) return failResponse(utils.Fail), nil } if exist.Id > utils.NumberZero { @@ -54,7 +53,7 @@ func (l *RegisterLogic) Register(in *user.RegisterReq) (*user.Response, error) { encryptMobile, cErr := utils.Crypto{}.AESEncryptECB(v.Mobile) if cErr != nil { - log.Errorf("register encrypt mobile: %v", cErr) + l.Errorf("register encrypt mobile: %v", cErr) return failResponse(utils.ErrorEncryptAesError), nil } @@ -75,7 +74,7 @@ func (l *RegisterLogic) Register(in *user.RegisterReq) (*user.Response, error) { } err = model.UserModel{}.Init().Create(&add) if err != nil { - log.Errorf("register create: %v", err) + l.Errorf("register create: %v", err) return failResponse(utils.Fail), nil }