package hasaki_{{.app_name}} import ( "errors" "git.ouxuan.net/hasaki-service/hasaki-sdk/hsktime" "strconv" "xorm.io/xorm" ) type Model struct { Id int `json:"id" xorm:"not null pk autoincr INT(11)"` CreatedAt hsktime.Time `json:"created_at" xorm:"created comment('创建时间')"` UpdatedAt hsktime.Time `json:"updated_at" xorm:"updated comment('更新时间')"` DeletedAt hsktime.Time `json:"-" xorm:"deleted comment('是否删除') TIMESTAMP INDEX"` session *xorm.Session `xorm:"-"` instance interface{} `xorm:"-"` } func (m *Model) checkInstance() error { if m.instance == nil { return errors.New("instance 未实例化") } return nil } func (m *Model) SetInstance(instance interface{}) { m.instance = instance } // 增删改查 func (m *Model) Save(cols ...string) (int64, error) { err := m.checkInstance() if err != nil { return 0, err } if m.Id > 0 { if len(cols) > 0 { return m.session.Cols(cols...).Update(m.instance) } else { return m.session.AllCols().Update(m.session) } } else { return m.session.InsertOne(m.instance) } } func (m *Model) Del() (int64, error) { err := m.checkInstance() if err != nil { return 0, err } return m.session.ID(m.Id).Delete(m.instance) } func (m *Model) Get() (bool, error) { err := m.checkInstance() if err != nil { return false, err } return m.session.Unscoped().Get(m.instance) } //分页 cond["page"] 第几页 cond["page_size"] 多少条 func Page(cond map[string]string, s *xorm.Session) *xorm.Session { if cond["page_size"] != "" { size, _ := strconv.Atoi(cond["page_size"]) page, _ := strconv.Atoi(cond["page"]) if page <= 0 { page = 0 } else { page = page - 1 } s = s.Limit(size, page*size) } return s } func Like(col, key string, s *xorm.Session) *xorm.Session { if key != "" { s = s.Where(col+" like ?", "%"+key+"%") } return s } func JsonContains(col, key string, s *xorm.Session) *xorm.Session { if key != "" { s = s.Where(`JSON_CONTAINS(` + col + `, '` + key + `', '$')`) } return s }