diff --git a/app/global/consts/consts.go b/app/global/consts/consts.go index 6193a15..a8f00d7 100644 --- a/app/global/consts/consts.go +++ b/app/global/consts/consts.go @@ -72,4 +72,7 @@ const ( CaptchaCheckOkMsg string = "验证码校验通过" CaptchaCheckFailCode int = -400355 CaptchaCheckFailMsg string = "验证码校验失败" + + // TAG animal/ 接口模式 + AnimalPreferMode string = "prefer" ) diff --git a/app/http/controller/web/animal_controller.go b/app/http/controller/web/animal_controller.go index 45453b4..9bc1fc5 100644 --- a/app/http/controller/web/animal_controller.go +++ b/app/http/controller/web/animal_controller.go @@ -31,14 +31,24 @@ func (a *Animals) List(context *gin.Context) { skip := context.GetFloat64(consts.ValidatorPrefix + "skip") userId := context.GetFloat64(consts.ValidatorPrefix + "user_id") - animals := curd.CreateAnimalsCurdFactory().List(attrs, gender, breed, sterilization, status, department, int(num), int(skip), int(userId)) - if animals != nil { - response.Success(context, consts.CurdStatusOkMsg, animals) - } else { - response.Fail(context, errcode.AnimalNoFind, errcode.ErrMsg[errcode.AnimalNoFind], "") + mode := context.GetString(consts.ValidatorPrefix + "mode") + + if mode == consts.AnimalPreferMode { + preferList(context) + } else { // 其余都是 默认模式。 + animals := curd.CreateAnimalsCurdFactory().List(attrs, gender, breed, sterilization, status, department, int(num), int(skip), int(userId)) + if animals != nil { + response.Success(context, consts.CurdStatusOkMsg, animals) + } else { + response.Fail(context, errcode.AnimalNoFind, errcode.ErrMsg[errcode.AnimalNoFind], "") + } } } +func preferList(context *gin.Context) { + // TODO 先去考虑一下前端筛选的实现方式。 +} + // v0.1 // func (a *Animals) Detail(context *gin.Context) { // // 1. Get Params diff --git a/app/http/validator/web/animal/list.go b/app/http/validator/web/animal/list.go index cdb4b81..bd25d9b 100644 --- a/app/http/validator/web/animal/list.go +++ b/app/http/validator/web/animal/list.go @@ -19,10 +19,12 @@ type List struct { Num int `form:"num" json:"num"` Skip int `form:"skip" json:"skip"` UserId int `form:"user_id" json:"user_id"` + + Mode string `form:"mode" json:"mode"` // INFO 控制 animal_ctl 的查询模式。 // default: 简单调用 List 函数 || prefer: 优先返回和用户关联度更高的目标。 } func (l List) CheckParams(context *gin.Context) { - if err := context.ShouldBind(&l); err != nil { // INFO 这一条是必要的,看来对数据的解析页在其中。 + if err := context.ShouldBind(&l); err != nil { // 将表单参数验证器出现的错误直接交给错误翻译器统一处理即可 response.ValidatorError(context, err) return diff --git a/routers/web.go b/routers/web.go index bd2c425..67938a5 100644 --- a/routers/web.go +++ b/routers/web.go @@ -3,12 +3,10 @@ package routers import ( "catface/app/global/consts" "catface/app/global/variable" - // "catface/app/http/controller/captcha" // 验证码组件 // "catface/app/http/middleware/authorization" "catface/app/http/middleware/cors" validatorFactory "catface/app/http/validator/core/factory" - // TODO validatorFactory "catface/app/http/validator/core/factory" "catface/app/utils/gin_release" "net/http"