bilibili-backup/app/admin/main/vip/dao/privilege.go
2019-04-22 02:59:20 +00:00

145 lines
3.8 KiB
Go

package dao
import (
"context"
xsql "database/sql"
"go-common/app/admin/main/vip/model"
"github.com/jinzhu/gorm"
"github.com/pkg/errors"
)
const (
_vipPrivileges = "vip_privileges"
_vipPrivilegesResources = "vip_privileges_resources"
updateOrderSQL = "UPDATE vip_privileges a, vip_privileges b SET a.order_num = b.order_num, b.order_num = a.order_num WHERE a.id = ? AND b.id = ?;"
)
// PrivilegeList query .
func (d *Dao) PrivilegeList(c context.Context, langType int8) (res []*model.Privilege, err error) {
db := d.vip.Table(_vipPrivileges).Where("deleted=0 AND lang_type=?", langType).Order("order_num ASC")
if err := db.Find(&res).Error; err != nil {
return nil, err
}
return
}
// PrivilegeResourcesList query privilege resources .
func (d *Dao) PrivilegeResourcesList(c context.Context) (res []*model.PrivilegeResources, err error) {
db := d.vip.Table(_vipPrivilegesResources)
if err := db.Find(&res).Error; err != nil {
return nil, err
}
return
}
// UpdateStatePrivilege update state privilege.
func (d *Dao) UpdateStatePrivilege(c context.Context, p *model.Privilege) (a int64, err error) {
stage := map[string]interface{}{
"state": p.State,
}
db := d.vip.Table(_vipPrivileges).Where("id = ?", p.ID).Updates(stage)
if err = db.Error; err != nil {
return
}
a = db.RowsAffected
return
}
// DeletePrivilege dekete privilege.
func (d *Dao) DeletePrivilege(c context.Context, id int64) (a int64, err error) {
stage := map[string]interface{}{
"deleted": 1,
}
db := d.vip.Table(_vipPrivileges).Where("id = ?", id).Updates(stage)
if err = db.Error; err != nil {
return
}
a = db.RowsAffected
return
}
// AddPrivilege add privilege.
func (d *Dao) AddPrivilege(tx *gorm.DB, ps *model.Privilege) (id int64, err error) {
db := tx.Table(_vipPrivileges).Save(ps)
if err = db.Error; err != nil {
return
}
id = ps.ID
return
}
// MaxOrder max priivilege order.
func (d *Dao) MaxOrder(c context.Context) (order int64, err error) {
p := new(model.Privilege)
db := d.vip.Table(_vipPrivileges).Order("order_num DESC").First(&p)
if err = db.Error; err != nil {
return
}
return p.Order, err
}
// AddPrivilegeResources add privilege resources.
func (d *Dao) AddPrivilegeResources(tx *gorm.DB, p *model.PrivilegeResources) (a int64, err error) {
db := tx.Table(_vipPrivilegesResources).Save(p)
if err = db.Error; err != nil {
return
}
a = db.RowsAffected
return
}
// UpdatePrivilege update privilege .
func (d *Dao) UpdatePrivilege(tx *gorm.DB, ps *model.Privilege) (a int64, err error) {
val := map[string]interface{}{
"privileges_name": ps.Name,
"title": ps.Title,
"explains": ps.Explain,
"privileges_type": ps.Type,
"operator": ps.Operator,
}
if ps.IconURL != "" {
val["icon_url"] = ps.IconURL
}
if ps.IconGrayURL != "" {
val["icon_gray_url"] = ps.IconGrayURL
}
db := tx.Table(_vipPrivileges).Where("id = ?", ps.ID).Updates(val)
if err = db.Error; err != nil {
return
}
a = db.RowsAffected
return
}
// UpdatePrivilegeResources update privilege resources .
func (d *Dao) UpdatePrivilegeResources(tx *gorm.DB, ps *model.PrivilegeResources) (aff int64, err error) {
stage := map[string]interface{}{
"link": ps.Link,
}
if ps.ImageURL != "" {
stage["image_url"] = ps.ImageURL
}
db := tx.Table(_vipPrivilegesResources).Where("pid = ? AND resources_type = ?", ps.PID, ps.Type).Updates(stage)
if err = db.Error; err != nil {
return
}
aff = db.RowsAffected
return
}
// UpdateOrder update privilege order.
func (d *Dao) UpdateOrder(c context.Context, aid, bid int64) (a int64, err error) {
var res xsql.Result
if res, err = d.db.Exec(c, updateOrderSQL, aid, bid); err != nil {
err = errors.WithStack(err)
return
}
if a, err = res.RowsAffected(); err != nil {
err = errors.WithStack(err)
return
}
return
}