package linestory import ( "go_dreamfactory/comm" "go_dreamfactory/pb" "go.mongodb.org/mongo-driver/bson/primitive" "go.mongodb.org/mongo-driver/mongo" "google.golang.org/protobuf/proto" ) func (this *apiComp) DostartCheck(session comm.IUserSession, req *pb.LinestoryStartReq) (code pb.ErrorCode) { return } func (this *apiComp) Dostart(session comm.IUserSession, req *pb.LinestoryStartReq) (code pb.ErrorCode, data proto.Message) { if code = this.DostartCheck(session, req); code != pb.ErrorCode_Success { return } rsp := &pb.LinestoryStartResp{ JqId: req.JqId, } defer func() { if err := session.SendMsg(string(this.moduleLinestory.GetType()), LinestorySubTypeDostart, rsp); err != nil { code = pb.ErrorCode_SystemError } }() conf := this.moduleLinestory.configure.getLinestoryChapterCfgById(req.JqId) if conf == nil { code = pb.ErrorCode_ConfigNoFound return } module, err := this.service.GetModule(comm.ModuleRtask) if err != nil { code = pb.ErrorCode_SystemError return } if m, ok := module.(comm.IRtask); ok { // 校验限定条件 for _, condiId := range conf.Cond { if code = m.CheckCondi(session.GetUserId(), condiId); code != pb.ErrorCode_Success { return } } } dbLinestory := &pb.DBLinestory{} if err := this.moduleLinestory.modelLinestory.Get(session.GetUserId(), dbLinestory); err != nil { if err == mongo.ErrNoDocuments { //创建任务记录 if err := this.moduleLinestory.modelLinestory.Add(session.GetUserId(), &pb.DBLinestory{ Id: primitive.NewObjectID().Hex(), Uid: session.GetUserId(), JqId: req.JqId, }); err != nil { code = pb.ErrorCode_DBError return } } else { code = pb.ErrorCode_DBError return } } if dbLinestory.Tasks != nil { for k, _ := range dbLinestory.Tasks { rsp.TaskIds = append(rsp.TaskIds, k) } } return }