2990 lines
73 KiB
Go
2990 lines
73 KiB
Go
|
package account
|
|||
|
|
|||
|
import (
|
|||
|
"context"
|
|||
|
"dubbo.apache.org/dubbo-go/v3/common/logger"
|
|||
|
"encoding/base64"
|
|||
|
"errors"
|
|||
|
"fmt"
|
|||
|
"github.com/fonchain_enterprise/fonchain-main/api/account"
|
|||
|
"github.com/fonchain_enterprise/fonchain-main/api/department"
|
|||
|
"github.com/fonchain_enterprise/fonchain-main/api/e_card"
|
|||
|
"github.com/fonchain_enterprise/fonchain-main/api/employee"
|
|||
|
"github.com/fonchain_enterprise/fonchain-main/api/position"
|
|||
|
"github.com/fonchain_enterprise/fonchain-main/api/rule"
|
|||
|
"github.com/fonchain_enterprise/fonchain-main/pkg/config"
|
|||
|
"github.com/fonchain_enterprise/fonchain-main/pkg/e"
|
|||
|
"github.com/fonchain_enterprise/fonchain-main/pkg/model/dto"
|
|||
|
"github.com/fonchain_enterprise/fonchain-main/pkg/model/login"
|
|||
|
"github.com/fonchain_enterprise/fonchain-main/pkg/model/query"
|
|||
|
"github.com/fonchain_enterprise/fonchain-main/pkg/model/request"
|
|||
|
"github.com/fonchain_enterprise/fonchain-main/pkg/model/union"
|
|||
|
"github.com/fonchain_enterprise/fonchain-main/pkg/model/vo"
|
|||
|
"github.com/fonchain_enterprise/fonchain-main/pkg/model/vo/turnstile"
|
|||
|
"github.com/fonchain_enterprise/fonchain-main/pkg/serializer"
|
|||
|
"github.com/fonchain_enterprise/fonchain-main/pkg/service"
|
|||
|
"github.com/fonchain_enterprise/fonchain-main/pkg/utils/secret"
|
|||
|
"github.com/fonchain_enterprise/utils/objstorage"
|
|||
|
"github.com/fonchain_enterprise/utils/utils"
|
|||
|
"github.com/gin-gonic/gin"
|
|||
|
"github.com/gin-gonic/gin/binding"
|
|||
|
uuid "github.com/satori/go.uuid"
|
|||
|
"net/http"
|
|||
|
"net/url"
|
|||
|
"strconv"
|
|||
|
"time"
|
|||
|
)
|
|||
|
|
|||
|
// UserRegister 用户注册操作
|
|||
|
func UserRegister(c *gin.Context) {
|
|||
|
var req union.User
|
|||
|
var res *account.RequestStatus
|
|||
|
if err := c.ShouldBindBodyWith(&req, binding.JSON); err != nil {
|
|||
|
service.Error(c, e.InvalidParams, err)
|
|||
|
return
|
|||
|
}
|
|||
|
err, res := UserRegisters(c, req)
|
|||
|
if err != nil && err.Error() == "账号已存在" && req.Source == "exam" {
|
|||
|
handleExistingAccountForExam(c, req)
|
|||
|
service.Success(c, &res)
|
|||
|
return
|
|||
|
}
|
|||
|
if err != nil {
|
|||
|
service.Error(c, e.Error, err)
|
|||
|
return
|
|||
|
}
|
|||
|
service.Success(c, res)
|
|||
|
return
|
|||
|
}
|
|||
|
|
|||
|
func handleExistingAccountForExam(c *gin.Context, req union.User) {
|
|||
|
var Tel account.UsersByTelRequest
|
|||
|
var res account.RequestStatus
|
|||
|
// 初始化 Tels 切片
|
|||
|
Tel.Tels = make([]string, 1)
|
|||
|
// 赋值
|
|||
|
Tel.Tels[0] = req.TelNum
|
|||
|
|
|||
|
// 查询用户信息
|
|||
|
telRes, _ := service.AccountProvider.UsersByTel(c, &Tel)
|
|||
|
|
|||
|
// 更新 res 对象
|
|||
|
res.ID = telRes.Data[0].ID
|
|||
|
res.Status = "success"
|
|||
|
|
|||
|
// 返回成功响应
|
|||
|
service.Success(c, &res)
|
|||
|
return
|
|||
|
}
|
|||
|
|
|||
|
func UserRegisters(c *gin.Context, req union.User) (err error, res *account.RequestStatus) {
|
|||
|
if req.Avatar == "" {
|
|||
|
req.Avatar = "https://dci-file-new.bj.bcebos.com/fonchain-main/test/runtime/image/avatar/40/b8ed6fea-6662-416d-8bb3-1fd8a8197061.jpg"
|
|||
|
}
|
|||
|
if req.Source == "exam" {
|
|||
|
req.PositionUsers = []*position.PositionUser{
|
|||
|
{
|
|||
|
DepartmentName: "考试管理",
|
|||
|
PositionName: "学员",
|
|||
|
},
|
|||
|
}
|
|||
|
req.Password = e.DEFAULT_PWD
|
|||
|
}
|
|||
|
//账号服务
|
|||
|
registRequest := account.RegistRequest{
|
|||
|
Domain: req.Domain,
|
|||
|
NickName: req.NickName,
|
|||
|
TelNum: req.TelNum,
|
|||
|
Password: req.Password,
|
|||
|
JobNum: req.JobNum,
|
|||
|
Status: req.Status,
|
|||
|
Avatar: req.Avatar,
|
|||
|
EnterDate: req.EnterDate,
|
|||
|
Extend: &account.Extend{JumpTo: req.JumpTo},
|
|||
|
RecentImg: req.RecentImg,
|
|||
|
Source: req.Source,
|
|||
|
}
|
|||
|
|
|||
|
if req.Operator != nil {
|
|||
|
registRequest.Operator = req.Operator
|
|||
|
}
|
|||
|
|
|||
|
res, err = service.AccountProvider.Register(c, ®istRequest)
|
|||
|
if err != nil {
|
|||
|
return err, res
|
|||
|
}
|
|||
|
if len(req.PositionUsers) <= 0 {
|
|||
|
return nil, res
|
|||
|
}
|
|||
|
//岗位服务 绑定岗位
|
|||
|
positionReq := &position.BindUserRequest{
|
|||
|
Domain: req.Domain,
|
|||
|
UserID: res.ID,
|
|||
|
UserName: req.NickName,
|
|||
|
Avatar: req.Avatar,
|
|||
|
PositionUsers: req.PositionUsers,
|
|||
|
}
|
|||
|
var err1 error // 声明 err1 变量
|
|||
|
if len(req.PositionUsers) > 0 && req.PositionUsers[0].DepartmentName != "" && req.PositionUsers[0].PositionName != "" {
|
|||
|
_, err1 = service.PositionProvider.BindUserForName(c, positionReq)
|
|||
|
} else {
|
|||
|
_, err1 = service.PositionProvider.BindUser(c, positionReq)
|
|||
|
}
|
|||
|
|
|||
|
if err1 != nil {
|
|||
|
return err1, res
|
|||
|
}
|
|||
|
return err, res
|
|||
|
}
|
|||
|
|
|||
|
// RefreshToken token
|
|||
|
func RefreshToken(c *gin.Context) {
|
|||
|
|
|||
|
var jumpToWhere = "setting"
|
|||
|
var isDriverAuth = false
|
|||
|
var isDriverSupervisorAuth = false
|
|||
|
|
|||
|
var req account.RefreshTokenRequest
|
|||
|
|
|||
|
if err := c.ShouldBindBodyWith(&req, binding.JSON); err != nil {
|
|||
|
service.Error(c, e.InvalidParams, err)
|
|||
|
return
|
|||
|
}
|
|||
|
|
|||
|
req.Ip = c.ClientIP()
|
|||
|
|
|||
|
res, err := service.AccountProvider.RefreshToken(context.Background(), &req)
|
|||
|
|
|||
|
if err != nil {
|
|||
|
c.JSON(e.Success, serializer.Response{
|
|||
|
Code: 201,
|
|||
|
Status: 1,
|
|||
|
Msg: err.Error(),
|
|||
|
Data: nil,
|
|||
|
})
|
|||
|
c.Abort()
|
|||
|
return
|
|||
|
}
|
|||
|
|
|||
|
//获取用户的岗位信息
|
|||
|
uReq := rule.RulesRequest{
|
|||
|
AccountID: res.AccountInfo.ID,
|
|||
|
}
|
|||
|
|
|||
|
qres, err1 := service.RuleProvider.UserInfo(c, &uReq)
|
|||
|
|
|||
|
if err1 != nil {
|
|||
|
service.Error(c, e.Error, err1)
|
|||
|
return
|
|||
|
}
|
|||
|
|
|||
|
if len(qres.PositionUsers) >= 1 {
|
|||
|
isDriverAuth = isHaveDriverAuth(c, res.AccountInfo.ID, qres.PositionUsers[0].DepartmentId)
|
|||
|
isDriverSupervisorAuth = isHaveDriverSupervisorAuth(c, res.AccountInfo.ID, qres.PositionUsers[0].DepartmentId)
|
|||
|
}
|
|||
|
|
|||
|
accountInfo := &union.AccountInfo{
|
|||
|
ID: res.AccountInfo.ID,
|
|||
|
Account: res.AccountInfo.Account,
|
|||
|
NickName: res.AccountInfo.NickName,
|
|||
|
Domain: res.AccountInfo.Domain,
|
|||
|
TelNum: res.AccountInfo.TelNum,
|
|||
|
Status: res.AccountInfo.Status,
|
|||
|
Avatar: res.AccountInfo.Avatar,
|
|||
|
CreatedAt: res.AccountInfo.CreateAt,
|
|||
|
IsNeedChange: res.AccountInfo.IsNeedChange,
|
|||
|
EnterDate: res.AccountInfo.EnterDate,
|
|||
|
WorkYear: res.AccountInfo.WorkYear,
|
|||
|
IsAdmin: qres.IsAdmin,
|
|||
|
PositionUsers: qres.PositionUsers,
|
|||
|
JumpTo: res.AccountInfo.Extend.JumpTo,
|
|||
|
DepartmentName: "",
|
|||
|
JobNum: res.AccountInfo.JobNum,
|
|||
|
BirthDate: res.AccountInfo.BirthDate,
|
|||
|
Age: res.AccountInfo.Age,
|
|||
|
Sex: res.AccountInfo.Sex,
|
|||
|
Title: res.AccountInfo.Title,
|
|||
|
IDNum: res.AccountInfo.IDNum,
|
|||
|
DriverAuth: isDriverAuth,
|
|||
|
DriverSupervisorAuth: isDriverSupervisorAuth,
|
|||
|
}
|
|||
|
|
|||
|
code := "xxx"
|
|||
|
if len(qres.PositionUsers) >= 1 {
|
|||
|
accountInfo.DepartmentName = qres.PositionUsers[0].DepartmentName
|
|||
|
code = secret.GetPositionCode(qres.PositionUsers[0].PositionName)
|
|||
|
}
|
|||
|
|
|||
|
token, err := secret.CombineSecret(code, accountInfo.DepartmentName, res.Token)
|
|||
|
|
|||
|
if err != nil {
|
|||
|
service.Error(c, e.Error, err)
|
|||
|
return
|
|||
|
}
|
|||
|
|
|||
|
ruleUrlReq := rule.FindRuleByUrlRequest{
|
|||
|
AccountID: accountInfo.ID,
|
|||
|
Type: "menu",
|
|||
|
Domain: accountInfo.Domain,
|
|||
|
Url: "/home",
|
|||
|
Method: "*",
|
|||
|
}
|
|||
|
|
|||
|
ruleInfo, ruleErr := service.RuleProvider.FindUserRule(c, &ruleUrlReq)
|
|||
|
if ruleInfo.IsPass == true {
|
|||
|
jumpToWhere = "home"
|
|||
|
}
|
|||
|
|
|||
|
if ruleErr != nil {
|
|||
|
service.Error(c, e.Error, ruleErr)
|
|||
|
return
|
|||
|
}
|
|||
|
|
|||
|
resInfo := &union.Login{
|
|||
|
Token: token,
|
|||
|
RefreshToken: res.RefreshToken,
|
|||
|
AccountInfo: accountInfo,
|
|||
|
JumpToWhere: jumpToWhere,
|
|||
|
}
|
|||
|
|
|||
|
service.Success(c, resInfo)
|
|||
|
|
|||
|
return
|
|||
|
}
|
|||
|
|
|||
|
// Offline 下线
|
|||
|
func Offline(c *gin.Context) {
|
|||
|
|
|||
|
intStr := c.DefaultQuery("id", "0")
|
|||
|
|
|||
|
intNum, err := strconv.Atoi(intStr)
|
|||
|
if err != nil {
|
|||
|
service.Error(c, e.Error, err)
|
|||
|
return
|
|||
|
}
|
|||
|
|
|||
|
req := account.CommonRequest{
|
|||
|
ID: uint64(intNum),
|
|||
|
}
|
|||
|
|
|||
|
res, err := service.AccountProvider.OffLine(context.Background(), &req)
|
|||
|
if err != nil {
|
|||
|
service.Error(c, e.Error, err)
|
|||
|
return
|
|||
|
}
|
|||
|
|
|||
|
service.Success(c, res)
|
|||
|
return
|
|||
|
}
|
|||
|
|
|||
|
// OnlineInfoById 获取登陆信息
|
|||
|
func OnlineInfoById(c *gin.Context) {
|
|||
|
|
|||
|
intStr := c.DefaultQuery("id", "0")
|
|||
|
|
|||
|
id, err := strconv.Atoi(intStr)
|
|||
|
if err != nil {
|
|||
|
service.Error(c, e.Error, err)
|
|||
|
return
|
|||
|
}
|
|||
|
|
|||
|
req := account.OnlineLogByIdRequest{
|
|||
|
ID: uint64(id),
|
|||
|
}
|
|||
|
|
|||
|
res, err := service.AccountProvider.OnlineLogById(context.Background(), &req)
|
|||
|
if err != nil {
|
|||
|
service.Error(c, e.Error, err)
|
|||
|
return
|
|||
|
}
|
|||
|
|
|||
|
service.Success(c, res)
|
|||
|
return
|
|||
|
}
|
|||
|
|
|||
|
// OnlineInfos 用户登录操作
|
|||
|
func OnlineInfos(c *gin.Context) {
|
|||
|
|
|||
|
intStr := c.DefaultQuery("UserId", "0")
|
|||
|
|
|||
|
id, err := strconv.Atoi(intStr)
|
|||
|
if err != nil {
|
|||
|
service.Error(c, e.Error, err)
|
|||
|
return
|
|||
|
}
|
|||
|
|
|||
|
req := account.LoginInfosByUserIdRequest{
|
|||
|
UserId: uint64(id),
|
|||
|
}
|
|||
|
|
|||
|
res, err := service.AccountProvider.OnlineLog(context.Background(), &req)
|
|||
|
if err != nil {
|
|||
|
service.Error(c, e.Error, err)
|
|||
|
return
|
|||
|
}
|
|||
|
|
|||
|
service.Success(c, res)
|
|||
|
return
|
|||
|
}
|
|||
|
|
|||
|
// SendMsg 用户登录操作
|
|||
|
func SendMsg(c *gin.Context) {
|
|||
|
|
|||
|
var req account.SendMsgRequest
|
|||
|
|
|||
|
if err := c.ShouldBindBodyWith(&req, binding.JSON); err != nil {
|
|||
|
service.Error(c, e.InvalidParams, err)
|
|||
|
return
|
|||
|
}
|
|||
|
|
|||
|
req.SignNo = uint32(config.DefaultSignNo)
|
|||
|
res, err := service.AccountProvider.SendMsg(context.Background(), &req)
|
|||
|
if err != nil {
|
|||
|
service.Error(c, e.Error, err)
|
|||
|
return
|
|||
|
}
|
|||
|
|
|||
|
service.Success(c, res)
|
|||
|
return
|
|||
|
}
|
|||
|
|
|||
|
// CheckMsg 验证码是否正确
|
|||
|
func CheckMsg(c *gin.Context) {
|
|||
|
|
|||
|
var req account.CheckMsgRequest
|
|||
|
|
|||
|
if err := c.ShouldBindBodyWith(&req, binding.JSON); err != nil {
|
|||
|
service.Error(c, e.InvalidParams, err)
|
|||
|
return
|
|||
|
}
|
|||
|
|
|||
|
res, err := service.AccountProvider.CheckMsg(context.Background(), &req)
|
|||
|
if err != nil {
|
|||
|
service.Error(c, e.Error, err)
|
|||
|
return
|
|||
|
}
|
|||
|
|
|||
|
service.Success(c, res)
|
|||
|
return
|
|||
|
}
|
|||
|
|
|||
|
func UserLogout(c *gin.Context) {
|
|||
|
req := account.DecryptJwtRequest{}
|
|||
|
|
|||
|
//获取jwt
|
|||
|
authorization := c.GetHeader(e.Authorization)
|
|||
|
if authorization == "" {
|
|||
|
service.Error(c, e.Error, errors.New("请求数据为空,请直接重新登录"))
|
|||
|
return
|
|||
|
}
|
|||
|
|
|||
|
jwt, err := secret.GetJwtFromStr(authorization)
|
|||
|
if err != nil {
|
|||
|
service.Error(c, e.Error, err, "解析秘钥失败")
|
|||
|
return
|
|||
|
}
|
|||
|
|
|||
|
req.Token = jwt
|
|||
|
|
|||
|
//退出登陆
|
|||
|
res, err := service.AccountProvider.Logout(context.Background(), &req)
|
|||
|
|
|||
|
if err != nil {
|
|||
|
service.Error(c, e.Error, err)
|
|||
|
return
|
|||
|
}
|
|||
|
|
|||
|
service.Success(c, res)
|
|||
|
return
|
|||
|
}
|
|||
|
|
|||
|
// UserLogin 用户登录操作
|
|||
|
func UserLogin(c *gin.Context) {
|
|||
|
|
|||
|
var jumpToWhere = "setting"
|
|||
|
var isDriverAuth = false
|
|||
|
var isDriverSupervisorAuth = false
|
|||
|
|
|||
|
var req account.LoginRequest
|
|||
|
if err := c.ShouldBindBodyWith(&req, binding.JSON); err != nil {
|
|||
|
service.Error(c, e.InvalidParams, err)
|
|||
|
return
|
|||
|
}
|
|||
|
req.Ip = c.ClientIP()
|
|||
|
|
|||
|
res, err := service.AccountProvider.Login(c, &req)
|
|||
|
if err != nil {
|
|||
|
service.Error(c, e.Error, err)
|
|||
|
return
|
|||
|
}
|
|||
|
|
|||
|
//获取用户的岗位信息
|
|||
|
uReq := rule.RulesRequest{
|
|||
|
AccountID: res.AccountInfo.ID,
|
|||
|
}
|
|||
|
|
|||
|
qres, err1 := service.RuleProvider.UserInfo(c, &uReq)
|
|||
|
|
|||
|
if err1 != nil {
|
|||
|
service.Error(c, e.Error, err1)
|
|||
|
return
|
|||
|
}
|
|||
|
|
|||
|
if len(qres.PositionUsers) >= 1 {
|
|||
|
isDriverAuth = isHaveDriverAuth(c, res.AccountInfo.ID, qres.PositionUsers[0].DepartmentId)
|
|||
|
isDriverSupervisorAuth = isHaveDriverSupervisorAuth(c, res.AccountInfo.ID, qres.PositionUsers[0].DepartmentId)
|
|||
|
}
|
|||
|
|
|||
|
accountInfo := &union.AccountInfo{
|
|||
|
ID: res.AccountInfo.ID,
|
|||
|
Account: res.AccountInfo.Account,
|
|||
|
NickName: res.AccountInfo.NickName,
|
|||
|
Domain: res.AccountInfo.Domain,
|
|||
|
TelNum: res.AccountInfo.TelNum,
|
|||
|
Status: res.AccountInfo.Status,
|
|||
|
Avatar: res.AccountInfo.Avatar,
|
|||
|
CreatedAt: res.AccountInfo.CreateAt,
|
|||
|
IsNeedChange: res.AccountInfo.IsNeedChange,
|
|||
|
EnterDate: res.AccountInfo.EnterDate,
|
|||
|
WorkYear: res.AccountInfo.WorkYear,
|
|||
|
IsAdmin: qres.IsAdmin,
|
|||
|
PositionUsers: qres.PositionUsers,
|
|||
|
JumpTo: res.AccountInfo.Extend.JumpTo,
|
|||
|
DepartmentName: "",
|
|||
|
JobNum: res.AccountInfo.JobNum,
|
|||
|
BirthDate: res.AccountInfo.BirthDate,
|
|||
|
Age: res.AccountInfo.Age,
|
|||
|
Sex: res.AccountInfo.Sex,
|
|||
|
Title: res.AccountInfo.Title,
|
|||
|
IDNum: res.AccountInfo.IDNum,
|
|||
|
DriverAuth: isDriverAuth,
|
|||
|
DriverSupervisorAuth: isDriverSupervisorAuth,
|
|||
|
MailAccount: res.AccountInfo.MailAccount,
|
|||
|
Train: res.AccountInfo.Train,
|
|||
|
Certificate: res.AccountInfo.Certificate,
|
|||
|
TrainVideos: res.AccountInfo.TrainVideos,
|
|||
|
}
|
|||
|
|
|||
|
code := "xxx"
|
|||
|
if len(qres.PositionUsers) >= 1 {
|
|||
|
accountInfo.DepartmentName = qres.PositionUsers[0].DepartmentName
|
|||
|
code = secret.GetPositionCode(qres.PositionUsers[0].PositionName)
|
|||
|
}
|
|||
|
|
|||
|
token, err := secret.CombineSecret(code, accountInfo.DepartmentName, res.Token)
|
|||
|
|
|||
|
if err != nil {
|
|||
|
service.Error(c, e.Error, err)
|
|||
|
return
|
|||
|
}
|
|||
|
|
|||
|
ruleUrlReq := rule.FindRuleByUrlRequest{
|
|||
|
AccountID: accountInfo.ID,
|
|||
|
Type: "menu",
|
|||
|
Domain: accountInfo.Domain,
|
|||
|
Url: "/home",
|
|||
|
Method: "*",
|
|||
|
}
|
|||
|
|
|||
|
ruleInfo, ruleErr := service.RuleProvider.FindUserRule(c, &ruleUrlReq)
|
|||
|
if ruleInfo.IsPass == true {
|
|||
|
jumpToWhere = "home"
|
|||
|
}
|
|||
|
|
|||
|
if ruleErr != nil {
|
|||
|
service.Error(c, e.Error, ruleErr)
|
|||
|
return
|
|||
|
}
|
|||
|
|
|||
|
resInfo := &union.Login{
|
|||
|
Token: token,
|
|||
|
RefreshToken: res.RefreshToken,
|
|||
|
AccountInfo: accountInfo,
|
|||
|
JumpToWhere: jumpToWhere,
|
|||
|
}
|
|||
|
|
|||
|
fmt.Println("是否相同:", res.IsSampleAddress, res.AccountInfo.NowLogId)
|
|||
|
if res.IsSampleAddress == false && res.AccountInfo.NowLogId != 0 { //登陆地址异常
|
|||
|
|
|||
|
url := fmt.Sprintf("https://erpapi.fontree.cn/off7524164487E?id=%d", res.AccountInfo.NowLogId)
|
|||
|
shortUrl, err := utils.CreateShortUrl(url)
|
|||
|
if err == nil {
|
|||
|
url = shortUrl
|
|||
|
}
|
|||
|
|
|||
|
msgReq := account.SendCustomMsgRequest{
|
|||
|
ID: res.AccountInfo.ID,
|
|||
|
TelNum: res.AccountInfo.TelNum,
|
|||
|
MId: 134802,
|
|||
|
SigNo: uint32(config.DefaultSignNo),
|
|||
|
}
|
|||
|
|
|||
|
msgReq.Url = res.NowAddress + "|" + url
|
|||
|
fmt.Println("发送短信", msgReq)
|
|||
|
service.AccountProvider.SendCustomMsg(c, &msgReq)
|
|||
|
|
|||
|
}
|
|||
|
|
|||
|
service.Success(c, resInfo)
|
|||
|
|
|||
|
return
|
|||
|
}
|
|||
|
|
|||
|
// Authentication 用户实名认证操作
|
|||
|
func Authentication(c *gin.Context) {
|
|||
|
//创建一个UserLoginService对象
|
|||
|
var req account.AuthenticationRequest
|
|||
|
|
|||
|
if err := c.ShouldBindBodyWith(&req, binding.JSON); err != nil {
|
|||
|
service.Error(c, e.InvalidParams, err)
|
|||
|
return
|
|||
|
}
|
|||
|
|
|||
|
authorization := c.GetHeader(e.Authorization)
|
|||
|
jwt, err := secret.GetJwtFromStr(authorization)
|
|||
|
if err != nil {
|
|||
|
service.Error(c, e.Error, err, "解析秘钥失败")
|
|||
|
return
|
|||
|
}
|
|||
|
|
|||
|
req.Token = jwt
|
|||
|
|
|||
|
res, err := service.AccountProvider.Authentication(context.Background(), &req)
|
|||
|
if err != nil {
|
|||
|
service.Error(c, e.Error, err)
|
|||
|
return
|
|||
|
}
|
|||
|
|
|||
|
service.Success(c, res)
|
|||
|
return
|
|||
|
}
|
|||
|
|
|||
|
func List(c *gin.Context) {
|
|||
|
//创建一个UserLoginService对象
|
|||
|
var req account.ListRequest
|
|||
|
if err := c.ShouldBindBodyWith(&req, binding.JSON); err != nil {
|
|||
|
service.Error(c, e.InvalidParams, err)
|
|||
|
return
|
|||
|
}
|
|||
|
|
|||
|
res, err := service.AccountProvider.List(context.Background(), &req)
|
|||
|
if err != nil {
|
|||
|
service.Error(c, e.Error, err)
|
|||
|
return
|
|||
|
}
|
|||
|
|
|||
|
//查询部门
|
|||
|
puRequest := &rule.PositionUserListRequest{}
|
|||
|
puRes, err := service.RuleProvider.PositionUserList(c, puRequest)
|
|||
|
|
|||
|
if err != nil {
|
|||
|
service.Error(c, e.Error, err)
|
|||
|
return
|
|||
|
}
|
|||
|
|
|||
|
if len(puRes.Data) > 0 {
|
|||
|
for index, t := range res.Data {
|
|||
|
|
|||
|
var departments []*account.Department
|
|||
|
var positions []*account.PositionUser
|
|||
|
md := make(map[uint64]bool)
|
|||
|
mp := make(map[uint64]bool)
|
|||
|
|
|||
|
for _, tt := range puRes.Data {
|
|||
|
if tt.UserId == t.ID {
|
|||
|
if _, ok := md[tt.DepartmentId]; !ok {
|
|||
|
temp := &account.Department{
|
|||
|
ID: tt.DepartmentId,
|
|||
|
Name: tt.DepartmentName,
|
|||
|
}
|
|||
|
departments = append(departments, temp)
|
|||
|
md[tt.DepartmentId] = true
|
|||
|
}
|
|||
|
if _, ok := mp[tt.PositionID]; !ok {
|
|||
|
temp := &account.PositionUser{
|
|||
|
PositionID: tt.PositionID,
|
|||
|
PositionName: tt.PositionName,
|
|||
|
}
|
|||
|
positions = append(positions, temp)
|
|||
|
md[tt.PositionID] = true
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
res.Data[index].Departments = departments
|
|||
|
res.Data[index].Positions = positions
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
/* ES 操作 */
|
|||
|
//go es.BulkIndexAccountInfo(es.OaIndex)
|
|||
|
/* ES 操作 */
|
|||
|
|
|||
|
service.Success(c, res)
|
|||
|
return
|
|||
|
}
|
|||
|
|
|||
|
// PrivacyInfo 获取私密信息
|
|||
|
func PrivacyInfo(c *gin.Context) {
|
|||
|
//创建一个UserLoginService对象
|
|||
|
var req account.PrivacyInfoRequest
|
|||
|
if err := c.ShouldBindBodyWith(&req, binding.JSON); err != nil {
|
|||
|
service.Error(c, e.InvalidParams, err)
|
|||
|
return
|
|||
|
}
|
|||
|
|
|||
|
res, err := service.AccountProvider.PrivacyInfo(context.Background(), &req)
|
|||
|
if err != nil {
|
|||
|
service.Error(c, e.Error, err)
|
|||
|
return
|
|||
|
}
|
|||
|
|
|||
|
service.Success(c, res)
|
|||
|
return
|
|||
|
}
|
|||
|
|
|||
|
// Remove 用户删除
|
|||
|
func Remove(c *gin.Context) {
|
|||
|
//创建一个UserLoginService对象
|
|||
|
var req account.RemoveRequest
|
|||
|
if err := c.ShouldBindBodyWith(&req, binding.JSON); err != nil {
|
|||
|
service.Error(c, e.InvalidParams, err)
|
|||
|
return
|
|||
|
}
|
|||
|
|
|||
|
res, err := service.AccountProvider.Remove(context.Background(), &req)
|
|||
|
if err != nil {
|
|||
|
service.Error(c, e.Error, err)
|
|||
|
return
|
|||
|
}
|
|||
|
|
|||
|
//岗位删除
|
|||
|
positionReq := &position.RemoveUserRequest{
|
|||
|
Domain: req.Domain,
|
|||
|
ID: req.ID,
|
|||
|
}
|
|||
|
|
|||
|
_, err1 := service.PositionProvider.RemoveUser(c, positionReq)
|
|||
|
if err1 != nil {
|
|||
|
service.Error(c, e.Error, err1)
|
|||
|
return
|
|||
|
}
|
|||
|
|
|||
|
//部门删除
|
|||
|
DepartmentReq := &department.RemoveUserRequest{
|
|||
|
Domain: req.Domain,
|
|||
|
LeaderID: req.ID,
|
|||
|
}
|
|||
|
|
|||
|
_, err2 := service.DepartmentProvider.RemoveUser(c, DepartmentReq)
|
|||
|
if err2 != nil {
|
|||
|
service.Error(c, e.Error, err2)
|
|||
|
return
|
|||
|
}
|
|||
|
|
|||
|
service.Success(c, res)
|
|||
|
}
|
|||
|
|
|||
|
// BaseInfo 用户信息
|
|||
|
func BaseInfo(c *gin.Context) {
|
|||
|
//创建一个UserLoginService对象
|
|||
|
var req account.InfoRequest
|
|||
|
if err := c.ShouldBindBodyWith(&req, binding.JSON); err != nil {
|
|||
|
service.Error(c, e.InvalidParams, err)
|
|||
|
return
|
|||
|
}
|
|||
|
|
|||
|
res, err := service.AccountProvider.Info(context.Background(), &req)
|
|||
|
if err != nil {
|
|||
|
service.Error(c, e.Error, err)
|
|||
|
return
|
|||
|
}
|
|||
|
|
|||
|
service.Success(c, res)
|
|||
|
return
|
|||
|
}
|
|||
|
|
|||
|
func NowInfo(c *gin.Context) {
|
|||
|
//创建一个UserLoginService对象
|
|||
|
userInfo := login.GetUserInfoFromC(c)
|
|||
|
|
|||
|
user, err := GetUserInfoById(c, userInfo.ID, userInfo.Domain)
|
|||
|
if err != nil {
|
|||
|
service.Error(c, e.InvalidParams, err)
|
|||
|
return
|
|||
|
}
|
|||
|
|
|||
|
service.Success(c, user)
|
|||
|
return
|
|||
|
}
|
|||
|
|
|||
|
func Info(c *gin.Context) {
|
|||
|
//创建一个UserLoginService对象
|
|||
|
var req account.InfoRequest
|
|||
|
|
|||
|
if err := c.ShouldBindBodyWith(&req, binding.JSON); err != nil {
|
|||
|
service.Error(c, e.InvalidParams, err)
|
|||
|
return
|
|||
|
}
|
|||
|
|
|||
|
user, err := GetUserInfoById(c, req.ID, req.Domain)
|
|||
|
if err != nil {
|
|||
|
service.Error(c, e.InvalidParams, err)
|
|||
|
return
|
|||
|
}
|
|||
|
|
|||
|
service.Success(c, user)
|
|||
|
return
|
|||
|
}
|
|||
|
|
|||
|
// Update 用户更新信息
|
|||
|
func Update(c *gin.Context) {
|
|||
|
//创建一个UserLoginService对象
|
|||
|
var req union.User
|
|||
|
|
|||
|
if err := c.ShouldBindBodyWith(&req, binding.JSON); err != nil {
|
|||
|
service.Error(c, e.InvalidParams, err)
|
|||
|
return
|
|||
|
}
|
|||
|
|
|||
|
//账号服务
|
|||
|
var updateReq = account.UpdateRequest{
|
|||
|
ID: req.ID,
|
|||
|
Domain: req.Domain,
|
|||
|
NickName: req.NickName,
|
|||
|
Password: req.Password,
|
|||
|
TelNum: req.TelNum,
|
|||
|
Avatar: req.Avatar,
|
|||
|
Status: req.Status,
|
|||
|
EnterDate: req.EnterDate,
|
|||
|
JobNum: req.JobNum,
|
|||
|
BirthDate: req.BirthDate,
|
|||
|
Sex: req.Sex,
|
|||
|
Title: req.Title,
|
|||
|
LeftDate: req.LeftDate,
|
|||
|
Remark: req.Remark,
|
|||
|
RecentImg: req.RecentImg,
|
|||
|
ICNum: req.ICNum,
|
|||
|
Extend: req.Extend,
|
|||
|
Train: req.Train,
|
|||
|
Certificate: req.Certificate,
|
|||
|
Operator: &account.Operator{
|
|||
|
ID: 0,
|
|||
|
Name: "人员管理",
|
|||
|
},
|
|||
|
}
|
|||
|
|
|||
|
if req.JumpTo != "" {
|
|||
|
if updateReq.Extend == nil {
|
|||
|
updateReq.Extend = &account.Extend{}
|
|||
|
}
|
|||
|
updateReq.Extend.JumpTo = req.JumpTo
|
|||
|
}
|
|||
|
|
|||
|
user, err := GetUserInfoById(c, req.ID, req.Domain)
|
|||
|
if err != nil {
|
|||
|
service.Error(c, e.InvalidParams, err)
|
|||
|
return
|
|||
|
}
|
|||
|
_, err = service.AccountProvider.Update(context.Background(), &updateReq)
|
|||
|
if err != nil {
|
|||
|
service.Error(c, e.Error, err)
|
|||
|
return
|
|||
|
}
|
|||
|
|
|||
|
//必须替换岗位
|
|||
|
if req.PositionUsers != nil && len(req.PositionUsers) > 0 {
|
|||
|
positionReq := &position.BindUserRequest{
|
|||
|
Domain: req.Domain,
|
|||
|
UserID: req.ID,
|
|||
|
UserName: req.NickName,
|
|||
|
Avatar: req.Avatar,
|
|||
|
PositionUsers: req.PositionUsers,
|
|||
|
}
|
|||
|
|
|||
|
_, err1 := service.PositionProvider.BindUser(c, positionReq)
|
|||
|
if err1 != nil {
|
|||
|
service.Error(c, e.Error, err1)
|
|||
|
return
|
|||
|
}
|
|||
|
}
|
|||
|
if req.RecentImg != "" && req.RecentImg != user.RecentImg {
|
|||
|
_, _ = service.GrpcEmployeeProvider.UpdateEmployeeFile(c, &employee.UpdateEmployeeFileRequest{
|
|||
|
UserId: user.ID,
|
|||
|
RecentImg: req.RecentImg,
|
|||
|
})
|
|||
|
}
|
|||
|
if req.RecentImg != "" && len(user.Clocks) > 0 && (req.RecentImg != user.RecentImg || req.NickName !=
|
|||
|
user.NickName || req.TelNum != user.TelNum || req.ICNum != user.ICNum) {
|
|||
|
if req.ICNum == "" {
|
|||
|
req.ICNum = user.ICNum
|
|||
|
}
|
|||
|
if req.NickName == "" {
|
|||
|
req.NickName = user.NickName
|
|||
|
}
|
|||
|
if req.TelNum == "" {
|
|||
|
req.TelNum = user.TelNum
|
|||
|
}
|
|||
|
var dataSet []turnstile.DeviceUserData
|
|||
|
var userId account.ClockUserDeviceBatch
|
|||
|
deviceNums := make(map[string]string)
|
|||
|
for _, i := range user.Clocks {
|
|||
|
data := turnstile.DeviceUserData{
|
|||
|
JobNum: user.ID,
|
|||
|
RecentImg: req.RecentImg,
|
|||
|
DeviceNum: i.Device.DeviceNum,
|
|||
|
NickName: req.NickName,
|
|||
|
Phone: req.TelNum,
|
|||
|
DeviceName: i.Device.DeviceName,
|
|||
|
IcNum: req.ICNum,
|
|||
|
}
|
|||
|
dataSet = append(dataSet, data)
|
|||
|
}
|
|||
|
for _, i := range user.Clocks {
|
|||
|
deviceNums[i.Device.DeviceNum] = i.Device.DeviceName
|
|||
|
}
|
|||
|
//判断设备是否离线
|
|||
|
oline := CheckDeviceIsOnline(deviceNums)
|
|||
|
if oline != "" {
|
|||
|
//service.Error(c, e.Error, errors.New(oline))
|
|||
|
//return
|
|||
|
}
|
|||
|
//并发下发数据
|
|||
|
err = ConcurrentUpdateDeviceUser(c, dataSet, 10)
|
|||
|
if err != nil {
|
|||
|
//service.Error(c, e.Error, err)
|
|||
|
//return
|
|||
|
}
|
|||
|
//更新绑定关系
|
|||
|
userId.UserId = user.ID
|
|||
|
_, err = service.AccountProvider.UpdateDeviceRelevance(c, &userId)
|
|||
|
if err != nil {
|
|||
|
//service.Error(c, e.Error, err)
|
|||
|
//return
|
|||
|
}
|
|||
|
}
|
|||
|
service.Success(c, user)
|
|||
|
return
|
|||
|
}
|
|||
|
|
|||
|
// MallRandList 获取商城随机用户
|
|||
|
func MallRandList(c *gin.Context) {
|
|||
|
//创建一个UserLoginService对象
|
|||
|
var req query.UserNumSearchQuery
|
|||
|
res := vo.UserListResponse{}
|
|||
|
|
|||
|
if err := c.ShouldBindBodyWith(&req, binding.JSON); err != nil {
|
|||
|
service.Error(c, e.InvalidParams, err)
|
|||
|
return
|
|||
|
}
|
|||
|
|
|||
|
//账号服务
|
|||
|
var updateReq = account.ListRequest{
|
|||
|
Domain: "mall",
|
|||
|
PageSize: req.Num,
|
|||
|
}
|
|||
|
|
|||
|
if req.UserId != 0 {
|
|||
|
updateReq.PageSize = 1
|
|||
|
res.Count = 1
|
|||
|
res.UserIds = []uint64{req.UserId}
|
|||
|
ures, _ := service.AccountProvider.RandList(context.Background(), &updateReq)
|
|||
|
res.DomainCount = ures.AllCount
|
|||
|
|
|||
|
service.Success(c, res)
|
|||
|
return
|
|||
|
}
|
|||
|
|
|||
|
ures, err := service.AccountProvider.RandList(context.Background(), &updateReq)
|
|||
|
if err != nil {
|
|||
|
service.Error(c, e.Error, err)
|
|||
|
return
|
|||
|
}
|
|||
|
res.Count = ures.Count
|
|||
|
var tempIds []uint64
|
|||
|
for _, v := range ures.Data {
|
|||
|
tempIds = append(tempIds, v.ID)
|
|||
|
}
|
|||
|
res.UserIds = tempIds
|
|||
|
res.DomainCount = ures.AllCount
|
|||
|
|
|||
|
service.Success(c, res)
|
|||
|
return
|
|||
|
}
|
|||
|
|
|||
|
func GetUserInfoById(c *gin.Context, ID uint64, domain string) (union.UserResponse, error) {
|
|||
|
info := union.UserResponse{}
|
|||
|
var driverAuth = false
|
|||
|
var driverSupervisorAuth = false
|
|||
|
|
|||
|
req := account.InfoRequest{
|
|||
|
ID: ID,
|
|||
|
}
|
|||
|
if domain != "" {
|
|||
|
req.Domain = domain
|
|||
|
}
|
|||
|
|
|||
|
res, err := service.AccountProvider.Info(c, &req)
|
|||
|
if err != nil {
|
|||
|
return info, err
|
|||
|
}
|
|||
|
|
|||
|
//获取用户的岗位信息
|
|||
|
uReq := rule.RulesRequest{
|
|||
|
AccountID: req.ID,
|
|||
|
}
|
|||
|
|
|||
|
qres, err1 := service.RuleProvider.UserInfo(c, &uReq)
|
|||
|
|
|||
|
if err1 != nil {
|
|||
|
return info, err1
|
|||
|
}
|
|||
|
|
|||
|
if len(qres.PositionUsers) >= 1 {
|
|||
|
driverAuth = isHaveDriverAuth(c, ID, qres.PositionUsers[0].DepartmentId)
|
|||
|
driverSupervisorAuth = isHaveDriverSupervisorAuth(c, ID, qres.PositionUsers[0].DepartmentId)
|
|||
|
}
|
|||
|
|
|||
|
fReq := position.FindRuleByUserIdRequest{
|
|||
|
UserId: ID,
|
|||
|
Urls: []string{e.AuthFinanceKey, e.AuthTrainingKey, e.AuthPublicizeKey, e.AuthWarehouseKey},
|
|||
|
}
|
|||
|
|
|||
|
fRes, err1 := service.PositionProvider.FindRuleByUserId(c, &fReq)
|
|||
|
|
|||
|
info = union.UserResponse{
|
|||
|
ID: res.Info.ID,
|
|||
|
NickName: res.Info.NickName,
|
|||
|
TelNum: res.Info.TelNum,
|
|||
|
Avatar: res.Info.Avatar,
|
|||
|
Status: res.Info.Status,
|
|||
|
CreateAt: res.Info.CreateAt,
|
|||
|
IsAdmin: qres.IsAdmin,
|
|||
|
RealNameID: res.Info.RealNameID,
|
|||
|
RealName: res.Info.RealName,
|
|||
|
PositionUsers: qres.PositionUsers,
|
|||
|
DepartmentLeaders: qres.DepartmentLeaders,
|
|||
|
IsNeedChange: res.Info.IsNeedChange,
|
|||
|
WorkYear: res.Info.WorkYear,
|
|||
|
EnterDate: res.Info.EnterDate,
|
|||
|
Extend: res.Info.Extend,
|
|||
|
DepartmentName: "",
|
|||
|
JumpTo: "",
|
|||
|
JobNum: res.Info.JobNum,
|
|||
|
BirthDate: res.Info.BirthDate,
|
|||
|
Sex: res.Info.Sex,
|
|||
|
Title: res.Info.Title,
|
|||
|
Age: res.Info.Age,
|
|||
|
IDNum: res.Info.IDNum,
|
|||
|
LeftDate: res.Info.LeftDate,
|
|||
|
DriverAuth: driverAuth,
|
|||
|
DriverSupervisorAuth: driverSupervisorAuth,
|
|||
|
Remark: res.Info.Remark,
|
|||
|
RecentImg: res.Info.RecentImg,
|
|||
|
Clocks: res.Info.Clocks,
|
|||
|
MailAccount: res.Info.MailAccount,
|
|||
|
ICNum: res.Info.ICNum,
|
|||
|
Train: res.Info.Train,
|
|||
|
Certificate: res.Info.Certificate,
|
|||
|
TrainVideos: res.Info.TrainVideos,
|
|||
|
}
|
|||
|
|
|||
|
if res.Info.Extend != nil {
|
|||
|
info.JumpTo = res.Info.Extend.JumpTo
|
|||
|
}
|
|||
|
|
|||
|
if len(qres.PositionUsers) >= 1 {
|
|||
|
info.DepartmentName = qres.PositionUsers[0].DepartmentName
|
|||
|
}
|
|||
|
|
|||
|
if len(fRes.Rules) >= 1 {
|
|||
|
info.IdentityKey = fRes.Rules[0].Url
|
|||
|
}
|
|||
|
|
|||
|
return info, nil
|
|||
|
}
|
|||
|
|
|||
|
func isHaveDriverAuth(c *gin.Context, ID uint64, DepartmentID uint64) bool {
|
|||
|
isLeader := false
|
|||
|
|
|||
|
req := position.DoIHavaAuthRequest{
|
|||
|
UserId: ID,
|
|||
|
Url: e.AuthDriveKey,
|
|||
|
DepartmentID: DepartmentID,
|
|||
|
}
|
|||
|
|
|||
|
res, err := service.PositionProvider.DoIHavaAuth(c, &req)
|
|||
|
|
|||
|
if err == nil && res.Hava == true {
|
|||
|
isLeader = true
|
|||
|
}
|
|||
|
|
|||
|
return isLeader
|
|||
|
}
|
|||
|
|
|||
|
func isHaveDriverSupervisorAuth(c *gin.Context, ID uint64, DepartmentID uint64) bool {
|
|||
|
isLeader := false
|
|||
|
|
|||
|
req := position.DoIHavaAuthRequest{
|
|||
|
UserId: ID,
|
|||
|
Url: e.AuthDriveSupervisorKey,
|
|||
|
DepartmentID: DepartmentID,
|
|||
|
}
|
|||
|
|
|||
|
res, err := service.PositionProvider.DoIHavaAuth(c, &req)
|
|||
|
|
|||
|
if err == nil && res.Hava == true {
|
|||
|
isLeader = true
|
|||
|
}
|
|||
|
|
|||
|
return isLeader
|
|||
|
}
|
|||
|
|
|||
|
func MailAccount(c *gin.Context) {
|
|||
|
var req query.UserRequest
|
|||
|
|
|||
|
if err := c.ShouldBindBodyWith(&req, binding.JSON); err != nil {
|
|||
|
service.ResponseMsg(c, e.SUCCESS, serializer.Response{
|
|||
|
Msg: err.Error(),
|
|||
|
Status: e.Failed,
|
|||
|
})
|
|||
|
return
|
|||
|
}
|
|||
|
|
|||
|
mailReq := &account.MailAccountByNickNameRequest{NickName: req.NickName, ID: req.ID}
|
|||
|
|
|||
|
mailRes, err := service.AccountProvider.MailAccountByNickName(c, mailReq)
|
|||
|
|
|||
|
if err != nil {
|
|||
|
service.Error(c, e.Error, err)
|
|||
|
return
|
|||
|
}
|
|||
|
|
|||
|
service.Success(c, mailRes)
|
|||
|
return
|
|||
|
}
|
|||
|
|
|||
|
func DepartmentLeaderList(c *gin.Context) {
|
|||
|
var req dto.DepartmentListReq
|
|||
|
|
|||
|
if err := c.ShouldBindBodyWith(&req, binding.JSON); err != nil {
|
|||
|
service.ResponseMsg(c, e.SUCCESS, serializer.Response{
|
|||
|
Msg: err.Error(),
|
|||
|
Status: e.Failed,
|
|||
|
})
|
|||
|
return
|
|||
|
}
|
|||
|
|
|||
|
findByUrlRequest := rule.FindByUrlRequest{
|
|||
|
Url: e.DepartmentKey,
|
|||
|
DepartmentIds: req.DepartmentIds,
|
|||
|
}
|
|||
|
|
|||
|
fmt.Println("=============================== FindByUrlRequest ==================================")
|
|||
|
fmt.Printf("findByUrlRequest : %+v\n", findByUrlRequest)
|
|||
|
|
|||
|
res, err := service.RuleProvider.FindUsersByUrl(c, &findByUrlRequest)
|
|||
|
|
|||
|
DepartmentListRes := new(dto.DepartmentListRes)
|
|||
|
DepartmentListRes.DepartmentLeaders = make([]dto.DepartmentLeader, 0)
|
|||
|
|
|||
|
if err == nil && len(res.List) > 0 {
|
|||
|
for _, tt := range res.List {
|
|||
|
leader := dto.DepartmentLeader{
|
|||
|
UserID: tt.UserId,
|
|||
|
UserName: tt.UserName,
|
|||
|
}
|
|||
|
DepartmentListRes.DepartmentLeaders = append(DepartmentListRes.DepartmentLeaders, leader)
|
|||
|
fmt.Println("=============================== FindByUrlResponse ==================================")
|
|||
|
fmt.Printf("leader : %+v\n", leader)
|
|||
|
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
service.ResponseMsg(c, e.SUCCESS, serializer.Response{
|
|||
|
Data: DepartmentListRes,
|
|||
|
Status: e.Ok,
|
|||
|
})
|
|||
|
}
|
|||
|
|
|||
|
// CreateClockDevice 创建打卡机
|
|||
|
func CreateClockDevice(c *gin.Context) {
|
|||
|
var req account.CreateClockDeviceRequest
|
|||
|
if err := c.ShouldBindBodyWith(&req, binding.JSON); err != nil {
|
|||
|
service.Error(c, e.InvalidParams, err)
|
|||
|
return
|
|||
|
}
|
|||
|
var in = account.CreateClockDeviceRequest{
|
|||
|
DeviceNum: req.DeviceNum,
|
|||
|
DeviceName: req.DeviceName,
|
|||
|
DeviceSite: req.DeviceSite,
|
|||
|
}
|
|||
|
res, err := service.AccountProvider.CreateClockDevice(c, &in)
|
|||
|
if err != nil {
|
|||
|
service.Error(c, e.Error, err)
|
|||
|
return
|
|||
|
}
|
|||
|
service.Success(c, res)
|
|||
|
}
|
|||
|
|
|||
|
// UpdateClockDevice 更新打卡机
|
|||
|
func UpdateClockDevice(c *gin.Context) {
|
|||
|
var req account.UpdateClockDeviceRequest
|
|||
|
if err := c.ShouldBindBodyWith(&req, binding.JSON); err != nil {
|
|||
|
service.Error(c, e.InvalidParams, err)
|
|||
|
return
|
|||
|
}
|
|||
|
var in = account.UpdateClockDeviceRequest{
|
|||
|
Id: req.Id,
|
|||
|
DeviceNum: req.DeviceNum,
|
|||
|
DeviceName: req.DeviceName,
|
|||
|
DeviceSite: req.DeviceSite,
|
|||
|
}
|
|||
|
res, err := service.AccountProvider.UpdateClockDevice(c, &in)
|
|||
|
if err != nil {
|
|||
|
service.Error(c, e.Error, err)
|
|||
|
return
|
|||
|
}
|
|||
|
service.Success(c, res)
|
|||
|
}
|
|||
|
|
|||
|
// RemoveClockDevice 删除打卡机
|
|||
|
func RemoveClockDevice(c *gin.Context) {
|
|||
|
var req account.RemoveClockDeviceRequest
|
|||
|
if err := c.ShouldBindBodyWith(&req, binding.JSON); err != nil {
|
|||
|
service.Error(c, e.InvalidParams, err)
|
|||
|
return
|
|||
|
}
|
|||
|
var in = account.RemoveClockDeviceRequest{
|
|||
|
Id: req.Id,
|
|||
|
}
|
|||
|
res, err := service.AccountProvider.RemoveClockDevice(c, &in)
|
|||
|
if err != nil {
|
|||
|
service.Error(c, e.Error, err)
|
|||
|
return
|
|||
|
}
|
|||
|
service.Success(c, res)
|
|||
|
}
|
|||
|
|
|||
|
// ClockDeviceInfo 查看打卡机详情
|
|||
|
func ClockDeviceInfo(c *gin.Context) {
|
|||
|
var req account.ClockDeviceInfoRequest
|
|||
|
if err := c.ShouldBindBodyWith(&req, binding.JSON); err != nil {
|
|||
|
service.Error(c, e.InvalidParams, err)
|
|||
|
return
|
|||
|
}
|
|||
|
var in = account.ClockDeviceInfoRequest{
|
|||
|
Id: req.Id,
|
|||
|
Page: req.Page,
|
|||
|
PageSize: req.PageSize,
|
|||
|
}
|
|||
|
res, err := service.AccountProvider.ClockDeviceInfo(c, &in)
|
|||
|
if err != nil {
|
|||
|
service.Error(c, e.Error, err)
|
|||
|
return
|
|||
|
}
|
|||
|
service.Success(c, res)
|
|||
|
}
|
|||
|
|
|||
|
// ClockDeviceList 查看打卡机列表
|
|||
|
func ClockDeviceList(c *gin.Context) {
|
|||
|
var req account.ClockDeviceListRequest
|
|||
|
if err := c.ShouldBindBodyWith(&req, binding.JSON); err != nil {
|
|||
|
service.Error(c, e.InvalidParams, err)
|
|||
|
return
|
|||
|
}
|
|||
|
var in = account.ClockDeviceListRequest{
|
|||
|
DeviceSite: req.DeviceSite,
|
|||
|
DeviceNum: req.DeviceNum,
|
|||
|
DeviceName: req.DeviceName,
|
|||
|
Page: req.Page,
|
|||
|
PageSize: req.PageSize,
|
|||
|
}
|
|||
|
res, err := service.AccountProvider.ClockDeviceList(c, &in)
|
|||
|
if err != nil {
|
|||
|
service.Error(c, e.Error, err)
|
|||
|
return
|
|||
|
}
|
|||
|
service.Success(c, res)
|
|||
|
}
|
|||
|
|
|||
|
// ClockDeviceSingleUntie 单人解绑打卡机设备
|
|||
|
func ClockDeviceSingleUntie(c *gin.Context) {
|
|||
|
var req account.RemoveClockDeviceRequest
|
|||
|
deviceNums := make(map[string]string)
|
|||
|
if err := c.ShouldBindBodyWith(&req, binding.JSON); err != nil {
|
|||
|
service.Error(c, e.InvalidParams, err)
|
|||
|
return
|
|||
|
}
|
|||
|
var batch account.ClockBatchBindRequest
|
|||
|
batch.Id = req.Id
|
|||
|
devRes, err := service.AccountProvider.ClockDeviceBatchList(c, &batch) //获取设备列表
|
|||
|
if err != nil {
|
|||
|
service.Error(c, e.InvalidParams, errors.New("未找到设备"))
|
|||
|
return
|
|||
|
}
|
|||
|
for _, i := range devRes.Data {
|
|||
|
deviceNums[i.DeviceNum] = i.DeviceName
|
|||
|
}
|
|||
|
oline := CheckDeviceIsOnline(deviceNums)
|
|||
|
if oline != "" {
|
|||
|
service.Error(c, e.Error, errors.New(oline))
|
|||
|
return
|
|||
|
}
|
|||
|
err = DelSingleDeviceAccount(c, devRes.Data[0].DeviceNum, devRes.Data[0].UserId)
|
|||
|
if err != nil {
|
|||
|
service.Error(c, e.Error, err)
|
|||
|
return
|
|||
|
}
|
|||
|
res, err := service.AccountProvider.ClockDeviceSingleUntie(c, &req) //删除绑定关联
|
|||
|
service.Success(c, res)
|
|||
|
return
|
|||
|
}
|
|||
|
|
|||
|
// ClockDeviceBatchBind 批量绑定打卡机
|
|||
|
func ClockDeviceBatchBind(c *gin.Context) {
|
|||
|
var req account.ClockBatchBindRequest
|
|||
|
deviceNums := make(map[string]string)
|
|||
|
if err := c.ShouldBindBodyWith(&req, binding.JSON); err != nil {
|
|||
|
service.Error(c, e.InvalidParams, err)
|
|||
|
return
|
|||
|
}
|
|||
|
deviceIds := account.ClockDeviceListRequest{
|
|||
|
Ids: req.DeviceId,
|
|||
|
}
|
|||
|
DeviceList, err := service.AccountProvider.ClockDeviceList(c, &deviceIds)
|
|||
|
if err != nil {
|
|||
|
service.Error(c, e.Error, err)
|
|||
|
return
|
|||
|
}
|
|||
|
//判断设备是否在线
|
|||
|
for _, i := range DeviceList.Data {
|
|||
|
deviceNums[i.DeviceNum] = i.DeviceName
|
|||
|
}
|
|||
|
oline := CheckDeviceIsOnline(deviceNums)
|
|||
|
if oline != "" {
|
|||
|
service.Error(c, e.Error, errors.New(oline))
|
|||
|
return
|
|||
|
}
|
|||
|
//判断所选员工姓名和近照是否存在
|
|||
|
userInfo, err := getUserInfo(c, req.UserId)
|
|||
|
if err != nil {
|
|||
|
service.Error(c, e.Error, err)
|
|||
|
return
|
|||
|
}
|
|||
|
// 整合数据
|
|||
|
data, dataSet := SelectTheUserToBeDelivered(DeviceList, userInfo)
|
|||
|
//保存不匹配的数据到新切片
|
|||
|
if len(data.Data) == 0 {
|
|||
|
service.Error(c, e.Error, errors.New("所选用户已经下发过"))
|
|||
|
return
|
|||
|
}
|
|||
|
//并发下发用户数据
|
|||
|
err = ConcurrentUpdateDeviceUser(c, dataSet, 10)
|
|||
|
if err != nil {
|
|||
|
service.Error(c, e.Error, err)
|
|||
|
return
|
|||
|
}
|
|||
|
//添加绑定关系
|
|||
|
res, err := service.AccountProvider.ClockDeviceBatchBind(c, data)
|
|||
|
if err != nil {
|
|||
|
service.Error(c, e.Error, err)
|
|||
|
return
|
|||
|
}
|
|||
|
|
|||
|
service.Success(c, res)
|
|||
|
}
|
|||
|
|
|||
|
// ClockDeviceBatchUntie 批量解绑打卡机
|
|||
|
func ClockDeviceBatchUntie(c *gin.Context) {
|
|||
|
var req account.ClockBatchBindRequest
|
|||
|
deviceNums := make(map[string]string)
|
|||
|
if err := c.ShouldBindBodyWith(&req, binding.JSON); err != nil {
|
|||
|
service.Error(c, e.InvalidParams, err)
|
|||
|
return
|
|||
|
}
|
|||
|
res1, err := service.AccountProvider.ClockDeviceBatchList(c, &req)
|
|||
|
if len(res1.Data) == 0 {
|
|||
|
service.Error(c, e.InvalidParams, errors.New("没有需要解绑的人员"))
|
|||
|
return
|
|||
|
}
|
|||
|
//判断设备是否在线
|
|||
|
for _, i := range res1.Data {
|
|||
|
deviceNums[i.DeviceNum] = i.DeviceName
|
|||
|
}
|
|||
|
oline := CheckDeviceIsOnline(deviceNums)
|
|||
|
if oline != "" {
|
|||
|
service.Error(c, e.Error, errors.New(oline))
|
|||
|
return
|
|||
|
}
|
|||
|
//整合数据
|
|||
|
data := DeviceNumToJobNums(res1.Data)
|
|||
|
//下发数据
|
|||
|
err = DelBatchDeviceAccount(data)
|
|||
|
if err != nil {
|
|||
|
service.Error(c, e.InvalidParams, errors.New("下发命令失败"))
|
|||
|
return
|
|||
|
}
|
|||
|
//删除关联
|
|||
|
res, err := service.AccountProvider.ClockDeviceBatchUntie(c, &req)
|
|||
|
if err != nil {
|
|||
|
service.Error(c, e.InvalidParams, errors.New("解绑失败"))
|
|||
|
return
|
|||
|
}
|
|||
|
service.Success(c, res)
|
|||
|
return
|
|||
|
}
|
|||
|
|
|||
|
// ClockDeviceCapturePhoto 抓拍现场照片
|
|||
|
func ClockDeviceCapturePhoto(c *gin.Context) {
|
|||
|
var req request.NotificationDevice
|
|||
|
if err := c.ShouldBindBodyWith(&req, binding.JSON); err != nil {
|
|||
|
service.Error(c, e.InvalidParams, err)
|
|||
|
return
|
|||
|
}
|
|||
|
res, err := SnapPhotosOfTheScene(c, req.DeviceNum)
|
|||
|
if err != nil {
|
|||
|
service.Error(c, e.Error, errors.New("获取失败"))
|
|||
|
return
|
|||
|
}
|
|||
|
decodedData, err := url.QueryUnescape(res)
|
|||
|
if err != nil {
|
|||
|
fmt.Println("URL 解码时出错:", err)
|
|||
|
return
|
|||
|
}
|
|||
|
imageBytes, err := base64.StdEncoding.DecodeString(decodedData)
|
|||
|
if err != nil {
|
|||
|
service.Error(c, e.Error, errors.New("解码Base64时出错"))
|
|||
|
return
|
|||
|
}
|
|||
|
c.Writer.Header().Set("Content-Type", "image/png")
|
|||
|
_, _ = c.Writer.WriteString(string(imageBytes))
|
|||
|
service.Success(c, res)
|
|||
|
return
|
|||
|
}
|
|||
|
|
|||
|
// ClockDeviceDetectionPhoto 检测图片质量
|
|||
|
func ClockDeviceDetectionPhoto(c *gin.Context) {
|
|||
|
file, err := c.FormFile("file")
|
|||
|
source := c.PostForm("deviceNum")
|
|||
|
// 检验文件
|
|||
|
if err != nil {
|
|||
|
logger.Errorf("Upload FormFile err", err)
|
|||
|
service.Error(c, e.Error, err)
|
|||
|
return
|
|||
|
}
|
|||
|
// 打开上传的文件
|
|||
|
src, err := file.Open()
|
|||
|
if err != nil {
|
|||
|
logger.Errorf("Open file err: %v", err)
|
|||
|
c.JSON(http.StatusInternalServerError, gin.H{
|
|||
|
"error": "Unable to open file",
|
|||
|
})
|
|||
|
return
|
|||
|
}
|
|||
|
defer src.Close()
|
|||
|
// 读取文件内容到字节切片
|
|||
|
fileBytes := make([]byte, file.Size)
|
|||
|
_, err = src.Read(fileBytes)
|
|||
|
if err != nil {
|
|||
|
logger.Errorf("Read file err: %v", err)
|
|||
|
c.JSON(http.StatusInternalServerError, gin.H{
|
|||
|
"error": "Unable to read file",
|
|||
|
})
|
|||
|
return
|
|||
|
}
|
|||
|
// 将字节切片编码为Base64字符串
|
|||
|
base64String := base64.StdEncoding.EncodeToString(fileBytes)
|
|||
|
if err != nil {
|
|||
|
service.Error(c, e.Error, err)
|
|||
|
return
|
|||
|
}
|
|||
|
encodedData := url.QueryEscape(base64String)
|
|||
|
res, err := CheckPictureQuality(c, source, encodedData)
|
|||
|
if err != nil {
|
|||
|
service.Error(c, e.Error, errors.New("获取失败"))
|
|||
|
return
|
|||
|
}
|
|||
|
service.Success(c, res)
|
|||
|
}
|
|||
|
|
|||
|
// ClockDeviceRuleIssuance 人员通行规则下发
|
|||
|
func ClockDeviceRuleIssuance(c *gin.Context) {
|
|||
|
var req turnstile.RuleIssuance
|
|||
|
if err := c.ShouldBindBodyWith(&req, binding.JSON); err != nil {
|
|||
|
service.Error(c, e.InvalidParams, err)
|
|||
|
return
|
|||
|
}
|
|||
|
err := GeneralRuleIssuance(c, req)
|
|||
|
if err != nil {
|
|||
|
service.Error(c, e.Error, errors.New("下发失败"))
|
|||
|
return
|
|||
|
}
|
|||
|
service.Success(c, nil)
|
|||
|
return
|
|||
|
}
|
|||
|
|
|||
|
// ClockDeviceRuleAcquire 获取人员通行规则
|
|||
|
func ClockDeviceRuleAcquire(c *gin.Context) {
|
|||
|
var req turnstile.RuleIssuance
|
|||
|
if err := c.ShouldBindBodyWith(&req, binding.JSON); err != nil {
|
|||
|
service.Error(c, e.InvalidParams, err)
|
|||
|
return
|
|||
|
}
|
|||
|
res, err := AccessRule(c, req)
|
|||
|
if err != nil {
|
|||
|
service.Error(c, e.Error, errors.New("下发失败"))
|
|||
|
return
|
|||
|
}
|
|||
|
service.Success(c, res)
|
|||
|
return
|
|||
|
}
|
|||
|
|
|||
|
// ClockDeviceRuleDelete 删除人员通行规则
|
|||
|
func ClockDeviceRuleDelete(c *gin.Context) {
|
|||
|
var req request.DeleteRule
|
|||
|
if err := c.ShouldBindBodyWith(&req, binding.JSON); err != nil {
|
|||
|
service.Error(c, e.InvalidParams, err)
|
|||
|
return
|
|||
|
}
|
|||
|
err := DeleteRule(c, req)
|
|||
|
if err != nil {
|
|||
|
service.Error(c, e.Error, errors.New("下发失败"))
|
|||
|
return
|
|||
|
}
|
|||
|
service.Success(c, nil)
|
|||
|
return
|
|||
|
}
|
|||
|
|
|||
|
// ClockDevicePasswordSwitch 设备密码开门开关
|
|||
|
func ClockDevicePasswordSwitch(c *gin.Context) {
|
|||
|
var req request.DeviceReq
|
|||
|
if err := c.ShouldBindBodyWith(&req, binding.JSON); err != nil {
|
|||
|
service.Error(c, e.InvalidParams, err)
|
|||
|
return
|
|||
|
}
|
|||
|
err := PasswordSwitch(c, req)
|
|||
|
if err != nil {
|
|||
|
service.Error(c, e.Error, errors.New("下发失败"))
|
|||
|
return
|
|||
|
}
|
|||
|
service.Success(c, nil)
|
|||
|
return
|
|||
|
}
|
|||
|
|
|||
|
// ClockDevicePasswordSet 设置设备开门密码
|
|||
|
func ClockDevicePasswordSet(c *gin.Context) {
|
|||
|
var req request.DeviceReq
|
|||
|
if err := c.ShouldBindBodyWith(&req, binding.JSON); err != nil {
|
|||
|
service.Error(c, e.InvalidParams, err)
|
|||
|
return
|
|||
|
}
|
|||
|
err := PasswordSet(c, req)
|
|||
|
if err != nil {
|
|||
|
service.Error(c, e.Error, errors.New("下发失败"))
|
|||
|
return
|
|||
|
}
|
|||
|
service.Success(c, nil)
|
|||
|
return
|
|||
|
}
|
|||
|
|
|||
|
// ClockDevicePersonSync 通知设备同步人员数据
|
|||
|
func ClockDevicePersonSync(c *gin.Context) {
|
|||
|
var req request.DeviceReq
|
|||
|
if err := c.ShouldBindBodyWith(&req, binding.JSON); err != nil {
|
|||
|
service.Error(c, e.InvalidParams, err)
|
|||
|
return
|
|||
|
}
|
|||
|
err := PersonSync(c, req)
|
|||
|
if err != nil {
|
|||
|
service.Error(c, e.Error, errors.New("下发失败"))
|
|||
|
return
|
|||
|
}
|
|||
|
service.Success(c, nil)
|
|||
|
return
|
|||
|
}
|
|||
|
|
|||
|
// ClockDevicePersonTotal 查询设备人员数量和id
|
|||
|
func ClockDevicePersonTotal(c *gin.Context) {
|
|||
|
var req request.DeviceReq
|
|||
|
if err := c.ShouldBindBodyWith(&req, binding.JSON); err != nil {
|
|||
|
service.Error(c, e.InvalidParams, err)
|
|||
|
return
|
|||
|
}
|
|||
|
res, err := PersonTotal(c, req)
|
|||
|
if err != nil {
|
|||
|
service.Error(c, e.Error, errors.New("获取失败"))
|
|||
|
return
|
|||
|
}
|
|||
|
service.Success(c, res)
|
|||
|
return
|
|||
|
}
|
|||
|
|
|||
|
// ClockDevicePersonInfo 根据userid读取用户数据
|
|||
|
func ClockDevicePersonInfo(c *gin.Context) {
|
|||
|
var req request.DeviceReq
|
|||
|
if err := c.ShouldBindBodyWith(&req, binding.JSON); err != nil {
|
|||
|
service.Error(c, e.InvalidParams, err)
|
|||
|
return
|
|||
|
}
|
|||
|
res, err := PersonInfo(c, req)
|
|||
|
if err != nil {
|
|||
|
service.Error(c, e.Error, errors.New("获取失败"))
|
|||
|
return
|
|||
|
}
|
|||
|
service.Success(c, res)
|
|||
|
return
|
|||
|
}
|
|||
|
|
|||
|
// ClockDeviceSetAcquire 获取设备设置
|
|||
|
func ClockDeviceSetAcquire(c *gin.Context) {
|
|||
|
var req request.DeviceReq
|
|||
|
if err := c.ShouldBindBodyWith(&req, binding.JSON); err != nil {
|
|||
|
service.Error(c, e.InvalidParams, err)
|
|||
|
return
|
|||
|
}
|
|||
|
lockStatus := -1
|
|||
|
if req.Settings[0] == "all" {
|
|||
|
lockStatus, _ = DoorLock(c, req)
|
|||
|
}
|
|||
|
res, err := SetAcquire(c, req)
|
|||
|
res.LockState = lockStatus
|
|||
|
if err != nil {
|
|||
|
service.Error(c, e.Error, errors.New("获取失败"))
|
|||
|
return
|
|||
|
}
|
|||
|
service.Success(c, res)
|
|||
|
return
|
|||
|
}
|
|||
|
|
|||
|
// ClockDeviceSetLogo 设置设备logo
|
|||
|
func ClockDeviceSetLogo(c *gin.Context) {
|
|||
|
var req request.DeviceReq
|
|||
|
if err := c.ShouldBindBodyWith(&req, binding.JSON); err != nil {
|
|||
|
service.Error(c, e.InvalidParams, err)
|
|||
|
return
|
|||
|
}
|
|||
|
res, err := SetLogo(c, req)
|
|||
|
if err != nil {
|
|||
|
service.Error(c, e.Error, errors.New("获取失败"))
|
|||
|
return
|
|||
|
}
|
|||
|
service.Success(c, res)
|
|||
|
return
|
|||
|
}
|
|||
|
|
|||
|
// ClockDeviceSetSlogan 设置广告语
|
|||
|
func ClockDeviceSetSlogan(c *gin.Context) {
|
|||
|
var req request.DeviceReq
|
|||
|
if err := c.ShouldBindBodyWith(&req, binding.JSON); err != nil {
|
|||
|
service.Error(c, e.InvalidParams, err)
|
|||
|
return
|
|||
|
}
|
|||
|
res, err := SetSlogan(c, req)
|
|||
|
if err != nil {
|
|||
|
service.Error(c, e.Error, errors.New(res))
|
|||
|
return
|
|||
|
}
|
|||
|
service.Success(c, res)
|
|||
|
return
|
|||
|
}
|
|||
|
|
|||
|
// ClockDeviceSetTime 设置设备时间
|
|||
|
func ClockDeviceSetTime(c *gin.Context) {
|
|||
|
var req request.DeviceReq
|
|||
|
if err := c.ShouldBindBodyWith(&req, binding.JSON); err != nil {
|
|||
|
service.Error(c, e.InvalidParams, err)
|
|||
|
return
|
|||
|
}
|
|||
|
res, err := SetTime(c, req)
|
|||
|
if err != nil {
|
|||
|
service.Error(c, e.Error, errors.New(res))
|
|||
|
return
|
|||
|
}
|
|||
|
service.Success(c, res)
|
|||
|
return
|
|||
|
}
|
|||
|
|
|||
|
// ClockDeviceSetDoor 控制设备开门/关门
|
|||
|
func ClockDeviceSetDoor(c *gin.Context) {
|
|||
|
var req request.DeviceReq
|
|||
|
if err := c.ShouldBindBodyWith(&req, binding.JSON); err != nil {
|
|||
|
service.Error(c, e.InvalidParams, err)
|
|||
|
return
|
|||
|
}
|
|||
|
res, err := SetDoor(c, req)
|
|||
|
if err != nil {
|
|||
|
service.Error(c, e.Error, errors.New(res))
|
|||
|
return
|
|||
|
}
|
|||
|
service.Success(c, res)
|
|||
|
return
|
|||
|
}
|
|||
|
|
|||
|
// ClockDeviceSetInterval 设置设备识别间隔
|
|||
|
func ClockDeviceSetInterval(c *gin.Context) {
|
|||
|
var req request.DeviceReq
|
|||
|
if err := c.ShouldBindBodyWith(&req, binding.JSON); err != nil {
|
|||
|
service.Error(c, e.InvalidParams, err)
|
|||
|
return
|
|||
|
}
|
|||
|
res, err := SetInterval(c, req)
|
|||
|
if err != nil {
|
|||
|
service.Error(c, e.Error, errors.New(res))
|
|||
|
return
|
|||
|
}
|
|||
|
service.Success(c, res)
|
|||
|
return
|
|||
|
}
|
|||
|
|
|||
|
// ClockDeviceSetDistance 设置设备识别距离
|
|||
|
func ClockDeviceSetDistance(c *gin.Context) {
|
|||
|
var req request.DeviceReq
|
|||
|
if err := c.ShouldBindBodyWith(&req, binding.JSON); err != nil {
|
|||
|
service.Error(c, e.InvalidParams, err)
|
|||
|
return
|
|||
|
}
|
|||
|
res, err := SetDistance(c, req)
|
|||
|
if err != nil {
|
|||
|
service.Error(c, e.Error, errors.New(res))
|
|||
|
return
|
|||
|
}
|
|||
|
service.Success(c, res)
|
|||
|
return
|
|||
|
}
|
|||
|
|
|||
|
// ClockDeviceSetMask 口罩检测开关
|
|||
|
func ClockDeviceSetMask(c *gin.Context) {
|
|||
|
var req request.DeviceReq
|
|||
|
if err := c.ShouldBindBodyWith(&req, binding.JSON); err != nil {
|
|||
|
service.Error(c, e.InvalidParams, err)
|
|||
|
return
|
|||
|
}
|
|||
|
res, err := SetMask(c, req)
|
|||
|
if err != nil {
|
|||
|
service.Error(c, e.Error, errors.New(res))
|
|||
|
return
|
|||
|
}
|
|||
|
service.Success(c, res)
|
|||
|
return
|
|||
|
}
|
|||
|
|
|||
|
// ClockDeviceSetLiving 活体检测
|
|||
|
func ClockDeviceSetLiving(c *gin.Context) {
|
|||
|
var req request.DeviceReq
|
|||
|
if err := c.ShouldBindBodyWith(&req, binding.JSON); err != nil {
|
|||
|
service.Error(c, e.InvalidParams, err)
|
|||
|
return
|
|||
|
}
|
|||
|
res, err := SetLiving(c, req)
|
|||
|
if err != nil {
|
|||
|
service.Error(c, e.Error, errors.New(res))
|
|||
|
return
|
|||
|
}
|
|||
|
service.Success(c, res)
|
|||
|
return
|
|||
|
}
|
|||
|
|
|||
|
// ClockDeviceSetLivingClass 活体检测等级
|
|||
|
func ClockDeviceSetLivingClass(c *gin.Context) {
|
|||
|
var req request.DeviceReq
|
|||
|
if err := c.ShouldBindBodyWith(&req, binding.JSON); err != nil {
|
|||
|
service.Error(c, e.InvalidParams, err)
|
|||
|
return
|
|||
|
}
|
|||
|
res, err := SetLivingClass(c, req)
|
|||
|
if err != nil {
|
|||
|
service.Error(c, e.Error, errors.New(res))
|
|||
|
return
|
|||
|
}
|
|||
|
service.Success(c, res)
|
|||
|
return
|
|||
|
}
|
|||
|
|
|||
|
// ClockDeviceSetStranger 陌生人识别
|
|||
|
func ClockDeviceSetStranger(c *gin.Context) {
|
|||
|
var req request.DeviceReq
|
|||
|
if err := c.ShouldBindBodyWith(&req, binding.JSON); err != nil {
|
|||
|
service.Error(c, e.InvalidParams, err)
|
|||
|
return
|
|||
|
}
|
|||
|
res, err := SetStranger(c, req)
|
|||
|
if err != nil {
|
|||
|
service.Error(c, e.Error, errors.New(res))
|
|||
|
return
|
|||
|
}
|
|||
|
service.Success(c, res)
|
|||
|
return
|
|||
|
}
|
|||
|
|
|||
|
// ClockDeviceSetVolume 设备音量
|
|||
|
func ClockDeviceSetVolume(c *gin.Context) {
|
|||
|
var req request.DeviceReq
|
|||
|
if err := c.ShouldBindBodyWith(&req, binding.JSON); err != nil {
|
|||
|
service.Error(c, e.InvalidParams, err)
|
|||
|
return
|
|||
|
}
|
|||
|
res, err := SetVolume(c, req)
|
|||
|
if err != nil {
|
|||
|
service.Error(c, e.Error, errors.New(res))
|
|||
|
return
|
|||
|
}
|
|||
|
service.Success(c, res)
|
|||
|
return
|
|||
|
}
|
|||
|
|
|||
|
// ClockDeviceSetUsername 播放用户名
|
|||
|
func ClockDeviceSetUsername(c *gin.Context) {
|
|||
|
var req request.DeviceReq
|
|||
|
if err := c.ShouldBindBodyWith(&req, binding.JSON); err != nil {
|
|||
|
service.Error(c, e.InvalidParams, err)
|
|||
|
return
|
|||
|
}
|
|||
|
res, err := SetUsername(c, req)
|
|||
|
if err != nil {
|
|||
|
service.Error(c, e.Error, errors.New(res))
|
|||
|
return
|
|||
|
}
|
|||
|
service.Success(c, res)
|
|||
|
return
|
|||
|
}
|
|||
|
|
|||
|
// ClockDeviceSetHint 设置设备提示语音
|
|||
|
func ClockDeviceSetHint(c *gin.Context) {
|
|||
|
var req request.DeviceReq
|
|||
|
if err := c.ShouldBindBodyWith(&req, binding.JSON); err != nil {
|
|||
|
service.Error(c, e.InvalidParams, err)
|
|||
|
return
|
|||
|
}
|
|||
|
res, err := SetHint(c, req)
|
|||
|
if err != nil {
|
|||
|
service.Error(c, e.Error, errors.New(res))
|
|||
|
return
|
|||
|
}
|
|||
|
service.Success(c, res)
|
|||
|
return
|
|||
|
}
|
|||
|
|
|||
|
// ClockDeviceSetPassword 修改进入设置页面密码
|
|||
|
func ClockDeviceSetPassword(c *gin.Context) {
|
|||
|
var req request.DeviceReq
|
|||
|
if err := c.ShouldBindBodyWith(&req, binding.JSON); err != nil {
|
|||
|
service.Error(c, e.InvalidParams, err)
|
|||
|
return
|
|||
|
}
|
|||
|
res, err := SetPassword(c, req)
|
|||
|
if err != nil {
|
|||
|
service.Error(c, e.Error, errors.New(res))
|
|||
|
return
|
|||
|
}
|
|||
|
service.Success(c, res)
|
|||
|
return
|
|||
|
}
|
|||
|
|
|||
|
// ClockDeviceSetRestart 重启设备
|
|||
|
func ClockDeviceSetRestart(c *gin.Context) {
|
|||
|
var req request.DeviceReq
|
|||
|
if err := c.ShouldBindBodyWith(&req, binding.JSON); err != nil {
|
|||
|
service.Error(c, e.InvalidParams, err)
|
|||
|
return
|
|||
|
}
|
|||
|
res, err := SetRestart(c, req)
|
|||
|
if err != nil {
|
|||
|
service.Error(c, e.Error, errors.New(res))
|
|||
|
return
|
|||
|
}
|
|||
|
service.Success(c, res)
|
|||
|
return
|
|||
|
}
|
|||
|
|
|||
|
// ClockDeviceSetRelay 设置继电器状态-常开/正常
|
|||
|
func ClockDeviceSetRelay(c *gin.Context) {
|
|||
|
var req request.DeviceReq
|
|||
|
if err := c.ShouldBindBodyWith(&req, binding.JSON); err != nil {
|
|||
|
service.Error(c, e.InvalidParams, err)
|
|||
|
return
|
|||
|
}
|
|||
|
res, err := SetRelay(c, req)
|
|||
|
if err != nil {
|
|||
|
service.Error(c, e.Error, errors.New(res))
|
|||
|
return
|
|||
|
}
|
|||
|
service.Success(c, res)
|
|||
|
return
|
|||
|
}
|
|||
|
|
|||
|
// ClockDeviceSetCapture 设置设备识别照片抓拍的质量
|
|||
|
func ClockDeviceSetCapture(c *gin.Context) {
|
|||
|
var req request.DeviceReq
|
|||
|
if err := c.ShouldBindBodyWith(&req, binding.JSON); err != nil {
|
|||
|
service.Error(c, e.InvalidParams, err)
|
|||
|
return
|
|||
|
}
|
|||
|
res, err := SetCapture(c, req)
|
|||
|
if err != nil {
|
|||
|
service.Error(c, e.Error, errors.New(res))
|
|||
|
return
|
|||
|
}
|
|||
|
service.Success(c, res)
|
|||
|
return
|
|||
|
}
|
|||
|
|
|||
|
// ClockDeviceSetCallout 访问呼叫开关
|
|||
|
func ClockDeviceSetCallout(c *gin.Context) {
|
|||
|
var req request.DeviceReq
|
|||
|
if err := c.ShouldBindBodyWith(&req, binding.JSON); err != nil {
|
|||
|
service.Error(c, e.InvalidParams, err)
|
|||
|
return
|
|||
|
}
|
|||
|
res, err := SetCallout(c, req)
|
|||
|
if err != nil {
|
|||
|
service.Error(c, e.Error, errors.New(res))
|
|||
|
return
|
|||
|
}
|
|||
|
service.Success(c, res)
|
|||
|
return
|
|||
|
}
|
|||
|
|
|||
|
// ClockDeviceSetPrinter 打印机开关
|
|||
|
func ClockDeviceSetPrinter(c *gin.Context) {
|
|||
|
var req request.DeviceReq
|
|||
|
if err := c.ShouldBindBodyWith(&req, binding.JSON); err != nil {
|
|||
|
service.Error(c, e.InvalidParams, err)
|
|||
|
return
|
|||
|
}
|
|||
|
res, err := SetPrinter(c, req)
|
|||
|
if err != nil {
|
|||
|
service.Error(c, e.Error, errors.New(res))
|
|||
|
return
|
|||
|
}
|
|||
|
service.Success(c, res)
|
|||
|
return
|
|||
|
}
|
|||
|
|
|||
|
// ClockDeviceSetVisitor 首页访客申请入库内容
|
|||
|
func ClockDeviceSetVisitor(c *gin.Context) {
|
|||
|
var req request.DeviceReq
|
|||
|
if err := c.ShouldBindBodyWith(&req, binding.JSON); err != nil {
|
|||
|
service.Error(c, e.InvalidParams, err)
|
|||
|
return
|
|||
|
}
|
|||
|
res, err := SetVisitor(c, req)
|
|||
|
if err != nil {
|
|||
|
service.Error(c, e.Error, errors.New(res))
|
|||
|
return
|
|||
|
}
|
|||
|
service.Success(c, res)
|
|||
|
return
|
|||
|
}
|
|||
|
|
|||
|
// ClockDeviceSetToken 设置http请求的token
|
|||
|
func ClockDeviceSetToken(c *gin.Context) {
|
|||
|
var req request.DeviceReq
|
|||
|
if err := c.ShouldBindBodyWith(&req, binding.JSON); err != nil {
|
|||
|
service.Error(c, e.InvalidParams, err)
|
|||
|
return
|
|||
|
}
|
|||
|
res, err := SetToken(c, req)
|
|||
|
if err != nil {
|
|||
|
service.Error(c, e.Error, errors.New(res))
|
|||
|
return
|
|||
|
}
|
|||
|
service.Success(c, res)
|
|||
|
return
|
|||
|
}
|
|||
|
|
|||
|
// ClockDeviceSetVerify 设置验证接口超时时长
|
|||
|
func ClockDeviceSetVerify(c *gin.Context) {
|
|||
|
var req request.DeviceReq
|
|||
|
if err := c.ShouldBindBodyWith(&req, binding.JSON); err != nil {
|
|||
|
service.Error(c, e.InvalidParams, err)
|
|||
|
return
|
|||
|
}
|
|||
|
res, err := SetVerify(c, req)
|
|||
|
if err != nil {
|
|||
|
service.Error(c, e.Error, errors.New(res))
|
|||
|
return
|
|||
|
}
|
|||
|
service.Success(c, res)
|
|||
|
return
|
|||
|
}
|
|||
|
|
|||
|
// ClockDeviceSetDelay 设置设备开门延迟
|
|||
|
func ClockDeviceSetDelay(c *gin.Context) {
|
|||
|
var req request.DeviceReq
|
|||
|
if err := c.ShouldBindBodyWith(&req, binding.JSON); err != nil {
|
|||
|
service.Error(c, e.InvalidParams, err)
|
|||
|
return
|
|||
|
}
|
|||
|
res, err := SetDelay(c, req)
|
|||
|
if err != nil {
|
|||
|
service.Error(c, e.Error, errors.New(res))
|
|||
|
return
|
|||
|
}
|
|||
|
service.Success(c, res)
|
|||
|
return
|
|||
|
}
|
|||
|
|
|||
|
// ClockDeviceSetPressTime 进入设置页面长按时间
|
|||
|
func ClockDeviceSetPressTime(c *gin.Context) {
|
|||
|
var req request.DeviceReq
|
|||
|
if err := c.ShouldBindBodyWith(&req, binding.JSON); err != nil {
|
|||
|
service.Error(c, e.InvalidParams, err)
|
|||
|
return
|
|||
|
}
|
|||
|
res, err := SetPressTime(c, req)
|
|||
|
if err != nil {
|
|||
|
service.Error(c, e.Error, errors.New(res))
|
|||
|
return
|
|||
|
}
|
|||
|
service.Success(c, res)
|
|||
|
return
|
|||
|
}
|
|||
|
|
|||
|
// ClockDeviceSetDesensitization 姓名脱敏显示
|
|||
|
func ClockDeviceSetDesensitization(c *gin.Context) {
|
|||
|
var req request.DeviceReq
|
|||
|
if err := c.ShouldBindBodyWith(&req, binding.JSON); err != nil {
|
|||
|
service.Error(c, e.InvalidParams, err)
|
|||
|
return
|
|||
|
}
|
|||
|
res, err := SetDesensitization(c, req)
|
|||
|
if err != nil {
|
|||
|
service.Error(c, e.Error, errors.New(res))
|
|||
|
return
|
|||
|
}
|
|||
|
service.Success(c, res)
|
|||
|
return
|
|||
|
}
|
|||
|
|
|||
|
// ClockDeviceSetSection 设置读卡扇区
|
|||
|
func ClockDeviceSetSection(c *gin.Context) {
|
|||
|
var req request.DeviceReq
|
|||
|
if err := c.ShouldBindBodyWith(&req, binding.JSON); err != nil {
|
|||
|
service.Error(c, e.InvalidParams, err)
|
|||
|
return
|
|||
|
}
|
|||
|
res, err := SetSection(c, req)
|
|||
|
if err != nil {
|
|||
|
service.Error(c, e.Error, errors.New(res))
|
|||
|
return
|
|||
|
}
|
|||
|
service.Success(c, res)
|
|||
|
return
|
|||
|
}
|
|||
|
|
|||
|
// ClockDeviceSetRail 设置设备位置围栏
|
|||
|
func ClockDeviceSetRail(c *gin.Context) {
|
|||
|
var req request.DeviceReq
|
|||
|
if err := c.ShouldBindBodyWith(&req, binding.JSON); err != nil {
|
|||
|
service.Error(c, e.InvalidParams, err)
|
|||
|
return
|
|||
|
}
|
|||
|
res, err := SetRail(c, req)
|
|||
|
if err != nil {
|
|||
|
service.Error(c, e.Error, errors.New(res))
|
|||
|
return
|
|||
|
}
|
|||
|
service.Success(c, res)
|
|||
|
return
|
|||
|
}
|
|||
|
|
|||
|
// ClockScreensaverState 设备节能屏保开关
|
|||
|
func ClockScreensaverState(c *gin.Context) {
|
|||
|
var req request.DeviceReq
|
|||
|
if err := c.ShouldBindBodyWith(&req, binding.JSON); err != nil {
|
|||
|
service.Error(c, e.InvalidParams, err)
|
|||
|
return
|
|||
|
}
|
|||
|
res, err := ScreensaverState(c, req)
|
|||
|
if err != nil {
|
|||
|
service.Error(c, e.Error, errors.New(res))
|
|||
|
return
|
|||
|
}
|
|||
|
service.Success(c, res)
|
|||
|
return
|
|||
|
}
|
|||
|
|
|||
|
// ClockScreensaver 设置设备屏保
|
|||
|
func ClockScreensaver(c *gin.Context) {
|
|||
|
var req request.DeviceReq
|
|||
|
if err := c.ShouldBindBodyWith(&req, binding.JSON); err != nil {
|
|||
|
service.Error(c, e.InvalidParams, err)
|
|||
|
return
|
|||
|
}
|
|||
|
res, err := Screensaver(c, req)
|
|||
|
if err != nil {
|
|||
|
service.Error(c, e.Error, errors.New(res))
|
|||
|
return
|
|||
|
}
|
|||
|
service.Success(c, res)
|
|||
|
return
|
|||
|
}
|
|||
|
|
|||
|
// ClockDelScreensaver 删除屏保
|
|||
|
func ClockDelScreensaver(c *gin.Context) {
|
|||
|
var req request.DeviceReq
|
|||
|
if err := c.ShouldBindBodyWith(&req, binding.JSON); err != nil {
|
|||
|
service.Error(c, e.InvalidParams, err)
|
|||
|
return
|
|||
|
}
|
|||
|
res, err := DelScreensaver(c, req)
|
|||
|
if err != nil {
|
|||
|
service.Error(c, e.Error, errors.New(res))
|
|||
|
return
|
|||
|
}
|
|||
|
service.Success(c, res)
|
|||
|
return
|
|||
|
}
|
|||
|
|
|||
|
// ClockScreensaverInterval 设置屏保显示时长
|
|||
|
func ClockScreensaverInterval(c *gin.Context) {
|
|||
|
var req request.DeviceReq
|
|||
|
if err := c.ShouldBindBodyWith(&req, binding.JSON); err != nil {
|
|||
|
service.Error(c, e.InvalidParams, err)
|
|||
|
return
|
|||
|
}
|
|||
|
res, err := ScreensaverInterval(c, req)
|
|||
|
if err != nil {
|
|||
|
service.Error(c, e.Error, errors.New(res))
|
|||
|
return
|
|||
|
}
|
|||
|
service.Success(c, res)
|
|||
|
return
|
|||
|
}
|
|||
|
|
|||
|
// ClockTemperatureDetection 体温检测开关
|
|||
|
func ClockTemperatureDetection(c *gin.Context) {
|
|||
|
var req request.DeviceReq
|
|||
|
if err := c.ShouldBindBodyWith(&req, binding.JSON); err != nil {
|
|||
|
service.Error(c, e.InvalidParams, err)
|
|||
|
return
|
|||
|
}
|
|||
|
res, err := TemperatureDetection(c, req)
|
|||
|
if err != nil {
|
|||
|
service.Error(c, e.Error, errors.New(res))
|
|||
|
return
|
|||
|
}
|
|||
|
service.Success(c, res)
|
|||
|
return
|
|||
|
}
|
|||
|
|
|||
|
// ClockTemperatureMode 体温检测模式
|
|||
|
func ClockTemperatureMode(c *gin.Context) {
|
|||
|
var req request.DeviceReq
|
|||
|
if err := c.ShouldBindBodyWith(&req, binding.JSON); err != nil {
|
|||
|
service.Error(c, e.InvalidParams, err)
|
|||
|
return
|
|||
|
}
|
|||
|
res, err := TemperatureMode(c, req)
|
|||
|
if err != nil {
|
|||
|
service.Error(c, e.Error, errors.New(res))
|
|||
|
return
|
|||
|
}
|
|||
|
service.Success(c, res)
|
|||
|
return
|
|||
|
}
|
|||
|
|
|||
|
// ClockTemperatureStandard 初筛模式标准
|
|||
|
func ClockTemperatureStandard(c *gin.Context) {
|
|||
|
var req request.DeviceReq
|
|||
|
if err := c.ShouldBindBodyWith(&req, binding.JSON); err != nil {
|
|||
|
service.Error(c, e.InvalidParams, err)
|
|||
|
return
|
|||
|
}
|
|||
|
res, err := TemperatureStandard(c, req)
|
|||
|
if err != nil {
|
|||
|
service.Error(c, e.Error, errors.New(res))
|
|||
|
return
|
|||
|
}
|
|||
|
service.Success(c, res)
|
|||
|
return
|
|||
|
}
|
|||
|
|
|||
|
// ClockTemperatureCalibration 设置体温校准模式
|
|||
|
func ClockTemperatureCalibration(c *gin.Context) {
|
|||
|
var req request.DeviceReq
|
|||
|
if err := c.ShouldBindBodyWith(&req, binding.JSON); err != nil {
|
|||
|
service.Error(c, e.InvalidParams, err)
|
|||
|
return
|
|||
|
}
|
|||
|
res, err := TemperatureCalibration(c, req)
|
|||
|
if err != nil {
|
|||
|
service.Error(c, e.Error, errors.New(res))
|
|||
|
return
|
|||
|
}
|
|||
|
service.Success(c, res)
|
|||
|
return
|
|||
|
}
|
|||
|
|
|||
|
// ClockTemperatureLowPass 低温可通行开关
|
|||
|
func ClockTemperatureLowPass(c *gin.Context) {
|
|||
|
var req request.DeviceReq
|
|||
|
if err := c.ShouldBindBodyWith(&req, binding.JSON); err != nil {
|
|||
|
service.Error(c, e.InvalidParams, err)
|
|||
|
return
|
|||
|
}
|
|||
|
res, err := TemperatureLowPass(c, req)
|
|||
|
if err != nil {
|
|||
|
service.Error(c, e.Error, errors.New(res))
|
|||
|
return
|
|||
|
}
|
|||
|
service.Success(c, res)
|
|||
|
return
|
|||
|
}
|
|||
|
|
|||
|
// ClockTemperaturePlay 播报体温开关
|
|||
|
func ClockTemperaturePlay(c *gin.Context) {
|
|||
|
var req request.DeviceReq
|
|||
|
if err := c.ShouldBindBodyWith(&req, binding.JSON); err != nil {
|
|||
|
service.Error(c, e.InvalidParams, err)
|
|||
|
return
|
|||
|
}
|
|||
|
res, err := TemperaturePlay(c, req)
|
|||
|
if err != nil {
|
|||
|
service.Error(c, e.Error, errors.New(res))
|
|||
|
return
|
|||
|
}
|
|||
|
service.Success(c, res)
|
|||
|
return
|
|||
|
}
|
|||
|
|
|||
|
// ClockTemperatureReflectivity 设置体温反射率
|
|||
|
func ClockTemperatureReflectivity(c *gin.Context) {
|
|||
|
var req request.DeviceReq
|
|||
|
if err := c.ShouldBindBodyWith(&req, binding.JSON); err != nil {
|
|||
|
service.Error(c, e.InvalidParams, err)
|
|||
|
return
|
|||
|
}
|
|||
|
res, err := TemperatureReflectivity(c, req)
|
|||
|
if err != nil {
|
|||
|
service.Error(c, e.Error, errors.New(res))
|
|||
|
return
|
|||
|
}
|
|||
|
service.Success(c, res)
|
|||
|
return
|
|||
|
}
|
|||
|
|
|||
|
// ClockTemperatureCorrection 设置体温校准值
|
|||
|
func ClockTemperatureCorrection(c *gin.Context) {
|
|||
|
var req request.DeviceReq
|
|||
|
if err := c.ShouldBindBodyWith(&req, binding.JSON); err != nil {
|
|||
|
service.Error(c, e.InvalidParams, err)
|
|||
|
return
|
|||
|
}
|
|||
|
res, err := TemperatureCorrection(c, req)
|
|||
|
if err != nil {
|
|||
|
service.Error(c, e.Error, errors.New(res))
|
|||
|
return
|
|||
|
}
|
|||
|
service.Success(c, res)
|
|||
|
return
|
|||
|
}
|
|||
|
|
|||
|
// ClockTemperatureDistance 设置设备体温检测距离
|
|||
|
func ClockTemperatureDistance(c *gin.Context) {
|
|||
|
var req request.DeviceReq
|
|||
|
if err := c.ShouldBindBodyWith(&req, binding.JSON); err != nil {
|
|||
|
service.Error(c, e.InvalidParams, err)
|
|||
|
return
|
|||
|
}
|
|||
|
res, err := TemperatureDistance(c, req)
|
|||
|
if err != nil {
|
|||
|
service.Error(c, e.Error, errors.New(res))
|
|||
|
return
|
|||
|
}
|
|||
|
service.Success(c, res)
|
|||
|
return
|
|||
|
}
|
|||
|
|
|||
|
// ClockTemperatureMeasure 设置测温时间段
|
|||
|
func ClockTemperatureMeasure(c *gin.Context) {
|
|||
|
var req request.DeviceReq
|
|||
|
if err := c.ShouldBindBodyWith(&req, binding.JSON); err != nil {
|
|||
|
service.Error(c, e.InvalidParams, err)
|
|||
|
return
|
|||
|
}
|
|||
|
res, err := TemperatureMeasure(c, req)
|
|||
|
if err != nil {
|
|||
|
service.Error(c, e.Error, errors.New(res))
|
|||
|
return
|
|||
|
}
|
|||
|
service.Success(c, res)
|
|||
|
return
|
|||
|
}
|
|||
|
|
|||
|
// ClockVersionAuto 开机自动更新
|
|||
|
func ClockVersionAuto(c *gin.Context) {
|
|||
|
var req request.DeviceReq
|
|||
|
if err := c.ShouldBindBodyWith(&req, binding.JSON); err != nil {
|
|||
|
service.Error(c, e.InvalidParams, err)
|
|||
|
return
|
|||
|
}
|
|||
|
res, err := VersionAuto(c, req)
|
|||
|
if err != nil {
|
|||
|
service.Error(c, e.Error, errors.New(res))
|
|||
|
return
|
|||
|
}
|
|||
|
service.Success(c, res)
|
|||
|
return
|
|||
|
}
|
|||
|
|
|||
|
// ClockVersionInfo 获取设备版本信息
|
|||
|
func ClockVersionInfo(c *gin.Context) {
|
|||
|
var req request.DeviceReq
|
|||
|
if err := c.ShouldBindBodyWith(&req, binding.JSON); err != nil {
|
|||
|
service.Error(c, e.InvalidParams, err)
|
|||
|
return
|
|||
|
}
|
|||
|
res, err := VersionInfo(c, req)
|
|||
|
if err != nil {
|
|||
|
service.Error(c, e.Error, errors.New(res.Msg))
|
|||
|
return
|
|||
|
}
|
|||
|
service.Success(c, res)
|
|||
|
return
|
|||
|
}
|
|||
|
|
|||
|
// ClockVersionPush 发送设备版本信息给服务端
|
|||
|
func ClockVersionPush(c *gin.Context) {
|
|||
|
var req request.DeviceReq
|
|||
|
if err := c.ShouldBindBodyWith(&req, binding.JSON); err != nil {
|
|||
|
service.Error(c, e.InvalidParams, err)
|
|||
|
return
|
|||
|
}
|
|||
|
res, err := VersionPush(c, req)
|
|||
|
if err != nil {
|
|||
|
service.Error(c, e.Error, errors.New("获取失败"))
|
|||
|
return
|
|||
|
}
|
|||
|
service.Success(c, res)
|
|||
|
return
|
|||
|
}
|
|||
|
|
|||
|
// ClockVersionCheck 通知设备在线检查更新
|
|||
|
func ClockVersionCheck(c *gin.Context) {
|
|||
|
var req request.DeviceReq
|
|||
|
if err := c.ShouldBindBodyWith(&req, binding.JSON); err != nil {
|
|||
|
service.Error(c, e.InvalidParams, err)
|
|||
|
return
|
|||
|
}
|
|||
|
res, err := VersionCheck(c, req)
|
|||
|
if err != nil {
|
|||
|
service.Error(c, e.Error, errors.New(res))
|
|||
|
return
|
|||
|
}
|
|||
|
service.Success(c, res)
|
|||
|
return
|
|||
|
}
|
|||
|
|
|||
|
// ClockApplyValue 设置设备首页二维码
|
|||
|
func ClockApplyValue(c *gin.Context) {
|
|||
|
var req request.DeviceReq
|
|||
|
if err := c.ShouldBindBodyWith(&req, binding.JSON); err != nil {
|
|||
|
service.Error(c, e.InvalidParams, err)
|
|||
|
return
|
|||
|
}
|
|||
|
res, err := ApplyValue(c, req)
|
|||
|
if err != nil {
|
|||
|
service.Error(c, e.Error, errors.New(res))
|
|||
|
return
|
|||
|
}
|
|||
|
service.Success(c, res)
|
|||
|
return
|
|||
|
}
|
|||
|
|
|||
|
// ClockApplyPrefix 设置访客二维码前缀
|
|||
|
func ClockApplyPrefix(c *gin.Context) {
|
|||
|
var req request.DeviceReq
|
|||
|
if err := c.ShouldBindBodyWith(&req, binding.JSON); err != nil {
|
|||
|
service.Error(c, e.InvalidParams, err)
|
|||
|
return
|
|||
|
}
|
|||
|
res, err := ApplyPrefix(c, req)
|
|||
|
if err != nil {
|
|||
|
service.Error(c, e.Error, errors.New(res))
|
|||
|
return
|
|||
|
}
|
|||
|
service.Success(c, res)
|
|||
|
return
|
|||
|
}
|
|||
|
|
|||
|
// ClockCameraPanoramic 全景相机开关
|
|||
|
func ClockCameraPanoramic(c *gin.Context) {
|
|||
|
var req request.DeviceReq
|
|||
|
if err := c.ShouldBindBodyWith(&req, binding.JSON); err != nil {
|
|||
|
service.Error(c, e.InvalidParams, err)
|
|||
|
return
|
|||
|
}
|
|||
|
res, err := CameraPanoramic(c, req)
|
|||
|
if err != nil {
|
|||
|
service.Error(c, e.Error, errors.New(res))
|
|||
|
return
|
|||
|
}
|
|||
|
service.Success(c, res)
|
|||
|
return
|
|||
|
}
|
|||
|
|
|||
|
// ClockCameraParams 设置全景相机的参数
|
|||
|
func ClockCameraParams(c *gin.Context) {
|
|||
|
var req request.DeviceReq
|
|||
|
if err := c.ShouldBindBodyWith(&req, binding.JSON); err != nil {
|
|||
|
service.Error(c, e.InvalidParams, err)
|
|||
|
return
|
|||
|
}
|
|||
|
res, err := CameraParams(c, req)
|
|||
|
if err != nil {
|
|||
|
service.Error(c, e.Error, errors.New(res))
|
|||
|
return
|
|||
|
}
|
|||
|
service.Success(c, res)
|
|||
|
return
|
|||
|
}
|
|||
|
|
|||
|
// ClockRecognitionStyle 识别结果样式
|
|||
|
func ClockRecognitionStyle(c *gin.Context) {
|
|||
|
var req request.DeviceReq
|
|||
|
if err := c.ShouldBindBodyWith(&req, binding.JSON); err != nil {
|
|||
|
service.Error(c, e.InvalidParams, err)
|
|||
|
return
|
|||
|
}
|
|||
|
res, err := RecognitionStyle(c, req)
|
|||
|
if err != nil {
|
|||
|
service.Error(c, e.Error, errors.New(res))
|
|||
|
return
|
|||
|
}
|
|||
|
service.Success(c, res)
|
|||
|
return
|
|||
|
}
|
|||
|
|
|||
|
// ClockOnlineVerify 识别后在线验证
|
|||
|
func ClockOnlineVerify(c *gin.Context) {
|
|||
|
var req request.DeviceReq
|
|||
|
if err := c.ShouldBindBodyWith(&req, binding.JSON); err != nil {
|
|||
|
service.Error(c, e.InvalidParams, err)
|
|||
|
return
|
|||
|
}
|
|||
|
res, err := OnlineVerify(c, req)
|
|||
|
if err != nil {
|
|||
|
service.Error(c, e.Error, errors.New(res))
|
|||
|
return
|
|||
|
}
|
|||
|
service.Success(c, res)
|
|||
|
return
|
|||
|
}
|
|||
|
|
|||
|
// ClockOnlineCard 在线验证卡号
|
|||
|
func ClockOnlineCard(c *gin.Context) {
|
|||
|
var req request.DeviceReq
|
|||
|
if err := c.ShouldBindBodyWith(&req, binding.JSON); err != nil {
|
|||
|
service.Error(c, e.InvalidParams, err)
|
|||
|
return
|
|||
|
}
|
|||
|
res, err := OnlineCard(c, req)
|
|||
|
if err != nil {
|
|||
|
service.Error(c, e.Error, errors.New(res))
|
|||
|
return
|
|||
|
}
|
|||
|
service.Success(c, res)
|
|||
|
return
|
|||
|
}
|
|||
|
|
|||
|
// ClockOnlineIdCard 在线验证身份证号
|
|||
|
func ClockOnlineIdCard(c *gin.Context) {
|
|||
|
var req request.DeviceReq
|
|||
|
if err := c.ShouldBindBodyWith(&req, binding.JSON); err != nil {
|
|||
|
service.Error(c, e.InvalidParams, err)
|
|||
|
return
|
|||
|
}
|
|||
|
res, err := OnlineIdCard(c, req)
|
|||
|
if err != nil {
|
|||
|
service.Error(c, e.Error, errors.New(res))
|
|||
|
return
|
|||
|
}
|
|||
|
service.Success(c, res)
|
|||
|
return
|
|||
|
}
|
|||
|
|
|||
|
// ClockOnline 设置在线识别间隔
|
|||
|
func ClockOnline(c *gin.Context) {
|
|||
|
var req request.DeviceReq
|
|||
|
if err := c.ShouldBindBodyWith(&req, binding.JSON); err != nil {
|
|||
|
service.Error(c, e.InvalidParams, err)
|
|||
|
return
|
|||
|
}
|
|||
|
res, err := Online(c, req)
|
|||
|
if err != nil {
|
|||
|
service.Error(c, e.Error, errors.New(res))
|
|||
|
return
|
|||
|
}
|
|||
|
service.Success(c, res)
|
|||
|
return
|
|||
|
}
|
|||
|
|
|||
|
// ClockOnlineState 在线识别开关
|
|||
|
func ClockOnlineState(c *gin.Context) {
|
|||
|
var req request.DeviceReq
|
|||
|
if err := c.ShouldBindBodyWith(&req, binding.JSON); err != nil {
|
|||
|
service.Error(c, e.InvalidParams, err)
|
|||
|
return
|
|||
|
}
|
|||
|
res, err := OnlineState(c, req)
|
|||
|
if err != nil {
|
|||
|
service.Error(c, e.Error, errors.New(res))
|
|||
|
return
|
|||
|
}
|
|||
|
service.Success(c, res)
|
|||
|
return
|
|||
|
}
|
|||
|
|
|||
|
// ClockOnlineTemporary 临时启用在线识别
|
|||
|
func ClockOnlineTemporary(c *gin.Context) {
|
|||
|
var req request.DeviceReq
|
|||
|
if err := c.ShouldBindBodyWith(&req, binding.JSON); err != nil {
|
|||
|
service.Error(c, e.InvalidParams, err)
|
|||
|
return
|
|||
|
}
|
|||
|
res, err := OnlineTemporary(c, req)
|
|||
|
if err != nil {
|
|||
|
service.Error(c, e.Error, errors.New(res))
|
|||
|
return
|
|||
|
}
|
|||
|
service.Success(c, res)
|
|||
|
return
|
|||
|
}
|
|||
|
|
|||
|
// ClockDiscernSettings 设置可通行人员类型
|
|||
|
func ClockDiscernSettings(c *gin.Context) {
|
|||
|
var req request.DeviceReq
|
|||
|
if err := c.ShouldBindBodyWith(&req, binding.JSON); err != nil {
|
|||
|
service.Error(c, e.InvalidParams, err)
|
|||
|
return
|
|||
|
}
|
|||
|
res, err := DiscernSettings(c, req)
|
|||
|
if err != nil {
|
|||
|
service.Error(c, e.Error, errors.New(res))
|
|||
|
return
|
|||
|
}
|
|||
|
service.Success(c, res)
|
|||
|
return
|
|||
|
}
|
|||
|
|
|||
|
// ClockDiscernClass 设置设备识别置信度
|
|||
|
func ClockDiscernClass(c *gin.Context) {
|
|||
|
var req request.DeviceReq
|
|||
|
if err := c.ShouldBindBodyWith(&req, binding.JSON); err != nil {
|
|||
|
service.Error(c, e.InvalidParams, err)
|
|||
|
return
|
|||
|
}
|
|||
|
res, err := DiscernClass(c, req)
|
|||
|
if err != nil {
|
|||
|
service.Error(c, e.Error, errors.New(res))
|
|||
|
return
|
|||
|
}
|
|||
|
service.Success(c, res)
|
|||
|
return
|
|||
|
}
|
|||
|
|
|||
|
// ClockForbiddenSwitch 开启/关闭设备识别
|
|||
|
func ClockForbiddenSwitch(c *gin.Context) {
|
|||
|
var req request.DeviceReq
|
|||
|
if err := c.ShouldBindBodyWith(&req, binding.JSON); err != nil {
|
|||
|
service.Error(c, e.InvalidParams, err)
|
|||
|
return
|
|||
|
}
|
|||
|
res, err := ForbiddenSwitch(c, req)
|
|||
|
if err != nil {
|
|||
|
service.Error(c, e.Error, errors.New(res))
|
|||
|
return
|
|||
|
}
|
|||
|
service.Success(c, res)
|
|||
|
return
|
|||
|
}
|
|||
|
|
|||
|
// ClockForbiddenNumber 停用状态通行人数
|
|||
|
func ClockForbiddenNumber(c *gin.Context) {
|
|||
|
var req request.DeviceReq
|
|||
|
if err := c.ShouldBindBodyWith(&req, binding.JSON); err != nil {
|
|||
|
service.Error(c, e.InvalidParams, err)
|
|||
|
return
|
|||
|
}
|
|||
|
res, err := ForbiddenNumber(c, req)
|
|||
|
if err != nil {
|
|||
|
service.Error(c, e.Error, errors.New(res))
|
|||
|
return
|
|||
|
}
|
|||
|
service.Success(c, res)
|
|||
|
return
|
|||
|
}
|
|||
|
|
|||
|
// ClockAdvertisingAdd 下发广告 - 图片
|
|||
|
func ClockAdvertisingAdd(c *gin.Context) {
|
|||
|
var req request.DeviceReq
|
|||
|
if err := c.ShouldBindBodyWith(&req, binding.JSON); err != nil {
|
|||
|
service.Error(c, e.InvalidParams, err)
|
|||
|
return
|
|||
|
}
|
|||
|
res, err := AdvertisingAdd(c, req)
|
|||
|
if err != nil {
|
|||
|
service.Error(c, e.Error, errors.New(res))
|
|||
|
return
|
|||
|
}
|
|||
|
service.Success(c, res)
|
|||
|
return
|
|||
|
}
|
|||
|
|
|||
|
// ClockAdvertisingDel 删除广告
|
|||
|
func ClockAdvertisingDel(c *gin.Context) {
|
|||
|
var req request.DeviceReq
|
|||
|
if err := c.ShouldBindBodyWith(&req, binding.JSON); err != nil {
|
|||
|
service.Error(c, e.InvalidParams, err)
|
|||
|
return
|
|||
|
}
|
|||
|
res, err := AdvertisingDel(c, req)
|
|||
|
if err != nil {
|
|||
|
service.Error(c, e.Error, errors.New(res))
|
|||
|
return
|
|||
|
}
|
|||
|
service.Success(c, res)
|
|||
|
return
|
|||
|
}
|
|||
|
|
|||
|
// ClockAdvertisingChange 启用停用广告
|
|||
|
func ClockAdvertisingChange(c *gin.Context) {
|
|||
|
var req request.DeviceReq
|
|||
|
if err := c.ShouldBindBodyWith(&req, binding.JSON); err != nil {
|
|||
|
service.Error(c, e.InvalidParams, err)
|
|||
|
return
|
|||
|
}
|
|||
|
res, err := AdvertisingChange(c, req)
|
|||
|
if err != nil {
|
|||
|
service.Error(c, e.Error, errors.New(res))
|
|||
|
return
|
|||
|
}
|
|||
|
service.Success(c, res)
|
|||
|
return
|
|||
|
}
|
|||
|
|
|||
|
// ClockDoorLock 获取(上报)门锁状态
|
|||
|
func ClockDoorLock(c *gin.Context) {
|
|||
|
var req request.DeviceReq
|
|||
|
if err := c.ShouldBindBodyWith(&req, binding.JSON); err != nil {
|
|||
|
service.Error(c, e.InvalidParams, err)
|
|||
|
return
|
|||
|
}
|
|||
|
res, err := DoorLock(c, req)
|
|||
|
if err != nil {
|
|||
|
service.Error(c, e.Error, errors.New(strconv.Itoa(res)))
|
|||
|
return
|
|||
|
}
|
|||
|
service.Success(c, res)
|
|||
|
return
|
|||
|
}
|
|||
|
|
|||
|
// ClockDoorListener 设置门锁实时监听开关
|
|||
|
func ClockDoorListener(c *gin.Context) {
|
|||
|
var req request.DeviceReq
|
|||
|
if err := c.ShouldBindBodyWith(&req, binding.JSON); err != nil {
|
|||
|
service.Error(c, e.InvalidParams, err)
|
|||
|
return
|
|||
|
}
|
|||
|
res, err := DoorListener(c, req)
|
|||
|
if err != nil {
|
|||
|
service.Error(c, e.Error, errors.New(res))
|
|||
|
return
|
|||
|
}
|
|||
|
service.Success(c, res)
|
|||
|
return
|
|||
|
}
|
|||
|
|
|||
|
// ClockLogList 打卡记录列表
|
|||
|
func ClockLogList(c *gin.Context) {
|
|||
|
req := &account.ClockLogReq{}
|
|||
|
if err := c.ShouldBindBodyWith(&req, binding.JSON); err != nil {
|
|||
|
service.Error(c, e.InvalidParams, err)
|
|||
|
return
|
|||
|
}
|
|||
|
res, err := service.AccountProvider.FindClockLogList(c, req)
|
|||
|
if err != nil {
|
|||
|
service.Error(c, e.Error, err)
|
|||
|
return
|
|||
|
}
|
|||
|
service.Success(c, res)
|
|||
|
return
|
|||
|
}
|
|||
|
|
|||
|
// ClockLogInfo 打卡记录详情
|
|||
|
func ClockLogInfo(c *gin.Context) {
|
|||
|
req := &account.ClockLogReq{}
|
|||
|
if err := c.ShouldBindBodyWith(&req, binding.JSON); err != nil {
|
|||
|
service.Error(c, e.InvalidParams, err)
|
|||
|
return
|
|||
|
}
|
|||
|
res, err := service.AccountProvider.FindClockLogList(c, req)
|
|||
|
|
|||
|
res.Count = uint64(len(res.Data))
|
|||
|
if err != nil {
|
|||
|
service.Error(c, e.Error, err)
|
|||
|
return
|
|||
|
}
|
|||
|
service.Success(c, res)
|
|||
|
return
|
|||
|
}
|
|||
|
|
|||
|
// ClockVisitor 访客申请
|
|||
|
func ClockVisitor(c *gin.Context) {
|
|||
|
req := &account.ClockLogInfo{}
|
|||
|
if err := c.ShouldBindBodyWith(&req, binding.JSON); err != nil {
|
|||
|
service.Error(c, e.InvalidParams, err)
|
|||
|
return
|
|||
|
}
|
|||
|
face, _ := SnapPhotosOfTheScene(c, req.Sn)
|
|||
|
decodedData, err := url.QueryUnescape(face)
|
|||
|
if err != nil {
|
|||
|
fmt.Println("URL 解码时出错:", err)
|
|||
|
return
|
|||
|
}
|
|||
|
uuids, _ := uuid.NewV4()
|
|||
|
var objectName = fmt.Sprintf("%s/%s/%s.jpeg", config.ConfigData.Oss.BaseDir, config.Env, uuids)
|
|||
|
BOSClient, _ := objstorage.NewOSS(config.ConfigData.Oss.AccessKeyId, config.ConfigData.Oss.AccessKeySecret, config.ConfigData.Oss.Endpoint)
|
|||
|
imageBytes, err := base64.StdEncoding.DecodeString(decodedData)
|
|||
|
_, err = BOSClient.PutObjectFromBytes(config.ConfigData.Oss.BucketName, objectName, imageBytes)
|
|||
|
Url := fmt.Sprintf("%s/%s", config.ConfigData.Oss.CdnHost, objectName)
|
|||
|
|
|||
|
if err != nil {
|
|||
|
service.Error(c, e.Error, errors.New("解码Base64时出错"))
|
|||
|
return
|
|||
|
}
|
|||
|
userReq := &account.UserByTelRequest{
|
|||
|
Tel: req.ReceiverTel,
|
|||
|
}
|
|||
|
userRes, err := service.AccountProvider.UserByTel(c, userReq)
|
|||
|
if userRes.Info.ID == 0 || err != nil {
|
|||
|
service.Error(c, e.Error, errors.New("接待人不存在"))
|
|||
|
return
|
|||
|
}
|
|||
|
req = &account.ClockLogInfo{
|
|||
|
Sn: req.Sn,
|
|||
|
UserId: "F1000001",
|
|||
|
RecogType: "manual_visitor",
|
|||
|
RecogTime: time.Now().Format("2006-01-02 15:04:05"),
|
|||
|
Gender: req.Gender,
|
|||
|
Photo: Url,
|
|||
|
PassStatus: 1,
|
|||
|
UserName: req.UserName,
|
|||
|
UserType: 2,
|
|||
|
Tel: req.Tel,
|
|||
|
ReasonVisit: req.ReasonVisit,
|
|||
|
ReceiverTel: req.ReceiverTel,
|
|||
|
NumOfPeople: req.NumOfPeople,
|
|||
|
}
|
|||
|
res, err := service.AccountProvider.CreateClockLog(c, req)
|
|||
|
if err != nil {
|
|||
|
service.Error(c, e.Error, err)
|
|||
|
return
|
|||
|
}
|
|||
|
strangerReq := account.SendClockInWechatRequest{
|
|||
|
GhId: "gh_d838598b1a23",
|
|||
|
Address: req.Sn,
|
|||
|
UserId: uint32(userRes.Info.ID),
|
|||
|
LogId: res.Id,
|
|||
|
}
|
|||
|
_, err = service.AccountProvider.SendStrangerClockInWechat(c, &strangerReq)
|
|||
|
if err != nil {
|
|||
|
service.Error(c, e.Error, errors.New("接待人未注册"))
|
|||
|
return
|
|||
|
}
|
|||
|
service.Success(c, res)
|
|||
|
return
|
|||
|
}
|
|||
|
|
|||
|
// ExamineList 审核列表
|
|||
|
func ExamineList(c *gin.Context) {
|
|||
|
var req account.WriteOffListRequest
|
|||
|
if err := c.ShouldBindBodyWith(&req, binding.JSON); err != nil {
|
|||
|
service.Error(c, e.InvalidParams, err)
|
|||
|
return
|
|||
|
}
|
|||
|
res, err := service.AccountProvider.FindWriteOffList(c, &req)
|
|||
|
if err != nil {
|
|||
|
service.Error(c, e.InvalidParams, err)
|
|||
|
return
|
|||
|
}
|
|||
|
service.Success(c, res)
|
|||
|
}
|
|||
|
|
|||
|
// ExamineApprove 审批
|
|||
|
func ExamineApprove(c *gin.Context) {
|
|||
|
var req account.WriteOffApproveRequest
|
|||
|
if err := c.ShouldBindJSON(&req); err != nil {
|
|||
|
service.Error(c, e.InvalidParams, err)
|
|||
|
return
|
|||
|
}
|
|||
|
res, err := service.AccountProvider.WriteOffInfo(c, &req)
|
|||
|
if err != nil {
|
|||
|
service.Error(c, e.InvalidParams, err)
|
|||
|
return
|
|||
|
}
|
|||
|
if res.Status != 1 {
|
|||
|
service.Error(c, e.InvalidParams, errors.New("审批结束,不可重复提交"))
|
|||
|
return
|
|||
|
}
|
|||
|
_, err = service.AccountProvider.WriteOffUpdate(c, &req)
|
|||
|
if err != nil {
|
|||
|
service.Error(c, e.InvalidParams, errors.New("审批错误"))
|
|||
|
return
|
|||
|
}
|
|||
|
// 拒绝审批
|
|||
|
if req.Status == 3 {
|
|||
|
service.Success(c, res)
|
|||
|
return
|
|||
|
}
|
|||
|
// 通过审批
|
|||
|
if req.Status == 2 {
|
|||
|
err := handleApprovalSuccess(c, res)
|
|||
|
if err != nil {
|
|||
|
service.Error(c, e.Error, err)
|
|||
|
return
|
|||
|
}
|
|||
|
service.Success(c, res)
|
|||
|
return
|
|||
|
}
|
|||
|
|
|||
|
service.Error(c, e.InvalidParams, errors.New("参数错误"))
|
|||
|
return
|
|||
|
}
|
|||
|
|
|||
|
// ArtworkUserLogin 用户登录操作
|
|||
|
func ArtworkUserLogin(c *gin.Context) {
|
|||
|
|
|||
|
var jumpToWhere = "setting"
|
|||
|
|
|||
|
var req account.LoginRequest
|
|||
|
if err := c.ShouldBindBodyWith(&req, binding.JSON); err != nil {
|
|||
|
service.Error(c, e.InvalidParams, err)
|
|||
|
return
|
|||
|
}
|
|||
|
req.Ip = c.ClientIP()
|
|||
|
|
|||
|
res, err := service.AccountProvider.Login(c, &req)
|
|||
|
if err != nil {
|
|||
|
service.Error(c, e.Error, err)
|
|||
|
return
|
|||
|
}
|
|||
|
|
|||
|
//获取用户的岗位信息
|
|||
|
uReq := rule.RulesRequest{
|
|||
|
AccountID: res.AccountInfo.ID,
|
|||
|
}
|
|||
|
|
|||
|
qres, err1 := service.RuleProvider.UserInfo(c, &uReq)
|
|||
|
|
|||
|
if err1 != nil {
|
|||
|
service.Error(c, e.Error, err1)
|
|||
|
return
|
|||
|
}
|
|||
|
|
|||
|
if isHaveAuth(c, res.AccountInfo.ID, e.AuthArtworkFix, "button") == false {
|
|||
|
service.Error(c, e.Error, errors.New("您暂时没有登陆的权限"))
|
|||
|
return
|
|||
|
}
|
|||
|
|
|||
|
accountInfo := &union.AccountInfo{
|
|||
|
ID: res.AccountInfo.ID,
|
|||
|
Account: res.AccountInfo.Account,
|
|||
|
NickName: res.AccountInfo.NickName,
|
|||
|
Domain: res.AccountInfo.Domain,
|
|||
|
TelNum: res.AccountInfo.TelNum,
|
|||
|
Status: res.AccountInfo.Status,
|
|||
|
Avatar: res.AccountInfo.Avatar,
|
|||
|
CreatedAt: res.AccountInfo.CreateAt,
|
|||
|
IsNeedChange: res.AccountInfo.IsNeedChange,
|
|||
|
EnterDate: res.AccountInfo.EnterDate,
|
|||
|
WorkYear: res.AccountInfo.WorkYear,
|
|||
|
IsAdmin: qres.IsAdmin,
|
|||
|
PositionUsers: qres.PositionUsers,
|
|||
|
JumpTo: res.AccountInfo.Extend.JumpTo,
|
|||
|
DepartmentName: "",
|
|||
|
JobNum: res.AccountInfo.JobNum,
|
|||
|
BirthDate: res.AccountInfo.BirthDate,
|
|||
|
Age: res.AccountInfo.Age,
|
|||
|
Sex: res.AccountInfo.Sex,
|
|||
|
Title: res.AccountInfo.Title,
|
|||
|
IDNum: res.AccountInfo.IDNum,
|
|||
|
MailAccount: res.AccountInfo.MailAccount,
|
|||
|
Train: res.AccountInfo.Train,
|
|||
|
Certificate: res.AccountInfo.Certificate,
|
|||
|
TrainVideos: res.AccountInfo.TrainVideos,
|
|||
|
}
|
|||
|
|
|||
|
code := "xxx"
|
|||
|
if len(qres.PositionUsers) >= 1 {
|
|||
|
accountInfo.DepartmentName = qres.PositionUsers[0].DepartmentName
|
|||
|
code = secret.GetPositionCode(qres.PositionUsers[0].PositionName)
|
|||
|
}
|
|||
|
|
|||
|
token, err := secret.CombineSecret(code, accountInfo.DepartmentName, res.Token)
|
|||
|
|
|||
|
if err != nil {
|
|||
|
service.Error(c, e.Error, err)
|
|||
|
return
|
|||
|
}
|
|||
|
|
|||
|
resInfo := &union.Login{
|
|||
|
Token: token,
|
|||
|
RefreshToken: res.RefreshToken,
|
|||
|
AccountInfo: accountInfo,
|
|||
|
JumpToWhere: jumpToWhere,
|
|||
|
}
|
|||
|
|
|||
|
fmt.Println("是否相同:", res.IsSampleAddress, res.AccountInfo.NowLogId)
|
|||
|
if res.IsSampleAddress == false && res.AccountInfo.NowLogId != 0 { //登陆地址异常
|
|||
|
|
|||
|
url := fmt.Sprintf("https://erpapi.fontree.cn/off7524164487E?id=%d", res.AccountInfo.NowLogId)
|
|||
|
shortUrl, err := utils.CreateShortUrl(url)
|
|||
|
if err == nil {
|
|||
|
url = shortUrl
|
|||
|
}
|
|||
|
|
|||
|
msgReq := account.SendCustomMsgRequest{
|
|||
|
ID: res.AccountInfo.ID,
|
|||
|
TelNum: res.AccountInfo.TelNum,
|
|||
|
MId: 134802,
|
|||
|
SigNo: uint32(config.DefaultSignNo),
|
|||
|
}
|
|||
|
|
|||
|
msgReq.Url = res.NowAddress + "|" + url
|
|||
|
fmt.Println("发送短信", msgReq)
|
|||
|
service.AccountProvider.SendCustomMsg(c, &msgReq)
|
|||
|
|
|||
|
}
|
|||
|
|
|||
|
service.Success(c, resInfo)
|
|||
|
|
|||
|
return
|
|||
|
}
|
|||
|
|
|||
|
func isHaveAuth(c *gin.Context, ID uint64, url, ruleType string) bool {
|
|||
|
isLeader := false
|
|||
|
|
|||
|
req := position.DoIHavaAuthRequest{
|
|||
|
UserId: ID,
|
|||
|
Url: url,
|
|||
|
Type: ruleType,
|
|||
|
}
|
|||
|
|
|||
|
res, err := service.PositionProvider.DoIHavaAuth(c, &req)
|
|||
|
|
|||
|
if err == nil && res.Hava == true {
|
|||
|
isLeader = true
|
|||
|
}
|
|||
|
|
|||
|
return isLeader
|
|||
|
}
|
|||
|
|
|||
|
// handleApprovalSuccess 处理通过审批的逻辑
|
|||
|
func handleApprovalSuccess(c *gin.Context, req *account.WriteOffRequest) error {
|
|||
|
// 获取用户信息
|
|||
|
user, err := GetUserInfoById(c, req.UserId, req.Domain)
|
|||
|
if err != nil {
|
|||
|
return err
|
|||
|
}
|
|||
|
// 构建新的岗位用户列表,排除当前岗位
|
|||
|
newPositionUsers := filterPositionUsers(user.PositionUsers, req.SiteId)
|
|||
|
// 替换岗位
|
|||
|
positionReq := &position.BindUserRequest{
|
|||
|
Domain: user.Domain,
|
|||
|
UserID: user.ID,
|
|||
|
UserName: user.NickName,
|
|||
|
Avatar: user.Avatar,
|
|||
|
PositionUsers: newPositionUsers,
|
|||
|
}
|
|||
|
_, err = service.PositionProvider.BindUser(c, positionReq)
|
|||
|
if err != nil {
|
|||
|
return err
|
|||
|
}
|
|||
|
// 如果用户不属于其他部门,则将其状态设置为"left"
|
|||
|
if len(newPositionUsers) == 0 {
|
|||
|
removeReq := account.UpdateRequest{
|
|||
|
Domain: "fontree",
|
|||
|
ID: req.UserId,
|
|||
|
Status: "left",
|
|||
|
Operator: &account.Operator{
|
|||
|
ID: 0,
|
|||
|
Name: "销售宝",
|
|||
|
},
|
|||
|
}
|
|||
|
_, err = service.AccountProvider.Update(c, &removeReq)
|
|||
|
if err != nil {
|
|||
|
return err
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
return nil
|
|||
|
}
|
|||
|
|
|||
|
// filterPositionUsers 过滤掉指定岗位的用户
|
|||
|
func filterPositionUsers(users []*rule.PositionUser, siteID uint64) []*position.PositionUser {
|
|||
|
var newPositionUsers []*position.PositionUser
|
|||
|
for _, u := range users {
|
|||
|
if u.DepartmentId != siteID {
|
|||
|
p := &position.PositionUser{
|
|||
|
PositionID: u.PositionID,
|
|||
|
DepartmentID: u.DepartmentId,
|
|||
|
DepartmentCode: u.DepartmentCode,
|
|||
|
UserId: u.UserId,
|
|||
|
UserName: u.UserName,
|
|||
|
DepartmentName: u.DepartmentName,
|
|||
|
PositionName: u.PositionName,
|
|||
|
}
|
|||
|
newPositionUsers = append(newPositionUsers, p)
|
|||
|
}
|
|||
|
}
|
|||
|
return newPositionUsers
|
|||
|
}
|
|||
|
|
|||
|
func GetECardInfo(userID uint64, changedPlace string) (addChainRequest *e_card.AddChainRequest, err error) {
|
|||
|
// 生成电子名片
|
|||
|
// 获取用户信息,如果是非erp用户则不需要生成电子名片
|
|||
|
infoRequest := &account.InfoRequest{
|
|||
|
Domain: "fontree",
|
|||
|
ID: userID,
|
|||
|
}
|
|||
|
var userInfo *account.InfoResponse
|
|||
|
userInfo, err = service.AccountProvider.Info(context.Background(), infoRequest)
|
|||
|
if err != nil {
|
|||
|
return
|
|||
|
}
|
|||
|
// 重新获取用户的部门、岗位
|
|||
|
rulesReq := &rule.RulesRequest{
|
|||
|
AccountID: userID,
|
|||
|
}
|
|||
|
|
|||
|
qres, err := service.RuleProvider.UserInfo(context.Background(), rulesReq)
|
|||
|
if err != nil {
|
|||
|
return
|
|||
|
}
|
|||
|
|
|||
|
var departments []string
|
|||
|
var posts []string
|
|||
|
|
|||
|
for _, positionUser := range qres.PositionUsers {
|
|||
|
departments = append(departments, positionUser.DepartmentName)
|
|||
|
posts = append(posts, positionUser.PositionName)
|
|||
|
}
|
|||
|
|
|||
|
addChainRequest = &e_card.AddChainRequest{
|
|||
|
Name: userInfo.Info.NickName,
|
|||
|
Phone: userInfo.Info.TelNum,
|
|||
|
Company: "泰丰文化集团",
|
|||
|
Department: departments,
|
|||
|
Post: posts,
|
|||
|
DateOnBoard: userInfo.Info.EnterDate,
|
|||
|
UserID: int32(userID),
|
|||
|
Addr: userInfo.Info.Account,
|
|||
|
ChangedPlace: changedPlace,
|
|||
|
}
|
|||
|
|
|||
|
return
|
|||
|
}
|