package models import ( "fmt" "zhiyuan/pkg/db" "github.com/gin-gonic/gin" ) type Dept struct { ID int `json:"id"` Name string `json:"name"` Pid int `json:"pid"` Attribute int `json:"attribute"` CreatedAt int `json:"created_at"` UpdatedAt int `json:"updated_at"` db.BaseModel } func (Dept) TableName() string { return "zy_dept" } func (model Dept) ListPrivilege(c *gin.Context, data map[string]interface{}, s *db.Select) bool { return true } func (Dept) DeletedField() string { return "" } func (d Dept) GetOne(where map[string]interface{}, fields []string, retVal interface{}) (*Dept, error) { if retVal == nil { var dept *Dept err := db.GetOne(d.TableName(), where, fields, &dept) return dept, err } else { err := db.GetOne(d.TableName(), where, fields, retVal) return nil, err } } func (d Dept) GetMulti(where map[string]interface{}, fields []string, retVal interface{}) ([]*Dept, error) { if retVal == nil { var dept []*Dept err := db.GetMulti(d.TableName(), where, fields, &dept) return dept, err } else { err := db.GetMulti(d.TableName(), where, fields, retVal) return nil, err } } type DeptDivision struct { Dept ID int `json:"id"` Name string `json:"name" prop:"select:concat(dept.name,'/',zy_dept.name)"` } func (model DeptDivision) ListPrivilege(c *gin.Context, data map[string]interface{}, s *db.Select) bool { s.Where = append(s.Where, fmt.Sprintf("`%s`.`attribute` = %s", model.TableName(), s.Param(1))) return true } func (model DeptDivision) LeftJoin(data map[string]interface{}, s *db.Select) []db.JoinModel { return []db.JoinModel{ { Model: Dept{}, As: "dept", On: []string{"`dept`.`id` = " + model.TableName() + ".`pid`"}, }, } }