package SysLoginpersonService import ( "context" "dsBaseRpc/Const" "dsBaseRpc/Const/ErrorConst" "dsBaseRpc/RpcService/SysLoginperson/SysLoginpersonDao" "dsBaseRpc/RpcService/SysLoginperson/SysLoginpersonProto" "dsBaseRpc/Utils/CommonUtil" "dsBaseRpc/Utils/ExcelUtil" "dsBaseRpc/Utils/LdapUtil" "dsBaseRpc/Utils/LogUtil" "dsBaseRpc/Utils/SqlKit" "dsBaseRpc/models" "fmt" ) type Rpc struct{} //服务对象 //选择单条 func (s *Rpc) GetSysLoginperson(ctx context.Context, in *SysLoginpersonProto.ModelArg) (*SysLoginpersonProto.Reply, error) { //异常处理 defer func() { if err := recover(); err != nil { fmt.Printf("%s\n", err) } }() //rpc响应 var reply SysLoginpersonProto.Reply //通用获取单条 list := SqlKit.QueryByIds([]string{in.Id}, "t_sys_loginperson") //将结果序列化 reply.Success = true reply.Count = 1 reply.Message = Const.SuccessDataBaseAction reply.List = CommonUtil.SerializeToString(list) return &reply, nil } //增加 func (s *Rpc) AddSysLoginperson(ctx context.Context, in *SysLoginpersonProto.ModelArg) (*SysLoginpersonProto.Reply, error) { //异常处理 defer func() { if err := recover(); err != nil { fmt.Printf("%s\n", err) } }() //rpc响应 var reply SysLoginpersonProto.Reply _, err := AddLoginperson(in.IdentityId, in.PersonId, in.PersonName) if err != nil { reply.Success = false reply.Message = Const.DataBaseActionError LogUtil.Error(ErrorConst.SqlUpdateError, "执行AddSysLoginperson时发生严重错误:"+err.Error()) } else { reply.Success = true reply.Message = Const.SuccessDataBaseAction } return &reply, err } //删除 func (s *Rpc) DeleteSysLoginperson(ctx context.Context, in *SysLoginpersonProto.DeleteIdsArg) (*SysLoginpersonProto.Reply, error) { //异常处理 defer func() { if err := recover(); err != nil { fmt.Printf("%s\n", err) } }() //rpc响应 var reply SysLoginpersonProto.Reply //调用通用删除命令进行删除 err := SqlKit.DeleteIds("t_sys_loginperson", in.Ids) //错误处理 if err != nil { LogUtil.Error(ErrorConst.SqlUpdateError, "执行DeleteSysLoginperson时发生严重错误:"+err.Error()) reply.Success = false reply.Message = Const.DataBaseActionError return &reply, err } reply.Success = true reply.Message = Const.SuccessDataBaseAction return &reply, err } //修改 func (s *Rpc) UpdateSysLoginperson(ctx context.Context, in *SysLoginpersonProto.ModelArg) (*SysLoginpersonProto.Reply, error) { //异常处理 defer func() { if err := recover(); err != nil { fmt.Printf("%s\n", err) } }() //rpc响应 var reply SysLoginpersonProto.Reply //修改 model := new(models.TSysLoginperson) model.Id = in.LoginName model.Pwd = LdapUtil.GetLdapPassword(in.Pwd) //注意这里修改的密码是加密后的密码 _, err := SysLoginpersonDao.UpdateSysLoginPerson(*model) //错误处理 if err != nil { reply.Success = false reply.Message = Const.DataBaseActionError LogUtil.Error(ErrorConst.SqlUpdateError, "执行UpdateSysLoginperson时发生严重错误:"+err.Error()) return &reply, err } reply.Success = true reply.Message = Const.SuccessDataBaseAction return &reply, nil } //分页查询(单位管理员) func (s *Rpc) PageSysLoginperson(ctx context.Context, in *SysLoginpersonProto.QueryArg) (*SysLoginpersonProto.Reply, error) { //异常处理 defer func() { if err := recover(); err != nil { fmt.Printf("%s\n", err) } }() //rpc响应 var reply SysLoginpersonProto.Reply list, count, err := SysLoginpersonDao.PageSysLoginPerson(in) //错误处理 if err != nil { reply.Success = false reply.Message = Const.DataBaseActionError LogUtil.Error(ErrorConst.SqlQueryError, "执行PageSysLoginperson时发生严重错误:"+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) PageAreaManager(ctx context.Context, in *SysLoginpersonProto.AreaManagerArg) (*SysLoginpersonProto.Reply, error) { //异常处理 defer func() { if err := recover(); err != nil { fmt.Printf("%s\n", err) } }() //rpc响应 var reply SysLoginpersonProto.Reply list, count, err := SysLoginpersonDao.PageAreaManager(in) //错误处理 if err != nil { reply.Success = false reply.Message = Const.DataBaseActionError LogUtil.Error(ErrorConst.SqlQueryError, "执行PageAreaManager时发生严重错误:"+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) ResetPassWord(ctx context.Context, in *SysLoginpersonProto.ResetPassWordArg) (*SysLoginpersonProto.Reply, error) { //异常处理 defer func() { if err := recover(); err != nil { fmt.Printf("%s\n", err) } }() //rpc响应 var reply SysLoginpersonProto.Reply //修改 err := SysLoginpersonDao.ResetPassWord(in.Ids) //错误处理 if err != nil { reply.Success = false reply.Message = Const.DataBaseActionError LogUtil.Error(ErrorConst.SqlUpdateError, "执行ResetPassWord时发生严重错误:"+err.Error()) return &reply, err } reply.Success = true reply.Message = Const.SuccessDataBaseAction return &reply, nil } //启用账号 func (s *Rpc) EnableAccount(ctx context.Context, in *SysLoginpersonProto.AccountArg) (*SysLoginpersonProto.Reply, error) { //异常处理 defer func() { if err := recover(); err != nil { fmt.Printf("%s\n", err) } }() //rpc响应 var reply SysLoginpersonProto.Reply //修改 err := SysLoginpersonDao.EnableDisableAccount(in.PersonIds, 1) //错误处理 if err != nil { reply.Success = false reply.Message = Const.DataBaseActionError LogUtil.Error(ErrorConst.SqlUpdateError, "执行EnableAccount时发生严重错误:"+err.Error()) return &reply, err } reply.Success = true reply.Message = Const.SuccessDataBaseAction return &reply, nil } //禁用账号 func (s *Rpc) DisableAccount(ctx context.Context, in *SysLoginpersonProto.AccountArg) (*SysLoginpersonProto.Reply, error) { //异常处理 defer func() { if err := recover(); err != nil { fmt.Printf("%s\n", err) } }() //rpc响应 var reply SysLoginpersonProto.Reply //修改 err := SysLoginpersonDao.EnableDisableAccount(in.PersonIds, -1) //错误处理 if err != nil { reply.Success = false reply.Message = Const.DataBaseActionError LogUtil.Error(ErrorConst.SqlUpdateError, "执行DisableAccount时发生严重错误:"+err.Error()) return &reply, err } reply.Success = true reply.Message = Const.SuccessDataBaseAction return &reply, nil } //导出单位管理员到EXCEL func (s *Rpc) PageSysLoginpersonExcel(ctx context.Context, in *SysLoginpersonProto.QueryArg) (*SysLoginpersonProto.Reply, error) { //异常处理 defer func() { if err := recover(); err != nil { fmt.Printf("%s\n", err) } }() //rpc响应 var reply SysLoginpersonProto.Reply //重新设置长度和显示的页 in.Page = 1 in.Limit = Const.Int32Max list, _, err := SysLoginpersonDao.PageSysLoginPerson(in) //错误处理 if err != nil { reply.Success = false reply.Message = Const.DataBaseActionError LogUtil.Error(ErrorConst.SqlQueryError, "执行PageSysLoginperson时发生严重错误:"+err.Error()) return &reply, err } //6位,我们需要取最后两位 //配置文件 jsonTemplate := "sysLoginperson_account_city.json" //如果是县区,那么修改一下配置文件名称 if in.AreaCode[4:6] != "00" { jsonTemplate = "sysLoginperson_account_district.json" } //2、导出 TargetPath := CommonUtil.GetExportExcelFilePath() ExcelUtil.ExportExcel(jsonTemplate, list, TargetPath) reply.ExcelPath = TargetPath return &reply, nil } //导出地区管理员到EXCEL func (s *Rpc) PageAreaManagerExcel(ctx context.Context, in *SysLoginpersonProto.AreaManagerArg) (*SysLoginpersonProto.Reply, error) { //异常处理 defer func() { if err := recover(); err != nil { fmt.Printf("%s\n", err) } }() //rpc响应 var reply SysLoginpersonProto.Reply //重新设置长度和显示的页 in.Page = 1 in.Limit = Const.Int32Max list, _, err := SysLoginpersonDao.PageAreaManager(in) //错误处理 if err != nil { reply.Success = false reply.Message = Const.DataBaseActionError LogUtil.Error(ErrorConst.SqlQueryError, "执行PageAreaManager时发生严重错误:"+err.Error()) return &reply, err } //1、配置文件 jsonTemplate := "areaManager_account.json" //2、导出 TargetPath := CommonUtil.GetExportExcelFilePath() ExcelUtil.ExportExcel(jsonTemplate, list, TargetPath) reply.ExcelPath = TargetPath return &reply, nil } //更改人员登录密码 func (s *Rpc) UpdateLoginPassWord(ctx context.Context, in *SysLoginpersonProto.UpdateLoginPassWordArg) (*SysLoginpersonProto.Reply, error) { //异常处理 defer func() { if err := recover(); err != nil { fmt.Printf("%s\n", err) } }() //rpc响应 var reply SysLoginpersonProto.Reply //密码强度检查 if !CommonUtil.CheckPasswordLevel(in.NewPassWord) { reply.Success = false reply.Message = "输入的密码不符合等级保护要求,必须是字⺟⼤⼩写+数字+符号,8位以上!" return &reply, nil } //(1)判断旧密码是不是正确 success, err := SysLoginpersonDao.CheckPwd(in.IdentityId, in.PersonId, in.OldPassWord) //错误处理 if err != nil { reply.Success = false reply.Message = Const.DataBaseActionError LogUtil.Error(ErrorConst.SqlQueryError, "执行UpdateLoginPassWord时发生严重错误:"+err.Error()) return &reply, err } if !success { reply.Success = false reply.Message = "输入的密码不正确!" return &reply, nil } //(2)修改新密码 success, err = SysLoginpersonDao.UpdatePwd(in.IdentityId, in.PersonId, in.NewPassWord) //错误处理 if err != nil { reply.Success = false reply.Message = Const.DataBaseActionError LogUtil.Error(ErrorConst.SqlQueryError, "执行UpdatePwd时发生严重错误:"+err.Error()) return &reply, err } reply.Success = success reply.Message = Const.SuccessDataBaseAction return &reply, nil } //获取已绑定的第三方授权 func (s *Rpc) GetBindAuthorization(ctx context.Context, in *SysLoginpersonProto.GetBindAuthorizationArg) (*SysLoginpersonProto.Reply, error) { //异常处理 defer func() { if err := recover(); err != nil { fmt.Printf("%s\n", err) } }() //rpc响应 var reply SysLoginpersonProto.Reply //通用获取单条 list, _ := SysLoginpersonDao.GetBindAuthorization(in.PersonId) if len(list) == 0 { reply.List = "[]" reply.Message = "没有找到相应的人员信息" reply.Success = true return &reply, nil } wxOpenId := list[0]["wx_open_id"].(string) if len(wxOpenId) > 0 { reply.List = "[\"wx\"]" } else { reply.List = "[]" } reply.Message = "获取成功!" reply.Success = true return &reply, nil } //解除绑定第三方授权 func (s *Rpc) UnbindAuthorization(ctx context.Context, in *SysLoginpersonProto.UnbindAuthorizationArg) (*SysLoginpersonProto.Reply, error) { //异常处理 defer func() { if err := recover(); err != nil { fmt.Printf("%s\n", err) } }() //rpc响应 var reply SysLoginpersonProto.Reply //微信 if in.TypeName == "wx" { SysLoginpersonDao.UnbindAuthorization(in.PersonId) } reply.Message = "操作成功!" reply.Success = true return &reply, nil }