新增起草组-在研项目的查询、新增、编辑、删除等功能
This commit is contained in:
+215
@@ -0,0 +1,215 @@
|
||||
package com.jero.drafting.controller;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.jero.common.api.vo.Result;
|
||||
import com.jero.common.aspect.annotation.AutoLog;
|
||||
import com.jero.common.exception.JeroBootException;
|
||||
import com.jero.common.system.base.controller.JeroController;
|
||||
import com.jero.common.util.ValidUtil;
|
||||
import com.jero.drafting.entity.PayDraftingGroupResearchProject;
|
||||
import com.jero.drafting.entity.PayDraftingGroupSubItemContacts;
|
||||
import com.jero.drafting.service.IPayDraftingGroupResearchProjectService;
|
||||
import com.jero.drafting.service.IPayDraftingGroupService;
|
||||
import com.jero.drafting.service.IPayDraftingGroupSubItemContactsService;
|
||||
import com.jero.modules.oss.service.IOSSFileService;
|
||||
import com.jero.project.entity.PayResearchProject;
|
||||
import com.jero.project.service.IPayResearchProjectService;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 起草组 在研项目表 前端控制器
|
||||
* </p>
|
||||
*
|
||||
* @author sz
|
||||
* @since 2024-01-05
|
||||
*/
|
||||
@Api(tags="起草组 在研项目")
|
||||
@RestController
|
||||
@RequestMapping("/drafting/payDraftingGroupResearchProject")
|
||||
@Slf4j
|
||||
public class PayDraftingGroupResearchProjectController extends JeroController<PayDraftingGroupResearchProject, IPayDraftingGroupResearchProjectService> {
|
||||
@Autowired
|
||||
private IPayDraftingGroupResearchProjectService payDraftingGroupResearchProjectService;
|
||||
|
||||
@Autowired
|
||||
private IOSSFileService iossFileService;
|
||||
|
||||
/**
|
||||
* 分页列表查询
|
||||
*
|
||||
* @param payResearchProject
|
||||
* @param pageNo
|
||||
* @param pageSize
|
||||
* @param
|
||||
* @return
|
||||
*/
|
||||
@AutoLog(value = "起草组-在研项目-分页列表查询")
|
||||
@ApiOperation(value="起草组-在研项目-分页列表查询", notes="起草组-在研项目-分页列表查询")
|
||||
@GetMapping(value = "/list")
|
||||
public Result<?> queryPageList(PayDraftingGroupResearchProject payResearchProject,
|
||||
@RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
|
||||
@RequestParam(name="pageSize", defaultValue="10") Integer pageSize
|
||||
) {
|
||||
QueryWrapper<PayDraftingGroupResearchProject> queryWrapper = new QueryWrapper<>();
|
||||
if(StringUtils.isNotBlank(payResearchProject.getDraftingGroupId())){
|
||||
queryWrapper.eq("drafting_group_id",payResearchProject.getDraftingGroupId());
|
||||
}else {
|
||||
return Result.error("起草组id为空!");
|
||||
}
|
||||
if(StringUtils.isNotBlank(payResearchProject.getProjectName())){
|
||||
queryWrapper.like("project_name",payResearchProject.getProjectName());
|
||||
}
|
||||
Page<PayDraftingGroupResearchProject> page = new Page<>(pageNo, pageSize);
|
||||
IPage<PayDraftingGroupResearchProject> pageList = payDraftingGroupResearchProjectService.pageList(page,queryWrapper);
|
||||
return Result.OK(pageList);
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增
|
||||
*
|
||||
* @param payResearchProject
|
||||
* @return
|
||||
*/
|
||||
@Transactional
|
||||
@AutoLog(value = "起草组-在研项目-新增")
|
||||
@ApiOperation(value="起草组-在研项目-新增", notes="起草组-在研项目-新增")
|
||||
@PostMapping(value = "/add")
|
||||
public Result<?> add(@RequestBody PayDraftingGroupResearchProject payResearchProject) {
|
||||
StringBuilder msg = ValidUtil.validateAll(payResearchProject);
|
||||
if (!StringUtils.isBlank(msg)) {
|
||||
return Result.error(msg.toString());
|
||||
}
|
||||
QueryWrapper<PayDraftingGroupResearchProject> queryWrapper = new QueryWrapper<>();
|
||||
queryWrapper.eq("drafting_group_id",payResearchProject.getDraftingGroupId());
|
||||
queryWrapper.eq("project_name",payResearchProject.getProjectName());
|
||||
int count = payDraftingGroupResearchProjectService.count(queryWrapper);
|
||||
if (count>0) {
|
||||
return Result.error("项目名称已存在");
|
||||
}
|
||||
payDraftingGroupResearchProjectService.save(payResearchProject);
|
||||
if(StringUtils.isNotBlank(payResearchProject.getFiles())){
|
||||
String files = payResearchProject.getFiles();
|
||||
List<String> filesList = Arrays.asList(files.split(","));
|
||||
for(String s:filesList){
|
||||
if(StringUtils.isBlank(s)){
|
||||
throw new JeroBootException("文件id不能为空!");
|
||||
}
|
||||
UUID uuid = UUID.randomUUID();
|
||||
payDraftingGroupResearchProjectService.saveFile(uuid.toString(),s,payResearchProject.getId());
|
||||
}
|
||||
}
|
||||
return Result.OK("新增成功!");
|
||||
}
|
||||
|
||||
/**
|
||||
* 通过id删除
|
||||
*
|
||||
* @param id
|
||||
* @return
|
||||
*/
|
||||
@Transactional
|
||||
@AutoLog(value = "起草组-在研项目-通过id删除")
|
||||
@ApiOperation(value="起草组-在研项目-通过id删除", notes="起草组-在研项目-通过id删除")
|
||||
@GetMapping(value = "/delete")
|
||||
public Result<?> delete(@RequestParam(name="id",required=true) String id) {
|
||||
if (StringUtils.isBlank(id)) {
|
||||
return Result.error("id不能为空");
|
||||
}
|
||||
//删除关联文件表
|
||||
payDraftingGroupResearchProjectService.deleteFile(id);
|
||||
//删除文件表
|
||||
PayDraftingGroupResearchProject payResearchProject = payDraftingGroupResearchProjectService.getById(id);
|
||||
if (Objects.isNull(payResearchProject)) {
|
||||
return Result.error("对象不存在");
|
||||
}
|
||||
if(StringUtils.isNotBlank(payResearchProject.getFiles())){
|
||||
List<String> filesList = Arrays.asList(payResearchProject.getFiles().split(","));
|
||||
iossFileService.removeByIds(filesList);
|
||||
}
|
||||
payDraftingGroupResearchProjectService.removeById(id);
|
||||
return Result.OK("删除成功!");
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量删除
|
||||
*
|
||||
* @param ids
|
||||
* @return
|
||||
*/
|
||||
@AutoLog(value = "起草组-在研项目-批量删除")
|
||||
@ApiOperation(value="起草组-在研项目-批量删除", notes="起草组-在研项目-批量删除")
|
||||
@GetMapping(value = "/deleteBatch")
|
||||
public Result<?> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
|
||||
if (StringUtils.isBlank(ids)) {
|
||||
return Result.error("id不能为空");
|
||||
}
|
||||
List<String> strings = Arrays.asList(ids.split(","));
|
||||
for(String s:strings){
|
||||
delete(s);
|
||||
}
|
||||
return Result.OK("批量删除成功!");
|
||||
}
|
||||
|
||||
/**
|
||||
* 编辑
|
||||
*
|
||||
* @param payResearchProject
|
||||
* @return
|
||||
*/
|
||||
@Transactional
|
||||
@AutoLog(value = "起草组-在研项目-编辑")
|
||||
@ApiOperation(value="起草组-在研项目-编辑", notes="起草组-在研项目-编辑")
|
||||
@PostMapping(value = "/edit")
|
||||
public Result<?> edit(@RequestBody PayDraftingGroupResearchProject payResearchProject) {
|
||||
StringBuilder msg = ValidUtil.validateAll(payResearchProject);
|
||||
if (!StringUtils.isBlank(msg)) {
|
||||
return Result.error(msg.toString());
|
||||
}
|
||||
if (StringUtils.isBlank(payResearchProject.getId())) {
|
||||
return Result.error("在研项目的id不能为空");
|
||||
}
|
||||
PayDraftingGroupResearchProject dbPayResearchProject = payDraftingGroupResearchProjectService.getById(payResearchProject.getId());
|
||||
if (Objects.isNull(dbPayResearchProject)) {
|
||||
return Result.error("该项目不存在");
|
||||
}
|
||||
QueryWrapper<PayDraftingGroupResearchProject> queryWrapper = new QueryWrapper<>();
|
||||
queryWrapper.eq("project_name",payResearchProject.getProjectName());
|
||||
queryWrapper.eq("drafting_group_id",payResearchProject.getDraftingGroupId());
|
||||
queryWrapper.ne("id",payResearchProject.getId());
|
||||
int count = payDraftingGroupResearchProjectService.count(queryWrapper);
|
||||
if (count>0) {
|
||||
return Result.error("项目名称已存在,请修改");
|
||||
}
|
||||
//删除关联文件表
|
||||
payDraftingGroupResearchProjectService.deleteFile(payResearchProject.getId());
|
||||
//重新加入关系表
|
||||
if(StringUtils.isNotBlank(payResearchProject.getFiles())){
|
||||
String files = payResearchProject.getFiles();
|
||||
List<String> filesList = Arrays.asList(files.split(","));
|
||||
for(String s:filesList){
|
||||
if(StringUtils.isBlank(s)){
|
||||
throw new JeroBootException("文件id不能为空!");
|
||||
}
|
||||
UUID uuid = UUID.randomUUID();
|
||||
payDraftingGroupResearchProjectService.saveFile(uuid.toString(),s,payResearchProject.getId());
|
||||
}
|
||||
}
|
||||
//更新
|
||||
payDraftingGroupResearchProjectService.updateById(payResearchProject);
|
||||
return Result.OK("编辑成功!");
|
||||
}
|
||||
}
|
||||
+84
@@ -0,0 +1,84 @@
|
||||
package com.jero.drafting.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import com.jero.data.entity.Files;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.experimental.Accessors;
|
||||
import org.jeecgframework.poi.excel.annotation.Excel;
|
||||
import org.springframework.format.annotation.DateTimeFormat;
|
||||
|
||||
import javax.validation.constraints.NotEmpty;
|
||||
import javax.validation.constraints.NotNull;
|
||||
import javax.validation.constraints.Size;
|
||||
import java.util.List;
|
||||
|
||||
@Data
|
||||
@TableName("pay_drafting_group_research_project")
|
||||
@Accessors(chain = true)
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
@ApiModel(value="pay_drafting_group_research_project对象", description="pay_drafting_group_research_project")
|
||||
public class PayDraftingGroupResearchProject {
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**主键*/
|
||||
@TableId(type = IdType.ASSIGN_ID)
|
||||
@ApiModelProperty(value = "主键")
|
||||
private String id;
|
||||
|
||||
/**起草组id*/
|
||||
@NotNull(message ="起草组id不能为空")
|
||||
@ApiModelProperty(value = "起草组id")
|
||||
private String draftingGroupId;
|
||||
|
||||
/**项目名称*/
|
||||
@Excel(name = "项目名称", width = 15)
|
||||
@NotNull(message ="项目名称不能为空")
|
||||
@Size(max = 50,message = "项目名称长度不超过50个字符")
|
||||
@ApiModelProperty(value = "项目名称")
|
||||
private String projectName;
|
||||
/**主要起草单位*/
|
||||
@Excel(name = "主要起草单位", width = 15)
|
||||
@ApiModelProperty(value = "主要起草单位")
|
||||
@NotEmpty(message = "主要起草单位不能为空")
|
||||
private String draftCompany;
|
||||
/**过程文件*/
|
||||
@Excel(name = "过程文件", width = 15)
|
||||
@ApiModelProperty(value = "过程文件(多个都好隔开)")
|
||||
@NotEmpty(message = "过程文件不能为空")
|
||||
private String files;
|
||||
|
||||
/**文件集合*/
|
||||
@TableField(exist = false)
|
||||
@Excel(name = "文件集合", width = 15)
|
||||
@ApiModelProperty(value = "文件集合")
|
||||
private List<Files> filesList;
|
||||
|
||||
/**项目进度*/
|
||||
@Excel(name = "项目进度", width = 15)
|
||||
@ApiModelProperty(value = "项目进度")
|
||||
@NotEmpty(message = "项目进度不能为空")
|
||||
private java.lang.String projectSchedule;
|
||||
/**创建人*/
|
||||
@ApiModelProperty(value = "创建人")
|
||||
private java.lang.String createBy;
|
||||
/**创建时间*/
|
||||
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
|
||||
@DateTimeFormat(pattern="yyyy-MM-dd")
|
||||
@ApiModelProperty(value = "创建时间")
|
||||
private java.util.Date createTime;
|
||||
/**更新人*/
|
||||
@ApiModelProperty(value = "更新人")
|
||||
private java.lang.String updateBy;
|
||||
/**更新时间*/
|
||||
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
|
||||
@DateTimeFormat(pattern="yyyy-MM-dd")
|
||||
@ApiModelProperty(value = "更新时间")
|
||||
private java.util.Date updateTime;
|
||||
}
|
||||
-7
@@ -5,9 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import com.jero.common.aspect.annotation.Dict;
|
||||
import com.jero.contract.entity.PayIncomeContract;
|
||||
import com.jero.project.entity.PayWorkingGroupSubItemContacts;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
@@ -15,12 +12,8 @@ import lombok.EqualsAndHashCode;
|
||||
import lombok.experimental.Accessors;
|
||||
import org.jeecgframework.poi.excel.annotation.Excel;
|
||||
import org.springframework.format.annotation.DateTimeFormat;
|
||||
import javax.validation.constraints.DecimalMax;
|
||||
import javax.validation.constraints.NotNull;
|
||||
import javax.validation.constraints.Size;
|
||||
import java.io.Serializable;
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDate;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
|
||||
+27
@@ -0,0 +1,27 @@
|
||||
package com.jero.drafting.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.core.toolkit.Constants;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.jero.drafting.entity.PayDraftingGroupResearchProject;
|
||||
import com.jero.drafting.entity.PayDraftingGroupSubItem;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 起草组 在研项目表 Mapper 接口
|
||||
* </p>
|
||||
*
|
||||
* @author sz
|
||||
* @since 2024-01-05
|
||||
*/
|
||||
public interface PayDraftingGroupResearchProjectMapper extends BaseMapper<PayDraftingGroupResearchProject> {
|
||||
|
||||
IPage<PayDraftingGroupResearchProject> pageList(Page<PayDraftingGroupResearchProject> page, @Param(Constants.WRAPPER) QueryWrapper<PayDraftingGroupResearchProject> queryWrapper);
|
||||
|
||||
void saveFile(@Param("id")String id,@Param("fileId")String fileId,@Param("projectId") String projectId);
|
||||
|
||||
void deleteFile(@Param("id")String id);
|
||||
}
|
||||
+35
@@ -0,0 +1,35 @@
|
||||
<?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="com.jero.drafting.mapper.PayDraftingGroupResearchProjectMapper">
|
||||
|
||||
<resultMap id="page" type="com.jero.drafting.entity.PayDraftingGroupResearchProject">
|
||||
<id property="id" column="id" />
|
||||
<result property="projectName" column="project_name" />
|
||||
<result property="draftCompany" column="draft_company" />
|
||||
<result property="files" column="files" />
|
||||
<result property="projectSchedule" column="project_schedule" />
|
||||
<collection property="filesList" ofType="com.jero.data.entity.Files" select="pageFile" javaType="java.util.List" column="id=id" >
|
||||
<result property="fileId" column="fileId" />
|
||||
<result property="fileName" column="file_name" />
|
||||
<result property="createTime" column="create_time" />
|
||||
</collection>
|
||||
</resultMap>
|
||||
|
||||
<select id="pageList" resultMap="page">
|
||||
select * from pay_drafting_group_research_project
|
||||
${ew.customSqlSegment}
|
||||
</select>
|
||||
|
||||
<insert id="saveFile" >
|
||||
insert into pay_drafting_group_research_project_file (id,project_id,file_id) value (#{id},#{projectId},#{fileId})
|
||||
</insert>
|
||||
|
||||
<select id="pageFile" resultType="com.jero.data.entity.Files">
|
||||
select oof.id AS fileId,oof.file_name,oof.create_time from pay_drafting_group_research_project_file prpf left join oss_file oof on(prpf.file_id=oof.id) where prpf.project_id=#{id}
|
||||
</select>
|
||||
|
||||
<delete id="deleteFile">
|
||||
delete from pay_drafting_group_research_project_file ppf where ppf.project_id=#{id}
|
||||
</delete>
|
||||
|
||||
</mapper>
|
||||
+42
@@ -0,0 +1,42 @@
|
||||
package com.jero.drafting.service;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.jero.drafting.entity.PayDraftingGroupResearchProject;
|
||||
import com.jero.drafting.entity.PayDraftingGroupSubItemContacts;
|
||||
import com.jero.project.entity.PayResearchProject;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 起草组 在研项目表 服务类
|
||||
* </p>
|
||||
*
|
||||
* @author sz
|
||||
* @since 2024-01-05
|
||||
*/
|
||||
public interface IPayDraftingGroupResearchProjectService extends IService<PayDraftingGroupResearchProject> {
|
||||
|
||||
/**
|
||||
* 分页条件查询
|
||||
* @param page
|
||||
* @param queryWrapper
|
||||
* @return
|
||||
*/
|
||||
IPage<PayDraftingGroupResearchProject> pageList(Page<PayDraftingGroupResearchProject> page, QueryWrapper<PayDraftingGroupResearchProject> queryWrapper);
|
||||
|
||||
/**
|
||||
* 新增
|
||||
* @param id
|
||||
* @param fileId
|
||||
* @param projectId
|
||||
*/
|
||||
void saveFile(String id, String fileId, String projectId);
|
||||
|
||||
/**
|
||||
* 通过id删除
|
||||
* @param id
|
||||
*/
|
||||
void deleteFile(String id);
|
||||
}
|
||||
+65
@@ -0,0 +1,65 @@
|
||||
package com.jero.drafting.service.impl;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.jero.drafting.entity.PayDraftingGroupResearchProject;
|
||||
import com.jero.drafting.entity.PayDraftingGroupSubItemContacts;
|
||||
import com.jero.drafting.mapper.PayDraftingGroupResearchProjectMapper;
|
||||
import com.jero.drafting.mapper.PayDraftingGroupSubItemContactsMapper;
|
||||
import com.jero.drafting.service.IPayDraftingGroupResearchProjectService;
|
||||
import com.jero.drafting.service.IPayDraftingGroupSubItemContactsService;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import org.springframework.web.bind.annotation.ResponseBody;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 起草组 在研项目表 服务实现类
|
||||
* </p>
|
||||
*
|
||||
* @author sz
|
||||
* @since 2024-01-05
|
||||
*/
|
||||
@Service
|
||||
@Transactional
|
||||
public class PayDraftingGroupResearchProjectServiceImpl extends ServiceImpl<PayDraftingGroupResearchProjectMapper, PayDraftingGroupResearchProject> implements IPayDraftingGroupResearchProjectService {
|
||||
|
||||
@Resource
|
||||
private PayDraftingGroupResearchProjectMapper researchProjectMapper;
|
||||
|
||||
/**
|
||||
* 分页条件查询
|
||||
* @param page
|
||||
* @param queryWrapper
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public IPage<PayDraftingGroupResearchProject> pageList(Page<PayDraftingGroupResearchProject> page, QueryWrapper<PayDraftingGroupResearchProject> queryWrapper) {
|
||||
return researchProjectMapper.pageList(page,queryWrapper);
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增
|
||||
* @param id
|
||||
* @param fileId
|
||||
* @param projectId
|
||||
*/
|
||||
@Override
|
||||
public void saveFile(String id, String fileId, String projectId) {
|
||||
researchProjectMapper.saveFile(id,fileId,projectId);
|
||||
}
|
||||
|
||||
/**
|
||||
* 通过id删除
|
||||
*
|
||||
* @param id
|
||||
*/
|
||||
@Override
|
||||
public void deleteFile(String id) {
|
||||
researchProjectMapper.deleteFile(id);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user