From 2cc897507a5e1ede23ee4d67fa768c03a6a001f8 Mon Sep 17 00:00:00 2001 From: fuzhongyun <15339891972@163.com> Date: Tue, 25 Nov 2025 11:37:31 +0800 Subject: [PATCH] =?UTF-8?q?fix:=201.=20=E7=B3=BB=E7=BB=9F=E6=8F=90?= =?UTF-8?q?=E7=A4=BA=E8=AF=8D=E8=B0=83=E6=95=B4=202.=203=E7=A7=8D=E5=94=AE?= =?UTF-8?q?=E5=90=8E=E5=8F=82=E6=95=B0=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- internal/tools/zltx_order_after_reseller.go | 44 +++-- .../tools/zltx_order_after_reseller_batch.go | 182 ++++++++++++++++++ internal/tools/zltx_order_after_supplier.go | 43 ++--- 3 files changed, 227 insertions(+), 42 deletions(-) create mode 100644 internal/tools/zltx_order_after_reseller_batch.go diff --git a/internal/tools/zltx_order_after_reseller.go b/internal/tools/zltx_order_after_reseller.go index 26891be..612675e 100644 --- a/internal/tools/zltx_order_after_reseller.go +++ b/internal/tools/zltx_order_after_reseller.go @@ -23,7 +23,7 @@ func (t *ZltxOrderAfterSaleResellerTool) Name() string { } func (t *ZltxOrderAfterSaleResellerTool) Description() string { - return "直连天下上游供应商售后工具" + return "直连天下下游分销商普充订单售后工具" } func (t *ZltxOrderAfterSaleResellerTool) Definition() entitys.ToolDefinition { @@ -32,18 +32,18 @@ func (t *ZltxOrderAfterSaleResellerTool) Definition() entitys.ToolDefinition { Function: entitys.FunctionDef{ Name: t.Name(), Description: t.Description(), - Parameters: map[string]interface{}{ - "type": "object", - "properties": map[string]interface{}{ - "orderType": map[string]interface{}{ - "type": "integer", - "description": "售后订单类型", - }, - "orderNumber": map[string]interface{}{ - "type": "string", - "description": "售后订单号", - }, - }, + Parameters: map[string]interface{}{ + // "type": "object", + // "properties": map[string]interface{}{ + // "orderType": map[string]interface{}{ + // "type": "integer", + // "description": "售后订单类型", + // }, + // "orderNumber": map[string]interface{}{ + // "type": "string", + // "description": "售后订单号", + // }, + // }, // "required": []string{"orderType", "orderNumber"}, }, }, @@ -52,7 +52,7 @@ func (t *ZltxOrderAfterSaleResellerTool) Definition() entitys.ToolDefinition { type ZltxOrderAfterSaleResellerRequest struct { OrderNumber []string `json:"orderNumber"` // 订单号 - Account []string `json:"account"` // 充值账号 + Account string `json:"account"` // 充值账号 OrderTimeStart string `json:"orderTimeStart"` // 订单执行开始时间 OrderTimeEnd string `json:"orderTimeEnd"` // 订单执行结束时间 AfterType int `json:"afterType"` // 处理方式 1.退款 2.扣款 @@ -94,13 +94,13 @@ func (t *ZltxOrderAfterSaleResellerTool) Execute(ctx context.Context, requireDat if err := json.Unmarshal([]byte(requireData.Match.Parameters), &req); err != nil { return err } - if len(req.OrderNumber) == 0 && len(req.Account) == 0 { - return fmt.Errorf("orderNumber or account are required") + if len(req.OrderNumber) == 0 && (req.Account == "" || req.OrderTimeStart == "") { + return fmt.Errorf("订单号 和 充值账号&订单执行时间 不能同时为空") } - return t.checkZltxOrderAfterSaleReseller(req.OrderNumber[0], requireData) + return t.checkZltxOrderAfterSaleReseller(req, requireData) } -func (t *ZltxOrderAfterSaleResellerTool) checkZltxOrderAfterSaleReseller(orderNumber string, requireData *entitys.RequireData) error { +func (t *ZltxOrderAfterSaleResellerTool) checkZltxOrderAfterSaleReseller(req ZltxOrderAfterSaleResellerRequest, requireData *entitys.RequireData) error { // req := l_request.Request{ // Url: t.config.BaseURL, // Headers: map[string]string{ @@ -124,6 +124,8 @@ func (t *ZltxOrderAfterSaleResellerTool) checkZltxOrderAfterSaleReseller(orderNu // if resp.Code != 0 { // return fmt.Errorf("check failed: %s", resp.Msg) // } + + // === mock start === resp := ZltxOrderAfterSaleResellerResponse{ Code: 0, Msg: "success", @@ -168,6 +170,12 @@ func (t *ZltxOrderAfterSaleResellerTool) checkZltxOrderAfterSaleReseller(orderNu }, }, } + + if len(req.OrderNumber) == 1 { + resp.Data = resp.Data[:1] + } + // === mock end === + jsonByte, err := json.Marshal(resp) if err != nil { return err diff --git a/internal/tools/zltx_order_after_reseller_batch.go b/internal/tools/zltx_order_after_reseller_batch.go new file mode 100644 index 0000000..ca5f1d6 --- /dev/null +++ b/internal/tools/zltx_order_after_reseller_batch.go @@ -0,0 +1,182 @@ +package tools + +import ( + "ai_scheduler/internal/config" + "ai_scheduler/internal/entitys" + "context" + "encoding/json" + "fmt" +) + +type ZltxOrderAfterSaleResellerBatchTool struct { + config config.ToolConfig +} + +// NewZltxOrderAfterSaleResellerBatchTool 创建售后订单预检工具 +func NewZltxOrderAfterSaleResellerBatchTool(config config.ToolConfig) *ZltxOrderAfterSaleResellerBatchTool { + return &ZltxOrderAfterSaleResellerBatchTool{config: config} +} + +// Name 返回工具名称 +func (t *ZltxOrderAfterSaleResellerBatchTool) Name() string { + return "zltxOrderAfterSaleResellerBatch" +} + +func (t *ZltxOrderAfterSaleResellerBatchTool) Description() string { + return "直连天下下游分销商批充订单售后工具" +} + +func (t *ZltxOrderAfterSaleResellerBatchTool) Definition() entitys.ToolDefinition { + return entitys.ToolDefinition{ + Type: "function", + Function: entitys.FunctionDef{ + Name: t.Name(), + Description: t.Description(), + Parameters: map[string]interface{}{ + // "type": "object", + // "properties": map[string]interface{}{ + // "orderType": map[string]interface{}{ + // "type": "integer", + // "description": "售后订单类型", + // }, + // "orderNumber": map[string]interface{}{ + // "type": "string", + // "description": "售后订单号", + // }, + // }, + // "required": []string{"orderType", "orderNumber"}, + }, + }, + } +} + +type ZltxOrderAfterSaleResellerBatchRequest struct { + OrderNumber []string `json:"orderNumber"` // 订单号 + AfterType int `json:"afterType"` // 处理方式 1.退款 2.扣款 + AfterSalesPrice string `json:"afterSalesPrice"` // 售后金额 + AfterSalesReason string `json:"afterSalesReason"` // 售后原因 + ResponsibleType int `json:"responsibleType"` // 费用承担者 1.供应商 2.商务 3.公司 4.无 + ResponsiblePerson string `json:"responsiblePerson"` // 费用承担供应商 +} + +type ZltxOrderAfterSaleResellerBatchResponse struct { + Code int `json:"code"` + Msg string `json:"msg"` + Data []ZltxOrderAfterSaleResellerBatchData `json:"data"` +} + +type ZltxOrderAfterSaleResellerBatchData struct { + OrderType int `json:"orderType"` + OrderNumber string `json:"orderNumber"` + OrderAmount float64 `json:"orderAmount"` + OrderPrice float64 `json:"orderPrice"` + SignCompany int `json:"signCompany"` + OrderQuantity int `json:"orderQuantity"` + ResellerID int `json:"resellerId"` + ResellerName string `json:"resellerName"` + OurProductID int `json:"ourProductId"` + OurProductTitle string `json:"ourProductTitle"` + Account []string `json:"account"` + Platforms map[int]string `json:"platforms"` + AfterType int `json:"afterType"` // 处理方式 1.退款 2.扣款 + Remark string `json:"remark"` // 售后原因 + AfterAmount float64 `json:"afterAmount"` // 售后金额 + ResponsibleType int `json:"responsibleType"` // 费用承担者 1.供应商 2.商务 3.公司 4.无 + ResponsiblePerson string `json:"responsiblePerson"` // 费用承担供应商 + IsExistsAfterSale bool `json:"isExistsAfterSale"` // 是否已存在售后 +} + +func (t *ZltxOrderAfterSaleResellerBatchTool) Execute(ctx context.Context, requireData *entitys.RequireData) error { + var req ZltxOrderAfterSaleResellerBatchRequest + if err := json.Unmarshal([]byte(requireData.Match.Parameters), &req); err != nil { + return err + } + if len(req.OrderNumber) == 0 { + return fmt.Errorf("批充订单号不能为空") + } + return t.checkZltxOrderAfterSaleResellerBatch(req, requireData) +} + +func (t *ZltxOrderAfterSaleResellerBatchTool) checkZltxOrderAfterSaleResellerBatch(req ZltxOrderAfterSaleResellerBatchRequest, requireData *entitys.RequireData) error { + // req := l_request.Request{ + // Url: t.config.BaseURL, + // Headers: map[string]string{ + // "Authorization": fmt.Sprintf("Bearer %s", requireData.Auth), + // }, + // Method: "POST", + // Data: map[string]string{ + // // "orderType": fmt.Sprintf("%d", orderType), + // "orderNumber": orderNumber, + // }, + // } + // res, err := req.Send() + // if err != nil { + // return err + // } + // // 解析响应 + // var resp ZltxOrderAfterSaleResellerBatchResponse + // if err := json.Unmarshal(res.Content, &resp); err != nil { + // return err + // } + // if resp.Code != 0 { + // return fmt.Errorf("check failed: %s", resp.Msg) + // } + + // === mock start === + resp := ZltxOrderAfterSaleResellerBatchResponse{ + Code: 0, + Msg: "success", + Data: []ZltxOrderAfterSaleResellerBatchData{ + { + OrderType: 1, + OrderNumber: "846784115378364417", + OrderAmount: 0.1, + OrderPrice: 0.1, + SignCompany: 1, + OrderQuantity: 1, + ResellerID: 23329, + ResellerName: "分销商23329", + OurProductID: 106, + OurProductTitle: "爱奇艺黄金会员周卡", + Account: []string{"15516353308"}, + Platforms: map[int]string{4: "爱奇艺"}, + AfterType: 1, + Remark: "测试售后", + AfterAmount: 50, + ResponsibleType: 1, + IsExistsAfterSale: false, + }, + { + OrderType: 101, + OrderNumber: "846052057729867777", + OrderAmount: 23, + OrderPrice: 23, + SignCompany: 1, + OrderQuantity: 1, + ResellerID: 25629, + ResellerName: "二期财务分销商简称", + OurProductID: 104, + OurProductTitle: "优酷年卡", + Account: []string{"18380416326"}, + Platforms: map[int]string{1: "爱瓦力"}, + AfterType: 2, + Remark: "测试售后2", + AfterAmount: 30, + ResponsibleType: 2, + IsExistsAfterSale: false, + }, + }, + } + + if len(req.OrderNumber) == 1 { + resp.Data = resp.Data[:1] + } + // === mock end === + + jsonByte, err := json.Marshal(resp) + if err != nil { + return err + } + entitys.ResJson(requireData.Ch, t.Name(), string(jsonByte)) + return nil +} diff --git a/internal/tools/zltx_order_after_supplier.go b/internal/tools/zltx_order_after_supplier.go index 2fca4cf..8c83ed0 100644 --- a/internal/tools/zltx_order_after_supplier.go +++ b/internal/tools/zltx_order_after_supplier.go @@ -51,13 +51,13 @@ func (t *ZltxOrderAfterSaleSupplierTool) Definition() entitys.ToolDefinition { } type ZltxOrderAfterSaleSupplierRequest struct { - OrderNumber string `json:"orderNumber"` // 订单号 - SerialNumber string `json:"serialNumber"` // 流水号 - Account string `json:"account"` // 充值账号 - OrderTimeStart string `json:"orderTimeStart"` // 订单执行开始时间 - OrderTimeEnd string `json:"orderTimeEnd"` // 订单执行结束时间 - AfterSalesReason string `json:"afterSalesReason"` // 售后原因 - AfterSalesPrice string `json:"afterSalesPrice"` // 售后金额 + SerialNumber []string `json:"serialNumber"` // 流水号 + Account string `json:"account"` // 充值账号 + OrderTimeStart string `json:"orderTimeStart"` // 订单执行开始时间 + OrderTimeEnd string `json:"orderTimeEnd"` // 订单执行结束时间 + AfterSalesReason string `json:"afterSalesReason"` // 售后原因 + AfterSalesPrice string `json:"afterSalesPrice"` // 售后金额 + AfterType int `json:"afterType"` // 售后类型 1.加款 2.扣款 } type ZltxOrderAfterSaleSupplierResponse struct { @@ -89,13 +89,13 @@ func (t *ZltxOrderAfterSaleSupplierTool) Execute(ctx context.Context, requireDat if err := json.Unmarshal([]byte(requireData.Match.Parameters), &req); err != nil { return err } - if req.OrderNumber == "" { - return fmt.Errorf("orderType and orderNumber are required") + if len(req.SerialNumber) == 0 && (req.Account == "" || req.OrderTimeStart == "") { + return fmt.Errorf("充值流水号 和 充值账号&订单执行时间 不能同时为空") } - return t.checkZltxOrderAfterSaleSupplier(req.OrderNumber, requireData) + return t.checkZltxOrderAfterSaleSupplier(req, requireData) } -func (t *ZltxOrderAfterSaleSupplierTool) checkZltxOrderAfterSaleSupplier(orderNumber string, requireData *entitys.RequireData) error { +func (t *ZltxOrderAfterSaleSupplierTool) checkZltxOrderAfterSaleSupplier(req ZltxOrderAfterSaleSupplierRequest, requireData *entitys.RequireData) error { // req := l_request.Request{ // Url: t.config.BaseURL, // Headers: map[string]string{ @@ -119,23 +119,12 @@ func (t *ZltxOrderAfterSaleSupplierTool) checkZltxOrderAfterSaleSupplier(orderNu // if resp.Code != 0 { // return fmt.Errorf("check failed: %s", resp.Msg) // } + + // === mock start === resp := ZltxOrderAfterSaleSupplierResponse{ Code: 0, Msg: "success", Data: []ZltxOrderAfterSaleSupplierData{ - // { - // "serialNumber": "847465394004430849", - // "platformName": "爱奇艺", - // "signCompany": 1, - // "platformProductName": "爱奇艺官方周卡", - // "platformPrice": 6, - // "terminalAccount": "15516353308", - // "status": 1, - // "platformProductId": 2, - // "platformId": 4, - // "signCompanyName": "成都蓝色兄弟网络科技有限公司", - // "executeTime": 1763961931 - // } { SerialNumber: "847465394004430849", PlatformName: "爱奇艺", @@ -172,6 +161,12 @@ func (t *ZltxOrderAfterSaleSupplierTool) checkZltxOrderAfterSaleSupplier(orderNu }, }, } + + if len(req.SerialNumber) == 1 { + resp.Data = resp.Data[:1] + } + // === mock end === + jsonByte, err := json.Marshal(resp) if err != nil { return err