From 38e040af0701ffc9cf6e07d976b91ae3ddf4d023 Mon Sep 17 00:00:00 2001 From: gjs Date: Wed, 9 Sep 2026 17:52:07 +0800 Subject: [PATCH] =?UTF-8?q?=E8=AE=A2=E5=8D=95=E4=B8=8B=E8=BD=BD=E3=80=82jd?= =?UTF-8?q?=E4=B8=8B=E5=8D=95=E3=80=82=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- bff/internal/request/user.go | 5 +- bff/internal/response/middleware.go | 55 ++- bff/internal/response/response.go | 13 +- pkg/utils/log.go | 2 + pkg/utils/loginInfo.go | 8 +- pkg/utils/tools.go | 25 +- rpc/chore/chore.pb | Bin 14549 -> 15284 bytes rpc/chore/chore.proto | 71 +++ rpc/chore/pb/chore.pb.go | 421 +++++++++++++++--- rpc/chore/pb/chore_grpc.pb.go | 352 ++++++++++++++- rpc/express/express.pb | Bin 16564 -> 16673 bytes rpc/express/express.proto | 9 +- rpc/express/pb/express.pb.go | 192 +++++--- rpc/express/pb/express_grpc.pb.go | 14 +- rpc/order/order.pb | Bin 17708 -> 17889 bytes rpc/order/order.proto | 12 + rpc/order/pb/order.pb.go | 296 +++++++----- rpc/order/pb/order_grpc.pb.go | 38 ++ services/admin/internal/logic/loginlogic.go | 1 + services/chore/chore.go | 11 + services/chore/choreclient/chore.go | 65 ++- services/chore/internal/dao/answer.go | 28 ++ services/chore/internal/dao/system.go | 18 + .../chore/internal/logic/answerCreateLogic.go | 63 +++ .../chore/internal/logic/answerEditLogic.go | 77 ++++ .../chore/internal/logic/answerInfoLogic.go | 53 +++ .../chore/internal/logic/answerItemsLogic.go | 38 ++ .../chore/internal/logic/answerStatusLogic.go | 72 +++ services/chore/internal/logic/base.go | 44 ++ .../chore/internal/logic/systemEditLogic.go | 76 ++++ .../chore/internal/logic/systemInfoLogic.go | 53 +++ .../chore/internal/logic/systemItemsLogic.go | 38 ++ .../chore/internal/logic/systemStatusLogic.go | 72 +++ services/chore/internal/model/answer.go | 18 + services/chore/internal/model/system.go | 18 + services/chore/internal/server/choreServer.go | 49 +- services/chore/validator/answer.go | 39 ++ services/chore/validator/system.go | 15 + services/express/expressclient/express.go | 5 +- .../internal/logic/expressAdminQueryLogic.go | 11 +- .../internal/logic/expressApiQueryLogic.go | 13 +- .../internal/logic/expressJdBackLogic.go | 133 +++++- .../express/internal/server/expressServer.go | 2 +- services/express/internal/svc/delivery.go | 81 +++- services/order/internal/dao/order.go | 10 + .../order/internal/logic/orderDownLogic.go | 206 +++++++++ services/order/internal/server/orderServer.go | 5 + services/order/internal/svc/order.go | 23 + services/order/internal/svc/servicecontext.go | 6 + services/order/orderClient/order.go | 7 + services/sale/run.toml | 59 --- 51 files changed, 2572 insertions(+), 350 deletions(-) create mode 100644 services/chore/internal/dao/answer.go create mode 100644 services/chore/internal/dao/system.go create mode 100644 services/chore/internal/logic/answerCreateLogic.go create mode 100644 services/chore/internal/logic/answerEditLogic.go create mode 100644 services/chore/internal/logic/answerInfoLogic.go create mode 100644 services/chore/internal/logic/answerItemsLogic.go create mode 100644 services/chore/internal/logic/answerStatusLogic.go create mode 100644 services/chore/internal/logic/base.go create mode 100644 services/chore/internal/logic/systemEditLogic.go create mode 100644 services/chore/internal/logic/systemInfoLogic.go create mode 100644 services/chore/internal/logic/systemItemsLogic.go create mode 100644 services/chore/internal/logic/systemStatusLogic.go create mode 100644 services/chore/internal/model/answer.go create mode 100644 services/chore/internal/model/system.go create mode 100644 services/chore/validator/answer.go create mode 100644 services/chore/validator/system.go create mode 100644 services/order/internal/logic/orderDownLogic.go delete mode 100644 services/sale/run.toml diff --git a/bff/internal/request/user.go b/bff/internal/request/user.go index a49a48a..125bed6 100644 --- a/bff/internal/request/user.go +++ b/bff/internal/request/user.go @@ -1,7 +1,9 @@ package request import ( + "bytes" "context" + "encoding/base64" "io" "lone-services/pkg/utils" "net/http" @@ -132,7 +134,8 @@ func UserReadMiddleware(next http.HandlerFunc) http.HandlerFunc { newCtx := r.Context() body, _ := io.ReadAll(r.Body) - newCtx = context.WithValue(newCtx, CtxRawBody, string(body)) + r.Body = io.NopCloser(bytes.NewBuffer(body)) + newCtx = context.WithValue(newCtx, CtxRawBody, base64.StdEncoding.EncodeToString(body)) newCtx = context.WithValue(newCtx, CtxUserId, r.Header.Get("X-User-Id")) newCtx = context.WithValue(newCtx, CtxUserName, r.Header.Get("X-User-Name")) newCtx = context.WithValue(newCtx, CtxRefresh, r.Header.Get("X-Refresh")) diff --git a/bff/internal/response/middleware.go b/bff/internal/response/middleware.go index 57bff72..0fe93a5 100644 --- a/bff/internal/response/middleware.go +++ b/bff/internal/response/middleware.go @@ -2,11 +2,13 @@ package response import ( "bytes" + "encoding/base64" "lone-services/pkg/utils" "net/http" "strings" jsoniter "github.com/json-iterator/go" + "github.com/zeromicro/go-zero/core/logx" "google.golang.org/grpc/codes" "google.golang.org/grpc/status" ) @@ -18,8 +20,14 @@ type bodyWriter struct { } type responseDataBack struct { - ReturnCode string `json:"returnCode"` - ReturnMsg string `json:"returnMsg"` + ReturnCode string `json:"return_code"` + ReturnMsg string `json:"return_msg"` +} + +type responseDataDown struct { + Data string `json:"data"` // excel二进制 + Name string `json:"name"` + Msg string `json:"msg"` } type responseData struct { @@ -47,27 +55,44 @@ func Wrap(next http.HandlerFunc) http.HandlerFunc { } raw := bytes.TrimSpace(bw.buf.Bytes()) - var data responseData - if len(raw) > 0 { - if err := jsoniter.Unmarshal(raw, &data); err != nil { + + res := make(map[string]interface{}) + if len(raw) > utils.NumberZero { + if err := jsoniter.Unmarshal(raw, &res); err != nil { ctrl.Fail(w) return } } - if data.Code < utils.NumberOne { - var back responseDataBack - - if err := jsoniter.Unmarshal(raw, &back); err != nil { + if _, ok := res["code"]; ok { + var data responseData + if err := jsoniter.Unmarshal(raw, &data); err != nil { ctrl.Fail(w) return } - if len(back.ReturnCode) < utils.NumberOne { - ctrl.Fail(w) - return - } - ctrl.OutPutBack(w, back) - } else { ctrl.OutPut(w, data.Code, unwrapJSONData(data.Data), data.Msg) + } else if _, ok := res["return_code"]; ok { + var data responseDataBack + if err := jsoniter.Unmarshal(raw, &data); err != nil { + ctrl.Fail(w) + return + } + ctrl.OutPutBack(w, data) + } else if _, ok := res["name"]; ok { + + var data responseDataDown + if err := jsoniter.Unmarshal(raw, &data); err != nil { + ctrl.Fail(w) + return + } + excelBin, err := base64.StdEncoding.DecodeString(data.Data) + + if err != nil { + logx.Error("excel base64 decode failed", err, data.Data) + ctrl.Fail(w) + return + } + data.Data = string(excelBin) + ctrl.OutPutDown(w, data) } } } diff --git a/bff/internal/response/response.go b/bff/internal/response/response.go index 11b600c..51eef27 100644 --- a/bff/internal/response/response.go +++ b/bff/internal/response/response.go @@ -4,6 +4,7 @@ import ( "fmt" "lone-services/pkg/utils" "net/http" + "net/url" jsoniter "github.com/json-iterator/go" ) @@ -55,8 +56,18 @@ func (b *BaseController) OutPut(w http.ResponseWriter, code int32, data any, msg } func (b *BaseController) OutPutBack(w http.ResponseWriter, back responseDataBack) { - w.Header().Set("Content-Type", "application/json; charset=utf-8") w.WriteHeader(http.StatusOK) _ = jsoniter.NewEncoder(w).Encode(back) } + +func (b *BaseController) OutPutDown(w http.ResponseWriter, back responseDataDown) { + // 下载头,二进制流 + w.Header().Set("Content-Type", "application/octet-stream") + // 文件名 urlencode,防止中文乱码 + w.Header().Set("Content-Disposition", `attachment; filename="`+url.QueryEscape(back.Name)+`"`) + w.Header().Set("Content-Transfer-Encoding", "binary") + w.WriteHeader(http.StatusOK) + // back.Data 是 []byte excel二进制 + _, _ = w.Write([]byte(back.Data)) +} diff --git a/pkg/utils/log.go b/pkg/utils/log.go index 13f6f94..6e6b52d 100644 --- a/pkg/utils/log.go +++ b/pkg/utils/log.go @@ -46,6 +46,8 @@ const ( LogActionModuleBuy = "采购管理" LogActionModuleLog = "日志管理" LogActionModuleFactory = "工厂管理" + LogActionModuleSystem = "系统管理" + LogActionModuleAnswer = "使用问答管理" ) type ActionLog struct { diff --git a/pkg/utils/loginInfo.go b/pkg/utils/loginInfo.go index 492cee5..9c3d25b 100644 --- a/pkg/utils/loginInfo.go +++ b/pkg/utils/loginInfo.go @@ -2,6 +2,7 @@ package utils import ( "context" + "encoding/base64" "net/url" "strconv" @@ -116,5 +117,10 @@ func GetBody(ctx context.Context) string { if !ok { return StringEmpty } - return firstMD(md, "x-raw-body") + + body, err := base64.StdEncoding.DecodeString(firstMD(md, "x-raw-body")) + if err != nil { + return StringEmpty + } + return string(body) } diff --git a/pkg/utils/tools.go b/pkg/utils/tools.go index 821e373..40d06db 100644 --- a/pkg/utils/tools.go +++ b/pkg/utils/tools.go @@ -1,6 +1,7 @@ package utils import ( + "bytes" "crypto/md5" "encoding/hex" "errors" @@ -16,7 +17,6 @@ import ( jsoniter "github.com/json-iterator/go" "github.com/zeromicro/go-zero/core/logx" - "github.com/gin-gonic/gin" "github.com/xuri/excelize/v2" ) @@ -348,7 +348,8 @@ type ExcelColumn struct { IsImage bool //是否是图片 } -func ExcelExport(c *gin.Context, fileName string, columns []ExcelColumn, dataList interface{}) error { +// 【改造后】只生成excel,返回二进制,不处理http +func ExcelExport(columns []ExcelColumn, dataList interface{}) ([]byte, error) { f := excelize.NewFile() sheet := "Sheet1" f.SetSheetName("Sheet1", sheet) @@ -369,7 +370,7 @@ func ExcelExport(c *gin.Context, fileName string, columns []ExcelColumn, dataLis items := reflect.ValueOf(dataList) if items.Kind() != reflect.Slice { - return f.Write(c.Writer) + return nil, errors.New("data must be slice") } // 遍历行 @@ -392,23 +393,16 @@ func ExcelExport(c *gin.Context, fileName string, columns []ExcelColumn, dataLis cellName, _ := excelize.ColumnNumberToName(colIdx + 1) cellPos := cellName + strconv.Itoa(rowNum) - // ====================================== // 图片URL → 改为【点击查看图片】链接 - // ====================================== if col.IsImage { imgURL := toStr(fieldVal.Interface()) if imgURL != "" { - // 设置超链接(显示文字:点击查看图片,真正链接:imgURL) _ = f.SetCellHyperLink(sheet, cellPos, imgURL, "External") - // 单元格显示文字 _ = f.SetCellValue(sheet, cellPos, "点击查看") } continue } - // ====================================== - // 文本/数组 自动换行 - // ====================================== var cellValue interface{} kind := fieldVal.Kind() if kind == reflect.Slice || kind == reflect.Array { @@ -424,7 +418,6 @@ func ExcelExport(c *gin.Context, fileName string, columns []ExcelColumn, dataLis _ = f.SetCellValue(sheet, cellPos, cellValue) _ = f.SetCellStyle(sheet, cellPos, cellPos, wrapStyle) } - _ = f.SetRowHeight(sheet, rowNum, 30) } @@ -437,10 +430,12 @@ func ExcelExport(c *gin.Context, fileName string, columns []ExcelColumn, dataLis _ = f.SetColWidth(sheet, colName, colName, col.Width) } - // 下载 - c.Header("Content-Type", "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet") - c.Header("Content-Disposition", "attachment; filename="+fileName+".xlsx") - return f.Write(c.Writer) + // 写入buffer,不要直接写http + buf := new(bytes.Buffer) + if err := f.Write(buf); err != nil { + return nil, err + } + return buf.Bytes(), nil } // 嵌套字段取值 diff --git a/rpc/chore/chore.pb b/rpc/chore/chore.pb index 8d31a51f6e8f92fb1ba85314099a0ff23284f1f6..003ac0f59127013a6f448b878b9a4bd3f08aacba 100644 GIT binary patch delta 1154 zcmbVKy>HV%9F;HMm$Zpap|~`q5P_ORq6U>JE#fO`U5Hwo;Ls|l;v-57F%aj&E+t|J zAO)<%Ig1-T2Amo4W{oQXa^3eL4>#oEh@EqdL<16??;;8!-=knufVri_)1(A1lF;@`h z_{Y937eMY@UX=I^pGDckUlOnBfx?B{6 z7e(pZrSsSFvN)eDQhR37NL|GrQ{&9i{F&O|d|v;iFY;6}wIe|Q-T?Eykl=Q_VE9?G+*GFnpujJB*a<9neeTOkWH2!UGRxdU9nC6iTr0R{?2$yn8QIYdLytJ6as z5P?Uwk+t7aN_t)6U1UEX+bG_FKCz-2%&N2PBD4?so2!a$s6=JC1>`M^c<58^HSUyD z$IyW&3Oz0LX4T-`RKkG8FKPOk($aYk-FIO86dWkDbwjC%l}Q!^LATLvDD=r5nXWB; zxvm+CX4p|2Xuh4g!hvT2^I-ZSH?jnS8G22Y80siIQLffo%7j%aKARrGztX{(N=?;- zyORPv5?CrhrTiicF*z$3MQlBTIFsIU=J2BrUojYqj|!z-jad6A51}1IyHQ6W+b3Hg z9-}iOeYC2@U3N0el7Sft8g$-3#$+YP{3}73>0~E?HQ${svD5K>Ary;VgwPoZK~bj$ zdrmY+>}0QnP6>i-5n>kq(WUM4w@c=f?d@{9=NYz^c1eB*TiN$_7~VcbM@{&+F|GUo D3G-{s delta 603 zcmdl|ezkDJS|+CFNt4$znJ}GVocx5zufCe2;mxW4i~@}yQYu#{8^RYd(Mu{#(@RM$ zPADR%#HVHEq{btJTrRZ6P#M&3RA8$ zgLShLv#JWyTJFi2>d|bQ7@0X_TiH;q-hdJ`nAm50_NtX!8@|0tprr<(K3e zN(q73d;wq%Ox5NJ9d0J3dCZ$z^)wjkOHm>!T__bAQQ&C75>dtZrA5i9@yYoqsqvY4 zY57R8q=hAxg2Bq2fvP=$iV;zCfr(4dJvA?N^I?4j7N&{plb;&bZ=Plv!^kv|dGi;u KK*q^|*2w@^h0 chore.RegionItem - 1, // 1: chore.Chore.Policy:input_type -> chore.PolicyReq - 2, // 2: chore.Chore.Test:input_type -> chore.TestReq - 3, // 3: chore.Chore.DecryptMobile:input_type -> chore.DecryptMobileReq - 4, // 4: chore.Chore.Regions:input_type -> chore.RegionsReq - 5, // 5: chore.Chore.RegionsByIds:input_type -> chore.RegionsByIdsReq - 0, // 6: chore.Chore.Policy:output_type -> chore.Response - 0, // 7: chore.Chore.Test:output_type -> chore.Response - 0, // 8: chore.Chore.DecryptMobile:output_type -> chore.Response - 0, // 9: chore.Chore.Regions:output_type -> chore.Response - 7, // 10: chore.Chore.RegionsByIds:output_type -> chore.RegionsByIdsData - 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 + 11, // 0: chore.RegionsByIdsData.items:type_name -> chore.RegionItem + 6, // 1: chore.Chore.Policy:input_type -> chore.PolicyReq + 7, // 2: chore.Chore.Test:input_type -> chore.TestReq + 8, // 3: chore.Chore.DecryptMobile:input_type -> chore.DecryptMobileReq + 9, // 4: chore.Chore.Regions:input_type -> chore.RegionsReq + 1, // 5: chore.Chore.AnswerItems:input_type -> chore.EmptyReq + 3, // 6: chore.Chore.AnswerStatus:input_type -> chore.StatusReq + 2, // 7: chore.Chore.AnswerInfo:input_type -> chore.IdReq + 4, // 8: chore.Chore.AnswerCreate:input_type -> chore.EditReq + 4, // 9: chore.Chore.AnswerEdit:input_type -> chore.EditReq + 5, // 10: chore.Chore.SystemEdit:input_type -> chore.SystemEditReq + 3, // 11: chore.Chore.SystemStatus:input_type -> chore.StatusReq + 2, // 12: chore.Chore.SystemInfo:input_type -> chore.IdReq + 1, // 13: chore.Chore.SystemItems:input_type -> chore.EmptyReq + 10, // 14: chore.Chore.RegionsByIds:input_type -> chore.RegionsByIdsReq + 0, // 15: chore.Chore.Policy:output_type -> chore.Response + 0, // 16: chore.Chore.Test:output_type -> chore.Response + 0, // 17: chore.Chore.DecryptMobile:output_type -> chore.Response + 0, // 18: chore.Chore.Regions:output_type -> chore.Response + 0, // 19: chore.Chore.AnswerItems:output_type -> chore.Response + 0, // 20: chore.Chore.AnswerStatus:output_type -> chore.Response + 0, // 21: chore.Chore.AnswerInfo:output_type -> chore.Response + 0, // 22: chore.Chore.AnswerCreate:output_type -> chore.Response + 0, // 23: chore.Chore.AnswerEdit:output_type -> chore.Response + 0, // 24: chore.Chore.SystemEdit:output_type -> chore.Response + 0, // 25: chore.Chore.SystemStatus:output_type -> chore.Response + 0, // 26: chore.Chore.SystemInfo:output_type -> chore.Response + 0, // 27: chore.Chore.SystemItems:output_type -> chore.Response + 12, // 28: chore.Chore.RegionsByIds:output_type -> chore.RegionsByIdsData + 15, // [15:29] is the sub-list for method output_type + 1, // [1:15] 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 } func init() { file_chore_chore_proto_init() } @@ -502,7 +823,7 @@ func file_chore_chore_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: unsafe.Slice(unsafe.StringData(file_chore_chore_proto_rawDesc), len(file_chore_chore_proto_rawDesc)), NumEnums: 0, - NumMessages: 8, + NumMessages: 13, NumExtensions: 0, NumServices: 1, }, diff --git a/rpc/chore/pb/chore_grpc.pb.go b/rpc/chore/pb/chore_grpc.pb.go index daa276a..c6a37b2 100644 --- a/rpc/chore/pb/chore_grpc.pb.go +++ b/rpc/chore/pb/chore_grpc.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: // - protoc-gen-go-grpc v1.6.2 -// - protoc v3.19.4 +// - protoc v4.25.8 // source: chore/chore.proto package chore @@ -23,18 +23,38 @@ const ( Chore_Test_FullMethodName = "/chore.Chore/Test" Chore_DecryptMobile_FullMethodName = "/chore.Chore/DecryptMobile" Chore_Regions_FullMethodName = "/chore.Chore/Regions" + Chore_AnswerItems_FullMethodName = "/chore.Chore/AnswerItems" + Chore_AnswerStatus_FullMethodName = "/chore.Chore/AnswerStatus" + Chore_AnswerInfo_FullMethodName = "/chore.Chore/AnswerInfo" + Chore_AnswerCreate_FullMethodName = "/chore.Chore/AnswerCreate" + Chore_AnswerEdit_FullMethodName = "/chore.Chore/AnswerEdit" + Chore_SystemEdit_FullMethodName = "/chore.Chore/SystemEdit" + Chore_SystemStatus_FullMethodName = "/chore.Chore/SystemStatus" + Chore_SystemInfo_FullMethodName = "/chore.Chore/SystemInfo" + Chore_SystemItems_FullMethodName = "/chore.Chore/SystemItems" Chore_RegionsByIds_FullMethodName = "/chore.Chore/RegionsByIds" ) // ChoreClient is the client API for Chore 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. +// +// 应放到pkg type ChoreClient interface { Policy(ctx context.Context, in *PolicyReq, opts ...grpc.CallOption) (*Response, error) Test(ctx context.Context, in *TestReq, opts ...grpc.CallOption) (*Response, error) DecryptMobile(ctx context.Context, in *DecryptMobileReq, opts ...grpc.CallOption) (*Response, error) Regions(ctx context.Context, in *RegionsReq, opts ...grpc.CallOption) (*Response, error) - // 服务间调用:按 id 批量查地区名称 + AnswerItems(ctx context.Context, in *EmptyReq, opts ...grpc.CallOption) (*Response, error) + AnswerStatus(ctx context.Context, in *StatusReq, opts ...grpc.CallOption) (*Response, error) + AnswerInfo(ctx context.Context, in *IdReq, opts ...grpc.CallOption) (*Response, error) + AnswerCreate(ctx context.Context, in *EditReq, opts ...grpc.CallOption) (*Response, error) + AnswerEdit(ctx context.Context, in *EditReq, opts ...grpc.CallOption) (*Response, error) + SystemEdit(ctx context.Context, in *SystemEditReq, opts ...grpc.CallOption) (*Response, error) + SystemStatus(ctx context.Context, in *StatusReq, opts ...grpc.CallOption) (*Response, error) + SystemInfo(ctx context.Context, in *IdReq, opts ...grpc.CallOption) (*Response, error) + SystemItems(ctx context.Context, in *EmptyReq, opts ...grpc.CallOption) (*Response, error) + // 按 id 批量查地区名称 RegionsByIds(ctx context.Context, in *RegionsByIdsReq, opts ...grpc.CallOption) (*RegionsByIdsData, error) } @@ -86,6 +106,96 @@ func (c *choreClient) Regions(ctx context.Context, in *RegionsReq, opts ...grpc. return out, nil } +func (c *choreClient) AnswerItems(ctx context.Context, in *EmptyReq, opts ...grpc.CallOption) (*Response, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(Response) + err := c.cc.Invoke(ctx, Chore_AnswerItems_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *choreClient) AnswerStatus(ctx context.Context, in *StatusReq, opts ...grpc.CallOption) (*Response, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(Response) + err := c.cc.Invoke(ctx, Chore_AnswerStatus_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *choreClient) AnswerInfo(ctx context.Context, in *IdReq, opts ...grpc.CallOption) (*Response, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(Response) + err := c.cc.Invoke(ctx, Chore_AnswerInfo_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *choreClient) AnswerCreate(ctx context.Context, in *EditReq, opts ...grpc.CallOption) (*Response, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(Response) + err := c.cc.Invoke(ctx, Chore_AnswerCreate_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *choreClient) AnswerEdit(ctx context.Context, in *EditReq, opts ...grpc.CallOption) (*Response, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(Response) + err := c.cc.Invoke(ctx, Chore_AnswerEdit_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *choreClient) SystemEdit(ctx context.Context, in *SystemEditReq, opts ...grpc.CallOption) (*Response, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(Response) + err := c.cc.Invoke(ctx, Chore_SystemEdit_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *choreClient) SystemStatus(ctx context.Context, in *StatusReq, opts ...grpc.CallOption) (*Response, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(Response) + err := c.cc.Invoke(ctx, Chore_SystemStatus_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *choreClient) SystemInfo(ctx context.Context, in *IdReq, opts ...grpc.CallOption) (*Response, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(Response) + err := c.cc.Invoke(ctx, Chore_SystemInfo_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *choreClient) SystemItems(ctx context.Context, in *EmptyReq, opts ...grpc.CallOption) (*Response, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(Response) + err := c.cc.Invoke(ctx, Chore_SystemItems_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + func (c *choreClient) RegionsByIds(ctx context.Context, in *RegionsByIdsReq, opts ...grpc.CallOption) (*RegionsByIdsData, error) { cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(RegionsByIdsData) @@ -99,12 +209,23 @@ func (c *choreClient) RegionsByIds(ctx context.Context, in *RegionsByIdsReq, opt // ChoreServer is the server API for Chore service. // All implementations must embed UnimplementedChoreServer // for forward compatibility. +// +// 应放到pkg type ChoreServer interface { Policy(context.Context, *PolicyReq) (*Response, error) Test(context.Context, *TestReq) (*Response, error) DecryptMobile(context.Context, *DecryptMobileReq) (*Response, error) Regions(context.Context, *RegionsReq) (*Response, error) - // 服务间调用:按 id 批量查地区名称 + AnswerItems(context.Context, *EmptyReq) (*Response, error) + AnswerStatus(context.Context, *StatusReq) (*Response, error) + AnswerInfo(context.Context, *IdReq) (*Response, error) + AnswerCreate(context.Context, *EditReq) (*Response, error) + AnswerEdit(context.Context, *EditReq) (*Response, error) + SystemEdit(context.Context, *SystemEditReq) (*Response, error) + SystemStatus(context.Context, *StatusReq) (*Response, error) + SystemInfo(context.Context, *IdReq) (*Response, error) + SystemItems(context.Context, *EmptyReq) (*Response, error) + // 按 id 批量查地区名称 RegionsByIds(context.Context, *RegionsByIdsReq) (*RegionsByIdsData, error) mustEmbedUnimplementedChoreServer() } @@ -128,6 +249,33 @@ func (UnimplementedChoreServer) DecryptMobile(context.Context, *DecryptMobileReq func (UnimplementedChoreServer) Regions(context.Context, *RegionsReq) (*Response, error) { return nil, status.Error(codes.Unimplemented, "method Regions not implemented") } +func (UnimplementedChoreServer) AnswerItems(context.Context, *EmptyReq) (*Response, error) { + return nil, status.Error(codes.Unimplemented, "method AnswerItems not implemented") +} +func (UnimplementedChoreServer) AnswerStatus(context.Context, *StatusReq) (*Response, error) { + return nil, status.Error(codes.Unimplemented, "method AnswerStatus not implemented") +} +func (UnimplementedChoreServer) AnswerInfo(context.Context, *IdReq) (*Response, error) { + return nil, status.Error(codes.Unimplemented, "method AnswerInfo not implemented") +} +func (UnimplementedChoreServer) AnswerCreate(context.Context, *EditReq) (*Response, error) { + return nil, status.Error(codes.Unimplemented, "method AnswerCreate not implemented") +} +func (UnimplementedChoreServer) AnswerEdit(context.Context, *EditReq) (*Response, error) { + return nil, status.Error(codes.Unimplemented, "method AnswerEdit not implemented") +} +func (UnimplementedChoreServer) SystemEdit(context.Context, *SystemEditReq) (*Response, error) { + return nil, status.Error(codes.Unimplemented, "method SystemEdit not implemented") +} +func (UnimplementedChoreServer) SystemStatus(context.Context, *StatusReq) (*Response, error) { + return nil, status.Error(codes.Unimplemented, "method SystemStatus not implemented") +} +func (UnimplementedChoreServer) SystemInfo(context.Context, *IdReq) (*Response, error) { + return nil, status.Error(codes.Unimplemented, "method SystemInfo not implemented") +} +func (UnimplementedChoreServer) SystemItems(context.Context, *EmptyReq) (*Response, error) { + return nil, status.Error(codes.Unimplemented, "method SystemItems not implemented") +} func (UnimplementedChoreServer) RegionsByIds(context.Context, *RegionsByIdsReq) (*RegionsByIdsData, error) { return nil, status.Error(codes.Unimplemented, "method RegionsByIds not implemented") } @@ -224,6 +372,168 @@ func _Chore_Regions_Handler(srv interface{}, ctx context.Context, dec func(inter return interceptor(ctx, in, info, handler) } +func _Chore_AnswerItems_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(EmptyReq) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ChoreServer).AnswerItems(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Chore_AnswerItems_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ChoreServer).AnswerItems(ctx, req.(*EmptyReq)) + } + return interceptor(ctx, in, info, handler) +} + +func _Chore_AnswerStatus_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(StatusReq) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ChoreServer).AnswerStatus(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Chore_AnswerStatus_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ChoreServer).AnswerStatus(ctx, req.(*StatusReq)) + } + return interceptor(ctx, in, info, handler) +} + +func _Chore_AnswerInfo_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(IdReq) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ChoreServer).AnswerInfo(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Chore_AnswerInfo_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ChoreServer).AnswerInfo(ctx, req.(*IdReq)) + } + return interceptor(ctx, in, info, handler) +} + +func _Chore_AnswerCreate_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(EditReq) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ChoreServer).AnswerCreate(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Chore_AnswerCreate_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ChoreServer).AnswerCreate(ctx, req.(*EditReq)) + } + return interceptor(ctx, in, info, handler) +} + +func _Chore_AnswerEdit_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(EditReq) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ChoreServer).AnswerEdit(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Chore_AnswerEdit_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ChoreServer).AnswerEdit(ctx, req.(*EditReq)) + } + return interceptor(ctx, in, info, handler) +} + +func _Chore_SystemEdit_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(SystemEditReq) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ChoreServer).SystemEdit(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Chore_SystemEdit_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ChoreServer).SystemEdit(ctx, req.(*SystemEditReq)) + } + return interceptor(ctx, in, info, handler) +} + +func _Chore_SystemStatus_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(StatusReq) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ChoreServer).SystemStatus(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Chore_SystemStatus_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ChoreServer).SystemStatus(ctx, req.(*StatusReq)) + } + return interceptor(ctx, in, info, handler) +} + +func _Chore_SystemInfo_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(IdReq) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ChoreServer).SystemInfo(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Chore_SystemInfo_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ChoreServer).SystemInfo(ctx, req.(*IdReq)) + } + return interceptor(ctx, in, info, handler) +} + +func _Chore_SystemItems_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(EmptyReq) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ChoreServer).SystemItems(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Chore_SystemItems_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ChoreServer).SystemItems(ctx, req.(*EmptyReq)) + } + return interceptor(ctx, in, info, handler) +} + func _Chore_RegionsByIds_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(RegionsByIdsReq) if err := dec(in); err != nil { @@ -265,6 +575,42 @@ var Chore_ServiceDesc = grpc.ServiceDesc{ MethodName: "Regions", Handler: _Chore_Regions_Handler, }, + { + MethodName: "AnswerItems", + Handler: _Chore_AnswerItems_Handler, + }, + { + MethodName: "AnswerStatus", + Handler: _Chore_AnswerStatus_Handler, + }, + { + MethodName: "AnswerInfo", + Handler: _Chore_AnswerInfo_Handler, + }, + { + MethodName: "AnswerCreate", + Handler: _Chore_AnswerCreate_Handler, + }, + { + MethodName: "AnswerEdit", + Handler: _Chore_AnswerEdit_Handler, + }, + { + MethodName: "SystemEdit", + Handler: _Chore_SystemEdit_Handler, + }, + { + MethodName: "SystemStatus", + Handler: _Chore_SystemStatus_Handler, + }, + { + MethodName: "SystemInfo", + Handler: _Chore_SystemInfo_Handler, + }, + { + MethodName: "SystemItems", + Handler: _Chore_SystemItems_Handler, + }, { MethodName: "RegionsByIds", Handler: _Chore_RegionsByIds_Handler, diff --git a/rpc/express/express.pb b/rpc/express/express.pb index d7b5ae0139f4348410ff248b8e07655832d0b21c..881281d482bd2a63727d98b5e8f94e87190e0b65 100644 GIT binary patch delta 196 zcmdne$hfeHal>O{rae-dpBghV*5`0>dZh%V7M7+Kmk3F6aU>QL#3$#cq)IR<+eK(3Gs7iURkE>KZoZh-_7SPmf|B*ev1oSB{{!3>rFvq547i6t2lED$jeTWKpZ z7q4?sYGO$$)XL4@O;}kO7i|7(xtv)xoQv1BqM#_XxY#SjDKR-)NJuXg!q@XknVey3 Kw)uzc9wq>>1w7OM delta 74 zcmV-Q0JZ<2f&sLF0kGpU0?!$<TK0_v0+-v9sr diff --git a/rpc/express/express.proto b/rpc/express/express.proto index 1708ed9..9ee1d82 100644 --- a/rpc/express/express.proto +++ b/rpc/express/express.proto @@ -23,6 +23,13 @@ message IdResponse { message EmtpyRequest { } +message JdRequest { + string app_code = 1; + string timestamp = 2; + string sign =3; + string path=4; +} + message CreateRequest { int64 id = 1; string name = 2; @@ -161,7 +168,7 @@ service Express { body: "*" }; }; - rpc ExpressJdBack(EmtpyRequest) returns(Response){ + rpc ExpressJdBack(JdRequest) returns(SfResponse){ option (google.api.http) = { post: "/api/v3/express/jd" body: "*" diff --git a/rpc/express/pb/express.pb.go b/rpc/express/pb/express.pb.go index ebc86f7..f31cbef 100644 --- a/rpc/express/pb/express.pb.go +++ b/rpc/express/pb/express.pb.go @@ -214,6 +214,74 @@ func (*EmtpyRequest) Descriptor() ([]byte, []int) { return file_express_express_proto_rawDescGZIP(), []int{3} } +type JdRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + AppCode string `protobuf:"bytes,1,opt,name=app_code,json=appCode,proto3" json:"app_code,omitempty"` + Timestamp string `protobuf:"bytes,2,opt,name=timestamp,proto3" json:"timestamp,omitempty"` + Sign string `protobuf:"bytes,3,opt,name=sign,proto3" json:"sign,omitempty"` + Path string `protobuf:"bytes,4,opt,name=path,proto3" json:"path,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *JdRequest) Reset() { + *x = JdRequest{} + mi := &file_express_express_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *JdRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*JdRequest) ProtoMessage() {} + +func (x *JdRequest) ProtoReflect() protoreflect.Message { + mi := &file_express_express_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 JdRequest.ProtoReflect.Descriptor instead. +func (*JdRequest) Descriptor() ([]byte, []int) { + return file_express_express_proto_rawDescGZIP(), []int{4} +} + +func (x *JdRequest) GetAppCode() string { + if x != nil { + return x.AppCode + } + return "" +} + +func (x *JdRequest) GetTimestamp() string { + if x != nil { + return x.Timestamp + } + return "" +} + +func (x *JdRequest) GetSign() string { + if x != nil { + return x.Sign + } + return "" +} + +func (x *JdRequest) GetPath() string { + if x != nil { + return x.Path + } + return "" +} + type CreateRequest struct { state protoimpl.MessageState `protogen:"open.v1"` Id int64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` @@ -238,7 +306,7 @@ type CreateRequest struct { func (x *CreateRequest) Reset() { *x = CreateRequest{} - mi := &file_express_express_proto_msgTypes[4] + mi := &file_express_express_proto_msgTypes[5] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -250,7 +318,7 @@ func (x *CreateRequest) String() string { func (*CreateRequest) ProtoMessage() {} func (x *CreateRequest) ProtoReflect() protoreflect.Message { - mi := &file_express_express_proto_msgTypes[4] + mi := &file_express_express_proto_msgTypes[5] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -263,7 +331,7 @@ func (x *CreateRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateRequest.ProtoReflect.Descriptor instead. func (*CreateRequest) Descriptor() ([]byte, []int) { - return file_express_express_proto_rawDescGZIP(), []int{4} + return file_express_express_proto_rawDescGZIP(), []int{5} } func (x *CreateRequest) GetId() int64 { @@ -387,7 +455,7 @@ type IdRequest struct { func (x *IdRequest) Reset() { *x = IdRequest{} - mi := &file_express_express_proto_msgTypes[5] + mi := &file_express_express_proto_msgTypes[6] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -399,7 +467,7 @@ func (x *IdRequest) String() string { func (*IdRequest) ProtoMessage() {} func (x *IdRequest) ProtoReflect() protoreflect.Message { - mi := &file_express_express_proto_msgTypes[5] + mi := &file_express_express_proto_msgTypes[6] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -412,7 +480,7 @@ func (x *IdRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use IdRequest.ProtoReflect.Descriptor instead. func (*IdRequest) Descriptor() ([]byte, []int) { - return file_express_express_proto_rawDescGZIP(), []int{5} + return file_express_express_proto_rawDescGZIP(), []int{6} } func (x *IdRequest) GetId() int64 { @@ -433,7 +501,7 @@ type StatusRequest struct { func (x *StatusRequest) Reset() { *x = StatusRequest{} - mi := &file_express_express_proto_msgTypes[6] + mi := &file_express_express_proto_msgTypes[7] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -445,7 +513,7 @@ func (x *StatusRequest) String() string { func (*StatusRequest) ProtoMessage() {} func (x *StatusRequest) ProtoReflect() protoreflect.Message { - mi := &file_express_express_proto_msgTypes[6] + mi := &file_express_express_proto_msgTypes[7] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -458,7 +526,7 @@ func (x *StatusRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use StatusRequest.ProtoReflect.Descriptor instead. func (*StatusRequest) Descriptor() ([]byte, []int) { - return file_express_express_proto_rawDescGZIP(), []int{6} + return file_express_express_proto_rawDescGZIP(), []int{7} } func (x *StatusRequest) GetId() int64 { @@ -492,7 +560,7 @@ type HistoryRequest struct { func (x *HistoryRequest) Reset() { *x = HistoryRequest{} - mi := &file_express_express_proto_msgTypes[7] + mi := &file_express_express_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -504,7 +572,7 @@ func (x *HistoryRequest) String() string { func (*HistoryRequest) ProtoMessage() {} func (x *HistoryRequest) ProtoReflect() protoreflect.Message { - mi := &file_express_express_proto_msgTypes[7] + mi := &file_express_express_proto_msgTypes[8] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -517,7 +585,7 @@ func (x *HistoryRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use HistoryRequest.ProtoReflect.Descriptor instead. func (*HistoryRequest) Descriptor() ([]byte, []int) { - return file_express_express_proto_rawDescGZIP(), []int{7} + return file_express_express_proto_rawDescGZIP(), []int{8} } func (x *HistoryRequest) GetPage() int32 { @@ -554,7 +622,7 @@ type DeliveryOrderCreateRequest struct { func (x *DeliveryOrderCreateRequest) Reset() { *x = DeliveryOrderCreateRequest{} - mi := &file_express_express_proto_msgTypes[8] + mi := &file_express_express_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -566,7 +634,7 @@ func (x *DeliveryOrderCreateRequest) String() string { func (*DeliveryOrderCreateRequest) ProtoMessage() {} func (x *DeliveryOrderCreateRequest) ProtoReflect() protoreflect.Message { - mi := &file_express_express_proto_msgTypes[8] + mi := &file_express_express_proto_msgTypes[9] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -579,7 +647,7 @@ func (x *DeliveryOrderCreateRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use DeliveryOrderCreateRequest.ProtoReflect.Descriptor instead. func (*DeliveryOrderCreateRequest) Descriptor() ([]byte, []int) { - return file_express_express_proto_rawDescGZIP(), []int{8} + return file_express_express_proto_rawDescGZIP(), []int{9} } func (x *DeliveryOrderCreateRequest) GetObjId() string { @@ -679,7 +747,7 @@ type DeliverOrderProductInfo struct { func (x *DeliverOrderProductInfo) Reset() { *x = DeliverOrderProductInfo{} - mi := &file_express_express_proto_msgTypes[9] + mi := &file_express_express_proto_msgTypes[10] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -691,7 +759,7 @@ func (x *DeliverOrderProductInfo) String() string { func (*DeliverOrderProductInfo) ProtoMessage() {} func (x *DeliverOrderProductInfo) ProtoReflect() protoreflect.Message { - mi := &file_express_express_proto_msgTypes[9] + mi := &file_express_express_proto_msgTypes[10] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -704,7 +772,7 @@ func (x *DeliverOrderProductInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use DeliverOrderProductInfo.ProtoReflect.Descriptor instead. func (*DeliverOrderProductInfo) Descriptor() ([]byte, []int) { - return file_express_express_proto_rawDescGZIP(), []int{9} + return file_express_express_proto_rawDescGZIP(), []int{10} } func (x *DeliverOrderProductInfo) GetNumber() int32 { @@ -752,7 +820,7 @@ type DeliveringRequest struct { func (x *DeliveringRequest) Reset() { *x = DeliveringRequest{} - mi := &file_express_express_proto_msgTypes[10] + mi := &file_express_express_proto_msgTypes[11] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -764,7 +832,7 @@ func (x *DeliveringRequest) String() string { func (*DeliveringRequest) ProtoMessage() {} func (x *DeliveringRequest) ProtoReflect() protoreflect.Message { - mi := &file_express_express_proto_msgTypes[10] + mi := &file_express_express_proto_msgTypes[11] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -777,7 +845,7 @@ func (x *DeliveringRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use DeliveringRequest.ProtoReflect.Descriptor instead. func (*DeliveringRequest) Descriptor() ([]byte, []int) { - return file_express_express_proto_rawDescGZIP(), []int{10} + return file_express_express_proto_rawDescGZIP(), []int{11} } func (x *DeliveringRequest) GetTransitId() int64 { @@ -803,7 +871,7 @@ type ExpressCompanyRequest struct { func (x *ExpressCompanyRequest) Reset() { *x = ExpressCompanyRequest{} - mi := &file_express_express_proto_msgTypes[11] + mi := &file_express_express_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -815,7 +883,7 @@ func (x *ExpressCompanyRequest) String() string { func (*ExpressCompanyRequest) ProtoMessage() {} func (x *ExpressCompanyRequest) ProtoReflect() protoreflect.Message { - mi := &file_express_express_proto_msgTypes[11] + mi := &file_express_express_proto_msgTypes[12] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -828,7 +896,7 @@ func (x *ExpressCompanyRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ExpressCompanyRequest.ProtoReflect.Descriptor instead. func (*ExpressCompanyRequest) Descriptor() ([]byte, []int) { - return file_express_express_proto_rawDescGZIP(), []int{11} + return file_express_express_proto_rawDescGZIP(), []int{12} } func (x *ExpressCompanyRequest) GetCode() string { @@ -848,7 +916,7 @@ type IdApiRequest struct { func (x *IdApiRequest) Reset() { *x = IdApiRequest{} - mi := &file_express_express_proto_msgTypes[12] + mi := &file_express_express_proto_msgTypes[13] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -860,7 +928,7 @@ func (x *IdApiRequest) String() string { func (*IdApiRequest) ProtoMessage() {} func (x *IdApiRequest) ProtoReflect() protoreflect.Message { - mi := &file_express_express_proto_msgTypes[12] + mi := &file_express_express_proto_msgTypes[13] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -873,7 +941,7 @@ func (x *IdApiRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use IdApiRequest.ProtoReflect.Descriptor instead. func (*IdApiRequest) Descriptor() ([]byte, []int) { - return file_express_express_proto_rawDescGZIP(), []int{12} + return file_express_express_proto_rawDescGZIP(), []int{13} } func (x *IdApiRequest) GetId() int64 { @@ -908,7 +976,12 @@ const file_express_express_proto_rawDesc = "" + "\n" + "IdResponse\x12\x0e\n" + "\x02id\x18\x01 \x01(\x03R\x02id\"\x0e\n" + - "\fEmtpyRequest\"\xb5\x03\n" + + "\fEmtpyRequest\"l\n" + + "\tJdRequest\x12\x19\n" + + "\bapp_code\x18\x01 \x01(\tR\aappCode\x12\x1c\n" + + "\ttimestamp\x18\x02 \x01(\tR\ttimestamp\x12\x12\n" + + "\x04sign\x18\x03 \x01(\tR\x04sign\x12\x12\n" + + "\x04path\x18\x04 \x01(\tR\x04path\"\xb5\x03\n" + "\rCreateRequest\x12\x0e\n" + "\x02id\x18\x01 \x01(\x03R\x02id\x12\x12\n" + "\x04name\x18\x02 \x01(\tR\x04name\x12\x1d\n" + @@ -967,7 +1040,7 @@ const file_express_express_proto_rawDesc = "" + "\x04code\x18\x01 \x01(\tR\x04code\"2\n" + "\fIdApiRequest\x12\x0e\n" + "\x02id\x18\x01 \x01(\x03R\x02id\x12\x12\n" + - "\x04type\x18\x02 \x01(\x05R\x04type2\xa1\r\n" + + "\x04type\x18\x02 \x01(\x05R\x04type2\xa0\r\n" + "\aExpress\x12U\n" + "\x05Items\x12\x15.express.EmtpyRequest\x1a\x11.express.Response\"\"\x82\xd3\xe4\x93\x02\x1c:\x01*\x12\x17/admin/v3/express/items\x12X\n" + "\x06Create\x12\x16.express.CreateRequest\x1a\x11.express.Response\"#\x82\xd3\xe4\x93\x02\x1d:\x01*\"\x18/admin/v3/express/create\x12T\n" + @@ -978,8 +1051,8 @@ const file_express_express_proto_rawDesc = "" + "\aHistory\x12\x17.express.HistoryRequest\x1a\x11.express.Response\"%\x82\xd3\xe4\x93\x02\x1f:\x01*\x12\x1a/admin/v3/delivery/history\x12i\n" + "\x0eExpressCompany\x12\x1e.express.ExpressCompanyRequest\x1a\x11.express.Response\"$\x82\xd3\xe4\x93\x02\x1e:\x01*\x12\x19/admin/v3/express/company\x12k\n" + "\x11ExpressDelivering\x12\x1a.express.DeliveringRequest\x1a\x11.express.Response\"'\x82\xd3\xe4\x93\x02!:\x01*\"\x1c/admin/v3/express/delivering\x12Z\n" + - "\rExpressSfBack\x12\x15.express.EmtpyRequest\x1a\x13.express.SfResponse\"\x1d\x82\xd3\xe4\x93\x02\x17:\x01*\"\x12/api/v3/express/sf\x12X\n" + - "\rExpressJdBack\x12\x15.express.EmtpyRequest\x1a\x11.express.Response\"\x1d\x82\xd3\xe4\x93\x02\x17:\x01*\"\x12/api/v3/express/jd\x12]\n" + + "\rExpressSfBack\x12\x15.express.EmtpyRequest\x1a\x13.express.SfResponse\"\x1d\x82\xd3\xe4\x93\x02\x17:\x01*\"\x12/api/v3/express/sf\x12W\n" + + "\rExpressJdBack\x12\x12.express.JdRequest\x1a\x13.express.SfResponse\"\x1d\x82\xd3\xe4\x93\x02\x17:\x01*\"\x12/api/v3/express/jd\x12]\n" + "\x0fExpressApiQuery\x12\x15.express.IdApiRequest\x1a\x11.express.Response\" \x82\xd3\xe4\x93\x02\x1a:\x01*\x12\x15/api/v3/express/query\x12^\n" + "\x11ExpressAdminQuery\x12\x12.express.IdRequest\x1a\x11.express.Response\"\"\x82\xd3\xe4\x93\x02\x1c:\x01*\x12\x17/admin/v3/express/query\x12e\n" + "\x13ExpressApiEstimated\x12\x15.express.IdApiRequest\x1a\x11.express.Response\"$\x82\xd3\xe4\x93\x02\x1e:\x01*\x12\x19/api/v3/express/estimated\x12f\n" + @@ -1000,42 +1073,43 @@ func file_express_express_proto_rawDescGZIP() []byte { return file_express_express_proto_rawDescData } -var file_express_express_proto_msgTypes = make([]protoimpl.MessageInfo, 13) +var file_express_express_proto_msgTypes = make([]protoimpl.MessageInfo, 14) var file_express_express_proto_goTypes = []any{ (*Response)(nil), // 0: express.Response (*SfResponse)(nil), // 1: express.SfResponse (*IdResponse)(nil), // 2: express.IdResponse (*EmtpyRequest)(nil), // 3: express.EmtpyRequest - (*CreateRequest)(nil), // 4: express.CreateRequest - (*IdRequest)(nil), // 5: express.IdRequest - (*StatusRequest)(nil), // 6: express.StatusRequest - (*HistoryRequest)(nil), // 7: express.HistoryRequest - (*DeliveryOrderCreateRequest)(nil), // 8: express.DeliveryOrderCreateRequest - (*DeliverOrderProductInfo)(nil), // 9: express.DeliverOrderProductInfo - (*DeliveringRequest)(nil), // 10: express.DeliveringRequest - (*ExpressCompanyRequest)(nil), // 11: express.ExpressCompanyRequest - (*IdApiRequest)(nil), // 12: express.IdApiRequest + (*JdRequest)(nil), // 4: express.JdRequest + (*CreateRequest)(nil), // 5: express.CreateRequest + (*IdRequest)(nil), // 6: express.IdRequest + (*StatusRequest)(nil), // 7: express.StatusRequest + (*HistoryRequest)(nil), // 8: express.HistoryRequest + (*DeliveryOrderCreateRequest)(nil), // 9: express.DeliveryOrderCreateRequest + (*DeliverOrderProductInfo)(nil), // 10: express.DeliverOrderProductInfo + (*DeliveringRequest)(nil), // 11: express.DeliveringRequest + (*ExpressCompanyRequest)(nil), // 12: express.ExpressCompanyRequest + (*IdApiRequest)(nil), // 13: express.IdApiRequest } var file_express_express_proto_depIdxs = []int32{ - 9, // 0: express.DeliveryOrderCreateRequest.product_info:type_name -> express.DeliverOrderProductInfo + 10, // 0: express.DeliveryOrderCreateRequest.product_info:type_name -> express.DeliverOrderProductInfo 3, // 1: express.Express.Items:input_type -> express.EmtpyRequest - 4, // 2: express.Express.Create:input_type -> express.CreateRequest - 4, // 3: express.Express.Edit:input_type -> express.CreateRequest - 5, // 4: express.Express.Info:input_type -> express.IdRequest + 5, // 2: express.Express.Create:input_type -> express.CreateRequest + 5, // 3: express.Express.Edit:input_type -> express.CreateRequest + 6, // 4: express.Express.Info:input_type -> express.IdRequest 3, // 5: express.Express.Names:input_type -> express.EmtpyRequest - 6, // 6: express.Express.Status:input_type -> express.StatusRequest - 7, // 7: express.Express.History:input_type -> express.HistoryRequest - 11, // 8: express.Express.ExpressCompany:input_type -> express.ExpressCompanyRequest - 10, // 9: express.Express.ExpressDelivering:input_type -> express.DeliveringRequest + 7, // 6: express.Express.Status:input_type -> express.StatusRequest + 8, // 7: express.Express.History:input_type -> express.HistoryRequest + 12, // 8: express.Express.ExpressCompany:input_type -> express.ExpressCompanyRequest + 11, // 9: express.Express.ExpressDelivering:input_type -> express.DeliveringRequest 3, // 10: express.Express.ExpressSfBack:input_type -> express.EmtpyRequest - 3, // 11: express.Express.ExpressJdBack:input_type -> express.EmtpyRequest - 12, // 12: express.Express.ExpressApiQuery:input_type -> express.IdApiRequest - 5, // 13: express.Express.ExpressAdminQuery:input_type -> express.IdRequest - 12, // 14: express.Express.ExpressApiEstimated:input_type -> express.IdApiRequest - 5, // 15: express.Express.ExpressAdminEstimated:input_type -> express.IdRequest - 12, // 16: express.Express.ExpressApiCancel:input_type -> express.IdApiRequest - 5, // 17: express.Express.ExpressAdminCancel:input_type -> express.IdRequest - 8, // 18: express.Express.DeliveryOrderCreate:input_type -> express.DeliveryOrderCreateRequest + 4, // 11: express.Express.ExpressJdBack:input_type -> express.JdRequest + 13, // 12: express.Express.ExpressApiQuery:input_type -> express.IdApiRequest + 6, // 13: express.Express.ExpressAdminQuery:input_type -> express.IdRequest + 13, // 14: express.Express.ExpressApiEstimated:input_type -> express.IdApiRequest + 6, // 15: express.Express.ExpressAdminEstimated:input_type -> express.IdRequest + 13, // 16: express.Express.ExpressApiCancel:input_type -> express.IdApiRequest + 6, // 17: express.Express.ExpressAdminCancel:input_type -> express.IdRequest + 9, // 18: express.Express.DeliveryOrderCreate:input_type -> express.DeliveryOrderCreateRequest 0, // 19: express.Express.Items:output_type -> express.Response 0, // 20: express.Express.Create:output_type -> express.Response 0, // 21: express.Express.Edit:output_type -> express.Response @@ -1046,7 +1120,7 @@ var file_express_express_proto_depIdxs = []int32{ 0, // 26: express.Express.ExpressCompany:output_type -> express.Response 0, // 27: express.Express.ExpressDelivering:output_type -> express.Response 1, // 28: express.Express.ExpressSfBack:output_type -> express.SfResponse - 0, // 29: express.Express.ExpressJdBack:output_type -> express.Response + 1, // 29: express.Express.ExpressJdBack:output_type -> express.SfResponse 0, // 30: express.Express.ExpressApiQuery:output_type -> express.Response 0, // 31: express.Express.ExpressAdminQuery:output_type -> express.Response 0, // 32: express.Express.ExpressApiEstimated:output_type -> express.Response @@ -1072,7 +1146,7 @@ func file_express_express_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: unsafe.Slice(unsafe.StringData(file_express_express_proto_rawDesc), len(file_express_express_proto_rawDesc)), NumEnums: 0, - NumMessages: 13, + NumMessages: 14, NumExtensions: 0, NumServices: 1, }, diff --git a/rpc/express/pb/express_grpc.pb.go b/rpc/express/pb/express_grpc.pb.go index 5841ec4..5816015 100644 --- a/rpc/express/pb/express_grpc.pb.go +++ b/rpc/express/pb/express_grpc.pb.go @@ -55,7 +55,7 @@ type ExpressClient interface { // 发货 ExpressDelivering(ctx context.Context, in *DeliveringRequest, opts ...grpc.CallOption) (*Response, error) ExpressSfBack(ctx context.Context, in *EmtpyRequest, opts ...grpc.CallOption) (*SfResponse, error) - ExpressJdBack(ctx context.Context, in *EmtpyRequest, opts ...grpc.CallOption) (*Response, error) + ExpressJdBack(ctx context.Context, in *JdRequest, opts ...grpc.CallOption) (*SfResponse, error) ExpressApiQuery(ctx context.Context, in *IdApiRequest, opts ...grpc.CallOption) (*Response, error) ExpressAdminQuery(ctx context.Context, in *IdRequest, opts ...grpc.CallOption) (*Response, error) ExpressApiEstimated(ctx context.Context, in *IdApiRequest, opts ...grpc.CallOption) (*Response, error) @@ -174,9 +174,9 @@ func (c *expressClient) ExpressSfBack(ctx context.Context, in *EmtpyRequest, opt return out, nil } -func (c *expressClient) ExpressJdBack(ctx context.Context, in *EmtpyRequest, opts ...grpc.CallOption) (*Response, error) { +func (c *expressClient) ExpressJdBack(ctx context.Context, in *JdRequest, opts ...grpc.CallOption) (*SfResponse, error) { cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) - out := new(Response) + out := new(SfResponse) err := c.cc.Invoke(ctx, Express_ExpressJdBack_FullMethodName, in, out, cOpts...) if err != nil { return nil, err @@ -270,7 +270,7 @@ type ExpressServer interface { // 发货 ExpressDelivering(context.Context, *DeliveringRequest) (*Response, error) ExpressSfBack(context.Context, *EmtpyRequest) (*SfResponse, error) - ExpressJdBack(context.Context, *EmtpyRequest) (*Response, error) + ExpressJdBack(context.Context, *JdRequest) (*SfResponse, error) ExpressApiQuery(context.Context, *IdApiRequest) (*Response, error) ExpressAdminQuery(context.Context, *IdRequest) (*Response, error) ExpressApiEstimated(context.Context, *IdApiRequest) (*Response, error) @@ -319,7 +319,7 @@ func (UnimplementedExpressServer) ExpressDelivering(context.Context, *Delivering func (UnimplementedExpressServer) ExpressSfBack(context.Context, *EmtpyRequest) (*SfResponse, error) { return nil, status.Error(codes.Unimplemented, "method ExpressSfBack not implemented") } -func (UnimplementedExpressServer) ExpressJdBack(context.Context, *EmtpyRequest) (*Response, error) { +func (UnimplementedExpressServer) ExpressJdBack(context.Context, *JdRequest) (*SfResponse, error) { return nil, status.Error(codes.Unimplemented, "method ExpressJdBack not implemented") } func (UnimplementedExpressServer) ExpressApiQuery(context.Context, *IdApiRequest) (*Response, error) { @@ -545,7 +545,7 @@ func _Express_ExpressSfBack_Handler(srv interface{}, ctx context.Context, dec fu } func _Express_ExpressJdBack_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(EmtpyRequest) + in := new(JdRequest) if err := dec(in); err != nil { return nil, err } @@ -557,7 +557,7 @@ func _Express_ExpressJdBack_Handler(srv interface{}, ctx context.Context, dec fu FullMethod: Express_ExpressJdBack_FullMethodName, } handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ExpressServer).ExpressJdBack(ctx, req.(*EmtpyRequest)) + return srv.(ExpressServer).ExpressJdBack(ctx, req.(*JdRequest)) } return interceptor(ctx, in, info, handler) } diff --git a/rpc/order/order.pb b/rpc/order/order.pb index 49ced41aa0898ee3468ef6e30f9fbd45f99d0eac..e4fdeaa556c18e30adf3a9fbe88474991633c3c2 100644 GIT binary patch delta 212 zcmZ3}#rUwBal>O{ra#J?pBm>g2KaLcyH+Hp=D1cArSoAPopb@Odbvir)Kki^C5 zUzCzsWCnTYl4`SHurc~6Kr<%?yW9i-$O=VJ delta 42 zcmV+_0M-BDivg^P0kGpU0>>h=DA A@Bjb+ diff --git a/rpc/order/order.proto b/rpc/order/order.proto index e245af4..23dbb22 100644 --- a/rpc/order/order.proto +++ b/rpc/order/order.proto @@ -24,6 +24,12 @@ message Response { string data = 3; } +message ExcelExportResponse { + bytes data = 1; // excel二进制 + string name = 2; + string msg = 3; +} + message CreateOrderRequest { int64 address_id = 1; string note = 2; @@ -257,6 +263,12 @@ service order { body: "*" }; }; + rpc OrderDown(OrderItemsRequest) returns(ExcelExportResponse){ + option (google.api.http) = { + get: "/admin/v3/order/down" + body: "*" + }; + }; rpc UpdateOrderDeliverStatus(UpdateOrderDeliverStatusRequest) returns(UpdateOrderDeliverStatusResponse); rpc GetOrderInfo(GetOrderInfoRequest) returns(OrderInfoResponse); } \ No newline at end of file diff --git a/rpc/order/pb/order.pb.go b/rpc/order/pb/order.pb.go index f671bb8..687c028 100644 --- a/rpc/order/pb/order.pb.go +++ b/rpc/order/pb/order.pb.go @@ -190,6 +190,66 @@ func (x *Response) GetData() string { return "" } +type ExcelExportResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + Data []byte `protobuf:"bytes,1,opt,name=data,proto3" json:"data,omitempty"` // excel二进制 + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + Msg string `protobuf:"bytes,3,opt,name=msg,proto3" json:"msg,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ExcelExportResponse) Reset() { + *x = ExcelExportResponse{} + mi := &file_order_order_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ExcelExportResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ExcelExportResponse) ProtoMessage() {} + +func (x *ExcelExportResponse) ProtoReflect() protoreflect.Message { + mi := &file_order_order_proto_msgTypes[2] + 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 ExcelExportResponse.ProtoReflect.Descriptor instead. +func (*ExcelExportResponse) Descriptor() ([]byte, []int) { + return file_order_order_proto_rawDescGZIP(), []int{2} +} + +func (x *ExcelExportResponse) GetData() []byte { + if x != nil { + return x.Data + } + return nil +} + +func (x *ExcelExportResponse) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *ExcelExportResponse) GetMsg() string { + if x != nil { + return x.Msg + } + return "" +} + type CreateOrderRequest struct { state protoimpl.MessageState `protogen:"open.v1"` AddressId int64 `protobuf:"varint,1,opt,name=address_id,json=addressId,proto3" json:"address_id,omitempty"` @@ -201,7 +261,7 @@ type CreateOrderRequest struct { func (x *CreateOrderRequest) Reset() { *x = CreateOrderRequest{} - mi := &file_order_order_proto_msgTypes[2] + mi := &file_order_order_proto_msgTypes[3] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -213,7 +273,7 @@ func (x *CreateOrderRequest) String() string { func (*CreateOrderRequest) ProtoMessage() {} func (x *CreateOrderRequest) ProtoReflect() protoreflect.Message { - mi := &file_order_order_proto_msgTypes[2] + mi := &file_order_order_proto_msgTypes[3] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -226,7 +286,7 @@ func (x *CreateOrderRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateOrderRequest.ProtoReflect.Descriptor instead. func (*CreateOrderRequest) Descriptor() ([]byte, []int) { - return file_order_order_proto_rawDescGZIP(), []int{2} + return file_order_order_proto_rawDescGZIP(), []int{3} } func (x *CreateOrderRequest) GetAddressId() int64 { @@ -263,7 +323,7 @@ type CreateOrderOneRequest struct { func (x *CreateOrderOneRequest) Reset() { *x = CreateOrderOneRequest{} - mi := &file_order_order_proto_msgTypes[3] + mi := &file_order_order_proto_msgTypes[4] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -275,7 +335,7 @@ func (x *CreateOrderOneRequest) String() string { func (*CreateOrderOneRequest) ProtoMessage() {} func (x *CreateOrderOneRequest) ProtoReflect() protoreflect.Message { - mi := &file_order_order_proto_msgTypes[3] + mi := &file_order_order_proto_msgTypes[4] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -288,7 +348,7 @@ func (x *CreateOrderOneRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateOrderOneRequest.ProtoReflect.Descriptor instead. func (*CreateOrderOneRequest) Descriptor() ([]byte, []int) { - return file_order_order_proto_rawDescGZIP(), []int{3} + return file_order_order_proto_rawDescGZIP(), []int{4} } func (x *CreateOrderOneRequest) GetAddressId() int64 { @@ -342,7 +402,7 @@ type EditAddressRequest struct { func (x *EditAddressRequest) Reset() { *x = EditAddressRequest{} - mi := &file_order_order_proto_msgTypes[4] + mi := &file_order_order_proto_msgTypes[5] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -354,7 +414,7 @@ func (x *EditAddressRequest) String() string { func (*EditAddressRequest) ProtoMessage() {} func (x *EditAddressRequest) ProtoReflect() protoreflect.Message { - mi := &file_order_order_proto_msgTypes[4] + mi := &file_order_order_proto_msgTypes[5] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -367,7 +427,7 @@ func (x *EditAddressRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use EditAddressRequest.ProtoReflect.Descriptor instead. func (*EditAddressRequest) Descriptor() ([]byte, []int) { - return file_order_order_proto_rawDescGZIP(), []int{4} + return file_order_order_proto_rawDescGZIP(), []int{5} } func (x *EditAddressRequest) GetDistrict() string { @@ -434,7 +494,7 @@ type EmptyRequest struct { func (x *EmptyRequest) Reset() { *x = EmptyRequest{} - mi := &file_order_order_proto_msgTypes[5] + mi := &file_order_order_proto_msgTypes[6] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -446,7 +506,7 @@ func (x *EmptyRequest) String() string { func (*EmptyRequest) ProtoMessage() {} func (x *EmptyRequest) ProtoReflect() protoreflect.Message { - mi := &file_order_order_proto_msgTypes[5] + mi := &file_order_order_proto_msgTypes[6] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -459,7 +519,7 @@ func (x *EmptyRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use EmptyRequest.ProtoReflect.Descriptor instead. func (*EmptyRequest) Descriptor() ([]byte, []int) { - return file_order_order_proto_rawDescGZIP(), []int{5} + return file_order_order_proto_rawDescGZIP(), []int{6} } type EditCartRequest struct { @@ -472,7 +532,7 @@ type EditCartRequest struct { func (x *EditCartRequest) Reset() { *x = EditCartRequest{} - mi := &file_order_order_proto_msgTypes[6] + mi := &file_order_order_proto_msgTypes[7] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -484,7 +544,7 @@ func (x *EditCartRequest) String() string { func (*EditCartRequest) ProtoMessage() {} func (x *EditCartRequest) ProtoReflect() protoreflect.Message { - mi := &file_order_order_proto_msgTypes[6] + mi := &file_order_order_proto_msgTypes[7] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -497,7 +557,7 @@ func (x *EditCartRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use EditCartRequest.ProtoReflect.Descriptor instead. func (*EditCartRequest) Descriptor() ([]byte, []int) { - return file_order_order_proto_rawDescGZIP(), []int{6} + return file_order_order_proto_rawDescGZIP(), []int{7} } func (x *EditCartRequest) GetInfo() string { @@ -523,7 +583,7 @@ type CartRequest struct { func (x *CartRequest) Reset() { *x = CartRequest{} - mi := &file_order_order_proto_msgTypes[7] + mi := &file_order_order_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -535,7 +595,7 @@ func (x *CartRequest) String() string { func (*CartRequest) ProtoMessage() {} func (x *CartRequest) ProtoReflect() protoreflect.Message { - mi := &file_order_order_proto_msgTypes[7] + mi := &file_order_order_proto_msgTypes[8] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -548,7 +608,7 @@ func (x *CartRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use CartRequest.ProtoReflect.Descriptor instead. func (*CartRequest) Descriptor() ([]byte, []int) { - return file_order_order_proto_rawDescGZIP(), []int{7} + return file_order_order_proto_rawDescGZIP(), []int{8} } func (x *CartRequest) GetType() int32 { @@ -567,7 +627,7 @@ type IdRequest struct { func (x *IdRequest) Reset() { *x = IdRequest{} - mi := &file_order_order_proto_msgTypes[8] + mi := &file_order_order_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -579,7 +639,7 @@ func (x *IdRequest) String() string { func (*IdRequest) ProtoMessage() {} func (x *IdRequest) ProtoReflect() protoreflect.Message { - mi := &file_order_order_proto_msgTypes[8] + mi := &file_order_order_proto_msgTypes[9] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -592,7 +652,7 @@ func (x *IdRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use IdRequest.ProtoReflect.Descriptor instead. func (*IdRequest) Descriptor() ([]byte, []int) { - return file_order_order_proto_rawDescGZIP(), []int{8} + return file_order_order_proto_rawDescGZIP(), []int{9} } func (x *IdRequest) GetId() int64 { @@ -612,7 +672,7 @@ type IdAndTypeRequest struct { func (x *IdAndTypeRequest) Reset() { *x = IdAndTypeRequest{} - mi := &file_order_order_proto_msgTypes[9] + mi := &file_order_order_proto_msgTypes[10] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -624,7 +684,7 @@ func (x *IdAndTypeRequest) String() string { func (*IdAndTypeRequest) ProtoMessage() {} func (x *IdAndTypeRequest) ProtoReflect() protoreflect.Message { - mi := &file_order_order_proto_msgTypes[9] + mi := &file_order_order_proto_msgTypes[10] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -637,7 +697,7 @@ func (x *IdAndTypeRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use IdAndTypeRequest.ProtoReflect.Descriptor instead. func (*IdAndTypeRequest) Descriptor() ([]byte, []int) { - return file_order_order_proto_rawDescGZIP(), []int{9} + return file_order_order_proto_rawDescGZIP(), []int{10} } func (x *IdAndTypeRequest) GetId() int64 { @@ -663,7 +723,7 @@ type TypeRequest struct { func (x *TypeRequest) Reset() { *x = TypeRequest{} - mi := &file_order_order_proto_msgTypes[10] + mi := &file_order_order_proto_msgTypes[11] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -675,7 +735,7 @@ func (x *TypeRequest) String() string { func (*TypeRequest) ProtoMessage() {} func (x *TypeRequest) ProtoReflect() protoreflect.Message { - mi := &file_order_order_proto_msgTypes[10] + mi := &file_order_order_proto_msgTypes[11] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -688,7 +748,7 @@ func (x *TypeRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use TypeRequest.ProtoReflect.Descriptor instead. func (*TypeRequest) Descriptor() ([]byte, []int) { - return file_order_order_proto_rawDescGZIP(), []int{10} + return file_order_order_proto_rawDescGZIP(), []int{11} } func (x *TypeRequest) GetType() int32 { @@ -714,7 +774,7 @@ type AddressItemsRequest struct { func (x *AddressItemsRequest) Reset() { *x = AddressItemsRequest{} - mi := &file_order_order_proto_msgTypes[11] + mi := &file_order_order_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -726,7 +786,7 @@ func (x *AddressItemsRequest) String() string { func (*AddressItemsRequest) ProtoMessage() {} func (x *AddressItemsRequest) ProtoReflect() protoreflect.Message { - mi := &file_order_order_proto_msgTypes[11] + mi := &file_order_order_proto_msgTypes[12] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -739,7 +799,7 @@ func (x *AddressItemsRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use AddressItemsRequest.ProtoReflect.Descriptor instead. func (*AddressItemsRequest) Descriptor() ([]byte, []int) { - return file_order_order_proto_rawDescGZIP(), []int{11} + return file_order_order_proto_rawDescGZIP(), []int{12} } func (x *AddressItemsRequest) GetPage() int32 { @@ -807,7 +867,7 @@ type AddressByStoreItemsRequest struct { func (x *AddressByStoreItemsRequest) Reset() { *x = AddressByStoreItemsRequest{} - mi := &file_order_order_proto_msgTypes[12] + mi := &file_order_order_proto_msgTypes[13] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -819,7 +879,7 @@ func (x *AddressByStoreItemsRequest) String() string { func (*AddressByStoreItemsRequest) ProtoMessage() {} func (x *AddressByStoreItemsRequest) ProtoReflect() protoreflect.Message { - mi := &file_order_order_proto_msgTypes[12] + mi := &file_order_order_proto_msgTypes[13] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -832,7 +892,7 @@ func (x *AddressByStoreItemsRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use AddressByStoreItemsRequest.ProtoReflect.Descriptor instead. func (*AddressByStoreItemsRequest) Descriptor() ([]byte, []int) { - return file_order_order_proto_rawDescGZIP(), []int{12} + return file_order_order_proto_rawDescGZIP(), []int{13} } func (x *AddressByStoreItemsRequest) GetStoreId() int64 { @@ -854,7 +914,7 @@ type OrderAuditingItemsRequest struct { func (x *OrderAuditingItemsRequest) Reset() { *x = OrderAuditingItemsRequest{} - mi := &file_order_order_proto_msgTypes[13] + mi := &file_order_order_proto_msgTypes[14] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -866,7 +926,7 @@ func (x *OrderAuditingItemsRequest) String() string { func (*OrderAuditingItemsRequest) ProtoMessage() {} func (x *OrderAuditingItemsRequest) ProtoReflect() protoreflect.Message { - mi := &file_order_order_proto_msgTypes[13] + mi := &file_order_order_proto_msgTypes[14] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -879,7 +939,7 @@ func (x *OrderAuditingItemsRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use OrderAuditingItemsRequest.ProtoReflect.Descriptor instead. func (*OrderAuditingItemsRequest) Descriptor() ([]byte, []int) { - return file_order_order_proto_rawDescGZIP(), []int{13} + return file_order_order_proto_rawDescGZIP(), []int{14} } func (x *OrderAuditingItemsRequest) GetPage() int32 { @@ -921,7 +981,7 @@ type OrderAuditingRequest struct { func (x *OrderAuditingRequest) Reset() { *x = OrderAuditingRequest{} - mi := &file_order_order_proto_msgTypes[14] + mi := &file_order_order_proto_msgTypes[15] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -933,7 +993,7 @@ func (x *OrderAuditingRequest) String() string { func (*OrderAuditingRequest) ProtoMessage() {} func (x *OrderAuditingRequest) ProtoReflect() protoreflect.Message { - mi := &file_order_order_proto_msgTypes[14] + mi := &file_order_order_proto_msgTypes[15] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -946,7 +1006,7 @@ func (x *OrderAuditingRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use OrderAuditingRequest.ProtoReflect.Descriptor instead. func (*OrderAuditingRequest) Descriptor() ([]byte, []int) { - return file_order_order_proto_rawDescGZIP(), []int{14} + return file_order_order_proto_rawDescGZIP(), []int{15} } func (x *OrderAuditingRequest) GetId() int64 { @@ -982,7 +1042,7 @@ type AdminCreateOrderRequest struct { func (x *AdminCreateOrderRequest) Reset() { *x = AdminCreateOrderRequest{} - mi := &file_order_order_proto_msgTypes[15] + mi := &file_order_order_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -994,7 +1054,7 @@ func (x *AdminCreateOrderRequest) String() string { func (*AdminCreateOrderRequest) ProtoMessage() {} func (x *AdminCreateOrderRequest) ProtoReflect() protoreflect.Message { - mi := &file_order_order_proto_msgTypes[15] + mi := &file_order_order_proto_msgTypes[16] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1007,7 +1067,7 @@ func (x *AdminCreateOrderRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use AdminCreateOrderRequest.ProtoReflect.Descriptor instead. func (*AdminCreateOrderRequest) Descriptor() ([]byte, []int) { - return file_order_order_proto_rawDescGZIP(), []int{15} + return file_order_order_proto_rawDescGZIP(), []int{16} } func (x *AdminCreateOrderRequest) GetAddressId() int64 { @@ -1049,7 +1109,7 @@ type UpdateOrderDeliverStatusRequest struct { func (x *UpdateOrderDeliverStatusRequest) Reset() { *x = UpdateOrderDeliverStatusRequest{} - mi := &file_order_order_proto_msgTypes[16] + mi := &file_order_order_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1061,7 +1121,7 @@ func (x *UpdateOrderDeliverStatusRequest) String() string { func (*UpdateOrderDeliverStatusRequest) ProtoMessage() {} func (x *UpdateOrderDeliverStatusRequest) ProtoReflect() protoreflect.Message { - mi := &file_order_order_proto_msgTypes[16] + mi := &file_order_order_proto_msgTypes[17] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1074,7 +1134,7 @@ func (x *UpdateOrderDeliverStatusRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateOrderDeliverStatusRequest.ProtoReflect.Descriptor instead. func (*UpdateOrderDeliverStatusRequest) Descriptor() ([]byte, []int) { - return file_order_order_proto_rawDescGZIP(), []int{16} + return file_order_order_proto_rawDescGZIP(), []int{17} } func (x *UpdateOrderDeliverStatusRequest) GetSignTime() string { @@ -1107,7 +1167,7 @@ type UpdateOrderDeliverStatusResponse struct { func (x *UpdateOrderDeliverStatusResponse) Reset() { *x = UpdateOrderDeliverStatusResponse{} - mi := &file_order_order_proto_msgTypes[17] + mi := &file_order_order_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1119,7 +1179,7 @@ func (x *UpdateOrderDeliverStatusResponse) String() string { func (*UpdateOrderDeliverStatusResponse) ProtoMessage() {} func (x *UpdateOrderDeliverStatusResponse) ProtoReflect() protoreflect.Message { - mi := &file_order_order_proto_msgTypes[17] + mi := &file_order_order_proto_msgTypes[18] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1132,7 +1192,7 @@ func (x *UpdateOrderDeliverStatusResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateOrderDeliverStatusResponse.ProtoReflect.Descriptor instead. func (*UpdateOrderDeliverStatusResponse) Descriptor() ([]byte, []int) { - return file_order_order_proto_rawDescGZIP(), []int{17} + return file_order_order_proto_rawDescGZIP(), []int{18} } func (x *UpdateOrderDeliverStatusResponse) GetNum() int32 { @@ -1153,7 +1213,7 @@ type GetOrderInfoRequest struct { func (x *GetOrderInfoRequest) Reset() { *x = GetOrderInfoRequest{} - mi := &file_order_order_proto_msgTypes[18] + mi := &file_order_order_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1165,7 +1225,7 @@ func (x *GetOrderInfoRequest) String() string { func (*GetOrderInfoRequest) ProtoMessage() {} func (x *GetOrderInfoRequest) ProtoReflect() protoreflect.Message { - mi := &file_order_order_proto_msgTypes[18] + mi := &file_order_order_proto_msgTypes[19] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1178,7 +1238,7 @@ func (x *GetOrderInfoRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetOrderInfoRequest.ProtoReflect.Descriptor instead. func (*GetOrderInfoRequest) Descriptor() ([]byte, []int) { - return file_order_order_proto_rawDescGZIP(), []int{18} + return file_order_order_proto_rawDescGZIP(), []int{19} } func (x *GetOrderInfoRequest) GetUserId() int64 { @@ -1236,7 +1296,7 @@ type OrderInfoResponse struct { func (x *OrderInfoResponse) Reset() { *x = OrderInfoResponse{} - mi := &file_order_order_proto_msgTypes[19] + mi := &file_order_order_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1248,7 +1308,7 @@ func (x *OrderInfoResponse) String() string { func (*OrderInfoResponse) ProtoMessage() {} func (x *OrderInfoResponse) ProtoReflect() protoreflect.Message { - mi := &file_order_order_proto_msgTypes[19] + mi := &file_order_order_proto_msgTypes[20] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1261,7 +1321,7 @@ func (x *OrderInfoResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use OrderInfoResponse.ProtoReflect.Descriptor instead. func (*OrderInfoResponse) Descriptor() ([]byte, []int) { - return file_order_order_proto_rawDescGZIP(), []int{19} + return file_order_order_proto_rawDescGZIP(), []int{20} } func (x *OrderInfoResponse) GetId() int64 { @@ -1465,7 +1525,11 @@ const file_order_order_proto_rawDesc = "" + "\bResponse\x12\x12\n" + "\x04code\x18\x01 \x01(\x05R\x04code\x12\x10\n" + "\x03msg\x18\x02 \x01(\tR\x03msg\x12\x12\n" + - "\x04data\x18\x03 \x01(\tR\x04data\"[\n" + + "\x04data\x18\x03 \x01(\tR\x04data\"O\n" + + "\x13ExcelExportResponse\x12\x12\n" + + "\x04data\x18\x01 \x01(\fR\x04data\x12\x12\n" + + "\x04name\x18\x02 \x01(\tR\x04name\x12\x10\n" + + "\x03msg\x18\x03 \x01(\tR\x03msg\"[\n" + "\x12CreateOrderRequest\x12\x1d\n" + "\n" + "address_id\x18\x01 \x01(\x03R\taddressId\x12\x12\n" + @@ -1571,7 +1635,7 @@ const file_order_order_proto_rawDesc = "" + "\rverify_status\x18\x18 \x01(\x05R\fverifyStatus\x12\x1f\n" + "\vcreate_type\x18\x19 \x01(\x05R\n" + "createType\x12#\n" + - "\rrefund_status\x18\x1a \x01(\x05R\frefundStatus2\xa7\r\n" + + "\rrefund_status\x18\x1a \x01(\x05R\frefundStatus2\x8b\x0e\n" + "\x05order\x12T\n" + "\x05Items\x12\x18.order.OrderItemsRequest\x1a\x0f.order.Response\" \x82\xd3\xe4\x93\x02\x1a:\x01*\x12\x15/admin/v3/order/items\x12X\n" + "\tWebCreate\x12\x19.order.CreateOrderRequest\x1a\x0f.order.Response\"\x1f\x82\xd3\xe4\x93\x02\x19:\x01*\"\x14/api/v3/order/create\x12b\n" + @@ -1588,7 +1652,8 @@ const file_order_order_proto_rawDesc = "" + "\x0eAddressByStore\x12!.order.AddressByStoreItemsRequest\x1a\x0f.order.Response\"(\x82\xd3\xe4\x93\x02\":\x01*\x12\x1d/admin/v3/address/store/items\x12r\n" + "\x12OrderAuditingItems\x12 .order.OrderAuditingItemsRequest\x1a\x0f.order.Response\")\x82\xd3\xe4\x93\x02#:\x01*\x12\x1e/admin/v3/order/auditing/items\x12b\n" + "\rOrderAuditing\x12\x1b.order.OrderAuditingRequest\x1a\x0f.order.Response\"#\x82\xd3\xe4\x93\x02\x1d:\x01*\"\x18/admin/v3/order/auditing\x12a\n" + - "\vOrderCreate\x12\x1e.order.AdminCreateOrderRequest\x1a\x0f.order.Response\"!\x82\xd3\xe4\x93\x02\x1b:\x01*\"\x16/admin/v3/order/create\x12k\n" + + "\vOrderCreate\x12\x1e.order.AdminCreateOrderRequest\x1a\x0f.order.Response\"!\x82\xd3\xe4\x93\x02\x1b:\x01*\"\x16/admin/v3/order/create\x12b\n" + + "\tOrderDown\x12\x18.order.OrderItemsRequest\x1a\x1a.order.ExcelExportResponse\"\x1f\x82\xd3\xe4\x93\x02\x19:\x01*\x12\x14/admin/v3/order/down\x12k\n" + "\x18UpdateOrderDeliverStatus\x12&.order.UpdateOrderDeliverStatusRequest\x1a'.order.UpdateOrderDeliverStatusResponse\x12D\n" + "\fGetOrderInfo\x12\x1a.order.GetOrderInfoRequest\x1a\x18.order.OrderInfoResponseB\x19Z\x17lone-services/rpc/orderb\x06proto3" @@ -1604,68 +1669,71 @@ func file_order_order_proto_rawDescGZIP() []byte { return file_order_order_proto_rawDescData } -var file_order_order_proto_msgTypes = make([]protoimpl.MessageInfo, 20) +var file_order_order_proto_msgTypes = make([]protoimpl.MessageInfo, 21) var file_order_order_proto_goTypes = []any{ (*OrderItemsRequest)(nil), // 0: order.OrderItemsRequest (*Response)(nil), // 1: order.Response - (*CreateOrderRequest)(nil), // 2: order.CreateOrderRequest - (*CreateOrderOneRequest)(nil), // 3: order.CreateOrderOneRequest - (*EditAddressRequest)(nil), // 4: order.EditAddressRequest - (*EmptyRequest)(nil), // 5: order.EmptyRequest - (*EditCartRequest)(nil), // 6: order.EditCartRequest - (*CartRequest)(nil), // 7: order.CartRequest - (*IdRequest)(nil), // 8: order.IdRequest - (*IdAndTypeRequest)(nil), // 9: order.IdAndTypeRequest - (*TypeRequest)(nil), // 10: order.TypeRequest - (*AddressItemsRequest)(nil), // 11: order.AddressItemsRequest - (*AddressByStoreItemsRequest)(nil), // 12: order.AddressByStoreItemsRequest - (*OrderAuditingItemsRequest)(nil), // 13: order.OrderAuditingItemsRequest - (*OrderAuditingRequest)(nil), // 14: order.OrderAuditingRequest - (*AdminCreateOrderRequest)(nil), // 15: order.AdminCreateOrderRequest - (*UpdateOrderDeliverStatusRequest)(nil), // 16: order.UpdateOrderDeliverStatusRequest - (*UpdateOrderDeliverStatusResponse)(nil), // 17: order.UpdateOrderDeliverStatusResponse - (*GetOrderInfoRequest)(nil), // 18: order.GetOrderInfoRequest - (*OrderInfoResponse)(nil), // 19: order.OrderInfoResponse + (*ExcelExportResponse)(nil), // 2: order.ExcelExportResponse + (*CreateOrderRequest)(nil), // 3: order.CreateOrderRequest + (*CreateOrderOneRequest)(nil), // 4: order.CreateOrderOneRequest + (*EditAddressRequest)(nil), // 5: order.EditAddressRequest + (*EmptyRequest)(nil), // 6: order.EmptyRequest + (*EditCartRequest)(nil), // 7: order.EditCartRequest + (*CartRequest)(nil), // 8: order.CartRequest + (*IdRequest)(nil), // 9: order.IdRequest + (*IdAndTypeRequest)(nil), // 10: order.IdAndTypeRequest + (*TypeRequest)(nil), // 11: order.TypeRequest + (*AddressItemsRequest)(nil), // 12: order.AddressItemsRequest + (*AddressByStoreItemsRequest)(nil), // 13: order.AddressByStoreItemsRequest + (*OrderAuditingItemsRequest)(nil), // 14: order.OrderAuditingItemsRequest + (*OrderAuditingRequest)(nil), // 15: order.OrderAuditingRequest + (*AdminCreateOrderRequest)(nil), // 16: order.AdminCreateOrderRequest + (*UpdateOrderDeliverStatusRequest)(nil), // 17: order.UpdateOrderDeliverStatusRequest + (*UpdateOrderDeliverStatusResponse)(nil), // 18: order.UpdateOrderDeliverStatusResponse + (*GetOrderInfoRequest)(nil), // 19: order.GetOrderInfoRequest + (*OrderInfoResponse)(nil), // 20: order.OrderInfoResponse } var file_order_order_proto_depIdxs = []int32{ 0, // 0: order.order.Items:input_type -> order.OrderItemsRequest - 2, // 1: order.order.WebCreate:input_type -> order.CreateOrderRequest - 3, // 2: order.order.WebCreateOne:input_type -> order.CreateOrderOneRequest - 4, // 3: order.order.WebAddressCreate:input_type -> order.EditAddressRequest - 4, // 4: order.order.WebAddressEdit:input_type -> order.EditAddressRequest - 9, // 5: order.order.WebAddressDel:input_type -> order.IdAndTypeRequest - 9, // 6: order.order.WebAddressDef:input_type -> order.IdAndTypeRequest - 9, // 7: order.order.WebAddressInfo:input_type -> order.IdAndTypeRequest - 10, // 8: order.order.WebAddressItems:input_type -> order.TypeRequest - 7, // 9: order.order.WebCart:input_type -> order.CartRequest - 6, // 10: order.order.WebCartEdit:input_type -> order.EditCartRequest - 11, // 11: order.order.AddressItem:input_type -> order.AddressItemsRequest - 12, // 12: order.order.AddressByStore:input_type -> order.AddressByStoreItemsRequest - 13, // 13: order.order.OrderAuditingItems:input_type -> order.OrderAuditingItemsRequest - 14, // 14: order.order.OrderAuditing:input_type -> order.OrderAuditingRequest - 15, // 15: order.order.OrderCreate:input_type -> order.AdminCreateOrderRequest - 16, // 16: order.order.UpdateOrderDeliverStatus:input_type -> order.UpdateOrderDeliverStatusRequest - 18, // 17: order.order.GetOrderInfo:input_type -> order.GetOrderInfoRequest - 1, // 18: order.order.Items:output_type -> order.Response - 1, // 19: order.order.WebCreate:output_type -> order.Response - 1, // 20: order.order.WebCreateOne:output_type -> order.Response - 1, // 21: order.order.WebAddressCreate:output_type -> order.Response - 1, // 22: order.order.WebAddressEdit:output_type -> order.Response - 1, // 23: order.order.WebAddressDel:output_type -> order.Response - 1, // 24: order.order.WebAddressDef:output_type -> order.Response - 1, // 25: order.order.WebAddressInfo:output_type -> order.Response - 1, // 26: order.order.WebAddressItems:output_type -> order.Response - 1, // 27: order.order.WebCart:output_type -> order.Response - 1, // 28: order.order.WebCartEdit:output_type -> order.Response - 1, // 29: order.order.AddressItem:output_type -> order.Response - 1, // 30: order.order.AddressByStore:output_type -> order.Response - 1, // 31: order.order.OrderAuditingItems:output_type -> order.Response - 1, // 32: order.order.OrderAuditing:output_type -> order.Response - 1, // 33: order.order.OrderCreate:output_type -> order.Response - 17, // 34: order.order.UpdateOrderDeliverStatus:output_type -> order.UpdateOrderDeliverStatusResponse - 19, // 35: order.order.GetOrderInfo:output_type -> order.OrderInfoResponse - 18, // [18:36] is the sub-list for method output_type - 0, // [0:18] is the sub-list for method input_type + 3, // 1: order.order.WebCreate:input_type -> order.CreateOrderRequest + 4, // 2: order.order.WebCreateOne:input_type -> order.CreateOrderOneRequest + 5, // 3: order.order.WebAddressCreate:input_type -> order.EditAddressRequest + 5, // 4: order.order.WebAddressEdit:input_type -> order.EditAddressRequest + 10, // 5: order.order.WebAddressDel:input_type -> order.IdAndTypeRequest + 10, // 6: order.order.WebAddressDef:input_type -> order.IdAndTypeRequest + 10, // 7: order.order.WebAddressInfo:input_type -> order.IdAndTypeRequest + 11, // 8: order.order.WebAddressItems:input_type -> order.TypeRequest + 8, // 9: order.order.WebCart:input_type -> order.CartRequest + 7, // 10: order.order.WebCartEdit:input_type -> order.EditCartRequest + 12, // 11: order.order.AddressItem:input_type -> order.AddressItemsRequest + 13, // 12: order.order.AddressByStore:input_type -> order.AddressByStoreItemsRequest + 14, // 13: order.order.OrderAuditingItems:input_type -> order.OrderAuditingItemsRequest + 15, // 14: order.order.OrderAuditing:input_type -> order.OrderAuditingRequest + 16, // 15: order.order.OrderCreate:input_type -> order.AdminCreateOrderRequest + 0, // 16: order.order.OrderDown:input_type -> order.OrderItemsRequest + 17, // 17: order.order.UpdateOrderDeliverStatus:input_type -> order.UpdateOrderDeliverStatusRequest + 19, // 18: order.order.GetOrderInfo:input_type -> order.GetOrderInfoRequest + 1, // 19: order.order.Items:output_type -> order.Response + 1, // 20: order.order.WebCreate:output_type -> order.Response + 1, // 21: order.order.WebCreateOne:output_type -> order.Response + 1, // 22: order.order.WebAddressCreate:output_type -> order.Response + 1, // 23: order.order.WebAddressEdit:output_type -> order.Response + 1, // 24: order.order.WebAddressDel:output_type -> order.Response + 1, // 25: order.order.WebAddressDef:output_type -> order.Response + 1, // 26: order.order.WebAddressInfo:output_type -> order.Response + 1, // 27: order.order.WebAddressItems:output_type -> order.Response + 1, // 28: order.order.WebCart:output_type -> order.Response + 1, // 29: order.order.WebCartEdit:output_type -> order.Response + 1, // 30: order.order.AddressItem:output_type -> order.Response + 1, // 31: order.order.AddressByStore:output_type -> order.Response + 1, // 32: order.order.OrderAuditingItems:output_type -> order.Response + 1, // 33: order.order.OrderAuditing:output_type -> order.Response + 1, // 34: order.order.OrderCreate:output_type -> order.Response + 2, // 35: order.order.OrderDown:output_type -> order.ExcelExportResponse + 18, // 36: order.order.UpdateOrderDeliverStatus:output_type -> order.UpdateOrderDeliverStatusResponse + 20, // 37: order.order.GetOrderInfo:output_type -> order.OrderInfoResponse + 19, // [19:38] is the sub-list for method output_type + 0, // [0:19] is the sub-list for method input_type 0, // [0:0] is the sub-list for extension type_name 0, // [0:0] is the sub-list for extension extendee 0, // [0:0] is the sub-list for field type_name @@ -1682,7 +1750,7 @@ func file_order_order_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: unsafe.Slice(unsafe.StringData(file_order_order_proto_rawDesc), len(file_order_order_proto_rawDesc)), NumEnums: 0, - NumMessages: 20, + NumMessages: 21, NumExtensions: 0, NumServices: 1, }, diff --git a/rpc/order/pb/order_grpc.pb.go b/rpc/order/pb/order_grpc.pb.go index 23b18f0..f598072 100644 --- a/rpc/order/pb/order_grpc.pb.go +++ b/rpc/order/pb/order_grpc.pb.go @@ -35,6 +35,7 @@ const ( Order_OrderAuditingItems_FullMethodName = "/order.order/OrderAuditingItems" Order_OrderAuditing_FullMethodName = "/order.order/OrderAuditing" Order_OrderCreate_FullMethodName = "/order.order/OrderCreate" + Order_OrderDown_FullMethodName = "/order.order/OrderDown" Order_UpdateOrderDeliverStatus_FullMethodName = "/order.order/UpdateOrderDeliverStatus" Order_GetOrderInfo_FullMethodName = "/order.order/GetOrderInfo" ) @@ -59,6 +60,7 @@ type OrderClient interface { OrderAuditingItems(ctx context.Context, in *OrderAuditingItemsRequest, opts ...grpc.CallOption) (*Response, error) OrderAuditing(ctx context.Context, in *OrderAuditingRequest, opts ...grpc.CallOption) (*Response, error) OrderCreate(ctx context.Context, in *AdminCreateOrderRequest, opts ...grpc.CallOption) (*Response, error) + OrderDown(ctx context.Context, in *OrderItemsRequest, opts ...grpc.CallOption) (*ExcelExportResponse, error) UpdateOrderDeliverStatus(ctx context.Context, in *UpdateOrderDeliverStatusRequest, opts ...grpc.CallOption) (*UpdateOrderDeliverStatusResponse, error) GetOrderInfo(ctx context.Context, in *GetOrderInfoRequest, opts ...grpc.CallOption) (*OrderInfoResponse, error) } @@ -231,6 +233,16 @@ func (c *orderClient) OrderCreate(ctx context.Context, in *AdminCreateOrderReque return out, nil } +func (c *orderClient) OrderDown(ctx context.Context, in *OrderItemsRequest, opts ...grpc.CallOption) (*ExcelExportResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(ExcelExportResponse) + err := c.cc.Invoke(ctx, Order_OrderDown_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + func (c *orderClient) UpdateOrderDeliverStatus(ctx context.Context, in *UpdateOrderDeliverStatusRequest, opts ...grpc.CallOption) (*UpdateOrderDeliverStatusResponse, error) { cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(UpdateOrderDeliverStatusResponse) @@ -271,6 +283,7 @@ type OrderServer interface { OrderAuditingItems(context.Context, *OrderAuditingItemsRequest) (*Response, error) OrderAuditing(context.Context, *OrderAuditingRequest) (*Response, error) OrderCreate(context.Context, *AdminCreateOrderRequest) (*Response, error) + OrderDown(context.Context, *OrderItemsRequest) (*ExcelExportResponse, error) UpdateOrderDeliverStatus(context.Context, *UpdateOrderDeliverStatusRequest) (*UpdateOrderDeliverStatusResponse, error) GetOrderInfo(context.Context, *GetOrderInfoRequest) (*OrderInfoResponse, error) mustEmbedUnimplementedOrderServer() @@ -331,6 +344,9 @@ func (UnimplementedOrderServer) OrderAuditing(context.Context, *OrderAuditingReq func (UnimplementedOrderServer) OrderCreate(context.Context, *AdminCreateOrderRequest) (*Response, error) { return nil, status.Error(codes.Unimplemented, "method OrderCreate not implemented") } +func (UnimplementedOrderServer) OrderDown(context.Context, *OrderItemsRequest) (*ExcelExportResponse, error) { + return nil, status.Error(codes.Unimplemented, "method OrderDown not implemented") +} func (UnimplementedOrderServer) UpdateOrderDeliverStatus(context.Context, *UpdateOrderDeliverStatusRequest) (*UpdateOrderDeliverStatusResponse, error) { return nil, status.Error(codes.Unimplemented, "method UpdateOrderDeliverStatus not implemented") } @@ -646,6 +662,24 @@ func _Order_OrderCreate_Handler(srv interface{}, ctx context.Context, dec func(i return interceptor(ctx, in, info, handler) } +func _Order_OrderDown_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(OrderItemsRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(OrderServer).OrderDown(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Order_OrderDown_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(OrderServer).OrderDown(ctx, req.(*OrderItemsRequest)) + } + return interceptor(ctx, in, info, handler) +} + func _Order_UpdateOrderDeliverStatus_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(UpdateOrderDeliverStatusRequest) if err := dec(in); err != nil { @@ -753,6 +787,10 @@ var Order_ServiceDesc = grpc.ServiceDesc{ MethodName: "OrderCreate", Handler: _Order_OrderCreate_Handler, }, + { + MethodName: "OrderDown", + Handler: _Order_OrderDown_Handler, + }, { MethodName: "UpdateOrderDeliverStatus", Handler: _Order_UpdateOrderDeliverStatus_Handler, diff --git a/services/admin/internal/logic/loginlogic.go b/services/admin/internal/logic/loginlogic.go index 56c4487..4b41d65 100644 --- a/services/admin/internal/logic/loginlogic.go +++ b/services/admin/internal/logic/loginlogic.go @@ -35,6 +35,7 @@ func NewLoginLogic(ctx context.Context, svcCtx *svc.ServiceContext) *LoginLogic func (l *LoginLogic) Login(in *admin.LoginRequest) (*admin.Response, error) { var v validator.LoginValidator + l.Logger.Error(in.Username, in.Password) if fail := l.checkParams(in, &v); fail != nil { return fail, nil } diff --git a/services/chore/chore.go b/services/chore/chore.go index d603e78..3240076 100644 --- a/services/chore/chore.go +++ b/services/chore/chore.go @@ -2,6 +2,7 @@ package main import ( "flag" + "lone-services/pkg/logRedis" "net" "os" "strconv" @@ -119,6 +120,16 @@ func main() { os.Exit(1) } + if err := logRedis.Init(logRedis.LogRedisConfig{ + Host: utils.GetConfigString("log-redis.host"), + Port: utils.GetConfigInt("log-redis.port"), + Password: utils.GetConfigString("log-redis.password"), + DB: utils.GetConfigInt("log-redis.db"), + }); err != nil { + logx.Errorf("log redis init: %v", err) + os.Exit(1) + } + debug := utils.GetConfigBool("mysql.debug") modelbase.Init(db, modelbase.Config{Prefix: utils.GetConfigString("mysql.prefix"), Debug: debug}) diff --git a/services/chore/choreclient/chore.go b/services/chore/choreclient/chore.go index b58fca8..0398727 100644 --- a/services/chore/choreclient/chore.go +++ b/services/chore/choreclient/chore.go @@ -1,5 +1,5 @@ // Code generated by goctl. DO NOT EDIT. -// goctl 1.10.1 +// goctl 1.10.2 // Source: chore.proto package choreClient @@ -15,12 +15,17 @@ import ( type ( DecryptMobileReq = chore.DecryptMobileReq + EditReq = chore.EditReq + EmptyReq = chore.EmptyReq + IdReq = chore.IdReq PolicyReq = chore.PolicyReq RegionItem = chore.RegionItem RegionsByIdsData = chore.RegionsByIdsData RegionsByIdsReq = chore.RegionsByIdsReq RegionsReq = chore.RegionsReq Response = chore.Response + StatusReq = chore.StatusReq + SystemEditReq = chore.SystemEditReq TestReq = chore.TestReq Chore interface { @@ -28,7 +33,16 @@ type ( Test(ctx context.Context, in *TestReq, opts ...grpc.CallOption) (*Response, error) DecryptMobile(ctx context.Context, in *DecryptMobileReq, opts ...grpc.CallOption) (*Response, error) Regions(ctx context.Context, in *RegionsReq, opts ...grpc.CallOption) (*Response, error) - // 服务间调用:按 id 批量查地区名称 + AnswerItems(ctx context.Context, in *EmptyReq, opts ...grpc.CallOption) (*Response, error) + AnswerStatus(ctx context.Context, in *StatusReq, opts ...grpc.CallOption) (*Response, error) + AnswerInfo(ctx context.Context, in *IdReq, opts ...grpc.CallOption) (*Response, error) + AnswerCreate(ctx context.Context, in *EditReq, opts ...grpc.CallOption) (*Response, error) + AnswerEdit(ctx context.Context, in *EditReq, opts ...grpc.CallOption) (*Response, error) + SystemEdit(ctx context.Context, in *SystemEditReq, opts ...grpc.CallOption) (*Response, error) + SystemStatus(ctx context.Context, in *StatusReq, opts ...grpc.CallOption) (*Response, error) + SystemInfo(ctx context.Context, in *IdReq, opts ...grpc.CallOption) (*Response, error) + SystemItems(ctx context.Context, in *EmptyReq, opts ...grpc.CallOption) (*Response, error) + // 按 id 批量查地区名称 RegionsByIds(ctx context.Context, in *RegionsByIdsReq, opts ...grpc.CallOption) (*RegionsByIdsData, error) } @@ -63,7 +77,52 @@ func (m *defaultChore) Regions(ctx context.Context, in *RegionsReq, opts ...grpc return client.Regions(ctx, in, opts...) } -// 服务间调用:按 id 批量查地区名称 +func (m *defaultChore) AnswerItems(ctx context.Context, in *EmptyReq, opts ...grpc.CallOption) (*Response, error) { + client := chore.NewChoreClient(m.cli.Conn()) + return client.AnswerItems(ctx, in, opts...) +} + +func (m *defaultChore) AnswerStatus(ctx context.Context, in *StatusReq, opts ...grpc.CallOption) (*Response, error) { + client := chore.NewChoreClient(m.cli.Conn()) + return client.AnswerStatus(ctx, in, opts...) +} + +func (m *defaultChore) AnswerInfo(ctx context.Context, in *IdReq, opts ...grpc.CallOption) (*Response, error) { + client := chore.NewChoreClient(m.cli.Conn()) + return client.AnswerInfo(ctx, in, opts...) +} + +func (m *defaultChore) AnswerCreate(ctx context.Context, in *EditReq, opts ...grpc.CallOption) (*Response, error) { + client := chore.NewChoreClient(m.cli.Conn()) + return client.AnswerCreate(ctx, in, opts...) +} + +func (m *defaultChore) AnswerEdit(ctx context.Context, in *EditReq, opts ...grpc.CallOption) (*Response, error) { + client := chore.NewChoreClient(m.cli.Conn()) + return client.AnswerEdit(ctx, in, opts...) +} + +func (m *defaultChore) SystemEdit(ctx context.Context, in *SystemEditReq, opts ...grpc.CallOption) (*Response, error) { + client := chore.NewChoreClient(m.cli.Conn()) + return client.SystemEdit(ctx, in, opts...) +} + +func (m *defaultChore) SystemStatus(ctx context.Context, in *StatusReq, opts ...grpc.CallOption) (*Response, error) { + client := chore.NewChoreClient(m.cli.Conn()) + return client.SystemStatus(ctx, in, opts...) +} + +func (m *defaultChore) SystemInfo(ctx context.Context, in *IdReq, opts ...grpc.CallOption) (*Response, error) { + client := chore.NewChoreClient(m.cli.Conn()) + return client.SystemInfo(ctx, in, opts...) +} + +func (m *defaultChore) SystemItems(ctx context.Context, in *EmptyReq, opts ...grpc.CallOption) (*Response, error) { + client := chore.NewChoreClient(m.cli.Conn()) + return client.SystemItems(ctx, in, opts...) +} + +// 按 id 批量查地区名称 func (m *defaultChore) RegionsByIds(ctx context.Context, in *RegionsByIdsReq, opts ...grpc.CallOption) (*RegionsByIdsData, error) { client := chore.NewChoreClient(m.cli.Conn()) return client.RegionsByIds(ctx, in, opts...) diff --git a/services/chore/internal/dao/answer.go b/services/chore/internal/dao/answer.go new file mode 100644 index 0000000..f86b908 --- /dev/null +++ b/services/chore/internal/dao/answer.go @@ -0,0 +1,28 @@ +package dao + +type AnswerCreate struct { + Id int64 `gorm:"column:id;type:int(11);primary_key;AUTO_INCREMENT;comment:ID" json:"id"` + Question string `gorm:"column:question;type:text;comment:问题;NOT NULL" json:"question"` + Explain string `gorm:"column:explain;type:text;comment:说明;NOT NULL" json:"explain"` + Right string `gorm:"column:right;type:varchar(10);comment:正确答案;NOT NULL" json:"right"` + Answers string `gorm:"column:answers;type:text;comment:选择答案;NOT NULL" json:"answers"` + AdminId int64 `gorm:"column:admin_id;type:int(11)" json:"admin_id"` + AdminName string `gorm:"column:admin_name;type:varchar(255)" json:"admin_name"` +} + +type AnswerInfo struct { + Id int64 `gorm:"column:id;type:int(11);primary_key;AUTO_INCREMENT;comment:ID" json:"id"` + Question string `gorm:"column:question;type:text;comment:问题;NOT NULL" json:"question"` + Explain string `gorm:"column:explain;type:text;comment:说明;NOT NULL" json:"explain"` + Status int32 `gorm:"column:status;type:tinyint(1);default:1;comment:状态,1为正常,2为禁用;NOT NULL" json:"status"` + Right string `gorm:"column:right;type:varchar(10);comment:正确答案;NOT NULL" json:"right"` + Answers string `gorm:"column:answers;type:text;comment:选择答案;NOT NULL" json:"answers"` +} + +type AnswerStatus struct { + Id int64 `gorm:"column:id;type:int(11);primary_key;AUTO_INCREMENT;comment:ID" json:"id"` + Reason string `gorm:"column:reason;type:varchar(255);comment:禁用原因" json:"reason"` + Status int32 `gorm:"column:status;type:tinyint(1);default:1;comment:状态,1为正常,2为禁用;NOT NULL" json:"status"` + AdminId int64 `gorm:"column:admin_id;type:int(11)" json:"admin_id"` + AdminName string `gorm:"column:admin_name;type:varchar(255)" json:"admin_name"` +} diff --git a/services/chore/internal/dao/system.go b/services/chore/internal/dao/system.go new file mode 100644 index 0000000..435f1ec --- /dev/null +++ b/services/chore/internal/dao/system.go @@ -0,0 +1,18 @@ +package dao + +type System struct { + Id int64 `gorm:"column:id;type:int(11);primary_key;AUTO_INCREMENT" json:"id"` + Type int32 `gorm:"column:type;type:tinyint(1);default:0;NOT NULL" json:"type"` + Status int32 `gorm:"column:status;type:tinyint(1);default:0;NOT NULL" json:"status"` + Content string `gorm:"column:content;type:text;default:'';NOT NULL" json:"content"` + AdminId int64 `gorm:"column:admin_id;type:int(11);default:0;NOT NULL" json:"admin_id"` + AdminName string `gorm:"column:admin_name;type:varchar(32);default:'';NOT NULL" json:"admin_name"` +} + +type SystemStatus struct { + Id int64 `gorm:"column:id;type:int(11);primary_key;AUTO_INCREMENT;comment:ID" json:"id"` + Reason string `gorm:"column:reason;type:varchar(255);comment:禁用原因" json:"reason"` + Status int32 `gorm:"column:status;type:tinyint(1);default:1;comment:状态,1为正常,2为禁用;NOT NULL" json:"status"` + AdminId int64 `gorm:"column:admin_id;type:int(11)" json:"admin_id"` + AdminName string `gorm:"column:admin_name;type:varchar(255)" json:"admin_name"` +} diff --git a/services/chore/internal/logic/answerCreateLogic.go b/services/chore/internal/logic/answerCreateLogic.go new file mode 100644 index 0000000..eed9cab --- /dev/null +++ b/services/chore/internal/logic/answerCreateLogic.go @@ -0,0 +1,63 @@ +package logic + +import ( + "context" + "lone-services/pkg/utils" + "lone-services/rpc/chore/pb" + "lone-services/services/chore/internal/dao" + "lone-services/services/chore/internal/model" + "lone-services/services/chore/internal/svc" + "lone-services/services/chore/validator" + + "github.com/zeromicro/go-zero/core/logx" +) + +type AnswerCreateLogic struct { + ctx context.Context + svcCtx *svc.ServiceContext + logx.Logger + BaseLogic +} + +func NewAnswerCreateLogic(ctx context.Context, svcCtx *svc.ServiceContext) *AnswerCreateLogic { + return &AnswerCreateLogic{ + ctx: ctx, + svcCtx: svcCtx, + Logger: logx.WithContext(ctx), + } +} + +func (l *AnswerCreateLogic) AnswerCreate(in *chore.EditReq) (*chore.Response, error) { + var v validator.AnswerCreateValidator + if fail := l.checkParams(in, &v); fail != nil { + return fail, nil + } + adminInfo := utils.GetUserFromCtx(l.ctx) + if adminInfo.ID < utils.NumberOne { + return l.fail(utils.ErrorNoLoginInfo) + } + + info := dao.AnswerCreate{ + Question: in.Question, + Explain: in.Explain, + Right: in.Right, + Answers: in.Answers, + AdminId: adminInfo.ID, + AdminName: adminInfo.Name, + } + + err := model.AnswerModel{}.Init().Create(&info) + if err != nil { + l.Logger.Error(err) + return l.fail(utils.Fail) + } + + action := utils.ActionAdd{ + Type: utils.LogActionTypeAdd, + ModuleName: utils.LogActionModuleAnswer, + NewContent: info, + } + utils.SetActionLog(adminInfo, action) + + return l.ok(info.Id) +} diff --git a/services/chore/internal/logic/answerEditLogic.go b/services/chore/internal/logic/answerEditLogic.go new file mode 100644 index 0000000..2ab2fd0 --- /dev/null +++ b/services/chore/internal/logic/answerEditLogic.go @@ -0,0 +1,77 @@ +package logic + +import ( + "context" + "lone-services/pkg/modelbase" + "lone-services/pkg/utils" + "lone-services/services/chore/internal/dao" + "lone-services/services/chore/internal/model" + "lone-services/services/chore/validator" + "strconv" + + "lone-services/rpc/chore/pb" + "lone-services/services/chore/internal/svc" + + "github.com/zeromicro/go-zero/core/logx" +) + +type AnswerEditLogic struct { + ctx context.Context + svcCtx *svc.ServiceContext + logx.Logger + BaseLogic +} + +func NewAnswerEditLogic(ctx context.Context, svcCtx *svc.ServiceContext) *AnswerEditLogic { + return &AnswerEditLogic{ + ctx: ctx, + svcCtx: svcCtx, + Logger: logx.WithContext(ctx), + } +} + +func (l *AnswerEditLogic) AnswerEdit(in *chore.EditReq) (*chore.Response, error) { + var v validator.AnswerEditValidator + if fail := l.checkParams(in, &v); fail != nil { + return fail, nil + } + adminInfo := utils.GetUserFromCtx(l.ctx) + if adminInfo.ID < utils.NumberOne { + return l.fail(utils.ErrorNoLoginInfo) + } + + var info dao.AnswerCreate + w := modelbase.Params{Eq: map[string]string{"id": strconv.Itoa(int(in.Id))}} + err := model.AnswerModel{}.Init().GetOne(w, &info) + if err != nil { + return l.fail(utils.ErrorNotFund) + } + if info.Id < utils.NumberOne { + return l.fail(utils.ErrorNotFund) + } + action := utils.ActionAdd{ + OldContent: info, + Type: utils.LogActionTypeEdit, + ModuleName: utils.LogActionModuleAnswer, + } + + info.AdminId = adminInfo.ID + info.AdminName = adminInfo.Name + info.Answers = in.Answers + info.Explain = in.Explain + info.Question = in.Question + info.Right = in.Right + + row, err := model.AnswerModel{}.Init().Edit(w, &info) + if err != nil { + l.Logger.Error(err) + return l.fail(utils.Fail) + } + + if row > utils.NumberZero { + action.NewContent = info + utils.SetActionLog(adminInfo, action) + } + + return l.ok(info.Id) +} diff --git a/services/chore/internal/logic/answerInfoLogic.go b/services/chore/internal/logic/answerInfoLogic.go new file mode 100644 index 0000000..3a07b30 --- /dev/null +++ b/services/chore/internal/logic/answerInfoLogic.go @@ -0,0 +1,53 @@ +package logic + +import ( + "context" + "lone-services/pkg/modelbase" + "lone-services/pkg/utils" + "lone-services/pkg/validate" + "lone-services/services/chore/internal/dao" + "lone-services/services/chore/internal/model" + "strconv" + + "lone-services/rpc/chore/pb" + "lone-services/services/chore/internal/svc" + + "github.com/zeromicro/go-zero/core/logx" +) + +type AnswerInfoLogic struct { + ctx context.Context + svcCtx *svc.ServiceContext + logx.Logger + BaseLogic +} + +func NewAnswerInfoLogic(ctx context.Context, svcCtx *svc.ServiceContext) *AnswerInfoLogic { + return &AnswerInfoLogic{ + ctx: ctx, + svcCtx: svcCtx, + Logger: logx.WithContext(ctx), + } +} + +func (l *AnswerInfoLogic) AnswerInfo(in *chore.IdReq) (*chore.Response, error) { + var v validate.InfoValidator + if fail := l.checkParams(in, &v); fail != nil { + return fail, nil + } + adminInfo := utils.GetUserFromCtx(l.ctx) + if adminInfo.ID < utils.NumberOne { + return l.fail(utils.ErrorNoLoginInfo) + } + var info dao.AnswerInfo + modelObj := model.AnswerModel{}.Init() + w := modelbase.Params{Eq: map[string]string{"id": strconv.Itoa(int(in.Id))}} + err := modelObj.GetOne(w, &info) + if err != nil { + return l.fail(utils.ErrorNotFund) + } + if info.Id < utils.NumberOne { + return l.fail(utils.ErrorNotFund) + } + return l.ok(info) +} diff --git a/services/chore/internal/logic/answerItemsLogic.go b/services/chore/internal/logic/answerItemsLogic.go new file mode 100644 index 0000000..870e08f --- /dev/null +++ b/services/chore/internal/logic/answerItemsLogic.go @@ -0,0 +1,38 @@ +package logic + +import ( + "context" + "lone-services/pkg/modelbase" + "lone-services/services/chore/internal/dao" + "lone-services/services/chore/internal/model" + + "lone-services/rpc/chore/pb" + "lone-services/services/chore/internal/svc" + + "github.com/zeromicro/go-zero/core/logx" +) + +type AnswerItemsLogic struct { + ctx context.Context + svcCtx *svc.ServiceContext + logx.Logger + BaseLogic +} + +func NewAnswerItemsLogic(ctx context.Context, svcCtx *svc.ServiceContext) *AnswerItemsLogic { + return &AnswerItemsLogic{ + ctx: ctx, + svcCtx: svcCtx, + Logger: logx.WithContext(ctx), + } +} + +func (l *AnswerItemsLogic) AnswerItems(in *chore.EmptyReq) (*chore.Response, error) { + modelObj := model.AnswerModel{}.Init() + w := modelbase.Params{} + + var data []dao.AnswerInfo + modelObj.Items(w, &data) + + return l.ok(data) +} diff --git a/services/chore/internal/logic/answerStatusLogic.go b/services/chore/internal/logic/answerStatusLogic.go new file mode 100644 index 0000000..1c737fe --- /dev/null +++ b/services/chore/internal/logic/answerStatusLogic.go @@ -0,0 +1,72 @@ +package logic + +import ( + "context" + "lone-services/pkg/modelbase" + "lone-services/pkg/utils" + "lone-services/pkg/validate" + "lone-services/services/chore/internal/dao" + "lone-services/services/chore/internal/model" + "strconv" + + "lone-services/rpc/chore/pb" + "lone-services/services/chore/internal/svc" + + "github.com/zeromicro/go-zero/core/logx" +) + +type AnswerStatusLogic struct { + ctx context.Context + svcCtx *svc.ServiceContext + logx.Logger + BaseLogic +} + +func NewAnswerStatusLogic(ctx context.Context, svcCtx *svc.ServiceContext) *AnswerStatusLogic { + return &AnswerStatusLogic{ + ctx: ctx, + svcCtx: svcCtx, + Logger: logx.WithContext(ctx), + } +} + +func (l *AnswerStatusLogic) AnswerStatus(in *chore.StatusReq) (*chore.Response, error) { + var v validate.StatusValidator + if fail := l.checkParams(in, &v); fail != nil { + return fail, nil + } + adminInfo := utils.GetUserFromCtx(l.ctx) + if adminInfo.ID < utils.NumberOne { + return l.fail(utils.ErrorNoLoginInfo) + } + var action = utils.ActionAdd{} + var info dao.AnswerStatus + w := modelbase.Params{Eq: map[string]string{"id": strconv.Itoa(int(in.Id))}} + modelObj := model.AnswerModel{}.Init() + err := modelObj.GetOne(w, &info) + if err != nil { + l.Logger.Error(err) + return l.fail(utils.Fail) + } + if info.Id < utils.NumberOne { + return l.fail(utils.ErrorNotFund) + } + action.OldContent = info + info.Status = in.Status + info.Reason = in.Reason + info.AdminName = adminInfo.Name + info.AdminId = adminInfo.ID + row, editErr := modelObj.Edit(w, info) + if editErr != nil { + l.Logger.Error(editErr) + return l.fail(utils.Fail) + } + if row > utils.NumberZero { + action.NewContent = info + action.Reason = in.Reason + action.Type = utils.LogActionTypeStatus + action.ModuleName = utils.LogActionModuleAnswer + utils.SetActionLog(adminInfo, action) + } + return l.ok(utils.NumberOne) +} diff --git a/services/chore/internal/logic/base.go b/services/chore/internal/logic/base.go new file mode 100644 index 0000000..b98d30e --- /dev/null +++ b/services/chore/internal/logic/base.go @@ -0,0 +1,44 @@ +package logic + +import ( + "lone-services/pkg/utils" + "lone-services/pkg/validate" + chore "lone-services/rpc/chore/pb" + "reflect" + + jsoniter "github.com/json-iterator/go" +) + +type BaseLogic struct { +} + +func (l *BaseLogic) checkParams(in interface{}, v validate.IValidator) *chore.Response { + rv := reflect.ValueOf(in) + if rv.Kind() != reflect.Ptr || rv.IsNil() { + return &chore.Response{ + Code: utils.ErrorParams.Code, + Msg: "request must be non‑nil proto pointer", + } + } + + resp := validate.ValidateFromProto(in, v) + if resp != utils.StringEmpty { + return &chore.Response{ + Code: utils.ErrorParams.Code, + Msg: resp, + } + } + return nil +} + +func (l *BaseLogic) fail(status utils.Status) (*chore.Response, error) { + return l.out(status, status.Msg) +} +func (l *BaseLogic) out(status utils.Status, msg string) (*chore.Response, error) { + return &chore.Response{Code: status.Code, Msg: msg}, nil +} + +func (l *BaseLogic) ok(data any) (*chore.Response, error) { + buf, _ := jsoniter.Marshal(data) + return &chore.Response{Code: utils.Ok.Code, Msg: utils.Ok.Msg, Data: string(buf)}, nil +} diff --git a/services/chore/internal/logic/systemEditLogic.go b/services/chore/internal/logic/systemEditLogic.go new file mode 100644 index 0000000..c209089 --- /dev/null +++ b/services/chore/internal/logic/systemEditLogic.go @@ -0,0 +1,76 @@ +package logic + +import ( + "context" + "lone-services/pkg/modelbase" + "lone-services/pkg/utils" + "lone-services/services/chore/internal/dao" + "lone-services/services/chore/internal/model" + "lone-services/services/chore/validator" + "strconv" + + "lone-services/rpc/chore/pb" + "lone-services/services/chore/internal/svc" + + "github.com/zeromicro/go-zero/core/logx" +) + +type SystemEditLogic struct { + ctx context.Context + svcCtx *svc.ServiceContext + logx.Logger + BaseLogic +} + +func NewSystemEditLogic(ctx context.Context, svcCtx *svc.ServiceContext) *SystemEditLogic { + return &SystemEditLogic{ + ctx: ctx, + svcCtx: svcCtx, + Logger: logx.WithContext(ctx), + } +} + +func (l *SystemEditLogic) SystemEdit(in *chore.SystemEditReq) (*chore.Response, error) { + var v validator.SystemEditValidator + if fail := l.checkParams(in, &v); fail != nil { + return fail, nil + } + adminInfo := utils.GetUserFromCtx(l.ctx) + if adminInfo.ID < utils.NumberOne { + return l.fail(utils.ErrorNoLoginInfo) + } + + var info dao.System + w := modelbase.Params{Eq: map[string]string{"id": strconv.Itoa(int(v.Type))}} + err := model.SystemModel{}.Init().GetOne(w, &info) + if err != nil { + return l.fail(utils.ErrorNotFund) + } + if info.Id < utils.NumberOne { + return l.fail(utils.ErrorNotFund) + } + action := utils.ActionAdd{ + OldContent: info, + Type: utils.LogActionTypeEdit, + ModuleName: utils.LogActionModuleSystem, + } + + info.AdminId = adminInfo.ID + info.AdminName = adminInfo.Name + + info.Type = in.Type + info.Content = in.Content + + row, err := model.SystemModel{}.Init().Edit(w, &info) + if err != nil { + l.Logger.Error(err) + return l.fail(utils.Fail) + } + + if row > utils.NumberZero { + action.NewContent = info + utils.SetActionLog(adminInfo, action) + } + + return l.ok(info.Id) +} diff --git a/services/chore/internal/logic/systemInfoLogic.go b/services/chore/internal/logic/systemInfoLogic.go new file mode 100644 index 0000000..47f81fe --- /dev/null +++ b/services/chore/internal/logic/systemInfoLogic.go @@ -0,0 +1,53 @@ +package logic + +import ( + "context" + "lone-services/pkg/modelbase" + "lone-services/pkg/utils" + "lone-services/pkg/validate" + "lone-services/services/chore/internal/dao" + "lone-services/services/chore/internal/model" + "strconv" + + "lone-services/rpc/chore/pb" + "lone-services/services/chore/internal/svc" + + "github.com/zeromicro/go-zero/core/logx" +) + +type SystemInfoLogic struct { + ctx context.Context + svcCtx *svc.ServiceContext + logx.Logger + BaseLogic +} + +func NewSystemInfoLogic(ctx context.Context, svcCtx *svc.ServiceContext) *SystemInfoLogic { + return &SystemInfoLogic{ + ctx: ctx, + svcCtx: svcCtx, + Logger: logx.WithContext(ctx), + } +} + +func (l *SystemInfoLogic) SystemInfo(in *chore.IdReq) (*chore.Response, error) { + var v validate.InfoValidator + if fail := l.checkParams(in, &v); fail != nil { + return fail, nil + } + adminInfo := utils.GetUserFromCtx(l.ctx) + if adminInfo.ID < utils.NumberOne { + return l.fail(utils.ErrorNoLoginInfo) + } + var info dao.System + modelObj := model.SystemModel{}.Init() + w := modelbase.Params{Eq: map[string]string{"id": strconv.Itoa(int(in.Id))}} + err := modelObj.GetOne(w, &info) + if err != nil { + return l.fail(utils.ErrorNotFund) + } + if info.Id < utils.NumberOne { + return l.fail(utils.ErrorNotFund) + } + return l.ok(info) +} diff --git a/services/chore/internal/logic/systemItemsLogic.go b/services/chore/internal/logic/systemItemsLogic.go new file mode 100644 index 0000000..d8e5c97 --- /dev/null +++ b/services/chore/internal/logic/systemItemsLogic.go @@ -0,0 +1,38 @@ +package logic + +import ( + "context" + "lone-services/pkg/modelbase" + "lone-services/services/chore/internal/dao" + "lone-services/services/chore/internal/model" + + "lone-services/rpc/chore/pb" + "lone-services/services/chore/internal/svc" + + "github.com/zeromicro/go-zero/core/logx" +) + +type SystemItemsLogic struct { + ctx context.Context + svcCtx *svc.ServiceContext + logx.Logger + BaseLogic +} + +func NewSystemItemsLogic(ctx context.Context, svcCtx *svc.ServiceContext) *SystemItemsLogic { + return &SystemItemsLogic{ + ctx: ctx, + svcCtx: svcCtx, + Logger: logx.WithContext(ctx), + } +} + +func (l *SystemItemsLogic) SystemItems(in *chore.EmptyReq) (*chore.Response, error) { + modelObj := model.SystemModel{}.Init() + w := modelbase.Params{} + + var data []dao.System + modelObj.Items(w, &data) + + return l.ok(data) +} diff --git a/services/chore/internal/logic/systemStatusLogic.go b/services/chore/internal/logic/systemStatusLogic.go new file mode 100644 index 0000000..9e95cd9 --- /dev/null +++ b/services/chore/internal/logic/systemStatusLogic.go @@ -0,0 +1,72 @@ +package logic + +import ( + "context" + "lone-services/pkg/modelbase" + "lone-services/pkg/utils" + "lone-services/pkg/validate" + "lone-services/services/chore/internal/dao" + "lone-services/services/chore/internal/model" + "strconv" + + "lone-services/rpc/chore/pb" + "lone-services/services/chore/internal/svc" + + "github.com/zeromicro/go-zero/core/logx" +) + +type SystemStatusLogic struct { + ctx context.Context + svcCtx *svc.ServiceContext + logx.Logger + BaseLogic +} + +func NewSystemStatusLogic(ctx context.Context, svcCtx *svc.ServiceContext) *SystemStatusLogic { + return &SystemStatusLogic{ + ctx: ctx, + svcCtx: svcCtx, + Logger: logx.WithContext(ctx), + } +} + +func (l *SystemStatusLogic) SystemStatus(in *chore.StatusReq) (*chore.Response, error) { + var v validate.StatusValidator + if fail := l.checkParams(in, &v); fail != nil { + return fail, nil + } + adminInfo := utils.GetUserFromCtx(l.ctx) + if adminInfo.ID < utils.NumberOne { + return l.fail(utils.ErrorNoLoginInfo) + } + var action = utils.ActionAdd{} + var info dao.SystemStatus + w := modelbase.Params{Eq: map[string]string{"id": strconv.Itoa(int(in.Id))}} + modelObj := model.SystemModel{}.Init() + err := modelObj.GetOne(w, &info) + if err != nil { + l.Logger.Error(err) + return l.fail(utils.Fail) + } + if info.Id < utils.NumberOne { + return l.fail(utils.ErrorNotFund) + } + action.OldContent = info + info.Status = in.Status + info.Reason = in.Reason + info.AdminName = adminInfo.Name + info.AdminId = adminInfo.ID + row, editErr := modelObj.Edit(w, info) + if editErr != nil { + l.Logger.Error(editErr) + return l.fail(utils.Fail) + } + if row > utils.NumberZero { + action.NewContent = info + action.Reason = in.Reason + action.Type = utils.LogActionTypeStatus + action.ModuleName = utils.LogActionModuleSystem + utils.SetActionLog(adminInfo, action) + } + return l.ok(utils.NumberOne) +} diff --git a/services/chore/internal/model/answer.go b/services/chore/internal/model/answer.go new file mode 100644 index 0000000..5d1c904 --- /dev/null +++ b/services/chore/internal/model/answer.go @@ -0,0 +1,18 @@ +package model + +import ( + "lone-services/pkg/modelbase" +) + +type AnswerModel struct { + modelbase.Base +} + +func (m AnswerModel) TableName() string { + return modelbase.Prefix() + "answer" +} + +func (m AnswerModel) Init() AnswerModel { + m.Table = m.TableName() + return m +} diff --git a/services/chore/internal/model/system.go b/services/chore/internal/model/system.go new file mode 100644 index 0000000..ba1ec51 --- /dev/null +++ b/services/chore/internal/model/system.go @@ -0,0 +1,18 @@ +package model + +import ( + "lone-services/pkg/modelbase" +) + +type SystemModel struct { + modelbase.Base +} + +func (m SystemModel) TableName() string { + return modelbase.Prefix() + "system" +} + +func (m SystemModel) Init() SystemModel { + m.Table = m.TableName() + return m +} diff --git a/services/chore/internal/server/choreServer.go b/services/chore/internal/server/choreServer.go index 866f5aa..e32e8f9 100644 --- a/services/chore/internal/server/choreServer.go +++ b/services/chore/internal/server/choreServer.go @@ -1,5 +1,5 @@ // Code generated by goctl. DO NOT EDIT. -// goctl 1.10.1 +// goctl 1.10.2 // Source: chore.proto package server @@ -43,7 +43,52 @@ func (s *ChoreServer) Regions(ctx context.Context, in *chore.RegionsReq) (*chore return l.Regions(in) } -// 服务间调用:按 id 批量查地区名称 +func (s *ChoreServer) AnswerItems(ctx context.Context, in *chore.EmptyReq) (*chore.Response, error) { + l := logic.NewAnswerItemsLogic(ctx, s.svcCtx) + return l.AnswerItems(in) +} + +func (s *ChoreServer) AnswerStatus(ctx context.Context, in *chore.StatusReq) (*chore.Response, error) { + l := logic.NewAnswerStatusLogic(ctx, s.svcCtx) + return l.AnswerStatus(in) +} + +func (s *ChoreServer) AnswerInfo(ctx context.Context, in *chore.IdReq) (*chore.Response, error) { + l := logic.NewAnswerInfoLogic(ctx, s.svcCtx) + return l.AnswerInfo(in) +} + +func (s *ChoreServer) AnswerCreate(ctx context.Context, in *chore.EditReq) (*chore.Response, error) { + l := logic.NewAnswerCreateLogic(ctx, s.svcCtx) + return l.AnswerCreate(in) +} + +func (s *ChoreServer) AnswerEdit(ctx context.Context, in *chore.EditReq) (*chore.Response, error) { + l := logic.NewAnswerEditLogic(ctx, s.svcCtx) + return l.AnswerEdit(in) +} + +func (s *ChoreServer) SystemEdit(ctx context.Context, in *chore.SystemEditReq) (*chore.Response, error) { + l := logic.NewSystemEditLogic(ctx, s.svcCtx) + return l.SystemEdit(in) +} + +func (s *ChoreServer) SystemStatus(ctx context.Context, in *chore.StatusReq) (*chore.Response, error) { + l := logic.NewSystemStatusLogic(ctx, s.svcCtx) + return l.SystemStatus(in) +} + +func (s *ChoreServer) SystemInfo(ctx context.Context, in *chore.IdReq) (*chore.Response, error) { + l := logic.NewSystemInfoLogic(ctx, s.svcCtx) + return l.SystemInfo(in) +} + +func (s *ChoreServer) SystemItems(ctx context.Context, in *chore.EmptyReq) (*chore.Response, error) { + l := logic.NewSystemItemsLogic(ctx, s.svcCtx) + return l.SystemItems(in) +} + +// 按 id 批量查地区名称 func (s *ChoreServer) RegionsByIds(ctx context.Context, in *chore.RegionsByIdsReq) (*chore.RegionsByIdsData, error) { l := logic.NewRegionsByIdsLogic(ctx, s.svcCtx) return l.RegionsByIds(in) diff --git a/services/chore/validator/answer.go b/services/chore/validator/answer.go new file mode 100644 index 0000000..dea5d88 --- /dev/null +++ b/services/chore/validator/answer.go @@ -0,0 +1,39 @@ +package validator + +import "lone-services/pkg/validate" + +type AnswerCreateValidator struct { + Question string `form:"question" json:"question" validate:"required"` + Explain string `form:"explain" json:"explain" validate:"required"` + Right string `form:"right" json:"right" validate:"required"` + Answers string `form:"answers" json:"answers" validate:"required"` +} + +// GetMessage 提示消息 +func (p AnswerCreateValidator) GetMessage() validate.ValidatorMessages { + return validate.ValidatorMessages{ + "Question.required": "问题必须填写", + "Explain.required": "补充说明必须填写", + "Right.required": "正常答案必须填写", + "Answers.required": "选择答案必须填写", + } +} + +type AnswerEditValidator struct { + Id int64 `form:"id" json:"id" validate:"required"` + Question string `form:"question" json:"question" validate:"required"` + Explain string `form:"explain" json:"explain" validate:"required"` + Right string `form:"right" json:"right" validate:"required"` + Answers string `form:"answers" json:"answers" validate:"required"` +} + +// GetMessage 提示消息 +func (p AnswerEditValidator) GetMessage() validate.ValidatorMessages { + return validate.ValidatorMessages{ + validate.FieldId: validate.FieldIdValue, + "Question.required": "问题必须填写", + "Explain.required": "补充说明必须填写", + "Right.required": "正常答案必须填写", + "Answers.required": "选择答案必须填写", + } +} diff --git a/services/chore/validator/system.go b/services/chore/validator/system.go new file mode 100644 index 0000000..38d027f --- /dev/null +++ b/services/chore/validator/system.go @@ -0,0 +1,15 @@ +package validator + +import "lone-services/pkg/validate" + +type SystemEditValidator struct { + Type int32 `form:"type" json:"type" validate:"required"` + Content string `form:"content" json:"content" validate:"required"` +} + +func (p SystemEditValidator) GetMessage() validate.ValidatorMessages { + return validate.ValidatorMessages{ + "Type.required": "Type 必传", + "Content.required": "Content 必传", + } +} diff --git a/services/express/expressclient/express.go b/services/express/expressclient/express.go index f8ebccf..7630e0b 100644 --- a/services/express/expressclient/express.go +++ b/services/express/expressclient/express.go @@ -24,6 +24,7 @@ type ( IdApiRequest = express.IdApiRequest IdRequest = express.IdRequest IdResponse = express.IdResponse + JdRequest = express.JdRequest Response = express.Response SfResponse = express.SfResponse StatusRequest = express.StatusRequest @@ -41,7 +42,7 @@ type ( // 发货 ExpressDelivering(ctx context.Context, in *DeliveringRequest, opts ...grpc.CallOption) (*Response, error) ExpressSfBack(ctx context.Context, in *EmtpyRequest, opts ...grpc.CallOption) (*SfResponse, error) - ExpressJdBack(ctx context.Context, in *EmtpyRequest, opts ...grpc.CallOption) (*Response, error) + ExpressJdBack(ctx context.Context, in *JdRequest, opts ...grpc.CallOption) (*SfResponse, error) ExpressApiQuery(ctx context.Context, in *IdApiRequest, opts ...grpc.CallOption) (*Response, error) ExpressAdminQuery(ctx context.Context, in *IdRequest, opts ...grpc.CallOption) (*Response, error) ExpressApiEstimated(ctx context.Context, in *IdApiRequest, opts ...grpc.CallOption) (*Response, error) @@ -115,7 +116,7 @@ func (m *defaultExpress) ExpressSfBack(ctx context.Context, in *EmtpyRequest, op return client.ExpressSfBack(ctx, in, opts...) } -func (m *defaultExpress) ExpressJdBack(ctx context.Context, in *EmtpyRequest, opts ...grpc.CallOption) (*Response, error) { +func (m *defaultExpress) ExpressJdBack(ctx context.Context, in *JdRequest, opts ...grpc.CallOption) (*SfResponse, error) { client := express.NewExpressClient(m.cli.Conn()) return client.ExpressJdBack(ctx, in, opts...) } diff --git a/services/express/internal/logic/expressAdminQueryLogic.go b/services/express/internal/logic/expressAdminQueryLogic.go index 6f2c512..15b4637 100644 --- a/services/express/internal/logic/expressAdminQueryLogic.go +++ b/services/express/internal/logic/expressAdminQueryLogic.go @@ -79,10 +79,13 @@ func (l *ExpressAdminQueryLogic) ExpressAdminQuery(in *express.IdRequest) (*expr return l.fail(utils.SetError(utils.ErrorNotFund, "获取快递错误")) } - //TODO JD - //if transitInfo.TransitId == dao.ExpressCompanyJd { - // return // s.queryJdEdit(res.RequestQuery, &upData) - //} + if transitInfo.TransitId == dao.ExpressCompanyJd { + items, s := svc.QueryJdEdit(res.RequestQuery, &upData, l.svcCtx.OrderSvcName) + if s != utils.Ok { + return l.fail(s) + } + return l.ok(items) + } items, s := svc.QueryEdit(res.RequestQuery, &upData, l.svcCtx.OrderSvcName) if s != utils.Ok { diff --git a/services/express/internal/logic/expressApiQueryLogic.go b/services/express/internal/logic/expressApiQueryLogic.go index 742b782..d586f36 100644 --- a/services/express/internal/logic/expressApiQueryLogic.go +++ b/services/express/internal/logic/expressApiQueryLogic.go @@ -58,7 +58,7 @@ func (l *ExpressApiQueryLogic) ExpressApiQuery(in *express.IdApiRequest) (*expre if orderInfo.Id < utils.NumberOne { return l.fail(utils.SetError(utils.ErrorNotFund, "没有找到订单信息")) } - + tw := modelbase.Params{Eq: map[string]string{"id": strconv.Itoa(upData.TransitId)}} var transitInfo dao.ExpressSend err = model.ExpressModel{}.Init().GetOne(tw, &transitInfo) @@ -84,10 +84,13 @@ func (l *ExpressApiQueryLogic) ExpressApiQuery(in *express.IdApiRequest) (*expre return l.fail(utils.SetError(utils.ErrorNotFund, "获取快递错误")) } - //TODO JD - //if transitInfo.TransitId == dao.ExpressCompanyJd { - // return // s.queryJdEdit(res.RequestQuery, &upData) - //} + if transitInfo.TransitId == dao.ExpressCompanyJd { + items, s := svc.QueryJdEdit(res.RequestQuery, &upData, l.svcCtx.OrderSvcName) + if s != utils.Ok { + return l.fail(s) + } + return l.ok(items) + } items, s := svc.QueryEdit(res.RequestQuery, &upData, l.svcCtx.OrderSvcName) if s != utils.Ok { diff --git a/services/express/internal/logic/expressJdBackLogic.go b/services/express/internal/logic/expressJdBackLogic.go index 662eddf..a48a28f 100644 --- a/services/express/internal/logic/expressJdBackLogic.go +++ b/services/express/internal/logic/expressJdBackLogic.go @@ -2,10 +2,16 @@ package logic import ( "context" - + "lone-services/pkg/modelbase" + "lone-services/pkg/utils" "lone-services/rpc/express/pb" + "lone-services/services/express/internal/dao" + "lone-services/services/express/internal/model" "lone-services/services/express/internal/svc" + "lone-services/services/express/internal/transit" + "strconv" + jsoniter "github.com/json-iterator/go" "github.com/zeromicro/go-zero/core/logx" ) @@ -24,8 +30,127 @@ func NewExpressJdBackLogic(ctx context.Context, svcCtx *svc.ServiceContext) *Exp } } -func (l *ExpressJdBackLogic) ExpressJdBack(in *express.EmtpyRequest) (*express.Response, error) { - // todo: add your logic here and delete this line +func (l *ExpressJdBackLogic) ExpressJdBack(in *express.JdRequest) (*express.SfResponse, error) { + //TODO 透传数据还是获取? + l.Logger.Error(in) + //routers.POST("/transit/jd", obj.JdBack) + //appKey := c.Query("app_key") + //timestamp := c.Query("timestamp") + //sign := c.Query("sign") + //path := c.Query("path") + // + //l.Logger.Info("JD back params : app_key=", appKey, + // " timestamp=", timestamp, " sign=", sign, " path=", path) - return &express.Response{}, nil + //JD back params : app_key=e99f6232b45c4c3e871780f5a9b1a555 timestamp=Tue, 26 May 2026 01:41:06 GMT sign=2640A486A4A529AAD722FED2E5C7E0BB path= + //JD back data:{"carrierId":2087,"customerOrderNo":"JD2026052609395822530404255","extend":{"curSiteName":"张家口涿鹿汽车点部项目小站","curSiteId":"1929145","siteTelephone":"15732381119","siteId":"4989","remark":"【实时调度-路区排班】揽收任务已分配给李晓龙,配送员电话13833376743","operatorPhone":"13833376743","curJDCode":"34512","requireTime":"2026-05-27 22:00:00"},"nextLocation":{},"operateLocation":{"lat":"40.459022","lon":"115.276425","routeAddress":" 河北省张家口市下花园区S342(张家口农商银行苏家坊信用社南)","routeCityName":"张家口市","routeDistrictName":"涿鹿县","routeProvinceName":"河北","routeStreetName":"涿鹿镇"},"operateSite":"张家口涿鹿汽车点部项目小站","operateSiteId":"1929145","operationCode":"200034","operationTime":"2026-05-26 09:40:11","operationType":"2013","operatorName":"李晓龙","orderNo":"JD2026052609395822530404255","remark":"您的快件将由快递员李晓龙上门取件,快递员电话:13833376743,营业部电话:15732381119","waybillNo":"JDVA44161571823"} + body := utils.GetBody(l.ctx) + ret := express.SfResponse{ + ReturnCode: "1001", + ReturnMsg: "body获取失败", + } + if body == utils.StringEmpty { + return &ret, nil + } + l.Logger.Info("JD back data:", body) + + ret.ReturnCode = "1002" + ret.ReturnMsg = "系统异常" + ok := l.JdBack(body) + if ok { + ret.ReturnCode = "000" + ret.ReturnMsg = "成功" + } + + return &ret, nil +} + +func (l *ExpressJdBackLogic) JdBack(body string) bool { + var bodyData map[string]interface{} + err := jsoniter.Unmarshal([]byte(body), &bodyData) + if err != nil { + l.Logger.Error("back body strInt error ", err) + return false + } + result, ok := bodyData["Body"].(map[string]interface{}) + if !ok { + l.Logger.Error("back Body interface error ") + return false + } + + l.Logger.Error("back body strInt result ", result) + waybillNo := utils.GetStringByMap(result, "waybillNo") + if waybillNo == utils.StringEmpty { + l.Logger.Error("back body no id error ") + return false + } + + w := modelbase.Params{Eq: map[string]string{ + "status": strconv.Itoa(dao.SendStatusOk), + "transit_type": strconv.Itoa(dao.ExpressCompanyJd), + "transit_sn": waybillNo}} + var info dao.DeliveryOrderUpTransit + modelObj := model.DeliveryOrderModel{}.Init() + err = modelObj.GetOne(w, &info) + if err != nil || info.Id < utils.NumberOne { + l.Logger.Error("没有找到快递数据", err) + return true + } + var items []dao.ExpressQueryItems + if len(info.TransitQuery) > utils.NumberTen { + ok := utils.JsonStringToStruct(info.TransitQuery, &items) + if ok != true { + l.Logger.Error("back json error ", err) + return false + } + } + + tmp := dao.ExpressQueryItems{ + Remark: result["remark"].(string), + AcceptTime: result["operationTime"].(string), + OperatorName: result["operatorName"].(string), + OpCode: result["operationCode"].(string), + AllInfo: body, + } + tmp.LastMd5 = utils.MD5Encrypt(tmp.Remark + tmp.AcceptTime + + tmp.OperatorName) + if len(items) > utils.NumberZero { + if items[len(items)-utils.NumberOne].LastMd5 == tmp.LastMd5 { + return true + } + } + + items = append(items, tmp) + info.TransitQuery = utils.StructToJson(items) + modelObj.Begin() + if ok := transit.JdSingedCodeMap[tmp.OpCode]; ok { + w = modelbase.Params{Eq: map[string]string{"deliver_goods_id": strconv.Itoa(info.Id)}} + expEdit := dao.DeliveryExpStatus{ + Status: utils.StatusOk, + } + _, err = model.DeliveryOrderExpModel{}.Init().Edit(w, &expEdit) + if err != nil { + l.Logger.Error("back set deliver exp error ", err) + modelObj.Rollback() + return false + } + info.Status = dao.SendStatusOver + info.ChangeEstimatedTime = utils.StatusFail + info.SignTime = utils.Now() + + s := svc.UpOrderDeliverStatus(l.svcCtx.OrderSvcName, info.ObjId, int(info.Type), int32(info.Status)) + if s != utils.Ok { + modelObj.Rollback() + return false + } + } + + _, err = modelObj.Edit(w, &info) + if err != nil { + modelObj.Rollback() + l.Logger.Error("back edit error ", err) + return false + } + modelObj.Commit() + return true } diff --git a/services/express/internal/server/expressServer.go b/services/express/internal/server/expressServer.go index 0945b72..d5ef5b5 100644 --- a/services/express/internal/server/expressServer.go +++ b/services/express/internal/server/expressServer.go @@ -75,7 +75,7 @@ func (s *ExpressServer) ExpressSfBack(ctx context.Context, in *express.EmtpyRequ return l.ExpressSfBack(in) } -func (s *ExpressServer) ExpressJdBack(ctx context.Context, in *express.EmtpyRequest) (*express.Response, error) { +func (s *ExpressServer) ExpressJdBack(ctx context.Context, in *express.JdRequest) (*express.SfResponse, error) { l := logic.NewExpressJdBackLogic(ctx, s.svcCtx) return l.ExpressJdBack(in) } diff --git a/services/express/internal/svc/delivery.go b/services/express/internal/svc/delivery.go index 24d7022..6e0d707 100644 --- a/services/express/internal/svc/delivery.go +++ b/services/express/internal/svc/delivery.go @@ -50,7 +50,7 @@ func Cancel(client transit.Transit, w modelbase.Params, info dao.DeliveryOrderPr modelObj.Rollback() return utils.Fail } - ww := modelbase.Params{Eq: map[string]string{"deliver_goods_id": strconv.Itoa(info.Id)}} + ww := modelbase.Params{Eq: map[string]string{"delivery_order_id": strconv.Itoa(info.Id)}} editExp := dao.DeliveryExpStatus{ Status: utils.StatusFail, } @@ -80,7 +80,11 @@ func UpOrderDeliverStatus(name string, id string, Type int, status int32) utils. } client := order.NewOrderClient(cli.Conn()) - _, err = client.UpdateOrderDeliverStatus(context.Background(), &order.UpdateOrderDeliverStatusRequest{Id: id, DeliverStatus: status}) + update := order.UpdateOrderDeliverStatusRequest{Id: id, DeliverStatus: status} + if status == dao.SendStatusOver { + update.SignTime = utils.Now().GoString() + } + _, err = client.UpdateOrderDeliverStatus(context.Background(), &update) if err != nil { logx.Errorf("get order err: %v", err) return utils.ErrorInternalServer @@ -169,7 +173,7 @@ func QueryEdit(data map[string]interface{}, goods *dao.DeliveryOrderUpTransit, n if status { goods.Status = dao.SendStatusOver goods.SignTime = utils.Now() - ww := modelbase.Params{Eq: map[string]string{"deliver_goods_id": strconv.Itoa(goods.Id)}} + ww := modelbase.Params{Eq: map[string]string{"delivery_order_id": strconv.Itoa(goods.Id)}} editExp := dao.DeliveryExpStatus{ Status: utils.StatusFail, } @@ -198,3 +202,74 @@ func QueryEdit(data map[string]interface{}, goods *dao.DeliveryOrderUpTransit, n modelObj.Commit() return items, utils.Ok } +func QueryJdEdit(data map[string]interface{}, goods *dao.DeliveryOrderUpTransit, name string) ([]dao.ExpressQueryItems, utils.Status) { + routeResps, ok := data["traceDetails"].([]interface{}) + if !ok || len(routeResps) == 0 { + logx.Error("routeResps 为空") + return nil, utils.SetError(utils.ErrorNotFund, "获取快递错误") + } + + status := false + var items []dao.ExpressQueryItems + for _, item := range routeResps { + route, ok := item.(map[string]interface{}) + if !ok { + continue + } + categoryStr := utils.StringEmpty + if category, ok := route["category"]; ok { + categoryStr = strconv.Itoa(int(category.(float64))) + } + tmp := dao.ExpressQueryItems{ + OpCode: route["state"].(string), + Remark: route["operationRemark"].(string), + AcceptTime: route["operationTime"].(string), + + FirstStatusCode: categoryStr, + FirstStatusName: route["categoryName"].(string), + OperatorName: route["operatorName"].(string), + OperationTitle: route["operationTitle"].(string), + } + tmp.LastMd5 = utils.MD5Encrypt(tmp.Remark + tmp.AcceptTime + + tmp.OperatorName) + items = append(items, tmp) + if ok := transit.JdSingedCodeMap[tmp.OpCode]; ok { + status = true + } + } + + modelObj := model.DeliveryOrderModel{}.Init() + modelObj.Begin() + if status { + goods.Status = dao.SendStatusOver + goods.SignTime = utils.Now() + ww := modelbase.Params{Eq: map[string]string{"delivery_order_id": strconv.Itoa(goods.Id)}} + editExp := dao.DeliveryExpStatus{ + Status: utils.StatusOk, + } + _, err := model.DeliveryOrderExpModel{}.Init().Edit(ww, &editExp) + if err != nil { + modelObj.Rollback() + logx.Error("update deleverGoodsExp err", err) + return nil, utils.SetError(utils.ErrorNotFund, "更新数据出错") + } + + s := UpOrderDeliverStatus(name, goods.ObjId, int(goods.Type), dao.SendStatusOver) + if s != utils.Ok { + modelObj.Rollback() + return nil, s + } + } + + goods.TransitQuery = utils.StructToJson(items) + w := modelbase.Params{Eq: map[string]string{"id": strconv.Itoa(goods.Id)}} + _, err := modelObj.Edit(w, goods) + if err != nil { + modelObj.Rollback() + logx.Error("update deleverGoods err", err) + return nil, utils.SetError(utils.ErrorNotFund, "更新数据出错") + } + + modelObj.Commit() + return items, utils.Ok +} diff --git a/services/order/internal/dao/order.go b/services/order/internal/dao/order.go index 6115954..8517bde 100644 --- a/services/order/internal/dao/order.go +++ b/services/order/internal/dao/order.go @@ -35,6 +35,11 @@ const ( OrderVerifyStatusOK = 1 OrderVerifyStatusFail = 2 OrderVerifyStatusWait = 3 + + TypeSale = 1 //销售 + TypeStore = 2 //门店 + TypeAgentCompany = 3 //公司代理 + TypeAgentPerson = 4 //公司代理 ) type OrderCreate struct { @@ -277,3 +282,8 @@ type OrderInfoDetail struct { CreateType int32 `gorm:"column:create_type;type:tinyint(1);default:1;comment:下单人类型,1为销售,2为门店,3为个人;NOT NULL" json:"create_type"` RefundStatus int32 `gorm:"column:refund_status" json:"refund_status"` } + +type Items struct { + Count int64 `json:"count" default:"0" type:"int"` + Items any `json:"items"` +} diff --git a/services/order/internal/logic/orderDownLogic.go b/services/order/internal/logic/orderDownLogic.go new file mode 100644 index 0000000..e36ca7c --- /dev/null +++ b/services/order/internal/logic/orderDownLogic.go @@ -0,0 +1,206 @@ +package logic + +import ( + "context" + "lone-services/pkg/modelbase" + "lone-services/pkg/utils" + "lone-services/services/order/internal/dao" + "lone-services/services/order/internal/model" + "lone-services/services/order/validator" + "strconv" + "time" + + "lone-services/rpc/order/pb" + "lone-services/services/order/internal/svc" + + "github.com/samber/lo" + "github.com/zeromicro/go-zero/core/logx" +) + +type OrderDownLogic struct { + ctx context.Context + svcCtx *svc.ServiceContext + logx.Logger + BaseLogic +} + +func NewOrderDownLogic(ctx context.Context, svcCtx *svc.ServiceContext) *OrderDownLogic { + return &OrderDownLogic{ + ctx: ctx, + svcCtx: svcCtx, + Logger: logx.WithContext(ctx), + } +} + +func (l *OrderDownLogic) OrderDown(in *order.OrderItemsRequest) (*order.ExcelExportResponse, error) { + res := &order.ExcelExportResponse{} + var v validator.OrderItemsValidator + if fail := l.checkParams(in, &v); fail != nil { + res.Msg = utils.Fail.Msg + return res, nil + } + adminInfo := utils.GetUserFromCtx(l.ctx) + if adminInfo.ID < utils.NumberOne { + res.Msg = utils.ErrorNotFund.Msg + return res, nil + } + var info []dao.OrderInfo + w := modelbase.Params{ + Order: "id desc", + } + + w.Like = make(map[string]string) + w.Other = make(map[string]string) + w.Eq = make(map[string]string) + if in.ProductId > utils.NumberZero { + w.Other["FIND_IN_SET(?, product_ids)"] = strconv.FormatInt(in.ProductId, utils.NumberTen) + } + + //Time string + if len(in.Mobile) > utils.NumberZero { + phone := utils.GetSearchPhone(in.Mobile) + if len(phone) > utils.NumberZero { + w.Like["mobile LIKE ? "] = "%%" + phone + "%%" + } + } + + if len(in.OrderSn) > utils.NumberZero { + w.Like["order_sn LIKE ? "] = "%%" + in.OrderSn + "%%" + } + + if in.StoreId > utils.NumberZero { + w.Eq["store_id"] = strconv.FormatInt(in.StoreId, utils.NumberTen) + } + if in.SaleId > utils.NumberZero { + w.Eq["sale_id"] = strconv.FormatInt(in.SaleId, utils.NumberTen) + } + if in.Status > utils.NumberZero { + w.Eq["status"] = string(in.Status) + } + + if len(in.Time) > utils.NumberZero { + w.Other["create_time > ?"] = strconv.Itoa(int(in.Time[utils.NumberZero])) + w.Other["create_time < ?"] = strconv.Itoa(int(in.Time[utils.NumberOne])) + } + + //如果是公司销售 + svc.SetGroupWhere(&w, adminInfo, false) + + err := model.OrderModel{}.Init().Items(w, &info) + if err != nil { + l.Logger.Error(err) + res.Msg = utils.ErrorNotFund.Msg + return res, nil + } + logx.Error("info:", info) + items, _ := l.Down(info) + logx.Error("items:", items) + // 2. 配置导出列:表头 ↔ 结构体字段 + columns := []utils.ExcelColumn{ + {Header: "申请日期", Field: "CreateDate", Width: 12}, + {Header: "门店名", Field: "StoreName", Width: 15}, + {Header: "门店联系人", Field: "Addressee"}, + {Header: "电话", Field: "Mobile", Width: 15}, + {Header: "地址", Field: "Address", Width: 30}, + {Header: "产品名称", Field: "ProductName", Width: 30}, + {Header: "数量", Field: "ProductNumber"}, + {Header: "营业执照", Field: "StoreBusinessLicense", IsImage: true}, + {Header: "准确时间", Field: "CreateTime", Width: 22}, + {Header: "订单号", Field: "OrderSn", Width: 40}, + } + res.Name = "订单列表" + if len(in.Time) > utils.NumberZero { + res.Name = strconv.Itoa(int(in.Time[utils.NumberZero])) + "-" + + strconv.Itoa(int(in.Time[utils.NumberOne])) + "-订单列表" + } + // 3. 一行导出 + data, err := utils.ExcelExport(columns, items) + if err != nil { + res.Msg = err.Error() + return res, nil + } + res.Data = data + return res, nil +} + +func (l *OrderDownLogic) Down(items []dao.OrderInfo) ([]dao.OrderDownInfo, utils.Status) { + var sns []string + var storeIds []string + for _, item := range items { + sns = append(sns, item.OrderSn) + storeIds = append(storeIds, strconv.Itoa(item.StoreId)) + } + + var retData []dao.OrderDownInfo + + if len(sns) < utils.NumberOne { + return retData, utils.Ok + } + + //TODO 获取门店信息 + //var storeMap map[int]dao.StoreOrderInfo + //w := models.Params{In: map[string][]string{"id": storeIds}} + //var storeItems []dao.StoreOrderInfo + //gErr := models.StoreModel{}.Init().Items(w, &storeItems) + //if gErr != nil { + // utils.Logger.Error("store err:", gErr) + // return retData, nil + //} + // + //storeMap = lo.SliceToMap(storeItems, func(item dao.StoreOrderInfo) (int, dao.StoreOrderInfo) { + // return item.Id, item + //}) + productMap := l.getProductItems(sns) + + for _, item := range items { + var storeBusinessLicense string + //TODO 获取门店营业执照 + //if _, ok := storeMap[item.StoreId]; ok { + // storeBusinessLicense, _ = utils.Crypto{}.AESDecryptECB(storeMap[item.StoreId].BusinessLicense) + //} + + if _, ok := productMap[item.OrderSn]; ok { + for _, value := range productMap[item.OrderSn] { + mobile, _ := utils.DecryptPhone(item.Mobile) + retData = append(retData, dao.OrderDownInfo{ + Id: item.Id, + OrderSn: item.OrderSn, + StoreId: item.StoreId, + StoreName: item.StoreName, + SaleName: item.SaleName, + UserId: item.UserId, + UserName: item.UserName, + SaleId: item.SaleId, + Mobile: utils.DecryptPhoneReplace(mobile), + Address: item.Address, + Addressee: item.Addressee, + DistrictIds: item.DistrictIds, + Status: item.Status, + ProductIds: item.ProductIds, + CreateTime: item.CreateTime, + CreateDate: item.CreateTime.Format(time.DateOnly), + ProductName: value.ProductName, + ProductNumber: value.Number, + StoreBusinessLicense: storeBusinessLicense, + }) + } + } + + } + return retData, utils.Ok +} + +func (l *OrderDownLogic) getProductItems(sns []string) map[string][]dao.OrderProducts { + w := modelbase.Params{In: map[string][]string{"order_sn": sns}} + var productItems []dao.OrderProducts + err := model.OrderProductModel{}.Init().Items(w, &productItems) + var productMap map[string][]dao.OrderProducts + if err != nil { + utils.Logger.Error("product err:", err) + } + + productMap = lo.GroupBy(productItems, func(item dao.OrderProducts) string { + return item.OrderSn + }) + return productMap +} diff --git a/services/order/internal/server/orderServer.go b/services/order/internal/server/orderServer.go index c0538a5..a8f3d74 100644 --- a/services/order/internal/server/orderServer.go +++ b/services/order/internal/server/orderServer.go @@ -103,6 +103,11 @@ func (s *OrderServer) OrderCreate(ctx context.Context, in *order.AdminCreateOrde return l.OrderCreate(in) } +func (s *OrderServer) OrderDown(ctx context.Context, in *order.OrderItemsRequest) (*order.ExcelExportResponse, error) { + l := logic.NewOrderDownLogic(ctx, s.svcCtx) + return l.OrderDown(in) +} + func (s *OrderServer) UpdateOrderDeliverStatus(ctx context.Context, in *order.UpdateOrderDeliverStatusRequest) (*order.UpdateOrderDeliverStatusResponse, error) { l := logic.NewUpdateOrderDeliverStatusLogic(ctx, s.svcCtx) return l.UpdateOrderDeliverStatus(in) diff --git a/services/order/internal/svc/order.go b/services/order/internal/svc/order.go index 0d0dc10..9371da6 100644 --- a/services/order/internal/svc/order.go +++ b/services/order/internal/svc/order.go @@ -3,9 +3,12 @@ package svc import ( "context" "fmt" + "lone-services/pkg/modelbase" "lone-services/pkg/utils" product "lone-services/rpc/product/pb" + "lone-services/services/order/internal/dao" "math/rand" + "strconv" "time" jsoniter "github.com/json-iterator/go" @@ -72,3 +75,23 @@ func GetOneData(name string, id int64) (*product.Item, utils.Status) { return productInfo, utils.Ok } + +func SetGroupWhere(w *modelbase.Params, adminInfo utils.UserInfo, checkProvince bool) { + if w.Eq == nil { + w.Eq = make(map[string]string) + } + if adminInfo.GroupId < utils.NumberOne { + return + } + + //如果是公司销售 + if adminInfo.Type == dao.TypeSale { + w.Eq["group_id"] = strconv.FormatInt(adminInfo.GroupId, utils.NumberTen) + } else if adminInfo.SaleProvince > utils.NumberZero { + if checkProvince { + w.Eq["sale_province"] = strconv.FormatInt(adminInfo.SaleProvince, utils.NumberTen) + } else { + w.Eq["group_id"] = strconv.FormatInt(adminInfo.GroupId, utils.NumberTen) + } + } +} diff --git a/services/order/internal/svc/servicecontext.go b/services/order/internal/svc/servicecontext.go index 505657a..d2711a9 100644 --- a/services/order/internal/svc/servicecontext.go +++ b/services/order/internal/svc/servicecontext.go @@ -80,6 +80,7 @@ type ServiceContext struct { ProductSvcName string //服务名 ExpressSvcName string ChoreSvcName string + SaleName string } func NewServiceContext(c config.Config, db *gorm.DB) *ServiceContext { @@ -87,6 +88,7 @@ func NewServiceContext(c config.Config, db *gorm.DB) *ServiceContext { productSvc := utils.GetConfigString("services.product") ExpressSvc := utils.GetConfigString("services.express") ChoreSvc := utils.GetConfigString("services.chore") + SaleSvc := utils.GetConfigString("services.sale") if productSvc == utils.StringEmpty { logx.Error("config services.product empty") @@ -97,6 +99,9 @@ func NewServiceContext(c config.Config, db *gorm.DB) *ServiceContext { if ChoreSvc == utils.StringEmpty { logx.Error("config services.chore empty") } + if SaleSvc == utils.StringEmpty { + logx.Error("config services.sale empty") + } svcCtx := &ServiceContext{ Config: c, @@ -105,6 +110,7 @@ func NewServiceContext(c config.Config, db *gorm.DB) *ServiceContext { ProductSvcName: productSvc, ExpressSvcName: ExpressSvc, ChoreSvcName: ChoreSvc, + SaleName: SaleSvc, } return svcCtx diff --git a/services/order/orderClient/order.go b/services/order/orderClient/order.go index 1ff5916..1d563bf 100644 --- a/services/order/orderClient/order.go +++ b/services/order/orderClient/order.go @@ -23,6 +23,7 @@ type ( EditAddressRequest = order.EditAddressRequest EditCartRequest = order.EditCartRequest EmptyRequest = order.EmptyRequest + ExcelExportResponse = order.ExcelExportResponse GetOrderInfoRequest = order.GetOrderInfoRequest IdAndTypeRequest = order.IdAndTypeRequest IdRequest = order.IdRequest @@ -52,6 +53,7 @@ type ( OrderAuditingItems(ctx context.Context, in *OrderAuditingItemsRequest, opts ...grpc.CallOption) (*Response, error) OrderAuditing(ctx context.Context, in *OrderAuditingRequest, opts ...grpc.CallOption) (*Response, error) OrderCreate(ctx context.Context, in *AdminCreateOrderRequest, opts ...grpc.CallOption) (*Response, error) + OrderDown(ctx context.Context, in *OrderItemsRequest, opts ...grpc.CallOption) (*ExcelExportResponse, error) UpdateOrderDeliverStatus(ctx context.Context, in *UpdateOrderDeliverStatusRequest, opts ...grpc.CallOption) (*UpdateOrderDeliverStatusResponse, error) GetOrderInfo(ctx context.Context, in *GetOrderInfoRequest, opts ...grpc.CallOption) (*OrderInfoResponse, error) } @@ -147,6 +149,11 @@ func (m *defaultOrder) OrderCreate(ctx context.Context, in *AdminCreateOrderRequ return client.OrderCreate(ctx, in, opts...) } +func (m *defaultOrder) OrderDown(ctx context.Context, in *OrderItemsRequest, opts ...grpc.CallOption) (*ExcelExportResponse, error) { + client := order.NewOrderClient(m.cli.Conn()) + return client.OrderDown(ctx, in, opts...) +} + func (m *defaultOrder) UpdateOrderDeliverStatus(ctx context.Context, in *UpdateOrderDeliverStatusRequest, opts ...grpc.CallOption) (*UpdateOrderDeliverStatusResponse, error) { client := order.NewOrderClient(m.cli.Conn()) return client.UpdateOrderDeliverStatus(ctx, in, opts...) diff --git a/services/sale/run.toml b/services/sale/run.toml deleted file mode 100644 index 6f83ec6..0000000 --- a/services/sale/run.toml +++ /dev/null @@ -1,59 +0,0 @@ -[base] - login_out_time=43200 #api接口超时时间分 - login_refresh_out_time=83200 - name = "sale-service" - listenOn = "0.0.0.0:10300" - mode = "dev" -[log] - path = "logs" - serviceName = "sale-service" - mode = "file" - encoding = "plain" - level = "info" - keepDays = 7 - maxSize = 50 - maxBackups = 5 - compress = false - -[oss] - accessKeyId = "LTAI5t7U8KvxSiPE5auwQUuu" - accessKeySecret = "xjfgbQQRpL4TcIspNuClg6bYADa3pk" - roleArn = "acs:ram::1663896742753915:role/oss-upload" - roleSessionName = "oss-upload" - region = "oss-cn-hangzhou" - bucketName = "lone-images" - endpoint = "https://oss-accelerate.aliyuncs.com" - host = "https://images.ailuowan.com" - dir = "upload/" - expireSeconds = 3600 - -[mysql] - host = '39.106.171.204' - port = 33066 - user = 'root' - password = 'MOLXRZNOU4Y4' - database = 'dms-sale' - charset = 'utf8mb4' - prefix = '' - debug = true -[mysql_read] - host = '39.106.171.204' - port = 33066 - user = 'root' - password = 'MOLXRZNOU4Y4' - database = 'dms-sale' - charset = 'utf8mb4' - prefix = '' - -[redis] - host = '39.106.171.204' - password = 'lLMLcuPpzSj' - port = 6379 - db = 0 - -[encrypt] - data_key = "u2t9T3luZtoRfhBstkFN6TiIMW38BA8a" - -[services] - chore = "chore-service" - user = "user-service" \ No newline at end of file