顺丰同城相关接口方法完善

This commit is contained in:
Jack 2024-11-29 01:46:07 +08:00
parent 1fbd523ca7
commit 298049c052
4 changed files with 200 additions and 5 deletions

View File

@ -44,7 +44,7 @@ public class ShopStoreSfOrder {
private String sf_bill_id;
@ApiModelProperty(value = "顺丰店铺id")
private String sf_shop_id;
private String shop_id;
@ApiModelProperty(value = "商家订单号,唯一的")
private String shop_order_id;
@ -61,6 +61,18 @@ public class ShopStoreSfOrder {
@ApiModelProperty(value = "状态说明")
private String sf_order_status_desc;
@ApiModelProperty(value = "取消码")
private String cancel_code;
@ApiModelProperty(value = "取消原因")
private String cancel_reason;
@ApiModelProperty(value = "配送员位置经度")
private Long rider_lng;
@ApiModelProperty(value = "配送员位置维度")
private Long rider_lat;
@ApiModelProperty(value = "推送时间")
private Long push_time;

View File

@ -166,6 +166,9 @@ public class SFExpressApiServiceImpl implements SFExpressApiService {
// 取件码在顺丰同城商户侧配置配置后有此字段
String pickupCode = shopStoreSfOrder.getPickup_code() != null ? shopStoreSfOrder.getPickup_code().toString() : "";
// TODO 商城订单状态 待发货 更改为 待收货
return Pair.of(true, pickupCode);
}
@ -180,6 +183,11 @@ public class SFExpressApiServiceImpl implements SFExpressApiService {
@Override
public SFExpressApiRes cancelOrder(String sfOrderId, 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);
}
return cancelOrder(params);
}
@ -206,7 +214,15 @@ public class SFExpressApiServiceImpl implements SFExpressApiService {
return new SFExpressApiRes().fail(-1,"顺丰同城:无返回值!");
}
return JsonUtil.json2object(retRespStr, SFExpressApiRes.class);
SFExpressApiRes sfExpressApiRes = JsonUtil.json2object(retRespStr, SFExpressApiRes.class);
if (sfExpressApiRes == null) {
logger.error("顺丰同城:取消订单,返回值异常!");
return new SFExpressApiRes().fail(-1,"顺丰同城:无返回值!");
}
// TODO 更改商品订单状态
return sfExpressApiRes;
}
/**
@ -382,6 +398,16 @@ public class SFExpressApiServiceImpl implements SFExpressApiService {
logger.info("接收顺丰原因订单取消回调返回的 JSON 数据:{}", jsonData);
// 更改顺丰同城订单状态
ShopStoreSfOrder shopStoreSfOrder = toShopStoreSfOrder(jsonData);
Boolean success = shopStoreSfOrderService.updateShopStoreSfOrderStatus(shopStoreSfOrder);
if (!success) {
return new SFExpressApiRes().fail(-1,"状态处理失败!");
}
// TODO 更改商城订单状态为已取消注意事务问题
return new SFExpressApiRes().success("success");
}
@ -404,6 +430,13 @@ public class SFExpressApiServiceImpl implements SFExpressApiService {
logger.info("接收顺丰配送状态更改回调返回的 JSON 数据:{}", jsonData);
// 更改顺丰同城订单状态
ShopStoreSfOrder shopStoreSfOrder = toShopStoreSfOrder(jsonData);
Boolean success = shopStoreSfOrderService.updateShopStoreSfOrderStatus(shopStoreSfOrder);
if (!success) {
return new SFExpressApiRes().fail(-1,"状态处理失败!");
}
return new SFExpressApiRes().success("success");
}
@ -426,6 +459,33 @@ public class SFExpressApiServiceImpl implements SFExpressApiService {
logger.info("接收顺丰订单完成回调返回的 JSON 数据:{}", jsonData);
// 更改顺丰同城订单状态
ShopStoreSfOrder shopStoreSfOrder = toShopStoreSfOrder(jsonData);
if ( shopStoreSfOrder == null) {
return new SFExpressApiRes().fail(-1,"返回数据转换失败!");
}
ShopStoreSfOrder order = shopStoreSfOrderService.getBySfOrderId(shopStoreSfOrder.getSf_order_id());
if (order == null) {
return new SFExpressApiRes().fail(-1,"订单不存在!");
}
// 订单状态已经更改过无需更改
if (order.getSf_order_status().equals(17)){
return new SFExpressApiRes().success("success");
}
Boolean success = shopStoreSfOrderService.updateShopStoreSfOrderStatus(shopStoreSfOrder);
if (!success) {
return new SFExpressApiRes().fail(-1,"状态处理失败!");
}
// TODO 更改商城订单状态为已完成注意事务问题
return new SFExpressApiRes().success("success");
}
@ -500,4 +560,17 @@ public class SFExpressApiServiceImpl implements SFExpressApiService {
generateOpenSign(postData);
return sb;
}
/**
* 回调结果数据填充顺丰同城订单实例
* @param resultJSON
* @return
*/
private ShopStoreSfOrder toShopStoreSfOrder(String resultJSON){
if(StrUtil.isBlank(resultJSON)){
return null;
}
return JSONUtil.toBean(resultJSON, ShopStoreSfOrder.class);
}
}

View File

@ -2,9 +2,18 @@ package com.suisung.mall.shop.store.service;
import com.suisung.mall.common.modules.store.ShopStoreSfOrder;
import com.suisung.mall.core.web.service.IBaseService;
import io.swagger.models.auth.In;
public interface ShopStoreSfOrderService extends IBaseService<ShopStoreSfOrder> {
/**
* 根据顺丰同城订单id获取一条记录
* @param sfOrderId
* @return
*/
ShopStoreSfOrder getBySfOrderId(String sfOrderId);
/**
* 新增一个顺丰同城订单记录
*
@ -14,5 +23,11 @@ public interface ShopStoreSfOrderService extends IBaseService<ShopStoreSfOrder>
Boolean insertShopStoreSfOrder(ShopStoreSfOrder record);
/**
* 更新顺丰同城订单的状态等关键字段
* @param record
* @return
*/
Boolean updateShopStoreSfOrderStatus(ShopStoreSfOrder record);
}

View File

@ -9,6 +9,8 @@
package com.suisung.mall.shop.store.service.impl;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.suisung.mall.common.modules.store.ShopStoreSfOrder;
import com.suisung.mall.core.web.service.impl.BaseServiceImpl;
import com.suisung.mall.shop.store.mapper.ShopStoreSfOrderMapper;
@ -17,12 +19,30 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Service;
import java.util.Date;
@Service
public class ShopStoreSfOrderServiceImpl extends BaseServiceImpl<ShopStoreSfOrderMapper, ShopStoreSfOrder> implements ShopStoreSfOrderService {
private static final Logger logger = LoggerFactory.getLogger(ShopStoreSfOrderServiceImpl.class);
/**
* 根据顺丰同城订单id获取一条记录
*
* @param sfOrderId
* @return
*/
@Override
public ShopStoreSfOrder getBySfOrderId(String sfOrderId) {
if (StrUtil.isBlank(sfOrderId)) {
return null;
}
QueryWrapper<ShopStoreSfOrder> wrapper = new QueryWrapper<>();
wrapper.eq("sf_order_id", sfOrderId);
return getOne(wrapper);
}
/**
* 新增一个顺丰同城订单记录
*
@ -32,15 +52,90 @@ public class ShopStoreSfOrderServiceImpl extends BaseServiceImpl<ShopStoreSfOrde
@Override
public Boolean insertShopStoreSfOrder(ShopStoreSfOrder record) {
if (record == null) {
logger.error("ShopStoreSfOrder 实体空值,保存失败!");
logger.info("参数空值,保存失败!");
return false;
}
if (StrUtil.isEmpty(record.getSf_shop_id()) || StrUtil.isEmpty(record.getSf_order_id()) || StrUtil.isEmpty(record.getShop_order_id())) {
logger.error("ShopStoreSfOrder 保存,缺少必要参数,保存失败!");
if (StrUtil.isEmpty(record.getShop_id()) || StrUtil.isEmpty(record.getSf_order_id()) || StrUtil.isEmpty(record.getShop_order_id())) {
logger.info("缺少必要参数,保存失败!");
return false;
}
return save(record);
}
/**
* 更新顺丰同城订单的状态等关键字段
*
* @param record
* @return
*/
@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("缺少必要参数!");
return false;
}
int cnt = 0;
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() );
cnt+=1;
}
if (StrUtil.isNotEmpty(record.getSf_order_status_desc())) {
updateWrapper.set("sf_order_status_desc", record.getSf_order_status_desc());
cnt+=1;
}
if (StrUtil.isNotEmpty(record.getOperator_name())) {
updateWrapper.set("operator_name", record.getOperator_name());
cnt+=1;
}
if (StrUtil.isNotEmpty(record.getOperator_phone())) {
updateWrapper.set("operator_phone", record.getOperator_phone());
cnt+=1;
}
if (StrUtil.isNotEmpty(record.getFeed())) {
updateWrapper.set("feed", record.getFeed());
cnt+=1;
}
if (StrUtil.isNotEmpty(record.getCancel_code())) {
updateWrapper.set("cancel_code", record.getCancel_code());
cnt+=1;
}
if (StrUtil.isNotEmpty(record.getCancel_reason())) {
updateWrapper.set("cancel_reason", record.getCancel_reason());
cnt+=1;
}
if (record.getRider_lng()!=null) {
updateWrapper.set("rider_lng", record.getRider_lng());
cnt+=1;
}
if (record.getRider_lat()!=null) {
updateWrapper.set("rider_lat", record.getPush_time());
cnt+=1;
}
if (record.getPush_time()!=null && record.getPush_time()>0) {
updateWrapper.set("push_time", record.getPush_time());
cnt+=1;
}
updateWrapper.set("updated_at", new Date());
if (cnt <= 0) {
return false;
}
return update(updateWrapper);
}
}