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

Commit e8329184 authored by sunyuntian's avatar sunyuntian

读json运费

parent ff1c9391
...@@ -64,7 +64,7 @@ public class KylinRedisConst { ...@@ -64,7 +64,7 @@ public class KylinRedisConst {
public static final String ADMIN_BANNER_LIST = "kylin:bannerList"; public static final String ADMIN_BANNER_LIST = "kylin:bannerList";
public static final String RETURN_ADDRESS_CODE = "kylin:address:code";//退货地址 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"; public static final String KYLIN_EXPRESS_MODULES = "kylin:express:modules";
......
...@@ -102,7 +102,6 @@ public class ToolServiceImpl implements IToolService { ...@@ -102,7 +102,6 @@ public class ToolServiceImpl implements IToolService {
mongoVoUtils.orderSetMongo(orderCode, expressPhone); mongoVoUtils.orderSetMongo(orderCode, expressPhone);
//存redis //存redis
dataUtils.orderSetRedis(orderCode); dataUtils.orderSetRedis(orderCode);
Object o = redisDataSourceUtil.getRedisKylinUtil().get("kylin:order:id:201373316981841927358500");
return upd; 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; ...@@ -3,6 +3,7 @@ package com.liquidnet.service.executor.main.handler;
import com.liquidnet.commons.lang.util.JsonUtils; import com.liquidnet.commons.lang.util.JsonUtils;
import com.liquidnet.service.base.ResponseDto; import com.liquidnet.service.base.ResponseDto;
import com.liquidnet.service.feign.kylin.task.FeignPlatformAlipayBackClient; 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.liquidnet.service.feign.platform.task.FeignPlatformCandyTaskClient;
import com.xxl.job.core.biz.model.ReturnT; import com.xxl.job.core.biz.model.ReturnT;
import com.xxl.job.core.handler.annotation.XxlJob; import com.xxl.job.core.handler.annotation.XxlJob;
...@@ -22,6 +23,9 @@ public class PlatformTaskHandler { ...@@ -22,6 +23,9 @@ public class PlatformTaskHandler {
private FeignPlatformAlipayBackClient feignPlatformAlipayBackClient; private FeignPlatformAlipayBackClient feignPlatformAlipayBackClient;
@Autowired @Autowired
private FeignPlatformCandyTaskClient feignPlatformCandyTaskClient; private FeignPlatformCandyTaskClient feignPlatformCandyTaskClient;
@Autowired
private FeignPlatformFreightClient feignPlatformFreightClient;
@XxlJob(value = "sev-platform:alipayActiveCallbackHandler") @XxlJob(value = "sev-platform:alipayActiveCallbackHandler")
public ReturnT<String> alipayActiveCallbackHandler() { public ReturnT<String> alipayActiveCallbackHandler() {
...@@ -110,4 +114,22 @@ public class PlatformTaskHandler { ...@@ -110,4 +114,22 @@ public class PlatformTaskHandler {
return fail; 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; 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.RedisDataSourceUtil;
import com.liquidnet.common.cache.redis.util.RedisUtil; 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.IDGenerator;
import com.liquidnet.commons.lang.util.JsonUtils; import com.liquidnet.commons.lang.util.JsonUtils;
import com.liquidnet.service.kylin.constant.KylinRedisConst; import com.liquidnet.service.kylin.constant.KylinRedisConst;
import com.liquidnet.service.kylin.dao.KylinFreightChargeDao; 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.kylin.mapper.KylinFreightChargeMapper;
import com.liquidnet.service.platform.utils.JSONUtils;
import com.liquidnet.service.platform.utils.ShunfengSignUtils; import com.liquidnet.service.platform.utils.ShunfengSignUtils;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.HashMap; import java.util.HashMap;
import java.util.List;
import java.util.Map; import java.util.Map;
@Slf4j @Slf4j
@Service @Service
public class KylinFreightChargeServiceImpl { 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 @Autowired
private ShunfengSignUtils shunfengSignUtils; private ShunfengSignUtils shunfengSignUtils;
@Autowired @Autowired
private RedisDataSourceUtil redisDataSourceUtil; private RedisDataSourceUtil redisDataSourceUtil;
@Autowired @Autowired
private KylinFreightChargeMapper kylinFreightChargeMapper; private KylinFreightChargeMapper kylinFreightChargeMapper;
@Autowired
private JSONUtils jsonUtils;
public void getFreightCharge() { public void getFreightCharge() {
Map<String, String> hBody = new HashMap<>(); 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("jCity", jCity);
hBody.put("jAddress", jAddress); 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(); String fileName = KylinFreightChargeServiceImpl.class.getClassLoader().getResource("city.json").getPath();
kylinFreightCharge.setFieldsId(IDGenerator.nextTimeId2()); String s = jsonUtils.readJsonFile(fileName);
kylinFreightCharge.setProvince(jProvince); List<HashMap> provinceListMap = JSONObject.parseArray(s, HashMap.class);
kylinFreightCharge.setCity(jCity); long startTime = System.currentTimeMillis();
kylinFreightCharge.setAdname(jAddress);
kylinFreightCharge.setPrice(map.get("price")); for (Map pMap : provinceListMap) {
kylinFreightCharge.setAdcode(addressCode); String dProvince = (String) pMap.get("name");
kylinFreightCharge.setBusinessType(map.get("businessType")); List<HashMap> cityListMap = (List<HashMap>) pMap.get("districts");
kylinFreightCharge.setBusinessTypeDesc(map.get("businessTypeDesc")); 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); int i = kylinFreightChargeMapper.setFreightCharge(kylinFreightCharge);
//存redis //存redis
redisDataSourceUtil.getRedisKylinUtil().set(KylinRedisConst.RETURN_ADDRESS_CODE+addressCode+KylinRedisConst.EXPRESS_TYPE+expressType,kylinFreightCharge); redisDataSourceUtil.getRedisKylinUtil().set(KylinRedisConst.RETURN_ADDRESS_CODE + adcode + KylinRedisConst.EXPRESS_TYPE + productCode, kylinFreightCharge);
}catch (Exception e) { }
e.printStackTrace(); }
log.error("顺丰接口调用失败", e); }
}
} }
log.info("耗时:{}", (System.currentTimeMillis() - startTime) + "毫秒");
} }
} }
package com.liquidnet.service.platform.utils; package com.liquidnet.service.platform.utils;
import com.alibaba.fastjson.JSON;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
...@@ -10,30 +11,35 @@ import java.io.*; ...@@ -10,30 +11,35 @@ import java.io.*;
public class JSONUtils { public class JSONUtils {
/** /**
* 读取json文件 * 读取json文件
* @param fileName json文件路径 *
* @param fileName json文件路径
* @return * @return
*/ */
public static String readJsonFile(String fileName) { 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); File jsonFile = new File(fileName);
String jsonStr = ""; String jsonStr = "";
log.info("————开始读取" + jsonFile.getPath() + "文件————"); log.info("————开始读取" + jsonFile.getPath() + "文件————");
//System.out.println("————开始读取" + jsonFile.getPath() + "文件————");
try { try {
FileReader fileReader = new FileReader(jsonFile); FileReader fileReader = new FileReader(jsonFile);
Reader reader = new InputStreamReader(new FileInputStream(jsonFile), "utf-8"); Reader reader = new InputStreamReader(new FileInputStream(jsonFile), "utf-8");
int ch = 0; int ch = 0;
StringBuffer sb = new StringBuffer(); StringBuffer sb = new StringBuffer();
while ((ch = reader.read()) != -1) { while ((ch = reader.read()) != -1) {
sb.append((char) ch); }fileReader.close(); sb.append((char) ch);
}
fileReader.close();
reader.close(); reader.close();
jsonStr = sb.toString(); jsonStr = sb.toString();
log.info("————读取" + jsonFile.getPath() + "文件结束!————"); log.info("————读取" + jsonFile.getPath() + "文件结束!————");
//System.out.println("————读取" + jsonFile.getPath() + "文件结束!————"); return jsonStr;
return jsonStr; } catch (Exception e) { } catch (Exception e) {
log.info("————读取" + jsonFile.getPath() + "文件出现异常,读取失败!————"); log.info("————读取" + jsonFile.getPath() + "文件出现异常,读取失败!————");
// System.out.println("————读取" + jsonFile.getPath() + "文件出现异常,读取失败!————");
e.printStackTrace(); 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