顺丰同城调试修复bug

This commit is contained in:
Jack 2024-12-06 18:39:53 +08:00
parent e56f8e46c5
commit 7ab6efaf73
32 changed files with 387 additions and 182 deletions

View File

@ -16,17 +16,17 @@ import java.util.Map;
@Component
public class SFExpressConstant {
public int Cons_CreatedOrder = 1;
public int Cons_CanceledOrder = 2;
public int Cons_AcceptOrder = 10;
public int Cons_ArriveStore = 12;
public int Cons_Delivering = 15;
public int Cons_DeliverySuccess = 17;
public int Cons_WithDrawOrder = 22;
public int Cons_ReportException = 91;
public int Cons_CancelingOrder = 31;
public static int Cons_CreatedOrder = 1;
public static int Cons_CanceledOrder = 2;
public static int Cons_AcceptOrder = 10;
public static int Cons_ArriveStore = 12;
public static int Cons_Delivering = 15;
public static int Cons_DeliverySuccess = 17;
public static int Cons_WithDrawOrder = 22;
public static int Cons_ReportException = 91;
public static int Cons_CancelingOrder = 31;
public Map SF_Order_Status_Map = new HashMap<Integer,String>(){{
public static Map SF_Order_Status_Map = new HashMap<Integer,String>(){{
put(Cons_CreatedOrder,"订单创建");
put(Cons_CanceledOrder,"订单取消");
put(Cons_AcceptOrder,"配送员接单/配送员改派");

View File

@ -12,6 +12,7 @@ import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonProperty;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import io.swagger.models.auth.In;
@ -20,6 +21,7 @@ import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import org.springframework.format.annotation.DateTimeFormat;
import java.math.BigDecimal;
import java.util.Date;
@Data
@ -32,105 +34,138 @@ public class ShopStoreSfOrder {
@ApiModelProperty(value = "同城配送订单自增Id")
@TableId(value = "id", type = IdType.INPUT)
@JsonProperty("id")
private Long id;
@ApiModelProperty(value = "同城开发者ID")
@JsonProperty("dev_id")
private Integer dev_id;
@ApiModelProperty(value = "顺丰订单号, 请注意新版本V1.9及以后该订单号升级为JS开头的15位订单号类型为字符串老版本仍为int类型")
@JsonProperty("sf_order_id")
private String sf_order_id;
@ApiModelProperty(value = "顺丰运单号(需要在顺丰后台配置门店后返回此字段)")
@JsonProperty("sf_bill_id")
private String sf_bill_id;
@ApiModelProperty(value = "顺丰店铺id")
@JsonProperty("shop_id")
private String shop_id;
@ApiModelProperty(value = "商家订单号,唯一的")
@JsonProperty("shop_order_id")
private String shop_order_id;
@ApiModelProperty(value = "配送员姓名")
@JsonProperty("operator_name")
private String operator_name;
@ApiModelProperty(value = "配送员电话")
@JsonProperty("operator_phone")
private String operator_phone;
@ApiModelProperty(value = "配送员位置经度")
@JsonProperty("rider_lng")
private String rider_lng;
@ApiModelProperty(value = "配送员位置维度")
@JsonProperty("rider_lat")
private String rider_lat;
@ApiModelProperty(value = "sf_order_status` int DEFAULT 0 COMMENT '状态1-订单创建;2-订单取消;10-配送员接单/配送员改派;12-配送员到店;15配送员配送中已取货;17-配送员妥投完单;22-配送员撤单;31-取消中;91-骑士上报异常;")
private Integer sf_order_status;
@JsonProperty("order_status")
private Integer order_status;
@ApiModelProperty(value = "状态说明")
private String sf_order_status_desc;
@JsonProperty("status_desc")
private String status_desc;
@ApiModelProperty(value = "取消码")
@JsonProperty("cancel_code")
private String cancel_code;
@ApiModelProperty(value = "取消原因")
@JsonProperty("cancel_reason")
private String cancel_reason;
@ApiModelProperty(value = "配送员位置经度")
private Long rider_lng;
@ApiModelProperty(value = "配送员位置维度")
private Long rider_lat;
@ApiModelProperty(value = "推送时间")
@JsonProperty("push_time")
private Long push_time;
@ApiModelProperty(value = "状态流轨迹,JSON 格式")
@JsonProperty("feed")
private String feed;
@ApiModelProperty(value = "配送轨迹H5页面URL")
@JsonProperty("h5_url")
private String h5_url;
@ApiModelProperty(value = "配送费总额当return_flag中包含1时返回单位分值为计算出来此单总价")
@JsonProperty("total_price")
private Integer total_price;
@ApiModelProperty(value = "配送距离当return_flag中包含2时返回单位米值为计算出来实际配送距离")
@JsonProperty("delivery_distance_meter")
private Integer delivery_distance_meter;
@ApiModelProperty(value = "省心送费,单位分。在顺丰同城后台配置,配置后有此字段和费用。")
@JsonProperty("free_send_service_fee")
private Integer free_send_service_fee;
@ApiModelProperty(value = "商品重量当return_flag中包含4时返回单位克值为下单传入参数回传")
@JsonProperty("weight_gram")
private Integer weight_gram;
@ApiModelProperty(value = "起送时间当return_flag中包含8时返回时间格式为Unix时间戳注意转换")
@JsonProperty("start_time")
private Long start_time;
@ApiModelProperty(value = "预计送达时间当return_flag中包含16时返回时间格式为Unix时间戳注意转换")
@JsonProperty("expect_time")
private Long expect_time;
@ApiModelProperty(value = "总支付金额当return_flag中包含32时返回单位分")
@JsonProperty("total_pay_money")
private Integer total_pay_money;
@ApiModelProperty(value = "实际支付金额当return_flag中包含64时返回单位分实际支付金额=总支付金额-优惠券总金额)")
@JsonProperty("real_pay_money")
private Integer real_pay_money;
@ApiModelProperty(value = "优惠券总金额当return_flag中包含128时返回单位分")
@JsonProperty("coupons_total_fee")
private Integer coupons_total_fee;
@ApiModelProperty(value = "结算方式当return_flag中包含256时返回")
@JsonProperty("settlement_type")
private Integer settlement_type;
@ApiModelProperty(value = "取件码。在顺丰同城商户侧配置,配置后有此字段。")
@JsonProperty("pickup_code")
private Integer pickup_code;
@ApiModelProperty(value = "签收码。在顺丰同城商户侧配置,配置后有此字段。")
@JsonProperty("complete_code")
private Integer complete_code;
@ApiModelProperty(value = "爆单费,单位分")
@JsonProperty("overflow_fee")
private Integer overflow_fee;
@ApiModelProperty(value = "保价费,单位分")
@JsonProperty("insure_fee")
private Integer insure_fee;
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
@JsonProperty("created_at")
@ApiModelProperty(value = "新增时间")
private Date created_at;
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
@ApiModelProperty(value = "修改时间")
@JsonProperty("updated_at")
private Date updated_at;
}

View File

@ -14,6 +14,8 @@ import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
/**
* 顺丰同城开放平台 api 返回的数据结构
*/
@ -21,7 +23,9 @@ import lombok.NoArgsConstructor;
@NoArgsConstructor
@AllArgsConstructor
@JsonInclude(JsonInclude.Include.NON_NULL)
public class SFExpressApiRes {
public class SFExpressApiRes implements Serializable {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "错误码")
private Integer error_code;
@ApiModelProperty(value = "错误信息")

View File

@ -0,0 +1,48 @@
/*
* Copyright (c) 2024. Lorem ipsum dolor sit amet, consectetur adipiscing elit.
* Morbi non lorem porttitor neque feugiat blandit. Ut vitae ipsum eget quam lacinia accumsan.
* Etiam sed turpis ac ipsum condimentum fringilla. Maecenas magna.
* Proin dapibus sapien vel ante. Aliquam erat volutpat. Pellentesque sagittis ligula eget metus.
* Vestibulum commodo. Ut rhoncus gravida arcu.
*/
package com.suisung.mall.common.pojo.res;
import com.fasterxml.jackson.annotation.JsonInclude;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.util.Date;
/**
* 顺丰同城开放平台物流轨迹实体
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
@JsonInclude(JsonInclude.Include.NON_NULL)
public class SFExpressFeedRes implements Serializable {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "顺丰订单号")
private String sf_order_id;
@ApiModelProperty(value = "商家订单号")
private String shop_order_id;
@ApiModelProperty(value = "顺丰订单状态")
public Integer order_status;
@ApiModelProperty(value = "操作记录日志")
private String operator;
@ApiModelProperty(value = "操作员")
private String operator_name;
@ApiModelProperty(value = "操作员电话")
private String operator_phone;
@ApiModelProperty(value = "顺丰订单状态说明")
private String status_desc;
@ApiModelProperty(value = "内容")
private String content;
@ApiModelProperty(value = "操作时间")
private Date create_time;
}

View File

@ -102,6 +102,7 @@ import org.apache.ibatis.annotations.Param;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.data.util.Pair;
import org.springframework.jdbc.datasource.DataSourceTransactionManager;
import org.springframework.stereotype.Service;
@ -352,8 +353,10 @@ public class ShopOrderBaseServiceImpl extends BaseServiceImpl<ShopOrderBaseMappe
@Resource
private ShopOrderDeliveryAddressService shopOrderDeliveryAddressService;
private final Logger logger = LoggerFactory.getLogger(ShopOrderBaseServiceImpl.class);
@Value("${sf-express.enable}")
private Integer enable_sf_express;
private final Logger logger = LoggerFactory.getLogger(ShopOrderBaseServiceImpl.class);
@Override
public List<Map<String, Object>> statisticState() {
@ -6245,7 +6248,7 @@ public class ShopOrderBaseServiceImpl extends BaseServiceImpl<ShopOrderBaseMappe
Integer chain_store_id = chain_row.getStore_id();
Integer base_store_id = (Integer) base_row.get("store_id");
// TODO 配送方式5-到店自提10-普通快递16-同城配送
Integer delivery_type_id = StateCode.DELIVERY_TYPE_SAME_CITY; //(Integer) checkout_row.get("delivery_type_id");
Integer delivery_type_id = (Integer) checkout_row.get("delivery_type_id"); //StateCode.DELIVERY_TYPE_SAME_CITY;
// 订单信息保存处理
if (flag) {
@ -8368,27 +8371,39 @@ public class ShopOrderBaseServiceImpl extends BaseServiceImpl<ShopOrderBaseMappe
// 订单详情信息
sfCreateOrderReq.setOrder_detail(orderDetail);
// 店铺信息发货人信息
Pair<Boolean, StandardAddressDTO> pairShopAddr = shopStoreBaseService.checkStoreAddress(shopStoreBase);
SFOrderShopReq sfOrderShopReq = new SFOrderShopReq();
sfOrderShopReq.setShop_name(shopStoreBase.getStore_name());
sfOrderShopReq.setShop_phone(shopStoreInfo.getStore_tel());
sfOrderShopReq.setShop_address(pairShopAddr.getSecond().getFullAddress());
sfOrderShopReq.setShop_lng(pairShopAddr.getSecond().getLongitude());
sfOrderShopReq.setShop_lat(pairShopAddr.getSecond().getLatitude());
sfCreateOrderReq.setShop(sfOrderShopReq);
// 收货人信息
Pair<Boolean, StandardAddressDTO> pairReceiveAddr = shopOrderDeliveryAddressService.checkAddress(shopOrderDeliveryAddress);
SFOrderShopReq shop = new SFOrderShopReq();
SFOrderReceiveReq receive = new SFOrderReceiveReq();
receive.setUser_name(shopOrderDeliveryAddress.getDa_name());
receive.setUser_phone(shopOrderDeliveryAddress.getDa_mobile());
receive.setUser_address(pairReceiveAddr.getSecond().getFullAddress());
receive.setUser_lng(pairReceiveAddr.getSecond().getLongitude());
receive.setUser_lat(pairReceiveAddr.getSecond().getLatitude());
if(enable_sf_express.equals(CommonConstant.Enable)){
// 店铺信息发货人信息
Pair<Boolean, StandardAddressDTO> pairShopAddr = shopStoreBaseService.checkStoreAddress(shopStoreBase);
shop.setShop_name(shopStoreBase.getStore_name());
shop.setShop_phone(shopStoreInfo.getStore_tel());
shop.setShop_address(pairShopAddr.getSecond().getFullAddress());
shop.setShop_lng(pairShopAddr.getSecond().getLongitude());
shop.setShop_lat(pairShopAddr.getSecond().getLatitude());
// 收货人信息
Pair<Boolean, StandardAddressDTO> pairReceiveAddr = shopOrderDeliveryAddressService.checkAddress(shopOrderDeliveryAddress);
receive.setUser_name(shopOrderDeliveryAddress.getDa_name());
receive.setUser_phone(shopOrderDeliveryAddress.getDa_mobile());
receive.setUser_address(pairReceiveAddr.getSecond().getFullAddress());
receive.setUser_lng(pairReceiveAddr.getSecond().getLongitude());
receive.setUser_lat(pairReceiveAddr.getSecond().getLatitude());
}else{
// 店铺信息发货人信息
shop.setShop_name("顺丰同城开放平台");
shop.setShop_address("蜂巢工场西区");
shop.setShop_phone("13203559287");
shop.setShop_lng("116.327914");
shop.setShop_lat("40.045488");
// 收货人信息
receive.setUser_name("顺丰同城");
receive.setUser_phone("13881979410");
receive.setUser_address("北京市海淀区学清嘉创大厦A座15层");
receive.setUser_lng("116.352843");
receive.setUser_lat("40.015028");
}
sfCreateOrderReq.setShop(shop);
sfCreateOrderReq.setReceive(receive);
return sfCreateOrderReq;

View File

@ -25,19 +25,19 @@ public class SFExpressApiController {
@ApiOperation(value = "顺丰原因订单取消回调", notes = "顺丰原因订单取消回调")
@RequestMapping(value = "/cancel-order/notify", method = RequestMethod.POST)
public SFExpressApiRes cancelOrderNotify(@RequestBody String requestBody,@RequestParam(name = "sign") String sign) {
public SFExpressApiRes cancelOrderNotify(@RequestBody String requestBody, @RequestParam(name = "sign") String sign) {
return sfExpressApiService.receiveCancelOrderNotify(requestBody, sign);
}
@ApiOperation(value = "接收顺丰配送状态更改回调", notes = "接收顺丰配送状态更改回调")
@RequestMapping(value = "/rider-order-status/notify", method = RequestMethod.POST)
public SFExpressApiRes receiveRiderOrderStatusNotify(@RequestBody String requestBody,@RequestParam(name = "sign") String sign) {
public SFExpressApiRes receiveRiderOrderStatusNotify(@RequestBody String requestBody, @RequestParam(name = "sign") String sign) {
return sfExpressApiService.receiveRiderOrderStatusNotify(requestBody, sign);
}
@ApiOperation(value = "接收顺丰订单完成回调", notes = "接收顺丰订单完成回调")
@RequestMapping(value = "/order-complete/notify", method = RequestMethod.POST)
public SFExpressApiRes receiveOrderCompleteNotify(@RequestBody String requestBody,@RequestParam(name = "sign") String sign) {
public SFExpressApiRes receiveOrderCompleteNotify(@RequestBody String requestBody, @RequestParam(name = "sign") String sign) {
return sfExpressApiService.receiveOrderCompleteNotify(requestBody, sign);
}
}

View File

@ -10,14 +10,15 @@ package com.suisung.mall.shop.sfexpress.controller.mobile;
import com.suisung.mall.common.pojo.res.SFExpressApiRes;
import com.suisung.mall.shop.sfexpress.service.SFExpressApiService;
import com.suisung.mall.shop.store.service.ShopStoreSfOrderService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import java.util.HashMap;
import java.util.Map;
@ -25,9 +26,12 @@ import java.util.Map;
@RestController
@RequestMapping("/mobile/shop/sf-express")
public class SFExpressController {
@Autowired
@Resource
private SFExpressApiService sfExpressApiService;
@Resource
private ShopStoreSfOrderService shopStoreSfOrderService;
@ApiOperation(value = "顺丰同城店铺发单", notes = "顺丰同城店铺发单")
@RequestMapping(value = "/create-order", method = RequestMethod.POST)
public SFExpressApiRes createOrder(@RequestParam(name = "shop_order_id", defaultValue = "") String shopOrderId) {
@ -38,7 +42,7 @@ public class SFExpressController {
@RequestMapping(value = "/cancel-order", method = RequestMethod.POST)
public SFExpressApiRes cancelOrder(@RequestParam(name = "order_id", defaultValue = "") String orderId) {
Map<String, Object> params = new HashMap<>();
params.put("order_id",orderId);
params.put("order_id", shopStoreSfOrderService.getSfOrderIdByShopOrderId(orderId));
return sfExpressApiService.cancelOrder(params);
}
@ -47,8 +51,8 @@ public class SFExpressController {
public SFExpressApiRes addOrderGratuityFee(@RequestParam(name = "order_id", defaultValue = "") String orderId,
@RequestParam(name = "gratuity_fee", defaultValue = "DD-20241119-0001") Integer gratuityFee) {
Map<String, Object> params = new HashMap<>();
params.put("order_id",orderId);
params.put("gratuity_fee",gratuityFee);
params.put("order_id", shopStoreSfOrderService.getSfOrderIdByShopOrderId(orderId));
params.put("gratuity_fee", gratuityFee);
return sfExpressApiService.addOrderGratuityFee(params);
}
@ -56,7 +60,7 @@ public class SFExpressController {
@RequestMapping(value = "/reminder-order", method = RequestMethod.POST)
public SFExpressApiRes reminderOrder(@RequestParam(name = "order_id", defaultValue = "") String orderId) {
Map<String, Object> params = new HashMap<>();
params.put("order_id",orderId);
params.put("order_id", shopStoreSfOrderService.getSfOrderIdByShopOrderId(orderId));
return sfExpressApiService.reminderOrder(params);
}
@ -64,7 +68,7 @@ public class SFExpressController {
@RequestMapping(value = "/list-order-feed", method = RequestMethod.POST)
public SFExpressApiRes listOrderFeed(@RequestParam(name = "order_id", defaultValue = "") String orderId) {
Map<String, Object> params = new HashMap<>();
params.put("order_id",orderId);
params.put("order_id", shopStoreSfOrderService.getSfOrderIdByShopOrderId(orderId));
return sfExpressApiService.listOrderFeed(params);
}
@ -72,7 +76,7 @@ public class SFExpressController {
@RequestMapping(value = "/rider-latest-position", method = RequestMethod.POST)
public SFExpressApiRes riderLatestPosition(@RequestParam(name = "order_id", defaultValue = "") String orderId) {
Map<String, Object> params = new HashMap<>();
params.put("order_id",orderId);
params.put("order_id", shopStoreSfOrderService.getSfOrderIdByShopOrderId(orderId));
return sfExpressApiService.riderLatestPosition(params);
}
@ -80,10 +84,7 @@ public class SFExpressController {
@RequestMapping(value = "/rider-view/v2", method = RequestMethod.POST)
public SFExpressApiRes riderViewV2(@RequestParam(name = "order_id", defaultValue = "") String orderId) {
Map<String, Object> params = new HashMap<>();
params.put("order_id",orderId);
params.put("order_id", shopStoreSfOrderService.getSfOrderIdByShopOrderId(orderId));
return sfExpressApiService.riderViewV2(params);
}
}

View File

@ -8,7 +8,6 @@
package com.suisung.mall.shop.sfexpress.service;
import com.suisung.mall.common.pojo.req.SFCreateOrderReq;
import com.suisung.mall.common.pojo.res.SFExpressApiRes;
import org.springframework.data.util.Pair;
@ -27,11 +26,12 @@ public interface SFExpressApiService {
/**
* 内部顺丰同城订单下单
*
* @param orderId
* @param orderPickupNum
* @return
*/
Pair<Boolean,String> innerCreateSfExpressOrder(String orderId, Long orderPickupNum);
Pair<Boolean, String> innerCreateSfExpressOrder(String orderId, Long orderPickupNum);
/**
@ -72,6 +72,7 @@ public interface SFExpressApiService {
/**
* 订单状态流查询此接口可获取到指定订单操作记录当接收顺丰状态回调失败时可以主动查询此接口补齐订单操作与状态
* :支持查6个月内的数据
*
* @param params
* @return
*/
@ -106,6 +107,7 @@ public interface SFExpressApiService {
/**
* 接收顺丰原因订单取消回调
*
* @param jsonData
* @param sign
* @return
@ -114,6 +116,7 @@ public interface SFExpressApiService {
/**
* 接收顺丰配送状态更改回调
*
* @param jsonData
* @param sign
* @return
@ -122,6 +125,7 @@ public interface SFExpressApiService {
/**
* 接收顺丰订单完成回调
*
* @param jsonData
* @param sign
* @return

View File

@ -15,6 +15,7 @@ import cn.hutool.http.HttpUtil;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
import com.suisung.mall.common.api.StateCode;
import com.suisung.mall.common.constant.SFExpressConstant;
import com.suisung.mall.common.exception.ApiException;
import com.suisung.mall.common.modules.store.ShopStoreSfOrder;
import com.suisung.mall.common.pojo.req.*;
@ -179,10 +180,13 @@ public class SFExpressApiServiceImpl implements SFExpressApiService {
// 顺丰同城 result json 数据转实体实例
ShopStoreSfOrder shopStoreSfOrder = JSONUtil.toBean(sfExpressApiRes.get("result").toString(), ShopStoreSfOrder.class);
shopStoreSfOrder.setDev_id(sfCreateOrderReq.getDev_id());
shopStoreSfOrder.setOrder_status(SFExpressConstant.Cons_CreatedOrder);
shopStoreSfOrder.setStatus_desc("已创建顺丰同城订单");
// 下单成功保存顺丰同城订单记录到 shop_store_sf_order 表里
Boolean success = shopStoreSfOrderService.insertShopStoreSfOrder(shopStoreSfOrder);
if (!success) {
logger.error("顺丰下单返回的结果:{}", sfExpressApiRes.get("result").toString());
return Pair.of(false, "保存顺丰同城下单失败!");
}
@ -198,18 +202,18 @@ public class SFExpressApiServiceImpl implements SFExpressApiService {
/**
* 取消订单
*
* @param sfOrderId 顺丰订单号
* @param orderId 商家订单号
* @param cancelCode 取消码参考https://openic.sf-express.com/open/api/docs/index/#/apidoc
* @param cancelReason 取消原因
* @return
*/
@Override
public SFExpressApiRes cancelOrder(String sfOrderId, Integer cancelCode, String cancelReason) {
public SFExpressApiRes cancelOrder(String orderId, Integer cancelCode, String cancelReason) {
Map<String, Object> params = buildCommonParams();
params.put("order_id", sfOrderId);
if (StrUtil.isNotEmpty(cancelReason) && cancelCode != null) {
params.put("cancel_code", sfOrderId);
params.put("cancel_reason", sfOrderId);
params.put("order_id", orderId);
if (StrUtil.isNotBlank(cancelReason) && cancelCode != null) {
params.put("cancel_code", orderId);
params.put("cancel_reason", orderId);
}
return cancelOrder(params);
}
@ -221,43 +225,69 @@ public class SFExpressApiServiceImpl implements SFExpressApiService {
* @return
*/
@Override
@Transactional
public SFExpressApiRes cancelOrder(Map<String, Object> params) {
// TODO 检验用户权限
if (params == null || params.get("order_id") == null) {
return new SFExpressApiRes().fail(1003, "请求参数有误!");
}
// 转换 json 字符串参数
String orderId = params.get("order_id").toString();
params.putAll(buildCommonParams());
String paramJSON = JsonUtil.toJSONString(params);
// 根据参数生成请求签名
String send_url = buildUrl("cancelorder", paramJSON);
String retRespStr = HttpUtil.post(send_url, paramJSON);
if (StrUtil.isEmpty(retRespStr)) {
if (StrUtil.isBlank(retRespStr)) {
logger.error("顺丰同城:取消订单异常,无返回值!");
return new SFExpressApiRes().fail(-1, "顺丰同城:无返回值!");
return new SFExpressApiRes().fail(2, "顺丰同城:无返回值!");
}
SFExpressApiRes sfExpressApiRes = JsonUtil.json2object(retRespStr, SFExpressApiRes.class);
if (sfExpressApiRes == null) {
logger.error("顺丰同城:取消订单,返回值异常!");
return new SFExpressApiRes().fail(-1, "顺丰同城:无返回值!");
logger.error("顺丰同城:取消订单,返回值异常!{}", retRespStr);
return new SFExpressApiRes().fail(2, "顺丰同城:无返回值!");
}
if (!sfExpressApiRes.getError_code().equals(0)) {
logger.error("顺丰同城:取消订单失败!{}", retRespStr);
return new SFExpressApiRes().fail(2, sfExpressApiRes.getError_msg());
}
// 判断订单的状态是否已经取消了已取消不再执行
ShopStoreSfOrder shopStoreSfOrderExist = shopStoreSfOrderService.getBySfOrderId(orderId);
if (shopStoreSfOrderExist != null && shopStoreSfOrderExist.getSf_order_status() != null
&& (shopStoreSfOrderExist.getSf_order_status().equals(StateCode.SF_ORDER_STATUS_CANCELED) ||
(shopStoreSfOrderExist.getSf_order_status().equals(StateCode.SF_ORDER_STATUS_CANCELING)))) {
if (shopStoreSfOrderExist == null) {
return new SFExpressApiRes().fail(2,"订单有误!");
}
if (shopStoreSfOrderExist.getOrder_status() != null
&& (shopStoreSfOrderExist.getOrder_status().equals(StateCode.SF_ORDER_STATUS_CANCELED) ||
(shopStoreSfOrderExist.getOrder_status().equals(StateCode.SF_ORDER_STATUS_CANCELING)))) {
return new SFExpressApiRes().success("订单已取消过!");
}
// 更改商城订单状态为已取消注意事务问题
List<String> orderList = new ArrayList<>();
orderList.add(orderId);
orderList.add(shopStoreSfOrderExist.getShop_order_id());
Boolean success = shopOrderBaseService.cancel(orderList, null, false);
if (!success) {
return new SFExpressApiRes().fail(-1, "取消订单业务处理失败!");
// return new SFExpressApiRes().fail(1, "取消商家订单失败!");
throw new ApiException(I18nUtil._("取消商家订单失败!"));
}
// 更改顺丰的订单状态
ShopStoreSfOrder shopStoreSfOrder = new ShopStoreSfOrder();
shopStoreSfOrder.setSf_order_id(shopStoreSfOrderExist.getSf_order_id());
shopStoreSfOrder.setOrder_status(StateCode.SF_ORDER_STATUS_CANCELED);
shopStoreSfOrder.setStatus_desc("线上商城发起取消订单");
success = shopStoreSfOrderService.updateShopStoreSfOrderStatus(shopStoreSfOrder);
if (!success) {
// return new SFExpressApiRes().fail(1, "取消顺丰订单失败!");
throw new ApiException(I18nUtil._("取消顺丰订单失败!"));
}
return sfExpressApiRes;
@ -283,8 +313,8 @@ public class SFExpressApiServiceImpl implements SFExpressApiService {
// 根据参数生成请求签名
String send_url = buildUrl("addordergratuityfee", paramJSON);
String retRespStr = HttpUtil.post(send_url, paramJSON);
if (StrUtil.isEmpty(retRespStr)) {
logger.error("顺丰同城:订单加小费,无返回值!");
if (StrUtil.isBlank(retRespStr)) {
logger.error("顺丰同城:订单加小费,无返回值!{}", retRespStr);
return new SFExpressApiRes().fail(-1, "顺丰同城:无返回值!");
}
@ -311,7 +341,7 @@ public class SFExpressApiServiceImpl implements SFExpressApiService {
// 根据参数生成请求签名
String send_url = buildUrl("reminderorder", paramJSON);
String retRespStr = HttpUtil.post(send_url, paramJSON);
if (StrUtil.isEmpty(retRespStr)) {
if (StrUtil.isBlank(retRespStr)) {
logger.error("顺丰同城:催单异常,无返回值!");
return new SFExpressApiRes().fail(-1, "顺丰同城:无返回值!");
}
@ -341,7 +371,7 @@ public class SFExpressApiServiceImpl implements SFExpressApiService {
// 根据参数生成请求签名
String send_url = buildUrl("listorderfeed", paramJSON);
String retRespStr = HttpUtil.post(send_url, paramJSON);
if (StrUtil.isEmpty(retRespStr)) {
if (StrUtil.isBlank(retRespStr)) {
logger.error("顺丰同城:订单状态流查询异常,无返回值!");
return new SFExpressApiRes().fail(-1, "顺丰同城:无返回值!");
}
@ -369,7 +399,7 @@ public class SFExpressApiServiceImpl implements SFExpressApiService {
// 根据参数生成请求签名
String send_url = buildUrl("riderlatestposition", paramJSON);
String retRespStr = HttpUtil.post(send_url, paramJSON);
if (StrUtil.isEmpty(retRespStr)) {
if (StrUtil.isBlank(retRespStr)) {
logger.error("顺丰同城:获取配送员实时坐标异常,无返回值!");
return new SFExpressApiRes().fail(-1, "顺丰同城:无返回值!");
}
@ -397,7 +427,7 @@ public class SFExpressApiServiceImpl implements SFExpressApiService {
// 根据参数生成请求签名
String send_url = buildUrl("riderviewv2", paramJSON);
String retRespStr = HttpUtil.post(send_url, paramJSON);
if (StrUtil.isEmpty(retRespStr)) {
if (StrUtil.isBlank(retRespStr)) {
logger.error("顺丰同城获取配送员轨迹H5异常无返回值");
return new SFExpressApiRes().fail(-1, "顺丰同城:无返回值!");
}
@ -441,9 +471,9 @@ public class SFExpressApiServiceImpl implements SFExpressApiService {
// 判断订单的状态是否已经取消了已取消不再执行
ShopStoreSfOrder shopStoreSfOrderExist = shopStoreSfOrderService.getBySfOrderId(shopStoreSfOrder.getShop_order_id());
if (shopStoreSfOrderExist != null && shopStoreSfOrderExist.getSf_order_status() != null
&& (shopStoreSfOrderExist.getSf_order_status().equals(StateCode.SF_ORDER_STATUS_CANCELED) ||
(shopStoreSfOrderExist.getSf_order_status().equals(StateCode.SF_ORDER_STATUS_CANCELING)))) {
if (shopStoreSfOrderExist != null && shopStoreSfOrderExist.getOrder_status() != null
&& (shopStoreSfOrderExist.getOrder_status().equals(StateCode.SF_ORDER_STATUS_CANCELED) ||
(shopStoreSfOrderExist.getOrder_status().equals(StateCode.SF_ORDER_STATUS_CANCELING)))) {
return new SFExpressApiRes().success("success");
}
@ -486,25 +516,47 @@ public class SFExpressApiServiceImpl implements SFExpressApiService {
// 更改顺丰同城订单状态
ShopStoreSfOrder shopStoreSfOrder = toShopStoreSfOrder(jsonData);
// 获取顺丰同城的物流轨迹
Map<String, Object> params = new HashMap<>();
params.put("order_id", shopStoreSfOrder.getSf_order_id());
SFExpressApiRes feedRes = listOrderFeed(params);
logger.info("获取配送员物流轨迹:{}", feedRes);
if (feedRes != null && feedRes.getError_code().equals(0)) {
JSONObject result = JSONUtil.parseObj(feedRes.getResult());
if (result != null && result.get("feed") != null) {
shopStoreSfOrder.setFeed(JSONUtil.toJsonStr(result.get("feed")));
}
}
Boolean success = shopStoreSfOrderService.updateShopStoreSfOrderStatus(shopStoreSfOrder);
if (!success) {
throw new ApiException(I18nUtil._("状态处理失败!"));
// return new SFExpressApiRes().fail(-1,"状态处理失败!");
}
// 更改商城订单状态为注意事务问题
if (shopStoreSfOrder.getSf_order_status().equals(StateCode.SF_ORDER_STATUS_RECEIVED)) {
// 配送员已取单配送中
Integer orderStatus = 0;
Integer orderIsOutStatus = 0;
Integer orderIsShippedStatus = 0;
if (shopStoreSfOrder.getOrder_status().equals(StateCode.SF_ORDER_STATUS_RECEIVING)
|| shopStoreSfOrder.getOrder_status().equals(StateCode.SF_ORDER_STATUS_ARRIVED)) {// 配送员已取单配送中
// 商城订单状态 2020-待配货 2030; //待发货
orderStatus = StateCode.ORDER_STATE_WAIT_SHIPPING;
orderIsOutStatus = 0;
orderIsShippedStatus = 0;
} else if (shopStoreSfOrder.getOrder_status().equals(StateCode.SF_ORDER_STATUS_RECEIVED)) {// 配送员已取单配送中
// 商城订单状态 2030-待发货 2040-已发货/待收货确认
success = shopOrderInfoService.changeOrderStatus(shopStoreSfOrder.getShop_order_id(), StateCode.ORDER_STATE_WAIT_SHIPPING, StateCode.ORDER_PICKING_STATE_YES, StateCode.ORDER_SHIPPED_STATE_YES);
orderStatus = StateCode.ORDER_STATE_SHIPPED;
orderIsOutStatus = StateCode.ORDER_PICKING_STATE_YES;
orderIsShippedStatus = StateCode.ORDER_SHIPPED_STATE_YES;
}
success = shopOrderInfoService.changeOrderStatus(shopStoreSfOrder.getShop_order_id(), orderStatus, orderIsOutStatus, orderIsShippedStatus);
if (!success) {
throw new ApiException(I18nUtil._("状态处理失败!"));
//return new SFExpressApiRes().fail(-1,"状态处理失败!");
}
return new SFExpressApiRes().success("success");
}
@ -541,15 +593,25 @@ public class SFExpressApiServiceImpl implements SFExpressApiService {
}
// 订单状态已经更改过无需更改
if (order.getSf_order_status().equals(StateCode.SF_ORDER_STATUS_FINISH)) {
if (order.getOrder_status().equals(StateCode.SF_ORDER_STATUS_FINISH)) {
return new SFExpressApiRes().success("success");
}
// 获取顺丰同城的物流轨迹
Map<String, Object> params = new HashMap<>();
params.put("order_id", shopStoreSfOrder.getSf_order_id());
SFExpressApiRes feedRes = listOrderFeed(params);
logger.info("获取配送员物流轨迹:{}", feedRes);
if (feedRes != null && feedRes.getError_code().equals(0)) {
JSONObject result = JSONUtil.parseObj(feedRes.getResult());
if (result != null && result.get("feed") != null) {
shopStoreSfOrder.setFeed(JSONUtil.toJsonStr(result.get("feed")));
}
}
Boolean success = shopStoreSfOrderService.updateShopStoreSfOrderStatus(shopStoreSfOrder);
if (!success) {
throw new ApiException(I18nUtil._("状态处理失败!"));
// return new SFExpressApiRes().fail(-1,"状态处理失败!");
}
// 更改商城订单状态为已完成注意事务问题

View File

@ -101,7 +101,7 @@ public class ShopStoreMediaGalleryController extends BaseControllerImpl {
List<ShopPlantformMediaGallery> galleries = shopPlantformMediaGalleryService.find(plantformMediaGalleryQueryWrapper);
ShopPlantformMediaGallery mediaGallery = new ShopPlantformMediaGallery();
mediaGallery.setGallery_id(0l);
mediaGallery.setGallery_id(0L);
mediaGallery.setGallery_name(I18nUtil._("未分类"));
galleries.add(0, mediaGallery);
return CommonResult.success(galleries);
@ -122,7 +122,7 @@ public class ShopStoreMediaGalleryController extends BaseControllerImpl {
List<ShopStoreMediaGallery> galleries = shopStoreMediaGalleryService.find(queryWrapper);
ShopStoreMediaGallery mediaGallery = new ShopStoreMediaGallery();
mediaGallery.setGallery_id(0l);
mediaGallery.setGallery_id(0L);
mediaGallery.setGallery_name(I18nUtil._("未分类"));
galleries.add(0, mediaGallery);
return CommonResult.success(galleries);

View File

@ -2,14 +2,10 @@ package com.suisung.mall.shop.store.controller.admin;
import com.suisung.mall.common.api.CommonResult;
import com.suisung.mall.common.modules.store.ShopStorePrinter;
import com.suisung.mall.common.modules.store.ShopStoreSameCityTransportBase;
import com.suisung.mall.common.utils.CommonUtil;
import com.suisung.mall.shop.store.mapper.ShopStorePrinterMapper;
import com.suisung.mall.shop.store.service.ShopStorePrinterService;
import com.suisung.mall.shop.store.service.ShopStoreSameCityTransportBaseService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
@ -33,34 +29,34 @@ public class ShopStorePrinterController {
@ApiOperation(value = "内部测试案例", notes = "内部测试案例")
@RequestMapping(value = "/testcase", method = {RequestMethod.GET})
public CommonResult TestCase() {
Object data = shopStoreSameCityTransportBaseService.computeSameCityTransportFee(3L, BigDecimal.valueOf(110.07123874241765), BigDecimal.valueOf(23.366250981849255), 100, BigDecimal.valueOf(0.5), BigDecimal.valueOf(5.5), BigDecimal.valueOf(5.5),true);
Object data = shopStoreSameCityTransportBaseService.computeSameCityTransportFee(3L, BigDecimal.valueOf(110.07123874241765), BigDecimal.valueOf(23.366250981849255), 100, BigDecimal.valueOf(0.5), BigDecimal.valueOf(5.5), BigDecimal.valueOf(5.5), true);
return CommonResult.success(data);
}
@ApiOperation(value = "测试打印模版消息", notes = "测试打印模版消息")
@RequestMapping(value = "/print/order", method = {RequestMethod.POST})
public boolean printOrder(@RequestParam(name = "orderId" , required = true) String orderId) {
public boolean printOrder(@RequestParam(name = "orderId", required = true) String orderId) {
return shopStorePrinterService.printShopStoreOrder(orderId);
}
@ApiOperation(value = "门店打票机分页列表查询", notes = "门店打票机分页列表查询")
@RequestMapping(value = "/page", method = {RequestMethod.GET})
public CommonResult shopStorePrinterPageList(@RequestParam(name = "keyword", defaultValue = "") String keyword,
@RequestParam(name = "pageNum", defaultValue = "1") Integer pageNum,
@RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize) {
return shopStorePrinterService.shopStorePrinterPageList(keyword,pageNum,pageSize);
@RequestParam(name = "pageNum", defaultValue = "1") Integer pageNum,
@RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize) {
return shopStorePrinterService.shopStorePrinterPageList(keyword, pageNum, pageSize);
}
@ApiOperation(value = "门店一个打票机详情", notes = "门店一个打票机详情")
@RequestMapping(value = "/detail", method = {RequestMethod.GET})
public CommonResult shopStorePrinterDetail(@RequestParam(name = "printer_id" , required = true) Long printer_id) {
public CommonResult shopStorePrinterDetail(@RequestParam(name = "printer_id", required = true) Long printer_id) {
return shopStorePrinterService.shopStorePrinterDetail(printer_id);
}
@ApiOperation(value = "门店新增一个打票机", notes = "门店新增一个打票机")
@RequestMapping(value = "/add/new", method = {RequestMethod.POST})
public CommonResult addNewShopStorePrinter(@RequestParam(name = "model_id" , required = true) Long model_id,
public CommonResult addNewShopStorePrinter(@RequestParam(name = "model_id", required = true) Long model_id,
@RequestParam(name = "printer_name", required = true) String printer_name,
@RequestParam(name = "printer_sn", required = true) String printer_sn,
@RequestParam(name = "printer_key", required = true) String printer_key,
@ -83,14 +79,14 @@ public class ShopStorePrinterController {
@ApiOperation(value = "门店修改一个打票机", notes = "门店修改一个打票机")
@RequestMapping(value = "/update", method = {RequestMethod.POST})
public CommonResult updateShopStorePrinter(@RequestParam(name = "printer_id" , required = true) Long printer_id,
@RequestParam(name = "model_id" , required = true) Long model_id,
@RequestParam(name = "printer_name", required = true) String printer_name,
@RequestParam(name = "printer_sn", required = true) String printer_sn,
@RequestParam(name = "printer_key", required = true) String printer_key,
@RequestParam(name = "region_id", required = true) Integer region_id,
@RequestParam(name = "paper_with", defaultValue = "58") Integer paper_with,
@RequestParam(name = "website_url", defaultValue = "") String website_url) {
public CommonResult updateShopStorePrinter(@RequestParam(name = "printer_id", required = true) Long printer_id,
@RequestParam(name = "model_id", required = true) Long model_id,
@RequestParam(name = "printer_name", required = true) String printer_name,
@RequestParam(name = "printer_sn", required = true) String printer_sn,
@RequestParam(name = "printer_key", required = true) String printer_key,
@RequestParam(name = "region_id", required = true) Integer region_id,
@RequestParam(name = "paper_with", defaultValue = "58") Integer paper_with,
@RequestParam(name = "website_url", defaultValue = "") String website_url) {
ShopStorePrinter shopStorePrinter = new ShopStorePrinter();
shopStorePrinter.setPrinter_id(printer_id);
@ -107,20 +103,20 @@ public class ShopStorePrinterController {
@ApiOperation(value = "门店开启/关闭一个打票机", notes = "门店开启/关闭一个打票机")
@RequestMapping(value = "/status/update", method = {RequestMethod.POST})
public CommonResult updateShopStorePrinterStatus(@RequestParam(name = "printer_id" , required = true) Long printerId,
@RequestParam(name = "status" , required = true) Integer status) {
public CommonResult updateShopStorePrinterStatus(@RequestParam(name = "printer_id", required = true) Long printerId,
@RequestParam(name = "status", required = true) Integer status) {
return shopStorePrinterService.updateShopStorePrinterStatus(printerId, status);
}
@ApiOperation(value = "门店删除一个打票机", notes = "门店删除一个打票机")
@RequestMapping(value = "/delete", method = {RequestMethod.POST})
public CommonResult deleteShopStorePrinter(@RequestParam(name = "printer_id" , required = true) Long printer_id) {
public CommonResult deleteShopStorePrinter(@RequestParam(name = "printer_id", required = true) Long printer_id) {
return shopStorePrinterService.deleteShopStorePrinter(printer_id);
}
@ApiOperation(value = "清空打票机打印队列", notes = "清空打票机打印队列")
@RequestMapping(value = "/clear/print/queue", method = {RequestMethod.POST})
public CommonResult clearShopPrinterQueue(@RequestParam(name = "printer_sn" , required = true) String printer_sn) {
public CommonResult clearShopPrinterQueue(@RequestParam(name = "printer_sn", required = true) String printer_sn) {
return shopStorePrinterService.clearPrinterQueue(printer_sn);
}
}

View File

@ -22,9 +22,9 @@ public class ShopStorePrinterModelController {
@ApiOperation(value = "门店打票机型号分页列表查询", notes = "门店打票机型号分页列表查询")
@RequestMapping(value = "/page", method = {RequestMethod.GET})
public CommonResult shopStorePrinterModelPageList(@RequestParam(name = "keyword", defaultValue = "") String keyword,
@RequestParam(name = "pageNum", defaultValue = "1") Integer pageNum,
@RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize) {
return CommonResult.success(shopStorePrinterModelService.shopStorePrinterModelPageList(keyword,pageNum,pageSize));
@RequestParam(name = "pageNum", defaultValue = "1") Integer pageNum,
@RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize) {
return CommonResult.success(shopStorePrinterModelService.shopStorePrinterModelPageList(keyword, pageNum, pageSize));
}
@ApiOperation(value = "门店打票机型号列表查询", notes = "门店打票机型号列表查询")
@ -35,18 +35,18 @@ public class ShopStorePrinterModelController {
@ApiOperation(value = "门店一个打票机型号详情", notes = "门店一个打票机型号详情")
@RequestMapping(value = "/detail", method = {RequestMethod.GET})
public CommonResult shopStorePrinterModelDetail(@RequestParam(name = "model_id" , required = true) Long printer_id) {
public CommonResult shopStorePrinterModelDetail(@RequestParam(name = "model_id", required = true) Long printer_id) {
return shopStorePrinterModelService.shopStorePrinterModelDetail(printer_id);
}
@ApiOperation(value = "门店新增一个打票机型号", notes = "门店新增一个打票机型号")
@RequestMapping(value = "/add/new", method = {RequestMethod.POST})
public CommonResult addNewShopStorePrinterModel(
@RequestParam(name = "model_name", required = true) String model_name,
@RequestParam(name = "intro", defaultValue = "") String intro,
@RequestParam(name = "brand_name", required = true) String brand_name,
@RequestParam(name = "website_url", defaultValue = "") String website_url,
@RequestParam(name = "paper_with", defaultValue = "58") Integer paper_with) {
@RequestParam(name = "model_name", required = true) String model_name,
@RequestParam(name = "intro", defaultValue = "") String intro,
@RequestParam(name = "brand_name", required = true) String brand_name,
@RequestParam(name = "website_url", defaultValue = "") String website_url,
@RequestParam(name = "paper_with", defaultValue = "58") Integer paper_with) {
ShopStorePrinterModel shopStorePrinterModel = new ShopStorePrinterModel();
shopStorePrinterModel.setModel_name(model_name);
@ -61,7 +61,7 @@ public class ShopStorePrinterModelController {
@ApiOperation(value = "门店修改一个打票机型号", notes = "门店修改一个打票机型号")
@RequestMapping(value = "/update", method = {RequestMethod.POST})
public CommonResult updateShopStorePrinterModel(@RequestParam(name = "model_id" , required = true) Long model_id,
public CommonResult updateShopStorePrinterModel(@RequestParam(name = "model_id", required = true) Long model_id,
@RequestParam(name = "model_name", required = true) String model_name,
@RequestParam(name = "intro", defaultValue = "") String intro,
@RequestParam(name = "brand_name", required = true) String brand_name,
@ -82,7 +82,7 @@ public class ShopStorePrinterModelController {
@ApiOperation(value = "门店删除一个打票机型号", notes = "门店删除一个打票机型号")
@RequestMapping(value = "/delete", method = {RequestMethod.POST})
public CommonResult deleteShopStorePrinterModel(@RequestParam(name = "model_id" , required = true) Long model_id) {
public CommonResult deleteShopStorePrinterModel(@RequestParam(name = "model_id", required = true) Long model_id) {
return shopStorePrinterModelService.deleteShopStorePrinterModel(model_id);
}
}

View File

@ -22,9 +22,9 @@ public class ShopStorePrinterRegionController {
@ApiOperation(value = "门店打票机摆放区域分页列表查询", notes = "门店打票机摆放区域分页列表查询")
@RequestMapping(value = "/page", method = {RequestMethod.GET})
public CommonResult shopStorePrinterRegionPageList(@RequestParam(name = "keyword", defaultValue = "") String keyword,
@RequestParam(name = "pageNum", defaultValue = "1") Integer pageNum,
@RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize) {
return CommonResult.success(shopStorePrinterRegionService.shopStorePrinterRegionPageList(keyword,pageNum,pageSize));
@RequestParam(name = "pageNum", defaultValue = "1") Integer pageNum,
@RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize) {
return CommonResult.success(shopStorePrinterRegionService.shopStorePrinterRegionPageList(keyword, pageNum, pageSize));
}
@ApiOperation(value = "门店打票机摆放区域列表查询", notes = "门店打票机摆放区域分页列表查询")
@ -37,8 +37,8 @@ public class ShopStorePrinterRegionController {
@ApiOperation(value = "门店新增一个打票机摆放区域", notes = "门店新增一个打票机摆放区域")
@RequestMapping(value = "/add/new", method = {RequestMethod.POST})
public CommonResult addNewShopStorePrinterRegion(
@RequestParam(name = "region", required = true) String region,
@RequestParam(name = "intro", defaultValue = "") String intro) {
@RequestParam(name = "region", required = true) String region,
@RequestParam(name = "intro", defaultValue = "") String intro) {
ShopStorePrinterRegion shopStorePrinterRegion = new ShopStorePrinterRegion();
shopStorePrinterRegion.setRegion(region);
@ -49,9 +49,9 @@ public class ShopStorePrinterRegionController {
@ApiOperation(value = "门店修改一个打票机摆放区域", notes = "门店修改一个打票机摆放区域")
@RequestMapping(value = "/update", method = {RequestMethod.POST})
public CommonResult updateShopStorePrinterRegion(@RequestParam(name = "region_id" , required = true) Long region_id,
@RequestParam(name = "region", required = true) String region,
@RequestParam(name = "intro", defaultValue = "") String intro) {
public CommonResult updateShopStorePrinterRegion(@RequestParam(name = "region_id", required = true) Long region_id,
@RequestParam(name = "region", required = true) String region,
@RequestParam(name = "intro", defaultValue = "") String intro) {
ShopStorePrinterRegion shopStorePrinterRegion = new ShopStorePrinterRegion();
shopStorePrinterRegion.setRegion_id(region_id);
@ -63,7 +63,7 @@ public class ShopStorePrinterRegionController {
@ApiOperation(value = "门店删除一个打票机摆放区域", notes = "门店删除一个打票机摆放区域")
@RequestMapping(value = "/delete", method = {RequestMethod.POST})
public CommonResult deleteShopStorePrinterRegion(@RequestParam(name = "model_id" , required = true) Long model_id) {
public CommonResult deleteShopStorePrinterRegion(@RequestParam(name = "model_id", required = true) Long model_id) {
return shopStorePrinterRegionService.deleteShopStorePrinterRegion(model_id);
}
}

View File

@ -21,8 +21,8 @@ public class ShopStorePrinterTemplateController {
@ApiOperation(value = "获取门店打票机下单打印模版", notes = "获取门店打票机下单打印模版")
@RequestMapping(value = "/order", method = {RequestMethod.GET})
public CommonResult shopStorePrinterRegionPageList(
@RequestParam(name = "store_id", defaultValue = "0") Integer storeId,
@RequestParam(name = "category", defaultValue = "1") Integer category) {
@RequestParam(name = "store_id", defaultValue = "0") Integer storeId,
@RequestParam(name = "category", defaultValue = "1") Integer category) {
return shopStorePrinterTemplateService.getShopStorePrinterTemplate(storeId, category);
}

View File

@ -1,17 +1,12 @@
package com.suisung.mall.shop.store.controller.admin;
import cn.hutool.json.JSONUtil;
import com.suisung.mall.common.api.CommonResult;
import com.suisung.mall.common.modules.store.ShopStorePrinter;
import com.suisung.mall.common.modules.store.ShopStoreSameCityTransportBase;
import com.suisung.mall.common.pojo.dto.ShopStoreSameCityTransportBaseDTO;
import com.suisung.mall.common.utils.JsonUtil;
import com.suisung.mall.shop.store.service.ShopStorePrinterService;
import com.suisung.mall.shop.store.service.ShopStoreSameCityTransportBaseService;
import com.suisung.mall.shop.store.service.ShopStoreSameCityTransportService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
@ -42,7 +37,7 @@ public class ShopStoreSameCityTransportBaseController {
@ApiOperation(value = "删除同城配送的一个区域设置", notes = "删除同城配送的一个区域设置")
@RequestMapping(value = "/delete/area", method = {RequestMethod.POST})
public CommonResult deleteShopStoreSameCityTransport(@RequestParam(name = "transport_id" , required = true) Long transportId) {
public CommonResult deleteShopStoreSameCityTransport(@RequestParam(name = "transport_id", required = true) Long transportId) {
return transportService.deleteShopStoreSameCityTransport(transportId);
}
}

View File

@ -14,5 +14,5 @@ import org.springframework.stereotype.Repository;
*/
@Repository
public interface ShopStorePrinterLogMapper extends BaseMapper<ShopStorePrinterLog>{
public interface ShopStorePrinterLogMapper extends BaseMapper<ShopStorePrinterLog> {
}

View File

@ -20,9 +20,10 @@ import java.util.Map;
*/
@Repository
public interface ShopStorePrinterMapper extends BaseMapper<ShopStorePrinter>{
public interface ShopStorePrinterMapper extends BaseMapper<ShopStorePrinter> {
/**
* 根据关键字获取打票机分页列表查询自定义扩展实体类
*
* @param keyword
* @return
*/

View File

@ -14,5 +14,5 @@ import org.springframework.stereotype.Repository;
*/
@Repository
public interface ShopStorePrinterTemplateMapper extends BaseMapper<ShopStorePrinterTemplate>{
public interface ShopStorePrinterTemplateMapper extends BaseMapper<ShopStorePrinterTemplate> {
}

View File

@ -13,5 +13,5 @@ import com.suisung.mall.common.modules.store.ShopStoreSameCityTransportBase;
import org.springframework.stereotype.Repository;
@Repository
public interface ShopStoreSameCityTransportBaseMapper extends BaseMapper<ShopStoreSameCityTransportBase> {
public interface ShopStoreSameCityTransportBaseMapper extends BaseMapper<ShopStoreSameCityTransportBase> {
}

View File

@ -10,7 +10,6 @@ package com.suisung.mall.shop.store.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.suisung.mall.common.modules.store.ShopStoreSameCityTransport;
import com.suisung.mall.common.modules.store.ShopStoreSameCityTransportBase;
import org.springframework.stereotype.Repository;
@Repository

View File

@ -1,7 +1,6 @@
package com.suisung.mall.shop.store.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.suisung.mall.common.modules.store.ShopStorePrinterLog;
import com.suisung.mall.common.modules.store.ShopStoreSfOrder;
import org.springframework.stereotype.Repository;
@ -15,6 +14,6 @@ import org.springframework.stereotype.Repository;
*/
@Repository
public interface ShopStoreSfOrderMapper extends BaseMapper<ShopStoreSfOrder>{
public interface ShopStoreSfOrderMapper extends BaseMapper<ShopStoreSfOrder> {
}

View File

@ -103,6 +103,7 @@ public interface ShopStoreBaseService extends IBaseService<ShopStoreBase> {
/**
* 检测店铺的地址是否有效返回规范全地址
*
* @param shopStoreBase
* @return
*/

View File

@ -14,6 +14,14 @@ public interface ShopStoreSfOrderService extends IBaseService<ShopStoreSfOrder>
*/
ShopStoreSfOrder getBySfOrderId(String sfOrderId);
/**
* 根据商家订单号获取顺丰同城的订单号
*
* @param shopOrderId
* @return
*/
String getSfOrderIdByShopOrderId(String shopOrderId);
/**
* 新增一个顺丰同城订单记录
*

View File

@ -2839,16 +2839,16 @@ public class ShopStoreBaseServiceImpl extends BaseServiceImpl<ShopStoreBaseMappe
StandardAddressDTO standardAddressDTO = new StandardAddressDTO();
if (StrUtil.isBlank(shopStoreBase.getStore_area()) || StrUtil.isBlank(shopStoreBase.getStore_address()) || StrUtil.isBlank(shopStoreBase.getStore_longitude()) || StrUtil.isBlank(shopStoreBase.getStore_latitude())) {
StringBuffer sb = new StringBuffer();
if(StrUtil.isNotBlank(shopStoreBase.getStore_area())){
if (StrUtil.isNotBlank(shopStoreBase.getStore_area())) {
sb.append(StrUtil.replace(shopStoreBase.getStore_area(), "/", ""));
}
if(StrUtil.isNotBlank(shopStoreBase.getStore_address())){
if (StrUtil.isNotBlank(shopStoreBase.getStore_address())) {
sb.append(shopStoreBase.getStore_address());
}
if(StrUtil.isBlank(shopStoreBase.getStore_longitude())){
if (StrUtil.isBlank(shopStoreBase.getStore_longitude())) {
shopStoreBase.setStore_longitude("0");
}
if(StrUtil.isBlank(shopStoreBase.getStore_latitude())){
if (StrUtil.isBlank(shopStoreBase.getStore_latitude())) {
shopStoreBase.setStore_latitude("0");
}
standardAddressDTO.setFullAddress(sb.toString());

View File

@ -38,7 +38,6 @@ import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.text.DecimalFormat;
import java.util.Date;
import java.util.List;
@ -341,7 +340,7 @@ public class ShopStoreSameCityTransportBaseServiceImpl extends BaseServiceImpl<S
if (transport.getMax_delivery_radius() < distance) {
// 订单距离不在配送范围内返回不送了
// canNotDeliveryReason = "有订单超出配送范围,请检查下单店铺位置!";//String.format("有订单超出%d米的配送范围",transport.getMax_delivery_radius());
canDeliveryAreaCnt+=1;
canDeliveryAreaCnt += 1;
continue;
}
@ -354,8 +353,8 @@ public class ShopStoreSameCityTransportBaseServiceImpl extends BaseServiceImpl<S
continue;
}
canDeliveryAreaCnt+=1;
canNotDeliveryReason="";
canDeliveryAreaCnt += 1;
canNotDeliveryReason = "";
// 获取优惠的配送费
if ((CommonConstant.Delivery_Amount_Comput_Type_Original.equals(transport.getDelivery_discount_type()) && transport.getMin_delivery_discount_amount().compareTo(orderProductAmount) <= 0) ||

View File

@ -43,6 +43,29 @@ public class ShopStoreSfOrderServiceImpl extends BaseServiceImpl<ShopStoreSfOrde
return getOne(wrapper);
}
/**
* 根据商家订单号获取顺丰同城的订单号
*
* @param shopOrderId
* @return
*/
@Override
public String getSfOrderIdByShopOrderId(String shopOrderId) {
if (StrUtil.isBlank(shopOrderId)) {
return "";
}
QueryWrapper<ShopStoreSfOrder> wrapper = new QueryWrapper<>();
wrapper.eq("shop_order_id", shopOrderId);
wrapper.select("sf_order_id");
ShopStoreSfOrder shopStoreSfOrder = getOne(wrapper);
if (shopStoreSfOrder == null || StrUtil.isBlank(shopStoreSfOrder.getSf_order_id())) {
return "";
}
return shopStoreSfOrder.getSf_order_id();
}
/**
* 新增一个顺丰同城订单记录
*
@ -56,8 +79,8 @@ public class ShopStoreSfOrderServiceImpl extends BaseServiceImpl<ShopStoreSfOrde
return false;
}
if (StrUtil.isEmpty(record.getShop_id()) || StrUtil.isEmpty(record.getSf_order_id()) || StrUtil.isEmpty(record.getShop_order_id())) {
logger.info("缺少必要参数,保存失败!");
if (StrUtil.isBlank(record.getSf_order_id()) || StrUtil.isBlank(record.getShop_order_id())) {
logger.error("缺少必要参数,保存失败:{}", record);
return false;
}
@ -72,8 +95,8 @@ public class ShopStoreSfOrderServiceImpl extends BaseServiceImpl<ShopStoreSfOrde
*/
@Override
public Boolean updateShopStoreSfOrderStatus(ShopStoreSfOrder record) {
if (record == null || StrUtil.isEmpty(record.getSf_order_id()) && record.getSf_order_status() == null || StrUtil.isEmpty(record.getFeed()) || StrUtil.isEmpty(record.getSf_order_status_desc())) {
logger.info("缺少必要参数!");
if (record == null || StrUtil.isBlank(record.getSf_order_id()) || record.getOrder_status() == null) {
logger.error("缺少必要参数!{}", record);
return false;
}
@ -81,37 +104,47 @@ public class ShopStoreSfOrderServiceImpl extends BaseServiceImpl<ShopStoreSfOrde
UpdateWrapper<ShopStoreSfOrder> updateWrapper = new UpdateWrapper<>();
updateWrapper.eq("sf_order_id", record.getSf_order_id());
if (record.getSf_order_status() != null && record.getSf_order_status() > 0) {
updateWrapper.set("sf_order_status", record.getSf_order_status());
if (record.getOrder_status() != null && record.getOrder_status() > 0) {
updateWrapper.set("order_status", record.getOrder_status());
cnt += 1;
}
if (StrUtil.isNotEmpty(record.getSf_order_status_desc())) {
updateWrapper.set("sf_order_status_desc", record.getSf_order_status_desc());
if (StrUtil.isNotBlank(record.getStatus_desc())) {
updateWrapper.set("status_desc", record.getStatus_desc());
cnt += 1;
}
if (StrUtil.isNotEmpty(record.getOperator_name())) {
if (StrUtil.isNotBlank(record.getOperator_name())) {
updateWrapper.set("operator_name", record.getOperator_name());
cnt += 1;
}
if (StrUtil.isNotEmpty(record.getOperator_phone())) {
if (StrUtil.isNotBlank(record.getShop_id())) {
updateWrapper.set("shop_id", record.getShop_id());
cnt += 1;
}
if (record.getDev_id() != null) {
updateWrapper.set("dev_id", record.getDev_id());
cnt += 1;
}
if (StrUtil.isNotBlank(record.getOperator_phone())) {
updateWrapper.set("operator_phone", record.getOperator_phone());
cnt += 1;
}
if (StrUtil.isNotEmpty(record.getFeed())) {
if (StrUtil.isNotBlank(record.getFeed())) {
updateWrapper.set("feed", record.getFeed());
cnt += 1;
}
if (StrUtil.isNotEmpty(record.getCancel_code())) {
if (StrUtil.isNotBlank(record.getCancel_code())) {
updateWrapper.set("cancel_code", record.getCancel_code());
cnt += 1;
}
if (StrUtil.isNotEmpty(record.getCancel_reason())) {
if (StrUtil.isNotBlank(record.getCancel_reason())) {
updateWrapper.set("cancel_reason", record.getCancel_reason());
cnt += 1;
}
@ -122,7 +155,7 @@ public class ShopStoreSfOrderServiceImpl extends BaseServiceImpl<ShopStoreSfOrde
}
if (record.getRider_lat() != null) {
updateWrapper.set("rider_lat", record.getPush_time());
updateWrapper.set("rider_lat", record.getRider_lat());
cnt += 1;
}

View File

@ -1,6 +1,5 @@
package com.suisung.mall.shop.store.utis;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.util.ObjUtil;
import cn.hutool.core.util.StrUtil;
@ -94,7 +93,7 @@ public class FeieUtil {
* 每次最多添加100台
* @return
*/
public Pair<Boolean,String> addPrinter(String printerInfo) {
public Pair<Boolean, String> addPrinter(String printerInfo) {
List<NameValuePair> nvps = new ArrayList<NameValuePair>();
nvps.add(new BasicNameValuePair("printerContent", printerInfo));
JSONObject reps = sendHttpPost2("Open_printerAddlist", nvps);
@ -163,16 +162,17 @@ public class FeieUtil {
/**
* 多个打印机打印同一个订单
*
* @param printerSnList 多个打印机编号
* @param printContent
* @return
*/
public List<Pair<String,String>> printContentByList(List<String> printerSnList, String printContent) {
public List<Pair<String, String>> printContentByList(List<String> printerSnList, String printContent) {
if (CollectionUtil.isEmpty(printerSnList)) {
return null;
}
List<Pair<String,String>> retList = new ArrayList<>();
List<Pair<String, String>> retList = new ArrayList<>();
for (String sn : printerSnList) {
if (StrUtil.isBlank(sn)) {
continue;
@ -334,13 +334,13 @@ public class FeieUtil {
String resultStr = "";
resultStr += "<L>商品名称 数量 金额</L><BR>";
resultStr += "--------------------------------<BR>";
DecimalFormat df2 =new DecimalFormat("#.00");
DecimalFormat df2 = new DecimalFormat("#.00");
for (int i = 0; i < productList.size(); i++) {
String product_sn = productList.get(i).getProduct_sn();
String title = productList.get(i).getItem_name();
String num = productList.get(i).getOrder_item_quantity() > 1 ? "x" + productList.get(i).getOrder_item_quantity().toString() : productList.get(i).getOrder_item_quantity().toString();
String amount = df2.format(productList.get(i).getOrder_item_amount()) ;
String amount = df2.format(productList.get(i).getOrder_item_amount());
num = addSpace(num, numLen);
amount = addSpace(amount, amountLen);
@ -374,7 +374,7 @@ public class FeieUtil {
resultStr += title;
}
if(StrUtil.isNotBlank(product_sn)) {
if (StrUtil.isNotBlank(product_sn)) {
resultStr += "<BOLD>" + product_sn + "</BOLD><BR>";
}
}

View File

@ -136,3 +136,4 @@ sf-express:
appid: 1711573316
appkey: cd57608baa9c00fe1cda5f652b14240d
dev_id: 1711573316
enable: 2

View File

@ -135,4 +135,5 @@ sf-express:
# 顺丰同城 api 接口配置
appid: 1711573316
appkey: cd57608baa9c00fe1cda5f652b14240d
dev_id: 1711573316
dev_id: 1711573316
enable: 2

View File

@ -139,4 +139,5 @@ sf-express:
# 顺丰同城 api 接口配置
appid: 1711573316
appkey: cd57608baa9c00fe1cda5f652b14240d
dev_id: 1711573316
dev_id: 1711573316
enable: 2

View File

@ -139,4 +139,5 @@ sf-express:
# 顺丰同城 api 接口配置
appid: 1711573316
appkey: cd57608baa9c00fe1cda5f652b14240d
dev_id: 1711573316
dev_id: 1711573316
enable: 2

View File

@ -139,4 +139,5 @@ sf-express:
# 顺丰同城 api 接口配置
appid: 1711573316
appkey: cd57608baa9c00fe1cda5f652b14240d
dev_id: 1711573316
dev_id: 1711573316
enable: 2