You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

398 lines
11 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

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
}