package task import ( "go_dreamfactory/comm" "go_dreamfactory/lego/sys/log" "go_dreamfactory/pb" "go_dreamfactory/utils" "google.golang.org/protobuf/proto" ) //领取 func (this *apiComp) ReceiveCheck(session comm.IUserSession, req *pb.TaskReceiveReq) (code pb.ErrorCode) { if req.TaskTag == 0 || req.Id == "" { code = pb.ErrorCode_ReqParameterError } return } func (this *apiComp) Receive(session comm.IUserSession, req *pb.TaskReceiveReq) (code pb.ErrorCode, data proto.Message) { if code = this.ReceiveCheck(session, req); code != pb.ErrorCode_Success { return } resp := &pb.TaskReceiveResp{} defer func() { err := session.SendMsg(string(this.moduleTask.GetType()), TaskSubTypeList, resp) if err != nil { code = pb.ErrorCode_SystemError } utils.TraceFunc(session.GetUserId(), string(this.moduleTask.GetType()), TaskSubTypeList, req, resp) }() userTask := this.moduleTask.modelTask.getUserTask(session.GetUserId(), comm.TaskTag(req.TaskTag), req.Id) if userTask != nil { conf, err := this.moduleTask.configure.getTaskById(userTask.TaskId) if err != nil { log.Errorf("get task config err:%v", err) return } //奖励 if code = this.moduleTask.CheckConsumeRes(session.GetUserId(), conf.Reword); code != pb.ErrorCode_Success { return } //更新用户领取状态 update := map[string]interface{}{ "received": 1, } if err := this.moduleTask.modelTask.modifyUserTask(session.GetUserId(), comm.TaskTag(conf.IdTag), userTask.Id, update); err != nil { code = pb.ErrorCode_DBError return } resp.TaskId = userTask.TaskId } return }