refactor(缺陷管理): 优化缺陷功能关联附件逻辑
This commit is contained in:
parent
030259d11e
commit
fe0cf474fc
|
@ -13,35 +13,31 @@ import java.util.ArrayList;
|
|||
import java.util.Arrays;
|
||||
|
||||
@Data
|
||||
public class BugAttachment implements Serializable {
|
||||
public class BugLocalAttachment implements Serializable {
|
||||
@Schema(description = "ID", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
@NotBlank(message = "{bug_attachment.id.not_blank}", groups = {Updated.class})
|
||||
@Size(min = 1, max = 255, message = "{bug_attachment.id.length_range}", groups = {Created.class, Updated.class})
|
||||
@NotBlank(message = "{bug_local_attachment.id.not_blank}", groups = {Updated.class})
|
||||
@Size(min = 1, max = 255, message = "{bug_local_attachment.id.length_range}", groups = {Created.class, Updated.class})
|
||||
private String id;
|
||||
|
||||
@Schema(description = "缺陷ID", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
@NotBlank(message = "{bug_attachment.bug_id.not_blank}", groups = {Created.class})
|
||||
@Size(min = 1, max = 50, message = "{bug_attachment.bug_id.length_range}", groups = {Created.class, Updated.class})
|
||||
@NotBlank(message = "{bug_local_attachment.bug_id.not_blank}", groups = {Created.class})
|
||||
@Size(min = 1, max = 50, message = "{bug_local_attachment.bug_id.length_range}", groups = {Created.class, Updated.class})
|
||||
private String bugId;
|
||||
|
||||
@Schema(description = "文件ID", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
@NotBlank(message = "{bug_attachment.file_id.not_blank}", groups = {Created.class})
|
||||
@Size(min = 1, max = 50, message = "{bug_attachment.file_id.length_range}", groups = {Created.class, Updated.class})
|
||||
@NotBlank(message = "{bug_local_attachment.file_id.not_blank}", groups = {Created.class})
|
||||
@Size(min = 1, max = 50, message = "{bug_local_attachment.file_id.length_range}", groups = {Created.class, Updated.class})
|
||||
private String fileId;
|
||||
|
||||
@Schema(description = "文件名称", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
@NotBlank(message = "{bug_attachment.file_name.not_blank}", groups = {Created.class})
|
||||
@Size(min = 1, max = 255, message = "{bug_attachment.file_name.length_range}", groups = {Created.class, Updated.class})
|
||||
@NotBlank(message = "{bug_local_attachment.file_name.not_blank}", groups = {Created.class})
|
||||
@Size(min = 1, max = 255, message = "{bug_local_attachment.file_name.length_range}", groups = {Created.class, Updated.class})
|
||||
private String fileName;
|
||||
|
||||
@Schema(description = "文件大小", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
@NotNull(message = "{bug_attachment.size.not_blank}", groups = {Created.class})
|
||||
@NotNull(message = "{bug_local_attachment.size.not_blank}", groups = {Created.class})
|
||||
private Long size;
|
||||
|
||||
@Schema(description = "是否本地", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
@NotNull(message = "{bug_attachment.local.not_blank}", groups = {Created.class})
|
||||
private Boolean local;
|
||||
|
||||
@Schema(description = "创建人")
|
||||
private String createUser;
|
||||
|
||||
|
@ -56,7 +52,6 @@ public class BugAttachment implements Serializable {
|
|||
fileId("file_id", "fileId", "VARCHAR", false),
|
||||
fileName("file_name", "fileName", "VARCHAR", false),
|
||||
size("size", "size", "BIGINT", true),
|
||||
local("local", "local", "BIT", true),
|
||||
createUser("create_user", "createUser", "VARCHAR", false),
|
||||
createTime("create_time", "createTime", "BIGINT", false);
|
||||
|
|
@ -3,14 +3,14 @@ package io.metersphere.bug.domain;
|
|||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class BugAttachmentExample {
|
||||
public class BugLocalAttachmentExample {
|
||||
protected String orderByClause;
|
||||
|
||||
protected boolean distinct;
|
||||
|
||||
protected List<Criteria> oredCriteria;
|
||||
|
||||
public BugAttachmentExample() {
|
||||
public BugLocalAttachmentExample() {
|
||||
oredCriteria = new ArrayList<Criteria>();
|
||||
}
|
||||
|
||||
|
@ -444,66 +444,6 @@ public class BugAttachmentExample {
|
|||
return (Criteria) this;
|
||||
}
|
||||
|
||||
public Criteria andLocalIsNull() {
|
||||
addCriterion("`local` is null");
|
||||
return (Criteria) this;
|
||||
}
|
||||
|
||||
public Criteria andLocalIsNotNull() {
|
||||
addCriterion("`local` is not null");
|
||||
return (Criteria) this;
|
||||
}
|
||||
|
||||
public Criteria andLocalEqualTo(Boolean value) {
|
||||
addCriterion("`local` =", value, "local");
|
||||
return (Criteria) this;
|
||||
}
|
||||
|
||||
public Criteria andLocalNotEqualTo(Boolean value) {
|
||||
addCriterion("`local` <>", value, "local");
|
||||
return (Criteria) this;
|
||||
}
|
||||
|
||||
public Criteria andLocalGreaterThan(Boolean value) {
|
||||
addCriterion("`local` >", value, "local");
|
||||
return (Criteria) this;
|
||||
}
|
||||
|
||||
public Criteria andLocalGreaterThanOrEqualTo(Boolean value) {
|
||||
addCriterion("`local` >=", value, "local");
|
||||
return (Criteria) this;
|
||||
}
|
||||
|
||||
public Criteria andLocalLessThan(Boolean value) {
|
||||
addCriterion("`local` <", value, "local");
|
||||
return (Criteria) this;
|
||||
}
|
||||
|
||||
public Criteria andLocalLessThanOrEqualTo(Boolean value) {
|
||||
addCriterion("`local` <=", value, "local");
|
||||
return (Criteria) this;
|
||||
}
|
||||
|
||||
public Criteria andLocalIn(List<Boolean> values) {
|
||||
addCriterion("`local` in", values, "local");
|
||||
return (Criteria) this;
|
||||
}
|
||||
|
||||
public Criteria andLocalNotIn(List<Boolean> values) {
|
||||
addCriterion("`local` not in", values, "local");
|
||||
return (Criteria) this;
|
||||
}
|
||||
|
||||
public Criteria andLocalBetween(Boolean value1, Boolean value2) {
|
||||
addCriterion("`local` between", value1, value2, "local");
|
||||
return (Criteria) this;
|
||||
}
|
||||
|
||||
public Criteria andLocalNotBetween(Boolean value1, Boolean value2) {
|
||||
addCriterion("`local` not between", value1, value2, "local");
|
||||
return (Criteria) this;
|
||||
}
|
||||
|
||||
public Criteria andCreateUserIsNull() {
|
||||
addCriterion("create_user is null");
|
||||
return (Criteria) this;
|
|
@ -1,35 +0,0 @@
|
|||
package io.metersphere.bug.mapper;
|
||||
|
||||
import io.metersphere.bug.domain.BugAttachment;
|
||||
import io.metersphere.bug.domain.BugAttachmentExample;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public interface BugAttachmentMapper {
|
||||
long countByExample(BugAttachmentExample example);
|
||||
|
||||
int deleteByExample(BugAttachmentExample example);
|
||||
|
||||
int deleteByPrimaryKey(String id);
|
||||
|
||||
int insert(BugAttachment record);
|
||||
|
||||
int insertSelective(BugAttachment record);
|
||||
|
||||
List<BugAttachment> selectByExample(BugAttachmentExample example);
|
||||
|
||||
BugAttachment selectByPrimaryKey(String id);
|
||||
|
||||
int updateByExampleSelective(@Param("record") BugAttachment record, @Param("example") BugAttachmentExample example);
|
||||
|
||||
int updateByExample(@Param("record") BugAttachment record, @Param("example") BugAttachmentExample example);
|
||||
|
||||
int updateByPrimaryKeySelective(BugAttachment record);
|
||||
|
||||
int updateByPrimaryKey(BugAttachment record);
|
||||
|
||||
int batchInsert(@Param("list") List<BugAttachment> list);
|
||||
|
||||
int batchInsertSelective(@Param("list") List<BugAttachment> list, @Param("selective") BugAttachment.Column ... selective);
|
||||
}
|
|
@ -0,0 +1,35 @@
|
|||
package io.metersphere.bug.mapper;
|
||||
|
||||
import io.metersphere.bug.domain.BugLocalAttachment;
|
||||
import io.metersphere.bug.domain.BugLocalAttachmentExample;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public interface BugLocalAttachmentMapper {
|
||||
long countByExample(BugLocalAttachmentExample example);
|
||||
|
||||
int deleteByExample(BugLocalAttachmentExample example);
|
||||
|
||||
int deleteByPrimaryKey(String id);
|
||||
|
||||
int insert(BugLocalAttachment record);
|
||||
|
||||
int insertSelective(BugLocalAttachment record);
|
||||
|
||||
List<BugLocalAttachment> selectByExample(BugLocalAttachmentExample example);
|
||||
|
||||
BugLocalAttachment selectByPrimaryKey(String id);
|
||||
|
||||
int updateByExampleSelective(@Param("record") BugLocalAttachment record, @Param("example") BugLocalAttachmentExample example);
|
||||
|
||||
int updateByExample(@Param("record") BugLocalAttachment record, @Param("example") BugLocalAttachmentExample example);
|
||||
|
||||
int updateByPrimaryKeySelective(BugLocalAttachment record);
|
||||
|
||||
int updateByPrimaryKey(BugLocalAttachment record);
|
||||
|
||||
int batchInsert(@Param("list") List<BugLocalAttachment> list);
|
||||
|
||||
int batchInsertSelective(@Param("list") List<BugLocalAttachment> list, @Param("selective") BugLocalAttachment.Column ... selective);
|
||||
}
|
|
@ -1,13 +1,12 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="io.metersphere.bug.mapper.BugAttachmentMapper">
|
||||
<resultMap id="BaseResultMap" type="io.metersphere.bug.domain.BugAttachment">
|
||||
<mapper namespace="io.metersphere.bug.mapper.BugLocalAttachmentMapper">
|
||||
<resultMap id="BaseResultMap" type="io.metersphere.bug.domain.BugLocalAttachment">
|
||||
<id column="id" jdbcType="VARCHAR" property="id" />
|
||||
<result column="bug_id" jdbcType="VARCHAR" property="bugId" />
|
||||
<result column="file_id" jdbcType="VARCHAR" property="fileId" />
|
||||
<result column="file_name" jdbcType="VARCHAR" property="fileName" />
|
||||
<result column="size" jdbcType="BIGINT" property="size" />
|
||||
<result column="local" jdbcType="BIT" property="local" />
|
||||
<result column="create_user" jdbcType="VARCHAR" property="createUser" />
|
||||
<result column="create_time" jdbcType="BIGINT" property="createTime" />
|
||||
</resultMap>
|
||||
|
@ -70,15 +69,15 @@
|
|||
</where>
|
||||
</sql>
|
||||
<sql id="Base_Column_List">
|
||||
id, bug_id, file_id, file_name, `size`, `local`, create_user, create_time
|
||||
id, bug_id, file_id, file_name, `size`, create_user, create_time
|
||||
</sql>
|
||||
<select id="selectByExample" parameterType="io.metersphere.bug.domain.BugAttachmentExample" resultMap="BaseResultMap">
|
||||
<select id="selectByExample" parameterType="io.metersphere.bug.domain.BugLocalAttachmentExample" resultMap="BaseResultMap">
|
||||
select
|
||||
<if test="distinct">
|
||||
distinct
|
||||
</if>
|
||||
<include refid="Base_Column_List" />
|
||||
from bug_attachment
|
||||
from bug_local_attachment
|
||||
<if test="_parameter != null">
|
||||
<include refid="Example_Where_Clause" />
|
||||
</if>
|
||||
|
@ -89,29 +88,29 @@
|
|||
<select id="selectByPrimaryKey" parameterType="java.lang.String" resultMap="BaseResultMap">
|
||||
select
|
||||
<include refid="Base_Column_List" />
|
||||
from bug_attachment
|
||||
from bug_local_attachment
|
||||
where id = #{id,jdbcType=VARCHAR}
|
||||
</select>
|
||||
<delete id="deleteByPrimaryKey" parameterType="java.lang.String">
|
||||
delete from bug_attachment
|
||||
delete from bug_local_attachment
|
||||
where id = #{id,jdbcType=VARCHAR}
|
||||
</delete>
|
||||
<delete id="deleteByExample" parameterType="io.metersphere.bug.domain.BugAttachmentExample">
|
||||
delete from bug_attachment
|
||||
<delete id="deleteByExample" parameterType="io.metersphere.bug.domain.BugLocalAttachmentExample">
|
||||
delete from bug_local_attachment
|
||||
<if test="_parameter != null">
|
||||
<include refid="Example_Where_Clause" />
|
||||
</if>
|
||||
</delete>
|
||||
<insert id="insert" parameterType="io.metersphere.bug.domain.BugAttachment">
|
||||
insert into bug_attachment (id, bug_id, file_id,
|
||||
file_name, `size`, `local`, create_user,
|
||||
<insert id="insert" parameterType="io.metersphere.bug.domain.BugLocalAttachment">
|
||||
insert into bug_local_attachment (id, bug_id, file_id,
|
||||
file_name, `size`, create_user,
|
||||
create_time)
|
||||
values (#{id,jdbcType=VARCHAR}, #{bugId,jdbcType=VARCHAR}, #{fileId,jdbcType=VARCHAR},
|
||||
#{fileName,jdbcType=VARCHAR}, #{size,jdbcType=BIGINT}, #{local,jdbcType=BIT}, #{createUser,jdbcType=VARCHAR},
|
||||
#{fileName,jdbcType=VARCHAR}, #{size,jdbcType=BIGINT}, #{createUser,jdbcType=VARCHAR},
|
||||
#{createTime,jdbcType=BIGINT})
|
||||
</insert>
|
||||
<insert id="insertSelective" parameterType="io.metersphere.bug.domain.BugAttachment">
|
||||
insert into bug_attachment
|
||||
<insert id="insertSelective" parameterType="io.metersphere.bug.domain.BugLocalAttachment">
|
||||
insert into bug_local_attachment
|
||||
<trim prefix="(" suffix=")" suffixOverrides=",">
|
||||
<if test="id != null">
|
||||
id,
|
||||
|
@ -128,9 +127,6 @@
|
|||
<if test="size != null">
|
||||
`size`,
|
||||
</if>
|
||||
<if test="local != null">
|
||||
`local`,
|
||||
</if>
|
||||
<if test="createUser != null">
|
||||
create_user,
|
||||
</if>
|
||||
|
@ -154,9 +150,6 @@
|
|||
<if test="size != null">
|
||||
#{size,jdbcType=BIGINT},
|
||||
</if>
|
||||
<if test="local != null">
|
||||
#{local,jdbcType=BIT},
|
||||
</if>
|
||||
<if test="createUser != null">
|
||||
#{createUser,jdbcType=VARCHAR},
|
||||
</if>
|
||||
|
@ -165,14 +158,14 @@
|
|||
</if>
|
||||
</trim>
|
||||
</insert>
|
||||
<select id="countByExample" parameterType="io.metersphere.bug.domain.BugAttachmentExample" resultType="java.lang.Long">
|
||||
select count(*) from bug_attachment
|
||||
<select id="countByExample" parameterType="io.metersphere.bug.domain.BugLocalAttachmentExample" resultType="java.lang.Long">
|
||||
select count(*) from bug_local_attachment
|
||||
<if test="_parameter != null">
|
||||
<include refid="Example_Where_Clause" />
|
||||
</if>
|
||||
</select>
|
||||
<update id="updateByExampleSelective" parameterType="map">
|
||||
update bug_attachment
|
||||
update bug_local_attachment
|
||||
<set>
|
||||
<if test="record.id != null">
|
||||
id = #{record.id,jdbcType=VARCHAR},
|
||||
|
@ -189,9 +182,6 @@
|
|||
<if test="record.size != null">
|
||||
`size` = #{record.size,jdbcType=BIGINT},
|
||||
</if>
|
||||
<if test="record.local != null">
|
||||
`local` = #{record.local,jdbcType=BIT},
|
||||
</if>
|
||||
<if test="record.createUser != null">
|
||||
create_user = #{record.createUser,jdbcType=VARCHAR},
|
||||
</if>
|
||||
|
@ -204,21 +194,20 @@
|
|||
</if>
|
||||
</update>
|
||||
<update id="updateByExample" parameterType="map">
|
||||
update bug_attachment
|
||||
update bug_local_attachment
|
||||
set id = #{record.id,jdbcType=VARCHAR},
|
||||
bug_id = #{record.bugId,jdbcType=VARCHAR},
|
||||
file_id = #{record.fileId,jdbcType=VARCHAR},
|
||||
file_name = #{record.fileName,jdbcType=VARCHAR},
|
||||
`size` = #{record.size,jdbcType=BIGINT},
|
||||
`local` = #{record.local,jdbcType=BIT},
|
||||
create_user = #{record.createUser,jdbcType=VARCHAR},
|
||||
create_time = #{record.createTime,jdbcType=BIGINT}
|
||||
<if test="_parameter != null">
|
||||
<include refid="Update_By_Example_Where_Clause" />
|
||||
</if>
|
||||
</update>
|
||||
<update id="updateByPrimaryKeySelective" parameterType="io.metersphere.bug.domain.BugAttachment">
|
||||
update bug_attachment
|
||||
<update id="updateByPrimaryKeySelective" parameterType="io.metersphere.bug.domain.BugLocalAttachment">
|
||||
update bug_local_attachment
|
||||
<set>
|
||||
<if test="bugId != null">
|
||||
bug_id = #{bugId,jdbcType=VARCHAR},
|
||||
|
@ -232,9 +221,6 @@
|
|||
<if test="size != null">
|
||||
`size` = #{size,jdbcType=BIGINT},
|
||||
</if>
|
||||
<if test="local != null">
|
||||
`local` = #{local,jdbcType=BIT},
|
||||
</if>
|
||||
<if test="createUser != null">
|
||||
create_user = #{createUser,jdbcType=VARCHAR},
|
||||
</if>
|
||||
|
@ -244,29 +230,28 @@
|
|||
</set>
|
||||
where id = #{id,jdbcType=VARCHAR}
|
||||
</update>
|
||||
<update id="updateByPrimaryKey" parameterType="io.metersphere.bug.domain.BugAttachment">
|
||||
update bug_attachment
|
||||
<update id="updateByPrimaryKey" parameterType="io.metersphere.bug.domain.BugLocalAttachment">
|
||||
update bug_local_attachment
|
||||
set bug_id = #{bugId,jdbcType=VARCHAR},
|
||||
file_id = #{fileId,jdbcType=VARCHAR},
|
||||
file_name = #{fileName,jdbcType=VARCHAR},
|
||||
`size` = #{size,jdbcType=BIGINT},
|
||||
`local` = #{local,jdbcType=BIT},
|
||||
create_user = #{createUser,jdbcType=VARCHAR},
|
||||
create_time = #{createTime,jdbcType=BIGINT}
|
||||
where id = #{id,jdbcType=VARCHAR}
|
||||
</update>
|
||||
<insert id="batchInsert" parameterType="map">
|
||||
insert into bug_attachment
|
||||
(id, bug_id, file_id, file_name, `size`, `local`, create_user, create_time)
|
||||
insert into bug_local_attachment
|
||||
(id, bug_id, file_id, file_name, `size`, create_user, create_time)
|
||||
values
|
||||
<foreach collection="list" item="item" separator=",">
|
||||
(#{item.id,jdbcType=VARCHAR}, #{item.bugId,jdbcType=VARCHAR}, #{item.fileId,jdbcType=VARCHAR},
|
||||
#{item.fileName,jdbcType=VARCHAR}, #{item.size,jdbcType=BIGINT}, #{item.local,jdbcType=BIT},
|
||||
#{item.createUser,jdbcType=VARCHAR}, #{item.createTime,jdbcType=BIGINT})
|
||||
#{item.fileName,jdbcType=VARCHAR}, #{item.size,jdbcType=BIGINT}, #{item.createUser,jdbcType=VARCHAR},
|
||||
#{item.createTime,jdbcType=BIGINT})
|
||||
</foreach>
|
||||
</insert>
|
||||
<insert id="batchInsertSelective" parameterType="map">
|
||||
insert into bug_attachment (
|
||||
insert into bug_local_attachment (
|
||||
<foreach collection="selective" item="column" separator=",">
|
||||
${column.escapedColumnName}
|
||||
</foreach>
|
||||
|
@ -290,9 +275,6 @@
|
|||
<if test="'size'.toString() == column.value">
|
||||
#{item.size,jdbcType=BIGINT}
|
||||
</if>
|
||||
<if test="'local'.toString() == column.value">
|
||||
#{item.local,jdbcType=BIT}
|
||||
</if>
|
||||
<if test="'create_user'.toString() == column.value">
|
||||
#{item.createUser,jdbcType=VARCHAR}
|
||||
</if>
|
|
@ -53,17 +53,16 @@ CREATE TABLE IF NOT EXISTS bug_follower(
|
|||
|
||||
CREATE INDEX idx_follow_id ON bug_follower(user_id);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS bug_attachment(
|
||||
`id` VARCHAR(255) NOT NULL COMMENT 'ID' ,
|
||||
`bug_id` VARCHAR(50) NOT NULL COMMENT '缺陷ID' ,
|
||||
`file_id` VARCHAR(50) NOT NULL COMMENT '文件ID' ,
|
||||
`file_name` VARCHAR(255) NOT NULL COMMENT '文件名称' ,
|
||||
`size` BIGINT NOT NULL COMMENT '文件大小' ,
|
||||
`local` BIT(1) NOT NULL COMMENT '是否本地' ,
|
||||
`create_user` VARCHAR(50) NOT NULL COMMENT '创建人' ,
|
||||
`create_time` BIGINT NOT NULL COMMENT '创建时间' ,
|
||||
PRIMARY KEY (id)
|
||||
) COMMENT = '缺陷附件';
|
||||
CREATE TABLE IF NOT EXISTS bug_local_attachment(
|
||||
`id` VARCHAR(255) NOT NULL COMMENT 'ID' ,
|
||||
`bug_id` VARCHAR(50) NOT NULL COMMENT '缺陷ID' ,
|
||||
`file_id` VARCHAR(50) NOT NULL COMMENT '文件ID' ,
|
||||
`file_name` VARCHAR(255) NOT NULL COMMENT '文件名称' ,
|
||||
`size` BIGINT NOT NULL COMMENT '文件大小' ,
|
||||
`create_user` VARCHAR(50) NOT NULL COMMENT '创建人' ,
|
||||
`create_time` BIGINT NOT NULL COMMENT '创建时间' ,
|
||||
PRIMARY KEY (id)
|
||||
) COMMENT = '缺陷本地附件';
|
||||
|
||||
CREATE TABLE IF NOT EXISTS bug_comment(
|
||||
`id` VARCHAR(50) NOT NULL COMMENT 'ID' ,
|
||||
|
|
|
@ -42,19 +42,17 @@ bug_comment.create_user.length_range=评论人长度必须在1-50之间
|
|||
bug_comment.update_user.not_blank=更新人不能为空
|
||||
bug_comment.update_user.length_range=更新人长度必须在1-50之间
|
||||
|
||||
# bugAttachment
|
||||
bug_attachment.id.not_blank=ID不能为空
|
||||
bug_attachment.id.length_range=ID长度必须在1-50之间
|
||||
bug_attachment.bug_id.not_blank=缺陷ID不能为空
|
||||
bug_attachment.bug_id.length_range=缺陷ID长度必须在1-50之间
|
||||
bug_attachment.file_id.not_blank=文件ID不能为空
|
||||
bug_attachment.file_id.length_range=文件ID长度必须在1-50之间
|
||||
bug_attachment.file_name.not_blank=文件名称不能为空
|
||||
bug_attachment.file_name.length_range=文件名称长度必须在1-50之间
|
||||
bug_attachment.local.not_blank=是否本地上传不能为空
|
||||
bug_attachment.local.length_range=是否本地上传长度必须在1-50之间
|
||||
bug_attachment.create_user.not_blank=创建人不能为空
|
||||
bug_attachment.create_user.length_range=创建人长度必须在1-50之间
|
||||
# bugLocalAttachment
|
||||
bug_local_attachment.id.not_blank=ID不能为空
|
||||
bug_local_attachment.id.length_range=ID长度必须在1-50之间
|
||||
bug_local_attachment.bug_id.not_blank=缺陷ID不能为空
|
||||
bug_local_attachment.bug_id.length_range=缺陷ID长度必须在1-50之间
|
||||
bug_local_attachment.file_id.not_blank=文件ID不能为空
|
||||
bug_local_attachment.file_id.length_range=文件ID长度必须在1-50之间
|
||||
bug_local_attachment.file_name.not_blank=文件名称不能为空
|
||||
bug_local_attachment.file_name.length_range=文件名称长度必须在1-50之间
|
||||
bug_local_attachment.create_user.not_blank=创建人不能为空
|
||||
bug_local_attachment.create_user.length_range=创建人长度必须在1-50之间
|
||||
|
||||
# bugCustomField
|
||||
bug_custom_field.bug_id.not_blank=缺陷ID不能为空
|
||||
|
|
|
@ -42,19 +42,17 @@ bug_comment.create_user.length_range=createUser length must be between 1-50
|
|||
bug_comment.update_user.not_blank=updateUser cannot be empty
|
||||
bug_comment.update_user.length_range=updateUser length must be between 1-50
|
||||
|
||||
# bugAttachment
|
||||
bug_attachment.id.not_blank=id cannot be empty
|
||||
bug_attachment.id.length_range=id length must be between 1-50
|
||||
bug_attachment.bug_id.not_blank=bugId cannot be empty
|
||||
bug_attachment.bug_id.length_range=bugId length must be between 1-50
|
||||
bug_attachment.file_id.not_blank=fileId cannot be empty
|
||||
bug_attachment.file_id.length_range=fileId length must be between 1-50
|
||||
bug_attachment.file_name.not_blank=fileName cannot be empty
|
||||
bug_attachment.file_name.length_range=fileName length must be between 1-50
|
||||
bug_attachment.local.not_blank=local cannot be empty
|
||||
bug_attachment.local.length_range=local length must be between 1-50
|
||||
bug_attachment.create_user.not_blank=createUser cannot be empty
|
||||
bug_attachment.create_user.length_range=createUser length must be between 1-50
|
||||
# bugLocalAttachment
|
||||
bug_local_attachment.id.not_blank=id cannot be empty
|
||||
bug_local_attachment.id.length_range=id length must be between 1-50
|
||||
bug_local_attachment.bug_id.not_blank=bugId cannot be empty
|
||||
bug_local_attachment.bug_id.length_range=bugId length must be between 1-50
|
||||
bug_local_attachment.file_id.not_blank=fileId cannot be empty
|
||||
bug_local_attachment.file_id.length_range=fileId length must be between 1-50
|
||||
bug_local_attachment.file_name.not_blank=fileName cannot be empty
|
||||
bug_local_attachment.file_name.length_range=fileName length must be between 1-50
|
||||
bug_local_attachment.create_user.not_blank=createUser cannot be empty
|
||||
bug_local_attachment.create_user.length_range=createUser length must be between 1-50
|
||||
|
||||
# bugCustomField
|
||||
bug_custom_field.bug_id.not_blank=bugId cannot be empty
|
||||
|
|
|
@ -42,19 +42,17 @@ bug_comment.create_user.length_range=评论人长度必须在1-50之间
|
|||
bug_comment.update_user.not_blank=更新人不能为空
|
||||
bug_comment.update_user.length_range=更新人长度必须在1-50之间
|
||||
|
||||
# bugAttachment
|
||||
bug_attachment.id.not_blank=ID不能为空
|
||||
bug_attachment.id.length_range=ID长度必须在1-50之间
|
||||
bug_attachment.bug_id.not_blank=缺陷ID不能为空
|
||||
bug_attachment.bug_id.length_range=缺陷ID长度必须在1-50之间
|
||||
bug_attachment.file_id.not_blank=文件ID不能为空
|
||||
bug_attachment.file_id.length_range=文件ID长度必须在1-50之间
|
||||
bug_attachment.file_name.not_blank=文件名称不能为空
|
||||
bug_attachment.file_name.length_range=文件名称长度必须在1-50之间
|
||||
bug_attachment.local.not_blank=是否本地上传不能为空
|
||||
bug_attachment.local.length_range=是否本地上传长度必须在1-50之间
|
||||
bug_attachment.create_user.not_blank=创建人不能为空
|
||||
bug_attachment.create_user.length_range=创建人长度必须在1-50之间
|
||||
# bugLocalAttachment
|
||||
bug_local_attachment.id.not_blank=ID不能为空
|
||||
bug_local_attachment.id.length_range=ID长度必须在1-50之间
|
||||
bug_local_attachment.bug_id.not_blank=缺陷ID不能为空
|
||||
bug_local_attachment.bug_id.length_range=缺陷ID长度必须在1-50之间
|
||||
bug_local_attachment.file_id.not_blank=文件ID不能为空
|
||||
bug_local_attachment.file_id.length_range=文件ID长度必须在1-50之间
|
||||
bug_local_attachment.file_name.not_blank=文件名称不能为空
|
||||
bug_local_attachment.file_name.length_range=文件名称长度必须在1-50之间
|
||||
bug_local_attachment.create_user.not_blank=创建人不能为空
|
||||
bug_local_attachment.create_user.length_range=创建人长度必须在1-50之间
|
||||
|
||||
# bugCustomField
|
||||
bug_custom_field.bug_id.not_blank=缺陷ID不能为空
|
||||
|
|
|
@ -42,19 +42,17 @@ bug_comment.create_user.length_range=评论人長度必須在1-50之間
|
|||
bug_comment.update_user.not_blank=更新人不能為空
|
||||
bug_comment.update_user.length_range=更新人長度必須在1-50之間
|
||||
|
||||
# bugAttachment
|
||||
bug_attachment.id.not_blank=ID不能為空
|
||||
bug_attachment.id.length_range=ID長度必須在1-50之間
|
||||
bug_attachment.bug_id.not_blank=缺陷ID不能為空
|
||||
bug_attachment.bug_id.length_range=缺陷ID長度必須在1-50之間
|
||||
bug_attachment.file_id.not_blank=文件ID不能為空
|
||||
bug_attachment.file_id.length_range=文件ID長度必須在1-50之間
|
||||
bug_attachment.file_name.not_blank=文件名称不能為空
|
||||
bug_attachment.file_name.length_range=文件名称長度必須在1-50之間
|
||||
bug_attachment.local.not_blank=是否本地上傳不能為空
|
||||
bug_attachment.local.length_range=是否本地上傳必須在1-50之間
|
||||
bug_attachment.create_user.not_blank=创建人不能為空
|
||||
bug_attachment.create_user.length_range=创建人長度必須在1-50之間
|
||||
# bugLocalAttachment
|
||||
bug_local_attachment.id.not_blank=ID不能為空
|
||||
bug_local_attachment.id.length_range=ID長度必須在1-50之間
|
||||
bug_local_attachment.bug_id.not_blank=缺陷ID不能為空
|
||||
bug_local_attachment.bug_id.length_range=缺陷ID長度必須在1-50之間
|
||||
bug_local_attachment.file_id.not_blank=文件ID不能為空
|
||||
bug_local_attachment.file_id.length_range=文件ID長度必須在1-50之間
|
||||
bug_local_attachment.file_name.not_blank=文件名称不能為空
|
||||
bug_local_attachment.file_name.length_range=文件名称長度必須在1-50之間
|
||||
bug_local_attachment.create_user.not_blank=创建人不能為空
|
||||
bug_local_attachment.create_user.length_range=创建人長度必須在1-50之間
|
||||
|
||||
# bugCustomField
|
||||
bug_custom_field.bug_id.not_blank=缺陷ID不能為空
|
||||
|
|
|
@ -60,8 +60,8 @@ public class BugEditRequest {
|
|||
@Schema(description = "删除的本地附件集合")
|
||||
private List<String> deleteLocalFileIds;
|
||||
|
||||
@Schema(description = "取消关联附件集合")
|
||||
private List<String> unLinkFileIds;
|
||||
@Schema(description = "取消关联附件关系ID集合")
|
||||
private List<String> unLinkRefIds;
|
||||
|
||||
@Schema(description = "关联附件集合")
|
||||
private List<String> linkFileIds;
|
||||
|
|
|
@ -1,20 +0,0 @@
|
|||
package io.metersphere.bug.dto.request;
|
||||
|
||||
import io.metersphere.system.dto.sdk.BasePageRequest;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
public class BugRelateCasePageRequest extends BasePageRequest {
|
||||
|
||||
@Schema(description = "所属项目ID", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
private String projectId;
|
||||
|
||||
@Schema(description = "版本ID")
|
||||
private String versionId;
|
||||
|
||||
@Schema(description = "选中模块ID")
|
||||
private String selectModuleId;
|
||||
}
|
|
@ -1,18 +0,0 @@
|
|||
package io.metersphere.bug.dto.request;
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
public class BugRelateCaseRequest extends BugRelateCasePageRequest{
|
||||
|
||||
@Schema(description = "是否全选", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
private boolean selectAll;
|
||||
|
||||
@Schema(description = "用例ID勾选列表")
|
||||
private List<String> includeCaseIds;
|
||||
}
|
|
@ -1,15 +1,15 @@
|
|||
package io.metersphere.bug.mapper;
|
||||
|
||||
import io.metersphere.bug.domain.BugAttachment;
|
||||
import io.metersphere.bug.domain.BugLocalAttachment;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public interface ExtBugAttachmentMapper {
|
||||
public interface ExtBugLocalAttachmentMapper {
|
||||
|
||||
/**
|
||||
* 批量插入缺陷附件关系
|
||||
* @param attachments 缺陷附件集合
|
||||
*/
|
||||
void batchInsert(@Param("list") List<BugAttachment> attachments);
|
||||
void batchInsert(@Param("list") List<BugLocalAttachment> attachments);
|
||||
}
|
|
@ -1,11 +1,11 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="io.metersphere.bug.mapper.ExtBugAttachmentMapper">
|
||||
<insert id="batchInsert" parameterType="io.metersphere.bug.domain.BugAttachment">
|
||||
insert into bug_attachment values
|
||||
<mapper namespace="io.metersphere.bug.mapper.ExtBugLocalAttachmentMapper">
|
||||
<insert id="batchInsert" parameterType="io.metersphere.bug.domain.BugLocalAttachment">
|
||||
insert into bug_local_attachment values
|
||||
<foreach collection="list" item="attachment" separator=",">
|
||||
(#{attachment.id}, #{attachment.bugId}, #{attachment.fileId}, #{attachment.fileName},
|
||||
#{attachment.size}, #{attachment.local}, #{attachment.createUser}, #{attachment.createTime})
|
||||
#{attachment.size}, #{attachment.createUser}, #{attachment.createTime})
|
||||
</foreach>
|
||||
</insert>
|
||||
</mapper>
|
|
@ -12,22 +12,23 @@ import io.metersphere.bug.dto.request.BugPageRequest;
|
|||
import io.metersphere.bug.enums.BugPlatform;
|
||||
import io.metersphere.bug.mapper.*;
|
||||
import io.metersphere.bug.utils.CustomFieldUtils;
|
||||
import io.metersphere.project.domain.FileMetadata;
|
||||
import io.metersphere.project.domain.FileMetadataExample;
|
||||
import io.metersphere.project.mapper.FileMetadataMapper;
|
||||
import io.metersphere.project.dto.filemanagement.FileLogRecord;
|
||||
import io.metersphere.project.service.FileAssociationService;
|
||||
import io.metersphere.project.service.FileService;
|
||||
import io.metersphere.project.service.ProjectTemplateService;
|
||||
import io.metersphere.sdk.constants.ApplicationNumScope;
|
||||
import io.metersphere.sdk.constants.HttpMethodConstants;
|
||||
import io.metersphere.sdk.constants.StorageType;
|
||||
import io.metersphere.sdk.constants.TemplateScene;
|
||||
import io.metersphere.sdk.exception.MSException;
|
||||
import io.metersphere.sdk.util.BeanUtils;
|
||||
import io.metersphere.sdk.util.MsFileUtils;
|
||||
import io.metersphere.sdk.util.FileAssociationSourceUtil;
|
||||
import io.metersphere.sdk.util.Translator;
|
||||
import io.metersphere.system.domain.Template;
|
||||
import io.metersphere.system.dto.sdk.OptionDTO;
|
||||
import io.metersphere.system.dto.sdk.TemplateDTO;
|
||||
import io.metersphere.system.file.FileRequest;
|
||||
import io.metersphere.system.log.constants.OperationLogModule;
|
||||
import io.metersphere.system.mapper.BaseUserMapper;
|
||||
import io.metersphere.system.mapper.TemplateMapper;
|
||||
import io.metersphere.system.service.BaseTemplateService;
|
||||
|
@ -78,11 +79,11 @@ public class BugService {
|
|||
@Resource
|
||||
private ExtBugRelateCaseMapper extBugRelateCaseMapper;
|
||||
@Resource
|
||||
private FileMetadataMapper fileMetadataMapper;
|
||||
private FileAssociationService fileAssociationService;
|
||||
@Resource
|
||||
private BugAttachmentMapper bugAttachmentMapper;
|
||||
private BugLocalAttachmentMapper bugLocalAttachmentMapper;
|
||||
@Resource
|
||||
private ExtBugAttachmentMapper extBugAttachmentMapper;
|
||||
private ExtBugLocalAttachmentMapper extBugLocalAttachmentMapper;
|
||||
@Resource
|
||||
private FileService fileService;
|
||||
@Resource
|
||||
|
@ -90,6 +91,11 @@ public class BugService {
|
|||
@Resource
|
||||
private BugFollowerMapper bugFollowerMapper;
|
||||
|
||||
public static final String ADD_BUG_FILE_LOG_URL = "/bug/add";
|
||||
public static final String UPDATE_BUG_FILE_LOG_URL = "/bug/update";
|
||||
public static final String UPLOAD_SOURCE_DIR = "/project";
|
||||
public static final String UPLOAD_APP_DIR = "/bug";
|
||||
|
||||
/**
|
||||
* 缺陷列表查询
|
||||
*
|
||||
|
@ -144,7 +150,7 @@ public class BugService {
|
|||
// 自定义字段
|
||||
handleAndSaveCustomFields(request, false, false);
|
||||
// 附件
|
||||
handleAndSaveAttachments(request, files, currentUser);
|
||||
handleAndSaveAttachments(request, files, currentUser, ADD_BUG_FILE_LOG_URL);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -166,7 +172,7 @@ public class BugService {
|
|||
// 自定义字段
|
||||
handleAndSaveCustomFields(request, true, false);
|
||||
// 附件
|
||||
handleAndSaveAttachments(request, files, currentUser);
|
||||
handleAndSaveAttachments(request, files, currentUser, UPDATE_BUG_FILE_LOG_URL);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -360,7 +366,6 @@ public class BugService {
|
|||
// }
|
||||
if (StringUtils.isEmpty(bug.getId())) {
|
||||
bug.setId(IDGenerator.nextStr());
|
||||
// TODO: 业务ID生成规则, 暂保留, 后续补充
|
||||
bug.setNum(Long.valueOf(NumGenerator.nextNum(request.getProjectId(), ApplicationNumScope.BUG_MANAGEMENT)).intValue());
|
||||
bug.setHandleUsers(request.getHandleUser());
|
||||
bug.setCreateUser(currentUser);
|
||||
|
@ -473,89 +478,62 @@ public class BugService {
|
|||
* @param request 请求参数
|
||||
* @param files 上传附件集合
|
||||
*/
|
||||
private void handleAndSaveAttachments(BugEditRequest request, List<MultipartFile> files, String currentUser) {
|
||||
Map<String, MultipartFile> uploadMinioFiles = new HashMap<>(16);
|
||||
List<BugAttachment> addFiles = new ArrayList<>();
|
||||
// 处理删除的本地上传附件及取消关联的附件
|
||||
List<String> deleteIds = new ArrayList<>();
|
||||
private void handleAndSaveAttachments(BugEditRequest request, List<MultipartFile> files, String currentUser, String fileLogUrl) {
|
||||
/*
|
||||
* 附件处理逻辑
|
||||
* 1. 先处理删除, 及取消关联的附件
|
||||
* 2. 再处理新上传的, 新关联的附件
|
||||
*/
|
||||
if (CollectionUtils.isNotEmpty(request.getDeleteLocalFileIds())) {
|
||||
deleteIds.addAll(request.getDeleteLocalFileIds());
|
||||
// 删除本地上传的附件, BUG_LOCAL_ATTACHMENT表
|
||||
request.getDeleteLocalFileIds().forEach(deleteFileId -> {
|
||||
FileRequest fileRequest = new FileRequest();
|
||||
fileRequest.setProjectId(request.getProjectId());
|
||||
fileRequest.setFileName(deleteFileId);
|
||||
fileRequest.setStorage(StorageType.MINIO.name());
|
||||
FileRequest fileRequest = buildBugFileRequest(request.getProjectId(), deleteFileId, null);
|
||||
try {
|
||||
fileService.deleteFile(fileRequest);
|
||||
} catch (Exception e) {
|
||||
throw new MSException(Translator.get("bug_attachment_delete_error"));
|
||||
}
|
||||
});
|
||||
BugLocalAttachmentExample example = new BugLocalAttachmentExample();
|
||||
example.createCriteria().andBugIdEqualTo(request.getId()).andFileIdIn(request.getDeleteLocalFileIds());
|
||||
bugLocalAttachmentMapper.deleteByExample(example);
|
||||
}
|
||||
if (CollectionUtils.isNotEmpty(request.getUnLinkFileIds())) {
|
||||
deleteIds.addAll(request.getUnLinkFileIds());
|
||||
}
|
||||
if (CollectionUtils.isNotEmpty(deleteIds)) {
|
||||
BugAttachmentExample example = new BugAttachmentExample();
|
||||
example.createCriteria().andBugIdEqualTo(request.getId()).andFileIdIn(deleteIds);
|
||||
bugAttachmentMapper.deleteByExample(example);
|
||||
// TODO: 如果是第三方平台, 需调用平台插件同步删除附件
|
||||
if (CollectionUtils.isNotEmpty(request.getUnLinkRefIds())) {
|
||||
// 取消关联的附件, FILE_ASSOCIATION表
|
||||
fileAssociationService.deleteBySourceId(request.getUnLinkRefIds(), createFileLogRecord(fileLogUrl, currentUser, request.getProjectId()));
|
||||
}
|
||||
|
||||
// 新本地上传的附件
|
||||
List<BugLocalAttachment> addFiles = new ArrayList<>();
|
||||
Map<String, MultipartFile> uploadMinioFiles = new HashMap<>(16);
|
||||
if (CollectionUtils.isNotEmpty(files)) {
|
||||
files.forEach(file -> {
|
||||
BugAttachment bugAttachment = new BugAttachment();
|
||||
BugLocalAttachment bugAttachment = new BugLocalAttachment();
|
||||
bugAttachment.setId(IDGenerator.nextStr());
|
||||
bugAttachment.setBugId(request.getId());
|
||||
bugAttachment.setFileId(IDGenerator.nextStr());
|
||||
bugAttachment.setFileName(file.getOriginalFilename());
|
||||
bugAttachment.setSize(file.getSize());
|
||||
bugAttachment.setLocal(true);
|
||||
bugAttachment.setCreateTime(System.currentTimeMillis());
|
||||
bugAttachment.setCreateUser(currentUser);
|
||||
addFiles.add(bugAttachment);
|
||||
uploadMinioFiles.put(bugAttachment.getFileId(), file);
|
||||
});
|
||||
}
|
||||
// 新关联的附件
|
||||
List<String> linkIds = request.getLinkFileIds();
|
||||
if (CollectionUtils.isNotEmpty(linkIds)) {
|
||||
FileMetadataExample example = new FileMetadataExample();
|
||||
example.createCriteria().andIdIn(linkIds);
|
||||
List<FileMetadata> linkFiles = fileMetadataMapper.selectByExample(example);
|
||||
Map<String, FileMetadata> linkFileMap = linkFiles.stream().collect(Collectors.toMap(FileMetadata::getId, v -> v));
|
||||
linkIds.forEach(fileId -> {
|
||||
FileMetadata fileMetadata = linkFileMap.get(fileId);
|
||||
if (fileMetadata == null) {
|
||||
return;
|
||||
extBugLocalAttachmentMapper.batchInsert(addFiles);
|
||||
uploadMinioFiles.forEach((fileId, file) -> {
|
||||
FileRequest fileRequest = buildBugFileRequest(request.getProjectId(), fileId, file.getOriginalFilename());
|
||||
try {
|
||||
fileService.upload(file, fileRequest);
|
||||
} catch (Exception e) {
|
||||
throw new MSException(Translator.get("bug_attachment_upload_error"));
|
||||
}
|
||||
BugAttachment bugAttachment = new BugAttachment();
|
||||
bugAttachment.setId(IDGenerator.nextStr());
|
||||
bugAttachment.setBugId(request.getId());
|
||||
bugAttachment.setFileId(fileId);
|
||||
bugAttachment.setFileName(fileMetadata.getName());
|
||||
bugAttachment.setSize(fileMetadata.getSize());
|
||||
bugAttachment.setLocal(false);
|
||||
bugAttachment.setCreateTime(System.currentTimeMillis());
|
||||
bugAttachment.setCreateUser(currentUser);
|
||||
addFiles.add(bugAttachment);
|
||||
});
|
||||
}
|
||||
if (CollectionUtils.isNotEmpty(addFiles)) {
|
||||
extBugAttachmentMapper.batchInsert(addFiles);
|
||||
// 新关联的附件
|
||||
if (CollectionUtils.isNotEmpty(request.getLinkFileIds())) {
|
||||
fileAssociationService.association(request.getId(), FileAssociationSourceUtil.SOURCE_TYPE_BUG, request.getLinkFileIds(), false,
|
||||
createFileLogRecord(fileLogUrl, currentUser, request.getProjectId()));
|
||||
}
|
||||
// TODO: 如果是第三方平台, 需调用平台插件同步上传附件
|
||||
uploadMinioFiles.forEach((fileId, file) -> {
|
||||
FileRequest fileRequest = new FileRequest();
|
||||
fileRequest.setFileName(file.getOriginalFilename());
|
||||
fileRequest.setResourceId("/" + MsFileUtils.BUG_MANAGEMENT_DIR + "/" + request.getProjectId() + "/" + fileId);
|
||||
fileRequest.setStorage(StorageType.MINIO.name());
|
||||
try {
|
||||
fileService.upload(file, fileRequest);
|
||||
} catch (Exception e) {
|
||||
throw new MSException(Translator.get("bug_attachment_upload_error"));
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
// /**
|
||||
|
@ -653,4 +631,24 @@ public class BugService {
|
|||
// }
|
||||
// return template;
|
||||
// }
|
||||
|
||||
private FileLogRecord createFileLogRecord(String logUrl, String operator, String projectId){
|
||||
return FileLogRecord.builder()
|
||||
.logModule(OperationLogModule.BUG_MANAGEMENT)
|
||||
.requestMethod(HttpMethodConstants.POST.name())
|
||||
.requestUrl(logUrl)
|
||||
.operator(operator)
|
||||
.projectId(projectId)
|
||||
.build();
|
||||
}
|
||||
|
||||
private FileRequest buildBugFileRequest(String projectId, String resourceId, String fileName) {
|
||||
FileRequest fileRequest = new FileRequest();
|
||||
fileRequest.setFolder(UPLOAD_SOURCE_DIR + "/" + projectId + UPLOAD_APP_DIR + "/" + resourceId);
|
||||
fileRequest.setProjectId(projectId);
|
||||
fileRequest.setResourceId(resourceId);
|
||||
fileRequest.setFileName(StringUtils.isEmpty(fileName) ? null : fileName);
|
||||
fileRequest.setStorage(StorageType.MINIO.name());
|
||||
return fileRequest;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -74,7 +74,7 @@
|
|||
<!-- <table tableName="bug_content" />-->
|
||||
<!-- <table tableName="bug_follower" />-->
|
||||
<!-- <table tableName="bug_comment" />-->
|
||||
<!-- <table tableName="bug_attachment" />-->
|
||||
<table tableName="bug_local_attachment" />
|
||||
<!-- <table tableName="bug_custom_field" />-->
|
||||
<!-- <table tableName="bug_relation_case" />-->
|
||||
<!-- <table tableName="bug_history" />-->
|
||||
|
|
|
@ -440,13 +440,13 @@ public class BugControllerTests extends BaseTest {
|
|||
request.setHandleUser("admin");
|
||||
request.setTemplateId("default-bug-template");
|
||||
request.setStatus("prepare");
|
||||
request.setLinkFileIds(List.of("default-bug-file-id-1", "default-bug-file-id-3"));
|
||||
request.setLinkFileIds(List.of("default-bug-file-id-1"));
|
||||
Map<String, String> customFieldMap = new HashMap<>();
|
||||
customFieldMap.put("custom-field", "oasis");
|
||||
customFieldMap.put("test_field", JSON.toJSONString(List.of("test")));
|
||||
if (isUpdate) {
|
||||
request.setId("default-bug-id");
|
||||
request.setUnLinkFileIds(List.of("default-bug-file-id-1"));
|
||||
request.setUnLinkRefIds(List.of("default-bug-file-id-1"));
|
||||
request.setDeleteLocalFileIds(List.of("default-bug-file-id"));
|
||||
request.setLinkFileIds(List.of("default-bug-file-id-2"));
|
||||
}
|
||||
|
|
|
@ -102,4 +102,6 @@ public class OperationLogModule {
|
|||
public static final String API_DEBUG = "API_DEBUG";
|
||||
//接口管理-环境
|
||||
public static final String API_DEFINITION_ENVIRONMENT = "API_DEFINITION_ENVIRONMENT";
|
||||
// 缺陷管理
|
||||
public static final String BUG_MANAGEMENT = "BUG_MANAGEMENT";
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue