派遣优化
This commit is contained in:
parent
db587b9198
commit
f01af25de3
@ -138,7 +138,9 @@ func (d *DispatchView) CreateView(t *model.TestCase) fyne.CanvasObject {
|
||||
if err := service.GetPttService().SendToClient(
|
||||
t.MainType,
|
||||
"weekreceive",
|
||||
&pb.DispatchWeekReciveReq{},
|
||||
&pb.DispatchWeekReciveReq{
|
||||
Idx: 1,
|
||||
},
|
||||
); err != nil {
|
||||
logrus.Error(err)
|
||||
return
|
||||
|
@ -21,7 +21,7 @@ func (a *apiComp) Autoreceive(session comm.IUserSession, req *pb.DispatchAutoRec
|
||||
return
|
||||
}
|
||||
|
||||
tasks := a.module.modelDispatch.replaceFinishedTask(session.GetUserId(), d)
|
||||
tasks, oldTasks := a.module.modelDispatch.replaceFinishedTask(session.GetUserId(), d)
|
||||
|
||||
//更新公告任务
|
||||
if err := a.module.modelDispatch.updateTasks(session.GetUserId(), d.Nb, tasks); err != nil {
|
||||
@ -29,6 +29,19 @@ func (a *apiComp) Autoreceive(session comm.IUserSession, req *pb.DispatchAutoRec
|
||||
return
|
||||
}
|
||||
|
||||
//奖励
|
||||
for _, t := range oldTasks {
|
||||
gd, err := a.module.configure.getDispatchTaskConf(t.TaskId)
|
||||
if err != nil {
|
||||
break
|
||||
}
|
||||
a.module.DispenseRes(session, gd.Reward, true)
|
||||
|
||||
if t.Exaward {
|
||||
a.module.DispenseRes(session, gd.Rewardex, true)
|
||||
}
|
||||
}
|
||||
|
||||
session.SendMsg(string(a.module.GetType()), "autoreceive", rsp)
|
||||
return
|
||||
}
|
||||
|
@ -15,13 +15,16 @@ func (a *apiComp) NoticeCheck(session comm.IUserSession, req *pb.DispatchNoticeR
|
||||
|
||||
func (a *apiComp) Notice(session comm.IUserSession, req *pb.DispatchNoticeReq) (code pb.ErrorCode, data proto.Message) {
|
||||
d := a.module.modelDispatch.getDBDispatch(session.GetUserId())
|
||||
|
||||
if d == nil {
|
||||
code = pb.ErrorCode_DataNotFound
|
||||
return
|
||||
}
|
||||
rsp := &pb.DispatchNoticeResp{}
|
||||
|
||||
if len(d.Nb.Tasks) == 0 {
|
||||
rsp.Dispatch = a.module.modelDispatch.initDispatch(session.GetUserId(), d)
|
||||
} else {
|
||||
a.module.modelDispatch.updateNotice(session.GetUserId(),d)
|
||||
a.module.modelDispatch.updateNotice(session.GetUserId(), d)
|
||||
rsp.Dispatch = d.Nb
|
||||
}
|
||||
|
||||
|
@ -23,11 +23,11 @@ func (a *apiComp) Receive(session comm.IUserSession, req *pb.DispatchReceiveReq)
|
||||
}
|
||||
d := a.module.modelDispatch.getDBDispatch(session.GetUserId())
|
||||
if d == nil {
|
||||
code = pb.ErrorCode_DBError
|
||||
code = pb.ErrorCode_DataNotFound
|
||||
return
|
||||
}
|
||||
|
||||
tasks := a.module.modelDispatch.replaceTask(session.GetUserId(), req.TaskId, d)
|
||||
tasks, oldTaskIds := a.module.modelDispatch.replaceTask(session.GetUserId(), req.TaskId, d)
|
||||
|
||||
//更新公告任务
|
||||
if err := a.module.modelDispatch.updateTasks(session.GetUserId(), d.Nb, tasks); err != nil {
|
||||
@ -36,7 +36,7 @@ func (a *apiComp) Receive(session comm.IUserSession, req *pb.DispatchReceiveReq)
|
||||
}
|
||||
|
||||
//奖励
|
||||
for _, t := range d.Nb.Tasks {
|
||||
for _, t := range oldTaskIds {
|
||||
if t.TaskId == req.TaskId {
|
||||
gd, err := a.module.configure.getDispatchTaskConf(t.TaskId)
|
||||
if err != nil {
|
||||
|
@ -36,12 +36,18 @@ func (a *apiComp) Refresh(session comm.IUserSession, req *pb.DispatchRefreshReq)
|
||||
return
|
||||
}
|
||||
} else {
|
||||
refreshCount := a.module.configure.GetGlobalConf().DispatchRefreshtimes
|
||||
if d.Nb.RefreshCount >= refreshCount {
|
||||
code = pb.ErrorCode_DispatchRefreshMax
|
||||
return
|
||||
}
|
||||
//消耗金币
|
||||
money := a.module.configure.GetGlobalConf().DispatchCheckmoney
|
||||
if code = a.module.CheckRes(session, []*cfg.Gameatn{money}); code != pb.ErrorCode_Success {
|
||||
return
|
||||
}
|
||||
if code = a.module.DispenseRes(session, []*cfg.Gameatn{money}, true); code != pb.ErrorCode_Success {
|
||||
|
||||
if code = a.module.ConsumeRes(session, []*cfg.Gameatn{money}, true); code != pb.ErrorCode_Success {
|
||||
return
|
||||
}
|
||||
if err := a.module.modelDispatch.updateRefreshCount(session.GetUserId(), d.Nb); err != nil {
|
||||
@ -57,6 +63,7 @@ func (a *apiComp) Refresh(session comm.IUserSession, req *pb.DispatchRefreshReq)
|
||||
return
|
||||
}
|
||||
|
||||
a.module.Debug("刷新", log.Field{Key: "taskIds", Value: taskIds})
|
||||
//更新公告任务
|
||||
if err := a.module.modelDispatch.updateTasks(session.GetUserId(), d.Nb, taskIds); err != nil {
|
||||
a.module.Debug("更新公告失败", log.Field{Key: "uid", Value: session.GetUserId()})
|
||||
|
@ -8,13 +8,41 @@ import (
|
||||
)
|
||||
|
||||
func (a *apiComp) WeekreceiveCheck(session comm.IUserSession, req *pb.DispatchWeekReciveReq) (code pb.ErrorCode) {
|
||||
if req.Idx == 0 {
|
||||
code = pb.ErrorCode_ReqParameterError
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
func (a *apiComp) Weekreceive(session comm.IUserSession, req *pb.DispatchWeekReciveReq) (code pb.ErrorCode, data proto.Message) {
|
||||
|
||||
if code = a.WeekreceiveCheck(session, req); code != pb.ErrorCode_Success {
|
||||
return
|
||||
}
|
||||
rsp := &pb.DispatchWeekReciveResp{}
|
||||
|
||||
d := a.module.modelDispatch.getDBDispatch(session.GetUserId())
|
||||
if d == nil {
|
||||
code = pb.ErrorCode_DataNotFound
|
||||
return
|
||||
}
|
||||
|
||||
//派发奖励
|
||||
wr := a.module.configure.GetGlobalConf().DispatchWeektaskreward
|
||||
for i, v := range wr {
|
||||
if req.Idx == int32(i+1) {
|
||||
if d.Nb.WeekCount >= v.N {
|
||||
//更新周任务状态
|
||||
if err := a.module.modelDispatch.updateWeekstatus(session.GetUserId(), req.Idx, d.Nb); err != nil {
|
||||
code = pb.ErrorCode_DBError
|
||||
return
|
||||
}
|
||||
a.module.DispenseRes(session, v.G, true)
|
||||
rsp.Idx = req.Idx
|
||||
break
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
session.SendMsg(string(a.module.GetType()), "weekreceive", rsp)
|
||||
return
|
||||
}
|
||||
|
@ -3,6 +3,7 @@ package dispatch
|
||||
import (
|
||||
"go_dreamfactory/comm"
|
||||
"go_dreamfactory/lego/core"
|
||||
"go_dreamfactory/lego/sys/log"
|
||||
"go_dreamfactory/modules"
|
||||
"go_dreamfactory/pb"
|
||||
"go_dreamfactory/sys/configure"
|
||||
@ -42,7 +43,6 @@ func (this *modelDispatch) initDispatch(uid string, dispatch *pb.DBDispatch) *pb
|
||||
|
||||
freeCount := this.module.configure.GetGlobalConf().DispatchFreecheck
|
||||
ticketCount := this.module.configure.GetGlobalConf().DispatchNumoftimes
|
||||
refreshCount := this.module.configure.GetGlobalConf().DispatchRefreshtimes
|
||||
dis := &pb.DBDispatch{
|
||||
Uid: uid,
|
||||
Ticket: ticketCount,
|
||||
@ -50,7 +50,6 @@ func (this *modelDispatch) initDispatch(uid string, dispatch *pb.DBDispatch) *pb
|
||||
Lv: 1, //公告初始升级
|
||||
FreeCount: freeCount,
|
||||
Tasks: tasks,
|
||||
RefreshCount: refreshCount,
|
||||
},
|
||||
}
|
||||
|
||||
@ -120,14 +119,6 @@ func (this *modelDispatch) getTasksWeight(uid string, noticeLv int32) []int32 {
|
||||
|
||||
// 随机任务
|
||||
func (this *modelDispatch) taskRandom(uid string, dispatch *pb.DBDispatch) (tasks []*pb.DispatchTask, err error) {
|
||||
// dispatch := this.getDBDispatch(uid)
|
||||
// if dispatch == nil {
|
||||
// return nil, errors.New("no data")
|
||||
// }
|
||||
|
||||
// if dispatch.Nb == nil {
|
||||
// return nil, errors.New("notice is nil")
|
||||
// }
|
||||
if dispatch.Nb.Lv == 0 {
|
||||
dispatch.Nb.Lv = 1
|
||||
}
|
||||
@ -178,33 +169,21 @@ func (this *modelDispatch) taskRandom(uid string, dispatch *pb.DBDispatch) (task
|
||||
}
|
||||
} else {
|
||||
tasks = dispatch.Nb.Tasks
|
||||
for i, v := range tasks {
|
||||
var randCount int
|
||||
for i := 0; i < len(tasks); i++ {
|
||||
//只随机未接取的任务
|
||||
if v.Status == 0 {
|
||||
if tasks[i].Status == 0 {
|
||||
//删除
|
||||
tasks = append(tasks[:i], tasks[i+1:]...)
|
||||
|
||||
//追加一条随机任务
|
||||
ids := utils.RandomNumbers(1, len(tIds), 1)
|
||||
if len(ids) <= 0 {
|
||||
continue
|
||||
}
|
||||
taskId := ids[0]
|
||||
taskConf, err := this.module.configure.getDispatchTaskConf(v.TaskId)
|
||||
if err != nil {
|
||||
continue
|
||||
}
|
||||
|
||||
//公告持续截至时间
|
||||
duration := configure.Now().Unix() + int64(taskConf.Taskcd)
|
||||
tasks = append(tasks, &pb.DispatchTask{
|
||||
TaskId: int32(taskId),
|
||||
Duration: duration,
|
||||
})
|
||||
} else {
|
||||
tasks = append(tasks, v)
|
||||
}
|
||||
i--
|
||||
randCount++
|
||||
} else {
|
||||
tasks = append(tasks, tasks[i])
|
||||
}
|
||||
}
|
||||
//追加随机
|
||||
for i := 0; i < randCount; i++ {
|
||||
tasks = append(tasks, this.addRandomTask(uid, dispatch))
|
||||
}
|
||||
}
|
||||
|
||||
@ -226,76 +205,56 @@ func (this *modelDispatch) addRandomTask(uid string, dispatch *pb.DBDispatch) *p
|
||||
|
||||
//公告持续截至时间
|
||||
duration := configure.Now().Unix() + int64(taskConf.Taskcd)
|
||||
// 任务截至时间
|
||||
leftTime := configure.Now().Unix() + int64(taskConf.Tasktime)
|
||||
|
||||
return &pb.DispatchTask{
|
||||
TaskId: int32(taskId),
|
||||
Duration: duration,
|
||||
LeftTime: leftTime,
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// 替换指定的已完成任务
|
||||
func (this *modelDispatch) replaceTask(uid string, taskId int32, dispatch *pb.DBDispatch) (tasks []*pb.DispatchTask) {
|
||||
func (this *modelDispatch) replaceTask(uid string, taskId int32, dispatch *pb.DBDispatch) (tasks []*pb.DispatchTask, oldTaskIds []*pb.DispatchTask) {
|
||||
tasks = dispatch.Nb.Tasks
|
||||
for i, v := range tasks {
|
||||
var randCount int
|
||||
for i := 0; i < len(tasks); i++ {
|
||||
//替换状态是完成的任务
|
||||
if v.Status == 2 {
|
||||
if taskId != v.TaskId {
|
||||
if tasks[i].Status == 2 {
|
||||
if taskId != tasks[i].TaskId {
|
||||
continue
|
||||
}
|
||||
oldTaskIds = append(oldTaskIds, tasks[i])
|
||||
//删除
|
||||
tasks = append(tasks[:i], tasks[i+1:]...)
|
||||
i--
|
||||
|
||||
tasks = append(tasks, this.addRandomTask(uid, dispatch))
|
||||
} else {
|
||||
tasks = append(tasks, v)
|
||||
randCount++
|
||||
}
|
||||
}
|
||||
for i := 0; i < randCount; i++ {
|
||||
tasks = append(tasks, this.addRandomTask(uid, dispatch))
|
||||
}
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
// 替换所有完成的任务
|
||||
func (this *modelDispatch) replaceFinishedTask(uid string, dispatch *pb.DBDispatch) (tasks []*pb.DispatchTask) {
|
||||
|
||||
randomTaskIds := this.getTasksWeight(uid, dispatch.Nb.Lv)
|
||||
|
||||
func (this *modelDispatch) replaceFinishedTask(uid string, dispatch *pb.DBDispatch) (tasks []*pb.DispatchTask, oldtasks []*pb.DispatchTask) {
|
||||
var randCount int
|
||||
for i, v := range dispatch.Nb.Tasks {
|
||||
//替换状态是完成的任务
|
||||
if v.Status == 2 {
|
||||
//删除
|
||||
oldtasks = append(oldtasks, v)
|
||||
dispatch.Nb.Tasks = append(dispatch.Nb.Tasks[:i], dispatch.Nb.Tasks[i+1:]...)
|
||||
i--
|
||||
|
||||
//追加一条随机任务
|
||||
ids := utils.RandomNumbers(1, len(randomTaskIds), 1)
|
||||
if len(ids) <= 0 {
|
||||
continue
|
||||
}
|
||||
taskId := ids[0]
|
||||
taskConf, err := this.module.configure.getDispatchTaskConf(v.TaskId)
|
||||
if err != nil {
|
||||
continue
|
||||
}
|
||||
|
||||
//公告持续截至时间
|
||||
duration := configure.Now().Unix() + int64(taskConf.Taskcd)
|
||||
// 任务截至时间
|
||||
leftTime := configure.Now().Unix() + int64(taskConf.Tasktime)
|
||||
|
||||
tasks = append(tasks, &pb.DispatchTask{
|
||||
TaskId: int32(taskId),
|
||||
Duration: duration,
|
||||
LeftTime: leftTime,
|
||||
})
|
||||
randCount++
|
||||
} else {
|
||||
tasks = append(tasks, v)
|
||||
}
|
||||
}
|
||||
|
||||
for i := 0; i < randCount; i++ {
|
||||
tasks = append(tasks, this.addRandomTask(uid, dispatch))
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
@ -384,9 +343,6 @@ func (this *modelDispatch) dispatch(uid string, taskId int32, heroIds []string,
|
||||
}
|
||||
}
|
||||
|
||||
//周任务数累加
|
||||
disp.Nb.WeekCount++
|
||||
|
||||
update := map[string]interface{}{
|
||||
"nb": disp.Nb,
|
||||
"ticket": disp.Ticket - 1,
|
||||
@ -429,24 +385,14 @@ func (this *modelDispatch) updateTasks(uid string, noticeboard *pb.Noticeboard,
|
||||
|
||||
// 更新公告栏任务
|
||||
func (this *modelDispatch) updateNotice(uid string, dispatch *pb.DBDispatch) error {
|
||||
for i, v := range dispatch.Nb.Tasks {
|
||||
if v.Status == 0 {
|
||||
//判断到期时间
|
||||
if v.Duration != 0 && v.Duration <= configure.Now().Unix() {
|
||||
//替换到期任务
|
||||
// dispatch.Nb.Tasks = this.replaceTask(uid, v.TaskId, dispatch)
|
||||
dispatch.Nb.Tasks = append(dispatch.Nb.Tasks[:i], dispatch.Nb.Tasks[i+1:]...)
|
||||
i--
|
||||
//补一条
|
||||
dispatch.Nb.Tasks = append(dispatch.Nb.Tasks, this.addRandomTask(uid, dispatch))
|
||||
}
|
||||
}
|
||||
|
||||
if v.Status == 1 {
|
||||
if v.LeftTime != 0 && v.LeftTime <= configure.Now().Unix() {
|
||||
var randCount int
|
||||
for i := 0; i < len(dispatch.Nb.Tasks); i++ {
|
||||
if dispatch.Nb.Tasks[i].Status == 1 {
|
||||
if dispatch.Nb.Tasks[i].LeftTime != 0 &&
|
||||
dispatch.Nb.Tasks[i].LeftTime <= configure.Now().Unix() {
|
||||
//更改次任务状态为
|
||||
v.Status = 2 //任务结束
|
||||
v.LeftTime = 0
|
||||
dispatch.Nb.Tasks[i].Status = 2 //任务结束
|
||||
dispatch.Nb.Tasks[i].LeftTime = 0
|
||||
//升级
|
||||
conf, err := this.module.configure.getDispatchLvConf(dispatch.Nb.Lv)
|
||||
if err != nil {
|
||||
@ -460,7 +406,33 @@ func (this *modelDispatch) updateNotice(uid string, dispatch *pb.DBDispatch) err
|
||||
dispatch.Nb.WeekCount++
|
||||
}
|
||||
}
|
||||
|
||||
if dispatch.Nb.Tasks[i].Status == 0 {
|
||||
this.module.Debug("uid", log.Field{Key: "duration", Value: dispatch.Nb.Tasks[i].Duration},
|
||||
log.Field{Key: "now", Value: configure.Now().Unix()})
|
||||
//判断到期时间
|
||||
if dispatch.Nb.Tasks[i].Duration != 0 &&
|
||||
dispatch.Nb.Tasks[i].Duration <= configure.Now().Unix() {
|
||||
//替换到期任务
|
||||
dispatch.Nb.Tasks = append(dispatch.Nb.Tasks[:i], dispatch.Nb.Tasks[i+1:]...)
|
||||
i--
|
||||
randCount++
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
for i := 0; i < randCount; i++ {
|
||||
dispatch.Nb.Tasks = append(dispatch.Nb.Tasks, this.addRandomTask(uid, dispatch))
|
||||
}
|
||||
|
||||
return this.updateTasks(uid, dispatch.Nb, dispatch.Nb.Tasks)
|
||||
}
|
||||
|
||||
// 更新周任务状态
|
||||
func (this *modelDispatch) updateWeekstatus(uid string, idx int32, noticeboard *pb.Noticeboard) error {
|
||||
noticeboard.WeekReceived = append(noticeboard.WeekReceived, idx)
|
||||
update := map[string]interface{}{
|
||||
"nb": noticeboard,
|
||||
}
|
||||
return this.Change(uid, update)
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user