From 7360720f7e44f4ff034ef6e77656512d40bcc79d Mon Sep 17 00:00:00 2001 From: wh_zcy Date: Fri, 3 Mar 2023 18:03:23 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B4=BE=E9=81=A3=E4=BC=98=E5=8C=962?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- modules/dispatch/api_autoreceive.go | 13 ++++++++++++- modules/dispatch/api_notice.go | 10 ++++++++++ modules/dispatch/api_receive.go | 15 +++++++++++++++ modules/dispatch/model_dispatch.go | 7 ++++--- pb/dispatch_db.pb.go | 14 ++++++++++++-- 5 files changed, 53 insertions(+), 6 deletions(-) diff --git a/modules/dispatch/api_autoreceive.go b/modules/dispatch/api_autoreceive.go index b5a59cf45..246667862 100644 --- a/modules/dispatch/api_autoreceive.go +++ b/modules/dispatch/api_autoreceive.go @@ -13,13 +13,24 @@ func (a *apiComp) AutoreceiveCheck(session comm.IUserSession, req *pb.DispatchAu } func (a *apiComp) Autoreceive(session comm.IUserSession, req *pb.DispatchAutoReceiveReq) (code pb.ErrorCode, data proto.Message) { - rsp := &pb.DispatchAutoReceiveResp{} d := a.module.modelDispatch.getDBDispatch(session.GetUserId()) if d == nil { code = pb.ErrorCode_DataNotFound return } + var flag bool + for _, v := range d.Nb.Tasks { + if v.Status == 2 { + flag = true + break + } + } + + if !flag { + code = pb.ErrorCode_DispatchNoFinished + return + } tasks, oldTasks := a.module.modelDispatch.replaceFinishedTask(session.GetUserId(), d) diff --git a/modules/dispatch/api_notice.go b/modules/dispatch/api_notice.go index 4ce6907da..0bb587ecb 100644 --- a/modules/dispatch/api_notice.go +++ b/modules/dispatch/api_notice.go @@ -3,6 +3,8 @@ package dispatch import ( "go_dreamfactory/comm" "go_dreamfactory/pb" + "go_dreamfactory/sys/configure" + "go_dreamfactory/utils" "google.golang.org/protobuf/proto" ) @@ -24,6 +26,14 @@ func (a *apiComp) Notice(session comm.IUserSession, req *pb.DispatchNoticeReq) ( if len(d.Nb.Tasks) == 0 { rsp.Dispatch = a.module.modelDispatch.initDispatch(session.GetUserId(), d) } else { + //周任务重置 + n := utils.DiffDays(d.Nb.CreateTime, configure.Now().Unix()) + day := a.module.configure.GetGlobalConf().DispatchWeektaskcheck + if int32(n) >= day { + d.Nb.WeekCount = 0 + d.Nb.WeekReceived = []int32{} + } + a.module.modelDispatch.updateNotice(session.GetUserId(), d) rsp.Dispatch = d.Nb } diff --git a/modules/dispatch/api_receive.go b/modules/dispatch/api_receive.go index f3ae8982d..f11d9112b 100644 --- a/modules/dispatch/api_receive.go +++ b/modules/dispatch/api_receive.go @@ -27,6 +27,21 @@ func (a *apiComp) Receive(session comm.IUserSession, req *pb.DispatchReceiveReq) return } + var flag bool + for _, v := range d.Nb.Tasks { + if v.TaskId == req.TaskId { + if v.Status == 2 { + flag = true + break + } + } + } + + if !flag { + code = pb.ErrorCode_DispatchNoFinished + return + } + tasks, oldTaskIds := a.module.modelDispatch.replaceTask(session.GetUserId(), req.TaskId, d) //更新公告任务 diff --git a/modules/dispatch/model_dispatch.go b/modules/dispatch/model_dispatch.go index e10aabf7d..5196a491b 100644 --- a/modules/dispatch/model_dispatch.go +++ b/modules/dispatch/model_dispatch.go @@ -47,9 +47,10 @@ func (this *modelDispatch) initDispatch(uid string, dispatch *pb.DBDispatch) *pb Uid: uid, Ticket: ticketCount, Nb: &pb.Noticeboard{ - Lv: 1, //公告初始升级 - FreeCount: freeCount, - Tasks: tasks, + Lv: 1, //公告初始升级 + FreeCount: freeCount, + Tasks: tasks, + CreateTime: configure.Now().Unix(), }, } diff --git a/pb/dispatch_db.pb.go b/pb/dispatch_db.pb.go index 404de8824..25bee9d07 100644 --- a/pb/dispatch_db.pb.go +++ b/pb/dispatch_db.pb.go @@ -98,6 +98,7 @@ type Noticeboard struct { WeekCount int32 `protobuf:"varint,6,opt,name=weekCount,proto3" json:"weekCount" bson:"weekCount"` //周任务数 TaskCount int32 `protobuf:"varint,7,opt,name=taskCount,proto3" json:"taskCount" bson:"taskCount"` //任务数 WeekReceived []int32 `protobuf:"varint,8,rep,packed,name=weekReceived,proto3" json:"weekReceived" bson:"weekReceived"` ////已领取的周任务索引ID + CreateTime int64 `protobuf:"varint,9,opt,name=createTime,proto3" json:"createTime" bson:"createTime"` //创建时间 } func (x *Noticeboard) Reset() { @@ -188,6 +189,13 @@ func (x *Noticeboard) GetWeekReceived() []int32 { return nil } +func (x *Noticeboard) GetCreateTime() int64 { + if x != nil { + return x.CreateTime + } + return 0 +} + // 派遣任务 type DispatchTask struct { state protoimpl.MessageState @@ -286,7 +294,7 @@ var file_dispatch_dispatch_db_proto_rawDesc = []byte{ 0x6e, 0x62, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x4e, 0x6f, 0x74, 0x69, 0x63, 0x65, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x52, 0x02, 0x6e, 0x62, 0x12, 0x16, 0x0a, 0x06, 0x74, 0x69, 0x63, 0x6b, 0x65, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x74, 0x69, 0x63, 0x6b, - 0x65, 0x74, 0x22, 0x84, 0x02, 0x0a, 0x0b, 0x4e, 0x6f, 0x74, 0x69, 0x63, 0x65, 0x62, 0x6f, 0x61, + 0x65, 0x74, 0x22, 0xa4, 0x02, 0x0a, 0x0b, 0x4e, 0x6f, 0x74, 0x69, 0x63, 0x65, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x6c, 0x76, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x6c, 0x76, 0x12, 0x1e, 0x0a, 0x0a, 0x6e, 0x6f, 0x74, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x6e, 0x6f, 0x74, 0x69, 0x63, 0x65, 0x54, 0x79, @@ -302,7 +310,9 @@ var file_dispatch_dispatch_db_proto_rawDesc = []byte{ 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x74, 0x61, 0x73, 0x6b, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x22, 0x0a, 0x0c, 0x77, 0x65, 0x65, 0x6b, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x18, 0x08, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0c, 0x77, 0x65, 0x65, - 0x6b, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x22, 0xaa, 0x01, 0x0a, 0x0c, 0x44, 0x69, + 0x6b, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x63, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x22, 0xaa, 0x01, 0x0a, 0x0c, 0x44, 0x69, 0x73, 0x70, 0x61, 0x74, 0x63, 0x68, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x16, 0x0a, 0x06, 0x74, 0x61, 0x73, 0x6b, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x74, 0x61, 0x73, 0x6b, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01,