订单下载。jd下单。。
CI / changes (push) Successful in 37s
CI / ad (push) Successful in 29s
CI / admin (push) Successful in 17s
CI / bff (push) Successful in 13s
CI / chore (push) Successful in 15s
CI / equipment (push) Successful in 14s
CI / express (push) Successful in 14s
CI / product (push) Successful in 13s
CI / record (push) Successful in 13s
CI / sale (push) Successful in 13s
CI / task (push) Successful in 13s
CI / user (push) Successful in 14s
CI / wecom (push) Successful in 13s

This commit is contained in:
2026-09-09 17:52:07 +08:00
parent bcb8743eca
commit 38e040af07
51 changed files with 2572 additions and 350 deletions
@@ -79,10 +79,13 @@ func (l *ExpressAdminQueryLogic) ExpressAdminQuery(in *express.IdRequest) (*expr
return l.fail(utils.SetError(utils.ErrorNotFund, "获取快递错误"))
}
//TODO JD
//if transitInfo.TransitId == dao.ExpressCompanyJd {
// return // s.queryJdEdit(res.RequestQuery, &upData)
//}
if transitInfo.TransitId == dao.ExpressCompanyJd {
items, s := svc.QueryJdEdit(res.RequestQuery, &upData, l.svcCtx.OrderSvcName)
if s != utils.Ok {
return l.fail(s)
}
return l.ok(items)
}
items, s := svc.QueryEdit(res.RequestQuery, &upData, l.svcCtx.OrderSvcName)
if s != utils.Ok {
@@ -58,7 +58,7 @@ func (l *ExpressApiQueryLogic) ExpressApiQuery(in *express.IdApiRequest) (*expre
if orderInfo.Id < utils.NumberOne {
return l.fail(utils.SetError(utils.ErrorNotFund, "没有找到订单信息"))
}
tw := modelbase.Params{Eq: map[string]string{"id": strconv.Itoa(upData.TransitId)}}
var transitInfo dao.ExpressSend
err = model.ExpressModel{}.Init().GetOne(tw, &transitInfo)
@@ -84,10 +84,13 @@ func (l *ExpressApiQueryLogic) ExpressApiQuery(in *express.IdApiRequest) (*expre
return l.fail(utils.SetError(utils.ErrorNotFund, "获取快递错误"))
}
//TODO JD
//if transitInfo.TransitId == dao.ExpressCompanyJd {
// return // s.queryJdEdit(res.RequestQuery, &upData)
//}
if transitInfo.TransitId == dao.ExpressCompanyJd {
items, s := svc.QueryJdEdit(res.RequestQuery, &upData, l.svcCtx.OrderSvcName)
if s != utils.Ok {
return l.fail(s)
}
return l.ok(items)
}
items, s := svc.QueryEdit(res.RequestQuery, &upData, l.svcCtx.OrderSvcName)
if s != utils.Ok {
@@ -2,10 +2,16 @@ package logic
import (
"context"
"lone-services/pkg/modelbase"
"lone-services/pkg/utils"
"lone-services/rpc/express/pb"
"lone-services/services/express/internal/dao"
"lone-services/services/express/internal/model"
"lone-services/services/express/internal/svc"
"lone-services/services/express/internal/transit"
"strconv"
jsoniter "github.com/json-iterator/go"
"github.com/zeromicro/go-zero/core/logx"
)
@@ -24,8 +30,127 @@ func NewExpressJdBackLogic(ctx context.Context, svcCtx *svc.ServiceContext) *Exp
}
}
func (l *ExpressJdBackLogic) ExpressJdBack(in *express.EmtpyRequest) (*express.Response, error) {
// todo: add your logic here and delete this line
func (l *ExpressJdBackLogic) ExpressJdBack(in *express.JdRequest) (*express.SfResponse, error) {
//TODO 透传数据还是获取?
l.Logger.Error(in)
//routers.POST("/transit/jd", obj.JdBack)
//appKey := c.Query("app_key")
//timestamp := c.Query("timestamp")
//sign := c.Query("sign")
//path := c.Query("path")
//
//l.Logger.Info("JD back params : app_key=", appKey,
// " timestamp=", timestamp, " sign=", sign, " path=", path)
return &express.Response{}, nil
//JD back params : app_key=e99f6232b45c4c3e871780f5a9b1a555 timestamp=Tue, 26 May 2026 01:41:06 GMT sign=2640A486A4A529AAD722FED2E5C7E0BB path=
//JD back data:{"carrierId":2087,"customerOrderNo":"JD2026052609395822530404255","extend":{"curSiteName":"张家口涿鹿汽车点部项目小站","curSiteId":"1929145","siteTelephone":"15732381119","siteId":"4989","remark":"【实时调度-路区排班】揽收任务已分配给李晓龙,配送员电话13833376743","operatorPhone":"13833376743","curJDCode":"34512","requireTime":"2026-05-27 22:00:00"},"nextLocation":{},"operateLocation":{"lat":"40.459022","lon":"115.276425","routeAddress":" 河北省张家口市下花园区S342(张家口农商银行苏家坊信用社南)","routeCityName":"张家口市","routeDistrictName":"涿鹿县","routeProvinceName":"河北","routeStreetName":"涿鹿镇"},"operateSite":"张家口涿鹿汽车点部项目小站","operateSiteId":"1929145","operationCode":"200034","operationTime":"2026-05-26 09:40:11","operationType":"2013","operatorName":"李晓龙","orderNo":"JD2026052609395822530404255","remark":"您的快件将由快递员李晓龙上门取件,快递员电话:13833376743,营业部电话:15732381119","waybillNo":"JDVA44161571823"}
body := utils.GetBody(l.ctx)
ret := express.SfResponse{
ReturnCode: "1001",
ReturnMsg: "body获取失败",
}
if body == utils.StringEmpty {
return &ret, nil
}
l.Logger.Info("JD back data:", body)
ret.ReturnCode = "1002"
ret.ReturnMsg = "系统异常"
ok := l.JdBack(body)
if ok {
ret.ReturnCode = "000"
ret.ReturnMsg = "成功"
}
return &ret, nil
}
func (l *ExpressJdBackLogic) JdBack(body string) bool {
var bodyData map[string]interface{}
err := jsoniter.Unmarshal([]byte(body), &bodyData)
if err != nil {
l.Logger.Error("back body strInt error ", err)
return false
}
result, ok := bodyData["Body"].(map[string]interface{})
if !ok {
l.Logger.Error("back Body interface error ")
return false
}
l.Logger.Error("back body strInt result ", result)
waybillNo := utils.GetStringByMap(result, "waybillNo")
if waybillNo == utils.StringEmpty {
l.Logger.Error("back body no id error ")
return false
}
w := modelbase.Params{Eq: map[string]string{
"status": strconv.Itoa(dao.SendStatusOk),
"transit_type": strconv.Itoa(dao.ExpressCompanyJd),
"transit_sn": waybillNo}}
var info dao.DeliveryOrderUpTransit
modelObj := model.DeliveryOrderModel{}.Init()
err = modelObj.GetOne(w, &info)
if err != nil || info.Id < utils.NumberOne {
l.Logger.Error("没有找到快递数据", err)
return true
}
var items []dao.ExpressQueryItems
if len(info.TransitQuery) > utils.NumberTen {
ok := utils.JsonStringToStruct(info.TransitQuery, &items)
if ok != true {
l.Logger.Error("back json error ", err)
return false
}
}
tmp := dao.ExpressQueryItems{
Remark: result["remark"].(string),
AcceptTime: result["operationTime"].(string),
OperatorName: result["operatorName"].(string),
OpCode: result["operationCode"].(string),
AllInfo: body,
}
tmp.LastMd5 = utils.MD5Encrypt(tmp.Remark + tmp.AcceptTime +
tmp.OperatorName)
if len(items) > utils.NumberZero {
if items[len(items)-utils.NumberOne].LastMd5 == tmp.LastMd5 {
return true
}
}
items = append(items, tmp)
info.TransitQuery = utils.StructToJson(items)
modelObj.Begin()
if ok := transit.JdSingedCodeMap[tmp.OpCode]; ok {
w = modelbase.Params{Eq: map[string]string{"deliver_goods_id": strconv.Itoa(info.Id)}}
expEdit := dao.DeliveryExpStatus{
Status: utils.StatusOk,
}
_, err = model.DeliveryOrderExpModel{}.Init().Edit(w, &expEdit)
if err != nil {
l.Logger.Error("back set deliver exp error ", err)
modelObj.Rollback()
return false
}
info.Status = dao.SendStatusOver
info.ChangeEstimatedTime = utils.StatusFail
info.SignTime = utils.Now()
s := svc.UpOrderDeliverStatus(l.svcCtx.OrderSvcName, info.ObjId, int(info.Type), int32(info.Status))
if s != utils.Ok {
modelObj.Rollback()
return false
}
}
_, err = modelObj.Edit(w, &info)
if err != nil {
modelObj.Rollback()
l.Logger.Error("back edit error ", err)
return false
}
modelObj.Commit()
return true
}