mirror of
https://github.com/CodePhiliaX/Chat2DB.git
synced 2025-08-01 06:16:04 +08:00
Complete team user code
This commit is contained in:
@ -3,6 +3,7 @@ package ai.chat2db.server.domain.core.converter;
|
||||
import java.util.List;
|
||||
|
||||
import ai.chat2db.server.domain.api.model.DataSourceAccess;
|
||||
import ai.chat2db.server.domain.api.param.datasource.access.DataSourceAccessCreatParam;
|
||||
import ai.chat2db.server.domain.repository.entity.DataSourceAccessDO;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.mapstruct.Mapper;
|
||||
@ -46,6 +47,19 @@ public abstract class DataSourceAccessConverter {
|
||||
public abstract DataSourceAccessDO param2do(Long dataSourceId, Long accessObjectId, String accessObjectType,
|
||||
Long userId);
|
||||
|
||||
/**
|
||||
* convert
|
||||
*
|
||||
* @param param
|
||||
|
||||
* @return
|
||||
*/
|
||||
@Mappings({
|
||||
@Mapping(target = "createUserId", source = "userId"),
|
||||
@Mapping(target = "modifiedUserId", source = "userId"),
|
||||
})
|
||||
public abstract DataSourceAccessDO param2do(DataSourceAccessCreatParam param, Long userId);
|
||||
|
||||
/**
|
||||
* convert
|
||||
*
|
||||
|
@ -4,6 +4,8 @@ import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import ai.chat2db.server.domain.api.model.Team;
|
||||
import ai.chat2db.server.domain.api.param.team.TeamCreateParam;
|
||||
import ai.chat2db.server.domain.api.param.team.TeamUpdateParam;
|
||||
import ai.chat2db.server.domain.api.service.TeamService;
|
||||
import ai.chat2db.server.domain.repository.entity.TeamDO;
|
||||
import ai.chat2db.server.tools.common.util.EasyCollectionUtils;
|
||||
@ -37,6 +39,22 @@ public abstract class TeamConverter {
|
||||
*/
|
||||
public abstract List<Team> do2dto(List<TeamDO> list);
|
||||
|
||||
/**
|
||||
* convert
|
||||
*
|
||||
* @param param
|
||||
* @return
|
||||
*/
|
||||
public abstract TeamDO param2do(TeamCreateParam param);
|
||||
|
||||
/**
|
||||
* convert
|
||||
*
|
||||
* @param param
|
||||
* @return
|
||||
*/
|
||||
public abstract TeamDO param2do(TeamUpdateParam param);
|
||||
|
||||
/**
|
||||
* Fill in detailed information
|
||||
*
|
||||
|
@ -5,6 +5,7 @@ import java.util.Map;
|
||||
|
||||
import ai.chat2db.server.domain.api.model.Environment;
|
||||
import ai.chat2db.server.domain.api.model.TeamUser;
|
||||
import ai.chat2db.server.domain.api.param.team.user.TeamUserCreatParam;
|
||||
import ai.chat2db.server.domain.api.service.EnvironmentService;
|
||||
import ai.chat2db.server.domain.repository.entity.TeamUserDO;
|
||||
import ai.chat2db.server.tools.common.util.EasyCollectionUtils;
|
||||
@ -38,6 +39,20 @@ public abstract class TeamUserConverter {
|
||||
*/
|
||||
public abstract List<TeamUser> do2dto(List<TeamUserDO> list);
|
||||
|
||||
/**
|
||||
* convert
|
||||
*
|
||||
* @param param
|
||||
|
||||
* @return
|
||||
*/
|
||||
@Mappings({
|
||||
@Mapping(target = "createUserId", source = "userId"),
|
||||
@Mapping(target = "modifiedUserId", source = "userId"),
|
||||
})
|
||||
public abstract TeamUserDO param2do(TeamUserCreatParam param, Long userId);
|
||||
|
||||
|
||||
/**
|
||||
* Fill in detailed information
|
||||
*
|
||||
|
@ -4,6 +4,8 @@ import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import ai.chat2db.server.domain.api.model.User;
|
||||
import ai.chat2db.server.domain.api.param.user.UserCreateParam;
|
||||
import ai.chat2db.server.domain.api.param.user.UserUpdateParam;
|
||||
import ai.chat2db.server.domain.api.service.UserService;
|
||||
import ai.chat2db.server.domain.repository.entity.DbhubUserDO;
|
||||
import ai.chat2db.server.tools.common.util.EasyCollectionUtils;
|
||||
@ -50,6 +52,20 @@ public abstract class UserConverter {
|
||||
*/
|
||||
public abstract DbhubUserDO dto2do(User user);
|
||||
|
||||
/**
|
||||
*
|
||||
* @param user
|
||||
* @return
|
||||
*/
|
||||
public abstract DbhubUserDO param2do(UserCreateParam user);
|
||||
|
||||
/**
|
||||
*
|
||||
* @param user
|
||||
* @return
|
||||
*/
|
||||
public abstract DbhubUserDO param2do(UserUpdateParam user);
|
||||
|
||||
/**
|
||||
* Fill in detailed information
|
||||
*
|
||||
|
@ -3,16 +3,13 @@ package ai.chat2db.server.domain.core.impl;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import com.alibaba.fastjson2.JSON;
|
||||
|
||||
import ai.chat2db.server.domain.api.enums.AccessObjectTypeEnum;
|
||||
import ai.chat2db.server.domain.api.model.DataSourceAccess;
|
||||
import ai.chat2db.server.domain.api.model.DataSourceAccessObject;
|
||||
import ai.chat2db.server.domain.api.model.Team;
|
||||
import ai.chat2db.server.domain.api.model.User;
|
||||
import ai.chat2db.server.domain.api.param.datasource.access.DataSourceAccessBatchCreatParam;
|
||||
import ai.chat2db.server.domain.api.param.datasource.access.DataSourceAccessComprehensivePageQueryParam;
|
||||
import ai.chat2db.server.domain.api.param.datasource.access.DataSourceAccessObjectParam;
|
||||
import ai.chat2db.server.domain.api.param.datasource.access.DataSourceAccessCreatParam;
|
||||
import ai.chat2db.server.domain.api.param.datasource.access.DataSourceAccessSelector;
|
||||
import ai.chat2db.server.domain.api.service.DataSourceAccessService;
|
||||
import ai.chat2db.server.domain.api.service.TeamService;
|
||||
@ -22,10 +19,10 @@ import ai.chat2db.server.domain.repository.entity.DataSourceAccessDO;
|
||||
import ai.chat2db.server.domain.repository.mapper.DataSourceAccessCustomMapper;
|
||||
import ai.chat2db.server.domain.repository.mapper.DataSourceAccessMapper;
|
||||
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.PageResult;
|
||||
import ai.chat2db.server.tools.common.util.ContextUtils;
|
||||
import ai.chat2db.server.tools.common.util.EasyCollectionUtils;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.google.common.collect.Lists;
|
||||
@ -58,8 +55,11 @@ public class DataSourceAccessServiceImpl implements DataSourceAccessService {
|
||||
@Override
|
||||
public PageResult<DataSourceAccess> comprehensivePageQuery(DataSourceAccessComprehensivePageQueryParam param,
|
||||
DataSourceAccessSelector selector) {
|
||||
IPage<DataSourceAccessDO> iPage = dataSourceAccessCustomMapper.comprehensivePageQuery(
|
||||
new Page<>(param.getPageNo(), param.getPageSize()), param.getDataSourceId(), param.getSearchKey());
|
||||
Page<DataSourceAccessDO> page = new Page<>(param.getPageNo(), param.getPageSize());
|
||||
page.setSearchCount(param.getEnableReturnCount());
|
||||
IPage<DataSourceAccessDO> iPage = dataSourceAccessCustomMapper.comprehensivePageQuery(page,
|
||||
param.getDataSourceId(), param.getUserOrTeamSearchKey(),
|
||||
param.getDataSourceSearchKey());
|
||||
|
||||
List<DataSourceAccess> list = dataSourceAccessConverter.do2dto(iPage.getRecords());
|
||||
|
||||
@ -69,25 +69,11 @@ public class DataSourceAccessServiceImpl implements DataSourceAccessService {
|
||||
}
|
||||
|
||||
@Override
|
||||
public ActionResult batchCreate(DataSourceAccessBatchCreatParam param) {
|
||||
if (CollectionUtils.isEmpty(param.getAccessObjectList())) {
|
||||
return ActionResult.isSuccess();
|
||||
}
|
||||
for (DataSourceAccessObjectParam dataSourceAccessObjectParam : param.getAccessObjectList()) {
|
||||
LambdaQueryWrapper<DataSourceAccessDO> queryWrapper = new LambdaQueryWrapper<>();
|
||||
queryWrapper.eq(DataSourceAccessDO::getAccessObjectType, dataSourceAccessObjectParam.getType());
|
||||
queryWrapper.eq(DataSourceAccessDO::getDataSourceId, dataSourceAccessObjectParam.getId());
|
||||
DataSourceAccessDO query = dataSourceAccessMapper.selectOne(queryWrapper);
|
||||
if (query != null) {
|
||||
log.info("The data source already exists, no need to add it again,{}",
|
||||
JSON.toJSONString(dataSourceAccessObjectParam));
|
||||
continue;
|
||||
}
|
||||
dataSourceAccessMapper.insert(
|
||||
dataSourceAccessConverter.param2do(param.getDataSourceId(), dataSourceAccessObjectParam.getId(),
|
||||
dataSourceAccessObjectParam.getType(), ContextUtils.getUserId()));
|
||||
}
|
||||
return ActionResult.isSuccess();
|
||||
public DataResult<Long> create(DataSourceAccessCreatParam param) {
|
||||
DataSourceAccessDO data = dataSourceAccessConverter.param2do(param, ContextUtils.getUserId());
|
||||
|
||||
dataSourceAccessMapper.insert(data);
|
||||
return DataResult.of(data.getId());
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -3,15 +3,25 @@ package ai.chat2db.server.domain.core.impl;
|
||||
import java.util.List;
|
||||
|
||||
import ai.chat2db.server.domain.api.model.Team;
|
||||
import ai.chat2db.server.domain.api.param.team.TeamCreateParam;
|
||||
import ai.chat2db.server.domain.api.param.team.TeamPageQueryParam;
|
||||
import ai.chat2db.server.domain.api.param.team.TeamSelector;
|
||||
import ai.chat2db.server.domain.api.param.team.TeamUpdateParam;
|
||||
import ai.chat2db.server.domain.api.service.TeamService;
|
||||
import ai.chat2db.server.domain.core.converter.TeamConverter;
|
||||
import ai.chat2db.server.domain.repository.entity.TeamDO;
|
||||
import ai.chat2db.server.domain.repository.mapper.TeamMapper;
|
||||
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.ListResult;
|
||||
import ai.chat2db.server.tools.base.wrapper.result.PageResult;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import jakarta.annotation.Resource;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.collections4.CollectionUtils;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
/**
|
||||
@ -39,4 +49,48 @@ public class TeamServiceImpl implements TeamService {
|
||||
List<Team> list = teamConverter.do2dto(dataList);
|
||||
return ListResult.of(list);
|
||||
}
|
||||
|
||||
@Override
|
||||
public PageResult<Team> pageQuery(TeamPageQueryParam param, TeamSelector selector) {
|
||||
LambdaQueryWrapper<TeamDO> queryWrapper = new LambdaQueryWrapper<>();
|
||||
if (StringUtils.isNotBlank(param.getSearchKey())) {
|
||||
queryWrapper.and(wrapper -> wrapper.like(TeamDO::getCode, "%" + param.getSearchKey() + "%")
|
||||
.or()
|
||||
.like(TeamDO::getName, "%" + param.getSearchKey() + "%"));
|
||||
}
|
||||
Page<TeamDO> page = new Page<>(param.getPageNo(), param.getPageSize());
|
||||
page.setSearchCount(param.getEnableReturnCount());
|
||||
IPage<TeamDO> iPage = teamMapper.selectPage(page, queryWrapper);
|
||||
List<Team> list = teamConverter.do2dto(iPage.getRecords());
|
||||
|
||||
fillData(list, selector);
|
||||
|
||||
return PageResult.of(list, iPage.getTotal(), param);
|
||||
}
|
||||
|
||||
@Override
|
||||
public DataResult<Long> create(TeamCreateParam param) {
|
||||
TeamDO data = teamConverter.param2do(param);
|
||||
teamMapper.insert(data);
|
||||
return DataResult.of(data.getId());
|
||||
}
|
||||
|
||||
@Override
|
||||
public DataResult<Long> update(TeamUpdateParam param) {
|
||||
TeamDO data = teamConverter.param2do(param);
|
||||
teamMapper.updateById(data);
|
||||
return DataResult.of(data.getId());
|
||||
}
|
||||
|
||||
@Override
|
||||
public ActionResult delete(Long id) {
|
||||
teamMapper.deleteById(id);
|
||||
return ActionResult.isSuccess();
|
||||
}
|
||||
|
||||
private void fillData(List<Team> list, TeamSelector selector) {
|
||||
if (CollectionUtils.isEmpty(list) || selector == null) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -4,6 +4,7 @@ import java.util.List;
|
||||
|
||||
import ai.chat2db.server.domain.api.model.TeamUser;
|
||||
import ai.chat2db.server.domain.api.param.team.user.TeamUserComprehensivePageQueryParam;
|
||||
import ai.chat2db.server.domain.api.param.team.user.TeamUserCreatParam;
|
||||
import ai.chat2db.server.domain.api.param.team.user.TeamUserSelector;
|
||||
import ai.chat2db.server.domain.api.service.TeamUserService;
|
||||
import ai.chat2db.server.domain.core.converter.TeamConverter;
|
||||
@ -11,7 +12,11 @@ import ai.chat2db.server.domain.core.converter.TeamUserConverter;
|
||||
import ai.chat2db.server.domain.core.converter.UserConverter;
|
||||
import ai.chat2db.server.domain.repository.entity.TeamUserDO;
|
||||
import ai.chat2db.server.domain.repository.mapper.TeamUserCustomMapper;
|
||||
import ai.chat2db.server.domain.repository.mapper.TeamUserMapper;
|
||||
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.PageResult;
|
||||
import ai.chat2db.server.tools.common.util.ContextUtils;
|
||||
import ai.chat2db.server.tools.common.util.EasyCollectionUtils;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
@ -35,6 +40,8 @@ public class TeamUserServiceImpl implements TeamUserService {
|
||||
@Resource
|
||||
private TeamUserCustomMapper teamUserCustomMapper;
|
||||
@Resource
|
||||
private TeamUserMapper teamUserMapper;
|
||||
@Resource
|
||||
private UserConverter userConverter;
|
||||
@Resource
|
||||
private TeamConverter teamConverter;
|
||||
@ -42,8 +49,10 @@ public class TeamUserServiceImpl implements TeamUserService {
|
||||
@Override
|
||||
public PageResult<TeamUser> comprehensivePageQuery(TeamUserComprehensivePageQueryParam param,
|
||||
TeamUserSelector selector) {
|
||||
IPage<TeamUserDO> iPage = teamUserCustomMapper.comprehensivePageQuery(
|
||||
new Page<>(param.getPageNo(), param.getPageSize()), param.getTeamId(), param.getUserId(),
|
||||
Page<TeamUserDO> page = new Page<>(param.getPageNo(), param.getPageSize());
|
||||
page.setSearchCount(param.getEnableReturnCount());
|
||||
IPage<TeamUserDO> iPage = teamUserCustomMapper.comprehensivePageQuery(page, param.getTeamId(),
|
||||
param.getUserId(),
|
||||
param.getTeamRoleCode());
|
||||
|
||||
List<TeamUser> list = teamUserConverter.do2dto(iPage.getRecords());
|
||||
@ -53,6 +62,20 @@ public class TeamUserServiceImpl implements TeamUserService {
|
||||
return PageResult.of(list, iPage.getTotal(), param);
|
||||
}
|
||||
|
||||
@Override
|
||||
public DataResult<Long> create(TeamUserCreatParam param) {
|
||||
TeamUserDO data = teamUserConverter.param2do(param, ContextUtils.getUserId());
|
||||
|
||||
teamUserMapper.insert(data);
|
||||
return DataResult.of(data.getId());
|
||||
}
|
||||
|
||||
@Override
|
||||
public ActionResult delete(Long id) {
|
||||
teamUserMapper.deleteById(id);
|
||||
return ActionResult.isSuccess();
|
||||
}
|
||||
|
||||
private void fillData(List<TeamUser> list, TeamUserSelector selector) {
|
||||
if (CollectionUtils.isEmpty(list) || selector == null) {
|
||||
return;
|
||||
|
@ -3,12 +3,18 @@ package ai.chat2db.server.domain.core.impl;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
|
||||
import ai.chat2db.server.domain.api.enums.RoleCodeEnum;
|
||||
import ai.chat2db.server.domain.api.model.User;
|
||||
import ai.chat2db.server.domain.api.param.UserQueryParam;
|
||||
import ai.chat2db.server.domain.api.param.user.UserCreateParam;
|
||||
import ai.chat2db.server.domain.api.param.user.UserPageQueryParam;
|
||||
import ai.chat2db.server.domain.api.param.user.UserSelector;
|
||||
import ai.chat2db.server.domain.api.param.user.UserUpdateParam;
|
||||
import ai.chat2db.server.domain.api.service.UserService;
|
||||
import ai.chat2db.server.domain.core.converter.UserConverter;
|
||||
import ai.chat2db.server.domain.repository.entity.DbhubUserDO;
|
||||
import ai.chat2db.server.domain.repository.mapper.DbhubUserMapper;
|
||||
import ai.chat2db.server.tools.base.excption.BusinessException;
|
||||
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.ListResult;
|
||||
import ai.chat2db.server.tools.base.wrapper.result.PageResult;
|
||||
@ -18,6 +24,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import jakarta.annotation.Resource;
|
||||
import org.apache.commons.collections4.CollectionUtils;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
/**
|
||||
@ -61,37 +68,56 @@ public class UserServiceImpl implements UserService {
|
||||
}
|
||||
|
||||
@Override
|
||||
public PageResult<User> queryPage(UserQueryParam param) {
|
||||
LambdaQueryWrapper<DbhubUserDO> query = new LambdaQueryWrapper<>();
|
||||
if (Objects.nonNull(param.getKeyWord())) {
|
||||
query.like(DbhubUserDO::getUserName, param.getKeyWord());
|
||||
public PageResult<User> pageQuery(UserPageQueryParam param, UserSelector selector) {
|
||||
LambdaQueryWrapper<DbhubUserDO> queryWrapper = new LambdaQueryWrapper<>();
|
||||
if (StringUtils.isNotBlank(param.getSearchKey())) {
|
||||
queryWrapper.and(wrapper -> wrapper.like(DbhubUserDO::getUserName, "%" + param.getSearchKey() + "%")
|
||||
.or()
|
||||
.like(DbhubUserDO::getNickName, "%" + param.getSearchKey() + "%")
|
||||
.or()
|
||||
.like(DbhubUserDO::getEmail, "%" + param.getSearchKey() + "%"));
|
||||
}
|
||||
// Default not to query desktop accounts
|
||||
queryWrapper.ne(DbhubUserDO::getId, RoleCodeEnum.DESKTOP.getDefaultUserId());
|
||||
Page<DbhubUserDO> page = new Page<>(param.getPageNo(), param.getPageSize());
|
||||
page.setOptimizeCountSql(false);
|
||||
IPage<DbhubUserDO> iPage = dbhubUserMapper.selectPage(page, query);
|
||||
page.setSearchCount(param.getEnableReturnCount());
|
||||
IPage<DbhubUserDO> iPage = dbhubUserMapper.selectPage(page, queryWrapper);
|
||||
return PageResult.of(userConverter.do2dto(iPage.getRecords()), iPage.getTotal(), param);
|
||||
}
|
||||
|
||||
@Override
|
||||
public DataResult<Boolean> update(User user) {
|
||||
DbhubUserDO dbhubUserDO = userConverter.dto2do(user);
|
||||
if (Objects.nonNull(dbhubUserDO.getPassword())) {
|
||||
String bcryptPassword = DigestUtil.bcrypt(dbhubUserDO.getPassword());
|
||||
dbhubUserDO.setPassword(bcryptPassword);
|
||||
public DataResult<Long> update(UserUpdateParam user) {
|
||||
if (RoleCodeEnum.DESKTOP.getDefaultUserId().equals(user.getId())) {
|
||||
throw new BusinessException("user.canNotOperateSystemAccount");
|
||||
}
|
||||
int n = dbhubUserMapper.updateById(dbhubUserDO);
|
||||
return DataResult.of(n == 1);
|
||||
DbhubUserDO data = userConverter.param2do(user);
|
||||
if (Objects.nonNull(data.getPassword())) {
|
||||
String bcryptPassword = DigestUtil.bcrypt(data.getPassword());
|
||||
data.setPassword(bcryptPassword);
|
||||
}
|
||||
|
||||
if (RoleCodeEnum.ADMIN.getDefaultUserId().equals(user.getId())) {
|
||||
data.setStatus(null);
|
||||
data.setEmail(null);
|
||||
data.setUserName(null);
|
||||
data.setRoleCode(null);
|
||||
}
|
||||
dbhubUserMapper.updateById(data);
|
||||
return DataResult.of(data.getId());
|
||||
}
|
||||
|
||||
@Override
|
||||
public DataResult<Boolean> delete(Long id) {
|
||||
int n = dbhubUserMapper.deleteById(id);
|
||||
return DataResult.of(n == 1);
|
||||
public ActionResult delete(Long id) {
|
||||
if (RoleCodeEnum.DESKTOP.getDefaultUserId().equals(id) || RoleCodeEnum.ADMIN.getDefaultUserId().equals(id)) {
|
||||
throw new BusinessException("user.canNotOperateSystemAccount");
|
||||
}
|
||||
dbhubUserMapper.deleteById(id);
|
||||
return ActionResult.isSuccess();
|
||||
}
|
||||
|
||||
@Override
|
||||
public DataResult<Long> create(User user) {
|
||||
DbhubUserDO data = userConverter.dto2do(user);
|
||||
public DataResult<Long> create(UserCreateParam user) {
|
||||
DbhubUserDO data = userConverter.param2do(user);
|
||||
String bcryptPassword = DigestUtil.bcrypt(data.getPassword());
|
||||
data.setPassword(bcryptPassword);
|
||||
dbhubUserMapper.insert(data);
|
||||
|
Reference in New Issue
Block a user