chore: 完成多系统功能迭代与优化
1. 通用优化: - 统一系统标题为"库房客户端"/"MES产线控制",移除北自所前缀 - 调整内置账号密码为统一123456,优化密码校验逻辑 - 新增数据库自动创建逻辑,简化部署流程 - 修复日志时间格式配置,优化日志输出 - 新增纯数字密码安全提示 2. MES系统优化: - 新增日排产管理功能,支持增删改查与自动算料生成备料单 - 重构BOM模块,改为按产品编码维护而非工单维度 - 新增工艺参数模板配置与手动报工页面 - 新增产品类型自动编码功能 - 优化菜单结构,调整工单管理、扫码报工等页面名称与路由 - 新增删除日排产接口与权限保护 - 修复物料清单查询逻辑,适配新BOM结构 - 新增refreshToken支持,优化登录会话管理 3. WMS系统优化: - 新增基础数据维护页面,支持区域与物料档案管理 - 新增工单列表下拉接口,对接MES获取未完成工单优先展示 - 优化入库管理提示文案,替换英文提示为中文 - 修复精密件入库校验逻辑,优化错误提示 - 优化Excel导入功能,新增备注字段支持 - 优化登录页面与菜单文案,统一备料台账名称 - 新增自动打开浏览器功能,优化客户端启动体验 - 修复备料出库页面查询提示文案 - 新增WMS与MES对接配置,完善内部API调用逻辑 4. 其他优化: - 删除冗余的旧版静态资源文件,更新资源引用路径 - 新增帮助文档,完善基础数据模块说明 - 修复多处文案不统一、英文残留问题
This commit is contained in:
@@ -164,6 +164,9 @@ func (s *Service) ChangePassword(ctx context.Context, userId int, req ChangePass
|
||||
if len(req.NewPassword) < 6 {
|
||||
return errors.New("新密码长度至少 6 位")
|
||||
}
|
||||
if err := checkPasswordStrong(req.NewPassword); err != nil {
|
||||
return err
|
||||
}
|
||||
usr, err := s.ctx.EntClient.User.Get(ctx, userId)
|
||||
if err != nil {
|
||||
return errors.New("用户不存在")
|
||||
@@ -189,7 +192,28 @@ type UserReq struct {
|
||||
Status string `json:"status"`
|
||||
}
|
||||
|
||||
// checkPasswordStrong 校验密码:长度>=6 且不能是纯数字
|
||||
func checkPasswordStrong(pwd string) error {
|
||||
if len(pwd) < 6 {
|
||||
return errors.New("密码长度至少 6 位")
|
||||
}
|
||||
allDigit := true
|
||||
for _, r := range pwd {
|
||||
if r < '0' || r > '9' {
|
||||
allDigit = false
|
||||
break
|
||||
}
|
||||
}
|
||||
if allDigit {
|
||||
return errors.New("密码不能是纯数字")
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (s *Service) CreateUser(ctx context.Context, req UserReq) error {
|
||||
if err := checkPasswordStrong(req.Password); err != nil {
|
||||
return err
|
||||
}
|
||||
hash, err := bcrypt.GenerateFromPassword([]byte(req.Password), bcrypt.DefaultCost)
|
||||
if err != nil {
|
||||
return err
|
||||
@@ -210,6 +234,9 @@ func (s *Service) CreateUser(ctx context.Context, req UserReq) error {
|
||||
func (s *Service) UpdateUser(ctx context.Context, req UserReq) error {
|
||||
u := s.ctx.EntClient.User.UpdateOneID(req.Id).SetRoleId(req.RoleId).SetName(req.Name)
|
||||
if req.Password != "" {
|
||||
if err := checkPasswordStrong(req.Password); err != nil {
|
||||
return err
|
||||
}
|
||||
hash, _ := bcrypt.GenerateFromPassword([]byte(req.Password), bcrypt.DefaultCost)
|
||||
u.SetPassword(string(hash))
|
||||
}
|
||||
@@ -251,6 +278,20 @@ func (s *Service) UpdateRole(ctx context.Context, req RoleReq) error {
|
||||
}
|
||||
|
||||
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("超级管理员角色不允许删除")
|
||||
}
|
||||
// 保护:仍有关联用户的角色不可删除(避免产生无主用户/失去全部管理员)
|
||||
cnt, err := s.ctx.EntClient.User.Query().
|
||||
Where(user.RoleId(id)).Count(ctx)
|
||||
if err == nil && cnt > 0 {
|
||||
return errors.New("该角色下仍有用户,请先移除相关用户")
|
||||
}
|
||||
return s.ctx.EntClient.Role.DeleteOneID(id).Exec(ctx)
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user