涉及的表为`c_attachment` 表,这里的附件主要是提供给系统内部其他功能使用附件时调用的,一般不会在附件列表页面进行附件上传操作(这里做了一个上传按钮,只是为了给大家演示)。 上传附件接口`AttachmentController#upload` 需要几个参数: 1. MultipartFile file : 上传的附件 2. Boolean isSingle: 是否单个附件,true时,会先删除 bizId和bizType相关的所有附件,保证同一类型,同一业务id仅有一个附件。 3. Long id: 附件的id,id不为空时,会将附件上传后的信息对该附件进行修改,而不是新增。 4. String bizId:业务id 。bizId为空时,附件接口会自动生成一个业务ID,并返回给调用方,调用方新增数据时使用返回的业务ID即可。如用户头像功能需要记录用户ID、请假审批证明材料需要记录请假审批ID。 5. String bizType: 业务类型。 每种类型自定义一个全局唯一的标识,如用户头像、请假审批的证明材料等 用户头像上传以及用户新增流程1: 1. 选择附件后,立即上传,入参为:bizType=USER_AVATAR, isSingle=true, bizId=null。 2. 因为bizId传的是null,所以附件接口会生成一个bizId并返回, 所以只需要保证用户新增时,使用返回的这个bizId作为用户的主键ID 即可。 3. 调用用户新增接口时,将返回的bizId作为用户的id 传入。 用户头像上传以及用户新增流程2: 1. 弹出新增页面时,先异步调用后台接口`DashboardController#generate` ,获取唯一的分布式ID,假设为: 10000 2. 选择附件后,立即上传,入参为:bizType=USER_AVATAR, isSingle=true, bizId=10000。 3. 调用用户新增接口时,将10000作为用户的id 传入。 上面2种方案都行,自行决定使用哪种方案。 本系统中用户头像上传使用的是流程1.