449 lines
16 KiB
Go
449 lines
16 KiB
Go
package jdshop
|
||
|
||
import (
|
||
"encoding/base64"
|
||
"encoding/json"
|
||
"fmt"
|
||
"git.rosy.net.cn/jx-callback/globals"
|
||
"strings"
|
||
"time"
|
||
|
||
"git.rosy.net.cn/baseapi/platformapi/jdshopapi"
|
||
"git.rosy.net.cn/baseapi/utils"
|
||
"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/api"
|
||
)
|
||
|
||
func (p *PurchaseHandler) ReadStore(ctx *jxcontext.Context, vendorOrgCode, vendorStoreID string) (storeDetail *dao.StoreDetail, err error) {
|
||
// result, err := api.JdShopAPI.NewInfoList(utils.Str2Int64(vendorStoreID))
|
||
// storeDetail.VendorStoreID = vendorStoreID
|
||
// storeDetail.Status = JdsStatus2jxStatus(result.StoreStatus)
|
||
result2, err := api.JdShopAPI.QueryEntityStore(utils.Str2Int64(vendorStoreID))
|
||
if result2 == nil {
|
||
return storeDetail, fmt.Errorf("未查询到该平台门店,平台门店ID:[%v]", vendorStoreID)
|
||
}
|
||
storeDetail = &dao.StoreDetail{}
|
||
storeDetail.ID = utils.Str2Int(result2.ExStoreID)
|
||
storeDetail.Name = result2.StoreName
|
||
storeDetail.Address = result2.Address
|
||
storeDetail.Tel1 = result2.Phone
|
||
storeDetail.DistrictCode = result2.AddrCode
|
||
zbs := strings.Split(result2.Coordinate, ",")
|
||
storeDetail.Lat = jxutils.StandardCoordinate2Int(utils.Str2Float64(zbs[0]))
|
||
storeDetail.Lng = jxutils.StandardCoordinate2Int(utils.Str2Float64(zbs[1]))
|
||
return storeDetail, err
|
||
}
|
||
|
||
// stoerIDs为nil表示所有
|
||
func (p *PurchaseHandler) UpdateStore(db *dao.DaoDB, storeID int, userName string) (err error) {
|
||
store, err := dao.GetStoreDetail(db, storeID, model.VendorIDJDShop, "2")
|
||
if err != nil {
|
||
return err
|
||
}
|
||
data, _, err := jxutils.DownloadFileByURL(jdshopapi.JdsStoreImg)
|
||
timeMap := map[string]string{
|
||
"businessBeginTime": int2TimeStr(int(store.OpenTime1)),
|
||
"businessEndTime": int2TimeStr(int(store.CloseTime1)),
|
||
}
|
||
timeJSON, _ := json.Marshal(timeMap)
|
||
updateEntityStoreParam := &jdshopapi.UpdateEntityStoreParam{
|
||
StoreID: utils.Str2Int(store.VendorStoreID),
|
||
//Name: store.Name,
|
||
AddCode: store.JdsCode,
|
||
AddCodeName: store.DistrictName,
|
||
AddName: store.ProvinceName + store.CityName + store.DistrictName + "@!" + store.Address,
|
||
Coordinate: utils.Float64ToStr(jxutils.IntCoordinate2Standard(store.Lat)) + "," + utils.Float64ToStr(jxutils.IntCoordinate2Standard(store.Lng)),
|
||
Phone: store.Tel1,
|
||
ExtendJSON: string(timeJSON),
|
||
ImageFile: base64.StdEncoding.EncodeToString(data),
|
||
CustomerID: utils.Int2Str(store.ID),
|
||
}
|
||
if store.JdsStreetCode != 0 {
|
||
updateEntityStoreParam.AddCode = store.JdsStreetCode
|
||
}
|
||
if updateEntityStoreParam.AddCode == 0 {
|
||
updateEntityStoreParam.AddCode = store.JdCode
|
||
}
|
||
//url, _ := getAPI("2").UploadImageNew(data, "2659335b16e3880e367759b8fc675933.tem.png")
|
||
ex := store.LicenceExpire
|
||
if ex == "" {
|
||
ex = utils.Time2Str(utils.Str2Time(store.LicenceValid).AddDate(20, 0, 0))
|
||
}
|
||
if !strings.Contains(ex, "00:00:00") {
|
||
ex += " 00:00:00"
|
||
}
|
||
var url2 string
|
||
if store.Licence != "" {
|
||
data2, _, _ := jxutils.DownloadFileByURL(store.Licence)
|
||
fileName := store.Licence[strings.LastIndex(store.Licence, "/")+1 : len(store.Licence)]
|
||
url2, _ = getAPI("2").UploadImageNew(data2, fileName)
|
||
}
|
||
storeName := store.Name
|
||
if strings.Contains(storeName, "(") {
|
||
storeName = storeName[0:strings.Index(storeName, "(")] + storeName[strings.Index(storeName, ")")+3:len(storeName)]
|
||
}
|
||
if strings.Contains(storeName, "(") {
|
||
storeName = storeName[0:strings.Index(storeName, "(")] + storeName[strings.Index(storeName, ")")+3:len(storeName)]
|
||
}
|
||
if strings.Contains(storeName, ".") {
|
||
storeName = strings.ReplaceAll(storeName, ".", "")
|
||
}
|
||
if strings.Contains(storeName, "-") {
|
||
storeName = strings.ReplaceAll(storeName, "-", "")
|
||
}
|
||
if strings.Contains(storeName, " ") {
|
||
storeName = strings.ReplaceAll(storeName, " ", "")
|
||
}
|
||
storeName = globals.StoreName + strings.ReplaceAll(storeName, "店", "") + "生鲜店"
|
||
if len(storeName) > 30 {
|
||
storeName = utils.LimitUTF8StringLen2(storeName, 30)
|
||
}
|
||
if storeName != store.Name {
|
||
updateEntityStoreParam.Name = storeName
|
||
}
|
||
err = api.JdShopAPI.UpdateEntityStore(updateEntityStoreParam)
|
||
detail, _ := api.JdShopAPI.ShopDetail(utils.Str2Int(store.VendorStoreID))
|
||
if err == nil && detail != nil {
|
||
param := &jdshopapi.UpdateBasicParam{
|
||
StoreID: detail.StoreID,
|
||
StoreName: detail.StoreName,
|
||
CategoryID2: detail.CategoryID2,
|
||
Coordinate: detail.Coordinate,
|
||
BussinessBeginTime: detail.BussinessBeginTime,
|
||
BussinessEndTime: detail.BussinessEndTime,
|
||
ImgURL: detail.ImgURL,
|
||
StorePhone: detail.StorePhone,
|
||
AddName: detail.AddName,
|
||
AddCode3: detail.AddCode3,
|
||
AddCode1: detail.AddCode1,
|
||
AddCode2: detail.AddCode2,
|
||
CategoryID1: detail.CategoryID1,
|
||
ExStoreID: store.ID,
|
||
}
|
||
var (
|
||
url3 string
|
||
idCode string
|
||
startTime string
|
||
)
|
||
if store.IDCardFront != "" {
|
||
data2, _, _ := jxutils.DownloadFileByURL(store.IDCardFront)
|
||
fileName := store.IDCardFront[strings.LastIndex(store.IDCardFront, "/")+1 : len(store.IDCardFront)]
|
||
url3, _ = api.JdShopAPI.UploadImageNew(data2, fileName)
|
||
} else {
|
||
data2, _, _ := jxutils.DownloadFileByURL("http://image.jxc4.com/image/a9bfc170a950ab9a4c76bd10b48b222b.tem.jpg")
|
||
fileName := "a9bfc170a950ab9a4c76bd10b48b222b.tem.jpg"
|
||
url3, _ = api.JdShopAPI.UploadImageNew(data2, fileName)
|
||
}
|
||
if store.IDCode == "" {
|
||
idCode = "610126198012230014"
|
||
} else {
|
||
idCode = store.IDCode
|
||
}
|
||
if store.IDValid == "" {
|
||
startTime = "2013-01-25 00:00:00"
|
||
} else {
|
||
startTime = utils.Time2Str(utils.Str2Time(store.IDValid))
|
||
}
|
||
ex2 := store.IDExpire
|
||
if ex2 == "" {
|
||
ex2 = utils.Time2Str(utils.Str2Time(store.IDValid).AddDate(20, 0, 0))
|
||
}
|
||
if !strings.Contains(ex2, "00:00:00") {
|
||
ex2 += " 00:00:00"
|
||
}
|
||
if url2 != "" {
|
||
param.CategoryID1 = 34
|
||
param.CategoryID2 = 62
|
||
param.QualificationRequests = []*jdshopapi.QualificationRequests{
|
||
&jdshopapi.QualificationRequests{
|
||
QualificationID: 41,
|
||
QualificationName: "营业执照",
|
||
QualificationNo: store.LicenceCode,
|
||
QualificationURL: url2,
|
||
StartTime: utils.Time2Str(utils.Str2Time(store.LicenceValid)),
|
||
EndingTime: ex,
|
||
Time: []string{utils.Time2Str(utils.Str2Time(store.LicenceValid)), ex},
|
||
},
|
||
&jdshopapi.QualificationRequests{
|
||
QualificationID: 42,
|
||
QualificationName: "身份证件",
|
||
QualificationNo: idCode,
|
||
QualificationURL: url3,
|
||
StartTime: startTime,
|
||
EndingTime: ex2,
|
||
Time: []string{startTime, ex2},
|
||
},
|
||
}
|
||
}
|
||
err = getAPI("2").UpdateBasic(param)
|
||
}
|
||
if store.SyncStatus&model.SyncFlagStoreStatus != 0 {
|
||
mergedStoreStatus := jxutils.MergeStoreStatus(store.Status, store.VendorStatus)
|
||
p.UpdateStoreStatus(jxcontext.AdminCtx, store.VendorOrgCode, storeID, store.VendorStoreID, mergedStoreStatus)
|
||
}
|
||
if err == nil {
|
||
err = getAPI("2").UpdateExpand(utils.Str2Int(store.VendorStoreID))
|
||
}
|
||
return err
|
||
}
|
||
|
||
func (p *PurchaseHandler) CreateStore2(db *dao.DaoDB, storeID int, userName string, params map[string]interface{}, storeDetail *dao.StoreDetail) (vendorStoreID string, err error) {
|
||
store, err := dao.GetStoreDetail(db, storeID, model.VendorIDJDShop, "")
|
||
if err != nil {
|
||
return vendorStoreID, err
|
||
}
|
||
data, _, err := jxutils.DownloadFileByURL(jdshopapi.JdsStoreImg)
|
||
timeMap := map[string]string{
|
||
"businessBeginTime": int2TimeStr(int(store.OpenTime1)),
|
||
"businessEndTime": int2TimeStr(int(store.CloseTime1)),
|
||
}
|
||
timeJSON, _ := json.Marshal(timeMap)
|
||
createEntityStoreParam := &jdshopapi.CreateEntityStoreParam{
|
||
Name: store.Name,
|
||
AddCode: store.JdsCode,
|
||
AddCodeName: store.DistrictName,
|
||
AddName: store.ProvinceName + store.CityName + store.DistrictName + "@!" + store.Address,
|
||
Coordinate: utils.Float64ToStr(jxutils.IntCoordinate2Standard(store.Lat)) + "," + utils.Float64ToStr(jxutils.IntCoordinate2Standard(store.Lng)),
|
||
Phone: store.Tel1,
|
||
ExtendJSON: string(timeJSON),
|
||
ImageFile: base64.StdEncoding.EncodeToString(data),
|
||
CategoryName: jdshopapi.JdsStoreCategoryName,
|
||
CustomerID: utils.Int2Str(store.ID),
|
||
}
|
||
url, _ := getAPI("2").UploadImageNew(data, "2659335b16e3880e367759b8fc675933.tem.png")
|
||
ex := store.LicenceExpire
|
||
if ex == "" {
|
||
ex = utils.Time2Str(utils.Str2Time(store.LicenceValid).AddDate(20, 0, 0))
|
||
}
|
||
if !strings.Contains(ex, "00:00:00") {
|
||
ex += " 00:00:00"
|
||
}
|
||
var url2 string
|
||
if store.Licence != "" {
|
||
data2, _, _ := jxutils.DownloadFileByURL(store.Licence)
|
||
fileName := store.Licence[strings.LastIndex(store.Licence, "/")+1 : len(store.Licence)]
|
||
url2, _ = getAPI("2").UploadImageNew(data2, fileName)
|
||
}
|
||
storeName := store.Name
|
||
if strings.Contains(storeName, "(") {
|
||
storeName = storeName[0:strings.Index(storeName, "(")] + storeName[strings.Index(storeName, ")")+3:len(storeName)]
|
||
}
|
||
if strings.Contains(storeName, "(") {
|
||
storeName = storeName[0:strings.Index(storeName, "(")] + storeName[strings.Index(storeName, ")")+3:len(storeName)]
|
||
}
|
||
if strings.Contains(storeName, ".") {
|
||
storeName = strings.ReplaceAll(storeName, ".", "")
|
||
}
|
||
if strings.Contains(storeName, "-") {
|
||
storeName = strings.ReplaceAll(storeName, "-", "")
|
||
}
|
||
if strings.Contains(storeName, " ") {
|
||
storeName = strings.ReplaceAll(storeName, " ", "")
|
||
}
|
||
storeName = globals.StoreName + strings.ReplaceAll(storeName, "店", "") + "生鲜店"
|
||
if len(storeName) > 30 {
|
||
storeName = utils.LimitUTF8StringLen2(storeName, 30)
|
||
}
|
||
if storeName != store.Name {
|
||
createEntityStoreParam.Name = storeName
|
||
}
|
||
param := &jdshopapi.UpdateBasicParam{
|
||
StoreName: storeName,
|
||
CategoryID2: 4,
|
||
Coordinate: utils.Float64ToStr(jxutils.IntCoordinate2Standard(store.Lat)) + "," + utils.Float64ToStr(jxutils.IntCoordinate2Standard(store.Lng)),
|
||
BussinessBeginTime: int2TimeStr(int(store.OpenTime1)),
|
||
BussinessEndTime: int2TimeStr(int(store.CloseTime1)),
|
||
ImgURL: url,
|
||
StorePhone: store.Tel1,
|
||
AddName: store.Address,
|
||
AddCode3: store.JdsCode,
|
||
CategoryID1: 3,
|
||
}
|
||
var (
|
||
url3 string
|
||
idCode string
|
||
startTime string
|
||
)
|
||
if storeDetail.IDCardFront != "" {
|
||
data2, _, _ := jxutils.DownloadFileByURL(storeDetail.IDCardFront)
|
||
fileName := storeDetail.IDCardFront[strings.LastIndex(storeDetail.IDCardFront, "/")+1 : len(storeDetail.IDCardFront)]
|
||
url3, _ = api.JdShopAPI.UploadImageNew(data2, fileName)
|
||
} else {
|
||
data2, _, _ := jxutils.DownloadFileByURL("http://image.jxc4.com/image/a9bfc170a950ab9a4c76bd10b48b222b.tem.jpg")
|
||
fileName := "a9bfc170a950ab9a4c76bd10b48b222b.tem.jpg"
|
||
url3, _ = api.JdShopAPI.UploadImageNew(data2, fileName)
|
||
}
|
||
if storeDetail.IDCode == "" {
|
||
idCode = "610126198012230014"
|
||
} else {
|
||
idCode = storeDetail.IDCode
|
||
}
|
||
if storeDetail.IDValid == "" {
|
||
startTime = "2013-01-25 00:00:00"
|
||
} else {
|
||
startTime = utils.Time2Str(utils.Str2Time(storeDetail.IDValid))
|
||
}
|
||
ex2 := storeDetail.IDExpire
|
||
if ex2 == "" {
|
||
ex2 = utils.Time2Str(utils.Str2Time(storeDetail.IDValid).AddDate(20, 0, 0))
|
||
}
|
||
if !strings.Contains(ex2, "00:00:00") {
|
||
ex2 += " 00:00:00"
|
||
}
|
||
if url2 != "" {
|
||
param.CategoryID1 = 34
|
||
param.CategoryID2 = 62
|
||
param.QualificationRequests = []*jdshopapi.QualificationRequests{
|
||
&jdshopapi.QualificationRequests{
|
||
QualificationID: 41,
|
||
QualificationName: "营业执照",
|
||
QualificationNo: store.LicenceCode,
|
||
QualificationURL: url2,
|
||
StartTime: utils.Time2Str(utils.Str2Time(store.LicenceValid)),
|
||
EndingTime: ex,
|
||
Time: []string{utils.Time2Str(utils.Str2Time(store.LicenceValid)), ex},
|
||
},
|
||
&jdshopapi.QualificationRequests{
|
||
QualificationID: 42,
|
||
QualificationName: "身份证件",
|
||
QualificationNo: idCode,
|
||
QualificationURL: url3,
|
||
StartTime: startTime,
|
||
EndingTime: ex2,
|
||
Time: []string{startTime, ex2},
|
||
},
|
||
}
|
||
}
|
||
if store.JdsStreetCode != 0 {
|
||
createEntityStoreParam.AddCode = store.JdsStreetCode
|
||
param.AddCode3 = store.JdsStreetCode
|
||
}
|
||
if createEntityStoreParam.AddCode == 0 {
|
||
createEntityStoreParam.AddCode = store.JdCode
|
||
param.AddCode3 = store.JdCode
|
||
}
|
||
//证明这个店可能隶属直辖市或者东莞
|
||
if model.ZXCityCodeMap[store.CityCode] != "" {
|
||
result, _ := api.AutonaviAPI.GetCoordinateAreaInfo(jxutils.IntCoordinate2Standard(store.Lng), jxutils.IntCoordinate2Standard(store.Lat))
|
||
if result["regeocode"] != nil {
|
||
street := result["regeocode"].(map[string]interface{})["addressComponent"].(map[string]interface{})["township"].(string)
|
||
if street != "" {
|
||
result1, _ := api.JdShopAPI.GetProvince()
|
||
for _, v := range result1 {
|
||
if strings.Contains(store.CityName, v.AreaName) {
|
||
result2, _ := api.JdShopAPI.GetCity(v.AreaID)
|
||
for _, vv := range result2 {
|
||
if strings.Contains(store.DistrictName, vv.AreaName) {
|
||
result3, _ := api.JdShopAPI.GetCounty(vv.AreaID)
|
||
for _, vvv := range result3 {
|
||
if street == vvv.AreaName {
|
||
createEntityStoreParam.AddCode = vvv.AreaID
|
||
param.AddCode3 = vvv.AreaID
|
||
break
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
//vendorStoreID, err = api.JdShopAPI.CreateEntityStore(createEntityStoreParam)
|
||
if vendorStroeID2, err := getAPI("2").SubmitBasic(param); err == nil {
|
||
time.Sleep(time.Second)
|
||
err = getAPI("2").UpdateExpand(int(vendorStroeID2))
|
||
//var storeMap *model.StoreMap
|
||
//sql := `
|
||
// SELECT * FROM store_map WHERE deletad_at = ? AND store_id = ? AND vendor_id = ? AND vendor_org_code = ?
|
||
//`
|
||
//sqlParams := []interface{}{
|
||
// utils.DefaultTimeValue, storeID, model.VendorIDJDShop, "2",
|
||
//}
|
||
//err = dao.GetRow(db, &storeMap, sql, sqlParams)
|
||
//if storeMap != nil {
|
||
// storeMap.VendorStoreID = utils.Int64ToStr(vendorStroeID2)
|
||
// _, err = dao.UpdateEntity(db, storeMap, "VendorStoreID")
|
||
//}
|
||
vendorStoreID = utils.Int64ToStr(vendorStroeID2)
|
||
}
|
||
return vendorStoreID, err
|
||
}
|
||
|
||
func (p *PurchaseHandler) DeleteStore(db *dao.DaoDB, storeID int, userName string) (err error) {
|
||
// store, err := dao.GetStoreDetail(db, storeID, model.VendorIDJDShop)
|
||
// if err != nil {
|
||
// return err
|
||
// }
|
||
// err = api.JdShopAPI.DeleteStoresByID(utils.Str2Int64(store.VendorStoreID))
|
||
return err
|
||
}
|
||
|
||
func (p *PurchaseHandler) RefreshAllStoresID(ctx *jxcontext.Context, parentTask tasksch.ITask, isAsync bool) (hint string, err error) {
|
||
return hint, err
|
||
}
|
||
|
||
func (p *PurchaseHandler) GetStoreStatus(ctx *jxcontext.Context, vendorOrgCode string, storeID int, vendorStoreID string) (storeStatus int, err error) {
|
||
return storeStatus, 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) {
|
||
err = api.JdShopAPI.UpdateStatus(utils.Str2Int(vendorStoreID), jxStatus2JdsStatus(status))
|
||
return err
|
||
}
|
||
|
||
func (c *PurchaseHandler) UpdateStoreOpTime(ctx *jxcontext.Context, vendorOrgCode string, storeID int, vendorStoreID string, opTimeList []int16) (err error) {
|
||
return err
|
||
}
|
||
|
||
func (c *PurchaseHandler) GetAllStoresVendorID(ctx *jxcontext.Context, vendorOrgCode string) (vendorStoreIDs []string, err error) {
|
||
return vendorStoreIDs, err
|
||
}
|
||
|
||
func (c *PurchaseHandler) UpdateStoreCustomID(ctx *jxcontext.Context, vendorOrgCode, vendorStoreID string, storeID int64) (err error) {
|
||
return err
|
||
}
|
||
|
||
func int2TimeStr(time int) (str string) {
|
||
str += utils.Int2Str(time / 1000)
|
||
str += utils.Int2Str(time % 1000 / 100)
|
||
str += ":"
|
||
str += utils.Int2Str(time % 100 / 10)
|
||
str += utils.Int2Str(time % 10)
|
||
return str
|
||
}
|
||
|
||
func jxStatus2JdsStatus(status int) (result int) {
|
||
if status == model.StoreStatusOpened {
|
||
result = jdshopapi.JdsStoreStatusOnline
|
||
} else if status == model.StoreStatusHaveRest || status == model.StoreStatusClosed {
|
||
result = jdshopapi.JdsStoreStatusRest
|
||
} else {
|
||
result = jdshopapi.JdsStoreStatusDisable
|
||
}
|
||
return result
|
||
}
|
||
|
||
func JdsStatus2jxStatus(status int) (result int) {
|
||
if status == jdshopapi.JdsStoreStatusOnline {
|
||
result = model.StoreStatusOpened
|
||
} else if status == jdshopapi.JdsStoreStatusRest {
|
||
result = model.StoreStatusClosed
|
||
} else {
|
||
result = model.StoreStatusDisabled
|
||
}
|
||
return result
|
||
}
|
||
|
||
func (c *PurchaseHandler) UpdateStoreLineStatus(ctx *jxcontext.Context, vendorOrgCode string, storeID int, vendorStoreID string, lineStatus int) (err error) {
|
||
return err
|
||
}
|