fix(order): 处理不支持的骏卡订单

- 修改 submit_url 为新的 API 地址
- 更新 merchants 配置,添加多个商户信息
-增加 logging 配置,确保日志输出正常
- 优化 order_service 中的订单处理逻辑- 引入 pkg/errors 包,用于错误处理
This commit is contained in:
danial
2025-07-06 23:37:45 +08:00
parent b3720cf462
commit 64b7868257
5 changed files with 46 additions and 12 deletions

View File

@@ -5,14 +5,29 @@ database:
password: Woaizixkie!123
dbname: kami
submit_url: "https://gateway.kkknametrans.buzz"
submit_url: "http://175.27.239.142:12309/gateway/scan"
merchants:
- name: "测试商户"
app_key: "app_key"
app_secret: "app_secret"
product_code: ""
card_type: ""
- name: "元亨卡"
pay_key: "kkkkc9kit6bimggos5kk0c90"
pay_secret: "ssssc9kit6bimggos5kk0c9g"
product_code: "5006"
card_type: "414 骏卡-元亨卡"
- name: "信汇卡"
pay_key: "kkkkc9kit6bimggos5kk0c90"
pay_secret: "ssssc9kit6bimggos5kk0c9g"
product_code: "3006"
card_type: "342 骏卡-信汇卡"
- name: "汇顺卡"
pay_key: "kkkkc9kit6bimggos5kk0c90"
pay_secret: "ssssc9kit6bimggos5kk0c9g"
product_code: "2014"
card_type: "367 骏卡-汇顺卡"
- name: "汇顺卡"
pay_key: "kkkkc9kit6bimggos5kk0c90"
pay_secret: "ssssc9kit6bimggos5kk0c9g"
product_code: "4006"
card_type: "428 骏卡-金润通卡"
logging:
level: "info"

View File

@@ -5,6 +5,7 @@ go 1.24
require (
github.com/beego/beego/v2 v2.3.8
github.com/duke-git/lancet/v2 v2.3.6
github.com/pkg/errors v0.9.1
github.com/spf13/viper v1.20.1
go.uber.org/zap v1.27.0
gorm.io/driver/mysql v1.6.0

View File

@@ -46,6 +46,8 @@ github.com/microsoft/go-mssqldb v1.7.2 h1:CHkFJiObW7ItKTJfHo1QX7QBBD1iV+mn1eOyRP
github.com/microsoft/go-mssqldb v1.7.2/go.mod h1:kOvZKUdrhhFQmxLZqbwUV0rHkNkZpthMITIb2Ko1IoA=
github.com/pelletier/go-toml/v2 v2.2.4 h1:mye9XuhQ6gvn5h28+VilKrrPoQVanw5PMw/TB0t5Ec4=
github.com/pelletier/go-toml/v2 v2.2.4/go.mod h1:2gIqNv+qfxSVS7cM2xJQKtLSTLUE9V8t9Stt+h56mCY=
github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
github.com/rogpeppe/go-internal v1.9.0 h1:73kH8U+JUqXU8lRuOHeVHaa/SZPifC7BkcraZVejAe8=

View File

@@ -2,10 +2,12 @@ package services
import (
"context"
"database/sql"
"encoding/csv"
"encoding/json"
"fmt"
"github.com/duke-git/lancet/v2/convertor"
"github.com/pkg/errors"
"order/internal/client"
"os"
"strings"
@@ -57,11 +59,16 @@ func (s *OrderServiceImpl) ProcessOrders(ctx context.Context) error {
_ = csvFile.Close()
}(csvFile)
orders, err := s.repo.FindOrdersByReason(ctx, "timeout", time.Now(), time.Now())
if err != nil || len(orders) == 0 {
s.logger.Error("获取订单失败", "error", err)
orders, err := s.repo.FindOrdersByReason(ctx, "不支持的骏卡", time.Now().Add(-time.Minute), time.Now())
if err != nil {
if errors.Is(err, sql.ErrNoRows) {
s.logger.Error("获取订单失败", "error", err)
}
return err
}
if len(orders) == 0 {
return nil
}
csvReader := csv.NewReader(csvFile)
// 读取所有数据
@@ -71,8 +78,13 @@ func (s *OrderServiceImpl) ProcessOrders(ctx context.Context) error {
}
// 筛选符合条件的数据
existBankOrders := slice.Map(records, func(index int, record []string) string {
return record[0]
existBankOrders := slice.Filter(slice.Map(records, func(index int, record []string) string {
if len(record) > 1 {
return record[0]
}
return ""
}), func(index int, record string) bool {
return record != ""
})
for _, order := range orders {
if slice.Contain(existBankOrders, order.BankOrderID) {

View File

@@ -2,6 +2,7 @@ package utils
import (
"order/internal/config"
"os"
"go.uber.org/zap"
"go.uber.org/zap/zapcore"
@@ -16,7 +17,10 @@ func NewLogger(cfg *config.Config) (*zap.Logger, error) {
"stdout", // 输出到控制台
cfg.Logging.Filename, // 输出到文件
}
//判断这个文件有没有,如果没有,就创建一个
if _, err := os.Stat(cfg.Logging.Filename); os.IsNotExist(err) {
_, _ = os.Create(cfg.Logging.Filename)
}
// 配置日志格式
config.EncoderConfig.TimeKey = "timestamp"
config.EncoderConfig.EncodeTime = zapcore.ISO8601TimeEncoder