123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150 |
- package zapx
- import (
- "fmt"
- "time"
- )
- type OperateRecord struct {
- EventTime time.Time `json:"eventTime"`
- Category string `json:"category"`
- UserId string `json:"userId"`
- Entity string `json:"entity"`
- Action string `json:"action"`
- Target string `json:"target"`
- StringExtra map[string]string `json:"stringExtra"`
- FloatExtra map[string]float64 `json:"floatExtra"`
- IntExtra map[string]int32 `json:"intExtra"`
- BoolExtra map[string]bool `json:"boolExtra"`
- }
- func (v OperateRecord) Validate() error {
- if v.EventTime.IsZero() {
- return ValidateError("时间不能为空")
- }
- if v.Category == "" {
- return ValidateError("服务分类不能为空")
- }
- if v.UserId == "" {
- return ValidateError("操作用户不能为空")
- }
- if v.Entity == "" {
- return ValidateError("操作实体不能为空")
- }
- if v.Action == "" {
- return ValidateError("动作不能为空")
- }
- mp := make(map[string]string)
- for k := range v.StringExtra {
- mp[k] = "字符串"
- }
- for k := range v.FloatExtra {
- if t, ok := mp[k]; ok {
- return ValidateError(fmt.Sprintf("参数重复定义,%s 已定义为 %s", k, t))
- }
- mp[k] = "浮点数"
- }
- for k := range v.IntExtra {
- if t, ok := mp[k]; ok {
- return ValidateError(fmt.Sprintf("参数重复定义,%s 已定义为 %s", k, t))
- }
- mp[k] = "整数"
- }
- for k := range v.BoolExtra {
- if t, ok := mp[k]; ok {
- return ValidateError(fmt.Sprintf("参数重复定义,%s 已定义为 %s", k, t))
- }
- }
- return nil
- }
- type ListOperationRequest struct {
- Begin time.Time `json:"begin"`
- End time.Time `json:"end"`
- Category string `json:"category"`
- UserId string `json:"userId"`
- EntityFilter []StringFieldFilter `json:"entityFilter"`
- ActionFilter []StringFieldFilter `json:"actionFilter"`
- TargetFilter []StringFieldFilter `json:"targetFIlter"`
- StringFilter []StringFilter `json:"stringFilter"`
- FloatFilter []FloatFilter `json:"floatFilter"`
- IntFilter []IntFilter `json:"intFilter"`
- BoolFilter []BoolFilter `json:"boolFilter"`
- Order string `json:"order"`
- PageNumber int `json:"pageNumber"`
- PageSize int `json:"pageSize"`
- }
- func (v ListOperationRequest) Validate() error {
- if v.Begin.IsZero() {
- return ValidateError("开始时间不能为空")
- }
- if v.End.IsZero() {
- return ValidateError("结束时间不能为空")
- }
- if v.Category == "" {
- return ValidateError("服务分类不能为空")
- }
- for _, f := range v.EntityFilter {
- err := f.Validate()
- if err != nil {
- return err
- }
- }
- for _, f := range v.ActionFilter {
- err := f.Validate()
- if err != nil {
- return err
- }
- }
- for _, f := range v.TargetFilter {
- err := f.Validate()
- if err != nil {
- return err
- }
- }
- for _, f := range v.StringFilter {
- err := f.Validate()
- if err != nil {
- return err
- }
- }
- for _, f := range v.FloatFilter {
- err := f.Validate()
- if err != nil {
- return err
- }
- }
- for _, f := range v.IntFilter {
- err := f.Validate()
- if err != nil {
- return err
- }
- }
- for _, f := range v.BoolFilter {
- err := f.Validate()
- if err != nil {
- return err
- }
- }
- if v.Order != "" && v.Order != OrderAsc && v.Order != OrderDesc {
- return ValidateError("排序类型错误")
- }
- if v.PageNumber < 1 {
- return ValidateError("页码不能小于 1")
- }
- if v.PageSize < 0 {
- return ValidateError("每页数量不能小于 0")
- }
- return nil
- }
- type ListOperationResponse struct {
- Total int `json:"total"`
- List []OperateRecord `json:"list"`
- }
|