package SysDictService import ( "context" "dsBaseRpc/Const" "dsBaseRpc/Const/ErrorConst" "dsBaseRpc/RpcService/SysDict/SysDictDao" "dsBaseRpc/RpcService/SysDict/SysDictProto" "dsBaseRpc/Utils/CommonUtil" "dsBaseRpc/Utils/LogUtil" "dsBaseRpc/Utils/SqlKit" "encoding/json" ) type Rpc struct{} //服务对象 //选择单条 func (s *Rpc) GetSysDict(ctx context.Context, in *SysDictProto.ModelArg) (*SysDictProto.Reply, error) { //统一返回的结构体 var reply SysDictProto.Reply //通用获取单条 list := SqlKit.QueryByIds([]string{CommonUtil.ConvertInt32ToString(in.DictId)}, "t_sys_dict") //将结果序列化 reply.Success = true reply.Count = 1 reply.Message = Const.SuccessDataBaseAction reply.List = CommonUtil.SerializeToString(list) return &reply, nil } //分页查询 func (s *Rpc) PageSysDict(ctx context.Context, in *SysDictProto.QueryArg) (*SysDictProto.Reply, error) { //rpc响应 var reply SysDictProto.Reply //是不是分页没有传参数 if in.Page == 0 || in.Limit == 0 { reply.Count = 0 reply.Success = true reply.Message = "输入的Page或Limit参数为零,约定是必须按分页传值的,请检查!" return &reply, nil } list, count, err := SysDictDao.PageSysDict(in) //错误处理 if err != nil { reply.Success = false reply.Message = Const.DataBaseActionError LogUtil.Error(ErrorConst.SqlQueryError, "执行PageSysDict时发生严重错误:"+err.Error()) return &reply, err } reply.Count = count reply.Success = true reply.Message = Const.SuccessDataBaseAction reply.List = CommonUtil.SerializeToString(list) return &reply, nil } //传入一组IDS,返回字典数据列表 func (s *Rpc) PageSysDictMultipleDictCode(ctx context.Context, in *SysDictProto.MultipleQueryArg) (*SysDictProto.Reply, error) { //rpc响应 var reply SysDictProto.Reply list, count, err := SysDictDao.PageSysDictMultipleDictCode(in.DictKind, in.MultipleDictCode) //错误处理 if err != nil { reply.Success = false reply.Message = Const.DataBaseActionError LogUtil.Error(ErrorConst.SqlQueryError, "执行PageSysDictMultipleDictCode时发生严重错误:"+err.Error()) return &reply, err } reply.Count = count reply.Success = true reply.Message = Const.SuccessDataBaseAction reply.List = CommonUtil.SerializeToString(list) return &reply, nil } //获取学段信息 func (s *Rpc) GetStage(ctx context.Context, in *SysDictProto.ModelArg) (*SysDictProto.Reply, error) { //rpc响应 var reply SysDictProto.Reply list, count, err := SysDictDao.GetStage() //错误处理 if err != nil { reply.Success = false reply.Message = Const.DataBaseActionError LogUtil.Error(ErrorConst.SqlQueryError, "执行GetStage时发生严重错误:"+err.Error()) return &reply, err } reply.Count = count reply.Success = true reply.Message = Const.SuccessDataBaseAction reply.List = CommonUtil.SerializeToString(list) return &reply, nil } //根据学段ID获取学科信息 func (s *Rpc) GetSubject(ctx context.Context, in *SysDictProto.GetSubjectArg) (*SysDictProto.Reply, error) { //rpc响应 var reply SysDictProto.Reply list, count, err := SysDictDao.GetSubject(in) //错误处理 if err != nil { reply.Success = false reply.Message = Const.DataBaseActionError LogUtil.Error(ErrorConst.SqlQueryError, "执行GetSubject时发生严重错误:"+err.Error()) return &reply, err } reply.Count = count reply.Success = true reply.Message = Const.SuccessDataBaseAction reply.List = CommonUtil.SerializeToString(list) return &reply, nil } //根据多个dict_kind获取字典信息 func (s *Rpc) GetMultipleDict(ctx context.Context, in *SysDictProto.GetMultipleDictArg) (*SysDictProto.Reply, error) { //rpc响应 var reply SysDictProto.Reply list, _, err := SysDictDao.GetMultipleDict(in) //错误处理 if err != nil { reply.Success = false reply.Message = Const.DataBaseActionError LogUtil.Error(ErrorConst.SqlQueryError, "执行GetMultipleDict时发生严重错误:"+err.Error()) return &reply, err } type dictStruct struct { DictCode string `json:"dict_code"` DictValue string `json:"dict_value"` } var _map=make(map[string][]dictStruct) for i := range list { dictKind :=list[i]["dict_kind"].(string) dictCode :=list[i]["dict_code"].(string) dictValue :=list[i]["dict_value"].(string) var s1 dictStruct s1.DictCode = dictCode s1.DictValue = dictValue _map[dictKind]=append(_map[dictKind],s1) } jsonBytes, _ := json.Marshal(_map) reply.Count = int32(len(_map)) reply.Success = true reply.Message = Const.SuccessDataBaseAction reply.List = string(jsonBytes) return &reply, nil } //根据多个学段ID获取学段名称 func (s *Rpc) GetStageName(ctx context.Context, in *SysDictProto.GetStageNameArg) (*SysDictProto.Reply, error) { //rpc响应 var reply SysDictProto.Reply list, count, err := SysDictDao.GetStageName(in) //错误处理 if err != nil { reply.Success = false reply.Message = Const.DataBaseActionError LogUtil.Error(ErrorConst.SqlQueryError, "执行GetStageName时发生严重错误:"+err.Error()) return &reply, err } reply.Count = count reply.Success = true reply.Message = Const.SuccessDataBaseAction reply.List = CommonUtil.SerializeToString(list) return &reply, nil } //根据多个学科ID获取学科名称 func (s *Rpc) GetSubjectName(ctx context.Context, in *SysDictProto.GetSubjectNameArg) (*SysDictProto.Reply, error) { //rpc响应 var reply SysDictProto.Reply list, count, err := SysDictDao.GetSubjectName(in) //错误处理 if err != nil { reply.Success = false reply.Message = Const.DataBaseActionError LogUtil.Error(ErrorConst.SqlQueryError, "执行GetSubjectName时发生严重错误:"+err.Error()) return &reply, err } reply.Count = count reply.Success = true reply.Message = Const.SuccessDataBaseAction reply.List = CommonUtil.SerializeToString(list) return &reply, nil }