|
@@ -0,0 +1,689 @@
|
|
|
+package com.ydd.third.delivery.makept;
|
|
|
+
|
|
|
+import com.alibaba.fastjson.JSONArray;
|
|
|
+import com.alibaba.fastjson.JSONObject;
|
|
|
+import com.ydd.common.utils.SnCodeUtils;
|
|
|
+import com.ydd.third.common.config.DeliveryConfig;
|
|
|
+import com.ydd.third.common.utils.AddressLngLatExchanger;
|
|
|
+import com.ydd.third.common.utils.StringUtils;
|
|
|
+import com.ydd.third.common.vo.AddressComponentDto;
|
|
|
+import com.ydd.third.common.vo.ResObject;
|
|
|
+import com.ydd.third.common.vo.dada.domain.merchant.QueryBalanceModel;
|
|
|
+import com.ydd.third.common.vo.dada.domain.merchant.ShopDetailModel;
|
|
|
+import com.ydd.third.common.vo.dada.domain.merchant.ShopUpdateModel;
|
|
|
+import com.ydd.third.common.vo.dada.domain.order.OrderAddTipModel;
|
|
|
+import com.ydd.third.common.vo.dada.domain.order.OrderReAddModel;
|
|
|
+import com.ydd.third.common.vo.shop.*;
|
|
|
+import com.ydd.third.common.vo.vo.order.*;
|
|
|
+import com.ydd.third.delivery.ClientHandler;
|
|
|
+import com.ydd.third.delivery.dada.client.DadaApiResponse;
|
|
|
+import com.ydd.third.delivery.dada.client.DadaRequestClient;
|
|
|
+import com.ydd.third.delivery.dada.service.merchant.MerchantQueryBalanceService;
|
|
|
+import com.ydd.third.delivery.dada.service.merchant.ShopDetailService;
|
|
|
+import com.ydd.third.delivery.dada.service.merchant.ShopUpdateService;
|
|
|
+import com.ydd.third.delivery.dada.service.order.OrderAddTipService;
|
|
|
+import com.ydd.third.delivery.dada.service.order.OrderReAddService;
|
|
|
+import com.ydd.third.delivery.makept.constant.MaKePtConstant;
|
|
|
+import com.ydd.third.delivery.makept.request.*;
|
|
|
+import com.ydd.third.delivery.makept.util.HttpClient;
|
|
|
+import lombok.extern.slf4j.Slf4j;
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
+import org.springframework.stereotype.Service;
|
|
|
+
|
|
|
+import java.math.BigDecimal;
|
|
|
+import java.util.HashMap;
|
|
|
+import java.util.Map;
|
|
|
+
|
|
|
+/**
|
|
|
+ * @ClassName Client
|
|
|
+ * @Deacription TODO
|
|
|
+ * @Author peakren
|
|
|
+ * @Date 2/4/21 10:20 PM
|
|
|
+ * @Version 1.0
|
|
|
+ **/
|
|
|
+@Slf4j
|
|
|
+@Service
|
|
|
+public class MaKePtClient implements ClientHandler {
|
|
|
+
|
|
|
+ private static final String SUCCESS_STATUS = "1";
|
|
|
+
|
|
|
+ private static final String FAILED_STATUS = "0";
|
|
|
+
|
|
|
+ private static final String CONTENT_TYPE_APPLICATION_JSON = "application/json";
|
|
|
+
|
|
|
+ private static final String CONTENT_TYPE_APPLICATION_WWW_FORM = "application/x-www-form-urlencoded";
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private DeliveryConfig appConfig;
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public ResObject<OrderResultVo> queryOrderDeliverFee(OrderVo order) {
|
|
|
+ String store_id = order.getShopNo();
|
|
|
+ BigDecimal latitude = order.getReceiverLat();
|
|
|
+ BigDecimal longitude = order.getReceiverLng();
|
|
|
+ String order_no = order.getOrderNo();
|
|
|
+
|
|
|
+ QueryOrderFeeRequest requestParam = new QueryOrderFeeRequest();
|
|
|
+ requestParam.setStore_id(store_id);
|
|
|
+ requestParam.setOrder_no(order_no);
|
|
|
+ requestParam.setLatitude(latitude);
|
|
|
+ requestParam.setLongitude(longitude);
|
|
|
+
|
|
|
+
|
|
|
+ Map<String, Object> params = new HashMap<>();
|
|
|
+ params.put("action_name", MaKePtConstant.QUERY_ORDER_FEE);
|
|
|
+ params.put("data", requestParam);
|
|
|
+
|
|
|
+ log.info("码科跑腿计价请求参数: {} ", params);
|
|
|
+ String result = HttpClient.post(MaKePtConstant.URL, params, CONTENT_TYPE_APPLICATION_JSON);
|
|
|
+ JSONObject jsonObject = JSONObject.parseObject(result);
|
|
|
+ log.info("码科跑腿计价返回结果: {} ", jsonObject);
|
|
|
+
|
|
|
+
|
|
|
+ String status = jsonObject.getString("status");
|
|
|
+ String msg = jsonObject.getString("msg");
|
|
|
+
|
|
|
+ ResObject<OrderResultVo> resObject = new ResObject<>();
|
|
|
+ if (SUCCESS_STATUS.equals(status)) {
|
|
|
+ JSONObject resultJson = jsonObject.getJSONObject("data");
|
|
|
+ if (resultJson != null) {
|
|
|
+ OrderResultVo orderResultVo = new OrderResultVo();
|
|
|
+ Double distance = resultJson.getDouble("distance");
|
|
|
+ orderResultVo.setDistance(distance == null ? 0 : BigDecimal.valueOf(distance).multiply(new BigDecimal(1000)).doubleValue());
|
|
|
+ orderResultVo.setDeliverFee(resultJson.getBigDecimal("price"));
|
|
|
+ orderResultVo.setDeliveryOrderNo(resultJson.getString("order_no"));
|
|
|
+ resObject.setData(orderResultVo);
|
|
|
+ resObject.setCode(0);
|
|
|
+ resObject.setMsg("操作成功");
|
|
|
+ } else {
|
|
|
+ resObject.setMsg("计价返回异常");
|
|
|
+ resObject.setCode(1);
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ resObject.setMsg(msg == null ? "计价失败" : msg);
|
|
|
+ resObject.setCode(1);
|
|
|
+ }
|
|
|
+ return resObject;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 新增订单
|
|
|
+ *
|
|
|
+ * @param order
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public ResObject<OrderResultVo> createOrder(OrderVo order) {
|
|
|
+ String receiverCity = order.getReceiverCity() == null ? "" : order.getReceiverCity();
|
|
|
+ String receiverDistrictName = order.getReceiverDistrictName() == null ? "" : order.getReceiverDistrictName();
|
|
|
+ String receiverAddressDetail = order.getReceiverAddressWithHouseNumber() == null ? "" : order.getReceiverAddressWithHouseNumber();
|
|
|
+
|
|
|
+ SyncOrderRequest requestParam = new SyncOrderRequest();
|
|
|
+ requestParam.setAddress(receiverCity + receiverDistrictName + receiverAddressDetail);
|
|
|
+ requestParam.setLatitude(order.getReceiverLat());
|
|
|
+ requestParam.setLongitude(order.getReceiverLng());
|
|
|
+ requestParam.setOrder_no(order.getOrderNo());
|
|
|
+ // 订单状态,码科跑腿只需要同步待接单状态
|
|
|
+ requestParam.setOrder_status(1);
|
|
|
+ requestParam.setOrder_time(System.currentTimeMillis() / 1000);
|
|
|
+ // 是否预约单(1:即时,2:预约,0:不区分,默认)
|
|
|
+ requestParam.setBook(1);
|
|
|
+ requestParam.setOrder_platform(Integer.valueOf(order.getOrderSource()));
|
|
|
+
|
|
|
+ requestParam.setName(order.getReceiverName());
|
|
|
+ requestParam.setPhone(order.getReceiverPhone());
|
|
|
+ requestParam.setProducts(JSONObject.toJSONString(order.getMaKePtProducts()));
|
|
|
+ requestParam.setStore_id(order.getShopNo());
|
|
|
+ requestParam.setRemark(order.getRemark() == null ? " " : order.getRemark());
|
|
|
+ requestParam.setGet_time(null);
|
|
|
+
|
|
|
+ requestParam.setHidden_phone(" ");
|
|
|
+ requestParam.setThird_sn(order.getPoiSeq() == null ? "0" : order.getPoiSeq());
|
|
|
+
|
|
|
+ Map<String, Object> params = new HashMap<>();
|
|
|
+ params.put("action_name", MaKePtConstant.SYNC_ORDER);
|
|
|
+ params.put("data", requestParam);
|
|
|
+
|
|
|
+ log.info("码科跑腿下单请求参数: {} ", params);
|
|
|
+ String result = HttpClient.post(MaKePtConstant.URL, params, CONTENT_TYPE_APPLICATION_JSON);
|
|
|
+ JSONObject jsonObject = JSONObject.parseObject(result);
|
|
|
+ log.info("码科跑腿下单返回结果: {} ", jsonObject);
|
|
|
+
|
|
|
+
|
|
|
+ String status = jsonObject.getString("status");
|
|
|
+ String msg = jsonObject.getString("msg");
|
|
|
+
|
|
|
+ ResObject<OrderResultVo> resObject = new ResObject<>();
|
|
|
+ if (SUCCESS_STATUS.equals(status)) {
|
|
|
+ JSONObject dataJson = jsonObject.getJSONObject("data");
|
|
|
+ OrderResultVo orderResultVo = new OrderResultVo();
|
|
|
+ if (dataJson != null) {
|
|
|
+ String order_no = dataJson.getString("order_no");
|
|
|
+ orderResultVo.setDeliveryOrderNo(order_no == null ? SnCodeUtils.createSn() : order_no);
|
|
|
+ resObject.setData(orderResultVo);
|
|
|
+ } else {
|
|
|
+ orderResultVo.setDeliveryOrderNo(SnCodeUtils.createSn());
|
|
|
+ }
|
|
|
+ resObject.setData(orderResultVo);
|
|
|
+ resObject.setCode(0);
|
|
|
+ resObject.setMsg("操作成功");
|
|
|
+ } else {
|
|
|
+ resObject.setMsg(msg == null ? "下单失败" : msg);
|
|
|
+ resObject.setCode(1);
|
|
|
+ }
|
|
|
+ return resObject;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 取消订单
|
|
|
+ *
|
|
|
+ * @param cancelOrderVo
|
|
|
+ * @return 取消订单结果
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public ResObject<CancelOrderResultVo> cancelOrder(CancelOrderVo cancelOrderVo) {
|
|
|
+ SyncOrderStatusRequest requestParam = new SyncOrderStatusRequest();
|
|
|
+ requestParam.setOrder_no(cancelOrderVo.getOrderNo());
|
|
|
+ // 目前只有取消时需要同步订单状态, 固定为7
|
|
|
+ requestParam.setOrder_status(7);
|
|
|
+ requestParam.setStore_id(cancelOrderVo.getLbShopCode());
|
|
|
+ requestParam.setCancel_reason(cancelOrderVo.getCancelCode());
|
|
|
+ requestParam.setCancel_reason_text(cancelOrderVo.getCancelReason());
|
|
|
+
|
|
|
+ Map<String, Object> params = new HashMap<>();
|
|
|
+ params.put("action_name", MaKePtConstant.SYNC_ORDER_STATUS);
|
|
|
+ params.put("data", requestParam);
|
|
|
+
|
|
|
+ log.info("码科跑腿取消订单请求参数: {} ", params);
|
|
|
+ String result = HttpClient.post(MaKePtConstant.URL, params, CONTENT_TYPE_APPLICATION_JSON);
|
|
|
+ JSONObject jsonObject = JSONObject.parseObject(result);
|
|
|
+ log.info("码科跑腿取消订单返回结果: {} ", jsonObject);
|
|
|
+
|
|
|
+
|
|
|
+ String status = jsonObject.getString("status");
|
|
|
+ String msg = jsonObject.getString("msg");
|
|
|
+
|
|
|
+ ResObject<CancelOrderResultVo> resObject = new ResObject<>();
|
|
|
+ if (SUCCESS_STATUS.equals(status)) {
|
|
|
+ resObject.setCode(0);
|
|
|
+ resObject.setMsg("操作成功");
|
|
|
+ } else {
|
|
|
+ resObject.setCode(1);
|
|
|
+ resObject.setMsg(msg);
|
|
|
+ log.error("errCode:" + status + ", errMsg:" + msg);
|
|
|
+ }
|
|
|
+ return resObject;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 订单增加小费
|
|
|
+ *
|
|
|
+ * @param orderTipsVo
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public ResObject<OrderTipsResultVo> orderAddTip(OrderTipsVo orderTipsVo) {
|
|
|
+ String orderId = orderTipsVo.getOrderNo(); //jsonParams.getString("orderId");
|
|
|
+
|
|
|
+ BigDecimal tips = orderTipsVo.getTips(); //jsonParams.getBigDecimal("tips");
|
|
|
+ String cityCode = orderTipsVo.getCityCode(); //jsonParams.getString("cityCode");
|
|
|
+ String merchantId = orderTipsVo.getMerchantId();
|
|
|
+ OrderAddTipModel orderAddTipModel = new OrderAddTipModel();
|
|
|
+ orderAddTipModel.setOrderId(orderId);
|
|
|
+ orderAddTipModel.setTips(tips);
|
|
|
+ orderAddTipModel.setCityCode(cityCode);
|
|
|
+ //city_code
|
|
|
+
|
|
|
+ // 3.初始化service
|
|
|
+ OrderAddTipService orderService = new OrderAddTipService(orderAddTipModel.toJson());
|
|
|
+
|
|
|
+ // 4.初始化客户端
|
|
|
+ DadaRequestClient dadaClient = new DadaRequestClient(orderService, appConfig, merchantId,orderTipsVo.getIsDirectDelivery());
|
|
|
+ DadaApiResponse dadaResponse = dadaClient.callRpc();
|
|
|
+ String name ="达达";
|
|
|
+ if (orderTipsVo.getIsDirectDelivery() == 1){
|
|
|
+ name ="达达优质";
|
|
|
+ }
|
|
|
+ int code = dadaResponse.getCode();
|
|
|
+ String status = dadaResponse.getStatus();
|
|
|
+ ResObject<OrderTipsResultVo> resObject = new ResObject<>();
|
|
|
+ if (code == 0 && status.equals("success")) {
|
|
|
+ OrderTipsResultVo resultVo = new OrderTipsResultVo();
|
|
|
+ resultVo.setOrderNo(orderId);
|
|
|
+ resultVo.setTips(tips);
|
|
|
+ resultVo.setResData(dadaResponse.getResult());
|
|
|
+ resObject.setCode(0);
|
|
|
+ resObject.setData(resultVo);
|
|
|
+ resObject.setMsg("操作成功");
|
|
|
+ log.error(name+"加小费返回:" + dadaResponse.getMsg());
|
|
|
+ } else {
|
|
|
+ resObject.setCode(1);
|
|
|
+ resObject.setMsg(dadaResponse.getMsg());
|
|
|
+ log.error(name+"加小费异常 errCode:" + code + ", errMsg:" + dadaResponse.getMsg());
|
|
|
+ }
|
|
|
+ return resObject;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 订单详情查询
|
|
|
+ *
|
|
|
+ * @param
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public ResObject<OrderQueryResultVo> queryOrderInfo(OrderQueryVo orderQueryVo) {
|
|
|
+ QueryOrderStatusRequest requestParam = new QueryOrderStatusRequest();
|
|
|
+ requestParam.setOrder_no(orderQueryVo.getOrderNo());
|
|
|
+ requestParam.setStore_id(orderQueryVo.getLbShopCode());
|
|
|
+
|
|
|
+ Map<String, Object> params = new HashMap<>();
|
|
|
+ params.put("action_name", MaKePtConstant.QUERY_ORDER_STATUS);
|
|
|
+ params.put("data", requestParam);
|
|
|
+
|
|
|
+ log.info("码科跑腿获取订单状态请求参数: {} ", params);
|
|
|
+ String result = HttpClient.post(MaKePtConstant.URL, params, CONTENT_TYPE_APPLICATION_JSON);
|
|
|
+ JSONObject jsonObject = JSONObject.parseObject(result);
|
|
|
+ log.info("码科跑腿获取订单状态返回结果: {} ", jsonObject);
|
|
|
+
|
|
|
+ String status = jsonObject.getString("status");
|
|
|
+ String msg = jsonObject.getString("msg");
|
|
|
+
|
|
|
+ ResObject<OrderQueryResultVo> resObject = new ResObject<>();
|
|
|
+ if (SUCCESS_STATUS.equals(status)) {
|
|
|
+
|
|
|
+ JSONObject dataJson = jsonObject.getJSONObject("data");
|
|
|
+
|
|
|
+ OrderQueryResultVo resultVo = new OrderQueryResultVo();
|
|
|
+ resultVo.setOrderNo(dataJson.getString("order_no"));
|
|
|
+ resultVo.setOrderStatusDesc(dataJson.getString("status"));
|
|
|
+ resultVo.setRiderName(dataJson.getString("provider_real_name"));
|
|
|
+ resultVo.setRiderPhone(dataJson.getString("provider_mobile"));
|
|
|
+
|
|
|
+ resObject.setData(resultVo);
|
|
|
+ resObject.setCode(0);
|
|
|
+ resObject.setMsg("操作成功");
|
|
|
+ } else {
|
|
|
+ resObject.setCode(1);
|
|
|
+ resObject.setMsg(msg);
|
|
|
+ log.error("status: {}, errMsg: {}", status, msg);
|
|
|
+ }
|
|
|
+ return resObject;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 获取骑手当前位置(信息)
|
|
|
+ *
|
|
|
+ * @param riderLocationVo
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public ResObject<RiderLocationResultVo> getRiderLocation(RiderLocationVo riderLocationVo) {
|
|
|
+ ResObject<RiderLocationResultVo> res = new ResObject<>();
|
|
|
+ res.setMsg("操作失败");
|
|
|
+ res.setCode(1);
|
|
|
+
|
|
|
+ QueryRiderLocationRequest requestParam = new QueryRiderLocationRequest();
|
|
|
+ requestParam.setOrder_no(riderLocationVo.getOrderNo());
|
|
|
+ Map<String, Object> params = new HashMap<>();
|
|
|
+ params.put("action_name", MaKePtConstant.QUERY_RIDER_LOCATION);
|
|
|
+ params.put("data", requestParam);
|
|
|
+
|
|
|
+ log.info("码科跑腿获取骑手位置请求参数: {}", params);
|
|
|
+ String result = HttpClient.post(MaKePtConstant.URL, params, CONTENT_TYPE_APPLICATION_JSON);
|
|
|
+ JSONObject jsonObject = JSONObject.parseObject(result);
|
|
|
+ log.info("码科跑腿获取骑手位置返回结果: {}", jsonObject);
|
|
|
+
|
|
|
+ String status = jsonObject.getString("status");
|
|
|
+ String msg = jsonObject.getString("msg");
|
|
|
+
|
|
|
+ if (SUCCESS_STATUS.equals(status)) {
|
|
|
+ JSONArray array = jsonObject.getJSONArray("data");
|
|
|
+ if (array != null && array.size() == 2) {
|
|
|
+ RiderLocationResultVo resultVo = new RiderLocationResultVo();
|
|
|
+ resultVo.setLat(new BigDecimal(array.get(1).toString()));
|
|
|
+ resultVo.setLng(new BigDecimal(array.get(0).toString()));
|
|
|
+ res.setCode(0);
|
|
|
+ res.setMsg("操作成功");
|
|
|
+ res.setData(resultVo);
|
|
|
+ } else {
|
|
|
+ res.setMsg("查询结果异常");
|
|
|
+ res.setCode(1);
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ res.setMsg(msg == null ? "没有查询到相应的数据" : msg);
|
|
|
+ res.setCode(1);
|
|
|
+ }
|
|
|
+ return res;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 同步门店
|
|
|
+ *
|
|
|
+ * @param shopVo
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public ResObject<ShopResultVo> createShop(ShopVo shopVo) {
|
|
|
+ SyncStoreRequest requestParam = new SyncStoreRequest();
|
|
|
+ requestParam.setStore_name(shopVo.getShopName());
|
|
|
+ requestParam.setStore_address(shopVo.getShopAddress());
|
|
|
+ requestParam.setProvince(shopVo.getProvinceName());
|
|
|
+ requestParam.setCity(shopVo.getCityName());
|
|
|
+ requestParam.setDistrict(shopVo.getAreaName());
|
|
|
+ requestParam.setLatitude(shopVo.getShopLat());
|
|
|
+ requestParam.setLongitude(shopVo.getShopLng());
|
|
|
+ requestParam.setPhone(shopVo.getContactPhone());
|
|
|
+ requestParam.setStore_id(shopVo.getLbShopCode());
|
|
|
+
|
|
|
+ Map<String, Object> params = new HashMap<>();
|
|
|
+ params.put("action_name", MaKePtConstant.SYNC_STORE);
|
|
|
+ params.put("data", requestParam);
|
|
|
+
|
|
|
+ log.info("码科跑腿同步店铺请求参数: {}", params);
|
|
|
+ String result = HttpClient.post(MaKePtConstant.URL, params, CONTENT_TYPE_APPLICATION_JSON);
|
|
|
+ JSONObject jsonObject = JSONObject.parseObject(result);
|
|
|
+ log.info("码科跑腿同步店铺返回结果: {}", jsonObject);
|
|
|
+
|
|
|
+ String status = jsonObject.getString("status");
|
|
|
+ String msg = jsonObject.getString("msg");
|
|
|
+
|
|
|
+ ResObject<ShopResultVo> resObject = new ResObject<>();
|
|
|
+ if (SUCCESS_STATUS.equals(status)) {
|
|
|
+ resObject.setData(new ShopResultVo());
|
|
|
+ resObject.setCode(0);
|
|
|
+ resObject.setMsg("操作成功");
|
|
|
+ } else {
|
|
|
+ resObject.setCode(1);
|
|
|
+ resObject.setMsg(msg);
|
|
|
+ log.error("status: {}, errMsg: {}", status, msg);
|
|
|
+ }
|
|
|
+ return resObject;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 更新门店
|
|
|
+ *
|
|
|
+ * @param shopVo
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public ResObject<ShopResultVo> updateShop(ShopVo shopVo) {
|
|
|
+ //JSONObject jsonParams = JSONObject.parseObject(jsonParamsStr);
|
|
|
+ String originShopId = shopVo.getShopId(); //jsonParams.getString("originShopId");
|
|
|
+ //不可更新门店编码
|
|
|
+ // String newShopId = shopVo.getShopId(); //jsonParams.getString("newShopId");
|
|
|
+ String stationName = shopVo.getShopName();//jsonParams.getString("stationName");
|
|
|
+ Integer business = shopVo.getBusiness();//shopVo.getShopName(); //jsonParams.getInteger("business");
|
|
|
+ String cityName = shopVo.getCityName(); //jsonParams.getString("cityName");
|
|
|
+ String areaName = shopVo.getAreaName(); //jsonParams.getString("areaName");
|
|
|
+ String stationAddress = shopVo.getShopAddress(); //jsonParams.getString("stationAddress");
|
|
|
+ BigDecimal lng = shopVo.getShopLng();//jsonParams.getBigDecimal("lng");
|
|
|
+ BigDecimal lat = shopVo.getShopLat(); //jsonParams.getBigDecimal("lat");
|
|
|
+ String contactName = shopVo.getContactName(); //jsonParams.getString("contactName");
|
|
|
+ String phone = shopVo.getContactPhone(); //jsonParams.getString("phone");
|
|
|
+ Integer shopStatus = shopVo.getShopStatus(); //jsonParams.getInteger("status");
|
|
|
+
|
|
|
+ String merchantId = shopVo.getMerchantId();
|
|
|
+ ShopUpdateModel shopModel = new ShopUpdateModel();
|
|
|
+ // 根据实际信息来填写门店地址
|
|
|
+ shopModel.setOriginShopId(originShopId);
|
|
|
+ //shopModel.setNewShopId(newShopId);
|
|
|
+ shopModel.setStationName(stationName);
|
|
|
+ shopModel.setBusiness(business);
|
|
|
+ if (StringUtils.isBlank(areaName)){
|
|
|
+ areaName = getAreaName(lng.toString(), lat.toString(), areaName, cityName);
|
|
|
+ }else if (areaName.endsWith("市")){
|
|
|
+ cityName = areaName;
|
|
|
+ areaName = getAreaName(lng.toString(), lat.toString(), areaName, cityName);
|
|
|
+ }
|
|
|
+// shopModel.setCityName(cityName);
|
|
|
+// shopModel.setAreaName(areaName);
|
|
|
+ shopModel.setStationAddress(stationAddress);
|
|
|
+ shopModel.setLng(lng);
|
|
|
+ shopModel.setLat(lat);
|
|
|
+ shopModel.setContactName(contactName);
|
|
|
+ shopModel.setPhone(phone);
|
|
|
+ shopModel.setStatus(shopStatus);
|
|
|
+
|
|
|
+ // 3.初始化service
|
|
|
+ ShopUpdateService shopUpdateService = new ShopUpdateService(shopModel.toJson());
|
|
|
+ // 4.初始化客户端
|
|
|
+ DadaRequestClient dadaClient = new DadaRequestClient(shopUpdateService, appConfig, merchantId,shopVo.getIsDirectDelivery());
|
|
|
+ DadaApiResponse dadaResponse = dadaClient.callRpc();
|
|
|
+ int code = dadaResponse.getCode();
|
|
|
+ String status = dadaResponse.getStatus();
|
|
|
+ ResObject<ShopResultVo> resObject = new ResObject<>();
|
|
|
+ if (code == 0 && status.equals("success")) {
|
|
|
+ resObject.setCode(0);
|
|
|
+ ShopResultVo shopResultVo = new ShopResultVo();
|
|
|
+ shopResultVo.setShopId(originShopId);
|
|
|
+ shopResultVo.setResData(dadaResponse.getResult());
|
|
|
+ resObject.setData(shopResultVo);
|
|
|
+ resObject.setMsg("操作成功");
|
|
|
+ } else {
|
|
|
+ resObject.setCode(1);
|
|
|
+ resObject.setMsg(dadaResponse.getMsg());
|
|
|
+ log.error("errCode:" + code + ", errMsg:" + dadaResponse.getMsg());
|
|
|
+ }
|
|
|
+ return resObject;
|
|
|
+ //return JSONUtil.toJson(resObject);
|
|
|
+ }
|
|
|
+
|
|
|
+ public String getAreaName(String lng,String lat,String areaName,String cityName){
|
|
|
+ if (StringUtils.isBlank(areaName)) {
|
|
|
+ // 没有区域的门店,重新调用高德地图[地理/逆地理编码]接口
|
|
|
+ AddressComponentDto result = AddressLngLatExchanger.geocodeRegeo(lng.toString(), lat.toString());
|
|
|
+ if (result != null) {
|
|
|
+ areaName = result.getTownship();
|
|
|
+ if ("东莞市".equals(cityName)){
|
|
|
+ if (areaName.endsWith("街道")) {
|
|
|
+ areaName = areaName.replace("街道", "区");
|
|
|
+ }
|
|
|
+ if (areaName.equals("松山湖管委会")){
|
|
|
+ areaName = "松山湖高新区";
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }else if (areaName.endsWith("市")){
|
|
|
+ // 以市结尾的城市,也要替换,如昆山
|
|
|
+ AddressComponentDto result1 = AddressLngLatExchanger.geocodeRegeo(lng.toString(),lat.toString());
|
|
|
+ if (result1 != null){
|
|
|
+ areaName = result1.getTownship();
|
|
|
+ }
|
|
|
+ if ("昆山市".equals(cityName)){
|
|
|
+ if ("周庄镇".equals(areaName)){
|
|
|
+ areaName = "周庄";
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (cityName.equals("常熟市")){
|
|
|
+ if (areaName.equals("虞山街道")){
|
|
|
+ areaName = "虞山镇";
|
|
|
+ }
|
|
|
+ if ("常熟经济技术开发区".equals(areaName) || "江苏省常熟高新技术产业开发区".equals(areaName)){
|
|
|
+ areaName = "经济开发区";
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ return areaName;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 门店详情
|
|
|
+ *
|
|
|
+ * @param
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public ResObject<ShopQueryResultVo> queryShop(ShopQueryVo shopQueryVo) {
|
|
|
+
|
|
|
+ String originShopId = shopQueryVo.getShopId(); //jsonParams.getString("originShopId");
|
|
|
+ String merchantId = shopQueryVo.getMerchantId();
|
|
|
+ ShopDetailModel shopModel = new ShopDetailModel();
|
|
|
+ // 根据实际信息来填写
|
|
|
+ shopModel.setOriginShopId(originShopId);
|
|
|
+
|
|
|
+ // 3.初始化service
|
|
|
+ ShopDetailService shopDetailService = new ShopDetailService(shopModel.toJson());
|
|
|
+ // 4.初始化客户端
|
|
|
+ DadaRequestClient dadaClient = new DadaRequestClient(shopDetailService, appConfig, merchantId,shopQueryVo.getIsDirectDelivery());
|
|
|
+ DadaApiResponse dadaResponse = dadaClient.callRpc();
|
|
|
+ int code = dadaResponse.getCode();
|
|
|
+ String status = dadaResponse.getStatus();
|
|
|
+ ResObject<ShopQueryResultVo> resObject = new ResObject<>();
|
|
|
+ if (code == 0 && status.equals("success")) {
|
|
|
+ JSONObject dataJson = (JSONObject) dadaResponse.getResult();
|
|
|
+ ShopQueryResultVo resultVo = new ShopQueryResultVo();
|
|
|
+ resultVo.setShopId(dataJson.getString("origin_shop_id"));
|
|
|
+ resultVo.setShopName(dataJson.getString("station_name"));
|
|
|
+ resultVo.setBusiness(dataJson.getInteger("business"));
|
|
|
+ resultVo.setCityName(dataJson.getString("city_name"));
|
|
|
+ resultVo.setAreaName(dataJson.getString("area_name"));
|
|
|
+ resultVo.setShopAddress(dataJson.getString("station_address"));
|
|
|
+ resultVo.setShopLng(dataJson.getBigDecimal("lng"));
|
|
|
+ resultVo.setShopLat(dataJson.getBigDecimal("lat"));
|
|
|
+ resultVo.setContactName(dataJson.getString("contact_name"));
|
|
|
+ resultVo.setContactPhone(dataJson.getString("phone"));
|
|
|
+ Integer shopStatus = dataJson.getInteger("status");
|
|
|
+ String shopStatusDesc = "";
|
|
|
+ if (shopStatus == 0) {
|
|
|
+ shopStatusDesc = "门店已下线";
|
|
|
+ } else if (shopStatus == 1) {
|
|
|
+ shopStatusDesc = "门店已激活";
|
|
|
+ }
|
|
|
+ dataJson.put("shop_status_desc", shopStatusDesc);
|
|
|
+ resultVo.setShopStatus(shopStatus);
|
|
|
+ resultVo.setShopStatusDesc(shopStatusDesc);
|
|
|
+ resultVo.setResData(dataJson);
|
|
|
+ resObject.setCode(0);
|
|
|
+ resObject.setData(resultVo);
|
|
|
+ resObject.setMsg("操作成功");
|
|
|
+ } else {
|
|
|
+ resObject.setCode(1);
|
|
|
+ resObject.setMsg(dadaResponse.getMsg());
|
|
|
+ log.error("errCode:" + code + ", errMsg:" + dadaResponse.getMsg());
|
|
|
+ }
|
|
|
+ return resObject;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 查询账户余额
|
|
|
+ * @param queryAmount
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public ResObject<AmountResultVo> queryAmount(QueryAmount queryAmount) {
|
|
|
+
|
|
|
+ String merchantId = queryAmount.getMerchantId();
|
|
|
+ QueryBalanceModel queryBalanceModel = new QueryBalanceModel();
|
|
|
+ queryBalanceModel.setCategory(1);
|
|
|
+
|
|
|
+ // 3.初始化service
|
|
|
+ MerchantQueryBalanceService service = new MerchantQueryBalanceService(queryBalanceModel.toJson());
|
|
|
+
|
|
|
+ // 4.初始化客户端
|
|
|
+ DadaRequestClient dadaClient = new DadaRequestClient(service , appConfig, merchantId,queryAmount.getIsDirectDelivery());
|
|
|
+ DadaApiResponse dadaResponse = dadaClient.callRpc();
|
|
|
+ log.info("达达余额返回---:"+JSONObject.toJSONString(dadaResponse));
|
|
|
+ int code = dadaResponse.getCode();
|
|
|
+ String status = dadaResponse.getStatus();
|
|
|
+ ResObject resObject = new ResObject();
|
|
|
+ if (code == 0 && status.equals("success")) {
|
|
|
+ resObject.setCode(0);
|
|
|
+ // resObject.setData(dadaResponse.getResult());
|
|
|
+ JSONObject resultJson = (JSONObject) dadaResponse.getResult();
|
|
|
+ AmountResultVo amountResultVo = new AmountResultVo();
|
|
|
+ amountResultVo.setBalanceAmount(resultJson.getBigDecimal("deliverBalance"));
|
|
|
+ amountResultVo.setResData(resultJson);
|
|
|
+ resObject.setData(amountResultVo);
|
|
|
+ resObject.setMsg("操作成功");
|
|
|
+ } else {
|
|
|
+ resObject.setCode(1);
|
|
|
+ resObject.setMsg(dadaResponse.getMsg());
|
|
|
+ log.error("errCode:" + code + ", errMsg:" + dadaResponse.getMsg());
|
|
|
+ }
|
|
|
+ return resObject;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 重新发布订单
|
|
|
+ *
|
|
|
+ * @param order
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public ResObject reAddOrder(OrderVo order) {
|
|
|
+
|
|
|
+ // String cityName = jsonParams.getString("cityName");
|
|
|
+ String shopNo = order.getShopNo(); //jsonParams.getString("shopNo");
|
|
|
+ String originId = order.getOrderNo(); //jsonParams.getString("originId");
|
|
|
+ String cityCode = order.getCityCode(); //jsonParams.getString("cityCode");
|
|
|
+ BigDecimal cargoPrice = order.getOrderMoney(); // getjsonParams.getBigDecimal("cargoPrice");
|
|
|
+ String receiverName = order.getReceiverName(); //jsonParams.getString("receiverName");
|
|
|
+ String receiverAddress = order.getReceiverAddressWithHouseNumber(); //jsonParams.getString("receiverAddress");
|
|
|
+ BigDecimal receiverLat = order.getReceiverLat(); //jsonParams.getBigDecimal("receiverLat");
|
|
|
+ BigDecimal receiverLng = order.getReceiverLng(); //jsonParams.getBigDecimal("receiverLng");
|
|
|
+ String receiverPhone = order.getReceiverPhone(); //jsonParams.getString("receiverPhone");
|
|
|
+ String callback = order.getCallback(); //jsonParams.getString("callback");
|
|
|
+ Integer cargoType = order.getGoodsType(); //jsonParams.getInteger("cargoType");
|
|
|
+ BigDecimal cargoWeight = order.getWeight(); //jsonParams.getBigDecimal("cargoWeight");
|
|
|
+ Integer cargoNum = order.getGoodsNum(); //物品数量
|
|
|
+ Integer isUseInsurance = 0; //jsonParams.getInteger("isUseInsurance");
|
|
|
+ BigDecimal tips = order.getTips(); //jsonParams.getBigDecimal("tips");
|
|
|
+ Integer delayPublishTime = 0;
|
|
|
+ if (null != order.getDelayPublishTime()) {
|
|
|
+ delayPublishTime = (int) ((order.getDelayPublishTime()).getTime() / 1000);
|
|
|
+ }
|
|
|
+ String merchantId = order.getMerchantId();
|
|
|
+ OrderReAddModel orderReAddModel = new OrderReAddModel();
|
|
|
+ orderReAddModel.setShopNo(shopNo);
|
|
|
+ orderReAddModel.setOriginId(originId);
|
|
|
+ // String cityCode = getCityCode(cityName);
|
|
|
+ orderReAddModel.setCityCode(cityCode);
|
|
|
+ orderReAddModel.setCargoPrice(cargoPrice);
|
|
|
+ orderReAddModel.setIsPrepay(0); //是否需要垫付0表示否
|
|
|
+ // 填写收货人信息
|
|
|
+ orderReAddModel.setReceiverName(receiverName);
|
|
|
+ orderReAddModel.setReceiverAddress(receiverAddress);
|
|
|
+ orderReAddModel.setReceiverLat(receiverLat);
|
|
|
+ orderReAddModel.setReceiverLng(receiverLng);
|
|
|
+ orderReAddModel.setReceiverPhone(receiverPhone);
|
|
|
+ // 设置回调url, 订单状态每次变更就会往该url发送通知(参见回调接口)
|
|
|
+ orderReAddModel.setCallback(callback);
|
|
|
+ orderReAddModel.setCargoType(cargoType);
|
|
|
+ orderReAddModel.setCargoWeight(cargoWeight);
|
|
|
+ orderReAddModel.setIsUseInsurance(isUseInsurance);
|
|
|
+ orderReAddModel.setTips(tips);
|
|
|
+ orderReAddModel.setCargoNum(cargoNum);
|
|
|
+ orderReAddModel.setDelayPublishTime(delayPublishTime);
|
|
|
+
|
|
|
+ // 3.初始化service
|
|
|
+ OrderReAddService orderService = new OrderReAddService(orderReAddModel.toJson());
|
|
|
+
|
|
|
+ // 4.初始化客户端
|
|
|
+ DadaRequestClient dadaClient = new DadaRequestClient(orderService, appConfig, merchantId,0);
|
|
|
+ DadaApiResponse dadaResponse = dadaClient.callRpc();
|
|
|
+ int code = dadaResponse.getCode();
|
|
|
+ String status = dadaResponse.getStatus();
|
|
|
+ ResObject resObject = new ResObject();
|
|
|
+ if (code == 0 && status.equals("success")) {
|
|
|
+ resObject.setCode(0);
|
|
|
+ // resObject.setData(dadaResponse.getResult());
|
|
|
+ JSONObject resultJson = (JSONObject) dadaResponse.getResult();
|
|
|
+ OrderResultVo orderResultVo = new OrderResultVo();
|
|
|
+ orderResultVo.setDistance(resultJson.getDouble("distance"));
|
|
|
+ orderResultVo.setDeliverFee(resultJson.getBigDecimal("deliverFee"));
|
|
|
+ orderResultVo.setDeliveryOrderNo(resultJson.getString("deliveryNo"));
|
|
|
+ orderResultVo.setResData(dadaResponse.getResult());
|
|
|
+ resObject.setData(orderResultVo);
|
|
|
+ resObject.setMsg("操作成功");
|
|
|
+ } else {
|
|
|
+ resObject.setCode(1);
|
|
|
+ resObject.setMsg(dadaResponse.getMsg());
|
|
|
+ log.error("errCode:" + code + ", errMsg:" + dadaResponse.getMsg());
|
|
|
+ }
|
|
|
+ return resObject;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+}
|