package dal import ( "database/sql" "errors" "fmt" "xiaoniaokuaiyan.com/xiaoniao/entity" "xiaoniaokuaiyan.com/xiaoniao/util" ) type User struct { } func (u *User) Get(account string) (*entity.UserDB, error) { db := util.GetSqlDB() strSql := "select id, mobile, password, password_salt, extra, account_type,avatar from t_custom where mobile = ? limit 1" var user entity.UserDB err := db.Get(&user, strSql, account) if err != nil { if err == sql.ErrNoRows { return nil, DBRECORD_NOT_EXISTS_ERROR } return nil, err } return &user, nil } func (u *User) Save(params map[string]interface{}) (interface{}, error) { db := util.GetWriteSqlDB() var sqlStr = util.GenerateInsertSql("t_custom", params) result, err := db.NamedExec(sqlStr, params) if err != nil { return nil, errors.New("db error") } aid, err := result.LastInsertId() if err != nil { if id, ok := params["id"]; ok { return id, nil } else { return nil, nil } } return aid, nil } func (u *User) Update(user *entity.User) (*entity.User, error) { if user.Id == 0 && user.Mobile == "" { return nil, errors.New("错误的请求") } db := util.GetWriteSqlDB() var whereStr string if user.Id == 0 { whereStr = " where mobile = :mobile" } else { whereStr = " where id = :id" } sqlStr, kvm := util.GenerateUpdateSqlFromStruct("t_custom", user, whereStr) result, err := db.NamedExec(sqlStr, kvm) if err != nil { return nil, err } _, err = result.RowsAffected() if err != nil { return nil, err } /*if ra <= 0 { return nil, errors.New("404::update failed(can not found user)") }*/ return user, nil } func (u *User) GetNotice(mobile string) ([]entity.QueueNotice, error) { db := util.GetSqlDB() qlist := []entity.QueueNotice{} err := db.Select(&qlist, "select * from t_custom_queue where custom_mobile = ? and isallnotice = 'N'", mobile) return qlist, err } func (u *User) UpdateNotice(notice *entity.QueueNotice) (bool, error) { if notice.Id == 0 { return false, errors.New("can not find info") } db := util.GetWriteSqlDB() sqlStr, kvm := util.GenerateUpdateSqlFromStruct("t_custom_queue", notice, " where id = :id") result, err := db.NamedExec(sqlStr, kvm) if err != nil { return false, err } ra, err := result.RowsAffected() if err != nil { return false, err } if ra <= 0 { return false, errors.New("404::update failed(can not found info)") } return true, nil } // 根据openid 查询用户 func (u *User) GetUserByOpenid(openid string) (*entity.UserDB, error) { db := util.GetSqlDB() strSql := "select id, mobile, password, password_salt, extra, account_type,avatar from t_custom where instr(extra,?)>0 limit 1" var user entity.UserDB err := db.Get(&user, strSql, openid) if err != nil { if err == sql.ErrNoRows { return nil, DBRECORD_NOT_EXISTS_ERROR } return nil, err } return &user, nil } func (u *User) GetUserByUnionid(unionid string) (*entity.UserDB, error) { if unionid == "" { return nil, fmt.Errorf("unionid is empty") } db := util.GetSqlDB() strSql := "select id, mobile, password, password_salt, extra, account_type,avatar from t_custom where unionid = ? limit 1" var user entity.UserDB err := db.Get(&user, strSql, unionid) if err != nil { if err == sql.ErrNoRows { return nil, DBRECORD_NOT_EXISTS_ERROR } return nil, err } return &user, nil } func (u *User) GetUserByUserId(zfbUserId string) (*entity.UserDB, error) { db := util.GetSqlDB() strSql := "select id, mobile, password, password_salt, extra, account_type,avatar from t_custom where extra like ? limit 1" var user entity.UserDB err := db.Get(&user, strSql, "%"+zfbUserId+"%") if err != nil { if err == sql.ErrNoRows { return nil, DBRECORD_NOT_EXISTS_ERROR } return nil, err } return &user, nil } var DefaultUserDal = &User{}