diff --git a/app/console/command.go b/app/console/command.go index 676015d..fb8e8de 100644 --- a/app/console/command.go +++ b/app/console/command.go @@ -4,8 +4,8 @@ import ( "PaymentCenter/app/constants/common" "PaymentCenter/app/data" "PaymentCenter/app/http/entities" - "PaymentCenter/app/models/orderlogmodel" "PaymentCenter/app/models/ordersmodel" + "PaymentCenter/app/models/orderthirdpaylogmodel" "PaymentCenter/app/third/paymentService" "PaymentCenter/app/third/paymentService/payCommon" "PaymentCenter/app/utils" @@ -140,7 +140,7 @@ func queryOrder() { err = session.Commit() } }() - orderLogRepo := data.NewOrderLogRepo(session) + orderLogRepo := data.NewOrderThirdPayLogRepo(session) orderRepo := data.NewOrderRepo(session) conn := builder.NewCond() @@ -151,15 +151,15 @@ func queryOrder() { return } - // 写入支付日志 - log := orderlogmodel.OrderLog{ + // 写入日志 + log := orderthirdpaylogmodel.OrderThirdPayLog{ OrderId: orderInfo.Id, PayCallback: "", Status: 0, MerchantParam: "", MerchantCallback: "", } - _, err = orderLogRepo.OrderLogInsertOne(&log) + _, err = orderLogRepo.OrderThirdPayLogInsertOne(&log) if err != nil { utils.Log(nil, "主动查询订单支付状态,写入支付日志失败", err) } diff --git a/app/data/order_log.go b/app/data/order_log.go deleted file mode 100644 index 36db815..0000000 --- a/app/data/order_log.go +++ /dev/null @@ -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) -} diff --git a/app/data/order_request_log.go b/app/data/order_request_log.go new file mode 100644 index 0000000..c0c0568 --- /dev/null +++ b/app/data/order_request_log.go @@ -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) +} diff --git a/app/data/order_third_pay_log.go b/app/data/order_third_pay_log.go new file mode 100644 index 0000000..bbce93e --- /dev/null +++ b/app/data/order_third_pay_log.go @@ -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) +} diff --git a/app/http/controllers/backend/order.go b/app/http/controllers/backend/order.go index 5c577a9..15d82f0 100644 --- a/app/http/controllers/backend/order.go +++ b/app/http/controllers/backend/order.go @@ -5,8 +5,9 @@ import ( "PaymentCenter/app/http/controllers" "PaymentCenter/app/http/entities" "PaymentCenter/app/http/entities/backend" - "PaymentCenter/app/models/orderlogmodel" + "PaymentCenter/app/models/orderrequestlogmodel" "PaymentCenter/app/models/ordersmodel" + "PaymentCenter/app/models/orderthirdpaylogmodel" "PaymentCenter/app/services" "github.com/ahmetb/go-linq/v3" "github.com/gin-gonic/gin" @@ -36,16 +37,22 @@ func OrderList(c *gin.Context) { func OrderLogsList(c *gin.Context) { req, _ := controllers.GetRequest(c).(*backend.OrderLogsListRequest) req.SetDefault() - orderLogList, total, code := services.OrderLogsList(*req) + requestLog, thirdLog, code := services.OrderLogsList(*req) - result := make([]backend.OrderLogResponse, 0, len(orderLogList)) - linq.From(orderLogList).SelectT(func(in orderlogmodel.OrderLog) (out backend.OrderLogResponse) { + requestLogList := make([]backend.OrderRequestLogResponse, 0, len(requestLog)) + linq.From(requestLog).SelectT(func(in orderrequestlogmodel.OrderRequestLog) (out backend.OrderRequestLogResponse) { out.ResponseFromDb(in) return - }).ToSlice(&result) - data := entities.PageRsp{ - Total: total, - Data: result, - } - controllers.HandCodeRes(c, data, code) + }).ToSlice(&requestLogList) + + thirdLogList := make([]backend.OrderThirdLogResponse, 0, len(thirdLog)) + linq.From(thirdLog).SelectT(func(in orderthirdpaylogmodel.OrderThirdPayLog) (out backend.OrderThirdLogResponse) { + out.ResponseFromDb(in) + return + }).ToSlice(&thirdLogList) + + controllers.HandCodeRes(c, gin.H{ + "request_log_list": requestLogList, + "third_log_list": thirdLogList, + }, code) } diff --git a/app/http/entities/backend/order.go b/app/http/entities/backend/order.go index 5c81ad8..8ff87bd 100644 --- a/app/http/entities/backend/order.go +++ b/app/http/entities/backend/order.go @@ -2,8 +2,9 @@ package backend import ( "PaymentCenter/app/http/entities" - "PaymentCenter/app/models/orderlogmodel" + "PaymentCenter/app/models/orderrequestlogmodel" "PaymentCenter/app/models/ordersmodel" + "PaymentCenter/app/models/orderthirdpaylogmodel" "PaymentCenter/app/utils" "github.com/pkg/errors" @@ -106,17 +107,37 @@ type OrderLogsListRequest struct { 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"` OrderId int64 `json:"order_id"` + CreateTime string `json:"create_time"` PayCallback string `json:"pay_callback"` Status int `json:"status"` MerchantParam string `json:"merchant_param"` 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.OrderId = db.OrderId o.PayCallback = db.PayCallback diff --git a/app/models/orderlogmodel/order_log.go b/app/models/orderlogmodel/order_log.go deleted file mode 100644 index 1a370b8..0000000 --- a/app/models/orderlogmodel/order_log.go +++ /dev/null @@ -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 -} diff --git a/app/models/orderrequestlogmodel/order_request_log.go b/app/models/orderrequestlogmodel/order_request_log.go index 1a3555c..961b6e6 100644 --- a/app/models/orderrequestlogmodel/order_request_log.go +++ b/app/models/orderrequestlogmodel/order_request_log.go @@ -13,12 +13,13 @@ var ( // 实体 type OrderRequestLog struct { - Id int64 `xorm:"'id' bigint(20) pk autoincr"` + Id int64 IpAddress string `xorm:"'ip_address' varchar(16)"` + OrderId int64 `xorm:"'order_id' bigint(20)"` MerchantRequest string `xorm:"'merchant_request' JSON"` MerchantResponse string `xorm:"'merchant_response' JSON"` - CreateTime time.Time `xorm:"'create_time' datetime"` - UpdateTime time.Time `xorm:"'update_time' timestamp"` + CreateTime time.Time `xorm:"'create_time' datetime created"` + UpdateTime time.Time `xorm:"'update_time' timestamp updated"` Status int `xorm:"'status' TINYINT"` } diff --git a/app/models/orderthirdpaylogmodel/order_third_pay_log.go b/app/models/orderthirdpaylogmodel/order_third_pay_log.go index f434d04..4ef23b6 100644 --- a/app/models/orderthirdpaylogmodel/order_third_pay_log.go +++ b/app/models/orderthirdpaylogmodel/order_third_pay_log.go @@ -13,13 +13,13 @@ var ( // 实体 type OrderThirdPayLog struct { - Id int64 `xorm:"'id' bigint(20) pk autoincr"` + Id int64 OrderId int64 `xorm:"'order_id' bigint(20)"` PayCallback string `xorm:"'pay_callback' varchar(255)"` Status int `xorm:"'status' TINYINT"` MerchantParam string `xorm:"'merchant_param' varchar(255)"` MerchantCallback string `xorm:"'merchant_callback' varchar(255)"` - CreateTime time.Time `xorm:"'create_time' datetime"` + CreateTime time.Time `xorm:"'create_time' datetime created"` } // 表名 diff --git a/app/services/order.go b/app/services/order.go index bfc6d8a..c653105 100644 --- a/app/services/order.go +++ b/app/services/order.go @@ -3,8 +3,9 @@ package services import ( "PaymentCenter/app/data" "PaymentCenter/app/http/entities/backend" - "PaymentCenter/app/models/orderlogmodel" + "PaymentCenter/app/models/orderrequestlogmodel" "PaymentCenter/app/models/ordersmodel" + "PaymentCenter/app/models/orderthirdpaylogmodel" "PaymentCenter/app/models/paychannelmodel" "xorm.io/builder" ) @@ -49,16 +50,25 @@ func OrderList(req backend.OrderList) (result []ordersmodel.OrdersBackendList, t return orderList, count, code } -func OrderLogsList(req backend.OrderLogsListRequest) (result []orderlogmodel.OrderLog, total int64, code int) { - repo := data.NewOrderLogRepo(paychannelmodel.GetInstance().GetDb()) +func OrderLogsList(req backend.OrderLogsListRequest) (requestLog []orderrequestlogmodel.OrderRequestLog, thirdLod []orderthirdpaylogmodel.OrderThirdPayLog, code int) { + requestRepo := data.NewOrderRequestLogRepo(paychannelmodel.GetInstance().GetDb()) + thirdRepo := data.NewOrderThirdPayLogRepo(paychannelmodel.GetInstance().GetDb()) + conn := builder.NewCond() if req.OrderId > 0 { conn = conn.And(builder.Eq{"order_id": req.OrderId}) } - // 调用repo - orderLogList := make([]orderlogmodel.OrderLog, 0) - count, err := repo.OrderLogList(conn, req.PageRequest, &orderLogList) + // 请求日志 + orderLogList := make([]orderrequestlogmodel.OrderRequestLog, 0) + _, 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) - return orderLogList, count, code + return orderLogList, thirdLogList, code }