feat: 完成产线与仓储系统多模块迭代升级
本次迭代覆盖MES与WMS核心业务: 1. 新增接驳台托盘传感器读取与AGV对接能力 2. 完善工单排产、备料流程与权限体系拆分 3. 优化看板接口与前端路由、样式 4. 新增操作日志、库存盘点与角色保护逻辑 5. 修复代理地址、BOM保存等已知问题
This commit is contained in:
@@ -483,22 +483,30 @@ func (s *Service) CreateRole(ctx context.Context, req RoleReq) error {
|
||||
|
||||
func (s *Service) UpdateRole(ctx context.Context, req RoleReq) error {
|
||||
// 内置管理员角色(SUPER_ADMIN)不允许修改其权限(admin 拥有所有权限,且不可被缩减)
|
||||
if rl, e := s.ctx.EntClient.Role.Get(ctx, req.Id); e == nil && rl.Code == "SUPER_ADMIN" {
|
||||
rl, err := s.ctx.EntClient.Role.Get(ctx, req.Id)
|
||||
if err != nil {
|
||||
return errors.New("角色不存在")
|
||||
}
|
||||
if rl.Code == "SUPER_ADMIN" {
|
||||
return errors.New("内置管理员角色不允许修改其权限")
|
||||
}
|
||||
// 角色编码创建后不可修改(对齐 WMS 语义;内置角色 code 变更会破坏权限体系)
|
||||
if req.Code != "" && req.Code != rl.Code {
|
||||
return errors.New("角色编码创建后不可修改")
|
||||
}
|
||||
return s.ctx.EntClient.Role.UpdateOneID(req.Id).
|
||||
SetName(req.Name).SetCode(req.Code).SetRemark(req.Remark).
|
||||
SetName(req.Name).SetCode(rl.Code).SetRemark(req.Remark).
|
||||
SetPermissionCodes(req.PermissionCodes).Exec(ctx)
|
||||
}
|
||||
|
||||
func (s *Service) DeleteRole(ctx context.Context, id int) error {
|
||||
// 保护:不可删除超级管理员角色
|
||||
// 保护:不可删除内置角色(超级管理员/生产操作员/质检员)
|
||||
r, err := s.ctx.EntClient.Role.Get(ctx, id)
|
||||
if err != nil {
|
||||
return errors.New("角色不存在")
|
||||
}
|
||||
if r.Code == "SUPER_ADMIN" {
|
||||
return errors.New("超级管理员角色不允许删除")
|
||||
if r.Code == "SUPER_ADMIN" || r.Code == "OPERATOR" || r.Code == "INSPECTOR" {
|
||||
return errors.New("内置角色不允许删除")
|
||||
}
|
||||
// 保护:仍有关联用户的角色不可删除(避免产生无主用户/失去全部管理员)
|
||||
cnt, err := s.ctx.EntClient.User.Query().
|
||||
|
||||
Reference in New Issue
Block a user