git-subtree-dir: server git-subtree-mainline:c4e617ada7git-subtree-split:e64421295f
80 lines
2.5 KiB
Go
80 lines
2.5 KiB
Go
package dao
|
|
|
|
import (
|
|
"context"
|
|
|
|
"slogan-agent/styleagent/consts"
|
|
"slogan-agent/styleagent/model/entity"
|
|
|
|
"github.com/gogf/gf/v2/database/gdb"
|
|
"github.com/gogf/gf/v2/frame/g"
|
|
)
|
|
|
|
var MemberPlan = &memberPlanDao{}
|
|
|
|
type memberPlanDao struct{}
|
|
|
|
func init() {
|
|
ctx := context.Background()
|
|
_, err := dbPay().Exec(ctx, `CREATE TABLE IF NOT EXISTS `+consts.TableNameMemberPlan+` (
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
name TEXT NOT NULL DEFAULT '',
|
|
price_fen INTEGER NOT NULL DEFAULT 0,
|
|
duration_days INTEGER NOT NULL DEFAULT 30,
|
|
features TEXT NOT NULL DEFAULT '[]',
|
|
sort INTEGER NOT NULL DEFAULT 0,
|
|
status INTEGER NOT NULL DEFAULT 1,
|
|
created_at DATETIME DEFAULT (datetime('now','localtime'))
|
|
)`)
|
|
if err != nil {
|
|
g.Log().Warningf(ctx, "create member_plan table failed: %v", err)
|
|
}
|
|
seedMemberPlans(ctx)
|
|
}
|
|
|
|
func seedMemberPlans(ctx context.Context) {
|
|
r, err := dbPay().Model(consts.TableNameMemberPlan).Ctx(ctx).Count()
|
|
if err != nil || r > 0 {
|
|
return
|
|
}
|
|
plans := []struct {
|
|
name string
|
|
price int
|
|
days int
|
|
features string
|
|
sort int
|
|
}{
|
|
{"月卡 ¥29.9", 2990, 30, `["effect_unlimited","cps_commission_x15"]`, 1},
|
|
{"年卡 ¥199", 19900, 365, `["effect_unlimited","ai_priority","cps_commission_x15","store_discount"]`, 2},
|
|
}
|
|
for _, p := range plans {
|
|
if _, err := dbPay().Exec(ctx,
|
|
"INSERT INTO "+consts.TableNameMemberPlan+" (name, price_fen, duration_days, features, sort, status, created_at) VALUES (?, ?, ?, ?, ?, 1, datetime('now','localtime'))",
|
|
p.name, p.price, p.days, p.features, p.sort); err != nil {
|
|
g.Log().Warningf(ctx, "seed member_plan %s failed: %v", p.name, err)
|
|
}
|
|
}
|
|
}
|
|
|
|
func (d *memberPlanDao) ListEnabled(ctx context.Context) ([]*entity.MemberPlan, error) {
|
|
var list []*entity.MemberPlan
|
|
err := dbPay().Model(consts.TableNameMemberPlan).Ctx(ctx).
|
|
Where("status", 1).OrderAsc("sort").OrderAsc("id").Scan(&list)
|
|
return list, err
|
|
}
|
|
|
|
// GetOneTx 事务版本:支付回调事务内读取套餐配置
|
|
func (d *memberPlanDao) GetOneTx(ctx context.Context, tx gdb.TX, id int64) (*entity.MemberPlan, error) {
|
|
var p *entity.MemberPlan
|
|
err := tx.Model(consts.TableNameMemberPlan).Ctx(ctx).
|
|
Where("id", id).Where("status", 1).Scan(&p)
|
|
return p, err
|
|
}
|
|
|
|
func (d *memberPlanDao) GetOne(ctx context.Context, id int64) (*entity.MemberPlan, error) {
|
|
var p *entity.MemberPlan
|
|
err := dbPay().Model(consts.TableNameMemberPlan).Ctx(ctx).
|
|
Where("id", id).Where("status", 1).Scan(&p)
|
|
return p, err
|
|
}
|