package BaseMenuService import ( "context" "dsBaseRpc/Const" "dsBaseRpc/Const/ErrorConst" "dsBaseRpc/RpcService/BaseClass/BaseClassDao" "dsBaseRpc/RpcService/BaseClass/BaseClassProto" "dsBaseRpc/RpcService/BaseMenu/BaseMenuDao" "dsBaseRpc/RpcService/BaseMenu/BaseMenuProto" "dsBaseRpc/RpcService/BaseStudent/BaseStudentDao" "dsBaseRpc/RpcService/BaseStudent/BaseStudentProto" "dsBaseRpc/Utils/CommonUtil" "dsBaseRpc/Utils/LogUtil" "dsBaseRpc/Utils/SqlKit" "dsBaseRpc/models" "fmt" ) type Rpc struct{} //服务对象 //选择单条 func (s *Rpc) GetBaseMenu(ctx context.Context, in *BaseMenuProto.ModelArg) (*BaseMenuProto.Reply, error) { //异常处理 defer func() { if err := recover(); err != nil { fmt.Printf("%s\n", err) } }() //rpc响应 var reply BaseMenuProto.Reply //通用获取单条 list := SqlKit.QueryByIds([]string{in.MenuId}, "t_base_menu") //将结果序列化 reply.Success = true reply.Count = 1 reply.Message = Const.SuccessDataBaseAction reply.List = CommonUtil.SerializeToString(list) return &reply, nil } //增加 func (s *Rpc) AddBaseMenu(ctx context.Context, in *BaseMenuProto.ModelArg) (*BaseMenuProto.Reply, error) { //异常处理 defer func() { if err := recover(); err != nil { fmt.Printf("%s\n", err) } }() //rpc响应 var reply BaseMenuProto.Reply //调用dao model := new(models.TBaseMenu) //增加 _, err := BaseMenuDao.AddBaseMenu(in) if err != nil { reply.Success = false reply.Message = Const.DataBaseActionError LogUtil.Error(ErrorConst.SqlUpdateError, "执行AddBaseMenu时发生严重错误:"+err.Error()) } else { reply.Success = true reply.Message = Const.SuccessDataBaseAction } return &reply, err } //删除 func (s *Rpc) DeleteBaseMenu(ctx context.Context, in *BaseMenuProto.DeleteIdsArg) (*BaseMenuProto.Reply, error) { //异常处理 defer func() { if err := recover(); err != nil { fmt.Printf("%s\n", err) } }() //rpc响应 var reply BaseMenuProto.Reply //判断班级下是不是存在可用的学生? for i := range in.Ids { var inStudent BaseStudentProto.QueryArg inStudent.Page = 1 inStudent.Limit = 1 inStudent.Xm = "" inStudent.ClassId = in.Ids[i] _, count, err := BaseStudentDao.PageBaseStudent(&inStudent) if err != nil { LogUtil.Error(ErrorConst.SqlUpdateError, "执行PageBaseStudent时发生严重错误:"+err.Error()) reply.Success = false reply.Message = Const.DataBaseActionError return &reply, err } if count > 0 { reply.Success = false reply.Message = "班级下存在可用的学生,无法删除!" return &reply, err } } //调用通用删除命令进行删除 err := SqlKit.DeleteIds("t_base_class", in.Ids) //错误处理 if err != nil { LogUtil.Error(ErrorConst.SqlUpdateError, "执行DeleteBaseClass时发生严重错误:"+err.Error()) reply.Success = false reply.Message = Const.DataBaseActionError return &reply, err } //记录日志 ms, err := BaseClassDao.GetByIds(in.Ids) if err != nil { LogUtil.Error(ErrorConst.SqlUpdateError, "执行FindModelsByIds时发生严重错误:"+err.Error()) reply.Success = false reply.Message = Const.DataBaseActionError return &reply, err } err = BaseClassDao.ActionLog(ms, Const.ActionDelete, in.ActionPersonId, in.ActionIpAddress) if err != nil { reply.Success = false reply.Message = Const.DataBaseActionError LogUtil.Error(ErrorConst.SqlUpdateError, "执行ActionLog时发生严重错误:"+err.Error()) } reply.Success = true reply.Message = Const.SuccessDataBaseAction return &reply, err } //修改 func (s *Rpc) UpdateBaseMenu(ctx context.Context, in *BaseMenuProto.ModelArg) (*BaseMenuProto.Reply, error) { //异常处理 defer func() { if err := recover(); err != nil { fmt.Printf("%s\n", err) } }() //rpc响应 var reply BaseClassProto.Reply //修改 model := new(models.TBaseClass) model.ClassId = in.ClassId model.ClassAlias = in.ClassAlias model.TeacherId = in.TeacherId _, err := BaseClassDao.UpdateBaseClass(*model, in.ForceUpdateFields) //错误处理 if err != nil { reply.Success = false reply.Message = Const.DataBaseActionError LogUtil.Error(ErrorConst.SqlUpdateError, "执行UpdateBaseClass时发生严重错误:"+err.Error()) return &reply, err } //记录日志 ms, err := BaseClassDao.GetByIds([]string{in.ClassId}) if err != nil { LogUtil.Error(ErrorConst.SqlUpdateError, "执行FindModelsByIds时发生严重错误:"+err.Error()) reply.Success = false reply.Message = Const.DataBaseActionError return &reply, err } err = BaseClassDao.ActionLog(ms, Const.ActionUpdate, in.ActionPersonId, in.ActionIpAddress) if err != nil { reply.Success = false reply.Message = Const.DataBaseActionError LogUtil.Error(ErrorConst.SqlUpdateError, "执行ActionLog时发生严重错误:"+err.Error()) } reply.Success = true reply.Message = Const.SuccessDataBaseAction return &reply, nil } //分页查询 func (s *Rpc) PageBaseMenu(ctx context.Context, in *BaseMenuProto.QueryArg) (*BaseMenuProto.Reply, error) { //异常处理 defer func() { if err := recover(); err != nil { fmt.Printf("%s\n", err) } }() //rpc响应 var reply BaseClassProto.Reply list, count, err := BaseClassDao.PageBaseClass(in) //错误处理 if err != nil { reply.Success = false reply.Message = Const.DataBaseActionError LogUtil.Error(ErrorConst.SqlQueryError, "执行PageBaseClass时发生严重错误:"+err.Error()) return &reply, err } reply.Count = count reply.Success = true reply.Message = Const.SuccessDataBaseAction reply.List = CommonUtil.SerializeToString(list) return &reply, nil }