Files
go-common/app/service/main/tv/internal/dao/user_info.go
2019-04-22 18:49:16 +08:00

86 lines
3.1 KiB
Go

package dao
import (
"context"
"database/sql"
"go-common/app/service/main/tv/internal/model"
xsql "go-common/library/database/sql"
"go-common/library/log"
"github.com/pkg/errors"
)
const (
_getUserInfoByMid = "SELECT `id`, `mid`, `ver`, `vip_type`, `pay_type`, `pay_channel_id`, `status`, `overdue_time`, `recent_pay_time`, `ctime`, `mtime` FROM `tv_user_info` WHERE `mid`=?"
_insertUserInfo = "INSERT INTO tv_user_info (`mid`, `ver`, `vip_type`, `pay_type`, `pay_channel_id`, `status`, `overdue_time`, `recent_pay_time`) VALUES (?,?,?,?,?,?,?,?)"
_updateUserInfo = "UPDATE tv_user_info SET `status` = ?, `vip_type` = ?, `overdue_time`=?, `recent_pay_time`=?, `ver` = `ver` + 1 WHERE `mid` = ? AND `ver` = ?"
_updateUserStatus = "UPDATE tv_user_info SET `status` = ?, `ver` = `ver` + 1 WHERE `mid` = ? AND `ver` = ?"
_updateUserPayType = "UPDATE tv_user_info SET `pay_type` = ?, `ver` = `ver` + 1 WHERE `mid` = ? AND `ver` = ?"
)
// UserInfoByMid quires one row from tv_user_info.
func (d *Dao) RawUserInfoByMid(c context.Context, mid int64) (ui *model.UserInfo, err error) {
row := d.db.QueryRow(c, _getUserInfoByMid, mid)
ui = &model.UserInfo{}
err = row.Scan(&ui.ID, &ui.Mid, &ui.Ver, &ui.VipType, &ui.PayType, &ui.PayChannelId, &ui.Status, &ui.OverdueTime, &ui.RecentPayTime, &ui.Ctime, &ui.Mtime)
if err == sql.ErrNoRows {
return nil, nil
}
if err != nil {
log.Error("rows.Scan(%s) error(%v)", _getUserInfoByMid, err)
err = errors.WithStack(err)
return nil, err
}
return ui, nil
}
// TxInsertUserInfo insert one row into tv_user_info.
func (d *Dao) TxInsertUserInfo(ctx context.Context, tx *xsql.Tx, ui *model.UserInfo) (id int64, err error) {
var (
res sql.Result
)
if res, err = tx.Exec(_insertUserInfo, ui.Mid, ui.Ver, ui.VipType, ui.PayType, ui.PayChannelId, ui.Status, ui.OverdueTime, ui.RecentPayTime); err != nil {
log.Error("tx.Exec(%s) error(%v)", _insertUserInfo, err)
err = errors.WithStack(err)
return
}
if id, err = res.LastInsertId(); err != nil {
err = errors.WithStack(err)
return
}
return
}
// TxUpdateUserInfo updates user info.
func (d *Dao) TxUpdateUserInfo(ctx context.Context, tx *xsql.Tx, ui *model.UserInfo) (err error) {
if _, err = tx.Exec(_updateUserInfo, ui.Status, ui.VipType, ui.OverdueTime, ui.RecentPayTime, ui.Mid, ui.Ver); err != nil {
log.Error("tx.Exec(%s) error(%v)", _updateUserInfo, err)
err = errors.WithStack(err)
return
}
return
}
// TxUpdateUserInfo updates vip status of user.
func (d *Dao) TxUpdateUserStatus(ctx context.Context, tx *xsql.Tx, ui *model.UserInfo) (err error) {
if _, err = tx.Exec(_updateUserStatus, ui.Status, ui.Mid, ui.Ver); err != nil {
log.Error("tx.Exec(%s) error(%v)", _updateUserStatus, err)
err = errors.WithStack(err)
return
}
return
}
// TxUpdateUserPayType updates pay type of user.
func (d *Dao) TxUpdateUserPayType(ctx context.Context, tx *xsql.Tx, ui *model.UserInfo) (err error) {
if _, err = tx.Exec(_updateUserPayType, ui.PayType, ui.Mid, ui.Ver); err != nil {
log.Error("tx.Exec(%s) error(%v)", _updateUserPayType, err)
err = errors.WithStack(err)
return
}
return
}