package model import ( "trading-go/common" "trading-go/response" "trading-go/util" ) type Relation struct { Id uint `db:"id"` Owner uint `db:"owner"` Target uint `db:"target"` GoodsId uint `db:"goods_id"` Type int `db:"type"` } type RelationJson struct { Owner uint `json:"owner,string" db:"owner"` Target uint `json:"target,string" db:"target"` GoodsId uint `json:"goodsId" db:"goods_id"` Type int `json:"type" db:"type"` } func (r RelationJson) Change() Relation { return Relation{ Owner: r.Owner, Target: r.Target, Type: r.Type, GoodsId: r.GoodsId, } } func (r Relation) Creat() error { db := common.DB sqlStr := "INSERT INTO relations(owner, target, type, goods_id) VALUES (:owner, :target, :type, :goods_id)" rows, err := db.NamedExec(sqlStr, r) if err != nil { return err } affected, err := rows.RowsAffected() if affected != 1 { return util.InsertFailError } return err } func (r Relation) Friend(uid int) ([]RelationJson, error) { var friends []RelationJson db := common.DB sqlStr := "SELECT owner, target, type, goods_id From relations WHERE owner = ? AND type = 1" err := db.Select(&friends, sqlStr, uid) return friends, err } func (r Relation) BadRelation(uid int) ([]int64, error) { var badRelation []int64 db := common.DB sqlStr := "SELECT target From relations WHERE owner = ? AND type = 2" err := db.Select(&badRelation, sqlStr, uid) return badRelation, err } func (r Relation) DRelation() error { db := common.DB sqlStr := "DELETE FROM relations WHERE id = ?" _, err := db.Exec(sqlStr, r.Id) return err } func (r Relation) GetPaged(page, pageSize int) (rsp response.PageResponse, err error) { var relations []Relation db := common.DB sqlStr := "SELECT * FROM relations LIMIT ?,?" rsp.Page = page rsp.PageSize = pageSize err = db.Select(&relations, sqlStr, (page-1)*pageSize, pageSize) rsp.Data = relations return } func (r Relation) GetCnt() (cnt int, err error) { db := common.DB sqlStr := "SELECT COUNT(1) FROM relations" err = db.Get(&cnt, sqlStr) return }