1
This commit is contained in:
@@ -1,487 +1,456 @@
|
||||
package tiktok_store
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"errors"
|
||||
"fmt"
|
||||
"git.rosy.net.cn/baseapi/platformapi/mtwmapi"
|
||||
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_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/jxcallback/scheduler"
|
||||
"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/business/partner"
|
||||
"git.rosy.net.cn/jx-callback/globals"
|
||||
"git.rosy.net.cn/jx-callback/globals/api"
|
||||
"math"
|
||||
"regexp"
|
||||
"strings"
|
||||
)
|
||||
|
||||
var (
|
||||
opTimeErrReg = regexp.MustCompile(`当前配送营业时间为:([\d:~,]*)`)
|
||||
storeVendorOrgCodeMap = map[string]map[string]string{
|
||||
"589": map[string]string{
|
||||
"firstTag": mtwmapi.MtwmC4Tag, //经营品类
|
||||
"settlementID": "7030017", //结算ID
|
||||
"poiCert": "1,2,5", //资质列表
|
||||
},
|
||||
"5873": map[string]string{
|
||||
"firstTag": mtwmapi.MtwmSCTag,
|
||||
"settlementID": "",
|
||||
"poiCert": "1,2,5,6",
|
||||
},
|
||||
"4123": map[string]string{
|
||||
"firstTag": mtwmapi.MtwmSGTag,
|
||||
"settlementID": "6572945",
|
||||
"poiCert": "1,5",
|
||||
},
|
||||
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
|
||||
}
|
||||
}
|
||||
poiCertMap = map[string]string{
|
||||
"1": "门脸图",
|
||||
"2": "环境图",
|
||||
"5": "营业执照",
|
||||
"6": "食品经营许可证",
|
||||
}
|
||||
)
|
||||
|
||||
type tEbaiStoreInfo struct {
|
||||
model.Store
|
||||
VendorStoreID string `orm:"column(vendor_store_id)"`
|
||||
RealLastOperator string
|
||||
EbaiStoreStatus int
|
||||
SyncStatus int
|
||||
|
||||
ProvinceID int `orm:"column(province_id)"`
|
||||
CityID int `orm:"column(city_id)"`
|
||||
DistrictID int `orm:"column(district_id)"`
|
||||
return timeStr
|
||||
}
|
||||
|
||||
func (p *PurchaseHandler) ReadStore(ctx *jxcontext.Context, vendorOrgCode, vendorStoreID, vendorStoreName string) (retVal *dao.StoreDetail, err error) {
|
||||
result, err := getAPIWithoutToken(vendorOrgCode).PoiGet(vendorStoreID)
|
||||
if err == nil {
|
||||
// globals.SugarLogger.Debug(utils.Format4Output(result, false))
|
||||
retVal = &dao.StoreDetail{
|
||||
Store: model.Store{
|
||||
Address: result.Address,
|
||||
Tel1: result.Phone,
|
||||
},
|
||||
}
|
||||
retVal.OriginalName = result.Name
|
||||
_, retVal.Name = jxutils.SplitStoreName(retVal.OriginalName, partner.StoreNameSeparator, globals.StoreNameMtwm)
|
||||
// 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,
|
||||
}
|
||||
|
||||
retVal.SetOpTime(openTimeMtwm2JX(result.ShippingTime))
|
||||
retVal.Status = bizStatusMtwm2JX(result.OpenLevel, result.IsOnline)
|
||||
|
||||
tel2 := result.StandbyTel
|
||||
if tel2 != "" && tel2 != retVal.Tel1 {
|
||||
retVal.Tel2 = tel2
|
||||
}
|
||||
|
||||
retVal.Lng = int(result.Longitude)
|
||||
retVal.Lat = int(result.Latitude)
|
||||
|
||||
lng := jxutils.IntCoordinate2Standard(retVal.Lng)
|
||||
lat := jxutils.IntCoordinate2Standard(retVal.Lat)
|
||||
db := dao.GetDB()
|
||||
retVal.DistrictCode = api.AutonaviAPI.GetCoordinateDistrictCode(lng, lat)
|
||||
city, err := dao.GetPlaceByCode(db, result.CityID)
|
||||
retVal.CityName = city.Name
|
||||
retVal.CityCode = result.CityID
|
||||
|
||||
poiCode := result.AppPoiCode
|
||||
retVal.VendorStoreID = vendorStoreID
|
||||
retVal.ID = int(utils.Str2Int64WithDefault(poiCode, 0))
|
||||
retVal.DeliveryRangeType = model.DeliveryRangeTypePolygon
|
||||
var deliveryRangeInfo []map[string]interface{}
|
||||
deliveryRangeInfo, err = getAPIWithoutToken(vendorOrgCode).ShippingFetch(poiCode)
|
||||
if err != nil {
|
||||
deliveryRangeInfo, err = getAPIWithoutToken(vendorOrgCode).ShippingList(poiCode)
|
||||
}
|
||||
if err == nil {
|
||||
if len(deliveryRangeInfo) > 0 {
|
||||
retVal.DeliveryRange = rangeMtwm2JX(deliveryRangeInfo[0]["area"].(string))
|
||||
logisticsCode := utils.Interface2String(deliveryRangeInfo[0]["logistics_code"])
|
||||
if logisticsCode == "" || logisticsCode == mtwmapi.PeiSongTypeSelf {
|
||||
retVal.DeliveryType = scheduler.StoreDeliveryTypeByStore
|
||||
} else {
|
||||
retVal.DeliveryType = scheduler.StoreDeliveryTypeByPlatform
|
||||
}
|
||||
if resp, err := getAPI("", storeID, storeDetail.VendorStoreID).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 retVal, nil
|
||||
return storeIDs, nil
|
||||
}
|
||||
return nil, err
|
||||
}
|
||||
func (p *PurchaseHandler) CreateStore(db *dao.DaoDB, storeID int, userName string) (err error) {
|
||||
return p.UpdateStore(db, storeID, userName)
|
||||
}
|
||||
|
||||
func (p *PurchaseHandler) CreateStore2(db *dao.DaoDB, storeID int, userName string, params map[string]interface{}, storeDetail *dao.StoreDetail) (vendorStoreID string, err error) {
|
||||
vendorOrgCode := params["vendorOrgCode"].(string)
|
||||
if vendorOrgCode == "" {
|
||||
return "", fmt.Errorf("平台账号必传!")
|
||||
}
|
||||
cityName := storeDetail.CityName
|
||||
if strings.Contains(cityName, "市") {
|
||||
cityName = strings.Replace(cityName, "市", "", strings.LastIndex(cityName, "市"))
|
||||
}
|
||||
shippingTime := ""
|
||||
if storeDetail.OpenTime1 != 0 && storeDetail.CloseTime1 != 0 {
|
||||
shippingTime += jxutils.JxOperationTime2StrTime(storeDetail.OpenTime1)
|
||||
shippingTime += "-"
|
||||
shippingTime += jxutils.JxOperationTime2StrTime(storeDetail.CloseTime1)
|
||||
if storeDetail.OpenTime2 != 0 && storeDetail.CloseTime2 != 0 {
|
||||
shippingTime += ","
|
||||
shippingTime += jxutils.JxOperationTime2StrTime(storeDetail.OpenTime2)
|
||||
shippingTime += "-"
|
||||
shippingTime += jxutils.JxOperationTime2StrTime(storeDetail.CloseTime2)
|
||||
}
|
||||
}
|
||||
vendorInfoMap := storeVendorOrgCodeMap[vendorOrgCode]
|
||||
poiSettleSaveParam := &mtwmapi.PoiSettleSaveParam{
|
||||
Type: 1, //创建
|
||||
ApplyInfos: []*mtwmapi.ApplyInfo{
|
||||
&mtwmapi.ApplyInfo{
|
||||
AppPoiCode: utils.Int2Str(storeDetail.ID),
|
||||
SettlementID: utils.Str2Int(vendorInfoMap["settlementID"]), //结算ID,暂时还没得
|
||||
MultiPoiBasicInfo: &mtwmapi.MultiPoiBasicInfo{
|
||||
Name: params["vendorStoreName"].(string),
|
||||
City: cityName,
|
||||
Address: storeDetail.Address,
|
||||
Longitude: utils.Float64ToStr(jxutils.IntCoordinate2Standard(storeDetail.Lng)),
|
||||
Latitude: utils.Float64ToStr(jxutils.IntCoordinate2Standard(storeDetail.Lat)),
|
||||
FirstTag: vendorInfoMap["firstTag"],
|
||||
CallCenter: storeDetail.Tel1,
|
||||
ContactPhone: storeDetail.Tel1,
|
||||
ContactName: storeDetail.IDName,
|
||||
EcommerceAccountPhone: "18048531223", //石总的手机
|
||||
ShippingTime: shippingTime,
|
||||
},
|
||||
MultiPoiShippingInfo: &mtwmapi.MultiPoiShippingInfo{
|
||||
ShippingType: 5, //1:商家自配 5:美团专送,101:美团快送
|
||||
//美团专送不需要输下面这俩
|
||||
// MinPrice: params["minPrice"].(float64),
|
||||
// ShippingFee: params["shippingFee"].(float64),
|
||||
},
|
||||
//资质
|
||||
},
|
||||
},
|
||||
}
|
||||
switchCertType := func(certType string) (licensePic, licenseSocialCreditCode, licenseNumber, licenseLegalPerson, licenseAddress, licenseValidStartDate, licenseValidity string, isLongTime int) {
|
||||
switch certType {
|
||||
case "1":
|
||||
licensePic = storeDetail.StoreFrontPic
|
||||
case "2":
|
||||
licensePic = storeDetail.StoreInPic
|
||||
case "5":
|
||||
licensePic = storeDetail.Licence
|
||||
licenseSocialCreditCode = storeDetail.LicenceCode
|
||||
licenseNumber = storeDetail.LicenceCode
|
||||
licenseLegalPerson = storeDetail.LicenceOwnerName
|
||||
licenseAddress = storeDetail.LicenceAddress
|
||||
licenseValidStartDate = storeDetail.LicenceValid
|
||||
if storeDetail.LicenceExpire == "" {
|
||||
isLongTime = 1
|
||||
} else {
|
||||
licenseValidity = storeDetail.LicenceExpire
|
||||
}
|
||||
case "6":
|
||||
licensePic = storeDetail.Licence2Image
|
||||
licenseSocialCreditCode = storeDetail.Licence2Code
|
||||
licenseNumber = storeDetail.Licence2Code
|
||||
licenseLegalPerson = storeDetail.LicenceOwnerName
|
||||
licenseAddress = storeDetail.LicenceAddress
|
||||
licenseValidStartDate = storeDetail.Licence2Valid
|
||||
if storeDetail.Licence2Expire == "" {
|
||||
isLongTime = 1
|
||||
} else {
|
||||
licenseValidity = storeDetail.Licence2Expire
|
||||
}
|
||||
}
|
||||
return licensePic, licenseSocialCreditCode, licenseNumber, licenseLegalPerson, licenseAddress, licenseValidStartDate, licenseValidity, isLongTime
|
||||
}
|
||||
var certs []*mtwmapi.MultiPoiCertInfo
|
||||
for _, v := range strings.Split(vendorInfoMap["poiCert"], ",") {
|
||||
cert := &mtwmapi.MultiPoiCertInfo{
|
||||
Type: utils.Str2Int(v),
|
||||
LicenseName: poiCertMap[v],
|
||||
}
|
||||
cert.LicensePic, cert.LicenseSocialCreditCode, cert.LicenseNumber, cert.LicenseLegalPerson, cert.LicenseAddress, cert.LicenseValidStartDate, cert.LicenseValidity, cert.IsLongTime = switchCertType(v)
|
||||
certs = append(certs, cert)
|
||||
}
|
||||
poiSettleSaveParam.ApplyInfos[0].MultiPoiCertInfos = certs
|
||||
mtapi := getAPIWithoutToken(vendorOrgCode)
|
||||
if vendorStoreID, err = mtapi.PoiSettleSave(poiSettleSaveParam); err == nil {
|
||||
err = mtapi.PoiSettleAuditSubmit([]string{vendorStoreID})
|
||||
}
|
||||
return vendorStoreID, err
|
||||
}
|
||||
|
||||
func (p *PurchaseHandler) DeleteStore(db *dao.DaoDB, storeID int, userName string) (err error) {
|
||||
return err
|
||||
}
|
||||
|
||||
func (p *PurchaseHandler) UpdateStore(db *dao.DaoDB, storeID int, userName string) (err error) {
|
||||
var name string
|
||||
// shop/editStore 编辑门店信息 正向推送平台
|
||||
func (P *PurchaseHandler) UpdateStore(db *dao.DaoDB, storeID int, userName string) (err error) {
|
||||
globals.SugarLogger.Debugf("doudian Update storeID:%d, userName:%s", storeID, userName)
|
||||
var (
|
||||
storeInfo *dao.StoreDetail
|
||||
name string
|
||||
)
|
||||
if db == nil {
|
||||
db = dao.GetDB()
|
||||
}
|
||||
mtapi := getAPI(getStoreVendorOrgCode(storeID), storeID, "")
|
||||
storeDetail, err := dao.GetStoreDetail(db, storeID, model.VendorIDMTWM, "")
|
||||
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.VendorIDDD, 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),
|
||||
}
|
||||
|
||||
remoteStoreInfo, err := mtapi.PoiGet(storeDetail.VendorStoreID)
|
||||
api := getAPI(storeInfo.VendorOrgCode, storeID, utils.Int64ToStr(vendorStoreID.StoreId))
|
||||
if globals.EnableDdStoreWrite {
|
||||
remoteStoreInfo, err2 := api.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.EditStore(params)
|
||||
if err3 != nil {
|
||||
errList.AddErr(err3)
|
||||
}
|
||||
}
|
||||
return err
|
||||
}
|
||||
|
||||
// UpdateStoreStatus shop/unsuspendStore 门店恢复营业
|
||||
func (p *PurchaseHandler) UpdateStoreStatus(ctx *jxcontext.Context, vendorOrgCode string, storeID int, vendorStoreID string, status int) (err error) {
|
||||
isOnline := bizStatusJX2DouDian(status)
|
||||
api := getAPI(vendorOrgCode, storeID, vendorStoreID)
|
||||
if globals.EnableDdStoreWrite {
|
||||
if isOnline != tiktok_api.StoreStatusOnline { //暂停营业状态
|
||||
unsuspendStoreID := &shop_unsuspendStore_request.ShopUnsuspendStoreParam{
|
||||
StoreId: utils.Str2Int64(vendorStoreID),
|
||||
}
|
||||
_, err = api.UnsuspendStore(unsuspendStoreID)
|
||||
} else { //恢复营业
|
||||
suspendStoreID := &shop_storeSuspend_request.ShopStoreSuspendParam{
|
||||
StoreId: utils.Str2Int64(vendorStoreID),
|
||||
}
|
||||
getStoreID := &shop_getStoreDetail_request.ShopGetStoreDetailParam{
|
||||
StoreId: utils.Str2Int64(vendorStoreID),
|
||||
}
|
||||
//平台上店铺状态
|
||||
remoteStoreInfo, err2 := api.GetStoreDetail(getStoreID)
|
||||
if err2 != nil {
|
||||
return err2
|
||||
}
|
||||
if remoteStoreInfo.StoreDetail.Store.SuspendType == tiktok_api.SuspendTypePlatformPenalty {
|
||||
err = errors.New("门店因平台处罚暂停营业,不可主动修改营业状态")
|
||||
} else {
|
||||
_, err = api.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,
|
||||
}
|
||||
api := getAPI("", int(storeID), utils.Int64ToStr(vendorStoreID))
|
||||
|
||||
resp, err := api.FreightTemplateCreate(info)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
mergedStoreStatus := jxutils.MergeStoreStatus(storeDetail.Status, storeDetail.VendorStatus)
|
||||
name = remoteStoreInfo.Name
|
||||
if storeDetail.SyncStatus&(model.SyncFlagNewMask|model.SyncFlagStoreName) != 0 {
|
||||
if storeDetail.VendorStoreName != "" {
|
||||
name = storeDetail.VendorStoreName
|
||||
}
|
||||
// else {
|
||||
// name = jxutils.ComposeStoreName(storeDetail.Store.Name, model.VendorIDMTWM)
|
||||
// }
|
||||
//创建成功后进行绑定
|
||||
bindInfo := &shop_bindStoreFreight_request.ShopBindStoreFreightParam{
|
||||
StoreId: vendorStoreID,
|
||||
FreightId: resp.TemplateId,
|
||||
}
|
||||
store := fmt.Sprintf("门店id:%d,门店名称:%s,第三方门店状态:%d,本地修改前门店状态%d,本地门店修改后状态:%d,第三方平台Id(美团):%s", storeID, remoteStoreInfo.Name, remoteStoreInfo.IsOnline, storeDetail.Status, mergedStoreStatus, storeDetail.VendorOrgCode)
|
||||
event.AddOperateEvent(jxcontext.AdminCtx, jxcontext.AdminCtx.GetTrackInfo(), store, "", "", 10, "UpdateStore")
|
||||
// openLevel, isOnline := bizStatusJX2Mtwm(mergedStoreStatus)
|
||||
//TODO 美团暂时不用那个电话
|
||||
phone := storeDetail.Tel1
|
||||
// if storeDetail.MarketManPhone != "" {
|
||||
// phone = storeDetail.MarketManPhone
|
||||
// } else {
|
||||
// phone = model.VendorStoreTel
|
||||
// }
|
||||
params := map[string]interface{}{
|
||||
"name": name, //jxutils.ComposeStoreName(storeDetail.Store.Name, model.VendorIDMTWM),
|
||||
"address": storeDetail.Address, // 美团好像地址也不能改的?
|
||||
"longitude": jxutils.IntCoordinate2Standard(int(remoteStoreInfo.Longitude)),
|
||||
"latitude": jxutils.IntCoordinate2Standard(int(remoteStoreInfo.Latitude)),
|
||||
"phone": phone,
|
||||
"shipping_fee": remoteStoreInfo.ShippingFee,
|
||||
"shipping_time": remoteStoreInfo.ShippingTime,
|
||||
"open_level": remoteStoreInfo.OpenLevel,
|
||||
"is_online": remoteStoreInfo.IsOnline,
|
||||
"third_tag_name": remoteStoreInfo.ThirdTagName,
|
||||
"promotion_info": storeDetail.PromoteInfo,
|
||||
_, err1 := api.BindFreightTemplate(bindInfo)
|
||||
if err != nil {
|
||||
return err1
|
||||
}
|
||||
// globals.SugarLogger.Debug(utils.Format4Output(params, false))
|
||||
if globals.EnableMtwmStoreWrite {
|
||||
errList.AddErr(mtapi.PoiSave(storeDetail.VendorStoreID, params))
|
||||
//并写入数据库
|
||||
freightInfo := model.FreightTemplate{
|
||||
StoreID: storeID,
|
||||
VendorStoreID: vendorStoreID,
|
||||
TemplateID: resp.TemplateId,
|
||||
}
|
||||
// PoiSave有时会报错:商家已接入美团配送,不可修改门店配送相关信息,这里放弃信息修改
|
||||
// if err != nil {
|
||||
// if utils.IsErrMatch(err, utils.Int2Str(mtwmapi.ErrCodeCanNotModifyStoreDeliveryInfo), nil) {
|
||||
// globals.SugarLogger.Infof("mtwm UpdateStore vendorStoreID:%s, params:%s failed with err:%v", storeDetail.VendorStoreID, utils.Format4Output(params, true), err)
|
||||
// if storeDetail.SyncStatus&(model.SyncFlagNewMask|model.SyncFlagStoreStatus) != 0 {
|
||||
// err = p.UpdateStoreStatus(jxcontext.AdminCtx, storeDetail.VendorOrgCode, storeID, storeDetail.VendorStoreID, mergedStoreStatus)
|
||||
// } else {
|
||||
// err = nil
|
||||
// }
|
||||
// }
|
||||
// errList.AddErr(err)
|
||||
// }
|
||||
if storeDetail.SyncStatus&(model.SyncFlagNewMask|model.SyncFlagStoreStatus) != 0 {
|
||||
errList.AddErr(p.UpdateStoreStatus(jxcontext.AdminCtx, storeDetail.VendorOrgCode, storeID, storeDetail.VendorStoreID, mergedStoreStatus))
|
||||
}
|
||||
errList.AddErr(p.UpdateStoreOpTime(jxcontext.AdminCtx, storeDetail.VendorOrgCode, storeID, storeDetail.VendorStoreID, storeDetail.GetOpTimeList()))
|
||||
// errList.AddErr(p.UpdateStoreBoxFee(jxcontext.AdminCtx, storeDetail.VendorOrgCode, storeID, storeDetail.VendorStoreID))
|
||||
return errList.GetErrListAsOne()
|
||||
}
|
||||
|
||||
func (p *PurchaseHandler) RefreshAllStoresID(ctx *jxcontext.Context, parentTask tasksch.ITask, isAsync bool) (hint string, err error) {
|
||||
return "", errors.New("美团外卖不支持此操作")
|
||||
}
|
||||
|
||||
func (p *PurchaseHandler) onStoreStatusChanged(msg *mtwmapi.CallbackMsg) (response *mtwmapi.CallbackResponse) {
|
||||
var err error
|
||||
vendorStoreID := msg.FormData.Get("app_poi_code")
|
||||
storeStatus := 0
|
||||
if msg.Cmd == mtwmapi.MsgTypeStoreStatusChanged {
|
||||
poiStatus := int(utils.Str2Int64(msg.FormData.Get("poi_status")))
|
||||
if poiStatus == mtwmapi.MsgPoiStatusOpened {
|
||||
storeStatus = model.StoreStatusOpened
|
||||
} else if poiStatus == mtwmapi.MsgPoiStatusClosed {
|
||||
storeStatus = model.StoreStatusClosed
|
||||
} else if poiStatus == mtwmapi.MsgPoiStatusOffline {
|
||||
storeStatus = model.StoreStatusDisabled
|
||||
} else {
|
||||
storeStatus, err = p.GetStoreStatus(jxcontext.AdminCtx, "", 0, vendorStoreID)
|
||||
}
|
||||
} else if msg.Cmd == mtwmapi.MsgTypeStoreAuditStatusChanged {
|
||||
auditDetails := []map[string]interface{}{}
|
||||
auditDetail := msg.FormData.Get("audit_detail")
|
||||
openFlag := false
|
||||
openCount := 0
|
||||
closeFlag := false
|
||||
if err = json.Unmarshal([]byte(auditDetail), &auditDetails); err == nil {
|
||||
for _, v := range auditDetails {
|
||||
if v["module_status"].(string) == "3" || v["module_status"].(string) == "5" || v["module_status"].(string) == "7" {
|
||||
closeFlag = true
|
||||
break
|
||||
}
|
||||
if v["module_status"].(string) == "6" {
|
||||
openCount++
|
||||
}
|
||||
}
|
||||
if openCount == len(auditDetails) {
|
||||
openFlag = true
|
||||
}
|
||||
if closeFlag {
|
||||
storeStatus = model.StoreStatusDisabled
|
||||
} else if openFlag {
|
||||
storeStatus = model.StoreStatusOpened
|
||||
} else {
|
||||
storeStatus = model.StoreStatusClosed
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if err == nil {
|
||||
err = partner.CurStoreManager.OnStoreStatusChanged(vendorStoreID, model.VendorIDMTWM, storeStatus)
|
||||
}
|
||||
response = mtwmapi.Err2CallbackResponse(err, "")
|
||||
// 操作日志(美团外卖)
|
||||
ctx := jxcontext.AdminCtx
|
||||
store := fmt.Sprintf("美团外卖回调门店改变回调(营业状态/审核状态):门店id:%s,美团门店状态:%d.[121营业,120休息,18上线,19下线],本地修改后状态[%d]", vendorStoreID, int(utils.Str2Int64(msg.FormData.Get("poi_status"))), storeStatus)
|
||||
event.AddOperateEvent(ctx, ctx.GetTrackInfo(), store, "", "", 10, "UpdateStore")
|
||||
return response
|
||||
}
|
||||
|
||||
func (p *PurchaseHandler) GetStoreStatus(ctx *jxcontext.Context, vendorOrgCode string, storeID int, vendorStoreID string) (storeStatus int, err error) {
|
||||
result, err := getAPI(vendorOrgCode, storeID, "").PoiGet(vendorStoreID)
|
||||
if err == nil {
|
||||
return bizStatusMtwm2JX(result.OpenLevel, result.IsOnline), nil
|
||||
}
|
||||
return 0, err
|
||||
}
|
||||
|
||||
func (p *PurchaseHandler) EnableAutoAcceptOrder(ctx *jxcontext.Context, vendorOrgCode string, storeID int, vendorStoreID string, isSetEnable bool) (err error) {
|
||||
return err
|
||||
}
|
||||
|
||||
func (c *PurchaseHandler) UpdateStoreStatus(ctx *jxcontext.Context, vendorOrgCode string, storeID int, vendorStoreID string, status int) (err error) {
|
||||
openLevel, isOnline := bizStatusJX2Mtwm(status)
|
||||
if globals.EnableMtwmStoreWrite {
|
||||
if isOnline != mtwmapi.PoiStatusOnline {
|
||||
err = getAPI(vendorOrgCode, storeID, vendorStoreID).PoiOffline(vendorStoreID)
|
||||
} else {
|
||||
if err = getAPI(vendorOrgCode, storeID, vendorStoreID).PoiOnline(vendorStoreID); err == nil { // 这个函数成功返回也并不表示上线成功。。。
|
||||
remoteStoreInfo, err2 := getAPI(vendorOrgCode, storeID, vendorStoreID).PoiGet(vendorStoreID)
|
||||
if err = err2; err != nil {
|
||||
return err
|
||||
}
|
||||
if remoteStoreInfo.IsOnline == mtwmapi.PoiStatusOnline {
|
||||
if openLevel == mtwmapi.PoiOpenLevelHaveRest {
|
||||
err = getAPI(vendorOrgCode, storeID, vendorStoreID).PoiClose(vendorStoreID)
|
||||
} else {
|
||||
err = getAPI(vendorOrgCode, storeID, vendorStoreID).PoiOpen(vendorStoreID)
|
||||
}
|
||||
} else {
|
||||
err = errors.New("门店还未上线,不能修改营业状态")
|
||||
}
|
||||
store := fmt.Sprintf("美团外卖回调门店改变回调(营业状态/审核状态):门店id:%s,美团门店状态:%d.[121营业,120休息,18上线,19下线],本地修改后状态[%d]", vendorStoreID, remoteStoreInfo.OpenLevel, openLevel)
|
||||
event.AddOperateEvent(ctx, ctx.GetTrackInfo(), store, "", "", 10, "UpdateStore")
|
||||
}
|
||||
}
|
||||
}
|
||||
return err
|
||||
}
|
||||
|
||||
func errOpStr2Int16(str string) []int16 {
|
||||
list := strings.Split(str, "~")
|
||||
if len(list) >= 2 {
|
||||
return []int16{jxutils.StrTime2JxOperationTime(list[0]+":00", 0), jxutils.StrTime2JxOperationTime(list[1]+":00", 2359)}
|
||||
if err = dao.CreateEntity(db, freightInfo); err != nil {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func getOpTimeListFromErr(err error) (opTimeList []int16) {
|
||||
if errExt, ok := err.(*utils.ErrorWithCode); ok && errExt.IntCode() == mtwmapi.ErrCodeOpFailed {
|
||||
if result := opTimeErrReg.FindStringSubmatch(errExt.ErrMsg()); len(result) >= 2 {
|
||||
timeStrList := strings.Split(result[1], ",")
|
||||
for _, v := range timeStrList {
|
||||
v = utils.TrimBlankChar(v)
|
||||
if len(v) == len("00:00~02:00") {
|
||||
opTimeList = append(opTimeList, errOpStr2Int16(v)...)
|
||||
}
|
||||
}
|
||||
}
|
||||
// /shop/bindStoreFreight 门店绑定运费模版
|
||||
//门店绑定运费模版,运费模版必须属于门店关联的抖店,且门店与运费模版是一对一关系
|
||||
func (P *PurchaseHandler) ShopBindStoreFreight(storeID, freightID int64) error {
|
||||
param := &shop_bindStoreFreight_request.ShopBindStoreFreightParam{
|
||||
StoreId: storeID,
|
||||
FreightId: freightID,
|
||||
}
|
||||
return opTimeList
|
||||
api := getAPI("", int(storeID), "")
|
||||
_, err := api.BindFreightTemplate(param)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// 此函数只是简单实现,不支持区间切分,只做单一区间限制
|
||||
func constrainOpTimeList(opTimeList, validOpTimeList []int16) (newOpTimeList []int16) {
|
||||
for k := 0; k < len(opTimeList); k += 2 {
|
||||
beginTime := opTimeList[k]
|
||||
endTime := opTimeList[k+1]
|
||||
for k2 := 0; k2 < len(validOpTimeList); k2 += 2 {
|
||||
beginTime2 := validOpTimeList[k2]
|
||||
endTime2 := validOpTimeList[k2+1]
|
||||
if beginTime >= beginTime2 && beginTime <= endTime2 {
|
||||
newOpTimeList = append(newOpTimeList, beginTime)
|
||||
newOpTimeList = append(newOpTimeList, int16(math.Min(float64(endTime), float64(endTime2))))
|
||||
} else if beginTime2 >= beginTime && beginTime2 <= endTime {
|
||||
newOpTimeList = append(newOpTimeList, beginTime2)
|
||||
newOpTimeList = append(newOpTimeList, int16(math.Min(float64(endTime), float64(endTime2))))
|
||||
}
|
||||
}
|
||||
// /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,
|
||||
}
|
||||
return newOpTimeList
|
||||
api := getAPI("", 0, utils.Int64ToStr(info.StoreId))
|
||||
resp, err := api.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
|
||||
}
|
||||
|
||||
func (c *PurchaseHandler) UpdateStoreOpTime(ctx *jxcontext.Context, vendorOrgCode string, storeID int, vendorStoreID string, opTimeList []int16) (err error) {
|
||||
shippingTime := openTimeJX2Mtwm(opTimeList)
|
||||
if globals.EnableMtwmStoreWrite {
|
||||
err = getAPI(vendorOrgCode, storeID, vendorStoreID).PoiShipTimeUpdate(vendorStoreID, shippingTime)
|
||||
if err != nil {
|
||||
shippingTime = ""
|
||||
if validOpTimeList := getOpTimeListFromErr(err); len(validOpTimeList) > 0 {
|
||||
shippingTime = openTimeJX2Mtwm(constrainOpTimeList(opTimeList, validOpTimeList))
|
||||
}
|
||||
if shippingTime != "" {
|
||||
err = getAPI(vendorOrgCode, storeID, vendorStoreID).PoiShipTimeUpdate(vendorStoreID, shippingTime)
|
||||
}
|
||||
}
|
||||
// /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 := getAPI("", 0, utils.Int64ToStr(info.StoreId)).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 := getAPI("", 0, utils.Int64ToStr(info.StoreId)).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 := getAPI("", 0, utils.Int64ToStr(info.StoreId)).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 {
|
||||
_, err = getAPI(vendorOrgCode, storeID, vendorStoreID).EditStore(params)
|
||||
}
|
||||
return err
|
||||
}
|
||||
|
||||
func (c *PurchaseHandler) GetAllStoresVendorID(ctx *jxcontext.Context, vendorOrgCode string) (vendorStoreIDs []string, err error) {
|
||||
vendorStoreIDs, err = getAPIWithoutToken(vendorOrgCode).PoiGetIDs()
|
||||
return vendorStoreIDs, err
|
||||
}
|
||||
|
||||
func (c *PurchaseHandler) UpdateStoreCustomID(ctx *jxcontext.Context, vendorOrgCode, vendorStoreID string, storeID int64) (err error) {
|
||||
return err
|
||||
}
|
||||
|
||||
func (c *PurchaseHandler) UpdateStoreBoxFee(ctx *jxcontext.Context, vendorOrgCode string, storeID int, vendorStoreID string) (err error) {
|
||||
boxFee, err := dao.GetSysConfigAsInt64(dao.GetDB(), model.ConfigSysMtwmBoxFee)
|
||||
if err == nil {
|
||||
if globals.EnableMtwmStoreWrite && globals.IsProductEnv() {
|
||||
err = getAPI(vendorOrgCode, storeID, vendorStoreID).PackagePriceUpdate(vendorStoreID, 1, int(boxFee))
|
||||
}
|
||||
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 := getAPI(vendorOrgCode, storeID, vendorStoreID).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
|
||||
}
|
||||
|
||||
func (c *PurchaseHandler) UpdateStoreLineStatus(ctx *jxcontext.Context, vendorOrgCode string, storeID int, vendorStoreID string, lineStatus int) (err error) {
|
||||
// 获取店铺所有平台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
|
||||
return nil, err
|
||||
}
|
||||
|
||||
func (P *PurchaseHandler) UpdateStoreLineStatus(ctx *jxcontext.Context, vendorOrgCode string, storeID int, vendorStoreID string, lineStatus int) (err error) {
|
||||
api := getAPI(vendorOrgCode, storeID, vendorStoreID)
|
||||
if lineStatus == model.StoreStatusOpened {
|
||||
err = getAPI(vendorOrgCode, storeID, vendorStoreID).PoiOnline(vendorStoreID)
|
||||
param := &shop_storeSuspend_request.ShopStoreSuspendParam{
|
||||
StoreId: utils.Str2Int64(vendorStoreID),
|
||||
}
|
||||
_, err = api.StoreSuspend(param)
|
||||
} else {
|
||||
err = getAPI(vendorOrgCode, storeID, vendorStoreID).PoiOffline(vendorStoreID)
|
||||
param := &shop_unsuspendStore_request.ShopUnsuspendStoreParam{
|
||||
StoreId: utils.Str2Int64(vendorStoreID),
|
||||
}
|
||||
_, err = api.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("抖店暂不支持此操作")
|
||||
}
|
||||
|
||||
func bizStatusJX2DouDian(status int) (onLine int) {
|
||||
if status == model.StoreStatusDisabled || status == model.StoreStatusClosed {
|
||||
return tiktok_api.StoreStatusOffline
|
||||
}
|
||||
return tiktok_api.StoreStatusOnline
|
||||
}
|
||||
|
||||
func (P *PurchaseHandler) DeleteStore(db *dao.DaoDB, storeID int, userName string) (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 (c *PurchaseHandler) GetOrderStatus(vendorOrgCode, vendorOrderID string) (status int, err error) {
|
||||
//TODO implement me
|
||||
panic("implement me")
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user