usrrole
This commit is contained in:
parent
8d0669fc2f
commit
b575e5e760
common/model
conf/corp
server
|
@ -1,11 +1,18 @@
|
||||||
package model
|
package model
|
||||||
|
|
||||||
import "encoding/json"
|
import (
|
||||||
|
"encoding/json"
|
||||||
|
"github.com/spf13/cast"
|
||||||
|
"strings"
|
||||||
|
)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
StaffUserStatusOnline = 1 //在职
|
StaffUserStatusOnline = 1 //在职
|
||||||
StaffUserStatusOffline = 2 //离职
|
StaffUserStatusOffline = 2 //离职
|
||||||
StaffUserStatusAttach = 3 //挂靠
|
StaffUserStatusAttach = 3 //挂靠
|
||||||
|
StaffUserRoleAdmin = 1 //管理员
|
||||||
|
StaffUserRoleFinance = 2 //财务
|
||||||
|
StaffUserRoleHr = 3 //人事
|
||||||
)
|
)
|
||||||
|
|
||||||
type UserSalary struct {
|
type UserSalary struct {
|
||||||
|
@ -25,6 +32,7 @@ type UserConfig struct {
|
||||||
HouseDeduct string `json:"house_deduct"` //公积金扣除
|
HouseDeduct string `json:"house_deduct"` //公积金扣除
|
||||||
SalaryCalcutor string `json:"salary_calcutor"` //工资计算器
|
SalaryCalcutor string `json:"salary_calcutor"` //工资计算器
|
||||||
PerftTarget string `json:"perft_target"` //绩效目标
|
PerftTarget string `json:"perft_target"` //绩效目标
|
||||||
|
UserRole string `json:"user_role"` //员工角色
|
||||||
}
|
}
|
||||||
|
|
||||||
type StaffUser struct {
|
type StaffUser struct {
|
||||||
|
@ -63,3 +71,33 @@ func (u *StaffUser) GetPayee() *UserPayee {
|
||||||
json.Unmarshal([]byte(u.Payee), &salary)
|
json.Unmarshal([]byte(u.Payee), &salary)
|
||||||
return &salary
|
return &salary
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (u *UserConfig) IsAdmin() bool {
|
||||||
|
arrs := strings.Split(u.UserRole, ",")
|
||||||
|
for _, a := range arrs {
|
||||||
|
if cast.ToInt(a) == StaffUserRoleAdmin {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
func (u *UserConfig) IsFinance() bool {
|
||||||
|
arrs := strings.Split(u.UserRole, ",")
|
||||||
|
for _, a := range arrs {
|
||||||
|
if cast.ToInt(a) == StaffUserRoleFinance || cast.ToInt(a) == StaffUserRoleAdmin {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
func (u *UserConfig) IsHr() bool {
|
||||||
|
arrs := strings.Split(u.UserRole, ",")
|
||||||
|
for _, a := range arrs {
|
||||||
|
if cast.ToInt(a) == StaffUserRoleHr || cast.ToInt(a) == StaffUserRoleAdmin {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
|
@ -1,6 +1,21 @@
|
||||||
{
|
{
|
||||||
"salary_latest": 9,
|
"salary_latest": 9,
|
||||||
"staff_config": [
|
"staff_config": [
|
||||||
|
{
|
||||||
|
"name": "员工角色",
|
||||||
|
"key": "user_role",
|
||||||
|
"type": "checkbox",
|
||||||
|
"option": [{
|
||||||
|
"name": "管理员",
|
||||||
|
"value": "1"
|
||||||
|
},{
|
||||||
|
"name": "财务",
|
||||||
|
"value": "2"
|
||||||
|
},{
|
||||||
|
"name": "人事",
|
||||||
|
"value": "3"
|
||||||
|
}]
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"name": "目标绩效",
|
"name": "目标绩效",
|
||||||
"key": "perft_target"
|
"key": "perft_target"
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
"salary_latest": 14,
|
"salary_latest": 14,
|
||||||
"staff_config": [
|
"staff_config": [
|
||||||
{
|
{
|
||||||
"name": "用户角色",
|
"name": "员工角色",
|
||||||
"key": "user_role",
|
"key": "user_role",
|
||||||
"type": "checkbox",
|
"type": "checkbox",
|
||||||
"option": [{
|
"option": [{
|
||||||
|
@ -12,22 +12,10 @@
|
||||||
"name": "财务",
|
"name": "财务",
|
||||||
"value": "2"
|
"value": "2"
|
||||||
},{
|
},{
|
||||||
"name": "后勤",
|
"name": "人事",
|
||||||
"value": "3"
|
"value": "3"
|
||||||
}]
|
}]
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "性别",
|
|
||||||
"key": "user_sex",
|
|
||||||
"type": "radio",
|
|
||||||
"option": [{
|
|
||||||
"name": "男",
|
|
||||||
"value": "1"
|
|
||||||
},{
|
|
||||||
"name": "女",
|
|
||||||
"value": "2"
|
|
||||||
}]
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "目标绩效",
|
"name": "目标绩效",
|
||||||
"key": "perft_target"
|
"key": "perft_target"
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
package controller
|
package controller
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"enterprise/common/config"
|
||||||
"enterprise/common/dao"
|
"enterprise/common/dao"
|
||||||
"enterprise/common/model"
|
"enterprise/common/model"
|
||||||
"enterprise/server/api"
|
"enterprise/server/api"
|
||||||
|
@ -25,6 +26,9 @@ func (c *Calculator) Create(ctx *gin.Context) {
|
||||||
session.CheckParamError(ctx.ShouldBindJSON(&req))
|
session.CheckParamError(ctx.ShouldBindJSON(&req))
|
||||||
ctx.Keys[session.ContextRequest] = req
|
ctx.Keys[session.ContextRequest] = req
|
||||||
|
|
||||||
|
if !sess.GetAdmin().GetConfig().IsAdmin() {
|
||||||
|
panic(config.ErrParam.New())
|
||||||
|
}
|
||||||
calculator := new(model.SalaryCalculator)
|
calculator := new(model.SalaryCalculator)
|
||||||
calculator.CorpId = sess.GetAdmin().CorpId
|
calculator.CorpId = sess.GetAdmin().CorpId
|
||||||
calculator.Name = req.Name
|
calculator.Name = req.Name
|
||||||
|
@ -36,9 +40,13 @@ func (c *Calculator) Create(ctx *gin.Context) {
|
||||||
|
|
||||||
// Update 更新已有的计算项
|
// Update 更新已有的计算项
|
||||||
func (c *Calculator) Update(ctx *gin.Context) {
|
func (c *Calculator) Update(ctx *gin.Context) {
|
||||||
|
sess := ctx.Keys[session.ContextSession].(*session.AdminSession)
|
||||||
var req api.UpdateCalculatorReq
|
var req api.UpdateCalculatorReq
|
||||||
session.CheckParamError(ctx.ShouldBindJSON(&req))
|
session.CheckParamError(ctx.ShouldBindJSON(&req))
|
||||||
ctx.Keys[session.ContextRequest] = req
|
ctx.Keys[session.ContextRequest] = req
|
||||||
|
if !sess.GetAdmin().GetConfig().IsAdmin() {
|
||||||
|
panic(config.ErrParam.New())
|
||||||
|
}
|
||||||
calculator, err := dao.NewSalaryCalculatorDao().Get(cast.ToInt64(req.Id))
|
calculator, err := dao.NewSalaryCalculatorDao().Get(cast.ToInt64(req.Id))
|
||||||
session.CheckDBError(err)
|
session.CheckDBError(err)
|
||||||
session.CheckNilError(calculator, "计算项不存在")
|
session.CheckNilError(calculator, "计算项不存在")
|
||||||
|
@ -53,6 +61,10 @@ func (c *Calculator) Update(ctx *gin.Context) {
|
||||||
|
|
||||||
// Delete 删除指定的计算项
|
// Delete 删除指定的计算项
|
||||||
func (c *Calculator) Delete(ctx *gin.Context) {
|
func (c *Calculator) Delete(ctx *gin.Context) {
|
||||||
|
sess := ctx.Keys[session.ContextSession].(*session.AdminSession)
|
||||||
|
if !sess.GetAdmin().GetConfig().IsAdmin() {
|
||||||
|
panic(config.ErrParam.New())
|
||||||
|
}
|
||||||
id := cast.ToInt64(ctx.Query("id"))
|
id := cast.ToInt64(ctx.Query("id"))
|
||||||
session.CheckDBError(dao.NewSalaryCalculatorDao().Delete(id))
|
session.CheckDBError(dao.NewSalaryCalculatorDao().Delete(id))
|
||||||
ctx.JSON(http.StatusOK, session.NewRspOk())
|
ctx.JSON(http.StatusOK, session.NewRspOk())
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
package controller
|
package controller
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"enterprise/common/config"
|
||||||
"enterprise/server/api"
|
"enterprise/server/api"
|
||||||
"enterprise/server/service"
|
"enterprise/server/service"
|
||||||
"enterprise/server/session"
|
"enterprise/server/session"
|
||||||
|
@ -17,6 +18,10 @@ func NewSalary() *Salary {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *Salary) List(ctx *gin.Context) {
|
func (s *Salary) List(ctx *gin.Context) {
|
||||||
|
sess := ctx.Keys[session.ContextSession].(*session.AdminSession)
|
||||||
|
if sess.GetAdmin().GetConfig().IsFinance() {
|
||||||
|
panic(config.ErrPriv.New())
|
||||||
|
}
|
||||||
var req api.ListSalaryReq
|
var req api.ListSalaryReq
|
||||||
session.CheckParamError(ctx.ShouldBind(&req))
|
session.CheckParamError(ctx.ShouldBind(&req))
|
||||||
total, summary, items := service.NewStaffSalary().List(ctx.Keys[session.ContextSession].(*session.AdminSession), &req)
|
total, summary, items := service.NewStaffSalary().List(ctx.Keys[session.ContextSession].(*session.AdminSession), &req)
|
||||||
|
@ -24,6 +29,10 @@ func (s *Salary) List(ctx *gin.Context) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *Salary) Create(ctx *gin.Context) {
|
func (s *Salary) Create(ctx *gin.Context) {
|
||||||
|
sess := ctx.Keys[session.ContextSession].(*session.AdminSession)
|
||||||
|
if sess.GetAdmin().GetConfig().IsFinance() {
|
||||||
|
panic(config.ErrPriv.New())
|
||||||
|
}
|
||||||
var req api.CreateSalaryReq
|
var req api.CreateSalaryReq
|
||||||
session.CheckParamError(ctx.ShouldBind(&req))
|
session.CheckParamError(ctx.ShouldBind(&req))
|
||||||
ctx.Keys[session.ContextRequest] = req
|
ctx.Keys[session.ContextRequest] = req
|
||||||
|
@ -32,6 +41,10 @@ func (s *Salary) Create(ctx *gin.Context) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *Salary) Update(ctx *gin.Context) {
|
func (s *Salary) Update(ctx *gin.Context) {
|
||||||
|
sess := ctx.Keys[session.ContextSession].(*session.AdminSession)
|
||||||
|
if sess.GetAdmin().GetConfig().IsFinance() {
|
||||||
|
panic(config.ErrPriv.New())
|
||||||
|
}
|
||||||
var req api.UpdateSalaryReq
|
var req api.UpdateSalaryReq
|
||||||
session.CheckParamError(ctx.ShouldBind(&req))
|
session.CheckParamError(ctx.ShouldBind(&req))
|
||||||
ctx.Keys[session.ContextRequest] = req
|
ctx.Keys[session.ContextRequest] = req
|
||||||
|
@ -40,6 +53,10 @@ func (s *Salary) Update(ctx *gin.Context) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *Salary) Pay(ctx *gin.Context) {
|
func (s *Salary) Pay(ctx *gin.Context) {
|
||||||
|
sess := ctx.Keys[session.ContextSession].(*session.AdminSession)
|
||||||
|
if sess.GetAdmin().GetConfig().IsFinance() {
|
||||||
|
panic(config.ErrPriv.New())
|
||||||
|
}
|
||||||
var req api.PaySalaryReq
|
var req api.PaySalaryReq
|
||||||
session.CheckParamError(ctx.ShouldBind(&req))
|
session.CheckParamError(ctx.ShouldBind(&req))
|
||||||
ctx.Keys[session.ContextRequest] = req
|
ctx.Keys[session.ContextRequest] = req
|
||||||
|
@ -48,6 +65,10 @@ func (s *Salary) Pay(ctx *gin.Context) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *Salary) Delete(ctx *gin.Context) {
|
func (s *Salary) Delete(ctx *gin.Context) {
|
||||||
|
sess := ctx.Keys[session.ContextSession].(*session.AdminSession)
|
||||||
|
if sess.GetAdmin().GetConfig().IsFinance() {
|
||||||
|
panic(config.ErrPriv.New())
|
||||||
|
}
|
||||||
id := cast.ToInt64(ctx.Query("id"))
|
id := cast.ToInt64(ctx.Query("id"))
|
||||||
service.NewStaffSalary().Delete(ctx.Keys[session.ContextSession].(*session.AdminSession), id)
|
service.NewStaffSalary().Delete(ctx.Keys[session.ContextSession].(*session.AdminSession), id)
|
||||||
ctx.JSON(http.StatusOK, session.NewRspOk())
|
ctx.JSON(http.StatusOK, session.NewRspOk())
|
||||||
|
|
|
@ -1,11 +1,11 @@
|
||||||
package controller
|
package controller
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"enterprise/common/config"
|
||||||
"enterprise/common/dao"
|
"enterprise/common/dao"
|
||||||
"enterprise/server/api"
|
"enterprise/server/api"
|
||||||
"enterprise/server/service"
|
"enterprise/server/service"
|
||||||
"enterprise/server/session"
|
"enterprise/server/session"
|
||||||
"enterprise/worker"
|
|
||||||
"github.com/gin-gonic/gin"
|
"github.com/gin-gonic/gin"
|
||||||
"github.com/spf13/cast"
|
"github.com/spf13/cast"
|
||||||
"net/http"
|
"net/http"
|
||||||
|
@ -54,6 +54,10 @@ func (s *Staff) List(ctx *gin.Context) {
|
||||||
|
|
||||||
func (s *Staff) Create(ctx *gin.Context) {
|
func (s *Staff) Create(ctx *gin.Context) {
|
||||||
sess := ctx.Keys[session.ContextSession].(*session.AdminSession)
|
sess := ctx.Keys[session.ContextSession].(*session.AdminSession)
|
||||||
|
if sess.GetAdmin().GetConfig().IsHr() {
|
||||||
|
panic(config.ErrPriv.New())
|
||||||
|
}
|
||||||
|
|
||||||
var req api.StaffCreateReq
|
var req api.StaffCreateReq
|
||||||
session.CheckParamError(ctx.ShouldBindJSON(&req))
|
session.CheckParamError(ctx.ShouldBindJSON(&req))
|
||||||
ctx.Keys[session.ContextRequest] = req
|
ctx.Keys[session.ContextRequest] = req
|
||||||
|
@ -61,18 +65,13 @@ func (s *Staff) Create(ctx *gin.Context) {
|
||||||
ctx.JSON(http.StatusOK, session.NewRspOk())
|
ctx.JSON(http.StatusOK, session.NewRspOk())
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *Staff) Pay(ctx *gin.Context) {
|
|
||||||
sess := ctx.Keys[session.ContextSession].(*session.AdminSession)
|
|
||||||
var req api.StaffPayReq
|
|
||||||
session.CheckParamError(ctx.ShouldBindJSON(&req))
|
|
||||||
ctx.Keys[session.ContextRequest] = req
|
|
||||||
service.NewStaffUser().Pay(sess, &req)
|
|
||||||
ctx.JSON(http.StatusOK, session.NewRspOk())
|
|
||||||
}
|
|
||||||
|
|
||||||
func (s *Staff) Update(ctx *gin.Context) {
|
func (s *Staff) Update(ctx *gin.Context) {
|
||||||
var req api.StaffUpdateReq
|
|
||||||
sess := ctx.Keys[session.ContextSession].(*session.AdminSession)
|
sess := ctx.Keys[session.ContextSession].(*session.AdminSession)
|
||||||
|
if sess.GetAdmin().GetConfig().IsHr() {
|
||||||
|
panic(config.ErrPriv.New())
|
||||||
|
}
|
||||||
|
var req api.StaffUpdateReq
|
||||||
|
|
||||||
session.CheckParamError(ctx.ShouldBindJSON(&req))
|
session.CheckParamError(ctx.ShouldBindJSON(&req))
|
||||||
ctx.Keys[session.ContextRequest] = req
|
ctx.Keys[session.ContextRequest] = req
|
||||||
service.NewStaffUser().Update(sess, &req)
|
service.NewStaffUser().Update(sess, &req)
|
||||||
|
@ -80,15 +79,30 @@ func (s *Staff) Update(ctx *gin.Context) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *Staff) Delete(ctx *gin.Context) {
|
func (s *Staff) Delete(ctx *gin.Context) {
|
||||||
|
sess := ctx.Keys[session.ContextSession].(*session.AdminSession)
|
||||||
|
if sess.GetAdmin().GetConfig().IsHr() {
|
||||||
|
panic(config.ErrPriv.New())
|
||||||
|
}
|
||||||
|
|
||||||
id := cast.ToInt64(ctx.Query("id"))
|
id := cast.ToInt64(ctx.Query("id"))
|
||||||
session.CheckDBError(dao.NewStaffUserDao().Delete(id))
|
session.CheckDBError(dao.NewStaffUserDao().Delete(id))
|
||||||
ctx.JSON(http.StatusOK, session.NewRspOk())
|
ctx.JSON(http.StatusOK, session.NewRspOk())
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *Staff) Salary(ctx *gin.Context) {
|
func (s *Staff) Pay(ctx *gin.Context) {
|
||||||
|
|
||||||
sess := ctx.Keys[session.ContextSession].(*session.AdminSession)
|
sess := ctx.Keys[session.ContextSession].(*session.AdminSession)
|
||||||
|
if sess.GetAdmin().GetConfig().IsFinance() {
|
||||||
|
panic(config.ErrPriv.New())
|
||||||
|
}
|
||||||
|
var req api.StaffPayReq
|
||||||
|
session.CheckParamError(ctx.ShouldBindJSON(&req))
|
||||||
|
ctx.Keys[session.ContextRequest] = req
|
||||||
|
service.NewStaffUser().Pay(sess, &req)
|
||||||
|
ctx.JSON(http.StatusOK, session.NewRspOk())
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *Staff) Salary(ctx *gin.Context) {
|
||||||
|
sess := ctx.Keys[session.ContextSession].(*session.AdminSession)
|
||||||
month := ctx.Query("month")
|
month := ctx.Query("month")
|
||||||
tp := ctx.Query("type")
|
tp := ctx.Query("type")
|
||||||
|
|
||||||
|
@ -113,12 +127,3 @@ func (s *Staff) Salary(ctx *gin.Context) {
|
||||||
serv.Summary(corp.Id, month, ctx)
|
serv.Summary(corp.Id, month, ctx)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *Staff) SyncStaffSalary(ctx *gin.Context) {
|
|
||||||
corpId := cast.ToInt64(ctx.Query("cid"))
|
|
||||||
if corpId == 0 {
|
|
||||||
corpId = 1000
|
|
||||||
}
|
|
||||||
go new(worker.Staff).SyncStaffSalary(corpId, "")
|
|
||||||
ctx.JSON(http.StatusOK, session.NewRspOk())
|
|
||||||
}
|
|
||||||
|
|
|
@ -29,7 +29,6 @@ func initRoutge(engine *gin.Engine) {
|
||||||
apiGroup.Any("/checkin/sync", controller.NewStaffCheckin().Sync)
|
apiGroup.Any("/checkin/sync", controller.NewStaffCheckin().Sync)
|
||||||
|
|
||||||
group.GET("/staff/salary", controller.NewStaff().Salary)
|
group.GET("/staff/salary", controller.NewStaff().Salary)
|
||||||
group.GET("/staff/sync/salary", controller.NewStaff().SyncStaffSalary)
|
|
||||||
noTokenGroup.POST("/staff/login", controller.NewStaff().Login)
|
noTokenGroup.POST("/staff/login", controller.NewStaff().Login)
|
||||||
|
|
||||||
apiGroup.GET("/staff/salary", controller.NewSalary().List)
|
apiGroup.GET("/staff/salary", controller.NewSalary().List)
|
||||||
|
|
Loading…
Reference in New Issue