按钮列表
- 删除按钮
- 重新分享按钮
- 取消分享按钮
- 分享按钮
1、删除物料
接口地址
http://localhost:9090/service/com.apexsoft.protocol.material.library.frontPage.FrontPageInfoService/operMaterialInfo
关联数据表
T_MATL_INFO【物料基本表】:存储物料基本信息,在列表可支持上传单个制品文件和批量制品、下载、分享、关联、打标签、上架、下架等操作;
T_MATL_ATT【物料附件表】:存储附件信息
T_MATL_OPER_HIS【操作历史记录表】:存储操作记录需求分析
- 支持多选物料后逻辑删除物料条目,删除后只能在回收站可见;
- 操作记录保存;
-
业务逻辑
记录操作,插入此次操作录到操作历史记录表;
- 逻辑删除物料信息,删除该条物料在物料基本表的记录;
- 查询该条物料包含的附件,并执行删除附件操作(后续看代码,同事修改的);
-
测试结果
测试入参:
{"materialId": "3077","operType": "3"}
bug解决
问题描述:

原因:
在数据表中没有这个字段名称,所以sql中写了也插入不进去
解决方案:
删除sql中多余的字段名称

总结:
mybatis中的标识符无效、无效的类型1111 等报错,一般按照提示查找对应字段和数据库表中的字段是否对应。2、重新分享
接口地址
http://localhost:9090/service/com.apexsoft.protocol.material.library.frontPage.FrontPageInfoService/operAgainShareMaterialInfo
关联数据表
CRM.T_MATL_SHR【物料分享表】:存储分享物料的记录信息
需求分析
支持选中单个或多个物料信息,重新分享已分享的物料;
若为单选,则会带出已分享物料的信息,若为多选,则不会,需要重新指定。
业务逻辑
重新分享的物料列表都是分享表中的记录,因此,选中之后,将state操作为state=3
接口提供物料id参数,支持单选、多选;
- 单选物料,通过物料id将页面上的信息提供出来,并且更改分享表的状态为“已分享”;
- 多选物料,只需要更改分享表的状态为“已分享”;
TODO:
单选物料时,无法确定分享表中的唯一记录!
原始xml代码:
<update id="operAgainShareMaterialInfo" parameterType="java.util.Map">UPDATE CRM.T_MATL_SHRSET<if test="materialIds != null and materialIds != '' and materialIds.length() > 1 and materialIds.indexOf(',') != -1">SHR_AUTH = #{shrAuth},SHR_TO = #{shrTo},ST_TM = #{stTime},EXP_TM = #{expTime},</if>STATE = 1WHERE MATL_ID =(SELECT COLUMN_VALUE MATL_IDS FROM TABLE(SPLIT(#{materialIds})))</update>
3、分享物料
接口地址
http://localhost:9000/api/service/com.apexsoft.protocol.material.library.frontPage.FrontPageInfoService/operShareMaterialInfo
关联数据表
CRM.T_MATL_SHR【物料分享表】:存储分享物料的记录信息
STATE:1-已分享;2-已取消分享;3-重新分享
需求分析
- 支持单选或者多选物料(物料id支持多个);
- 被分享人也支持单个或者多个(shareUser);
- 支持单选或者多选分享权限;
如果多选物料,并且多选被分享人,应当按照物料数目来决定分享表记录数;
业务逻辑

-
测试结果
单个物料多个被分享人
多个物料多个被分享人

这里有个不算bug的bug,物料入参 “3142,,3137”
结果数据确实写入了!
毕竟物料是通过勾选来确定的,所以不算bug。
那么如果是被分享人呢?

这个bug待处理【TODO】
思路:对该参数进行分割并且判空,然后再拼接??
如果4、取消分享
疑问?
入参的shareId是指分享表里面的记录ID?目前代码是这么写的!

