package dal import ( "errors" "time" "xiaoniaokuaiyan.com/xiaoniao/entity" "xiaoniaokuaiyan.com/xiaoniao/util" ) type UserLinker struct{} func (ul *UserLinker) Save(linker *entity.UserLinker) (*entity.UserLinker, error) { db := util.GetWriteSqlDB() linker.CreatedAt = time.Now().Format("2006-01-02 15:04:05") strSql, kvm := util.GenerateInsertSqlFromStruct("t_custom_linker", linker) result, err := db.NamedExec(strSql, kvm) if err != nil { return nil, err } ar, _ := result.RowsAffected() if ar > 0 && linker.IsDefault == 1 { _, err = db.Exec("update t_custom_linker set is_default = 0 where custom_id = ? and id <> ?") if err != nil { return nil, err } } aid, _ := result.LastInsertId() linker.Id = int(aid) return linker, nil } func (ul *UserLinker) List(customId int, isDefault bool) ([]entity.UserLinkerDB, error) { db := util.GetSqlDB() var linkerList = []entity.UserLinkerDB{} strSql := "select * from t_custom_linker where custom_id = ?" if isDefault { strSql += " order by is_default desc limit 1" } err := db.Select(&linkerList, strSql, customId) if err != nil { return nil, err } return linkerList, nil } func (ul *UserLinker) Get(id, cid int) (*entity.UserLinkerDB, error) { db := util.GetSqlDB() var userLinker = &entity.UserLinkerDB{} err := db.Get(userLinker, "select * from t_custom_linker where id = ? and custom_id = ?", id, cid) if err != nil { return nil, err } return userLinker, nil } func (ul *UserLinker) Update(linker *entity.UserLinker) (*entity.UserLinker, error) { db := util.GetWriteSqlDB() if linker.County != "" { var countyId int db.Get(&countyId, "select id from t_county where name = ?;", linker.County) if countyId <= 0 { return nil, errors.New("can not find county: " + linker.County) } //linker.CountyId = countyId } strSql, kvm := util.GenerateUpdateSqlFromStruct("t_custom_linker", linker, " where id = :id") _, err := db.NamedExec(strSql, kvm) if err != nil { return nil, err } /*ra, _ := result.RowsAffected() if ra <= 0 { return nil, errors.New("update failed") }*/ if linker.IsDefault == 1 { _, err = db.Exec("update t_custom_linker set is_default = 0 where custom_id = ? and id <> ?", linker.CustomId, linker.Id) if err != nil { return nil, err } } return linker, nil } func (ul *UserLinker) Remove(linker *entity.UserLinker) (interface{}, error) { db := util.GetWriteSqlDB() strSql := "delete from t_custom_linker where id = ? and custom_id = ?" result, err := db.Exec(strSql, linker.Id, linker.CustomId) if err != nil { return nil, err } ra, _ := result.RowsAffected() if ra <= 0 { return nil, errors.New("remove failed(can not find record)") } return true, nil } var DefaultUserLinkerDal = &UserLinker{}