后台,更新请求日志和回调日志data

This commit is contained in:
wolter 2024-08-05 15:42:20 +08:00
parent 5326e9c8d9
commit 65621d439b
10 changed files with 148 additions and 112 deletions

View File

@ -4,8 +4,8 @@ import (
"PaymentCenter/app/constants/common" "PaymentCenter/app/constants/common"
"PaymentCenter/app/data" "PaymentCenter/app/data"
"PaymentCenter/app/http/entities" "PaymentCenter/app/http/entities"
"PaymentCenter/app/models/orderlogmodel"
"PaymentCenter/app/models/ordersmodel" "PaymentCenter/app/models/ordersmodel"
"PaymentCenter/app/models/orderthirdpaylogmodel"
"PaymentCenter/app/third/paymentService" "PaymentCenter/app/third/paymentService"
"PaymentCenter/app/third/paymentService/payCommon" "PaymentCenter/app/third/paymentService/payCommon"
"PaymentCenter/app/utils" "PaymentCenter/app/utils"
@ -140,7 +140,7 @@ func queryOrder() {
err = session.Commit() err = session.Commit()
} }
}() }()
orderLogRepo := data.NewOrderLogRepo(session) orderLogRepo := data.NewOrderThirdPayLogRepo(session)
orderRepo := data.NewOrderRepo(session) orderRepo := data.NewOrderRepo(session)
conn := builder.NewCond() conn := builder.NewCond()
@ -151,15 +151,15 @@ func queryOrder() {
return return
} }
// 写入支付日志 // 写入日志
log := orderlogmodel.OrderLog{ log := orderthirdpaylogmodel.OrderThirdPayLog{
OrderId: orderInfo.Id, OrderId: orderInfo.Id,
PayCallback: "", PayCallback: "",
Status: 0, Status: 0,
MerchantParam: "", MerchantParam: "",
MerchantCallback: "", MerchantCallback: "",
} }
_, err = orderLogRepo.OrderLogInsertOne(&log) _, err = orderLogRepo.OrderThirdPayLogInsertOne(&log)
if err != nil { if err != nil {
utils.Log(nil, "主动查询订单支付状态,写入支付日志失败", err) utils.Log(nil, "主动查询订单支付状态,写入支付日志失败", err)
} }

View File

@ -1,39 +0,0 @@
package data
import (
"PaymentCenter/app/http/entities"
"PaymentCenter/app/models/orderlogmodel"
"xorm.io/builder"
"xorm.io/xorm"
)
type OrderLogRepo struct {
repo xorm.Interface
}
func NewOrderLogRepo(repo xorm.Interface) *OrderLogRepo {
return &OrderLogRepo{
repo: repo,
}
}
func (m *OrderLogRepo) OrderLogList(conn builder.Cond, pageFilter entities.PageRequest, orderLogList *[]orderlogmodel.OrderLog) (int64, error) {
repo := m.repo.Where(conn)
if pageFilter.Page > 0 {
repo = repo.Limit(pageFilter.PageSize, pageFilter.PageSize*(pageFilter.Page-1))
}
return repo.Desc("create_time").FindAndCount(orderLogList)
}
func (m *OrderLogRepo) OrderLogInsertOne(orderLog *orderlogmodel.OrderLog) (int64, error) {
return m.repo.InsertOne(orderLog)
}
func (m *OrderLogRepo) OrderLogDelete(orderLog *orderlogmodel.OrderLog, conn builder.Cond) (int64, error) {
return m.repo.Where(conn).Delete(orderLog)
}
// columns 参数为要更新的字段
func (m *OrderLogRepo) OrderLogUpdate(orderLog *orderlogmodel.OrderLog, conn builder.Cond, columns ...string) (int64, error) {
return m.repo.Where(conn).MustCols(columns...).Update(orderLog)
}

View File

@ -0,0 +1,39 @@
package data
import (
"PaymentCenter/app/http/entities"
"PaymentCenter/app/models/orderrequestlogmodel"
"xorm.io/builder"
"xorm.io/xorm"
)
type OrderRequestLogRepo struct {
repo xorm.Interface
}
func NewOrderRequestLogRepo(repo xorm.Interface) *OrderRequestLogRepo {
return &OrderRequestLogRepo{
repo: repo,
}
}
func (m *OrderRequestLogRepo) OrderRequestLogList(conn builder.Cond, pageFilter entities.PageRequest, orderLogList *[]orderrequestlogmodel.OrderRequestLog) (int64, error) {
repo := m.repo.Where(conn)
if pageFilter.Page > 0 {
repo = repo.Limit(pageFilter.PageSize, pageFilter.PageSize*(pageFilter.Page-1))
}
return repo.Desc("create_time").FindAndCount(orderLogList)
}
func (m *OrderRequestLogRepo) OrderRequestLogInsertOne(orderLog *orderrequestlogmodel.OrderRequestLog) (int64, error) {
return m.repo.InsertOne(orderLog)
}
func (m *OrderRequestLogRepo) OrderRequestLogDelete(orderLog *orderrequestlogmodel.OrderRequestLog, conn builder.Cond) (int64, error) {
return m.repo.Where(conn).Delete(orderLog)
}
// columns 参数为要更新的字段
func (m *OrderRequestLogRepo) OrderRequestLogUpdate(orderLog *orderrequestlogmodel.OrderRequestLog, conn builder.Cond, columns ...string) (int64, error) {
return m.repo.Where(conn).MustCols(columns...).Update(orderLog)
}

View File

@ -0,0 +1,39 @@
package data
import (
"PaymentCenter/app/http/entities"
"PaymentCenter/app/models/orderthirdpaylogmodel"
"xorm.io/builder"
"xorm.io/xorm"
)
type OrderThirdPayLogRepo struct {
repo xorm.Interface
}
func NewOrderThirdPayLogRepo(repo xorm.Interface) *OrderThirdPayLogRepo {
return &OrderThirdPayLogRepo{
repo: repo,
}
}
func (m *OrderThirdPayLogRepo) OrderThirdPayLogList(conn builder.Cond, pageFilter entities.PageRequest, orderLogList *[]orderthirdpaylogmodel.OrderThirdPayLog) (int64, error) {
repo := m.repo.Where(conn)
if pageFilter.Page > 0 {
repo = repo.Limit(pageFilter.PageSize, pageFilter.PageSize*(pageFilter.Page-1))
}
return repo.Desc("create_time").FindAndCount(orderLogList)
}
func (m *OrderThirdPayLogRepo) OrderThirdPayLogInsertOne(orderLog *orderthirdpaylogmodel.OrderThirdPayLog) (int64, error) {
return m.repo.InsertOne(orderLog)
}
func (m *OrderThirdPayLogRepo) OrderThirdPayLogDelete(orderLog *orderthirdpaylogmodel.OrderThirdPayLog, conn builder.Cond) (int64, error) {
return m.repo.Where(conn).Delete(orderLog)
}
// columns 参数为要更新的字段
func (m *OrderThirdPayLogRepo) OrderThirdPayLogUpdate(orderLog *orderthirdpaylogmodel.OrderThirdPayLog, conn builder.Cond, columns ...string) (int64, error) {
return m.repo.Where(conn).MustCols(columns...).Update(orderLog)
}

View File

@ -5,8 +5,9 @@ import (
"PaymentCenter/app/http/controllers" "PaymentCenter/app/http/controllers"
"PaymentCenter/app/http/entities" "PaymentCenter/app/http/entities"
"PaymentCenter/app/http/entities/backend" "PaymentCenter/app/http/entities/backend"
"PaymentCenter/app/models/orderlogmodel" "PaymentCenter/app/models/orderrequestlogmodel"
"PaymentCenter/app/models/ordersmodel" "PaymentCenter/app/models/ordersmodel"
"PaymentCenter/app/models/orderthirdpaylogmodel"
"PaymentCenter/app/services" "PaymentCenter/app/services"
"github.com/ahmetb/go-linq/v3" "github.com/ahmetb/go-linq/v3"
"github.com/gin-gonic/gin" "github.com/gin-gonic/gin"
@ -36,16 +37,22 @@ func OrderList(c *gin.Context) {
func OrderLogsList(c *gin.Context) { func OrderLogsList(c *gin.Context) {
req, _ := controllers.GetRequest(c).(*backend.OrderLogsListRequest) req, _ := controllers.GetRequest(c).(*backend.OrderLogsListRequest)
req.SetDefault() req.SetDefault()
orderLogList, total, code := services.OrderLogsList(*req) requestLog, thirdLog, code := services.OrderLogsList(*req)
result := make([]backend.OrderLogResponse, 0, len(orderLogList)) requestLogList := make([]backend.OrderRequestLogResponse, 0, len(requestLog))
linq.From(orderLogList).SelectT(func(in orderlogmodel.OrderLog) (out backend.OrderLogResponse) { linq.From(requestLog).SelectT(func(in orderrequestlogmodel.OrderRequestLog) (out backend.OrderRequestLogResponse) {
out.ResponseFromDb(in) out.ResponseFromDb(in)
return return
}).ToSlice(&result) }).ToSlice(&requestLogList)
data := entities.PageRsp{
Total: total, thirdLogList := make([]backend.OrderThirdLogResponse, 0, len(thirdLog))
Data: result, linq.From(thirdLog).SelectT(func(in orderthirdpaylogmodel.OrderThirdPayLog) (out backend.OrderThirdLogResponse) {
} out.ResponseFromDb(in)
controllers.HandCodeRes(c, data, code) return
}).ToSlice(&thirdLogList)
controllers.HandCodeRes(c, gin.H{
"request_log_list": requestLogList,
"third_log_list": thirdLogList,
}, code)
} }

View File

@ -2,8 +2,9 @@ package backend
import ( import (
"PaymentCenter/app/http/entities" "PaymentCenter/app/http/entities"
"PaymentCenter/app/models/orderlogmodel" "PaymentCenter/app/models/orderrequestlogmodel"
"PaymentCenter/app/models/ordersmodel" "PaymentCenter/app/models/ordersmodel"
"PaymentCenter/app/models/orderthirdpaylogmodel"
"PaymentCenter/app/utils" "PaymentCenter/app/utils"
"github.com/pkg/errors" "github.com/pkg/errors"
@ -106,17 +107,37 @@ type OrderLogsListRequest struct {
entities.PageRequest entities.PageRequest
} }
type OrderLogResponse struct { type OrderRequestLogResponse struct {
Id int64 `json:"id"`
IpAddress string `json:"ip_address"`
OrderId int64 `json:"order_id"`
MerchantRequest string `json:"merchant_request"`
MerchantResponse string `json:"merchant_response"`
CreateTime string `json:"create_time"`
Status int `json:"status"`
}
func (o *OrderRequestLogResponse) ResponseFromDb(db orderrequestlogmodel.OrderRequestLog) {
o.Id = db.Id
o.OrderId = db.OrderId
o.IpAddress = db.IpAddress
o.Status = db.Status
o.MerchantRequest = db.MerchantRequest
o.MerchantResponse = db.MerchantResponse
o.CreateTime = db.CreateTime.Format("2006-01-02 15:04:05")
}
type OrderThirdLogResponse struct {
Id int64 `json:"id"` Id int64 `json:"id"`
OrderId int64 `json:"order_id"` OrderId int64 `json:"order_id"`
CreateTime string `json:"create_time"`
PayCallback string `json:"pay_callback"` PayCallback string `json:"pay_callback"`
Status int `json:"status"` Status int `json:"status"`
MerchantParam string `json:"merchant_param"` MerchantParam string `json:"merchant_param"`
MerchantCallback string `json:"merchant_callback"` MerchantCallback string `json:"merchant_callback"`
CreateTime string `json:"create_time"`
} }
func (o *OrderLogResponse) ResponseFromDb(db orderlogmodel.OrderLog) { func (o *OrderThirdLogResponse) ResponseFromDb(db orderthirdpaylogmodel.OrderThirdPayLog) {
o.Id = db.Id o.Id = db.Id
o.OrderId = db.OrderId o.OrderId = db.OrderId
o.PayCallback = db.PayCallback o.PayCallback = db.PayCallback

View File

@ -1,42 +0,0 @@
package orderlogmodel
import (
"github.com/qit-team/snow-core/db"
"sync"
"time"
)
var (
once sync.Once
m *OrderLogModel
)
// 实体
type OrderLog struct {
Id int64
OrderId int64 `xorm:"'order_id' bigint(20)"`
PayCallback string `xorm:"'pay_callback' varchar(255)"`
Status int `xorm:"'status' int(11)"`
MerchantParam string `xorm:"'merchant_param' varchar(255)"`
MerchantCallback string `xorm:"'merchant_callback' varchar(255)"`
CreateTime time.Time `xorm:"'create_time' datetime created"`
}
// 表名
func (m *OrderLog) TableName() string {
return "order_log"
}
// 私有化防止被外部new
type OrderLogModel struct {
db.Model //组合基础Model集成基础Model的属性和方法
}
// 单例模式
func GetInstance() *OrderLogModel {
once.Do(func() {
m = new(OrderLogModel)
//m.DiName = "" //设置数据库实例连接默认db.SingletonMain
})
return m
}

View File

@ -13,12 +13,13 @@ var (
// 实体 // 实体
type OrderRequestLog struct { type OrderRequestLog struct {
Id int64 `xorm:"'id' bigint(20) pk autoincr"` Id int64
IpAddress string `xorm:"'ip_address' varchar(16)"` IpAddress string `xorm:"'ip_address' varchar(16)"`
OrderId int64 `xorm:"'order_id' bigint(20)"`
MerchantRequest string `xorm:"'merchant_request' JSON"` MerchantRequest string `xorm:"'merchant_request' JSON"`
MerchantResponse string `xorm:"'merchant_response' JSON"` MerchantResponse string `xorm:"'merchant_response' JSON"`
CreateTime time.Time `xorm:"'create_time' datetime"` CreateTime time.Time `xorm:"'create_time' datetime created"`
UpdateTime time.Time `xorm:"'update_time' timestamp"` UpdateTime time.Time `xorm:"'update_time' timestamp updated"`
Status int `xorm:"'status' TINYINT"` Status int `xorm:"'status' TINYINT"`
} }

View File

@ -13,13 +13,13 @@ var (
// 实体 // 实体
type OrderThirdPayLog struct { type OrderThirdPayLog struct {
Id int64 `xorm:"'id' bigint(20) pk autoincr"` Id int64
OrderId int64 `xorm:"'order_id' bigint(20)"` OrderId int64 `xorm:"'order_id' bigint(20)"`
PayCallback string `xorm:"'pay_callback' varchar(255)"` PayCallback string `xorm:"'pay_callback' varchar(255)"`
Status int `xorm:"'status' TINYINT"` Status int `xorm:"'status' TINYINT"`
MerchantParam string `xorm:"'merchant_param' varchar(255)"` MerchantParam string `xorm:"'merchant_param' varchar(255)"`
MerchantCallback string `xorm:"'merchant_callback' varchar(255)"` MerchantCallback string `xorm:"'merchant_callback' varchar(255)"`
CreateTime time.Time `xorm:"'create_time' datetime"` CreateTime time.Time `xorm:"'create_time' datetime created"`
} }
// 表名 // 表名

View File

@ -3,8 +3,9 @@ package services
import ( import (
"PaymentCenter/app/data" "PaymentCenter/app/data"
"PaymentCenter/app/http/entities/backend" "PaymentCenter/app/http/entities/backend"
"PaymentCenter/app/models/orderlogmodel" "PaymentCenter/app/models/orderrequestlogmodel"
"PaymentCenter/app/models/ordersmodel" "PaymentCenter/app/models/ordersmodel"
"PaymentCenter/app/models/orderthirdpaylogmodel"
"PaymentCenter/app/models/paychannelmodel" "PaymentCenter/app/models/paychannelmodel"
"xorm.io/builder" "xorm.io/builder"
) )
@ -49,16 +50,25 @@ func OrderList(req backend.OrderList) (result []ordersmodel.OrdersBackendList, t
return orderList, count, code return orderList, count, code
} }
func OrderLogsList(req backend.OrderLogsListRequest) (result []orderlogmodel.OrderLog, total int64, code int) { func OrderLogsList(req backend.OrderLogsListRequest) (requestLog []orderrequestlogmodel.OrderRequestLog, thirdLod []orderthirdpaylogmodel.OrderThirdPayLog, code int) {
repo := data.NewOrderLogRepo(paychannelmodel.GetInstance().GetDb()) requestRepo := data.NewOrderRequestLogRepo(paychannelmodel.GetInstance().GetDb())
thirdRepo := data.NewOrderThirdPayLogRepo(paychannelmodel.GetInstance().GetDb())
conn := builder.NewCond() conn := builder.NewCond()
if req.OrderId > 0 { if req.OrderId > 0 {
conn = conn.And(builder.Eq{"order_id": req.OrderId}) conn = conn.And(builder.Eq{"order_id": req.OrderId})
} }
// 调用repo // 请求日志
orderLogList := make([]orderlogmodel.OrderLog, 0) orderLogList := make([]orderrequestlogmodel.OrderRequestLog, 0)
count, err := repo.OrderLogList(conn, req.PageRequest, &orderLogList) _, err := requestRepo.OrderRequestLogList(conn, req.PageRequest, &orderLogList)
if err != nil {
code = handErr(err)
return
}
// 三方日志
thirdLogList := make([]orderthirdpaylogmodel.OrderThirdPayLog, 0)
_, err = thirdRepo.OrderThirdPayLogList(conn, req.PageRequest, &thirdLogList)
code = handErr(err) code = handErr(err)
return orderLogList, count, code return orderLogList, thirdLogList, code
} }