This commit is contained in:
邹宗楠
2025-12-18 09:33:16 +08:00
parent aa0e94ac6e
commit 422ff821f1
13 changed files with 69360 additions and 69319 deletions

View File

@@ -8,25 +8,23 @@ import (
// 取不到写死的
var enterpriseUserIdMap = map[string]string{
"18080188338": "ShiFeng",
"13541389991": "ZhuMin",
"18982250714": "LaoZhaoTongXue",
"15680070110": "LiRongWei",
"18582617275": "TangXiaoLei",
"18583684218": "JingXiCaiShi-YanXiaoKang18583684218",
"17344357115": "YuanYe",
"18011597879": "YunYing7879",
"13608076295": "ZhangJiaLin",
"18981810340": "LiuLei",
"187447 76542": "WuTingQi",
"17358644830": "ShengTianBanZi1376",
"1": "2f43b42fd833d1e77420a8dae7419000", // 未设置号码
"15928865396": "HeJiaMeng2",
"18780171617": "TianQinXin",
"17381914617": "TianQinXin2",
"15881105234": "WenShiQi",
"17342535201": "XuXiaox",
"18048531223": "ShiFeng2",
"18080188338": "ShiFeng",
"18048531223": "ShiFeng2",
"17208297174": "ciEnCheng",
"JingXiCaiShi-Jiang": "15680515506",
"18982250714": "LaoZhaoTongXue",
"15680070110": "LiRongWei",
"17366937206": "LuGang",
"18780171617": "TianQinXin",
"17381914617": "TianQinXin2",
"15183779263": "FengCheng",
"18011597879": "YunYing7879",
"13608076295": "ZhangJiaLin",
"18981810340": "LiuLei",
"18744776542": "WuTingQi",
"15928865396": "HeJiaMeng2",
"15881105234": "WenShiQi",
"13547995434": "LiJun",
}
// SendUserMessage 发送文本卡片

View File

@@ -1046,6 +1046,20 @@ func GetOrders(db *DaoDB, ids []int64, isIncludeSku, isIncludeFake bool, fromDat
}
}
}
if params["fromStoreIDs"] != nil {
var fromStoreIDs []int
if err = utils.UnmarshalUseNumber([]byte(params["fromStoreIDs"].(string)), &fromStoreIDs); err != nil {
return nil, 0, err
}
if len(fromStoreIDs) > 0 {
if fromStoreIDs[0] == 0 { // 容错
sqlWhere += " AND 1 = 0"
} else {
sqlWhere += " AND t1.from_store_id IN (" + GenQuestionMarks(len(fromStoreIDs)) + ")"
sqlParams = append(sqlParams, fromStoreIDs)
}
}
}
if params["statuss"] != nil {
var statuss []int
if err = utils.UnmarshalUseNumber([]byte(params["statuss"].(string)), &statuss); err != nil {

View File

@@ -32,56 +32,24 @@ func SendVendorV2(data SendData, vendorOrgCode string) (err error) {
switch data.VendorID {
case model.VendorIDMTWM:
dataStr, _ := json.Marshal(data.Data)
temp := string(dataStr)
globals.SugarLogger.Debugf("SendVendorV2 mtwmtemp=%s", temp)
if _, err = partner.CurAPIManager.GetAPI(model.VendorIDMTWM, vendorOrgCode).(*mtwmapi.API).MsgSend(string(dataStr)); err != nil {
return err
}
case model.VendorIDEBAI:
str, _ := json.Marshal(data.Data)
param := &ebaiapi.BusinessSendMsgReq{}
err = json.Unmarshal(str, &param)
globals.SugarLogger.Debugf("SendVendorV2 ebaiparam=%s", utils.Format4Output(param, false))
err = partner.CurAPIManager.GetAPI(model.VendorIDEBAI, vendorOrgCode).(*ebaiapi.API).BusinessSendMsg(param)
if err = json.Unmarshal(str, &param); err == nil {
err = partner.CurAPIManager.GetAPI(model.VendorIDEBAI, vendorOrgCode).(*ebaiapi.API).BusinessSendMsg(param)
}
case model.VendorIDJD:
//uuid := utils.GetUUID()
//autoReplayParam := &jdapi.ContextMsg{
// Id: uuid,
// Lang: "zh_CN",
// Type: "chat_message",
// From: jdapi.ContextFrom{
// Pin: userMsg.From.Pin,
// App: "im.waiter",
// ClientType: "gw",
// },
// To: jdapi.ContextTo{
// Pin: userMsg.To.Pin,
// App: "im.customer",
// },
// Body: jdapi.ContextBody{
// Type: "text",
// Content: temp,
// Chatinfo: jdapi.ContextBodyChatInfo{
// VenderId: jd.VenderId,
// AskAllocateType: "multiChat",
// Sid: userMsg.Body.Chatinfo.Sid,
// Source: fmt.Sprintf("dd_msg_?_%s"?, uuid),
// },
// Template: struct {
// Source string `json:"source"`
// }{
// Source: fmt.Sprintf("dd_msg_?_%s"?, uuid),
// },
// Mt: 60,
// },
// Timestamp: time.Now().UnixNano(),
// ClientTime: time.Now().UnixNano(),
//}
//err = partner.CurAPIManager.GetAPI(model.VendorIDJD, vendorOrgCode).(*jdapi.API).MessagePushService(autoReplayParam)
str, _ := json.Marshal(data.Data)
param := &jdapi.ContextMsg{}
if err = json.Unmarshal(str, &param); err == nil {
err = partner.CurAPIManager.GetAPI(model.VendorIDJD, vendorOrgCode).(*jdapi.API).MessagePushService(param)
}
}
err = ReadMsgFromClient(data.VendorID, vendorOrgCode, data.Data)
err = ReadMsgFromClient(data.VendorID, vendorOrgCode, data.Data, data.StoreId)
if err != nil {
globals.SugarLogger.Debugf("SendVendorV2:%v", err)
}
@@ -172,6 +140,7 @@ func SetPoiIMStatus(param []SetPoiIMStatusReq) error {
}
case model.VendorIDJD:
api := partner.CurAPIManager.GetAPI(model.VendorIDJD, v.VendorOrgCode).(*jdapi.API)
api.ImStatusModify(fmt.Sprintf("%s+%s", v.VendorStoreID, v.VendorOrgCode), 0, true)
// 0忙碌1在线
err := api.ImWaiterStatusModify(1, v.VendorStoreID, v.ImStatus)
errList.AddErr(fmt.Errorf("jd:%v", err))
@@ -181,7 +150,7 @@ func SetPoiIMStatus(param []SetPoiIMStatusReq) error {
}
// ReadMsgFromClient 存储客户端发送的消息
func ReadMsgFromClient(vendorID int, elmAppID string, msg interface{}) error {
func ReadMsgFromClient(vendorID int, elmAppID string, msg interface{}, storeId int) error {
var (
err error
elmTime int
@@ -231,17 +200,61 @@ func ReadMsgFromClient(vendorID int, elmAppID string, msg interface{}) error {
}
case model.VendorIDJD:
var jdData = jdapi.ContextMsg{}
err = json.Unmarshal(data, &jdData)
jxMsg = &JXMsg{
SendType: SendTypeJx,
MsgContent: jdData,
}
userList = &UserMessageList{
VendorID: model.VendorIDJD,
UserID: jdData.From.Pin,
LatestMsg: utils.Interface2String(jdData.Body),
LatestTime: int(time.Now().Unix()),
if err = json.Unmarshal(data, &jdData); err == nil {
store, err := dao.GetStoreDetail(dao.GetDB(), storeId, model.VendorIDJD, elmAppID)
if err != nil {
return err
}
shopInfo := &jdapi.JdParamJsonObj{
StatusId: utils.Int2Str(storeId), // 京西门店ID
BillId: elmAppID, // vendorOrgCode
ExtendJsonData: "",
StoreId: store.VendorStoreID, // 平台门店ID
Timestamp: utils.Time2Str(time.Now()),
}
extendJsonData := &jdapi.UserChatMsg{
Id: jdData.Id,
Lang: jdData.Lang,
Type: jdData.Type,
From: struct {
Pin string `json:"pin"`
App string `json:"app"`
ClientType string `json:"clientType"`
}{
Pin: jdData.From.Pin,
App: jdData.From.App,
ClientType: jdData.From.ClientType,
},
To: struct {
Pin string `json:"pin"`
App string `json:"app"`
ClientType string `json:"clientType"`
}{
Pin: jdData.To.Pin,
App: jdData.To.App,
ClientType: "",
},
Body: jdapi.UserChatMsgBody{
Content: jdData.Body.Content,
Type: jdData.Body.Type,
},
Timestamp: jdData.Timestamp,
ClientTime: jdData.ClientTime,
}
shopInfo.ExtendJsonData = string(utils.MustMarshal(extendJsonData))
jxMsg = &JXMsg{
SendType: SendTypeJx,
MsgContent: jdData,
}
userList = &UserMessageList{
VendorID: model.VendorIDJD,
UserID: jdData.From.Pin,
LatestMsg: utils.Interface2String(jdData.Body),
LatestTime: int(time.Now().Unix()),
}
}
}
//1 存储展示列表时单条数据
@@ -258,7 +271,7 @@ func ReadMsgFromClient(vendorID int, elmAppID string, msg interface{}) error {
return nil
}
// ReadMsgFromVendor 读取数据并存储到redis
// ReadMsgFromVendor 读取数据并存储到redis 回调
func ReadMsgFromVendor(vendorID int, elmAppID string, msg []byte) error {
var (
err error
@@ -315,7 +328,6 @@ func ReadMsgFromVendor(vendorID int, elmAppID string, msg []byte) error {
if err = utils.UnmarshalUseNumber(msg, &risMsg); err != nil {
return err
}
globals.SugarLogger.Debugf("-----rismsg := %s", utils.Format4Output(risMsg, false))
storeDetail, err := dao.GetStoreDetailByVendorStoreID(dao.GetDB(), risMsg.StoreId, model.VendorIDJD, "")
if err != nil {
return err
@@ -332,24 +344,24 @@ func ReadMsgFromVendor(vendorID int, elmAppID string, msg []byte) error {
return err
}
userList = &UserMessageList{
VendorID: model.VendorIDJD,
LatestMsg: risMsg.ExtendJsonData,
MsgFrom: elmAppID,
VendorID: model.VendorIDJD,
MsgFrom: elmAppID,
}
switch elmAppID {
case jdapi.ImCallbackRisMsg:
userList.UserID = systemMsg.From.Pin
userList.LatestTime = int(systemMsg.Timestamp)
userList.LatestMsg = "暂无"
case jdapi.ImCallbackUserMsg:
userList.UserID = userMsg.From.Pin
userList.LatestTime = int(userMsg.Timestamp)
userList.LatestMsg = userMsg.Body.Content
case jdapi.ImCallbackReadMsg:
userList.UserID = readMsg.From.Pin
userList.LatestTime = int(userMsg.Timestamp)
userList.LatestMsg = "暂无"
}
vendorStoreID = risMsg.StoreId
return fmt.Errorf("咱暂不存储")
}
//1 存储详细聊天记录list
@@ -802,6 +814,7 @@ func CheckAndReply(req *JXMsg, elmAppID string) (err error) {
}
}
case SendTypeJd:
// 京东暂时有自动回复功能
//vendorID = model.VendorIDJD
//jd := req.MsgContent.(*jdapi.ChatRisMsgCallback)
////跳过12小时内商家消息自动回复

View File

@@ -29,8 +29,9 @@ var AppSecretByAppID = map[int]string{
// SendData 客户端写入参数
type SendData struct {
VendorID int `json:"vendorID"` //消息来源平台ID 1-美团 3-饿了么
Data interface{} `json:"data"` //发送给平台 美团/饿了么消息结构体
VendorID int `json:"vendorID"` // 消息来源平台ID 1-美团 3-饿了么
StoreId int `json:"storeId"` // 门店ID
Data interface{} `json:"data"` // 发送给平台 美团/饿了么消息结构体
}
// JXMsg 京西消息结构体

View File

@@ -1370,32 +1370,32 @@ func orderSolutionForWuLiao(order *model.GoodsOrder) (err error) {
DeliveryFlag: model.OrderDeliveryFlagMaskScheduleDisabled,
}
dao.CreateEntity(db, waybill)
} else { //如果重量超过5kg则需要进行拆单分包商品分包规则。最后一个包不超过5kg,其他包不超过3kg
outOrders, _, _ := tryToSplitMatterOrder(buildJxOrderInfo(order, orderSkus))
//以下为仿照CreateOrder改了一些参数
for k, v := range outOrders {
v.OrderType = model.OrderTypeMatter
v.FromStoreID = order.FromStoreID
outJxOrder, deliveryAddress, err := generateOrder(jxcontext.AdminCtx, v, order.AddressID, order.FromStoreID, order.UserID, false, nil)
if err != nil {
return err
}
//分包后的子订单ID默认是原订单ID后面加两位目前的规则要改的话要注意取消订单那的判断
outJxOrder.OrderID = utils.Str2Int64(order.VendorOrderID)*100 + int64(k+1)
checkMatterDeliveryAddress(deliveryAddress)
order2, err2 := jxOrder2GoodsOrder(jxcontext.AdminCtx, outJxOrder, deliveryAddress, order.UserID, false, nil)
if err = err2; err == nil {
order2.FromStoreID = v.FromStoreID
order2.AddressID = order.AddressID
order2.Status = model.OrderStatusDelivering
err = partner.CurOrderManager.OnOrderNew(order2, model.Order2Status(order2))
orderSolutionForWuLiao(order2)
}
}
//刷新一下库存
for _, v := range goods[0].Skus {
cms.RefreshMatterStock(jxcontext.AdminCtx, v.SkuID)
}
} else { //如果重量超过5kg则需要进行拆单分包商品分包规则。最后一个包不超过5kg,其他包不超过3kg ,收到发单,不需要分包裹了
//outOrders, _, _ := tryToSplitMatterOrder(buildJxOrderInfo(order, orderSkus))
////以下为仿照CreateOrder改了一些参数
//for k, v := range outOrders {
// v.OrderType = model.OrderTypeMatter
// v.FromStoreID = order.FromStoreID
// outJxOrder, deliveryAddress, err := generateOrder(jxcontext.AdminCtx, v, order.AddressID, order.FromStoreID, order.UserID, false, nil)
// if err != nil {
// return err
// }
// //分包后的子订单ID默认是原订单ID后面加两位目前的规则要改的话要注意取消订单那的判断
// outJxOrder.OrderID = utils.Str2Int64(order.VendorOrderID)*100 + int64(k+1)
// checkMatterDeliveryAddress(deliveryAddress)
// order2, err2 := jxOrder2GoodsOrder(jxcontext.AdminCtx, outJxOrder, deliveryAddress, order.UserID, false, nil)
// if err = err2; err == nil {
// order2.FromStoreID = v.FromStoreID
// order2.AddressID = order.AddressID
// order2.Status = model.OrderStatusDelivering
// err = partner.CurOrderManager.OnOrderNew(order2, model.Order2Status(order2))
// orderSolutionForWuLiao(order2)
// }
//}
////刷新一下库存
//for _, v := range goods[0].Skus {
// cms.RefreshMatterStock(jxcontext.AdminCtx, v.SkuID)
//}
}
for _, v := range order.Skus {
if bagSkuMap[v.SkuID] != 0 {

View File

@@ -3,7 +3,8 @@ package localjx
import (
"encoding/json"
"fmt"
"git.rosy.net.cn/jx-callback/business/jxutils/weixinmsg"
"git.rosy.net.cn/baseapi/platformapi/dingdingapi"
"git.rosy.net.cn/jx-callback/business/jxutils/ddmsg"
"git.rosy.net.cn/jx-callback/business/partner"
"strings"
"time"
@@ -140,18 +141,19 @@ func onTLpayFinished(call *tonglianpayapi.CallBackResult) (err error) {
if order != nil {
store, _ := dao.GetStoreDetail(db, order.FromStoreID, model.VendorIDJX, "")
if store != nil {
userID := make([]string, 0, 2)
//userID := make([]string, 0, 2)
for _, v := range []string{store.MarketManPhone, store.OperatorPhone2} {
if v == "" {
continue
}
user, _ := dao.GetUserByID(db, "mobile", v)
userID = append(userID, user.UserID)
if store.MarketManPhone == store.OperatorPhone2 {
break
}
ddmsg.SendUserMessage(dingdingapi.MsgTyeText, user.UserID, "商户购买物料信息推送", fmt.Sprintf("门店%s:%d,在物料商城下单了:%s,请注意查看", store.Name, store.ID, order.VendorOrderID))
//userID = append(userID, user.UserID)
//if store.MarketManPhone == store.OperatorPhone2 {
// break
//}
}
weixinmsg.SendUserMessage(jxcontext.AdminCtx, "商户购买物料信息推送", fmt.Sprintf("门店%s:%d,在物料商城下单了:%s,请注意查看", store.Name, store.ID, order.VendorOrderID), userID, true, true)
//weixinmsg.SendUserMessage(jxcontext.AdminCtx, "商户购买物料信息推送", fmt.Sprintf("门店%s:%d,在物料商城下单了:%s,请注意查看", store.Name, store.ID, order.VendorOrderID), userID, true, true)
}
}
}

View File

@@ -427,7 +427,7 @@ func (p *PurchaseHandler) createOrUpdateStoreSkus(ctx *jxcontext.Context, storeI
saleStart = "0" + saleStart
}
if len(saleEnd) != 4 {
saleEnd += "0" + saleEnd
saleEnd = "0" + saleEnd
}
if len(saleEnd) == 4 && len(saleStart) == 4 {
break

View File

@@ -3,6 +3,8 @@ package controllers
import (
"bytes"
"fmt"
"git.rosy.net.cn/baseapi/platformapi/dingdingapi"
"git.rosy.net.cn/jx-callback/business/jxutils/ddmsg"
"git.rosy.net.cn/jx-callback/business/model"
"git.rosy.net.cn/jx-callback/business/partner/im"
"io/ioutil"
@@ -255,9 +257,9 @@ func (c *DjswController) imMsg() {
} else {
var base *jdapi.BaseInfo
if utils.UnmarshalUseNumber(msg, &base); err == nil {
globals.SugarLogger.Debugf("-----url := %s", url)
globals.SugarLogger.Debugf("-----msg := %s", string(msg))
globals.SugarLogger.Debugf("-----base := %s", utils.Format4Output(base, false))
if url == "msgReadAck" || url == "chatRiskMsg" {
ddmsg.SendUserMessage(dingdingapi.MsgTyeText, "2452A93EEB9111EC9B06525400E86DC0", fmt.Sprintf("jdIm:%s消息推送", url), utils.Format4Output(msg, false))
}
callbackResponse = jdapi.Err2CallbackResponse(im.ReadMsgFromVendor(model.VendorIDJD, url, []byte(base.JdParamJson)), "")
callbackResponse = jdapi.Err2CallbackResponse(nil, "")
}

View File

@@ -1,15 +0,0 @@
package controllers
import (
"git.rosy.net.cn/baseapi/platformapi/jdapi"
"git.rosy.net.cn/baseapi/utils"
"testing"
)
func TestName(t *testing.T) {
msg := `{"app_key":"1dba76d40cac446ca500c0391a0b6c9d","format":"json","jd_param_json":"{\"statusId\":\"\",\"billId\":\"\",\"extendJsonData\":\"{\\\"ver\\\":\\\"4.2\\\",\\\"fromChannelId\\\":-1,\\\"mid\\\":376841420,\\\"body\\\":{\\\"chatinfo\\\":{\\\"venderId\\\":\\\"store_10352814_1000051632\\\",\\\"isJdSuperMarket\\\":\\\"0\\\",\\\"source\\\":\\\"jimitwo_service_smart_sdk\\\",\\\"deviceNo\\\":\\\"dd_dvc_aes_73FF2098F02392E999FE00A26817AE212E55DF89C9D405370B4B09A908F3A355\\\",\\\"label\\\":1,\\\"IMService\\\":false,\\\"storeId\\\":\\\"1000051632\\\",\\\"distinguishPersonJimi\\\":2,\\\"proVer\\\":\\\"smart_android_15.2.90\\\",\\\"sid\\\":\\\"9ec16e789610328114db937025384666\\\",\\\"entry\\\":\\\"sdk_recent\\\",\\\"askAllocateType\\\":\\\"multiChat\\\",\\\"leaveMsgTable\\\":1,\\\"venderName\\\":\\\"京西菜市-新都三河店\\\",\\\"askType\\\":\\\"o2o\\\",\\\"disputeId\\\":-1,\\\"ddSessionType\\\":\\\"1\\\",\\\"appId\\\":\\\"im.waiter\\\",\\\"systemVer\\\":\\\"android_12_BRA-AL00\\\",\\\"eidtoken\\\":\\\"jdd01SVZE72NCBZ6AXTRFHLIRLNUSF25PCOYF4OPNU3BOITK5SR62TUHMBIDGFBOYGQ7TWY7WRDPLHA3LP6NME42NE5IQNXASKIGJA6ULRAI01234567\\\",\\\"region\\\":\\\"CN\\\",\\\"verification\\\":\\\"slide\\\"},\\\"llmStream\\\":0,\\\"thumbnail\\\":\\\"\\\",\\\"param\\\":{\\\"$ref\\\":\\\"$.body.chatinfo\\\"},\\\"type\\\":\\\"text\\\",\\\"requestData\\\":{\\\"entry\\\":\\\"sdk_recent\\\",\\\"venderId\\\":\\\"store_10352814_1000051632\\\"},\\\"content\\\":\\\"高处不胜寒\\\",\\\"sid\\\":\\\"9ec16e789610328114db937025384666\\\"},\\\"type\\\":\\\"chat_message\\\",\\\"clientTime\\\":1765872110902,\\\"datetime\\\":1765872111084,\\\"len\\\":0,\\\"from\\\":{\\\"app\\\":\\\"im.customer\\\",\\\"art\\\":\\\"\\\",\\\"clientType\\\":\\\"android\\\",\\\"pin\\\":\\\"jd_52db6569f724f\\\"},\\\"subType\\\":\\\"text\\\",\\\"id\\\":\\\"b9fd3e9b5b194599a2d74df33c319c7b\\\",\\\"to\\\":{\\\"app\\\":\\\"im.waiter\\\",\\\"pin\\\":\\\"liyang12345ly\\\"},\\\"lang\\\":\\\"zh_CN\\\",\\\"timestamp\\\":1765872111084}\",\"storeId\":\"11998833\",\"timestamp\":\"2025-12-16 16:01:51\"}","sign":"34C4AC9FAEB277FDEA9D9CBEC18BCFDB","timestamp":"2025-12-16 16:01:51","token":"de4a9818-b171-41ed-ba37-0b060cad001f","v":"1.0"}`
var base *jdapi.BaseInfo
if err := utils.Map2StructByJson(msg, &base, false); err == nil {
}
}

View File

@@ -309,8 +309,9 @@ func (c *OrderController) ExportMTWaybills() {
// @Param toDate query string false "结束日期包含格式2006-01-02如果订单号为空此项必须要求"
// @Param isDateFinish query bool false "是否fromDate与toDate指的是订单结束日期缺省不是"
// @Param vendorIDs query string false "订单所属厂商列表[1,2,3],缺省不限制"
// @Param waybillVendorIDs query string false "承运人所属厂商列表[1,2,3],缺省不限制"
// @Param waybillVendorIDs query string false "承运人所属厂商列表[1,2,3],缺省不限制"
// @Param storeIDs query string false "京西门店ID列表[1,2,3],缺省不限制"
// @Param fromStoreIDs query string false "物料京西门店ID列表[1,2,3],缺省不限制"
// @Param statuss query string false "订单状态列表[1,2,3],缺省不限制"
// @Param lockStatuss query string false "订单锁定状态列表[1,2,3],缺省不限制"
// @Param cities query string false "城市code列表[1,2,3],缺省不限制"

File diff suppressed because it is too large Load Diff

View File

@@ -11645,6 +11645,12 @@
"description": "京西门店ID列表[1,2,3],缺省不限制",
"type": "string"
},
{
"in": "query",
"name": "fromStoreIDs",
"description": "物料京西门店ID列表[1,2,3],缺省不限制",
"type": "string"
},
{
"in": "query",
"name": "statuss",
@@ -11832,6 +11838,12 @@
"description": "京西门店ID列表[1,2,3],缺省不限制",
"type": "string"
},
{
"in": "query",
"name": "fromStoreIDs",
"description": "物料京西门店ID列表[1,2,3],缺省不限制",
"type": "string"
},
{
"in": "query",
"name": "statuss",

View File

@@ -7893,6 +7893,10 @@ paths:
name: storeIDs
description: 京西门店ID列表[1,2,3],缺省不限制
type: string
- in: query
name: fromStoreIDs
description: 物料京西门店ID列表[1,2,3],缺省不限制
type: string
- in: query
name: statuss
description: 订单状态列表[1,2,3],缺省不限制
@@ -8019,6 +8023,10 @@ paths:
name: storeIDs
description: 京西门店ID列表[1,2,3],缺省不限制
type: string
- in: query
name: fromStoreIDs
description: 物料京西门店ID列表[1,2,3],缺省不限制
type: string
- in: query
name: statuss
description: 订单状态列表[1,2,3],缺省不限制