f
This commit is contained in:
@@ -2,12 +2,15 @@ package admin_role
|
||||
|
||||
import (
|
||||
"context"
|
||||
"strings"
|
||||
"sync"
|
||||
"time"
|
||||
|
||||
"bdrp-server/app/main/api/internal/svc"
|
||||
"bdrp-server/app/main/api/internal/types"
|
||||
"bdrp-server/app/main/model"
|
||||
|
||||
"github.com/Masterminds/squirrel"
|
||||
"github.com/samber/lo"
|
||||
"github.com/zeromicro/go-zero/core/logx"
|
||||
"github.com/zeromicro/go-zero/core/mr"
|
||||
@@ -34,15 +37,7 @@ func (l *GetRoleListLogic) GetRoleList(req *types.GetRoleListReq) (resp *types.G
|
||||
|
||||
// 构建查询条件
|
||||
builder := l.svcCtx.AdminRoleModel.SelectBuilder()
|
||||
if len(req.Name) > 0 {
|
||||
builder = builder.Where("role_name LIKE ?", "%"+req.Name+"%")
|
||||
}
|
||||
if len(req.Code) > 0 {
|
||||
builder = builder.Where("role_code LIKE ?", "%"+req.Code+"%")
|
||||
}
|
||||
if req.Status != -1 {
|
||||
builder = builder.Where("status = ?", req.Status)
|
||||
}
|
||||
builder = applyRoleListFilters(builder, req)
|
||||
|
||||
// 设置分页
|
||||
offset := (req.Page - 1) * req.PageSize
|
||||
@@ -73,15 +68,7 @@ func (l *GetRoleListLogic) GetRoleList(req *types.GetRoleListReq) (resp *types.G
|
||||
mutex.Unlock()
|
||||
} else if taskType == 2 {
|
||||
countBuilder := l.svcCtx.AdminRoleModel.SelectBuilder()
|
||||
if len(req.Name) > 0 {
|
||||
countBuilder = countBuilder.Where("role_name LIKE ?", "%"+req.Name+"%")
|
||||
}
|
||||
if len(req.Code) > 0 {
|
||||
countBuilder = countBuilder.Where("role_code LIKE ?", "%"+req.Code+"%")
|
||||
}
|
||||
if req.Status != -1 {
|
||||
countBuilder = countBuilder.Where("status = ?", req.Status)
|
||||
}
|
||||
countBuilder = applyRoleListFilters(countBuilder, req)
|
||||
|
||||
count, err := l.svcCtx.AdminRoleModel.FindCount(l.ctx, countBuilder, "id")
|
||||
if err != nil {
|
||||
@@ -146,3 +133,56 @@ func (l *GetRoleListLogic) GetRoleList(req *types.GetRoleListReq) (resp *types.G
|
||||
|
||||
return resp, nil
|
||||
}
|
||||
|
||||
func applyRoleListFilters(builder squirrel.SelectBuilder, req *types.GetRoleListReq) squirrel.SelectBuilder {
|
||||
roleName := strings.TrimSpace(req.RoleName)
|
||||
if roleName == "" {
|
||||
roleName = strings.TrimSpace(req.Name)
|
||||
}
|
||||
if roleName != "" {
|
||||
builder = builder.Where("role_name LIKE ?", "%"+roleName+"%")
|
||||
}
|
||||
|
||||
roleCode := strings.TrimSpace(req.RoleCode)
|
||||
if roleCode == "" {
|
||||
roleCode = strings.TrimSpace(req.Code)
|
||||
}
|
||||
if roleCode != "" {
|
||||
builder = builder.Where("role_code LIKE ?", "%"+roleCode+"%")
|
||||
}
|
||||
|
||||
description := strings.TrimSpace(req.Description)
|
||||
if description != "" {
|
||||
builder = builder.Where("description LIKE ?", "%"+description+"%")
|
||||
}
|
||||
|
||||
if req.Status != -1 {
|
||||
builder = builder.Where("status = ?", req.Status)
|
||||
}
|
||||
|
||||
if startTime, ok := parseRoleListTime(req.StartTime, false); ok {
|
||||
builder = builder.Where("create_time >= ?", startTime)
|
||||
}
|
||||
if endTime, ok := parseRoleListTime(req.EndTime, true); ok {
|
||||
builder = builder.Where("create_time <= ?", endTime)
|
||||
}
|
||||
|
||||
return builder
|
||||
}
|
||||
|
||||
func parseRoleListTime(raw string, isEnd bool) (time.Time, bool) {
|
||||
raw = strings.TrimSpace(raw)
|
||||
if raw == "" {
|
||||
return time.Time{}, false
|
||||
}
|
||||
|
||||
for _, layout := range []string{"2006-01-02 15:04:05", "2006-01-02", time.RFC3339} {
|
||||
if t, err := time.Parse(layout, raw); err == nil {
|
||||
if layout == "2006-01-02" && isEnd {
|
||||
t = t.Add(23*time.Hour + 59*time.Minute + 59*time.Second)
|
||||
}
|
||||
return t, true
|
||||
}
|
||||
}
|
||||
return time.Time{}, false
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user