This commit is contained in:
richboo111
2022-09-22 18:03:35 +08:00
parent 9e2ff99f20
commit e5565b050f
6 changed files with 371 additions and 39 deletions

View File

@@ -305,30 +305,33 @@ var (
type Store struct {
ModelIDCULD
OriginalName string `orm:"-" json:"originalName"`
Name string `orm:"size(255)" json:"name"`
CityCode int `orm:"default(0);null" json:"cityCode"` // todo ?
DistrictCode int `orm:"default(0);null" json:"districtCode"` // todo ?
Address string `orm:"size(255)" json:"address"`
Tel1 string `orm:"size(32);index" json:"tel1"`
Tel2 string `orm:"size(32);index" json:"tel2"`
OpenTime1 int16 `json:"openTime1" validate:"max=2359,min=1,ltfield=CloseTime1"` // 930就表示9点半用两个的原因是为了支持中午休息1与2的时间段不能交叉为0表示没有
CloseTime1 int16 `json:"closeTime1" validate:"max=2359,min=1` // 格式同上
OpenTime2 int16 `json:"openTime2" validate:"max=2359,min=1,ltfield=CloseTime2"` // 格式同上
CloseTime2 int16 `json:"closeTime2" validate:"max=2359,min=1` // 格式同上
Lng int `json:"-"` // 乘了10的6次方
Lat int `json:"-"` // 乘了10的6次方
DeliveryRangeType int8 `json:"deliveryRangeType"` // 参见相关常量定义
DeliveryRange string `orm:"type(text)" json:"deliveryRange"` // 如果DeliveryRangeType为DeliveryRangeTypePolygon则为逗号分隔坐标分号分隔的坐标点坐标与Lng和Lat一样都是整数比如 121361504,31189308;121420555,31150238。否则为半径单位为米
Status int `json:"status"`
AutoEnableAt *time.Time `orm:"type(datetime);null" json:"autoEnableAt"` // 自动营业时间(临时休息用)
ChangePriceType int8 `json:"changePriceType"` // 修改价格类型,即是否需要审核
SMSNotify int8 `orm:"column(sms_notify);" json:"smsNotify"` // 是否通过短信接收订单消息(每天只推一条)
SMSNotifyMark int8 `orm:"column(sms_notify_mark);" json:"smsNotifyMark"` //今天是否已经推送过订单消息
AutoReplyType int8 `json:"autoReplyType"` // 订单评价自动回复类型
LinkStoreID int `orm:"column(link_store_id);default(0);index" json:"linkStoreID"` // 关联门店ID
StoreLevel string `orm:"default(C);size(32)" json:"storeLevel"` // 门店等级(筛选用,京西的)
Comment string `orm:"size(255)" json:"comment"` //门店备注
RowID int64 `json:"rowID"` //标识这条数据(抖店用)
StoreCode string `json:"storeCode"` //门店编码(抖店用)
OpenTime map[int64]string `json:"openTime"` //营业时间(抖店用)
OriginalName string `orm:"-" json:"originalName"`
Name string `orm:"size(255)" json:"name"`
CityCode int `orm:"default(0);null" json:"cityCode"` // todo ?
DistrictCode int `orm:"default(0);null" json:"districtCode"` // todo ?
Address string `orm:"size(255)" json:"address"`
Tel1 string `orm:"size(32);index" json:"tel1"`
Tel2 string `orm:"size(32);index" json:"tel2"`
OpenTime1 int16 `json:"openTime1" validate:"max=2359,min=1,ltfield=CloseTime1"` // 930就表示9点半用两个的原因是为了支持中午休息1与2的时间段不能交叉为0表示没有
CloseTime1 int16 `json:"closeTime1" validate:"max=2359,min=1` // 格式同上
OpenTime2 int16 `json:"openTime2" validate:"max=2359,min=1,ltfield=CloseTime2"` // 格式同上
CloseTime2 int16 `json:"closeTime2" validate:"max=2359,min=1` // 格式同上
Lng int `json:"-"` // 乘了10的6次方
Lat int `json:"-"` // 乘了10的6次方
DeliveryRangeType int8 `json:"deliveryRangeType"` // 参见相关常量定义
DeliveryRange string `orm:"type(text)" json:"deliveryRange"` // 如果DeliveryRangeType为DeliveryRangeTypePolygon则为逗号分隔坐标分号分隔的坐标点坐标与Lng和Lat一样都是整数比如 121361504,31189308;121420555,31150238。否则为半径单位为米
Status int `json:"status"`
AutoEnableAt *time.Time `orm:"type(datetime);null" json:"autoEnableAt"` // 自动营业时间(临时休息用)
ChangePriceType int8 `json:"changePriceType"` // 修改价格类型,即是否需要审核
SMSNotify int8 `orm:"column(sms_notify);" json:"smsNotify"` // 是否通过短信接收订单消息(每天只推一条)
SMSNotifyMark int8 `orm:"column(sms_notify_mark);" json:"smsNotifyMark"` //今天是否已经推送过订单消息
AutoReplyType int8 `json:"autoReplyType"` // 订单评价自动回复类型
LinkStoreID int `orm:"column(link_store_id);default(0);index" json:"linkStoreID"` // 关联门店ID
StoreLevel string `orm:"default(C);size(32)" json:"storeLevel"` // 门店等级(筛选用,京西的)
Comment string `orm:"size(255)" json:"comment"` //门店备注
PrinterDisabled int8 `orm:"default(0)" json:"printerDisabled"` // 是否禁用网络打印机
PrinterFontSize int8 `orm:"default(0)" json:"printerFontSize"` // 打印字体0(正常大小1份)1(大字体一份),2(正常字体两份),3(打字体两份)

View File

@@ -0,0 +1,232 @@
package doudian
import (
"git.rosy.net.cn/jx-callback/business/jxutils/jxcontext"
"git.rosy.net.cn/jx-callback/business/jxutils/tasksch"
"git.rosy.net.cn/jx-callback/business/model"
"git.rosy.net.cn/jx-callback/business/model/dao"
"git.rosy.net.cn/jx-callback/business/partner"
"git.rosy.net.cn/jx-callback/business/partner/putils"
"git.rosy.net.cn/jx-callback/globals/api"
)
var (
CurPurchaseHandler *PurchaseHandler
)
type PurchaseHandler struct {
partner.BasePurchasePlatform
putils.DefSingleStorePlatform
}
func (P *PurchaseHandler) SyncAct(ctx *jxcontext.Context, parentTask tasksch.ITask, act *model.Act2, actOrderRules []*model.ActOrderRule, actStoreSkuList []*model.ActStoreSku2) (err error) {
//TODO implement me
panic("implement me")
}
func (P *PurchaseHandler) GetActAmple(ctx *jxcontext.Context, vendorStoreID, vendorOrgCode string) (ample int, err error) {
//TODO implement me
panic("implement me")
}
func (P *PurchaseHandler) Map2Order(orderData map[string]interface{}) (order *model.GoodsOrder) {
//TODO implement me
panic("implement me")
}
func (P *PurchaseHandler) GetOrder(vendorOrgCode, vendorOrderID, vendorStoreID string) (order *model.GoodsOrder, err error) {
//TODO implement me
panic("implement me")
}
func (P *PurchaseHandler) GetOrderStatus(vendorOrgCode, vendorOrderID string) (status int, err error) {
//TODO implement me
panic("implement me")
}
func (P *PurchaseHandler) AcceptOrRefuseOrder(order *model.GoodsOrder, isAcceptIt bool, userName string) (err error) {
//TODO implement me
panic("implement me")
}
func (P *PurchaseHandler) PickupGoods(order *model.GoodsOrder, isSelfDelivery bool, userName string) (err error) {
//TODO implement me
panic("implement me")
}
func (P *PurchaseHandler) AcceptOrRefuseFailedGetOrder(ctx *jxcontext.Context, order *model.GoodsOrder, isAcceptIt bool) (err error) {
//TODO implement me
panic("implement me")
}
func (P *PurchaseHandler) CallCourier(ctx *jxcontext.Context, order *model.GoodsOrder) (err error) {
//TODO implement me
panic("implement me")
}
func (P *PurchaseHandler) ConfirmReceiveGoods(ctx *jxcontext.Context, order *model.GoodsOrder) (err error) {
//TODO implement me
panic("implement me")
}
func (P *PurchaseHandler) Swtich2SelfDeliver(order *model.GoodsOrder, userName string) (err error) {
//TODO implement me
panic("implement me")
}
func (P *PurchaseHandler) Swtich2SelfDelivered(order *model.GoodsOrder, userName string) (err error) {
//TODO implement me
panic("implement me")
}
func (P *PurchaseHandler) SelfDeliverDelivering(order *model.GoodsOrder, userName string) (err error) {
//TODO implement me
panic("implement me")
}
func (P *PurchaseHandler) GetCancelDeliveryReason(order *model.GoodsOrder) (string, error) {
//TODO implement me
panic("implement me")
}
func (P *PurchaseHandler) CancelLogisticsByWmOrderId(order *model.GoodsOrder, reasonCode, detailContent, appPoiCode, orderId string) error {
//TODO implement me
panic("implement me")
}
func (P *PurchaseHandler) OrderLogisticsStatus(orderId int64) (int64, error) {
//TODO implement me
panic("implement me")
}
func (P *PurchaseHandler) SelfDeliverDelivered(order *model.GoodsOrder, userName string) (err error) {
//TODO implement me
panic("implement me")
}
func (P *PurchaseHandler) GetOrderRealMobile(ctx *jxcontext.Context, order *model.GoodsOrder) (mobile string, err error) {
//TODO implement me
panic("implement me")
}
func (P *PurchaseHandler) ReplyOrderComment(ctx *jxcontext.Context, vendorOrgCode string, orderComment *model.OrderComment, replyComment string) (err error) {
//TODO implement me
panic("implement me")
}
func (P *PurchaseHandler) AgreeOrRefuseCancel(ctx *jxcontext.Context, order *model.GoodsOrder, isAgree bool, reason string) (err error) {
//TODO implement me
panic("implement me")
}
func (P *PurchaseHandler) CancelOrder(ctx *jxcontext.Context, order *model.GoodsOrder, reason string) (err error) {
//TODO implement me
panic("implement me")
}
func (P *PurchaseHandler) AdjustOrder(ctx *jxcontext.Context, order *model.GoodsOrder, removedSkuList []*model.OrderSku, reason string) (err error) {
//TODO implement me
panic("implement me")
}
func (P *PurchaseHandler) RefundOrder(ctx *jxcontext.Context, order *model.GoodsOrder, reason string) (err error) {
//TODO implement me
panic("implement me")
}
func (P *PurchaseHandler) PartRefundOrder(ctx *jxcontext.Context, order *model.GoodsOrder, refundSkuList []*model.OrderSku, reason string) (err error) {
//TODO implement me
panic("implement me")
}
func (P *PurchaseHandler) AgreeOrRefuseRefund(ctx *jxcontext.Context, order *model.AfsOrder, approveType int, reason string) (err error) {
//TODO implement me
panic("implement me")
}
func (P *PurchaseHandler) ConfirmReceivedReturnGoods(ctx *jxcontext.Context, order *model.AfsOrder) (err error) {
//TODO implement me
panic("implement me")
}
func (P *PurchaseHandler) GetSelfTakeCode(ctx *jxcontext.Context, order *model.GoodsOrder) (code string, err error) {
//TODO implement me
panic("implement me")
}
func (P *PurchaseHandler) ConfirmSelfTake(ctx *jxcontext.Context, order *model.GoodsOrder, selfTakeCode string) (err error) {
//TODO implement me
panic("implement me")
}
func (P *PurchaseHandler) GetOrderAfsInfo(ctx *jxcontext.Context, vendorOrderID, afsOrderID string) (orderAfsInfo *partner.OrderAfsInfo, err error) {
//TODO implement me
panic("implement me")
}
func (P *PurchaseHandler) ComplaintRider(vendorOrderId string, resonID int, resonContent string) (err error) {
//TODO implement me
panic("implement me")
}
func (P *PurchaseHandler) GetOrderRider(vendorOrgCode, vendorStoreID string, param map[string]interface{}) (err error) {
//TODO implement me
panic("implement me")
}
func (P *PurchaseHandler) GetVendorID() int {
//TODO implement me
panic("implement me")
}
func (P *PurchaseHandler) GetVendorCategories(ctx *jxcontext.Context) (vendorCats []*model.SkuVendorCategory, err error) {
//TODO implement me
panic("implement me")
}
func (P *PurchaseHandler) ReadStore(ctx *jxcontext.Context, vendorOrgCode, vendorStoreID, vendorStoreName string) (store *dao.StoreDetail, err error) {
//TODO implement me
panic("implement me")
}
func (P *PurchaseHandler) DeleteStore(db *dao.DaoDB, storeID int, userName string) (err error) {
//TODO implement me
panic("implement me")
}
func (P *PurchaseHandler) GetStoreStatus(ctx *jxcontext.Context, vendorOrgCode string, storeID int, vendorStoreID string) (storeStatus int, err error) {
//TODO implement me
panic("implement me")
}
func (P *PurchaseHandler) UpdateStoreCustomID(ctx *jxcontext.Context, vendorOrgCode, vendorStoreID string, storeID int64) (err error) {
//TODO implement me
panic("implement me")
}
func (P *PurchaseHandler) RefreshAllStoresID(ctx *jxcontext.Context, parentTask tasksch.ITask, isAsync bool) (hint string, err error) {
//TODO implement me
panic("implement me")
}
func (P *PurchaseHandler) UploadImg(ctx *jxcontext.Context, vendorOrgCode, imgURL string, imgData []byte, imgName string, imgType int) (imgHint string, err error) {
//TODO implement me
panic("implement me")
}
func (P *PurchaseHandler) UpdateStoreLineStatus(ctx *jxcontext.Context, vendorOrgCode string, storeID int, vendorStoreID string, lineStatus int) (err error) {
//TODO implement me
panic("implement me")
}
func init() {
if api.DouDianApi != nil {
CurPurchaseHandler = New()
partner.RegisterPurchasePlatform(CurPurchaseHandler)
}
}
func New() (obj *PurchaseHandler) {
obj = new(PurchaseHandler)
obj.ISingleStoreStoreSkuHandler = obj
return obj
}

View File

@@ -0,0 +1,62 @@
package doudian
import (
shop_batchCreateStore_request "git.rosy.net.cn/baseapi/platformapi/tiktok_shop/sdk-golang/api/shop_batchCreateStore/request"
"git.rosy.net.cn/baseapi/utils"
"git.rosy.net.cn/jx-callback/business/jxutils"
"git.rosy.net.cn/jx-callback/business/model/dao"
"git.rosy.net.cn/jx-callback/globals/api"
)
// shop/batchCreateStore 批量创建门店
func (P *PurchaseHandler) CreateStore2(db *dao.DaoDB, storeID int, userName string, params map[string]interface{}, storeDetail *dao.StoreDetail) (vendorStoreID string, err error) {
//ShopBatchCreateStoreParam:=[]*shop_batchCreateStore_request.ShopBatchCreateStoreParam{}
var (
storeIDs string
)
//tempOpenTime := strings.Split(storeDetail.OpenTime, ",")
//m := make(map[int64]string)
//for _, i := range tempOpenTime {
// parts := strings.Split(i, ":")
// m[utils.Str2Int64(parts[0])] = parts[1]
//}
lists := []shop_batchCreateStore_request.StoreListItem{}
list := shop_batchCreateStore_request.StoreListItem{
RowId: storeDetail.RowID,
Name: storeDetail.Name,
StoreCode: storeDetail.StoreCode,
Longitude: utils.Float64ToStr(jxutils.IntCoordinate2Standard(storeDetail.Lng)),
Latitude: utils.Float64ToStr(jxutils.IntCoordinate2Standard(storeDetail.Lat)),
Province: storeDetail.ProvinceName,
City: storeDetail.CityName,
District: storeDetail.DistrictName,
Address: storeDetail.Address,
Contact: storeDetail.Tel1,
OpenTime: &shop_batchCreateStore_request.OpenTime{
DayMap: storeDetail.OpenTime,
},
}
lists = append(lists, list)
ShopBatchCreateStoreParam := &shop_batchCreateStore_request.ShopBatchCreateStoreParam{
StoreList: lists,
}
if resp, err := api.DouDianApi.BatchCreateStore(ShopBatchCreateStoreParam); err != nil {
return "", err
} else {
for _, v := range resp.ResultList {
storeIDs += utils.Int64ToStr(v.Store.StoreId)
}
return storeIDs, nil
}
}
// shop/editStore 编辑门店信息 正向推送平台
func (P *PurchaseHandler) UpdateStore(db *dao.DaoDB, storeID int, userName string) (err error) {
if db == nil {
db = dao.GetDB()
}
//doudianApi:=getapi
//storeDetail:=dao.GetStoreDetail(db,storeID,)
return err
}

View File

@@ -0,0 +1,36 @@
package doudian
import (
shop_batchCreateStore_request "git.rosy.net.cn/baseapi/platformapi/tiktok_shop/sdk-golang/api/shop_batchCreateStore/request"
"git.rosy.net.cn/baseapi/platformapi/tiktok_shop/tiktok_api"
"git.rosy.net.cn/baseapi/utils"
"git.rosy.net.cn/jx-callback/business/model"
"git.rosy.net.cn/jx-callback/business/model/dao"
"testing"
)
func TestCreateStore(t *testing.T) {
accesstoken := `{"access_token":"90868a42-1287-4453-ba71-34c72f22e886","expires_in":555553,"scope":"SCOPE","shop_id":"","shop_name":"小时达开放平台对接专用店","refresh_token":"4e8cf946-8df1-4489-be88-f96f2d4603a8","authority_id ":""}`
tiktok_api.New("7136048270014416392", "c397aa9f-3927-47c4-8cfe-4d84e02602e0", accesstoken)
request := shop_batchCreateStore_request.New()
//storeList := make([]*shop_batchCreateStore_request.StoreListItem, 0)
storeInfo := model.Store{
RowID: int64(2),
Name: "京西菜市小时达测试店铺0921",
StoreCode: "666667",
Lng: utils.Str2Int("119.441741"),
Lat: utils.Str2Int("32.133087"),
Address: "金牛区二环路北一段10号",
Tel1: "17358644830",
OpenTime: map[int64]string{1: "07:00-19:00", 2: "8:00-19:00"},
}
list := &dao.StoreDetail{}
list.Store = storeInfo
list.ProvinceName = "四川省"
list.CityName = "成都市"
list.DistrictName = "金牛区"
_, err := CurPurchaseHandler.CreateStore2(nil, 0, "", nil, list)
resp, err := request.Execute(tiktok_api.AccessToken)
t.Fatal("err===========", err)
t.Fatalf("resp===========:%v", resp)
}

View File

@@ -3,19 +3,16 @@ package ebai
import (
"testing"
"git.rosy.net.cn/jx-callback/business/jxutils/jxcontext"
"git.rosy.net.cn/baseapi/utils"
"git.rosy.net.cn/jx-callback/business/model/dao"
)
func TestReadStore(t *testing.T) {
result, err := CurPurchaseHandler.ReadStore(jxcontext.AdminCtx, "", testShopBaiduID)
if err != nil {
t.Fatal(err.Error())
}
t.Log(utils.Format4Output(result, false))
}
//func TestReadStore(t *testing.T) {
// result, err := CurPurchaseHandler.ReadStore(jxcontext.AdminCtx, "", testShopBaiduID)
// if err != nil {
// t.Fatal(err.Error())
// }
// t.Log(utils.Format4Output(result, false))
//}
func TestUpdateStore(t *testing.T) {
db := dao.GetDB()

View File

@@ -6,6 +6,7 @@ import (
"git.rosy.net.cn/baseapi/platformapi/jxprintapi"
"git.rosy.net.cn/baseapi/platformapi/qywxapi"
"git.rosy.net.cn/baseapi/platformapi/tiktok"
"git.rosy.net.cn/baseapi/platformapi/tiktok_shop/tiktok_api"
"time"
"git.rosy.net.cn/baseapi/platformapi/fnpsapi"
@@ -112,11 +113,12 @@ var (
Cacher cache.ICacher
SMSClient *aliyunsmsclient.SmsClient
TiktokApi *tiktok.API // 抖音api
TiktokJXDJApi *tiktok.API //抖音京西到家api
TiktokApiID string //抖音商城ID
TiktokJXDJApiID string //抖音京西到家ID
GuoMeiApi *gomei.API // 国美api
TiktokApi *tiktok.API // 抖音api
TiktokJXDJApi *tiktok.API //抖音京西到家api
TiktokApiID string //抖音商城ID
TiktokJXDJApiID string //抖音京西到家ID
GuoMeiApi *gomei.API // 国美api
DouDianApi *tiktok_api.API //抖店api
EnterpriseChatHeadApi *enterprise.API // 企业微信api
EnterpriseChatMin *enterprise.API // 企业微信小程序api