作者 yangfu

机会权限

... ... @@ -5,6 +5,7 @@ import (
"gitlab.fjmaimaimai.com/mmm-go/gocomm/pkg/log"
"opp/controllers"
"opp/protocol"
"opp/services/chance"
"opp/services/user"
)
... ... @@ -198,5 +199,5 @@ func (this *UserController) Permission() {
return
}
header := controllers.GetRequestHeader(this.Ctx)
msg = protocol.NewReturnResponse(user.Permission(header, request))
msg = protocol.NewReturnResponse(chance.Permission(header, request))
}
... ...
... ... @@ -130,6 +130,15 @@ func GetAuditFlowProcessList(chanceId int64) (v []*AuditFlowProcess, err error)
return nil, err
}
func GetAuditFlowProcessListByAuditUser(chanceId int64, auditUserId int64) (v []*AuditFlowProcess, err error) {
o := orm.NewOrm()
sql := "select id,review_status from audit_flow_process where chance_id=? and enable_status=1 and uid=?"
if _, err = o.Raw(sql, chanceId, auditUserId).QueryRows(&v); err == nil {
return v, nil
}
return nil, err
}
//删除机会时关闭所有审核信息
func CloseAuditFlowProcess(orm orm.Ormer, chanceId int64) (err error) {
sql := "update audit_flow_process set enable_status =0,is_active=0,update_at=now() where chance_id=?"
... ...
... ... @@ -106,10 +106,14 @@ type TypeTotalItem struct {
/*Permission 用户权限*/
type PermissionRequest struct {
ChanceId int64 `json:"chanceId"`
}
type PermissionResponse struct {
EditSorce int `json:"editSorce"` //修改评分 1:允许 0:不允许
Check int `json:"-"`
DepartmentIds []int64 `json:"-"` //指定部门编号
EditScore int `json:"editScore"` //修改评分 1:允许 0:不允许
EditPublicStatus int `json:"editPublicStatus"` //修改公开状态 1:允许 0:不允许
CloseChance int `json:"closeChance"` //关闭机会 1:允许 0:不允许
CloseChance int `json:"-"` //关闭机会 1:允许 0:不允许
EditChance int `json:"editChance"` //编辑机会 1:允许 0:不允许
}
... ...
... ... @@ -141,14 +141,17 @@ type OptionOpportunity struct {
EditPublicStatus int `json:"edit_public_status"`
CloseChance int `json:"close_chance"`
EditChance int `json:"edit_chance"`
DepartmentIds []int
}
/*
机会管理高级设置中的 check
1:禁止查看所有机会:禁止查看所有机会(除自己提交过的机会及可执行审核操作的机会)
2:仅查看自己部门和公开机会:查看对自己部门公开的机会+公司公开的机会
3:特定部门的机会:自由配置选定部门的待审核、公司公开、部门公开的机会+查看对自己部门公开的机会
4:查看所有机会:查看所有部门的待审核机会、公开机会及部门公开机会
1:禁止查看所有机会:禁止查看所有机会(除自己提交过的机会及可执行审核操作的机会)->禁止查看所有机会:禁止查看所有机会(除自己提交过的机会及可执行审核操作的机会);
2:仅查看自己部门和公开机会:查看对自己部门公开的机会+公司公开的机会 -> 仅查看自己部门和公开机会:查看对自己所在部门公开的机会+公司公开的机会;
3:特定部门的机会:自由配置选定部门的待审核、公司公开、部门公开的机会+查看对自己部门公开的机会 -> 特定部门的公开机会:选定部门提交的公司公开、部门公开的机会;>只选择部门
4:查看所有机会:查看所有部门的待审核机会、公开机会及部门公开机会 -> 查看所有公开机会:查看所有部门的公开机会及部门公开机会;
5. -> 特定部门的待审核机会:选定部门提交的待审核机会。>只选择部门(这条这期可以先不做)
*/
const (
OpportunityCheckLv1 int = 1
... ...
... ... @@ -1833,3 +1833,63 @@ func ChanceDelete(header *protocol.RequestHeader, request *protocol.ChanceDelete
orm.Commit()
return
}
//用户机会权限
func Permission(header *protocol.RequestHeader, request *protocol.PermissionRequest) (rsp *protocol.PermissionResponse, err error) {
var (
op *agg.OptionOpportunity
chance *models.Chance
auditProcess []*models.AuditFlowProcess
isApproving bool //是否审核中
)
rsp = &protocol.PermissionResponse{}
if op, err = agg.GetUserPermission(header.UserId); err == nil {
rsp.EditChance = op.EditChance
rsp.EditPublicStatus = op.EditPublicStatus
rsp.EditScore = op.EditSorce
rsp.Check = op.Check
}
for i := range op.CheckOption.Departments {
rsp.DepartmentIds = append(rsp.DepartmentIds, op.CheckOption.Departments[i].Id)
}
//判断机会权限
if request.ChanceId > 0 {
if chance, err = models.GetChanceById(request.ChanceId); err != nil {
err = protocol.NewErrWithMessage(5101)
return
}
//本人
if chance.UserId == header.UserId {
//审核通过 或者 已经被人审核过 就不能编辑了
if len(chance.ApproveData) > 0 || chance.ReviewStatus == protocol.ReviewStatusPass {
rsp.EditChance = 0
}
return
}
//他人
if auditProcess, err = models.GetAuditFlowProcessListByAuditUser(request.ChanceId, header.UserId); err != nil {
if err == orm.ErrNoRows {
if chance.ReviewStatus != protocol.ReviewStatusPass {
rsp.EditChance = 0
}
err = nil
return
}
}
for i := range auditProcess {
if auditProcess[i].ReviewStatus == protocol.ReviewStatusAuditging {
isApproving = true
log.Debug(fmt.Sprintf("用户:%v 审核中 编辑权限:true", header.UserId))
break
}
}
if isApproving {
rsp.EditChance = 1
} else if chance.ReviewStatus == protocol.ReviewStatusAuditging && len(auditProcess) > 0 {
rsp.EditChance = 0
log.Debug(fmt.Sprintf("用户:%v 审核过,并且当前机会在审核中 编辑权限:false", header.UserId))
}
}
return
}
... ...
... ... @@ -447,18 +447,3 @@ func UserStatistics(header *protocol.RequestHeader, request *protocol.UserStatis
//log.Debug(buf.String())
return
}
//用户权限
func Permission(header *protocol.RequestHeader, request *protocol.PermissionRequest) (rsp *protocol.PermissionResponse, err error) {
var (
op *agg.OptionOpportunity
)
rsp = &protocol.PermissionResponse{}
if op, err = agg.GetUserPermission(header.UserId); err == nil {
rsp.EditChance = op.EditChance
//rsp.CloseChance = op.CloseChance
rsp.EditPublicStatus = op.EditPublicStatus
rsp.EditSorce = op.EditSorce
}
return
}
... ...