feat: add delete user api

This commit is contained in:
vran
2022-04-09 17:42:10 +08:00
parent 401f61b45c
commit bb2fd21990
10 changed files with 231 additions and 51 deletions

View File

@@ -15,6 +15,7 @@ import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.Sort;
import org.springframework.stereotype.Repository;
import java.io.Serializable;
import java.util.*;
import static com.databasir.dao.Tables.USER;
@@ -31,15 +32,44 @@ public class UserDao extends BaseDao<UserPojo> {
super(USER, UserPojo.class);
}
@Override
public <T extends Serializable> int deleteById(T id) {
return getDslContext()
.deleteFrom(USER).where(identity().eq(id).and(USER.DELETED.eq(false)))
.execute();
}
@Override
public int delete(Condition condition) {
return getDslContext()
.update(USER)
.set(USER.DELETED, true)
.set(USER.DELETED_TOKEN, USER.ID)
.where(USER.DELETED.eq(false))
.execute();
}
@Override
public boolean exists(Condition condition) {
return super.exists(condition.and(USER.DELETED.eq(false)));
}
@Override
public <T extends Serializable> boolean existsById(T id) {
return getDslContext().fetchExists(USER, identity().eq(id).and(USER.DELETED.eq(false)));
}
public void updateEnabledByUserId(Integer userId, Boolean enabled) {
dslContext
.update(USER).set(USER.ENABLED, enabled).where(USER.ID.eq(userId))
.update(USER).set(USER.ENABLED, enabled)
.where(USER.ID.eq(userId).and(USER.DELETED.eq(false)))
.execute();
}
public void updatePassword(Integer userId, String password) {
dslContext
.update(USER).set(USER.PASSWORD, password).where(USER.ID.eq(userId))
.update(USER).set(USER.PASSWORD, password)
.where(USER.ID.eq(userId).and(USER.DELETED.eq(false)))
.execute();
}
@@ -49,7 +79,7 @@ public class UserDao extends BaseDao<UserPojo> {
}
return dslContext
.select(USER.fields()).from(USER)
.where(USER.ID.in(userIds))
.where(USER.ID.in(userIds).and(USER.DELETED.eq(false)))
.fetchInto(UserPojo.class);
}
@@ -59,7 +89,8 @@ public class UserDao extends BaseDao<UserPojo> {
return dslContext
.select(USER.fields()).from(USER)
.innerJoin(USER_ROLE).on(USER_ROLE.USER_ID.eq(USER.ID))
.where(USER_ROLE.GROUP_ID.eq(groupId).and(USER_ROLE.ROLE.eq(role)))
.where(USER.DELETED.eq(false)
.and(USER_ROLE.GROUP_ID.eq(groupId).and(USER_ROLE.ROLE.eq(role))))
.orderBy(USER_ROLE.ID.desc())
.limit(size)
.fetchInto(UserPojo.class);
@@ -67,21 +98,24 @@ public class UserDao extends BaseDao<UserPojo> {
public Optional<UserPojo> selectByEmail(String email) {
return dslContext
.select(USER.fields()).from(USER).where(USER.EMAIL.eq(email))
.select(USER.fields()).from(USER)
.where(USER.EMAIL.eq(email).and(USER.DELETED.eq(false)))
.fetchOptionalInto(UserPojo.class);
}
public Optional<UserPojo> selectByEmailOrUsername(String emailOrUsername) {
return dslContext
.select(USER.fields()).from(USER)
.where(USER.EMAIL.eq(emailOrUsername).or(USER.USERNAME.eq(emailOrUsername)))
.where(USER.DELETED.eq(false)
.and(USER.EMAIL.eq(emailOrUsername).or(USER.USERNAME.eq(emailOrUsername))))
.fetchOptionalInto(UserPojo.class);
}
public List<UserPojo> selectEnabledGroupMembers(Integer groupId) {
return dslContext.select(USER.fields()).from(USER)
.innerJoin(USER_ROLE).on(USER.ID.eq(USER_ROLE.USER_ID))
.where(USER_ROLE.GROUP_ID.eq(groupId).and(USER.ENABLED.eq(true)))
.where(USER.DELETED.eq(false)
.and(USER_ROLE.GROUP_ID.eq(groupId).and(USER.ENABLED.eq(true))))
.fetchInto(UserPojo.class);
}
@@ -91,7 +125,8 @@ public class UserDao extends BaseDao<UserPojo> {
.selectCount()
.from(USER)
.innerJoin(USER_ROLE).on(USER.ID.eq(USER_ROLE.USER_ID))
.where(USER_ROLE.GROUP_ID.eq(groupId).and(condition))
.where(USER.DELETED.eq(false)
.and(USER_ROLE.GROUP_ID.eq(groupId).and(condition)))
.fetchOne(0, int.class);
// data
@@ -100,7 +135,8 @@ public class UserDao extends BaseDao<UserPojo> {
USER_ROLE.USER_ID, USER_ROLE.ROLE, USER_ROLE.GROUP_ID, USER_ROLE.CREATE_AT)
.from(USER)
.innerJoin(USER_ROLE).on(USER.ID.eq(USER_ROLE.USER_ID))
.where(USER_ROLE.GROUP_ID.eq(groupId).and(condition))
.where(USER.DELETED.eq(false)
.and(USER_ROLE.GROUP_ID.eq(groupId).and(condition)))
.orderBy(getSortFields(request.getSort()))
.offset(request.getOffset()).limit(request.getPageSize())
.fetchInto(GroupMemberDetailPojo.class);

View File

@@ -27,17 +27,19 @@ CREATE TABLE IF NOT EXISTS sys_mail
CREATE TABLE IF NOT EXISTS user
(
id INT PRIMARY KEY AUTO_INCREMENT,
email VARCHAR(512) NOT NULL,
username VARCHAR(128) NOT NULL,
password TEXT NOT NULL,
nickname VARCHAR(255) NOT NULL,
avatar VARCHAR(512) DEFAULT NULL,
enabled BOOLEAN NOT NULL DEFAULT FALSE,
update_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
create_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
CONSTRAINT UNIQUE uk_email (email),
CONSTRAINT UNIQUE uk_username (username)
id INT PRIMARY KEY AUTO_INCREMENT,
email VARCHAR(512) NOT NULL,
username VARCHAR(128) NOT NULL,
password TEXT NOT NULL,
nickname VARCHAR(255) NOT NULL,
avatar VARCHAR(512) DEFAULT NULL,
enabled BOOLEAN NOT NULL DEFAULT FALSE,
deleted BOOLEAN NOT NULL DEFAULT FALSE,
deleted_token INT NOT NULL DEFAULT 0,
update_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
create_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
CONSTRAINT UNIQUE uk_email (email, deleted_token),
CONSTRAINT UNIQUE uk_username (username, deleted_token)
) CHARSET utf8mb4
COLLATE utf8mb4_unicode_ci;