This commit is contained in:
Mrx
2026-05-09 12:15:25 +08:00
parent 7aa4fb60f6
commit 93886e2e90
11 changed files with 413 additions and 40 deletions

View File

@@ -2,12 +2,16 @@ package admin_order
import (
"context"
"encoding/hex"
"strings"
"sync"
"ycc-server/app/main/api/internal/svc"
"ycc-server/app/main/api/internal/types"
"ycc-server/app/main/model"
"ycc-server/common/globalkey"
"ycc-server/common/xerr"
"ycc-server/pkg/lzkit/crypto"
"github.com/Masterminds/squirrel"
"github.com/pkg/errors"
@@ -72,6 +76,44 @@ func (l *AdminGetOrderListLogic) AdminGetOrderList(req *types.AdminGetOrderListR
if req.RefundTimeEnd != "" {
builder = builder.Where("refund_time <= ?", req.RefundTimeEnd)
}
if req.QuerySubjectName != "" || req.QuerySubjectMobile != "" || req.QuerySubjectIdCard != "" {
key, decodeErr := hex.DecodeString(l.svcCtx.Config.Encrypt.SecretKey)
if decodeErr != nil {
return nil, errors.Wrapf(xerr.NewErrCode(xerr.SERVER_COMMON_ERROR),
"AdminGetOrderList, AES密钥解析失败 err: %v", decodeErr)
}
conds := []string{"del_state = ?"}
args := []interface{}{globalkey.DelStateNo}
if req.QuerySubjectName != "" {
enc, _, encErr := crypto.EncryptDeterministicOptional(req.QuerySubjectName, key)
if encErr != nil {
return nil, errors.Wrapf(xerr.NewErrCode(xerr.SERVER_COMMON_ERROR),
"AdminGetOrderList, 加密筛选姓名失败 err: %v", encErr)
}
conds = append(conds, "enc_real_name = ?")
args = append(args, enc)
}
if req.QuerySubjectMobile != "" {
enc, encErr := crypto.EncryptMobile(req.QuerySubjectMobile, l.svcCtx.Config.Encrypt.SecretKey)
if encErr != nil {
return nil, errors.Wrapf(xerr.NewErrCode(xerr.SERVER_COMMON_ERROR),
"AdminGetOrderList, 加密筛选手机号失败 err: %v", encErr)
}
conds = append(conds, "enc_mobile = ?")
args = append(args, enc)
}
if req.QuerySubjectIdCard != "" {
enc, encErr := crypto.EncryptIDCard(req.QuerySubjectIdCard, key)
if encErr != nil {
return nil, errors.Wrapf(xerr.NewErrCode(xerr.SERVER_COMMON_ERROR),
"AdminGetOrderList, 加密筛选身份证失败 err: %v", encErr)
}
conds = append(conds, "enc_id_card = ?")
args = append(args, enc)
}
subSQL := "id IN (SELECT order_id FROM query_subject_index WHERE " + strings.Join(conds, " AND ") + ")"
builder = builder.Where(subSQL, args...)
}
// 并发获取总数和列表
var total int64