diff --git a/internal/dao/sakila/user.go b/internal/dao/sakila/user.go index 6910df62..48e2b0d8 100644 --- a/internal/dao/sakila/user.go +++ b/internal/dao/sakila/user.go @@ -5,6 +5,9 @@ package sakila import ( + "strings" + "time" + "github.com/jmoiron/sqlx" "github.com/rocboss/paopao-ce/internal/core" "github.com/rocboss/paopao-ce/internal/core/ms" @@ -21,48 +24,50 @@ type userManageSrv struct { q *cc.UserManage } -func (s *userManageSrv) GetUserByID(id int64) (*ms.User, error) { - res := &ms.User{} - err := s.q.GetUserById.Get(res, id) - return res, err +func (s *userManageSrv) GetUserByID(id int64) (res *ms.User, err error) { + err = s.q.GetUserById.Get(res, id) + return } -func (s *userManageSrv) GetUserByUsername(username string) (*ms.User, error) { - res := &ms.User{} - err := s.q.GetUserByUsername.Get(res, username) - return res, err +func (s *userManageSrv) GetUserByUsername(username string) (res *ms.User, err error) { + err = s.q.GetUserByUsername.Get(res, username) + return } -func (s *userManageSrv) GetUserByPhone(phone string) (*ms.User, error) { - res := &ms.User{} - err := s.q.GetUserByPhone.Get(res, phone) - return res, err +func (s *userManageSrv) GetUserByPhone(phone string) (res *ms.User, err error) { + err = s.q.GetUserByPhone.Get(res, phone) + return } -func (s *userManageSrv) GetUsersByIDs(ids []int64) ([]*ms.User, error) { - res := []*ms.User{} - err := s.inSelect(&res, s.q.GetUsersByIds, ids) - return res, err +func (s *userManageSrv) GetUsersByIDs(ids []int64) (res []*ms.User, err error) { + err = s.inSelect(&res, s.q.GetUsersByIds, ids) + return } -func (s *userManageSrv) GetUsersByKeyword(keyword string) ([]*ms.User, error) { - res := []*ms.User{} - err := s.q.GetUsersByKeyword.Select(&res, keyword) - return res, err +func (s *userManageSrv) GetUsersByKeyword(keyword string) (res []*ms.User, err error) { + keyword = strings.Trim(keyword, " ") + "%" + if keyword == "%" { + err = s.q.GetAnyUsers.Get(&res) + } else { + err = s.q.GetUsersByKeyword.Select(&res, keyword) + } + return } func (s *userManageSrv) CreateUser(r *ms.User) (*ms.User, error) { - res, err := s.q.AddUser.Exec(r.Username, r.Nickname, r.Password, r.Salt, r.Avatar) + r.Model = &ms.Model{ + CreatedOn: time.Now().Unix(), + } + res, err := s.q.CreateUser.Exec(r) if err != nil { return nil, err } - r.Model = &dbr.Model{} r.ID, err = res.LastInsertId() return r, err } func (s *userManageSrv) UpdateUser(r *ms.User) error { - _, err := s.q.UpdateUser.Exec(r.Nickname, r.Password, r.Salt, r.Phone, r.Status) + _, err := s.q.UpdateUser.Exec(r) return err } diff --git a/internal/dao/sakila/yesql/cc/yesql.go b/internal/dao/sakila/yesql/cc/yesql.go index fc4eb48d..b181baee 100644 --- a/internal/dao/sakila/yesql/cc/yesql.go +++ b/internal/dao/sakila/yesql/cc/yesql.go @@ -61,7 +61,7 @@ const ( _Message_GetUnreadCount = `SELECT count(*) FROM @message WHERE receiver_user_id=? AND is_read=0 AND is_del=0` _Message_ReadMessage = `UPDATE @message SET is_read=1, modified_on=? WHERE id=?` _Security_CreatePhoneCaptcha = `INSERT INTO @captcha (phone, captcha, expired_on, created_on) VALUES (:phone, :captcha, :expired_on, :created_on)` - _Security_GetLatestPhoneCaptcha = `SELECT * FROM @captcha WHERE phone=:phone AND is_del=0` + _Security_GetLatestPhoneCaptcha = `SELECT * FROM @captcha WHERE phone=? AND is_del=0` _Security_UsePhoneCaptcha = `UPDATE @captcha SET use_times=use_times+1, modified_on=? WHERE id=? AND is_del=0` _SimpleIndexA_UserInfo = `SELECT * FROM @user WHERE username=?` _SimpleIndex_UserInfo = `SELECT * FROM @user WHERE username=?` @@ -115,13 +115,14 @@ const ( _TweetManage_StickPost = `SELECT * FROM @user WHERE username=?` _TweetManage_UpdatePost = `SELECT * FROM @user WHERE username=?` _TweetManage_VisiblePost = `SELECT * FROM @user WHERE username=?` - _UserManage_AddUser = `SELECT * FROM @user WHERE username=?` - _UserManage_GetUserById = `SELECT * FROM @user WHERE username=?` - _UserManage_GetUserByPhone = `SELECT * FROM @user WHERE username=?` - _UserManage_GetUserByUsername = `SELECT * FROM @user WHERE username=?` - _UserManage_GetUsersByIds = `SELECT * FROM @user WHERE username=?` - _UserManage_GetUsersByKeyword = `SELECT * FROM @user WHERE username=?` - _UserManage_UpdateUser = `SELECT * FROM @user WHERE username=?` + _UserManage_CreateUser = `INSERT INTO @user (username, nickname, password, salt, avatar, status, created_on) VALUES (:username, :nickname, :password, :salt, :avatar, :status, :created_on)` + _UserManage_GetAnyUsers = `SELECT * FROM @user WHERE is_del=0 ORDER BY id ASC limit 6` + _UserManage_GetUserById = `SELECT * FROM @user WHERE id=? AND is_del=0` + _UserManage_GetUserByPhone = `SELECT * FROM @user WHERE phone=? AND is_del=0` + _UserManage_GetUserByUsername = `SELECT * FROM @user WHERE username=? AND is_del=0` + _UserManage_GetUsersByIds = `SELECT * FROM @user WHERE id IN ? AND is_del=0` + _UserManage_GetUsersByKeyword = `SELECT * FROM @user WHERE username LIKE ? AND is_del=0 limit 6` + _UserManage_UpdateUser = `UPDATE @user SET username=:username, nickname=:nickname, phone=:phone, password=:password, salt=:salt, status=:status, avatar=:avatar, balance=:balance, is_admin=:is_admin, modified_on=:modified_on WHERE id=? AND is_del=0` _Wallet_CreateRecharge = `SELECT * FROM @user WHERE username=?` _Wallet_GetRechargeById = `SELECT * FROM @user WHERE username=?` _Wallet_GetUserWalletBillCount = `SELECT * FROM @user WHERE username=?` @@ -319,13 +320,14 @@ type TweetManageA struct { type UserManage struct { yesql.Namespace `yesql:"user_manage"` - GetUsersByIds string `yesql:"get_users_by_ids"` - AddUser *sqlx.Stmt `yesql:"add_user"` - GetUserById *sqlx.Stmt `yesql:"get_user_by_id"` - GetUserByPhone *sqlx.Stmt `yesql:"get_user_by_phone"` - GetUserByUsername *sqlx.Stmt `yesql:"get_user_by_username"` - GetUsersByKeyword *sqlx.Stmt `yesql:"get_users_by_keyword"` - UpdateUser *sqlx.Stmt `yesql:"update_user"` + GetUsersByIds string `yesql:"get_users_by_ids"` + GetAnyUsers *sqlx.Stmt `yesql:"get_any_users"` + GetUserById *sqlx.Stmt `yesql:"get_user_by_id"` + GetUserByPhone *sqlx.Stmt `yesql:"get_user_by_phone"` + GetUserByUsername *sqlx.Stmt `yesql:"get_user_by_username"` + GetUsersByKeyword *sqlx.Stmt `yesql:"get_users_by_keyword"` + CreateUser *sqlx.NamedStmt `yesql:"create_user"` + UpdateUser *sqlx.NamedStmt `yesql:"update_user"` } type Wallet struct { @@ -862,7 +864,7 @@ func BuildUserManage(p yesql.PreparexBuilder, ctx ...context.Context) (obj *User obj = &UserManage{ GetUsersByIds: p.QueryHook(_UserManage_GetUsersByIds), } - if obj.AddUser, err = p.PreparexContext(c, p.Rebind(p.QueryHook(_UserManage_AddUser))); err != nil { + if obj.GetAnyUsers, err = p.PreparexContext(c, p.Rebind(p.QueryHook(_UserManage_GetAnyUsers))); err != nil { return } if obj.GetUserById, err = p.PreparexContext(c, p.Rebind(p.QueryHook(_UserManage_GetUserById))); err != nil { @@ -877,7 +879,10 @@ func BuildUserManage(p yesql.PreparexBuilder, ctx ...context.Context) (obj *User if obj.GetUsersByKeyword, err = p.PreparexContext(c, p.Rebind(p.QueryHook(_UserManage_GetUsersByKeyword))); err != nil { return } - if obj.UpdateUser, err = p.PreparexContext(c, p.Rebind(p.QueryHook(_UserManage_UpdateUser))); err != nil { + if obj.CreateUser, err = p.PrepareNamedContext(c, p.Rebind(p.QueryHook(_UserManage_CreateUser))); err != nil { + return + } + if obj.UpdateUser, err = p.PrepareNamedContext(c, p.Rebind(p.QueryHook(_UserManage_UpdateUser))); err != nil { return } return diff --git a/internal/dao/sakila/yesql/yesql.sql b/internal/dao/sakila/yesql/yesql.sql index ba23f083..71620aa2 100644 --- a/internal/dao/sakila/yesql/yesql.sql +++ b/internal/dao/sakila/yesql/yesql.sql @@ -521,32 +521,38 @@ UPDATE @tag SET quote_num=quote_num+1, is_del=0, modified_on=? WHERE id IN (?); -- name: get_user_by_id@user_manage -- prepare: stmt -SELECT * FROM @user WHERE username=? +SELECT * FROM @user WHERE id=? AND is_del=0; -- name: get_user_by_username@user_manage -- prepare: stmt -SELECT * FROM @user WHERE username=? +SELECT * FROM @user WHERE username=? AND is_del=0; -- name: get_user_by_phone@user_manage -- prepare: stmt -SELECT * FROM @user WHERE username=? +SELECT * FROM @user WHERE phone=? AND is_del=0; -- name: get_users_by_ids@user_manage -- prepare: raw -- clause: in -SELECT * FROM @user WHERE username=? +SELECT * FROM @user WHERE id IN ? AND is_del=0; -- name: get_users_by_keyword@user_manage -- prepare: stmt -SELECT * FROM @user WHERE username=? +SELECT * FROM @user WHERE username LIKE ? AND is_del=0 limit 6; --- name: add_user@user_manage +-- name: get_any_users@user_manage -- prepare: stmt -SELECT * FROM @user WHERE username=? +SELECT * FROM @user WHERE is_del=0 ORDER BY id ASC limit 6; + +-- name: create_user@user_manage +-- prepare: named_stmt +INSERT INTO @user (username, nickname, password, salt, avatar, status, created_on) VALUES (:username, :nickname, :password, :salt, :avatar, :status, :created_on); -- name: update_user@user_manage --- prepare: stmt -SELECT * FROM @user WHERE username=? +-- prepare: named_stmt +UPDATE @user SET username=:username, nickname=:nickname, phone=:phone, + password=:password, salt=:salt, status=:status, avatar=:avatar, balance=:balance, + is_admin=:is_admin, modified_on=:modified_on WHERE id=? AND is_del=0; -------------------------------------------------------------------------------- -- wallet sql dml