Files
platforms/backend/api/internal/logic/delivery/resource_search.go
2026-08-22 23:24:12 +08:00

63 lines
3.4 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
// Package delivery 定义配送点管理端公开的资源搜索契约。
// 版本v1.0.0
package delivery
import (
"git.apinb.com/heqiapp/platforms/backend/api/internal/logic/common"
"git.apinb.com/heqiapp/platforms/backend/api/internal/models"
)
// deliveryResourceSearchFields 只公开页面能够解释且服务端确实执行的搜索字段。
var deliveryResourceSearchFields = map[string][]common.KeywordSearchField{
"staff_account": {searchText("username")},
"staff_credential": {searchText("credential_type"), searchText("credential_no")},
"user_account": {searchText("username")},
"gasorder_contract": {searchText("contract_no"), searchText("title")},
"gasorder_contract_product": {searchText("product_code"), searchText("product_type_name")},
"gasorder_contract_revision": {searchEnum("action", searchOption("activate", "启用"), searchOption("renew", "续签"), searchOption("terminate", "终止"))},
"product_info": {searchText("code"), searchText("name")},
"gasorder_basic": {searchText("request_no"), searchEnum("creator_type",
searchOption("user", "用户"), searchOption("staff", "工作人员"),
searchOption("delivery", "配送点"), searchOption("gas", "气站"))},
"payment_order": {searchText("payment_no"), searchText("request_no"), searchEnum("channel",
searchOption("wechat", "微信"), searchOption("alipay", "支付宝"), searchOption("mock", "模拟支付"))},
"wallet_record": {searchText("record_no"), searchText("request_no")},
"payment_refund": {searchText("refund_no"), searchText("request_no")},
"wallet_recharge": {searchText("record_no"), searchText("request_no")},
"wallet_apply_cash": {searchText("cash_no"), searchText("request_no"), searchEnum("channel",
searchOption("bank", "银行卡"), searchOption("alipay", "支付宝"), searchOption("wechat", "微信"))},
"fin_settlement": {searchText("settlement_no")},
}
// init 只注册平台总后台尚未注册的模型;共享模型继续复用全局策略。
func init() {
common.RegisterKeywordSearchPolicy(&models.GasorderContractProduct{}, deliveryResourceSearchFields["gasorder_contract_product"])
common.RegisterKeywordSearchPolicy(&models.GasorderContractRevision{}, deliveryResourceSearchFields["gasorder_contract_revision"])
common.RegisterKeywordSearchPolicy(&models.PaymentOrder{}, deliveryResourceSearchFields["payment_order"])
common.RegisterKeywordSearchPolicy(&models.WalletRecord{}, deliveryResourceSearchFields["wallet_record"])
}
// resourceSearchFields 返回搜索契约副本,防止调用方修改全局定义。
func resourceSearchFields(name string) []common.KeywordSearchField {
fields := deliveryResourceSearchFields[name]
result := make([]common.KeywordSearchField, 0, len(fields))
for _, field := range fields {
copied := field
copied.Values = append([]common.KeywordSearchValue(nil), field.Values...)
result = append(result, copied)
}
return result
}
func searchText(key string) common.KeywordSearchField {
return common.KeywordSearchField{Key: key, Kind: common.KeywordSearchText}
}
func searchEnum(key string, values ...common.KeywordSearchValue) common.KeywordSearchField {
return common.KeywordSearchField{Key: key, Kind: common.KeywordSearchEnum, Values: values}
}
func searchOption(value, label string) common.KeywordSearchValue {
return common.KeywordSearchValue{Value: value, Label: label}
}