99 lines
2.7 KiB
Go
99 lines
2.7 KiB
Go
package mainline
|
|
|
|
import (
|
|
"fmt"
|
|
"go_dreamfactory/comm"
|
|
"go_dreamfactory/pb"
|
|
cfg "go_dreamfactory/sys/configure/structs"
|
|
)
|
|
|
|
// 参数校验
|
|
func (this *apiComp) TaskChapteRewardCheck(session comm.IUserSession, req *pb.MainlineTaskChapteRewardReq) (errdata *pb.ErrorData) {
|
|
|
|
return
|
|
}
|
|
|
|
// 章节任务奖励领取
|
|
func (this *apiComp) TaskChapteReward(session comm.IUserSession, req *pb.MainlineTaskChapteRewardReq) (errdata *pb.ErrorData) {
|
|
var (
|
|
dtask *pb.DBMainTask
|
|
conf *cfg.GameMainChapterData
|
|
|
|
award []*pb.UserAtno
|
|
err error
|
|
)
|
|
if errdata = this.TaskChapteRewardCheck(session, req); errdata != nil {
|
|
return
|
|
}
|
|
|
|
if conf, err = this.module.configure.GetMainChapterConf(req.Chapteid); err != nil {
|
|
errdata = &pb.ErrorData{
|
|
Code: pb.ErrorCode_DBError,
|
|
Title: pb.ErrorCode_DBError.ToString(),
|
|
Message: err.Error(),
|
|
}
|
|
return
|
|
}
|
|
if dtask, err = this.module.modelTask.getUserDTasks(session.GetUserId()); err != nil {
|
|
errdata = &pb.ErrorData{
|
|
Code: pb.ErrorCode_DBError,
|
|
Title: pb.ErrorCode_DBError.ToString(),
|
|
Message: err.Error(),
|
|
}
|
|
return
|
|
}
|
|
|
|
if _, ok := dtask.Reward[req.Chapteid]; ok {
|
|
errdata = &pb.ErrorData{
|
|
Code: pb.ErrorCode_ReqParameterError,
|
|
Title: pb.ErrorCode_ReqParameterError.ToString(),
|
|
Message: fmt.Sprintf("Chapteid %d received", req.Chapteid),
|
|
}
|
|
return
|
|
}
|
|
if taskids := this.module.configure.getgroupTasks(req.Chapteid); len(taskids) > 0 {
|
|
for _, v := range taskids {
|
|
if progress, err := this.module.ModuleBuried.CheckCondition(session.GetUserId(), v.Taskid); err == nil {
|
|
for _, v := range progress {
|
|
if v.State == pb.BuriedItemFinishState_buried_unfinish {
|
|
errdata = &pb.ErrorData{
|
|
Code: pb.ErrorCode_ReqParameterError,
|
|
Title: pb.ErrorCode_ReqParameterError.ToString(),
|
|
Message: "task no finish",
|
|
}
|
|
return
|
|
}
|
|
}
|
|
} else {
|
|
errdata = &pb.ErrorData{
|
|
Code: pb.ErrorCode_ExternalModule,
|
|
Title: pb.ErrorCode_ExternalModule.ToString(),
|
|
Message: comm.NewExternalModuleErr("Buried", "CheckCondition", v.Taskid).Error(),
|
|
}
|
|
return
|
|
}
|
|
}
|
|
} else { // 配置出错
|
|
errdata = &pb.ErrorData{
|
|
Code: pb.ErrorCode_ReqParameterError,
|
|
Title: pb.ErrorCode_ReqParameterError.ToString(),
|
|
Message: fmt.Sprintf("getgroupTasks %d err", req.Chapteid),
|
|
}
|
|
return
|
|
}
|
|
|
|
if errdata, award = this.module.DispenseAtno(session, []*cfg.Gameatn{conf.Reward}, true); errdata != nil {
|
|
return
|
|
}
|
|
|
|
dtask.Reward[req.Chapteid] = true // 更新数据
|
|
this.module.modelTask.Change(session.GetUserId(), map[string]interface{}{
|
|
"reward": dtask.Reward,
|
|
})
|
|
session.SendMsg(string(this.module.GetType()), "taskreceive", &pb.MainlineTaskChapteRewardResp{
|
|
Task: dtask,
|
|
Award: award,
|
|
})
|
|
return
|
|
}
|