Team Create Complete Fields

This commit is contained in:
JiaJu Zhuang
2023-08-26 14:15:26 +08:00
parent de03310c18
commit b00d6856b0
10 changed files with 112 additions and 18 deletions

View File

@ -1,5 +1,7 @@
package ai.chat2db.server.domain.api.model; package ai.chat2db.server.domain.api.model;
import java.util.Date;
import ai.chat2db.server.domain.api.enums.RoleCodeEnum; import ai.chat2db.server.domain.api.enums.RoleCodeEnum;
import ai.chat2db.server.domain.api.enums.ValidStatusEnum; import ai.chat2db.server.domain.api.enums.ValidStatusEnum;
import jakarta.validation.constraints.NotNull; import jakarta.validation.constraints.NotNull;
@ -62,4 +64,19 @@ public class User {
*/ */
@NotNull @NotNull
private String status; private String status;
/**
* 修改时间
*/
private Date gmtModified;
/**
* 修改人用户id
*/
private Long modifiedUserId;
/**
* 修改人用户
*/
private User modifiedUser;
} }

View File

@ -16,8 +16,8 @@ import lombok.experimental.SuperBuilder;
@AllArgsConstructor @AllArgsConstructor
public class UserSelector { public class UserSelector {
/** /**
* empty * 修改人用户
*/ */
private Boolean empty; private Boolean modifiedUser;
} }

View File

@ -35,6 +35,9 @@ public abstract class UserConverter {
* @param data * @param data
* @return * @return
*/ */
@Mappings({
@Mapping(target = "modifiedUser.id", source = "modifiedUserId"),
})
public abstract User do2dto(DbhubUserDO data); public abstract User do2dto(DbhubUserDO data);
/** /**
@ -57,14 +60,21 @@ public abstract class UserConverter {
* @param user * @param user
* @return * @return
*/ */
public abstract DbhubUserDO param2do(UserCreateParam user); @Mappings({
@Mapping(target = "createUserId", source = "userId"),
@Mapping(target = "modifiedUserId", source = "userId"),
})
public abstract DbhubUserDO param2do(UserCreateParam user, Long userId);
/** /**
* *
* @param user * @param user
* @return * @return
*/ */
public abstract DbhubUserDO param2do(UserUpdateParam user); @Mappings({
@Mapping(target = "modifiedUserId", source = "userId"),
})
public abstract DbhubUserDO param2do(UserUpdateParam user, Long userId);
/** /**
* Fill in detailed information * Fill in detailed information

View File

@ -20,12 +20,15 @@ import ai.chat2db.server.tools.base.wrapper.result.ListResult;
import ai.chat2db.server.tools.base.wrapper.result.PageResult; import ai.chat2db.server.tools.base.wrapper.result.PageResult;
import ai.chat2db.server.tools.common.exception.DataAlreadyExistsBusinessException; import ai.chat2db.server.tools.common.exception.DataAlreadyExistsBusinessException;
import ai.chat2db.server.tools.common.exception.ParamBusinessException; import ai.chat2db.server.tools.common.exception.ParamBusinessException;
import ai.chat2db.server.tools.common.util.ContextUtils;
import ai.chat2db.server.tools.common.util.EasyCollectionUtils;
import cn.hutool.crypto.digest.DigestUtil; import cn.hutool.crypto.digest.DigestUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import jakarta.annotation.Resource; import jakarta.annotation.Resource;
import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.BooleanUtils;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@ -84,7 +87,10 @@ public class UserServiceImpl implements UserService {
Page<DbhubUserDO> page = new Page<>(param.getPageNo(), param.getPageSize()); Page<DbhubUserDO> page = new Page<>(param.getPageNo(), param.getPageSize());
page.setSearchCount(param.getEnableReturnCount()); page.setSearchCount(param.getEnableReturnCount());
IPage<DbhubUserDO> iPage = dbhubUserMapper.selectPage(page, queryWrapper); IPage<DbhubUserDO> iPage = dbhubUserMapper.selectPage(page, queryWrapper);
return PageResult.of(userConverter.do2dto(iPage.getRecords()), iPage.getTotal(), param); List<User> list = userConverter.do2dto(iPage.getRecords());
fillData(list, selector);
return PageResult.of(list, iPage.getTotal(), param);
} }
@Override @Override
@ -96,7 +102,7 @@ public class UserServiceImpl implements UserService {
throw new ParamBusinessException("roleCode"); throw new ParamBusinessException("roleCode");
} }
DbhubUserDO data = userConverter.param2do(param); DbhubUserDO data = userConverter.param2do(param, ContextUtils.getUserId());
if (Objects.nonNull(data.getPassword())) { if (Objects.nonNull(data.getPassword())) {
String bcryptPassword = DigestUtil.bcrypt(data.getPassword()); String bcryptPassword = DigestUtil.bcrypt(data.getPassword());
data.setPassword(bcryptPassword); data.setPassword(bcryptPassword);
@ -138,10 +144,25 @@ public class UserServiceImpl implements UserService {
throw new ParamBusinessException("roleCode"); throw new ParamBusinessException("roleCode");
} }
DbhubUserDO data = userConverter.param2do(param); DbhubUserDO data = userConverter.param2do(param, ContextUtils.getUserId());
String bcryptPassword = DigestUtil.bcrypt(data.getPassword()); String bcryptPassword = DigestUtil.bcrypt(data.getPassword());
data.setPassword(bcryptPassword); data.setPassword(bcryptPassword);
dbhubUserMapper.insert(data); dbhubUserMapper.insert(data);
return DataResult.of(data.getId()); return DataResult.of(data.getId());
} }
private void fillData(List<User> list, UserSelector selector) {
if (CollectionUtils.isEmpty(list) || selector == null) {
return;
}
fillUser(list, selector);
}
private void fillUser(List<User> list, UserSelector selector) {
if (BooleanUtils.isNotTrue(selector.getModifiedUser())) {
return;
}
userConverter.fillDetail(EasyCollectionUtils.toList(list, User::getModifiedUser));
}
} }

View File

@ -68,4 +68,14 @@ public class DbhubUserDO implements Serializable {
* 用户状态 * 用户状态
*/ */
private String status; private String status;
/**
* 创建人用户id
*/
private Long createUserId;
/**
* 修改人用户id
*/
private Long modifiedUserId;
} }

View File

@ -1,11 +1,10 @@
package ai.chat2db.server.domain.repository.entity; package ai.chat2db.server.domain.repository.entity;
import java.io.Serializable;
import java.util.Date;
import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import java.util.Date;
import lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;
@ -65,11 +64,6 @@ public class TeamDO implements Serializable {
*/ */
private String status; private String status;
/**
* 角色编码
*/
private String roleCode;
/** /**
* 团队描述 * 团队描述
*/ */

View File

@ -38,7 +38,11 @@ ALTER TABLE `dbhub_user`
ALTER TABLE `dbhub_user` ALTER TABLE `dbhub_user`
ADD `status` varchar(32) NOT NULL DEFAULT 'VALID' COMMENT '用户状态'; ADD `status` varchar(32) NOT NULL DEFAULT 'VALID' COMMENT '用户状态';
ALTER TABLE `dbhub_user`
ADD `create_user_id` bigint(20) unsigned NOT NULL DEFAULT 1 COMMENT '创建人用户id';
ALTER TABLE `dbhub_user`
ADD `modified_user_id` bigint(20) unsigned NOT NULL DEFAULT 1 COMMENT '修改人用户id';
update dbhub_user update dbhub_user
set role_code= 'DESKTOP',user_name='_desktop_default_user_name',password='_desktop_default_user_name',nick_name='桌面端用户' set role_code= 'DESKTOP',user_name='_desktop_default_user_name',password='_desktop_default_user_name',nick_name='桌面端用户'
@ -58,7 +62,6 @@ CREATE TABLE IF NOT EXISTS `team`
`code` varchar(128) DEFAULT NOT NULL COMMENT '团队编码', `code` varchar(128) DEFAULT NOT NULL COMMENT '团队编码',
`name` varchar(512) DEFAULT NULL COMMENT '团队名称', `name` varchar(512) DEFAULT NULL COMMENT '团队名称',
`status` varchar(32) NOT NULL DEFAULT 'VALID' COMMENT '团队状态', `status` varchar(32) NOT NULL DEFAULT 'VALID' COMMENT '团队状态',
`role_code` varchar(32) DEFAULT NULL COMMENT '角色编码',
`description` text DEFAULT NULL COMMENT '团队描述', `description` text DEFAULT NULL COMMENT '团队描述',
PRIMARY KEY (`id`) PRIMARY KEY (`id`)
) ENGINE = InnoDB ) ENGINE = InnoDB

View File

@ -35,7 +35,7 @@ public class MybatisGeneratorTest extends BaseTest {
//doGenerator(Lists.newArrayList("operation_saved")); //doGenerator(Lists.newArrayList("operation_saved"));
//doGenerator(Lists.newArrayList("environment","data_source","team","team_dbhub_user","data_source_access", //doGenerator(Lists.newArrayList("environment","data_source","team","team_dbhub_user","data_source_access",
// "dbhub_user")); // "dbhub_user"));
doGenerator(Lists.newArrayList("data_source")); doGenerator(Lists.newArrayList("dbhub_user","team"));
} }
private void doGenerator(List<String> tableList) { private void doGenerator(List<String> tableList) {

View File

@ -6,6 +6,7 @@ import ai.chat2db.server.admin.api.controller.user.request.UserCreateRequest;
import ai.chat2db.server.admin.api.controller.user.request.UserUpdateRequest; import ai.chat2db.server.admin.api.controller.user.request.UserUpdateRequest;
import ai.chat2db.server.admin.api.controller.user.vo.UserPageQueryVO; import ai.chat2db.server.admin.api.controller.user.vo.UserPageQueryVO;
import ai.chat2db.server.common.api.controller.request.CommonPageQueryRequest; import ai.chat2db.server.common.api.controller.request.CommonPageQueryRequest;
import ai.chat2db.server.domain.api.param.user.UserSelector;
import ai.chat2db.server.domain.api.service.UserService; import ai.chat2db.server.domain.api.service.UserService;
import ai.chat2db.server.tools.base.wrapper.result.ActionResult; import ai.chat2db.server.tools.base.wrapper.result.ActionResult;
import ai.chat2db.server.tools.base.wrapper.result.DataResult; import ai.chat2db.server.tools.base.wrapper.result.DataResult;
@ -29,6 +30,10 @@ import org.springframework.web.bind.annotation.RestController;
@RestController @RestController
public class UserAdminController { public class UserAdminController {
private static final UserSelector USER_SELECTOR= UserSelector.builder()
.modifiedUser(Boolean.TRUE)
.build();
@Resource @Resource
private UserService userService; private UserService userService;
@Resource @Resource
@ -43,7 +48,7 @@ public class UserAdminController {
*/ */
@GetMapping("/page") @GetMapping("/page")
public WebPageResult<UserPageQueryVO> page(@Valid CommonPageQueryRequest request) { public WebPageResult<UserPageQueryVO> page(@Valid CommonPageQueryRequest request) {
return userService.pageQuery(userAdminConverter.request2param(request), null) return userService.pageQuery(userAdminConverter.request2param(request), USER_SELECTOR)
.mapToWeb(userAdminConverter::dto2vo); .mapToWeb(userAdminConverter::dto2vo);
} }

View File

@ -1,6 +1,10 @@
package ai.chat2db.server.admin.api.controller.user.vo; package ai.chat2db.server.admin.api.controller.user.vo;
import java.util.Date;
import ai.chat2db.server.common.api.controller.vo.SimpleUserVO;
import ai.chat2db.server.domain.api.enums.RoleCodeEnum;
import ai.chat2db.server.domain.api.enums.ValidStatusEnum; import ai.chat2db.server.domain.api.enums.ValidStatusEnum;
import jakarta.validation.constraints.NotNull; import jakarta.validation.constraints.NotNull;
import lombok.Data; import lombok.Data;
@ -36,4 +40,34 @@ public class UserPageQueryVO {
* @see ValidStatusEnum * @see ValidStatusEnum
*/ */
private String status; private String status;
/**
* 邮箱
*/
@NotNull
private String email;
/**
* 角色编码
*
* @see RoleCodeEnum
*/
private String roleCode;
/**
* 修改时间
*/
private Date gmtModified;
/**
* 修改人用户id
*/
private Long modifiedUserId;
/**
* 修改人用户
*/
private SimpleUserVO modifiedUser;
} }