Commit fec0f3da authored by Allen Chen's avatar Allen Chen

GD

parent fc793851
......@@ -155,7 +155,7 @@ public class PddLocalController {
logOrderMailDetailIoEntity.setStatus(StatusEnum.SIGNED.getCode());
} else if (action.equals("warehouse_reject_sign")) {
notifyRequest.setBizActionDesc("仓库拒签");
notifyResult.setCode(22);
notifyResult.setCode(receiveRequest.getCode());
notifyResult.setDesc(receiveRequest.getDesc());
notifyResult.setRemark(receiveRequest.getDesc());
......
......@@ -13,21 +13,6 @@ public class GDAttachmentEntity {
@TableId(value = "uid")
private String uid;
@TableField(value = "created")
private String created;
@TableField(value = "updated")
private String updated;
@TableField(value = "state")
private Integer state;
@TableField(value = "remarks")
private String remarks;
@TableField(value = "status")
private Integer status;
/**
* 工单id
*/
......@@ -41,9 +26,11 @@ public class GDAttachmentEntity {
private String url;
/**
* 附件类型
* 物流单号
*/
@TableField(value = "type")
private String type;
@TableField(value = "waybill_no")
private String waybill_no;
}
package org.ta.pddserver.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
/**
* 物流公司回复的附件
*/
@Data
@TableName("gd_reply_attachment")
public class GDReplyAttachmentEntity {
@TableId(value = "uid")
private String uid;
/**
* 工单id
*/
@TableField(value = "tickId")
private Long tickId;
/**
* 物流单号
*/
@TableField(value = "waybill_no")
private String waybill_no;
/**
* url
*/
@TableField(value = "url")
private String url;
/**
* 回复Id
*/
@TableField(value = "replyId")
private String replyId;
}
package org.ta.pddserver.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
/**
* 物流公司回复
*/
@Data
@TableName("gd_reply")
public class GDReplyEntity {
@TableField(value = "created")
private String created;
@TableField(value = "updated")
private String updated;
@TableField(value = "state")
private Integer state;
@TableField(value = "remarks")
private String remarks;
@TableField(value = "status")
private Integer status;
/**
* 工单id
*/
@TableField(value = "tickId")
private Long tickId;
/**
* 物流单号
*/
@TableField(value = "waybill_no")
private String waybill_no;
/**
* 处理结果
* reply_type=2时,可以给个值:“无”
*/
@TableField(value = "handle_result")
private String handle_result;
/**
* 签收状态,0:默认,1:未签收,2:已签收
* reply_type=2时,可以给个值:0
*/
@TableField(value = "sign_state")
private Integer sign_state;
/**
* 是否赔付,0:默认,1:未赔付,2:已赔付
* reply_type=2时,可以给个值:0
*/
@TableField(value = "compensate_state")
private Integer compensate_state;
/**
* 赔付金额(单位:分)
* reply_type=2时,可以给个值:0
*/
@TableField(value = "compensate_amount")
private Integer compensate_amount;
/**
* 责任方,0:默认, 1:消费者,2:商家,3:快递公司,4:其他
*/
@TableField(value = "duty")
private Integer duty;
/**
* 处理人
*/
@TableField(value = "express_dealer")
private String express_dealer;
/**
* 处理人联系方式
* 联系方式支持以下类型(联系方式格式错误,数据会推送失败)
* 1、手机号:需符合正则,参考正则0?(13|14|15|17|18|19)[0-9]{9}
* 2、座机:含区号、不带“-”需符合正则,参考正则
* \\d{3}\\d{8}|\\d{4}\\d{7,8}
* 3、官方号码:需提前沟通加白
*/
@TableField(value = "express_dealer_contact")
private String express_dealer_contact;
/**
* 回复类型,1:回复工单处理结果,2: 回复电联结果
* 当为空时,默认值为1
*/
@TableField(value = "reply_type")
private Integer reply_type;
/**
* 电联结果,当reply_type=2时,为必填项,同时该字段的值为一个json格式的字符串,格式如下:
* {
* "call_result":1,
* "call_timestamp":"1688283125000",
* "caller_name":"小张",
* "caller_contract":"15067188888"
* }
* call_result:电联结果(int,必填)
* 取值如下:
* 1:停机/空号
* 2:电话占线
* 3:无人接听
* 4:接通后非本人
* 5:接通但反馈没投诉过
* call_timestamp:电联时间戳(long ,必填)
* caller_name:回拨人姓名(String,必填)
* caller_contract:回拨联系方式(String,必填)
*/
@TableField(value = "reply_call_result")
private String reply_call_result;
}
......@@ -16,269 +16,162 @@ public class GDTicketEntity {
@TableId(value = "uid")
private String uid;
@TableField(value = "created")
private String created;
@TableField(value = "updated")
private String updated;
@TableField(value = "state")
private Integer state;
@TableField(value = "remarks")
private String remarks;
/**
* 工单ID(唯一标识,自增或业务生成)
* 数据库字段:ticket_id
* 国家/区域名称(集运工单特有)
*/
@TableField(value = "status")
private Long ticket_id;
@TableField(value = "area_name")
public String area_name;
/**
* 工单创建来源
* 0:平台,1:消费者,2:商家
* 数据库字段:create_type
* 创建时间
*/
@TableField(value = "status")
private Integer create_type;
@TableField(value = "created_at")
public Long created_at;
/**
* 收件地址(64位)
* 工单来源为消费者时必填,其他来源为空
* 数据库字段:receive_address
* 更新时间
*/
@TableField(value = "status")
private String receive_address;
@TableField(value = "updated_at")
private Integer updated_at;
/**
* 揽件地址(64位)
* 工单来源为商家时必填,其他来源为空
* 数据库字段:send_address
*/
@TableField(value = "status")
private String send_address;
/**
* 订单号生成的物流单号(预生成物流单号)
* 数据库字段:pre_delivery_id
*/
@TableField(value = "status")
private String pre_delivery_id;
/**
* 物流商处理结果
* 数据库字段:handle_result
*/
@TableField(value = "status")
private String handle_result;
/**
* 物流商快递编码(关联物流商信息)
* 数据库字段:express_company_id
* 工单创建来源
* 0:平台 1:消费者 2:商家
*/
@TableField(value = "status")
private Integer express_company_id;
@TableField(value = "create_type")
public Integer create_type;
/**
* 赔付状态
* 0:默认(未涉及赔付),1:未赔付,2:已赔付
* 数据库字段:compensate_state
* 64位,工单来源为消费者时,传收件地址,其他来源该字段为空
*/
@TableField(value = "status")
private Integer compensate_state;
@TableField(value = "receive_address")
private String receive_address;
/**
* 赔付金额(单位:分)
* 数据库字段:compensate_amount
* 64位,工单来源为消费者时,消费者姓名,其他来源该字段为空
*/
@TableField(value = "status")
private Long compensate_amount;
@TableField(value = "receive_name")
private String receive_name;
/**
* 物流商回传凭证(List格式,存储附件信息)
* 数据库存储:JSON字符串,查询时自动反序列化为List
* 数据库字段:express_attachment
* 64位,工单来源为消费者时,消费者电话,其他来源该字段为空
*/
@TableField(value = "status")
private List<GDTicketRepsonse.ExpressAttachment> express_attachment;
@TableField(value = "receive_contact")
private String receive_contact;
/**
* 签收状态
* 0:默认(未涉及签收),1:未签收,2:已签收
* 数据库字段:sign_state
* 订单号生成的物流单号
*/
@TableField(value = "status")
private Integer sign_state;
@TableField(value = "pre_delivery_id")
public String pre_delivery_id;
/**
* 处理人(物流商侧处理工单的人员姓名)
* 数据库字段:express_dealer
* 问题描述
*/
@TableField(value = "status")
private String express_dealer;
@TableField(value = "title")
private String title;
/**
* 处理人联系方式(手机号或座机号)
* 数据库字段:express_dealer_contact
* 备注
*/
@TableField(value = "status")
private String express_dealer_contact;
@TableField(value = "description")
public String description;
/**
* 工单退回次数
* 0:首次下发,1:二次下发,2:三次下发...
* 数据库字段:retreat_count
* 问题来源, 0:买家,1:卖家
*/
@TableField(value = "status")
private Integer retreat_count;
@TableField(value = "source")
private Integer source;
/**
* 联系人姓名(消费者姓名,工单来源为消费者时必填)
* 数据库字段:receive_name
* 末端品牌代码
*/
@TableField(value = "status")
private String receive_name;
@TableField(value = "cabinet_code")
private String cabinet_code;
/**
* 联系人电话(消费者手机号,工单来源为消费者时必填)
* 数据库字段:receive_contact
* 紧急度,0:中,1:紧急
*/
@TableField(value = "status")
private String receive_contact;
@TableField(value = "urgent_type")
private Integer urgent_type;
/**
* 工单创建时间戳(毫秒级)
* 数据库字段:created_at
* 物流投诉标签
*/
@TableField(value = "status")
private Long created_at;
@TableField(value = "sub_type_ids")
private String sub_type_ids;
/**
* 工单最后更新时间戳(含申诉、处理结果更新时间,毫秒级)
* 数据库字段:updated_at
* 运单号
*/
@TableField(value = "status")
private Long updated_at;
@TableField(value = "waybill_no")
private String waybill_no;
/**
* 问题描述(工单核心问题标题,如"包裹丢失"、"派送延迟")
* 数据库字段:title
* 赔付状态 0:默认,1:未赔付,2:已赔付
*/
@TableField(value = "status")
private String title;
@TableField(value = "compensate_state")
private Integer compensate_state;
/**
* 备注(申诉内容、补充说明,最大长度2048字符)
* 数据库字段:description
* 赔付金额(单位:分)
*/
@TableField(value = "status")
private String description;
@TableField(value = "compensate_amount")
private Integer compensate_amount;
/**
* 问题来源
* 0:买家,1:卖家
* 数据库字段:source
* 问题类型id
*/
@TableField(value = "status")
private Integer source;
@TableField(value = "type_id")
private Integer type_id;
/**
* 运单号(可能为空,如未生成物流单的预咨询工单)
* 数据库字段:waybill_no
* 工单ID
*/
@TableField(value = "status")
private String waybill_no;
@TableField(value = "ticket_id")
private Long ticket_id;
/**
* 紧急度
* 0:中,1:紧急
* 数据库字段:urgent_type
* 0:默认,1:未签收,2:已签收
*/
@TableField(value = "status")
private Integer urgent_type;
@TableField(value = "sign_state")
private Integer sign_state;
/**
* 问题类型ID(关联问题类型表,如1-丢件,2-损件)
* 数据库字段:type_id
* 责任方,0:默认, 1:消费者,2:商家,3:快递公司,4:其他
*/
@TableField(value = "status")
private Integer type_id;
@TableField(value = "duty")
private Integer duty;
/**
* 客服创建工单时上传的附件列表(List格式,存储附件URL)
* 数据库存储:JSON字符串,查询时自动反序列化为List
* 数据库字段:attach_url
* 工单退回次数
* 0标识首次下发
* 1标识二次下发
* 2 标识三次下发
*/
@TableField(value = "status")
private List<String> attach_url;
@TableField(value = "retreat_count")
private Integer retreat_count;
/**
* 物流商回复状态
* 0:待回复,1:已回复
* 数据库字段:status
* 表示的是物流商回复状态,0:待回复,1:已回复
*/
@TableField(value = "status")
private Integer status;
/**
* 末端品牌代码(如自提柜品牌编码,非末端工单为空)
* 数据库字段:cabinet_code
*/
@TableField(value = "status")
private String cabinet_code;
/**
* 物流投诉标签(数组格式,存储标签ID,如[1,3,5])
* 数据库存储:JSON字符串,查询时自动反序列化为List
* 数据库字段:sub_type_ids
* 物流商处理结果
*/
@TableField(value = "status")
private List<Integer> subTypeIds;
@TableField(value = "handle_result")
private String handle_result;
/**
* 寄件单号(退货场景下的寄件订单号,非退货工单为空)
* 数据库字段:mail_order_sn
* 物流商快递编码
*/
@TableField(value = "status")
private String mail_order_sn;
@TableField(value = "express_company_id")
private Long express_company_id;
/**
* 订单金额(单位:分,关联工单对应的订单金额)
* 数据库字段:pay_amount
* 处理人
*/
@TableField(value = "status")
private Long pay_amount;
@TableField(value = "express_dealer")
private String express_dealer;
/**
* 国家/区域名称(集运工单特有,如"美国"、"中国香港")
* 数据库字段:area_name
* 处理人联系方式
*/
@TableField(value = "status")
private String area_name;
@TableField(value = "express_dealer_contact")
private String express_dealer_contact;
/**
* 用户投诉时上传的附件URL(数组格式,存储URL)
* 数据库存储:JSON字符串,查询时自动反序列化为List
* 数据库字段:attachment_urls_by_customer
* 退货寄件订单号
*/
@TableField(value = "status")
private List<String> attachment_urls_by_customer;
@TableField(value = "mail_order_sn")
private String mail_order_sn;
/**
* 物流商回传凭证DTO(内部静态类,封装附件详情)
* 对应 express_attachment 字段的List元素结构
* 64位,工单来源为商家时,传揽件地址,其他来源该字段为空
*/
@Data
public static class ExpressAttachment implements Serializable {
private static final long serialVersionUID = 1L;
@TableField(value = "send_address")
private String send_address;
/**
* 附件URL(如图片、文档链接)
* 订单金额
*/
private String url;
}
@TableField(value = "pay_amount")
private Long pay_amount;
}
package org.ta.pddserver.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
import org.ta.pddserver.entity.GDAttachmentEntity;
@Mapper
public interface GDAttachmentMapper extends BaseMapper<GDAttachmentEntity> {
}
package org.ta.pddserver.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
import org.ta.pddserver.entity.GDReplyAttachmentEntity;
@Mapper
public interface GDReplyAttachmentMapper extends BaseMapper<GDReplyAttachmentEntity> {
}
package org.ta.pddserver.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
import org.ta.pddserver.entity.GDReplyEntity;
@Mapper
public interface GDReplyMapper extends BaseMapper<GDReplyEntity> {
}
package org.ta.pddserver.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
import org.ta.pddserver.entity.GDTicketEntity;
import java.util.List;
@Mapper
public interface GDTicketMapper extends BaseMapper<GDTicketEntity> {
}
......@@ -11,6 +11,8 @@ public class ReceiveRequest {
private int status;
private Integer code;
private String desc;
private String remark;
......
package org.ta.pddserver.service;
import com.baomidou.mybatisplus.extension.service.IService;
import org.ta.pddserver.entity.GDAttachmentEntity;
public interface GDAttachmentService extends IService<GDAttachmentEntity> {
}
package org.ta.pddserver.service;
import com.baomidou.mybatisplus.extension.service.IService;
import org.ta.pddserver.entity.GDReplyAttachmentEntity;
public interface GDReplyAttachmentService extends IService<GDReplyAttachmentEntity> {
}
package org.ta.pddserver.service;
import com.baomidou.mybatisplus.extension.service.IService;
import org.ta.pddserver.entity.GDReplyEntity;
public interface GDReplyService extends IService<GDReplyEntity> {
}
package org.ta.pddserver.service;
import com.baomidou.mybatisplus.extension.service.IService;
import org.ta.pddserver.entity.GDTicketEntity;
public interface GDTicketService extends IService<GDTicketEntity> {
}
package org.ta.pddserver.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
import org.ta.pddserver.entity.GDAttachmentEntity;
import org.ta.pddserver.mapper.GDAttachmentMapper;
import org.ta.pddserver.service.GDAttachmentService;
@Service
public class GDAttachmentImpl extends ServiceImpl<GDAttachmentMapper, GDAttachmentEntity> implements GDAttachmentService {
}
\ No newline at end of file
package org.ta.pddserver.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
import org.ta.pddserver.entity.GDReplyAttachmentEntity;
import org.ta.pddserver.mapper.GDReplyAttachmentMapper;
import org.ta.pddserver.service.GDReplyAttachmentService;
@Service
public class GDReplyAttachmentImpl extends ServiceImpl<GDReplyAttachmentMapper, GDReplyAttachmentEntity> implements GDReplyAttachmentService {
}
\ No newline at end of file
package org.ta.pddserver.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
import org.ta.pddserver.entity.GDReplyEntity;
import org.ta.pddserver.mapper.GDReplyMapper;
import org.ta.pddserver.service.GDReplyService;
@Service
public class GDReplyImpl extends ServiceImpl<GDReplyMapper, GDReplyEntity> implements GDReplyService {
}
\ No newline at end of file
package org.ta.pddserver.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
import org.ta.pddserver.entity.GDTicketEntity;
import org.ta.pddserver.mapper.GDTicketMapper;
import org.ta.pddserver.service.GDTicketService;
@Service
public class GDTicketImpl extends ServiceImpl<GDTicketMapper, GDTicketEntity> implements GDTicketService {
}
\ No newline at end of file
package org.ta.pddserver;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import lombok.extern.slf4j.Slf4j;
import org.junit.jupiter.api.Test;
......@@ -9,6 +10,7 @@ import org.ta.pddserver.model.pddgd.request.GDTicketListRequest;
import org.ta.pddserver.model.pddgd.request.GDTicketReplyRequest;
import org.ta.pddserver.model.pddgd.request.GDUploadRequest;
import org.ta.pddserver.model.pddgd.response.GDTicketReplyRepsonse;
import org.ta.pddserver.model.pddgd.response.GDTicketRepsonse;
import org.ta.pddserver.model.pddjy.request.JYBaseRequestModel;
import org.ta.pddserver.model.pddjy.request.PddServiceConsoProblemOrderNotifyRequest;
import org.ta.pddserver.model.pddlg.request.LGBaseModel;
......@@ -19,6 +21,7 @@ import org.ta.pddserver.utils.PddSignTool;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
@Slf4j
public class GDTest3 {
......@@ -32,6 +35,7 @@ public class GDTest3 {
request.setClient_id(CLIENT_ID);
long end = new Date().getTime() / 1000;
end = 1762244459;
request.setEnd_updated_at(end);
request.setStart_updated_at(end - 1800);
request.setPage(1);
......@@ -42,11 +46,19 @@ public class GDTest3 {
request.setSign(PddSignTool.generateSign(request, CLIENT_SECRET));
String resp = PddHttpTool.sendJsonPostGD(request);
log.info("resp = {}", resp);
JSONObject jsonObject = JSON.parseObject(resp);
List<GDTicketRepsonse> list = jsonObject.getJSONArray("logistics_ticket_list").toJavaList(GDTicketRepsonse.class);
if (list != null && list.size() > 0) {
for (GDTicketRepsonse gdTicketRepsonse : list) {
}
}
}
@Test
public void Test2(){
public void Test2() {
Long ticketId = 176224558951137L;
String waybill_no = "773230214487313";
......
......@@ -3,78 +3,36 @@
"logistics_ticket_list": [
{
"area_name": "韩国",
"created_at": 1762245589,
"created_at": 1761791335,
"create_type": 1,
"description": "仍未收到货,截止到2022年,我国儿童青少年总体近视率为51.9% ,高中生戴眼镜的尤其多,几乎每5个高中生就有4人受近视困扰。\n",
"pre_delivery_id": "0",
"source": 0,
"title": "物流时效问题;派送延迟;妈妈摇摇头说:“这可没法说。”没有得到想要的回答,我微微皱眉,妈妈接着说:“真正厉害的人,从来不会把自己的愿望当成给别人解答疑惑的答案。每个人都想要过上最好的生活,但这不意味着就要躲开生活的磨难。所以还是要去成为你自己,哪怕代价是多失败几次。”\n",
"title": "包裹丢失/破损;包裹错发/漏发;mock消费者首次投诉",
"cabinet_code": "",
"compensate_state": 2,
"compensate_state": 0,
"urgent_type": 0,
"updated_at": 1762245935,
"updated_at": 1761791335,
"receive_name": "김명상",
"sub_type_ids": [
1403
1303
],
"waybill_no": "773230214487313",
"compensate_amount": 100,
"receive_address": "서울특별시 강북구 강북구 护照1号",
"receive_contact": "1012345678",
"express_dealer": "处理人1",
"express_dealer_contact": "15067011004",
"express_attachment": [
{
"url": "https://img-test.pddpic.com/open-gw/20add7022e/e7247b32584d7ae52b7f621d22f3c70a.jpg"
}
],
"handle_result": "工单回复1",
"type_id": 750,
"ticket_id": 176224558951137,
"sign_state": 1,
"duty": 1,
"waybill_no": "773484253589148",
"compensate_amount": 0,
"receive_address": "제주특별자치도 제주시 추자면 韩国偏远地址",
"receive_contact": "01012345678",
"express_dealer": "",
"express_dealer_contact": "",
"handle_result": "",
"type_id": 747,
"ticket_id": 176179133571489,
"sign_state": 0,
"duty": 0,
"express_company_id": 567,
"retreat_count": 1,
"retreat_count": 0,
"status": 0
},
{
"area_name": "韩国",
"created_at": 1762244314,
"create_type": 1,
"description": "收到货损坏,妈妈摇摇头说:“这可没法说。”没有得到想要的回答,我微微皱眉,妈妈接着说:“真正厉害的人,从来不会把自己的愿望当成给别人解答疑惑的答案。每个人都想要过上最好的生活,但这不意味着就要躲开生活的磨难。所以还是要去成为你自己,哪怕代价是多失败几次。”\n\n",
"pre_delivery_id": "0",
"source": 0,
"title": "物流服务问题;集运费用不给开发票;每一个过来人都打着善意的旗号引导别人的生活,每次听到别人说“听我的可以让你少走弯路”或者“信我的一定没错,我是过来人”的时候,我都很想问问他们:“那如果我听了你们的,走了弯路、吃了亏、过得也不好,你们可以负责吗?”\n",
"cabinet_code": "",
"compensate_state": 2,
"urgent_type": 0,
"updated_at": 1762245098,
"receive_name": "김명상",
"sub_type_ids": [
1504
],
"waybill_no": "BK-251104137438953472375271",
"compensate_amount": 100,
"receive_address": "서울특별시 강북구 강북구 护照1号",
"receive_contact": "1012345678",
"express_dealer": "处理人2",
"express_dealer_contact": "15067011004",
"express_attachment": [
{
"url": "https://img-test.pddpic.com/open-gw/20add7022e/08e01dfeea24891a364f42546bf5f79f.jpg"
}
],
"handle_result": "工单回复2",
"type_id": 755,
"ticket_id": 176224431412481,
"sign_state": 1,
"duty": 1,
"express_company_id": 567,
"retreat_count": 1,
"status": 1
}
],
"total_count": 2,
"request_id": "17622460316480450"
"total_count": 1,
"request_id": "17617914287422136"
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment