- check store_map

This commit is contained in:
gazebo
2018-10-24 14:54:20 +08:00
parent 7b6c9fd73a
commit 508a949006
4 changed files with 100 additions and 88 deletions

View File

@@ -86,53 +86,56 @@ func (p *PurchaseHandler) ReadStore(vendorStoreID string) (*model.Store, error)
// stoerIDs为nil表示所有
func (p *PurchaseHandler) UpdateStore(db *dao.DaoDB, storeID int, userName string) (err error) {
var store tJdStoreInfo
var stores []*tJdStoreInfo
sql := `
SELECT t1.*, city.jd_code jd_city_code, district.jd_code jd_district_code, t2.status jd_store_status, t2.vendor_store_id,
IF(t1.updated_at > t2.updated_at, t1.last_operator, t2.last_operator) real_last_operator, t2.sync_status
FROM store t1
JOIN store_map t2 ON t1.id = t2.store_id AND t2.vendor_id = ?
JOIN store_map t2 ON t1.id = t2.store_id AND t2.vendor_id = ? AND (t2.deleted_at = ? OR t2.sync_status <> 0)
LEFT JOIN place city ON t1.city_code = city.code
LEFT JOIN place district ON t1.district_code = district.code
WHERE t1.id = ?
ORDER BY t2.updated_at DESC
LIMIT 1;
ORDER BY t2.updated_at
`
if err = dao.GetRow(db, &store, sql, model.VendorIDJD, storeID); err == nil {
outSystemID := ""
if store.SyncStatus&model.SyncFlagDeletedMask == 0 {
outSystemID = utils.Int2Str(int(store.ID))
}
params := map[string]interface{}{
"outSystemId": outSystemID, // todo 直接修改这个字段可能会有问题
"stationName": jxutils.ComposeStoreName(store.Name, partner.StoreNameSeparator, VendorStorePrefix),
"stationAddress": store.Address,
"serviceTimeStart1": JxOperationTime2JdOperationTime(store.OpenTime1),
"serviceTimeEnd1": JxOperationTime2JdOperationTime(store.CloseTime1),
"deliveryRangeType": store.DeliveryRangeType,
"coordinateType": 3, // 一直用高德
"lng": jxutils.IntCoordinate2Standard(store.Lng),
"lat": jxutils.IntCoordinate2Standard(store.Lat),
"city": store.JdCityCode,
"county": store.JdDistrictCode,
"phone": store.Tel1,
"mobile": store.Tel2,
}
if store.DeliveryRangeType == model.DeliveryRangeTypePolygon {
params["coordinatePoints"] = store.DeliveryRange
} else {
params["deliveryRangeRadius"] = utils.Str2Int64(store.DeliveryRange)
}
if err = dao.GetRows(db, &stores, sql, model.VendorIDJD, utils.DefaultTimeValue, storeID); err == nil {
for _, store := range stores {
outSystemID := ""
if store.SyncStatus&model.SyncFlagDeletedMask == 0 {
outSystemID = utils.Int2Str(int(store.ID))
}
params := map[string]interface{}{
"outSystemId": outSystemID, // todo 直接修改这个字段可能会有问题
"stationName": jxutils.ComposeStoreName(store.Name, partner.StoreNameSeparator, VendorStorePrefix),
"stationAddress": store.Address,
"serviceTimeStart1": JxOperationTime2JdOperationTime(store.OpenTime1),
"serviceTimeEnd1": JxOperationTime2JdOperationTime(store.CloseTime1),
"deliveryRangeType": store.DeliveryRangeType,
"coordinateType": 3, // 一直用高德
"lng": jxutils.IntCoordinate2Standard(store.Lng),
"lat": jxutils.IntCoordinate2Standard(store.Lat),
"city": store.JdCityCode,
"county": store.JdDistrictCode,
"phone": store.Tel1,
"mobile": store.Tel2,
}
if store.DeliveryRangeType == model.DeliveryRangeTypePolygon {
params["coordinatePoints"] = store.DeliveryRange
} else {
params["deliveryRangeRadius"] = utils.Str2Int64(store.DeliveryRange)
}
openTime2 := JxOperationTime2JdOperationTime(store.OpenTime2)
if openTime2 != 0 {
params["serviceTimeStart2"] = openTime2
params["serviceTimeEnd2"] = JxOperationTime2JdOperationTime(store.CloseTime2)
}
_, params["closeStatus"] = JxStoreStatus2JdStatus(jxutils.MergeStoreStatus(store.Status, store.JdStoreStatus))
// globals.SugarLogger.Debug(utils.Format4Output(params, false))
if globals.EnableStoreWrite {
err = api.JdAPI.UpdateStoreInfo4Open(store.VendorStoreID, store.RealLastOperator, params)
openTime2 := JxOperationTime2JdOperationTime(store.OpenTime2)
if openTime2 != 0 {
params["serviceTimeStart2"] = openTime2
params["serviceTimeEnd2"] = JxOperationTime2JdOperationTime(store.CloseTime2)
}
_, params["closeStatus"] = JxStoreStatus2JdStatus(jxutils.MergeStoreStatus(store.Status, store.JdStoreStatus))
// globals.SugarLogger.Debug(utils.Format4Output(params, false))
if globals.EnableStoreWrite {
if err = api.JdAPI.UpdateStoreInfo4Open(store.VendorStoreID, store.RealLastOperator, params); err != nil {
return err
}
}
}
}
return err