feat: 合并 admin/manager 重复页 + 公示意向 + 劳务签署
页合并 (admin/manager 共用, route.path 角色感知): - expert: Experts.vue + ExpertNew.vue (list/new/edit/view 一套) - sponsor-orgs: SponsorOrgs.vue - sponsor-people: SponsorPeople.vue + SponsorPersonNew.vue + SponsorPersonDetail.vue - executor-orgs: ExecutorOrgs.vue - executor-people: ExecutorPeople.vue + ExecutorPersonNew.vue + ExecutorPersonDetail.vue - 给 SponsorPeople / ExecutorPeople op 列补上 查看/编辑 按钮 (潜在 bug 修复) - 详情弹窗统一用 el-descriptions 风格 (替代 admin 旧版 ElMessageBox.alert) 后端: - BizSignController + BizSignServiceImpl + PdfService (劳务签署 PDF 流程) - BizPublicityIntentController (公示意向: 支持/执行) - BizPublicitySupportIntent / BizPublicityExecutionIntent ExportVo - BizMeetingAttendee 字段合并 (bank_region 替代 bankProvince/bankCity) - BizExpert 字段合并 (id_card_attachments CSV, bank_region) - Excel 导入模板精简 (开户行 1 列) 前端: - doctor/SignFill + SignContract + SignSuccess (劳务签署 3 页流程) - ImportResultDialog 通用组件 - IdCardUploader 重构 (单 v-model:idCardAttachments, CSV 格式) - AreaCascader 调整 - Login.vue + AdminLayout.vue + PortalShell.vue + Home.vue 适配 DB: 字段合并 (id_card_front/back → id_card_attachments, bank_province/city → bank_region)
This commit is contained in:
@@ -147,6 +147,24 @@ public interface SysUserMapper
|
||||
*/
|
||||
public SysUser checkPhoneUnique(String phonenumber);
|
||||
|
||||
/**
|
||||
* 按手机号列表批量查询 (IN clause), 用于批量导入专家时识别已存在的 sys_user
|
||||
* caller 控制单批 ≤1000, MySQL max_allowed_packet 默认安全范围
|
||||
*
|
||||
* @param phones 手机号列表
|
||||
* @return SysUser 列表 (含 userId/phonenumber), 无匹配返回空列表
|
||||
*/
|
||||
public List<SysUser> selectByPhoneList(@Param("phones") List<String> phones);
|
||||
|
||||
/**
|
||||
* 批量插入 sys_user (foreach, caller 控制 ≤100/批)
|
||||
* ⚠️ useGeneratedKeys 在 foreach 内不可靠, 不依赖返回 userId, 应插完后再 IN 查回
|
||||
*
|
||||
* @param list SysUser 列表 (password 须已 encrypt)
|
||||
* @return 影响行数
|
||||
*/
|
||||
public int batchInsertUsers(@Param("list") List<SysUser> list);
|
||||
|
||||
/**
|
||||
* 校验email是否唯一
|
||||
*
|
||||
|
||||
@@ -183,7 +183,28 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
<select id="checkPhoneUnique" parameterType="String" resultMap="SysUserResult">
|
||||
select user_id, phonenumber from sys_user where phonenumber = #{phonenumber} and del_flag = '0' limit 1
|
||||
</select>
|
||||
|
||||
|
||||
<!-- 按手机号列表 IN 查询, 识别批量导入时已存在的 sys_user -->
|
||||
<select id="selectByPhoneList" resultMap="SysUserResult">
|
||||
select user_id, phonenumber from sys_user
|
||||
where phonenumber in
|
||||
<foreach collection="phones" item="p" open="(" separator="," close=")">
|
||||
#{p}
|
||||
</foreach>
|
||||
and del_flag = '0'
|
||||
</select>
|
||||
|
||||
<!-- 批量插入 sys_user (caller 控制单批 ≤100). 不依赖 useGeneratedKeys 返回 userId, 由 service 层插完再 IN 查回 -->
|
||||
<insert id="batchInsertUsers" parameterType="list">
|
||||
insert into sys_user(user_name, nick_name, phonenumber, password, status, del_flag, role_type, create_by, create_time)
|
||||
values
|
||||
<foreach collection="list" item="u" separator=",">
|
||||
(#{u.userName}, #{u.nickName}, #{u.phonenumber},
|
||||
#{u.password}, #{u.status}, #{u.delFlag}, #{u.roleType},
|
||||
#{u.createBy}, sysdate())
|
||||
</foreach>
|
||||
</insert>
|
||||
|
||||
<select id="checkEmailUnique" parameterType="String" resultMap="SysUserResult">
|
||||
select user_id, email from sys_user where email = #{email} and del_flag = '0' limit 1
|
||||
</select>
|
||||
|
||||
Reference in New Issue
Block a user