强化配送订单合同调度约束

This commit is contained in:
czl231
2026-08-15 19:19:15 +08:00
parent 963e497bf3
commit 42a4fc2f41
15 changed files with 501 additions and 52 deletions

View File

@@ -1,8 +1,11 @@
// 功能描述:提供平台工作人员资源管理与受控候选筛选。
// 版本v1.1.0
package staff
import (
"strconv"
"strings"
"time"
"git.apinb.com/bsm-sdk/core/errcode"
"git.apinb.com/bsm-sdk/core/infra"
@@ -14,9 +17,10 @@ import (
)
type staffListFilters struct {
RoleCodes []string
Status *int
WorkStatus string
RoleCodes []string
Status *int
WorkStatus string
ValidCredentialOnly bool
}
type staffOrganizationFilters struct {
@@ -27,7 +31,7 @@ type staffOrganizationFilters struct {
}
// parseStaffListFilters 将工作人员列表查询参数收敛为闭集条件,拒绝含糊或冲突值。
func parseStaffListFilters(roleCode, roleCodes, status, workStatus string) (staffListFilters, bool) {
func parseStaffListFilters(roleCode, roleCodes, status, workStatus, validCredentialOnly string) (staffListFilters, bool) {
filters := staffListFilters{}
roleCode = strings.TrimSpace(roleCode)
roleCodes = strings.TrimSpace(roleCodes)
@@ -65,6 +69,11 @@ func parseStaffListFilters(roleCode, roleCodes, status, workStatus string) (staf
return staffListFilters{}, false
}
filters.WorkStatus = workStatus
validCredentialOnly = strings.TrimSpace(validCredentialOnly)
if validCredentialOnly != "" && validCredentialOnly != "1" {
return staffListFilters{}, false
}
filters.ValidCredentialOnly = validCredentialOnly == "1"
return filters, true
}
@@ -103,6 +112,7 @@ func ListStaff(ctx *gin.Context) {
ctx.Query("role_codes"),
ctx.Query("status"),
ctx.Query("work_status"),
ctx.Query("valid_credential_only"),
)
if !ok {
infra.Response.Error(ctx, errcode.ErrInvalidArgument)
@@ -131,6 +141,14 @@ func ListStaff(ctx *gin.Context) {
if filters.WorkStatus != "" {
query = query.Where("work_status = ?", filters.WorkStatus)
}
if filters.ValidCredentialOnly {
now := time.Now()
query = query.Where(
"EXISTS (SELECT 1 FROM staff_credential WHERE staff_credential.staff_account_id = staff_account.id AND staff_credential.status = ? AND (staff_credential.expired_at IS NULL OR staff_credential.expired_at > ?))",
common.StatusEnable,
now,
)
}
if organizationFilters.GasIdentity != "" {
query = query.Where(
"gas_basic_id IN (SELECT id FROM gas_basic WHERE identity = ? AND status <> ?)",