diff --git a/business/jxstore/initdata/initdata.go b/business/jxstore/initdata/initdata.go index 0036ec031..2b21c3b51 100644 --- a/business/jxstore/initdata/initdata.go +++ b/business/jxstore/initdata/initdata.go @@ -57,82 +57,92 @@ func insertPlace(ctx *jxcontext.Context, db *dao.DaoDB, parent *autonavi.Distric } func InitPlace(ctx *jxcontext.Context) (err error) { + placeList, err2 := api.AutonaviAPI.GetDistricts(autonavi.DistrictLevelDistrict, "") + if err = err2; err != nil { + return err + } + placeList = placeList[0].Districts db := dao.GetDB() - if err = TruncateTable(db, "place"); err == nil { - placeList, err2 := api.AutonaviAPI.GetDistricts(autonavi.DistrictLevelDistrict, "") - if err = err2; err != nil { - return err - } - placeList = placeList[0].Districts - dao.Begin(db) - defer func() { + dao.Begin(db) + defer func() { + if r := recover(); r != nil || err != nil { dao.Rollback(db) - }() - if err = insertPlace(ctx, db, nil, placeList); err != nil { - return err - } - updateSqls := []string{ - ` - UPDATE place t1 - JOIN jde_city t2 ON t1.code = t2.col_tencentAddressCode - SET t1.jd_code = t2.col_areaCode; - `, - ` - UPDATE place t1 - JOIN place t2 ON t1.parent_code = t2.code AND t2.jd_code != 0 - JOIN jde_district t3 ON t1.name = t3.col_areaName AND t2.jd_code = t3.col_cityCode - SET t1.jd_code = t3.col_areaCode - WHERE t1.level = 3; - `, - ` - UPDATE - place t1 - JOIN ebde_places t2 ON t1.name = t2.col_city_name - SET t1.ebai_code = t2.col_city_id - WHERE t1.level = 1 OR t1.level = 2; - `, - ` - UPDATE - place t1 - JOIN place t1p ON t1.parent_code = t1p.code - JOIN ebde_places t2 ON t1.name = t2.col_city_name - JOIN ebde_places t2p ON t2.col_parent_id = t2p.col_city_id AND t1p.ebai_code = t2p.col_city_id - SET t1.ebai_code = t2.col_city_id - WHERE t1.level = 3; - `, - ` - UPDATE - place t1 - JOIN mtpsdeliveryprice t2 ON t1.code = t2.citycode - SET t1.mtps_price = t2.price; - `, - ` - UPDATE - place t1 - JOIN mtpsdeliveryprice t2 ON t1.name LIKE CONCAT(t2.cityname, '%') - SET t1.mtps_price = t2.price - WHERE t1.level = 2 AND t1.mtps_price = 0; - `, - ` - UPDATE place t1 - LEFT JOIN ( - SELECT DISTINCT city_code - FROM store - UNION DISTINCT - SELECT DISTINCT place_code city_code - FROM sku_name_place_bind - ) t2 ON t1.code = t2.city_code - SET t1.enabled = 0 - WHERE t1.level = 2 AND t2.city_code IS NULL; - `, - } - for _, v := range updateSqls { - if _, err = dao.ExecuteSQL(db, v); err != nil { - return err + if r != nil { + panic(r) } } - dao.Commit(db) + }() + if _, err = dao.ExecuteSQL(db, ` + DELETE t1 + FROM place t1 + WHERE code > 9000000; + `); err != nil { + return err } + if err = insertPlace(ctx, db, nil, placeList); err != nil { + return err + } + updateSqls := []string{ + ` + UPDATE place t1 + JOIN jde_city t2 ON t1.code = t2.col_tencentAddressCode + SET t1.jd_code = t2.col_areaCode; + `, + ` + UPDATE place t1 + JOIN place t2 ON t1.parent_code = t2.code AND t2.jd_code != 0 + JOIN jde_district t3 ON t1.name = t3.col_areaName AND t2.jd_code = t3.col_cityCode + SET t1.jd_code = t3.col_areaCode + WHERE t1.level = 3; + `, + ` + UPDATE + place t1 + JOIN ebde_places t2 ON t1.name = t2.col_city_name + SET t1.ebai_code = t2.col_city_id + WHERE t1.level = 1 OR t1.level = 2; + `, + ` + UPDATE + place t1 + JOIN place t1p ON t1.parent_code = t1p.code + JOIN ebde_places t2 ON t1.name = t2.col_city_name + JOIN ebde_places t2p ON t2.col_parent_id = t2p.col_city_id AND t1p.ebai_code = t2p.col_city_id + SET t1.ebai_code = t2.col_city_id + WHERE t1.level = 3; + `, + ` + UPDATE + place t1 + JOIN mtpsdeliveryprice t2 ON t1.code = t2.citycode + SET t1.mtps_price = t2.price; + `, + ` + UPDATE + place t1 + JOIN mtpsdeliveryprice t2 ON t1.name LIKE CONCAT(t2.cityname, '%') + SET t1.mtps_price = t2.price + WHERE t1.level = 2 AND t1.mtps_price = 0; + `, + ` + UPDATE place t1 + LEFT JOIN ( + SELECT DISTINCT city_code + FROM store + UNION DISTINCT + SELECT DISTINCT place_code city_code + FROM sku_name_place_bind + ) t2 ON t1.code = t2.city_code + SET t1.enabled = 0 + WHERE t1.level = 2 AND t2.city_code IS NULL; + `, + } + for _, v := range updateSqls { + if _, err = dao.ExecuteSQL(db, v); err != nil { + return err + } + } + dao.Commit(db) return err }