fix(hrm): 修复修改员工手机号报 500 - 隔离软删除历史数据占用的唯一索引
现象:员工档案修改手机号,若该手机号被「已软删除」的历史档案占用,接口返回 500「系统异常」,日志报 DuplicateKeyException: Duplicate entry 'xxx' for key 'hrm_employee.uk_phone'
原因:hrm_employee.uk_phone 唯一索引建在 phone 列上(不含 deleted),已软删除的记录仍占用该手机号;而 selectByPhone 会被逻辑删除插件过滤,预校验查不到,写库时被数据库唯一索引拦下
修复(不改库结构):
1. 新增 HrmEmployeeMapper.selectByPhoneIncludeDeleted,可查到软删除记录
2. 新增 validatePhoneUniqueAndReleaseStale:手机号被软删除历史记录占用时自动清空其手机号释放索引;被活跃员工占用时抛业务异常「手机号已存在」
3. createEmployee / updateEmployee / importEmployeeList 三处统一走该校验
4. deleteEmployee 软删除前清空 phone 与 user_id,避免历史数据长期占用 uk_phone / uk_user_id
验证:改手机号同步账号OK;撞活跃员工返回业务错误(1030000002)不再500;撞软删除历史数据自动释放并保存成功