go_dreamfactory/modules/dispatch/api_do.go
2023-03-02 18:54:53 +08:00

54 lines
1.1 KiB
Go

package dispatch
import (
"errors"
"go_dreamfactory/comm"
"go_dreamfactory/pb"
"google.golang.org/protobuf/proto"
)
// 派遣
func (a *apiComp) DoCheck(session comm.IUserSession, req *pb.DispatchDoReq) (code pb.ErrorCode) {
if len(req.HeroIds) == 0 || req.TaskId == 0 {
code = pb.ErrorCode_ReqParameterError
return
}
return
}
func (a *apiComp) Do(session comm.IUserSession, req *pb.DispatchDoReq) (code pb.ErrorCode, data proto.Message) {
if code = a.DoCheck(session, req); code != pb.ErrorCode_Success {
return
}
d := a.module.modelDispatch.getDBDispatch(session.GetUserId())
if d == nil && d.Nb == nil {
code = pb.ErrorCode_DataNotFound
return
}
//校验门票
if d.Ticket <= 0 {
code = pb.ErrorCode_DispatchTicketNoEnough
return
}
rsp := &pb.DispatchDoResp{}
if err := a.module.modelDispatch.dispatch(session.GetUserId(), req.TaskId, req.HeroIds, d); err != nil {
var errCustom = new(comm.CustomError)
if errors.As(err, &errCustom) {
code = errCustom.Code
} else {
code = pb.ErrorCode_DBError
}
return
}
rsp.IsSucc = true
session.SendMsg(string(a.module.GetType()), "do", rsp)
return
}