From 985abaf91b57f0d6c88008ee3a827ef2089977c6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E6=96=8C?= <259278618@qq.com> Date: Fri, 31 Jul 2026 13:22:09 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E4=BC=9A=E5=91=98=E5=A5=97=E9=A4=90=20?= =?UTF-8?q?DAO=EF=BC=88=E5=BB=BA=E8=A1=A8=20+=20=E6=9C=88=E5=8D=A1/?= =?UTF-8?q?=E5=B9=B4=E5=8D=A1=20seed=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- styleagent/dao/member_plan_dao.go | 68 +++++++++++++++++++++++++++++++ 1 file changed, 68 insertions(+) create mode 100644 styleagent/dao/member_plan_dao.go diff --git a/styleagent/dao/member_plan_dao.go b/styleagent/dao/member_plan_dao.go new file mode 100644 index 0000000..4b8d976 --- /dev/null +++ b/styleagent/dao/member_plan_dao.go @@ -0,0 +1,68 @@ +package dao + +import ( + "context" + + "slogan-agent/styleagent/consts" + "slogan-agent/styleagent/model/entity" + + "github.com/gogf/gf/v2/frame/g" +) + +var MemberPlan = &memberPlanDao{} + +type memberPlanDao struct{} + +func init() { + ctx := context.Background() + _, err := g.DB().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 := g.DB().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 { + _, _ = g.DB().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) + } +} + +func (d *memberPlanDao) ListEnabled(ctx context.Context) ([]*entity.MemberPlan, error) { + var list []*entity.MemberPlan + err := g.DB().Model(consts.TableNameMemberPlan).Ctx(ctx). + Where("status", 1).OrderAsc("sort").OrderAsc("id").Scan(&list) + return list, err +} + +func (d *memberPlanDao) GetOne(ctx context.Context, id int64) (*entity.MemberPlan, error) { + var p *entity.MemberPlan + err := g.DB().Model(consts.TableNameMemberPlan).Ctx(ctx). + Where("id", id).Where("status", 1).Scan(&p) + return p, err +}