package micro import ( "fmt" "github.com/gogf/gf/v2/text/gstr" "log" "reflect" "strings" ) type Request struct { } type IdReq struct { Id int64 `json:"id,omitempty"` } type IdsReq struct { Ids []int64 `json:"ids,omitempty"` } const DefaultPageSize = 10 type PageReq struct { BeginTime string `p:"beginTime"` //开始时间 EndTime string `p:"endTime"` //结束时间 PageNum int `p:"pageNum"` //当前页码 PageSize int `p:"pageSize"` //每页数 OrderBy string `p:"orderBy"` //排序方式 } func (p *PageReq) GetPage() (int, int) { if p.PageNum == 0 { p.PageNum = 1 } if p.PageSize == 0 { p.PageSize = DefaultPageSize } return p.PageNum, p.PageSize } func (p *PageReq) GetLimit() (int, int) { if p.PageNum == 0 { p.PageNum = 1 } if p.PageSize == 0 { p.PageSize = DefaultPageSize } return (p.PageNum - 1) * p.PageSize, p.PageSize } func (p *PageReq) Order(dbStruct interface{}) string { return OrderBy(p.OrderBy, dbStruct) } func OrderBy(orderBy string, dbStruct interface{}) string { v := reflect.ValueOf(dbStruct) t := reflect.TypeOf(dbStruct) if t.Kind() == reflect.Ptr { t = t.Elem() v = v.Elem() } if t.Kind() != reflect.Struct { log.Println("Check type error not Struct") return "" } sortMap := make(map[string]string) ss := strings.Split(gstr.TrimAll(orderBy), ",") if len(ss) == 0 { return "" } for _, s := range ss { key := strings.Split(s, " ") if len(key) == 0 { continue } by := "asc" if len(key) > 1 { by = gstr.ToLower(key[1]) } sortMap[key[0]] = by } var orderByList []string for i := 0; i < t.NumField(); i++ { if tag, ok := t.Field(i).Tag.Lookup("orm"); ok { if val, ok := sortMap[tag]; ok { orderByList = append(orderByList, fmt.Sprintf("%v %v", tag, val)) } } } return strings.Join(orderByList, ", ") } // UserInfo 登录用户信息 type UserInfo struct { Id int64 `json:"id"` Uuid string `json:"uuid"` UserName string `json:"userName"` NickName string `json:"nickName"` Roles []string `json:"roles"` // 所属角色 DeptId int64 `json:"deptId"` //所属部门 DeptType string `json:"deptType"` // 部门类型 }