From f9f521c6f95bec542a1b6a5ba4cc29c617990e69 Mon Sep 17 00:00:00 2001 From: meixiongfeng <766881921@qq.com> Date: Wed, 14 Dec 2022 17:13:21 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E7=89=B9=E6=9D=83=E5=AD=98?= =?UTF-8?q?=E5=82=A8=E6=97=B6=E6=9C=BA+=20=E8=BF=87=E6=BB=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- modules/privilege/model_vip.go | 26 +++++----- modules/privilege/module.go | 87 +++++++++++++++++++++++----------- 2 files changed, 72 insertions(+), 41 deletions(-) diff --git a/modules/privilege/model_vip.go b/modules/privilege/model_vip.go index 37c813eb4..7d237c5ca 100644 --- a/modules/privilege/model_vip.go +++ b/modules/privilege/model_vip.go @@ -3,12 +3,9 @@ package privilege import ( "go_dreamfactory/comm" "go_dreamfactory/lego/core" - "go_dreamfactory/lego/sys/mgo" "go_dreamfactory/modules" "go_dreamfactory/pb" - "go_dreamfactory/sys/configure" - "go.mongodb.org/mongo-driver/bson/primitive" "go.mongodb.org/mongo-driver/mongo" "go.mongodb.org/mongo-driver/x/bsonx" ) @@ -33,16 +30,8 @@ func (this *ModelVip) Init(service core.IService, module core.IModule, comp core // 获取vip信息 func (this *ModelVip) getVipList(uid string) (vip *pb.DBVip, err error) { vip = &pb.DBVip{} - if err = this.Get(uid, vip); err == mgo.MongodbNil { // 没有数据 直接创建一条 - - vip.Id = primitive.NewObjectID().Hex() - vip.CTime = configure.Now().Unix() - if err = this.Add(uid, vip); err != nil { - this.module.Errorf("err:%v", err) - return - } - err = nil - return vip, err + if err = this.Get(uid, vip); err != nil { + return } return } @@ -51,3 +40,14 @@ func (this *ModelVip) getVipList(uid string) (vip *pb.DBVip, err error) { func (this *ModelVip) modifyVipData(uid string, data map[string]interface{}) error { return this.Change(uid, data) } + +// 增加vip信息 +func (this *ModelVip) addVipData(uId string, vip *pb.DBVip) (err error) { + + if err = this.Add(uId, vip); err != nil { + this.module.Errorf("err:%v", err) + return + } + + return +} diff --git a/modules/privilege/module.go b/modules/privilege/module.go index ea0d69307..e2ab5b60b 100644 --- a/modules/privilege/module.go +++ b/modules/privilege/module.go @@ -4,10 +4,10 @@ import ( "go_dreamfactory/comm" "go_dreamfactory/lego/core" "go_dreamfactory/lego/sys/event" + "go_dreamfactory/lego/sys/mgo" "go_dreamfactory/modules" "go_dreamfactory/pb" "go_dreamfactory/sys/configure" - "go_dreamfactory/sys/db" "go_dreamfactory/utils" "go.mongodb.org/mongo-driver/bson/primitive" @@ -46,6 +46,7 @@ func (this *Privilege) OnInstallComp() { this.api_comp = this.RegisterComp(new(apiComp)).(*apiComp) this.modelPrivilege = this.RegisterComp(new(ModelPrivilege)).(*ModelPrivilege) this.configure = this.RegisterComp(new(configureComp)).(*configureComp) + this.modelVip = this.RegisterComp(new(ModelVip)).(*ModelVip) } func (this *Privilege) Start() (err error) { @@ -61,7 +62,7 @@ func (this *Privilege) Start() (err error) { //Event------------------------------------------------------------------------------------------------------------ func (this *Privilege) EventUserOffline(session comm.IUserSession) { - this.modelPrivilege.DelByUId(session.GetUserId(), db.SetDBMgoLog(false)) + //this.modelPrivilege.DelByUId(session.GetUserId(), db.SetDBMgoLog(false)) } // 购买了一个新的特权 @@ -82,20 +83,23 @@ func (this *Privilege) CreatePrivilegeCard(session comm.IUserSession, cId string } for _, v := range list { if v.CId == cId { + update := map[string]interface{}{} if v.ETime > configure.Now().Unix() { // 加时间 - v.ETime += int64(conf.AssertDay) * 24 * 3600 - } else { // 检测能否续费 - if configure.Now().Unix()-v.ETime <= int64(conf.RenewDay)*24*3600 { - v.ETime = configure.Now().Unix() + int64(conf.AssertDay)*24*3600 - } else { + if v.ETime-configure.Now().Unix() > int64(conf.RenewDay)*24*3600 { + code = pb.ErrorCode_PayRenewTimeErr return } + v.ETime += int64(conf.AssertDay) * 24 * 3600 + update["eTime"] = v.ETime + } else { // 过期了 + v.CTime = configure.Now().Unix() + v.ETime = v.CTime + int64(conf.AssertDay)*24*3600 + update["cTime"] = v.CTime + update["eTime"] = v.ETime } - if err = this.modelPrivilege.Change(session.GetUserId(), map[string]interface{}{ - "eTime": v.ETime, - }); err != nil { + if err = this.modelPrivilege.Change(session.GetUserId(), update); err != nil { this.Errorf("err:%v", err) return } @@ -103,36 +107,55 @@ func (this *Privilege) CreatePrivilegeCard(session comm.IUserSession, cId string break } } - if !bFind { + if !bFind { // 创建一条新的信息 data := &pb.DBPrivilege{ - Id: primitive.NewObjectID().Hex(), - Uid: session.GetUserId(), - CId: cId, - + Id: primitive.NewObjectID().Hex(), + Uid: session.GetUserId(), + CId: cId, CTime: configure.Now().Unix(), - ETime: 0, + ETime: configure.Now().Unix() + int64(conf.AssertDay*24*3600), // 设置过期时间 RewardTime: configure.Now().Unix(), } - data.ETime = configure.Now().Unix() + int64(conf.AssertDay*24*3600) // 设置过期时间 - // 特权插入 vip, err := this.modelVip.getVipList(session.GetUserId()) - if err == nil { + if err != nil && err == mgo.MongodbNil { // 没有数据 直接创建一条 + vip = &pb.DBVip{ + Id: primitive.NewObjectID().Hex(), + Uid: session.GetUserId(), + Reward: map[int32]bool{}, + Privilege: map[int32]*pb.PrivilegeData{}, + CTime: configure.Now().Unix(), + RewardTime: 0, + } + if err = this.modelVip.addVipData(session.GetUserId(), vip); err != nil { + this.Errorf("err:%v", err) + return + } + } + if vip.Id != "" { update := map[string]interface{}{} for _, v := range conf.PrivilegeId { conf := this.configure.GetPrivilegeData(v) if conf != nil { - if _, ok := vip.Privilege[conf.PrivilegeType]; ok { - vip.Privilege[conf.PrivilegeType].PrivilegeID = append(vip.Privilege[conf.PrivilegeType].PrivilegeID, v) + // 过滤重复的特权 + bRepeat := false + for _, v1 := range vip.Privilege[conf.PrivilegeType].PrivilegeID { + if v1 == v { + bRepeat = true + break + } + } + if !bRepeat { + vip.Privilege[conf.PrivilegeType].PrivilegeID = append(vip.Privilege[conf.PrivilegeType].PrivilegeID, v) + } } else { sz := &pb.PrivilegeData{} sz.PrivilegeID = append(sz.PrivilegeID, v) vip.Privilege[conf.PrivilegeType] = sz } } - } update["privilege"] = vip.Privilege this.modelVip.modifyVipData(session.GetUserId(), update) @@ -141,7 +164,7 @@ func (this *Privilege) CreatePrivilegeCard(session comm.IUserSession, cId string this.modelPrivilege.addNewPrivilegeData(session.GetUserId(), data) this.SendDailyMail(session, cId, 1, conf.PType) } - + // 即使奖励 马上发送 if code = this.DispenseRes(session, conf.DisposableReward, true); code != pb.ErrorCode_Success { return } @@ -223,9 +246,6 @@ func (this *Privilege) CheckDailyPrivilegeMail(session comm.IUserSession) { } if v.ETime < configure.Now().Unix() { // 判断当前特权是否过期 - if err := this.modelPrivilege.DelListlds(session.GetUserId(), v.Id); err != nil { - this.Errorf("delete privilege failed:%v", err) - } update := map[string]interface{}{} for _, id := range conf.PrivilegeId { // 找到过期的特权 并删除 data := this.configure.GetPrivilegeData(id) @@ -307,8 +327,19 @@ func (this *Privilege) AddVipData(session comm.IUserSession, oldVip, newVip int3 return } vip, err := this.modelVip.getVipList(session.GetUserId()) - if err != nil { - return + if err != nil && err == mgo.MongodbNil { // 没有数据 直接创建一条 + vip = &pb.DBVip{ + Id: primitive.NewObjectID().Hex(), + Uid: session.GetUserId(), + Reward: map[int32]bool{}, + Privilege: map[int32]*pb.PrivilegeData{}, + CTime: configure.Now().Unix(), + RewardTime: 0, + } + if err = this.modelVip.addVipData(session.GetUserId(), vip); err != nil { + this.Errorf("err:%v", err) + return + } } update := map[string]interface{}{} for i := oldVip; i < newVip; i++ {