82 lines
2.7 KiB
Go
82 lines
2.7 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 (
|
|
_getUserContractByMid = "SELECT `id`, `mid`, `contract_id`, `order_no`, `is_deleted`, `ctime`, `mtime` FROM `tv_user_contract` WHERE `mid`=? AND `is_deleted`=0"
|
|
_getUserContractByContractId = "SELECT `id`, `mid`, `contract_id`, `order_no`, `is_deleted`, `ctime`, `mtime` FROM `tv_user_contract` WHERE `contract_id`=? AND `is_deleted`=0"
|
|
|
|
_deleteUserContract = "UPDATE `tv_user_contract` SET `is_deleted`=1 WHERE `id`=?"
|
|
|
|
_insertUserContract = "INSERT INTO tv_user_contract (`mid`, `contract_id`, `order_no`) VALUES (?,?,?)"
|
|
)
|
|
|
|
// UserContractByMid quires one row from tv_user_contract.
|
|
func (d *Dao) UserContractByMid(c context.Context, mid int64) (uc *model.UserContract, err error) {
|
|
row := d.db.QueryRow(c, _getUserContractByMid, mid)
|
|
uc = &model.UserContract{}
|
|
err = row.Scan(&uc.ID, &uc.Mid, &uc.ContractId, &uc.OrderNo, &uc.IsDeleted, &uc.Ctime, &uc.Mtime)
|
|
if err == sql.ErrNoRows {
|
|
return nil, nil
|
|
}
|
|
if err != nil {
|
|
log.Error("rows.Scan(%s) error(%v)", _getUserContractByMid, err)
|
|
err = errors.WithStack(err)
|
|
return nil, err
|
|
}
|
|
return uc, nil
|
|
}
|
|
|
|
// UserContractByContractId quires one row from tv_user_contract.
|
|
func (d *Dao) UserContractByContractId(c context.Context, contractId string) (uc *model.UserContract, err error) {
|
|
row := d.db.QueryRow(c, _getUserContractByContractId, contractId)
|
|
uc = &model.UserContract{}
|
|
err = row.Scan(&uc.ID, &uc.Mid, &uc.ContractId, &uc.OrderNo, &uc.IsDeleted, &uc.Ctime, &uc.Mtime)
|
|
if err == sql.ErrNoRows {
|
|
return nil, nil
|
|
}
|
|
if err != nil {
|
|
log.Error("rows.Scan(%s) error(%v)", _getUserContractByContractId, err)
|
|
err = errors.WithStack(err)
|
|
return nil, err
|
|
}
|
|
return uc, nil
|
|
}
|
|
|
|
// TxDeleteUserContract deletes one user contract record.
|
|
func (d *Dao) TxDeleteUserContract(ctx context.Context, tx *xsql.Tx, id int32) (err error) {
|
|
if _, err = tx.Exec(_deleteUserContract, id); err != nil {
|
|
log.Error("rows.Scan(%s) error(%v)", _deleteUserContract, err)
|
|
err = errors.WithStack(err)
|
|
return
|
|
}
|
|
return
|
|
}
|
|
|
|
// TxInsertUserContract insert one row into tv_user_contract.
|
|
func (d *Dao) TxInsertUserContract(ctx context.Context, tx *xsql.Tx, uc *model.UserContract) (id int64, err error) {
|
|
var (
|
|
res sql.Result
|
|
)
|
|
if res, err = tx.Exec(_insertUserContract, uc.Mid, uc.ContractId, uc.OrderNo); err != nil {
|
|
log.Error("d.TxInsertUserContract(%+v) err(%+v)", uc, err)
|
|
err = errors.WithStack(err)
|
|
return
|
|
}
|
|
if id, err = res.LastInsertId(); err != nil {
|
|
log.Error("d.TxInsertUserContract(%+v) err(%+v)", uc, err)
|
|
err = errors.WithStack(err)
|
|
return
|
|
}
|
|
return
|
|
}
|