mirror of
https://github.com/pbrong/hrms.git
synced 2025-09-26 19:51:11 +08:00
158 lines
4.1 KiB
Go
158 lines
4.1 KiB
Go
package handler
|
|
|
|
import (
|
|
"encoding/base64"
|
|
"fmt"
|
|
"github.com/gin-gonic/gin"
|
|
"gorm.io/gorm"
|
|
"hrms/model"
|
|
"hrms/resource"
|
|
"hrms/service"
|
|
"log"
|
|
"net/http"
|
|
"strings"
|
|
)
|
|
|
|
func Ping(c *gin.Context) {
|
|
c.HTML(http.StatusOK, "staff_manage.html", gin.H{
|
|
"create": true,
|
|
})
|
|
}
|
|
|
|
func Index(c *gin.Context) {
|
|
// 判断是否存在cookie
|
|
cookie, err := c.Cookie("user_cookie")
|
|
if err != nil || cookie == "" {
|
|
c.HTML(http.StatusOK, "login.html", nil)
|
|
return
|
|
}
|
|
// 已登陆
|
|
user := strings.Split(cookie, "_")
|
|
userType := user[0]
|
|
userNo := user[1]
|
|
userName := user[3]
|
|
c.HTML(http.StatusOK, "index.html", gin.H{
|
|
//"title": fmt.Sprintf("欢迎%v:%v登陆HRMS", userType, userNo),
|
|
"title": fmt.Sprintf("分公司-人力资源管理系统"),
|
|
"user_type": userType,
|
|
"staff_id": userNo,
|
|
"staff_name": base64Decode(userName),
|
|
})
|
|
}
|
|
|
|
func base64Decode(name string) string {
|
|
decodeBytes, err := base64.StdEncoding.DecodeString(name)
|
|
if err != nil {
|
|
log.Fatalln(err)
|
|
return "企业员工"
|
|
}
|
|
return string(decodeBytes)
|
|
}
|
|
|
|
func RenderAuthority(c *gin.Context) {
|
|
cookie, err := c.Cookie("user_cookie")
|
|
if err != nil || cookie == "" {
|
|
c.HTML(http.StatusOK, "login.html", nil)
|
|
return
|
|
}
|
|
modelName := c.Param("modelName")
|
|
userType := strings.Split(cookie, "_")[0]
|
|
dto := &model.GetAuthorityDetailDTO{
|
|
UserType: userType,
|
|
Model: modelName,
|
|
}
|
|
autoContent, err := service.GetAuthorityDetailByUserTypeAndModel(c, dto)
|
|
if err != nil {
|
|
c.HTML(http.StatusOK, "login.html", nil)
|
|
return
|
|
}
|
|
autoMap := make(map[string]bool)
|
|
autoList := strings.Split(autoContent, "|")
|
|
for _, autority := range autoList {
|
|
autoMap[autority] = true
|
|
}
|
|
//c.JSON(200, autoMap)
|
|
c.HTML(http.StatusOK, modelName+".html", autoMap)
|
|
}
|
|
|
|
func Login(c *gin.Context) {
|
|
var loginR model.LoginDTO
|
|
if err := c.ShouldBindJSON(&loginR); err != nil {
|
|
log.Printf("[handler.Login] err = %v", err)
|
|
c.JSON(200, gin.H{
|
|
"status": 5001,
|
|
"result": err.Error(),
|
|
})
|
|
return
|
|
}
|
|
dbName := fmt.Sprintf("hrms_%v", loginR.BranchId)
|
|
log.Printf("[login db name = %v]", dbName)
|
|
var hrmsDB *gorm.DB
|
|
var ok bool
|
|
if hrmsDB, ok = resource.DbMapper[dbName]; !ok {
|
|
log.Printf("[Login err, 无法获取到该分公司db名称, name = %v]", dbName)
|
|
c.JSON(200, gin.H{
|
|
"status": 5000,
|
|
"result": fmt.Sprintf("[Login err, 无法获取到该分公司db名称, name = %v]", dbName),
|
|
})
|
|
return
|
|
}
|
|
log.Printf("[handler.Login] login R = %v", loginR)
|
|
var loginDb model.Authority
|
|
var staff model.Staff
|
|
hrmsDB.Where("staff_id = ? and user_password = ?",
|
|
loginR.UserNo, service.MD5(loginR.UserPassword)).First(&loginDb)
|
|
if loginDb.StaffId != loginR.UserNo {
|
|
log.Printf("[handler.Login] user login fail, user = %v", loginR)
|
|
c.JSON(200, gin.H{
|
|
"status": 2001,
|
|
"result": "check fail",
|
|
})
|
|
return
|
|
}
|
|
hrmsDB.Where("staff_id = ?", loginDb.StaffId).Find(&staff)
|
|
|
|
log.Printf("[handler.Login] user login success, user = %v", loginR)
|
|
// set cookie user_cookie=角色_工号_分公司ID_员工姓名(base64编码)
|
|
c.SetCookie("user_cookie", fmt.Sprintf("%v_%v_%v_%v", loginDb.UserType, loginDb.StaffId, loginR.BranchId,
|
|
base64.StdEncoding.EncodeToString([]byte(staff.StaffName))), 0, "/", "*", false, false)
|
|
|
|
c.JSON(200, gin.H{
|
|
"status": 2000,
|
|
})
|
|
}
|
|
|
|
func Quit(c *gin.Context) {
|
|
c.SetCookie("user_cookie", "null", -1, "/", "*", false, false)
|
|
c.JSON(200, gin.H{
|
|
"status": 2000,
|
|
})
|
|
}
|
|
|
|
//func Quit(c *gin.Context) {
|
|
// var quitR model.LoginDTO
|
|
// if err := c.ShouldBindJSON(&quitR); err != nil {
|
|
// log.Printf("[handler.Quit] err = %v", err)
|
|
// c.JSON(200, gin.H{
|
|
// "status": 5001,
|
|
// "result": err.Error(),
|
|
// })
|
|
// return
|
|
// }
|
|
// var quitDb model.Authority
|
|
// resource.HrmsDB(c).Where("staff_id = ?",
|
|
// quitR.UserNo).First(&quitDb)
|
|
// if quitDb.UserType == "" || quitDb.StaffId == "" {
|
|
// log.Printf("[handler.Quit] user quit fail, user = %v", quitR)
|
|
// c.JSON(200, gin.H{
|
|
// "status": 5000,
|
|
// })
|
|
// }
|
|
// log.Printf("[handler.Quit] user quit success, user = %v", quitR)
|
|
// // del cookie user_cookie
|
|
// c.SetCookie("user_cookie", fmt.Sprintf("%v_%v", quitDb.UserType, quitDb.StaffId), -1, "/", "*", false, false)
|
|
// c.JSON(200, gin.H{
|
|
// "status": 2000,
|
|
// })
|
|
//}
|