Pre Merge pull request !139 from HuangXin/dev

This commit is contained in:
HuangXin 2022-02-15 00:39:58 +00:00 committed by Gitee
commit 7f20a37863
43 changed files with 1016 additions and 989 deletions

3
.gitignore vendored
View File

@ -25,6 +25,9 @@ target/
*.iml *.iml
*.ipr *.ipr
### JRebel ###
rebel.xml
### NetBeans ### ### NetBeans ###
nbproject/private/ nbproject/private/
build/* build/*

View File

@ -121,7 +121,7 @@ public class SysConfigController extends BaseController {
@DeleteMapping("/{configIds}") @DeleteMapping("/{configIds}")
public R<Void> remove(@ApiParam("参数ID串") @PathVariable Long[] configIds) { public R<Void> remove(@ApiParam("参数ID串") @PathVariable Long[] configIds) {
configService.deleteConfigByIds(configIds); configService.deleteConfigByIds(configIds);
return success(); return R.ok();
} }
/** /**

View File

@ -108,6 +108,6 @@ public class SysDictDataController extends BaseController {
@DeleteMapping("/{dictCodes}") @DeleteMapping("/{dictCodes}")
public R<Void> remove(@ApiParam("字典code串") @PathVariable Long[] dictCodes) { public R<Void> remove(@ApiParam("字典code串") @PathVariable Long[] dictCodes) {
dictDataService.deleteDictDataByIds(dictCodes); dictDataService.deleteDictDataByIds(dictCodes);
return success(); return R.ok();
} }
} }

View File

@ -98,7 +98,7 @@ public class SysDictTypeController extends BaseController {
@DeleteMapping("/{dictIds}") @DeleteMapping("/{dictIds}")
public R<Void> remove(@ApiParam("字典ID串") @PathVariable Long[] dictIds) { public R<Void> remove(@ApiParam("字典ID串") @PathVariable Long[] dictIds) {
dictTypeService.deleteDictTypeByIds(dictIds); dictTypeService.deleteDictTypeByIds(dictIds);
return success(); return R.ok();
} }
/** /**

View File

@ -31,9 +31,9 @@ public class SysRegisterController extends BaseController {
@PostMapping("/register") @PostMapping("/register")
public R<Void> register(@Validated @RequestBody RegisterBody user) { public R<Void> register(@Validated @RequestBody RegisterBody user) {
if (!("true".equals(configService.selectConfigByKey("sys.account.registerUser")))) { if (!("true".equals(configService.selectConfigByKey("sys.account.registerUser")))) {
return error("当前系统没有开启注册功能!"); return R.fail("当前系统没有开启注册功能!");
} }
registerService.register(user); registerService.register(user);
return success(); return R.ok();
} }
} }

View File

@ -170,7 +170,7 @@ public class SysUserController extends BaseController {
@DeleteMapping("/{userIds}") @DeleteMapping("/{userIds}")
public R<Void> remove(@ApiParam("角色ID串") @PathVariable Long[] userIds) { public R<Void> remove(@ApiParam("角色ID串") @PathVariable Long[] userIds) {
if (ArrayUtil.contains(userIds, getUserId())) { if (ArrayUtil.contains(userIds, getUserId())) {
return error("当前用户不能删除"); return R.fail("当前用户不能删除");
} }
return toAjax(userService.deleteUserByIds(userIds)); return toAjax(userService.deleteUserByIds(userIds));
} }
@ -231,6 +231,6 @@ public class SysUserController extends BaseController {
public R<Void> insertAuthRole(Long userId, Long[] roleIds) { public R<Void> insertAuthRole(Long userId, Long[] roleIds) {
userService.checkUserDataScope(userId); userService.checkUserDataScope(userId);
userService.insertUserAuth(userId, roleIds); userService.insertUserAuth(userId, roleIds);
return success(); return R.ok();
} }
} }

View File

@ -1,6 +1,5 @@
#错误消息 #错误消息
not.null=* 必须填写 not.null=* 必须填写
user.jcaptcha.blank=验证码不能为空
user.jcaptcha.error=验证码错误 user.jcaptcha.error=验证码错误
user.jcaptcha.expire=验证码已失效 user.jcaptcha.expire=验证码已失效
user.not.exists=对不起, 您的账号:{0} 不存在. user.not.exists=对不起, 您的账号:{0} 不存在.

View File

@ -181,6 +181,11 @@ public interface GenConstants {
*/ */
String QUERY_LIKE = "LIKE"; String QUERY_LIKE = "LIKE";
/**
* 相等查询
*/
String QUERY_EQ = "EQ";
/** /**
* 需要 * 需要
*/ */

View File

@ -8,38 +8,10 @@ import com.ruoyi.common.utils.StringUtils;
/** /**
* web层通用数据处理 * web层通用数据处理
* *
* @author ruoyi * @author Lion Li
*/ */
public class BaseController { public class BaseController {
/**
* 返回成功
*/
public R<Void> success() {
return R.ok();
}
/**
* 返回失败消息
*/
public R<Void> error() {
return R.fail();
}
/**
* 返回成功消息
*/
public R<Void> success(String message) {
return R.ok(message);
}
/**
* 返回失败消息
*/
public R<Void> error(String message) {
return R.fail(message);
}
/** /**
* 响应返回结果 * 响应返回结果
* *
@ -57,7 +29,7 @@ public class BaseController {
* @return 操作结果 * @return 操作结果
*/ */
protected R<Void> toAjax(boolean result) { protected R<Void> toAjax(boolean result) {
return result ? success() : error(); return result ? R.ok() : R.fail();
} }
/** /**

View File

@ -37,7 +37,6 @@ public class LoginBody {
/** /**
* 验证码 * 验证码
*/ */
@NotBlank(message = "{user.jcaptcha.blank}")
@ApiModelProperty(value = "验证码") @ApiModelProperty(value = "验证码")
private String code; private String code;
@ -45,6 +44,6 @@ public class LoginBody {
* 唯一标识 * 唯一标识
*/ */
@ApiModelProperty(value = "唯一标识") @ApiModelProperty(value = "唯一标识")
private String uuid = ""; private String uuid;
} }

View File

@ -97,9 +97,8 @@ public class ServletUtils extends ServletUtil {
* *
* @param response 渲染对象 * @param response 渲染对象
* @param string 待渲染的字符串 * @param string 待渲染的字符串
* @return null
*/ */
public static String renderString(HttpServletResponse response, String string) { public static void renderString(HttpServletResponse response, String string) {
try { try {
response.setStatus(HttpStatus.HTTP_OK); response.setStatus(HttpStatus.HTTP_OK);
response.setContentType(MediaType.APPLICATION_JSON_VALUE); response.setContentType(MediaType.APPLICATION_JSON_VALUE);
@ -108,7 +107,6 @@ public class ServletUtils extends ServletUtil {
} catch (IOException e) { } catch (IOException e) {
e.printStackTrace(); e.printStackTrace();
} }
return null;
} }
/** /**
@ -119,12 +117,12 @@ public class ServletUtils extends ServletUtil {
public static boolean isAjaxRequest(HttpServletRequest request) { public static boolean isAjaxRequest(HttpServletRequest request) {
String accept = request.getHeader("accept"); String accept = request.getHeader("accept");
if (accept != null && accept.indexOf("application/json") != -1) { if (accept != null && accept.contains("application/json")) {
return true; return true;
} }
String xRequestedWith = request.getHeader("X-Requested-With"); String xRequestedWith = request.getHeader("X-Requested-With");
if (xRequestedWith != null && xRequestedWith.indexOf("XMLHttpRequest") != -1) { if (xRequestedWith != null && xRequestedWith.contains("XMLHttpRequest")) {
return true; return true;
} }
@ -134,10 +132,7 @@ public class ServletUtils extends ServletUtil {
} }
String ajax = request.getParameter("__ajax"); String ajax = request.getParameter("__ajax");
if (StringUtils.equalsAnyIgnoreCase(ajax, "json", "xml")) { return StringUtils.equalsAnyIgnoreCase(ajax, "json", "xml");
return true;
}
return false;
} }
public static String getClientIP() { public static String getClientIP() {

View File

@ -56,6 +56,6 @@ public class AddressUtils {
log.error("获取地理位置异常 {}", ip); log.error("获取地理位置异常 {}", ip);
} }
} }
return address; return UNKNOWN;
} }
} }

View File

@ -18,23 +18,27 @@ import java.util.List;
public class SwaggerProperties { public class SwaggerProperties {
/** /**
* 验证码类型 * 文档开关
*/ */
private Boolean enabled; private Boolean enabled;
/** /**
* 设置请求的统一前缀 * 设置请求的统一前缀
*/ */
private String pathMapping; private String pathMapping;
/** /**
* 验证码类别 * 标头
*/ */
private String title; private String title;
/** /**
* 数字验证码位数 * 描述
*/ */
private String description; private String description;
/** /**
* 字符验证码长度 * 项目版本
*/ */
private String version; private String version;

View File

@ -42,7 +42,7 @@ public class UserActionListener implements SaTokenListener {
UserAgent userAgent = UserAgentUtil.parse(ServletUtils.getRequest().getHeader("User-Agent")); UserAgent userAgent = UserAgentUtil.parse(ServletUtils.getRequest().getHeader("User-Agent"));
String ip = ServletUtils.getClientIP(); String ip = ServletUtils.getClientIP();
LoginUser user = LoginHelper.getLoginUser(); LoginUser user = LoginHelper.getLoginUser();
String tokenValue = StpUtil.getTokenValue(); String tokenValue = StpUtil.getTokenValueByLoginId(loginId);
UserOnlineDTO dto = new UserOnlineDTO(); UserOnlineDTO dto = new UserOnlineDTO();
dto.setIpaddr(ip); dto.setIpaddr(ip);
dto.setLoginLocation(AddressUtils.getRealAddressByIP(ip)); dto.setLoginLocation(AddressUtils.getRealAddressByIP(ip));

View File

@ -294,8 +294,17 @@ public class GenTableServiceImpl implements IGenTableService {
GenTableColumn prevColumn = tableColumnMap.get(column.getColumnName()); GenTableColumn prevColumn = tableColumnMap.get(column.getColumnName());
column.setColumnId(prevColumn.getColumnId()); column.setColumnId(prevColumn.getColumnId());
if (column.isList()) { if (column.isList()) {
// 如果是列表继续保留字典类型 // 如果是列表继续保留查询方式/字典类型选项
column.setDictType(prevColumn.getDictType()); column.setDictType(prevColumn.getDictType());
column.setQueryType(prevColumn.getQueryType());
}
if (StringUtils.isNotEmpty(prevColumn.getIsRequired()) && !column.isPk()
&& (column.isInsert() || column.isEdit())
&& ((column.isUsableColumn()) || (!column.isSuperColumn())))
{
// 如果是(新增/修改&非主键/非忽略及父属性)继续保留必填/显示类型选项
column.setIsRequired(prevColumn.getIsRequired());
column.setHtmlType(prevColumn.getHtmlType());
} }
genTableColumnMapper.updateById(column); genTableColumnMapper.updateById(column);
} else { } else {

View File

@ -41,6 +41,7 @@ public class GenUtils {
column.setJavaField(StringUtils.toCamelCase(columnName)); column.setJavaField(StringUtils.toCamelCase(columnName));
// 设置默认类型 // 设置默认类型
column.setJavaType(GenConstants.TYPE_STRING); column.setJavaType(GenConstants.TYPE_STRING);
column.setQueryType(GenConstants.QUERY_EQ);
if (arraysContains(GenConstants.COLUMNTYPE_STR, dataType) || arraysContains(GenConstants.COLUMNTYPE_TEXT, dataType)) { if (arraysContains(GenConstants.COLUMNTYPE_STR, dataType) || arraysContains(GenConstants.COLUMNTYPE_TEXT, dataType)) {
// 字符串长度超过500设置为文本域 // 字符串长度超过500设置为文本域
@ -136,8 +137,7 @@ public class GenUtils {
public static String getModuleName(String packageName) { public static String getModuleName(String packageName) {
int lastIndex = packageName.lastIndexOf("."); int lastIndex = packageName.lastIndexOf(".");
int nameLength = packageName.length(); int nameLength = packageName.length();
String moduleName = StringUtils.substring(packageName, lastIndex + 1, nameLength); return StringUtils.substring(packageName, lastIndex + 1, nameLength);
return moduleName;
} }
/** /**

View File

@ -78,14 +78,14 @@ public class VelocityUtils {
public static void setMenuVelocityContext(VelocityContext context, GenTable genTable) { public static void setMenuVelocityContext(VelocityContext context, GenTable genTable) {
String options = genTable.getOptions(); String options = genTable.getOptions();
Map<String, Object> paramsObj = JsonUtils.parseMap(options); Map<String, String> paramsObj = JsonUtils.parseMap(options);
String parentMenuId = getParentMenuId(paramsObj); String parentMenuId = getParentMenuId(paramsObj);
context.put("parentMenuId", parentMenuId); context.put("parentMenuId", parentMenuId);
} }
public static void setTreeVelocityContext(VelocityContext context, GenTable genTable) { public static void setTreeVelocityContext(VelocityContext context, GenTable genTable) {
String options = genTable.getOptions(); String options = genTable.getOptions();
Map<String, Object> paramsObj = JsonUtils.parseMap(options); Map<String, String> paramsObj = JsonUtils.parseMap(options);
String treeCode = getTreecode(paramsObj); String treeCode = getTreecode(paramsObj);
String treeParentCode = getTreeParentCode(paramsObj); String treeParentCode = getTreeParentCode(paramsObj);
String treeName = getTreeName(paramsObj); String treeName = getTreeName(paramsObj);
@ -207,8 +207,7 @@ public class VelocityUtils {
*/ */
public static String getPackagePrefix(String packageName) { public static String getPackagePrefix(String packageName) {
int lastIndex = packageName.lastIndexOf("."); int lastIndex = packageName.lastIndexOf(".");
String basePackage = StringUtils.substring(packageName, 0, lastIndex); return StringUtils.substring(packageName, 0, lastIndex);
return basePackage;
} }
/** /**
@ -271,9 +270,9 @@ public class VelocityUtils {
* @param paramsObj 生成其他选项 * @param paramsObj 生成其他选项
* @return 上级菜单ID字段 * @return 上级菜单ID字段
*/ */
public static String getParentMenuId(Map<String, Object> paramsObj) { public static String getParentMenuId(Map<String, String> paramsObj) {
if (CollUtil.isNotEmpty(paramsObj) && paramsObj.containsKey(GenConstants.PARENT_MENU_ID) if (CollUtil.isNotEmpty(paramsObj) && paramsObj.containsKey(GenConstants.PARENT_MENU_ID)
&& StringUtils.isNotEmpty(Convert.toStr(paramsObj.get(GenConstants.PARENT_MENU_ID)))) { && StringUtils.isNotEmpty(paramsObj.get(GenConstants.PARENT_MENU_ID))) {
return Convert.toStr(paramsObj.get(GenConstants.PARENT_MENU_ID)); return Convert.toStr(paramsObj.get(GenConstants.PARENT_MENU_ID));
} }
return DEFAULT_PARENT_MENU_ID; return DEFAULT_PARENT_MENU_ID;
@ -285,9 +284,9 @@ public class VelocityUtils {
* @param paramsObj 生成其他选项 * @param paramsObj 生成其他选项
* @return 树编码 * @return 树编码
*/ */
public static String getTreecode(Map<String, Object> paramsObj) { public static String getTreecode(Map<String, String> paramsObj) {
if (CollUtil.isNotEmpty(paramsObj) && paramsObj.containsKey(GenConstants.TREE_CODE)) { if (CollUtil.isNotEmpty(paramsObj) && paramsObj.containsKey(GenConstants.TREE_CODE)) {
return StringUtils.toCamelCase(Convert.toStr(paramsObj.get(GenConstants.TREE_CODE))); return StringUtils.toCamelCase(paramsObj.get(GenConstants.TREE_CODE));
} }
return StringUtils.EMPTY; return StringUtils.EMPTY;
} }
@ -298,9 +297,9 @@ public class VelocityUtils {
* @param paramsObj 生成其他选项 * @param paramsObj 生成其他选项
* @return 树父编码 * @return 树父编码
*/ */
public static String getTreeParentCode(Map<String, Object> paramsObj) { public static String getTreeParentCode(Map<String, String> paramsObj) {
if (CollUtil.isNotEmpty(paramsObj) && paramsObj.containsKey(GenConstants.TREE_PARENT_CODE)) { if (CollUtil.isNotEmpty(paramsObj) && paramsObj.containsKey(GenConstants.TREE_PARENT_CODE)) {
return StringUtils.toCamelCase(Convert.toStr(paramsObj.get(GenConstants.TREE_PARENT_CODE))); return StringUtils.toCamelCase(paramsObj.get(GenConstants.TREE_PARENT_CODE));
} }
return StringUtils.EMPTY; return StringUtils.EMPTY;
} }
@ -311,9 +310,9 @@ public class VelocityUtils {
* @param paramsObj 生成其他选项 * @param paramsObj 生成其他选项
* @return 树名称 * @return 树名称
*/ */
public static String getTreeName(Map<String, Object> paramsObj) { public static String getTreeName(Map<String, String> paramsObj) {
if (CollUtil.isNotEmpty(paramsObj) && paramsObj.containsKey(GenConstants.TREE_NAME)) { if (CollUtil.isNotEmpty(paramsObj) && paramsObj.containsKey(GenConstants.TREE_NAME)) {
return StringUtils.toCamelCase(Convert.toStr(paramsObj.get(GenConstants.TREE_NAME))); return StringUtils.toCamelCase(paramsObj.get(GenConstants.TREE_NAME));
} }
return StringUtils.EMPTY; return StringUtils.EMPTY;
} }
@ -326,8 +325,8 @@ public class VelocityUtils {
*/ */
public static int getExpandColumn(GenTable genTable) { public static int getExpandColumn(GenTable genTable) {
String options = genTable.getOptions(); String options = genTable.getOptions();
Map<String, Object> paramsObj = JsonUtils.parseMap(options); Map<String, String> paramsObj = JsonUtils.parseMap(options);
String treeName = Convert.toStr(paramsObj.get(GenConstants.TREE_NAME)); String treeName = paramsObj.get(GenConstants.TREE_NAME);
int num = 0; int num = 0;
for (GenTableColumn column : genTable.getColumns()) { for (GenTableColumn column : genTable.getColumns()) {
if (column.isList()) { if (column.isList()) {

View File

@ -18,43 +18,55 @@ import java.util.List;
* @date ${datetime} * @date ${datetime}
*/ */
public interface I${ClassName}Service { public interface I${ClassName}Service {
/** /**
* 查询单个 * 查询${functionName}
* @return *
* @param ${pkColumn.javaField} ${functionName}主键
* @return ${functionName}
*/ */
${ClassName}Vo queryById(${pkColumn.javaType} ${pkColumn.javaField}); ${ClassName}Vo queryById(${pkColumn.javaType} ${pkColumn.javaField});
#if($table.crud || $table.sub) #if($table.crud || $table.sub)
/** /**
* 查询列表 * 查询${functionName}列表
*
* @param ${className} ${functionName}
* @return ${functionName}集合
*/ */
TableDataInfo<${ClassName}Vo> queryPageList(${ClassName}Bo bo, PageQuery pageQuery); TableDataInfo<${ClassName}Vo> queryPageList(${ClassName}Bo bo, PageQuery pageQuery);
#end #end
/** /**
* 查询列表 * 查询${functionName}列表
*
* @param ${className} ${functionName}
* @return ${functionName}集合
*/ */
List<${ClassName}Vo> queryList(${ClassName}Bo bo); List<${ClassName}Vo> queryList(${ClassName}Bo bo);
/** /**
* 根据新增业务对象插入${functionName} * 修改${functionName}
* @param bo ${functionName}新增业务对象 *
* @return * @param ${className} ${functionName}
* @return 结果
*/ */
Boolean insertByBo(${ClassName}Bo bo); Boolean insertByBo(${ClassName}Bo bo);
/** /**
* 根据编辑业务对象修改${functionName} * 修改${functionName}
* @param bo ${functionName}编辑业务对象 *
* @return * @param ${className} ${functionName}
* @return 结果
*/ */
Boolean updateByBo(${ClassName}Bo bo); Boolean updateByBo(${ClassName}Bo bo);
/** /**
* 校验并删除数据 * 校验并批量删除${functionName}信息
* @param ids 主键集合 *
* @param ${pkColumn.javaField}s 需要删除的${functionName}主键集合
* @param isValid 是否校验,true-删除前校验,false-不校验 * @param isValid 是否校验,true-删除前校验,false-不校验
* @return * @return 结果
*/ */
Boolean deleteWithValidByIds(Collection<${pkColumn.javaType}> ids, Boolean isValid); Boolean deleteWithValidByIds(Collection<${pkColumn.javaType}> ids, Boolean isValid);
} }

View File

@ -5,12 +5,12 @@ import com.ruoyi.common.utils.StringUtils;
#if($table.crud || $table.sub) #if($table.crud || $table.sub)
import com.ruoyi.common.core.page.TableDataInfo; import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.common.core.domain.PageQuery; import com.ruoyi.common.core.domain.PageQuery;
#end
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
#end
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import ${packageName}.domain.bo.${ClassName}Bo; import ${packageName}.domain.bo.${ClassName}Bo;
import ${packageName}.domain.vo.${ClassName}Vo; import ${packageName}.domain.vo.${ClassName}Vo;
import ${packageName}.domain.${ClassName}; import ${packageName}.domain.${ClassName};
@ -33,12 +33,24 @@ public class ${ClassName}ServiceImpl implements I${ClassName}Service {
private final ${ClassName}Mapper baseMapper; private final ${ClassName}Mapper baseMapper;
/**
* 查询${functionName}
*
* @param ${pkColumn.javaField} ${functionName}主键
* @return ${functionName}
*/
@Override @Override
public ${ClassName}Vo queryById(${pkColumn.javaType} ${pkColumn.javaField}){ public ${ClassName}Vo queryById(${pkColumn.javaType} ${pkColumn.javaField}){
return baseMapper.selectVoById(${pkColumn.javaField}); return baseMapper.selectVoById(${pkColumn.javaField});
} }
#if($table.crud || $table.sub) #if($table.crud || $table.sub)
/**
* 查询${functionName}列表
*
* @param ${className} ${functionName}
* @return ${functionName}
*/
@Override @Override
public TableDataInfo<${ClassName}Vo> queryPageList(${ClassName}Bo bo, PageQuery pageQuery) { public TableDataInfo<${ClassName}Vo> queryPageList(${ClassName}Bo bo, PageQuery pageQuery) {
LambdaQueryWrapper<${ClassName}> lqw = buildQueryWrapper(bo); LambdaQueryWrapper<${ClassName}> lqw = buildQueryWrapper(bo);
@ -47,6 +59,12 @@ public class ${ClassName}ServiceImpl implements I${ClassName}Service {
} }
#end #end
/**
* 查询${functionName}列表
*
* @param ${className} ${functionName}
* @return ${functionName}
*/
@Override @Override
public List<${ClassName}Vo> queryList(${ClassName}Bo bo) { public List<${ClassName}Vo> queryList(${ClassName}Bo bo) {
LambdaQueryWrapper<${ClassName}> lqw = buildQueryWrapper(bo); LambdaQueryWrapper<${ClassName}> lqw = buildQueryWrapper(bo);
@ -80,6 +98,12 @@ public class ${ClassName}ServiceImpl implements I${ClassName}Service {
return lqw; return lqw;
} }
/**
* 新增${functionName}
*
* @param ${className} ${functionName}
* @return 结果
*/
@Override @Override
public Boolean insertByBo(${ClassName}Bo bo) { public Boolean insertByBo(${ClassName}Bo bo) {
${ClassName} add = BeanUtil.toBean(bo, ${ClassName}.class); ${ClassName} add = BeanUtil.toBean(bo, ${ClassName}.class);
@ -92,6 +116,12 @@ public class ${ClassName}ServiceImpl implements I${ClassName}Service {
return flag; return flag;
} }
/**
* 修改${functionName}
*
* @param ${className} ${functionName}
* @return 结果
*/
@Override @Override
public Boolean updateByBo(${ClassName}Bo bo) { public Boolean updateByBo(${ClassName}Bo bo) {
${ClassName} update = BeanUtil.toBean(bo, ${ClassName}.class); ${ClassName} update = BeanUtil.toBean(bo, ${ClassName}.class);
@ -108,6 +138,12 @@ public class ${ClassName}ServiceImpl implements I${ClassName}Service {
//TODO 做一些数据校验,如唯一约束 //TODO 做一些数据校验,如唯一约束
} }
/**
* 批量删除${functionName}
*
* @param ${pkColumn.javaField}s 需要删除的${functionName}主键
* @return 结果
*/
@Override @Override
public Boolean deleteWithValidByIds(Collection<${pkColumn.javaType}> ids, Boolean isValid) { public Boolean deleteWithValidByIds(Collection<${pkColumn.javaType}> ids, Boolean isValid) {
if(isValid){ if(isValid){

View File

@ -35,7 +35,7 @@ public interface SysUserMapper extends BaseMapperPlus<SysUserMapper, SysUser, Sy
List<SysUser> selectUserList(SysUser sysUser); List<SysUser> selectUserList(SysUser sysUser);
/** /**
* 根据条件分页查询已配用户角色列表 * 根据条件分页查询已配用户角色列表
* *
* @param user 用户信息 * @param user 用户信息
* @return 用户信息集合信息 * @return 用户信息集合信息

View File

@ -67,7 +67,6 @@ public interface ISysConfigService {
* 批量删除参数信息 * 批量删除参数信息
* *
* @param configIds 需要删除的参数ID * @param configIds 需要删除的参数ID
* @return 结果
*/ */
void deleteConfigByIds(Long[] configIds); void deleteConfigByIds(Long[] configIds);

View File

@ -45,7 +45,6 @@ public interface ISysDictDataService {
* 批量删除字典数据信息 * 批量删除字典数据信息
* *
* @param dictCodes 需要删除的字典数据ID * @param dictCodes 需要删除的字典数据ID
* @return 结果
*/ */
void deleteDictDataByIds(Long[] dictCodes); void deleteDictDataByIds(Long[] dictCodes);

View File

@ -60,7 +60,6 @@ public interface ISysDictTypeService {
* 批量删除字典信息 * 批量删除字典信息
* *
* @param dictIds 需要删除的字典ID * @param dictIds 需要删除的字典ID
* @return 结果
*/ */
void deleteDictTypeByIds(Long[] dictIds); void deleteDictTypeByIds(Long[] dictIds);

View File

@ -35,7 +35,7 @@ public interface ISysLogininforService {
* 批量删除系统登录日志 * 批量删除系统登录日志
* *
* @param infoIds 需要删除的登录日志ID * @param infoIds 需要删除的登录日志ID
* @return * @return 结果
*/ */
int deleteLogininforByIds(Long[] infoIds); int deleteLogininforByIds(Long[] infoIds);

View File

@ -84,7 +84,6 @@ public interface ISysPostService {
* *
* @param postIds 需要删除的岗位ID * @param postIds 需要删除的岗位ID
* @return 结果 * @return 结果
* @throws Exception 异常
*/ */
int deletePostByIds(Long[] postIds); int deletePostByIds(Long[] postIds);

View File

@ -18,6 +18,7 @@ import com.ruoyi.common.helper.LoginHelper;
import com.ruoyi.common.utils.DateUtils; import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.common.utils.MessageUtils; import com.ruoyi.common.utils.MessageUtils;
import com.ruoyi.common.utils.ServletUtils; import com.ruoyi.common.utils.ServletUtils;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.common.utils.redis.RedisUtils; import com.ruoyi.common.utils.redis.RedisUtils;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
@ -104,7 +105,7 @@ public class SysLoginService {
* @param uuid 唯一标识 * @param uuid 唯一标识
*/ */
public void validateCaptcha(String username, String code, String uuid, HttpServletRequest request) { public void validateCaptcha(String username, String code, String uuid, HttpServletRequest request) {
String verifyKey = Constants.CAPTCHA_CODE_KEY + uuid; String verifyKey = Constants.CAPTCHA_CODE_KEY + StringUtils.defaultString(uuid, "");
String captcha = RedisUtils.getCacheObject(verifyKey); String captcha = RedisUtils.getCacheObject(verifyKey);
RedisUtils.deleteObject(verifyKey); RedisUtils.deleteObject(verifyKey);
if (captcha == null) { if (captcha == null) {

View File

@ -12,6 +12,7 @@ import com.ruoyi.common.exception.user.CaptchaExpireException;
import com.ruoyi.common.exception.user.UserException; import com.ruoyi.common.exception.user.UserException;
import com.ruoyi.common.utils.MessageUtils; import com.ruoyi.common.utils.MessageUtils;
import com.ruoyi.common.utils.ServletUtils; import com.ruoyi.common.utils.ServletUtils;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.common.utils.redis.RedisUtils; import com.ruoyi.common.utils.redis.RedisUtils;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@ -71,7 +72,7 @@ public class SysRegisterService {
* @return 结果 * @return 结果
*/ */
public void validateCaptcha(String username, String code, String uuid, HttpServletRequest request) { public void validateCaptcha(String username, String code, String uuid, HttpServletRequest request) {
String verifyKey = Constants.CAPTCHA_CODE_KEY + uuid; String verifyKey = Constants.CAPTCHA_CODE_KEY + StringUtils.defaultString(uuid, "");
String captcha = RedisUtils.getCacheObject(verifyKey); String captcha = RedisUtils.getCacheObject(verifyKey);
RedisUtils.deleteObject(verifyKey); RedisUtils.deleteObject(verifyKey);
if (captcha == null) { if (captcha == null) {

View File

@ -153,7 +153,6 @@ public class SysConfigServiceImpl implements ISysConfigService, ConfigService {
* 批量删除参数信息 * 批量删除参数信息
* *
* @param configIds 需要删除的参数ID * @param configIds 需要删除的参数ID
* @return 结果
*/ */
@Override @Override
public void deleteConfigByIds(Long[] configIds) { public void deleteConfigByIds(Long[] configIds) {

View File

@ -83,7 +83,6 @@ public class SysDictDataServiceImpl implements ISysDictDataService {
* 批量删除字典数据信息 * 批量删除字典数据信息
* *
* @param dictCodes 需要删除的字典数据ID * @param dictCodes 需要删除的字典数据ID
* @return 结果
*/ */
@Override @Override
public void deleteDictDataByIds(Long[] dictCodes) { public void deleteDictDataByIds(Long[] dictCodes) {

View File

@ -123,7 +123,6 @@ public class SysDictTypeServiceImpl implements ISysDictTypeService, DictService
* 批量删除字典类型信息 * 批量删除字典类型信息
* *
* @param dictIds 需要删除的字典ID * @param dictIds 需要删除的字典ID
* @return 结果
*/ */
@Override @Override
public void deleteDictTypeByIds(Long[] dictIds) { public void deleteDictTypeByIds(Long[] dictIds) {

View File

@ -140,7 +140,7 @@ public class SysLogininforServiceImpl implements ISysLogininforService, Logininf
* 批量删除系统登录日志 * 批量删除系统登录日志
* *
* @param infoIds 需要删除的登录日志ID * @param infoIds 需要删除的登录日志ID
* @return * @return 结果
*/ */
@Override @Override
public int deleteLogininforByIds(Long[] infoIds) { public int deleteLogininforByIds(Long[] infoIds) {

View File

@ -148,7 +148,6 @@ public class SysPostServiceImpl implements ISysPostService {
* *
* @param postIds 需要删除的岗位ID * @param postIds 需要删除的岗位ID
* @return 结果 * @return 结果
* @throws Exception 异常
*/ */
@Override @Override
public int deletePostByIds(Long[] postIds) { public int deletePostByIds(Long[] postIds) {

View File

@ -374,7 +374,7 @@ public class SysRoleServiceImpl implements ISysRoleService {
* 批量选择授权用户角色 * 批量选择授权用户角色
* *
* @param roleId 角色ID * @param roleId 角色ID
* @param userIds 需要删除的用户数据ID * @param userIds 需要授权的用户数据ID
* @return 结果 * @return 结果
*/ */
@Override @Override

View File

@ -26,7 +26,7 @@
<!-- 文件列表 --> <!-- 文件列表 -->
<transition-group class="upload-file-list el-upload-list el-upload-list--text" name="el-fade-in-linear" tag="ul"> <transition-group class="upload-file-list el-upload-list el-upload-list--text" name="el-fade-in-linear" tag="ul">
<li :key="file.uid" class="el-upload-list__item ele-upload-list__item-content" v-for="(file, index) in fileList"> <li :key="file.url" class="el-upload-list__item ele-upload-list__item-content" v-for="(file, index) in fileList">
<el-link :href="`${file.url}`" :underline="false" target="_blank"> <el-link :href="`${file.url}`" :underline="false" target="_blank">
<span class="el-icon-document"> {{ getFileName(file.name) }} </span> <span class="el-icon-document"> {{ getFileName(file.name) }} </span>
</el-link> </el-link>

View File

@ -155,7 +155,7 @@ export const dynamicRoutes = [
permissions: ['tool:gen:edit'], permissions: ['tool:gen:edit'],
children: [ children: [
{ {
path: 'index', path: 'index/:tableId(\\d+)',
component: () => import('@/views/tool/gen/editTable'), component: () => import('@/views/tool/gen/editTable'),
name: 'GenEdit', name: 'GenEdit',
meta: { title: '修改生成配置', activeMenu: '/tool/gen' } meta: { title: '修改生成配置', activeMenu: '/tool/gen' }

View File

@ -5,11 +5,11 @@ let confGlobal
let someSpanIsNot24 let someSpanIsNot24
export function dialogWrapper(str) { export function dialogWrapper(str) {
return `<el-dialog v-bind="$attrs" v-on="$listeners" @open="onOpen" @close="onClose" title="Dialog Titile"> return `<el-dialog v-bind="$attrs" v-on="$listeners" @open="onOpen" @close="onClose" title="Dialog Title">
${str} ${str}
<div slot="footer"> <div slot="footer">
<el-button @click="close">取消</el-button> <el-button @click="close">取消</el-button>
<el-button type="primary" @click="handelConfirm">确定</el-button> <el-button type="primary" @click="handleConfirm">确定</el-button>
</div> </div>
</el-dialog>` </el-dialog>`
} }

View File

@ -98,7 +98,7 @@ function mixinMethod(type) {
close: `close() { close: `close() {
this.$emit('update:visible', false) this.$emit('update:visible', false)
},`, },`,
handelConfirm: `handelConfirm() { handleConfirm: `handleConfirm() {
this.$refs['${confGlobal.formRef}'].validate(valid => { this.$refs['${confGlobal.formRef}'].validate(valid => {
if(!valid) return if(!valid) return
this.close() this.close()

View File

@ -41,7 +41,7 @@
<el-button @click="close"> <el-button @click="close">
取消 取消
</el-button> </el-button>
<el-button type="primary" @click="handelConfirm"> <el-button type="primary" @click="handleConfirm">
确定 确定
</el-button> </el-button>
</div> </div>
@ -94,7 +94,7 @@ export default {
close(e) { close(e) {
this.$emit('update:visible', false) this.$emit('update:visible', false)
}, },
handelConfirm() { handleConfirm() {
this.$refs.elForm.validate(valid => { this.$refs.elForm.validate(valid => {
if (!valid) return if (!valid) return
this.$emit('confirm', { ...this.formData }) this.$emit('confirm', { ...this.formData })

View File

@ -59,7 +59,7 @@
<div slot="footer"> <div slot="footer">
<el-button <el-button
type="primary" type="primary"
@click="handelConfirm" @click="handleConfirm"
> >
确定 确定
</el-button> </el-button>
@ -133,7 +133,7 @@ export default {
close() { close() {
this.$emit('update:visible', false) this.$emit('update:visible', false)
}, },
handelConfirm() { handleConfirm() {
this.$refs.elForm.validate(valid => { this.$refs.elForm.validate(valid => {
if (!valid) return if (!valid) return
if (this.dataType === 'number') { if (this.dataType === 'number') {

View File

@ -146,7 +146,7 @@ import { beautifierConf, titleCase } from '@/utils/index'
import { makeUpHtml, vueTemplate, vueScript, cssStyle } from '@/utils/generator/html' import { makeUpHtml, vueTemplate, vueScript, cssStyle } from '@/utils/generator/html'
import { makeUpJs } from '@/utils/generator/js' import { makeUpJs } from '@/utils/generator/js'
import { makeUpCss } from '@/utils/generator/css' import { makeUpCss } from '@/utils/generator/css'
import drawingDefalut from '@/utils/generator/drawingDefalut' import drawingDefault from '@/utils/generator/drawingDefault'
import logo from '@/assets/logo/logo.png' import logo from '@/assets/logo/logo.png'
import CodeTypeDialog from './CodeTypeDialog' import CodeTypeDialog from './CodeTypeDialog'
import DraggableItem from './DraggableItem' import DraggableItem from './DraggableItem'
@ -171,15 +171,15 @@ export default {
selectComponents, selectComponents,
layoutComponents, layoutComponents,
labelWidth: 100, labelWidth: 100,
drawingList: drawingDefalut, drawingList: drawingDefault,
drawingData: {}, drawingData: {},
activeId: drawingDefalut[0].formId, activeId: drawingDefault[0].formId,
drawerVisible: false, drawerVisible: false,
formData: {}, formData: {},
dialogVisible: false, dialogVisible: false,
generateConf: null, generateConf: null,
showFileName: false, showFileName: false,
activeData: drawingDefalut[0] activeData: drawingDefault[0]
} }
}, },
created() { created() {

View File

@ -159,7 +159,7 @@ export default {
}; };
}, },
created() { created() {
const tableId = this.$route.query && this.$route.query.tableId; const tableId = this.$route.params && this.$route.params.tableId;
if (tableId) { if (tableId) {
// //
getGenTable(tableId).then(res => { getGenTable(tableId).then(res => {

View File

@ -321,7 +321,7 @@ export default {
/** 修改按钮操作 */ /** 修改按钮操作 */
handleEditTable(row) { handleEditTable(row) {
const tableId = row.tableId || this.ids[0]; const tableId = row.tableId || this.ids[0];
this.$router.push({ path: '/tool/gen-edit/index', query: { tableId: tableId, pageNum: this.queryParams.pageNum } }); this.$router.push({ path: '/tool/gen-edit/index/' + tableId, query: { pageNum: this.queryParams.pageNum } });
}, },
/** 删除按钮操作 */ /** 删除按钮操作 */
handleDelete(row) { handleDelete(row) {