package doudian // //import ( // "errors" // "fmt" // address_create_request "git.rosy.net.cn/baseapi/platformapi/tiktok_shop/sdk-golang/api/address_create/request" // address_list_request "git.rosy.net.cn/baseapi/platformapi/tiktok_shop/sdk-golang/api/address_list/request" // address_list_response "git.rosy.net.cn/baseapi/platformapi/tiktok_shop/sdk-golang/api/address_list/response" // freightTemplate_create_request "git.rosy.net.cn/baseapi/platformapi/tiktok_shop/sdk-golang/api/freightTemplate_create/request" // shop_batchCreateStore_request "git.rosy.net.cn/baseapi/platformapi/tiktok_shop/sdk-golang/api/shop_batchCreateStore/request" // shop_bindStoreFreight_request "git.rosy.net.cn/baseapi/platformapi/tiktok_shop/sdk-golang/api/shop_bindStoreFreight/request" // shop_bindStoreSaleLimit_request "git.rosy.net.cn/baseapi/platformapi/tiktok_shop/sdk-golang/api/shop_bindStoreSaleLimit/request" // shop_editStore_request "git.rosy.net.cn/baseapi/platformapi/tiktok_shop/sdk-golang/api/shop_editStore/request" // shop_getStoreDetail_request "git.rosy.net.cn/baseapi/platformapi/tiktok_shop/sdk-golang/api/shop_getStoreDetail/request" // shop_getStoreList_request "git.rosy.net.cn/baseapi/platformapi/tiktok_shop/sdk-golang/api/shop_getStoreList/request" // shop_storeSuspend_request "git.rosy.net.cn/baseapi/platformapi/tiktok_shop/sdk-golang/api/shop_storeSuspend/request" // shop_unsuspendStore_request "git.rosy.net.cn/baseapi/platformapi/tiktok_shop/sdk-golang/api/shop_unsuspendStore/request" // trade_createTradeLimitTemplate_request "git.rosy.net.cn/baseapi/platformapi/tiktok_shop/sdk-golang/api/trade_createTradeLimitTemplate/request" // "git.rosy.net.cn/baseapi/platformapi/tiktok_shop/tiktok_api" // "git.rosy.net.cn/baseapi/utils" // "git.rosy.net.cn/baseapi/utils/errlist" // "git.rosy.net.cn/jx-callback/business/jxstore/event" // "git.rosy.net.cn/jx-callback/business/jxutils" // "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/globals" // "git.rosy.net.cn/jx-callback/globals/api" //) // //func splicingTimeToDoudian(openTime1, closeTime1, openTime2, closeTime2 int16) (timeList string) { // //700 1200 -> 7:00-12:00 // timeStr := "" // if openTime1 != 0 && closeTime1 != 0 { // tOpenTime1 := utils.Int64ToStr(int64(openTime1)) // len1 := len(tOpenTime1) - 2 // s1 := tOpenTime1[:len1] + ":" + tOpenTime1[len1+1:] // tCloseTime1 := utils.Int64ToStr(int64(closeTime1)) // len2 := len(tCloseTime1) - 2 // s2 := tCloseTime1[:len2] + ":" + tCloseTime1[len2+1:] // timeStr += s1 + "-" + s2 // if openTime2 != 0 && closeTime2 != 0 { // tOpenTime2 := utils.Int64ToStr(int64(openTime2)) // len3 := len(tOpenTime2) - 2 // s3 := tOpenTime2[:len3] + ":" + tOpenTime2[len3+1:] // tCloseTime2 := utils.Int64ToStr(int64(closeTime2)) // len4 := len(tCloseTime2) - 2 // s4 := tCloseTime2[:len4] + ":" + tCloseTime2[len4+1:] // timeStr += " " + s3 + "-" + s4 // } // } // return timeStr //} // //// shop/batchCreateStore 批量创建门店 //func (P *PurchaseHandler) CreateStore2(db *dao.DaoDB, storeID int, userName string, params map[string]interface{}, storeDetail *dao.StoreDetail) (vendorStoreID string, err error) { // var ( // storeIDs string // lists []shop_batchCreateStore_request.StoreListItem // ShopBatchCreateStoreParam *shop_batchCreateStore_request.ShopBatchCreateStoreParam // ) // timeStr := "" // if storeDetail.OpenTime1 == 0 || storeDetail.CloseTime1 == 0 { // return "", fmt.Errorf("营业时间必填") // } else { // timeStr = splicingTimeToDoudian(storeDetail.OpenTime1, storeDetail.CloseTime1, storeDetail.OpenTime2, storeDetail.CloseTime2) // } // m := make(map[int64]string) // for j := 1; j <= 7; j++ { // m[int64(j)] = timeStr // } // list := shop_batchCreateStore_request.StoreListItem{ // RowId: 1, // Name: storeDetail.Name, // StoreCode: storeDetail.VendorStoreID, // 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: m, // }, // } // lists = append(lists, list) // ShopBatchCreateStoreParam = &shop_batchCreateStore_request.ShopBatchCreateStoreParam{ // StoreList: lists, // } // if resp, err := api.DouDianApi.BatchCreateStore(ShopBatchCreateStoreParam); err != nil { // return "", err // } else { // for k, v := range resp.ResultList { // if k != len(resp.ResultList) { // storeIDs += utils.Int64ToStr(v.Store.StoreId) + "," // } // storeIDs += utils.Int64ToStr(v.Store.StoreId) // } // return storeIDs, nil // } //} // //// shop/editStore 编辑门店信息 正向推送平台 //func (P *PurchaseHandler) UpdateStore(db *dao.DaoDB, storeID int, userName string) (err error) { // var ( // storeInfo *dao.StoreDetail // name string // ) // if db == nil { // db = dao.GetDB() // } // sqlStr := ` SELECT // t1.*, // t2.status, t2.vendor_store_id, t2.vendor_org_code, // IF(t1.updated_at > t2.updated_at, t1.last_operator, t2.last_operator) real_last_operator, t2.sync_status, t2.vendor_store_name // FROM store t1 // LEFT JOIN store_map t2 ON t1.id = t2.store_id AND t2.vendor_id = ? AND (t2.deleted_at = ?) // WHERE t1.id = ? // ORDER BY t2.updated_at` // err = dao.GetRow(db, &storeInfo, sqlStr, model.VendorIDDouDian, utils.DefaultTimeValue, utils.Int2Str(storeID)) // if err != nil { // return err // } // errList := errlist.New() // timeStr := "" // m := make(map[int64]string) // if storeInfo.OpenTime1 != 0 && storeInfo.CloseTime1 != 0 { // timeStr = splicingTimeToDoudian(storeInfo.OpenTime1, storeInfo.CloseTime1, storeInfo.OpenTime2, storeInfo.CloseTime2) // for j := 1; j <= 7; j++ { // m[int64(j)] = timeStr // } // } // vendorStoreID := &shop_getStoreDetail_request.ShopGetStoreDetailParam{ // StoreId: utils.Str2Int64(storeInfo.VendorStoreID), // } // if globals.EnableDdStoreWrite { // remoteStoreInfo, err2 := api.DouDianApi.GetStoreDetail(vendorStoreID) // if err2 != nil { // return err2 // } // if remoteStoreInfo.StoreDetail.Store.StoreId == 0 { // return fmt.Errorf("ID:%d 的门店不存在,请先创建", utils.Str2Int64(storeInfo.VendorStoreID)) // } // mergedStoreStatus := jxutils.MergeStoreStatus(storeInfo.Status, storeInfo.VendorStatus) // name = remoteStoreInfo.StoreDetail.Store.Name // if storeInfo.SyncStatus&(model.SyncFlagNewMask|model.SyncFlagStoreName) != 0 { // if storeInfo.VendorStoreName != "" { // name = storeInfo.VendorStoreName // } // } // store := fmt.Sprintf("门店id:%d,门店名称:%s,第三方门店状态:%d,本地修改前门店状态%d,本地门店修改后状态:%d,第三方平台Id(抖店):%s", storeID, remoteStoreInfo.StoreDetail.Store.Name, remoteStoreInfo.StoreDetail.Store.State, storeInfo.Status, mergedStoreStatus, storeInfo.VendorOrgCode) // event.AddOperateEvent(jxcontext.AdminCtx, jxcontext.AdminCtx.GetTrackInfo(), store, "", "", 10, "UpdateStore") // params := &shop_editStore_request.ShopEditStoreParam{ // StoreId: remoteStoreInfo.StoreDetail.Store.StoreId, //平台id不可修改 // Name: name, // StoreCode: utils.Int2Str(storeInfo.ID), //自用编码即很本地storeID // Latitude: utils.Int2Str(storeInfo.Lat), // Longitude: utils.Int2Str(storeInfo.Lng), // Province: storeInfo.ProvinceName, // City: storeInfo.CityName, // District: storeInfo.DistrictName, // Address: storeInfo.Address, // Contact: storeInfo.Tel1, // OpenTime: &shop_editStore_request.OpenTime{ // DayMap: m, // }, // } // //修改店铺状态 // if storeInfo.SyncStatus&(model.SyncFlagNewMask|model.SyncFlagStoreStatus) != 0 { // errList.AddErr(P.UpdateStoreStatus(jxcontext.AdminCtx, storeInfo.VendorOrgCode, storeID, storeInfo.VendorStoreID, mergedStoreStatus)) // } // _, err3 := api.DouDianApi.EditStore(params) // if err3 != nil { // errList.AddErr(err3) // } // } // return err //} // //// shop/storeSuspend 门店暂停营业 //// shop/unsuspendStore 门店恢复营业 //func (p *PurchaseHandler) UpdateStoreStatus(ctx *jxcontext.Context, vendorOrgCode string, storeID int, vendorStoreID string, status int) (err error) { // isOnline := bizStatusJX2DouDian(status) // if globals.EnableDdStoreWrite { // if isOnline != tiktok_api.StoreStatusOnline { //暂停营业状态 // unsuspendStoreID := &shop_unsuspendStore_request.ShopUnsuspendStoreParam{ // StoreId: utils.Str2Int64(vendorStoreID), // } // _, err = api.DouDianApi.UnsuspendStore(unsuspendStoreID) // } else { //恢复营业 // suspendStoreID := &shop_storeSuspend_request.ShopStoreSuspendParam{ // StoreId: utils.Str2Int64(vendorStoreID), // } // getStoreID := &shop_getStoreDetail_request.ShopGetStoreDetailParam{ // StoreId: utils.Str2Int64(vendorStoreID), // } // //平台上店铺状态 // remoteStoreInfo, err2 := api.DouDianApi.GetStoreDetail(getStoreID) // if err2 != nil { // return err2 // } // if remoteStoreInfo.StoreDetail.Store.SuspendType == tiktok_api.SuspendTypePlatformPenalty { // err = errors.New("门店因平台处罚暂停营业,不可主动修改营业状态") // } else { // _, err = api.DouDianApi.StoreSuspend(suspendStoreID) // } // } // } // return err //} // //// /freightTemplate/create 创建运费模板 //func (P *PurchaseHandler) CreateFreightTemplate(templateInfo freightTemplate_create_request.FreightTemplateCreateParam, storeID, vendorStoreID int64) error { // var ( // db *dao.DaoDB // ) // if templateInfo.Template.RuleType > 0 { // templateInfo.Template.CalculateType = tiktok_api.CalculateTypeNum // } // info := &freightTemplate_create_request.FreightTemplateCreateParam{ // Template: templateInfo.Template, // Columns: templateInfo.Columns, // } // resp, err := api.DouDianApi.FreightTemplateCreate(info) // if err != nil { // return err // } // //创建成功后进行绑定 // bindInfo := &shop_bindStoreFreight_request.ShopBindStoreFreightParam{ // StoreId: vendorStoreID, // FreightId: resp.TemplateId, // } // _, err1 := api.DouDianApi.BindFreightTemplate(bindInfo) // if err != nil { // return err1 // } // //并写入数据库 // freightInfo := model.FreightTemplate{ // StoreID: storeID, // VendorStoreID: vendorStoreID, // TemplateID: resp.TemplateId, // } // if err = dao.CreateEntity(db, freightInfo); err != nil { // return err // } // return nil //} // //// /shop/bindStoreFreight 门店绑定运费模版 ////门店绑定运费模版,运费模版必须属于门店关联的抖店,且门店与运费模版是一对一关系 //func (P *PurchaseHandler) ShopBindStoreFreight(storeID, freightID int64) error { // param := &shop_bindStoreFreight_request.ShopBindStoreFreightParam{ // StoreId: storeID, // FreightId: freightID, // } // _, err := api.DouDianApi.BindFreightTemplate(param) // if err != nil { // return err // } // return nil //} // //// /address/create 创建店铺地址库(新建即绑定) //func (P *PurchaseHandler) CreateAddress(addressInfo address_create_request.AddressCreateParam) (addressID int64, err error) { // info := &address_create_request.AddressCreateParam{ // Address: addressInfo.Address, // StoreId: addressInfo.StoreId, // } // resp, err := api.DouDianApi.AddressCreate(info) // if err != nil { // return 0, err // } // //添加进数据库page_shop // //获取门店信息 // //storeID := &shop_getStoreDetail_request.ShopGetStoreDetailParam{ // // StoreId: addressInfo.StoreId, // //} // //storeInfo, err1 := api.DouDianApi.GetStoreDetail(storeID) // //if err1 != nil { // // return 0, err1 // //} // //createAddress := &model.PageShop{ //此表暂存门店售后地址库 // // Name: storeInfo.StoreDetail.Store.Name, // // VendorID: model.VendorIDDouDian, // // VendorStoreID: utils.Int64ToStr(storeInfo.StoreDetail.Store.StoreId), //抖店平台ID // // OrgCode: storeInfo.StoreDetail.Store.StoreCode, //暂时用来存放京西平台门店ID // // VendorStatus: utils.Int64ToStr(storeInfo.StoreDetail.Store.State), // // Status: 0, // // CityCode: utils.Str2Int(storeInfo.StoreDetail.Store.CityCode), // // DistrictCode: utils.Str2Int(storeInfo.StoreDetail.Store.DistrictCode), // // Address: storeInfo.StoreDetail.Store.Address, // // Lng: utils.Str2Float64(storeInfo.StoreDetail.Store.Longitude), // // Lat: utils.Str2Float64(storeInfo.StoreDetail.Store.Latitude), // // Tel1: storeInfo.StoreDetail.Store.Contact, // //} // //if err = dao.CreateEntity(dao.GetDB(), createAddress); err != nil { // // return 0, err // //} // return resp.AddressId, nil //} // //// /address/list 获取售后地址列表接口 ////分页获取商家地址列表 //func (P *PurchaseHandler) GetAddressList(param *address_list_request.AddressListParam) (*address_list_response.AddressListData, error) { // //不传入ID则是获取所有门店售后地址列表 // info := &address_list_request.AddressListParam{ // PageSize: 10, // PageNo: 1, // OrderBy: param.OrderBy, // OrderField: param.OrderField, // } // if param.StoreId != 0 { // info.StoreId = param.StoreId // } // listInfo, err := api.DouDianApi.GetAddressList(info) // if err != nil { // return nil, err // } // return listInfo, nil //} // //// /trade/createTradeLimitTemplate 创建限售模板 //func (P *PurchaseHandler) CreateTradeLimitTemplate(template trade_createTradeLimitTemplate_request.TradeCreateTradeLimitTemplateParam) (tradeLimitID int64, err error) { // info := &trade_createTradeLimitTemplate_request.TradeCreateTradeLimitTemplateParam{ // StoreId: template.StoreId, // TradeLimitRuleRequestList: template.TradeLimitRuleRequestList, // } // resp, err := api.DouDianApi.CreateTradeLimitTemplate(info) // if err != nil { // return 0, err // } // return resp.TradeLimitId, nil //} // //// /shop/bindStoreSaleLimit 门店绑定限售模板 //func (P *PurchaseHandler) BindStoreSaleLimit(storeID, saleLimitTemplateID int64) error { // info := &shop_bindStoreSaleLimit_request.ShopBindStoreSaleLimitParam{ // StoreId: storeID, // SaleLimitId: saleLimitTemplateID, // } // if _, err := api.DouDianApi.BindStoreSaleLimit(info); err != nil { // return err // } // return nil //} // //func (P *PurchaseHandler) UpdateStoreOpTime(ctx *jxcontext.Context, vendorOrgCode string, storeID int, vendorStoreID string, opTimeList []int16) (err error) { // t1 := opTimeList[0] // t2 := opTimeList[1] // t3 := opTimeList[2] // t4 := opTimeList[4] // timeStr := splicingTimeToDoudian(t1, t2, t3, t4) // m := make(map[int64]string) // for j := 1; j <= 7; j++ { // m[int64(j)] = timeStr // } // params := &shop_editStore_request.ShopEditStoreParam{ // StoreId: utils.Str2Int64(vendorStoreID), // OpenTime: &shop_editStore_request.OpenTime{ // DayMap: m, // }, // } // if globals.EnableDdStoreWrite { // api.DouDianApi.EditStore(params) // } // return err //} // //func (P *PurchaseHandler) GetStoreStatus(ctx *jxcontext.Context, vendorOrgCode string, storeID int, vendorStoreID string) (storeStatus int, err error) { // params := &shop_getStoreDetail_request.ShopGetStoreDetailParam{ // StoreId: utils.Str2Int64(vendorStoreID), // } // result, err := api.DouDianApi.GetStoreDetail(params) // if err != nil { // return 0, err // } // status := bizStatusJX2DouDian(int(result.StoreDetail.Store.State)) // return status, nil //} // //func (P *PurchaseHandler) EnableAutoAcceptOrder(ctx *jxcontext.Context, vendorOrgCode string, storeID int, vendorStoreID string, isSetEnable bool) (err error) { // return err //} // //// 获取店铺所有平台ID //func (P *PurchaseHandler) GetAllStoresVendorID(ctx *jxcontext.Context, vendorOrgCode string) (vendorStoreIDs []string, err error) { // param := &shop_getStoreList_request.ShopGetStoreListParam{ // Page: 0, // PageSize: 10, // } // storeList, err := api.DouDianApi.GetStoreList(param) // if err != nil { // return nil, err // } // if len(storeList.StoreDetailList) > 0 { // vendorStoreIDs = make([]string, len(storeList.StoreDetailList)) // for k, v := range storeList.StoreDetailList { // vendorStoreIDs[k] = utils.Int64ToStr(v.Store.StoreId) // } // } // return vendorStoreIDs, err //} // //func (P *PurchaseHandler) UpdateStoreLineStatus(ctx *jxcontext.Context, vendorOrgCode string, storeID int, vendorStoreID string, lineStatus int) (err error) { // if lineStatus == model.StoreStatusOpened { // param := &shop_storeSuspend_request.ShopStoreSuspendParam{ // StoreId: utils.Str2Int64(vendorStoreID), // } // _, err = api.DouDianApi.StoreSuspend(param) // } else { // param := &shop_unsuspendStore_request.ShopUnsuspendStoreParam{ // StoreId: utils.Str2Int64(vendorStoreID), // } // _, err = api.DouDianApi.UnsuspendStore(param) // } // return err //} //func (P *PurchaseHandler) ReadStore(ctx *jxcontext.Context, vendorOrgCode, vendorStoreID, vendorStoreName string) (store *dao.StoreDetail, err error) { // return nil, err //} // //func (P *PurchaseHandler) RefreshAllStoresID(ctx *jxcontext.Context, parentTask tasksch.ITask, isAsync bool) (hint string, err error) { // return "", errors.New("抖店暂不支持此操作") //}