Browse Source

feat;

回收站功能
 停止发布
dev
wangqing 4 years ago
parent
commit
d0370300be
  1. 1
      doc/tduck.sql
  2. 74
      tduck-api/src/main/java/com/tduck/cloud/api/web/controller/UserProjectController.java
  3. 4
      tduck-common/src/main/java/com/tduck/cloud/common/entity/BaseEntity.java
  4. 3
      tduck-project/src/main/java/com/tduck/cloud/project/entity/UserProjectEntity.java
  5. 2
      tduck-project/src/main/java/com/tduck/cloud/project/vo/ExportProjectResultVO.java
  6. 37
      tduck-project/src/main/java/com/tduck/cloud/project/vo/RecycleProjectVO.java

1
doc/tduck.sql

@ -142,6 +142,7 @@ CREATE TABLE `pr_user_project` (
`user_id` bigint(20) NOT NULL COMMENT '用户ID',
`type` tinyint(2) NULL DEFAULT NULL COMMENT '项目类型',
`status` tinyint(2) NOT NULL DEFAULT 0 COMMENT '状态',
`is_deleted` tinyint(1) NOT NULL DEFAULT '0' COMMENT '是否删除',
`update_time` datetime(0) NULL DEFAULT CURRENT_TIMESTAMP(0) COMMENT '更新时间',
`create_time` datetime(0) NULL DEFAULT CURRENT_TIMESTAMP(0) COMMENT '创建时间',
PRIMARY KEY (`id`) USING BTREE,

74
tduck-api/src/main/java/com/tduck/cloud/api/web/controller/UserProjectController.java

@ -2,12 +2,11 @@ package com.tduck.cloud.api.web.controller;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.NumberUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONUtil;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.google.common.collect.Lists;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.google.common.collect.Sets;
import com.tduck.cloud.api.annotation.Login;
import com.tduck.cloud.api.util.HttpUtils;
@ -29,6 +28,7 @@ import com.tduck.cloud.project.request.SortProjectItemRequest;
import com.tduck.cloud.project.service.*;
import com.tduck.cloud.project.util.SortUtils;
import com.tduck.cloud.project.vo.OperateProjectItemVO;
import com.tduck.cloud.project.vo.RecycleProjectVO;
import com.tduck.cloud.project.vo.UserProjectDetailVO;
import com.tduck.cloud.project.vo.UserProjectThemeVo;
import com.tduck.cloud.wx.mp.constant.WxMpRedisKeyConstants;
@ -60,6 +60,7 @@ public class UserProjectController {
private final UserProjectService projectService;
private final UserProjectItemService projectItemService;
private final UserProjectResultService projectResultService;
private final SortUtils sortUtils;
private final UserProjectThemeService userProjectThemeService;
private final UserProjectSettingService userProjectSettingService;
@ -141,6 +142,7 @@ public class UserProjectController {
public Result queryMyProjects(@RequestAttribute Long userId, QueryProjectRequest.Page request) {
return Result.success(projectService.page(request.toMybatisPage(),
Wrappers.<UserProjectEntity>lambdaQuery().eq(UserProjectEntity::getUserId, userId)
.eq(UserProjectEntity::getDeleted, false)
.eq(ObjectUtil.isNotNull(request.getStatus()), UserProjectEntity::getStatus, request.getStatus())
.like(StrUtil.isNotBlank(request.getName()), UserProjectEntity::getName, request.getName())
.le(ObjectUtil.isNotNull(request.getEndDateTime()), UserProjectEntity::getUpdateTime, request.getEndDateTime())
@ -198,7 +200,11 @@ public class UserProjectController {
@Login
@PostMapping("/user/project/delete")
public Result deleteProject(@RequestBody UserProjectEntity request) {
boolean del = projectService.remove(Wrappers.<UserProjectEntity>lambdaQuery().eq(UserProjectEntity::getKey, request.getKey()));
boolean del = projectService.update(
new UserProjectEntity() {{
setDeleted(Boolean.TRUE);
}},
Wrappers.<UserProjectEntity>lambdaQuery().eq(UserProjectEntity::getKey, request.getKey()));
return Result.success(del);
}
@ -435,9 +441,8 @@ public class UserProjectController {
*
* @return
*/
@GetMapping("/setting/status1")
@GetMapping("/user/project/setting-status")
public Result querySettingStatus(@RequestParam String projectKey, HttpServletRequest request) {
log.info("aaaaa");
return userProjectSettingService.getUserProjectSettingStatus(projectKey, HttpUtils.getIpAddr(request));
}
@ -468,7 +473,6 @@ public class UserProjectController {
return Result.success();
}
/**
* 获取项目微信通知用户
*
@ -487,4 +491,62 @@ public class UserProjectController {
return Result.success(wxMpUserService.listWxMpUserByOpenId(subNotifyUsers)
.stream().map(item -> new WxMpUserVO(item.getNickname(), item.getHeadImgUrl(), item.getOpenId())).collect(Collectors.toList()));
}
/**
* 回收站项目分页
*
* @return
*/
@Login
@GetMapping("/user/project/recycle/page")
public Result queryRecycleProjects(@RequestAttribute Long userId, QueryProjectRequest.Page request) {
Page page = projectService.page(request.toMybatisPage(),
Wrappers.<UserProjectEntity>lambdaQuery().eq(UserProjectEntity::getUserId, userId)
.eq(UserProjectEntity::getDeleted, true)
.orderByDesc(BaseEntity::getUpdateTime));
List<UserProjectEntity> records = page.getRecords();
List<RecycleProjectVO> projectVOList = records.stream().map(item -> {
int count = projectResultService.count(Wrappers.<UserProjectResultEntity>lambdaQuery().eq(UserProjectResultEntity::getProjectKey, item.getKey()));
return new RecycleProjectVO(item.getKey(), count, item.getName(), item.getCreateTime(), item.getUpdateTime());
}).collect(Collectors.toList());
page.setRecords(projectVOList);
return Result.success(page);
}
/**
* 从回收站中恢复项目
*
* @return
*/
@Login
@PostMapping("/user/project/recycle/restore")
public Result restoreRecycleProject(@RequestBody UserProjectEntity request) {
boolean flag = projectService.update(
new UserProjectEntity() {{
setDeleted(Boolean.FALSE);
}},
Wrappers.<UserProjectEntity>lambdaQuery().eq(UserProjectEntity::getKey, request.getKey()));
return Result.success(flag);
}
/**
* 从回收站中删除项目
*
* @return
*/
@Login
@PostMapping("/user/project/recycle/delete")
public Result deleteRecycleProject(@RequestAttribute Long userId,@RequestBody UserProjectEntity projectEntity) {
boolean remove = projectService.remove(Wrappers.<UserProjectEntity>lambdaQuery().eq(UserProjectEntity::getUserId, userId)
.eq(UserProjectEntity::getKey, projectEntity.getKey()));
if (remove) {
userProjectThemeService.remove(Wrappers.<UserProjectThemeEntity>lambdaQuery()
.eq(UserProjectThemeEntity::getProjectKey, projectEntity.getKey()));
userProjectSettingService.remove(Wrappers.<UserProjectSettingEntity>lambdaQuery()
.eq(UserProjectSettingEntity::getProjectKey, projectEntity.getKey()));
}
return Result.success(remove);
}
}

4
tduck-common/src/main/java/com/tduck/cloud/common/entity/BaseEntity.java

@ -28,13 +28,13 @@ public class BaseEntity<T> extends Model {
**/
@TableField(fill = FieldFill.INSERT)
@JsonFormat(pattern = DatePattern.NORM_DATETIME_PATTERN)
private LocalDateTime createTime;
protected LocalDateTime createTime;
/**
* 更新时间
**/
@TableField(fill = FieldFill.INSERT_UPDATE)
@JsonFormat(pattern = DatePattern.NORM_DATETIME_PATTERN)
private LocalDateTime updateTime;
protected LocalDateTime updateTime;
}

3
tduck-project/src/main/java/com/tduck/cloud/project/entity/UserProjectEntity.java

@ -71,5 +71,8 @@ public class UserProjectEntity extends BaseEntity<UserProjectEntity> {
*/
private Integer type;
@TableField(value = "is_deleted")
private Boolean deleted;
}

2
tduck-project/src/main/java/com/tduck/cloud/project/vo/ExportProjectResultVO.java

@ -11,7 +11,7 @@ import java.util.List;
import java.util.Map;
/**
* @author : wangqing
* @author : smalljop
* @description : 导出excel result
* @create : 2021/03/18 16:18
**/

37
tduck-project/src/main/java/com/tduck/cloud/project/vo/RecycleProjectVO.java

@ -0,0 +1,37 @@
package com.tduck.cloud.project.vo;
import com.baomidou.mybatisplus.annotation.TableField;
import com.tduck.cloud.common.entity.BaseEntity;
import com.tduck.cloud.project.entity.UserProjectEntity;
import com.tduck.cloud.project.entity.enums.ProjectSourceTypeEnum;
import com.tduck.cloud.project.entity.enums.ProjectStatusEnum;
import lombok.AllArgsConstructor;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import java.time.LocalDateTime;
/**
* @author : smalljop
* @description : 回收站项目
* @create : 2021/03/23 17:13
**/
@Data
@AllArgsConstructor
public class RecycleProjectVO extends BaseEntity {
private String key;
/***
* 收集数量
*/
private Integer resultCount;
private String name;
public RecycleProjectVO(String key, int resultCount, String name, LocalDateTime createTime, LocalDateTime updateTime) {
this.key = key;
this.resultCount = resultCount;
this.name = name;
this.createTime = createTime;
this.updateTime = updateTime;
}
}
Loading…
Cancel
Save