记得上下班打卡 | git大法好,push需谨慎

Commit e8329184 authored by sunyuntian's avatar sunyuntian

读json运费

parent ff1c9391
......@@ -64,7 +64,7 @@ public class KylinRedisConst {
public static final String ADMIN_BANNER_LIST = "kylin:bannerList";
public static final String RETURN_ADDRESS_CODE = "kylin:address:code";//退货地址
public static final String EXPRESS_TYPE = "express:type";//退货地址
public static final String EXPRESS_TYPE = "express:type";
public static final String KYLIN_EXPRESS_MODULES = "kylin:express:modules";
......
......@@ -102,7 +102,6 @@ public class ToolServiceImpl implements IToolService {
mongoVoUtils.orderSetMongo(orderCode, expressPhone);
//存redis
dataUtils.orderSetRedis(orderCode);
Object o = redisDataSourceUtil.getRedisKylinUtil().get("kylin:order:id:201373316981841927358500");
return upd;
}
}
package com.liquidnet.service.feign.platform.kylin;
import com.liquidnet.service.base.ResponseDto;
import feign.hystrix.FallbackFactory;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.stereotype.Component;
import org.springframework.web.bind.annotation.GetMapping;
@Component
@FeignClient(
name = "liquidnet-service-platform",
contextId = "FeignPlatformFreightClient",
path = "platform",
url = "${liquidnet.service.platform.url}",
fallback = FallbackFactory.Default.class
)
public interface FeignPlatformFreightClient {
@GetMapping("freightCharge/get")
ResponseDto<Object> getFreightCharge();
}
......@@ -3,6 +3,7 @@ package com.liquidnet.service.executor.main.handler;
import com.liquidnet.commons.lang.util.JsonUtils;
import com.liquidnet.service.base.ResponseDto;
import com.liquidnet.service.feign.kylin.task.FeignPlatformAlipayBackClient;
import com.liquidnet.service.feign.platform.kylin.FeignPlatformFreightClient;
import com.liquidnet.service.feign.platform.task.FeignPlatformCandyTaskClient;
import com.xxl.job.core.biz.model.ReturnT;
import com.xxl.job.core.handler.annotation.XxlJob;
......@@ -22,6 +23,9 @@ public class PlatformTaskHandler {
private FeignPlatformAlipayBackClient feignPlatformAlipayBackClient;
@Autowired
private FeignPlatformCandyTaskClient feignPlatformCandyTaskClient;
@Autowired
private FeignPlatformFreightClient feignPlatformFreightClient;
@XxlJob(value = "sev-platform:alipayActiveCallbackHandler")
public ReturnT<String> alipayActiveCallbackHandler() {
......@@ -110,4 +114,22 @@ public class PlatformTaskHandler {
return fail;
}
}
//运费
@XxlJob(value = "sev-platform:getFreightChargeHandler")
public ReturnT<String> getFreightChargeHandler() {
try {
ResponseDto<Object> dto = feignPlatformFreightClient.getFreightCharge();
String dtoStr = JsonUtils.toJson(dto);
log.info("result of handler:{}", dtoStr);
ReturnT<String> success = ReturnT.SUCCESS;
success.setMsg(dtoStr);
return success;
} catch (Exception e) {
log.error("exception of handler:{}", e.getMessage(), e);
ReturnT<String> fail = ReturnT.FAIL;
fail.setMsg(e.getLocalizedMessage());
return fail;
}
}
}
package com.liquidnet.service.platform.service.impl.kylin;
import com.alibaba.fastjson.JSONObject;
import com.liquidnet.common.cache.redis.util.RedisDataSourceUtil;
import com.liquidnet.common.cache.redis.util.RedisUtil;
import com.liquidnet.commons.lang.util.CollectionUtil;
import com.liquidnet.commons.lang.util.IDGenerator;
import com.liquidnet.commons.lang.util.JsonUtils;
import com.liquidnet.service.kylin.constant.KylinRedisConst;
import com.liquidnet.service.kylin.dao.KylinFreightChargeDao;
import com.liquidnet.service.kylin.dto.vo.KylinExpressModuleVo;
import com.liquidnet.service.kylin.mapper.KylinFreightChargeMapper;
import com.liquidnet.service.platform.utils.JSONUtils;
import com.liquidnet.service.platform.utils.ShunfengSignUtils;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@Slf4j
@Service
public class KylinFreightChargeServiceImpl {
@Value("${liquidnet.express.shunfeng.jProvince}")
private String jProvince;
@Value("${liquidnet.express.shunfeng.jCity}")
private String jCity;
@Value("${liquidnet.express.shunfeng.jAddress}")
private String jAddress;
@Autowired
private ShunfengSignUtils shunfengSignUtils;
@Autowired
private RedisDataSourceUtil redisDataSourceUtil;
@Autowired
private KylinFreightChargeMapper kylinFreightChargeMapper;
@Autowired
private JSONUtils jsonUtils;
public void getFreightCharge() {
Map<String, String> hBody = new HashMap<>();
String jProvince="云南省";
String jCity="昆明市";
String jAddress="五华区";
String addressCode= "530102";//区code
hBody.put("jProvince", jProvince);
hBody.put("jProvince", jProvince); //寄件地址
hBody.put("jCity", jCity);
hBody.put("jAddress", jAddress);
hBody.put("dProvince", "北京市");
hBody.put("dCity", "北京");
hBody.put("dAddress", "东城区");
String expressType = "1";
hBody.put("expressType", "1");
try {
// 生成签名并请求
String result = shunfengSignUtils.generateSignatureAndRequestNew(hBody, "/public/order/v1/getFreight");
HashMap hashMap = JsonUtils.fromJson(result, HashMap.class);
HashMap<String,String> map = (HashMap<String, String>) hashMap.get("result");
map.put("address",jProvince+":"+jCity+":"+jAddress);
KylinFreightChargeDao kylinFreightCharge = KylinFreightChargeDao.getNew();
kylinFreightCharge.setFieldsId(IDGenerator.nextTimeId2());
kylinFreightCharge.setProvince(jProvince);
kylinFreightCharge.setCity(jCity);
kylinFreightCharge.setAdname(jAddress);
kylinFreightCharge.setPrice(map.get("price"));
kylinFreightCharge.setAdcode(addressCode);
kylinFreightCharge.setBusinessType(map.get("businessType"));
kylinFreightCharge.setBusinessTypeDesc(map.get("businessTypeDesc"));
String fileName = KylinFreightChargeServiceImpl.class.getClassLoader().getResource("city.json").getPath();
String s = jsonUtils.readJsonFile(fileName);
List<HashMap> provinceListMap = JSONObject.parseArray(s, HashMap.class);
long startTime = System.currentTimeMillis();
for (Map pMap : provinceListMap) {
String dProvince = (String) pMap.get("name");
List<HashMap> cityListMap = (List<HashMap>) pMap.get("districts");
for (Map CMap : cityListMap) {
String dCity = (String) CMap.get("name");
List<HashMap> adListMap = (List<HashMap>) CMap.get("districts");
for (Map adMap : adListMap) {
//获取快运所有类型
List<KylinExpressModuleVo> obj = (List<KylinExpressModuleVo>) redisDataSourceUtil.getRedisKylinUtil().get(KylinRedisConst.KYLIN_EXPRESS_MODULES);
if (null != obj) {
for (KylinExpressModuleVo kylinExpressModuleVo : obj) {
String productCode = kylinExpressModuleVo.getProductCode().toString(); //快件类型码
String adcode = (String) adMap.get("adcode");
String dAddress = (String) adMap.get("name");
hBody.put("expressType", productCode);
hBody.put("dProvince", dProvince);
hBody.put("dCity", dCity);
hBody.put("dAddress", dAddress);
KylinFreightChargeDao kylinFreightCharge = KylinFreightChargeDao.getNew();
try {
// 生成签名并请求
String result = shunfengSignUtils.generateSignatureAndRequestNew(hBody, "/public/order/v1/getFreight");
HashMap hashMap = JsonUtils.fromJson(result, HashMap.class);
HashMap<String, String> map = (HashMap<String, String>) hashMap.get("result");
kylinFreightCharge.setFieldsId(IDGenerator.nextTimeId2());
kylinFreightCharge.setProvince(dProvince);
kylinFreightCharge.setCity(dCity);
kylinFreightCharge.setAdname(dAddress);
kylinFreightCharge.setPrice(map.get("price"));
kylinFreightCharge.setAdcode(adcode);
kylinFreightCharge.setBusinessType(map.get("businessType"));
kylinFreightCharge.setBusinessTypeDesc(map.get("businessTypeDesc"));
} catch (Exception e) {
e.printStackTrace();
log.error("顺丰接口调用失败", e, kylinFreightCharge.getProvince() + " " + kylinFreightCharge.getCity() + " " + kylinFreightCharge.getAdname());
}
//存数据库
int i= kylinFreightChargeMapper.setFreightCharge(kylinFreightCharge);
//存redis
redisDataSourceUtil.getRedisKylinUtil().set(KylinRedisConst.RETURN_ADDRESS_CODE+addressCode+KylinRedisConst.EXPRESS_TYPE+expressType,kylinFreightCharge);
}catch (Exception e) {
e.printStackTrace();
log.error("顺丰接口调用失败", e);
//存数据库
int i = kylinFreightChargeMapper.setFreightCharge(kylinFreightCharge);
//存redis
redisDataSourceUtil.getRedisKylinUtil().set(KylinRedisConst.RETURN_ADDRESS_CODE + adcode + KylinRedisConst.EXPRESS_TYPE + productCode, kylinFreightCharge);
}
}
}
}
}
log.info("耗时:{}", (System.currentTimeMillis() - startTime) + "毫秒");
}
}
package com.liquidnet.service.platform.utils;
import com.alibaba.fastjson.JSON;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
......@@ -10,30 +11,35 @@ import java.io.*;
public class JSONUtils {
/**
* 读取json文件
* @param fileName json文件路径
*
* @param fileName json文件路径
* @return
*/
public static String readJsonFile(String fileName) {
//fileName = JsonTest.class.getClassLoader().getResource("city.json").getPath();
//fileName = JSONUtils.class.getClassLoader().getResource("city.json").getPath();
File jsonFile = new File(fileName);
String jsonStr = "";
log.info("————开始读取" + jsonFile.getPath() + "文件————");
//System.out.println("————开始读取" + jsonFile.getPath() + "文件————");
try {
FileReader fileReader = new FileReader(jsonFile);
Reader reader = new InputStreamReader(new FileInputStream(jsonFile), "utf-8");
int ch = 0;
StringBuffer sb = new StringBuffer();
while ((ch = reader.read()) != -1) {
sb.append((char) ch); }fileReader.close();
sb.append((char) ch);
}
fileReader.close();
reader.close();
jsonStr = sb.toString();
log.info("————读取" + jsonFile.getPath() + "文件结束!————");
//System.out.println("————读取" + jsonFile.getPath() + "文件结束!————");
return jsonStr; } catch (Exception e) {
return jsonStr;
} catch (Exception e) {
log.info("————读取" + jsonFile.getPath() + "文件出现异常,读取失败!————");
// System.out.println("————读取" + jsonFile.getPath() + "文件出现异常,读取失败!————");
e.printStackTrace();
return null; } }}
return null;
}
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment