Compare commits

..

5 Commits

Author SHA1 Message Date
hyy
3d313b5695 application文件分离,开发:dev,生产:prod 2024-07-19 10:36:16 +08:00
hyy
6eee76d59d 修复impl模板 单表新增 2024-07-15 09:23:23 +08:00
hyy
361aac08c8 修复impl模板 2024-07-15 09:11:10 +08:00
958acd7485 分页查询模板修复 2024-07-12 08:42:02 +08:00
778864f28c 模板:修复主子表 2024-07-09 14:19:58 +08:00
16 changed files with 537 additions and 200 deletions

45
pom.xml
View File

@ -263,31 +263,26 @@
</configuration>
</plugin>
</plugins>
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
</resource>
</resources>
</build>
<!-- <repositories>-->
<!-- <repository>-->
<!-- <id>public</id>-->
<!-- <name>aliyun nexus</name>-->
<!-- <url>https://maven.aliyun.com/repository/public</url>-->
<!-- <releases>-->
<!-- <enabled>true</enabled>-->
<!-- </releases>-->
<!-- </repository>-->
<!-- </repositories>-->
<!-- <pluginRepositories>-->
<!-- <pluginRepository>-->
<!-- <id>public</id>-->
<!-- <name>aliyun nexus</name>-->
<!-- <url>https://maven.aliyun.com/repository/public</url>-->
<!-- <releases>-->
<!-- <enabled>true</enabled>-->
<!-- </releases>-->
<!-- <snapshots>-->
<!-- <enabled>false</enabled>-->
<!-- </snapshots>-->
<!-- </pluginRepository>-->
<!-- </pluginRepositories>-->
<profiles>
<profile>
<id>dev</id>
<properties>
<spring.profiles.active>dev</spring.profiles.active>
</properties>
</profile>
<profile>
<id>prod</id>
<properties>
<spring.profiles.active>prod</spring.profiles.active>
</properties>
</profile>
</profiles>
</project>

View File

@ -0,0 +1,87 @@
# 数据源配置
spring:
datasource:
type: com.alibaba.druid.pool.DruidDataSource
driverClassName: com.mysql.cj.jdbc.Driver
druid:
# 主库数据源
master:
url: jdbc:mysql://localhost:3306/jgwebsite?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
username: root
password: 123456
# 从库数据源
slave:
# 从数据源开关/默认关闭
enabled: false
url:
username:
password:
# 初始连接数
initialSize: 5
# 最小连接池数量
minIdle: 10
# 最大连接池数量
maxActive: 20
# 配置获取连接等待超时的时间
maxWait: 60000
# 配置连接超时时间
connectTimeout: 30000
# 配置网络超时时间
socketTimeout: 60000
# 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
timeBetweenEvictionRunsMillis: 60000
# 配置一个连接在池中最小生存的时间,单位是毫秒
minEvictableIdleTimeMillis: 300000
# 配置一个连接在池中最大生存的时间,单位是毫秒
maxEvictableIdleTimeMillis: 900000
# 配置检测连接是否有效
validationQuery: SELECT 1 FROM DUAL
testWhileIdle: true
testOnBorrow: false
testOnReturn: false
webStatFilter:
enabled: true
statViewServlet:
enabled: true
# 设置白名单,不填则允许所有访问
allow:
url-pattern: /druid/*
# 控制台管理用户名和密码
login-username: jg
login-password: 123456
filter:
stat:
enabled: true
# 慢SQL记录
log-slow-sql: true
slow-sql-millis: 1000
merge-sql: true
wall:
config:
multi-statement-allow: true
# redis 配置
redis:
# 地址
host: localhost
# 端口默认为6379
port: 6379
# 数据库索引
database: 0
# 密码
password:
# 连接超时时间
timeout: 10s
lettuce:
pool:
# 连接池中的最小空闲连接
min-idle: 0
# 连接池中的最大空闲连接
max-idle: 8
# 连接池的最大数据库连接数
max-active: 8
# #连接池最大阻塞等待时间(使用负值表示没有限制)
max-wait: -1ms
# 项目相关配置
jg:
# 文件路径 示例( Windows配置D:/jg/uploadPathLinux配置 /home/jg/uploadPath
profile: D:/JG/uploadPath

View File

@ -1,61 +0,0 @@
# 数据源配置
spring:
datasource:
type: com.alibaba.druid.pool.DruidDataSource
driverClassName: com.mysql.cj.jdbc.Driver
druid:
# 主库数据源
master:
url: jdbc:mysql://localhost:3308/jgwebsite?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
username: root
password: 123456
# 从库数据源
slave:
# 从数据源开关/默认关闭
enabled: false
url:
username:
password:
# 初始连接数
initialSize: 5
# 最小连接池数量
minIdle: 10
# 最大连接池数量
maxActive: 20
# 配置获取连接等待超时的时间
maxWait: 60000
# 配置连接超时时间
connectTimeout: 30000
# 配置网络超时时间
socketTimeout: 60000
# 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
timeBetweenEvictionRunsMillis: 60000
# 配置一个连接在池中最小生存的时间,单位是毫秒
minEvictableIdleTimeMillis: 300000
# 配置一个连接在池中最大生存的时间,单位是毫秒
maxEvictableIdleTimeMillis: 900000
# 配置检测连接是否有效
validationQuery: SELECT 1 FROM DUAL
testWhileIdle: true
testOnBorrow: false
testOnReturn: false
webStatFilter:
enabled: true
statViewServlet:
enabled: true
# 设置白名单,不填则允许所有访问
allow:
url-pattern: /druid/*
# 控制台管理用户名和密码
login-username: jg
login-password: 123456
filter:
stat:
enabled: true
# 慢SQL记录
log-slow-sql: true
slow-sql-millis: 1000
merge-sql: true
wall:
config:
multi-statement-allow: true

View File

@ -0,0 +1,87 @@
# 数据源配置
spring:
datasource:
type: com.alibaba.druid.pool.DruidDataSource
driverClassName: com.mysql.cj.jdbc.Driver
druid:
# 主库数据源
master:
url: jdbc:mysql://localhost:3308/jgwebsite?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
username: root
password: 123456
# 从库数据源
slave:
# 从数据源开关/默认关闭
enabled: false
url:
username:
password:
# 初始连接数
initialSize: 5
# 最小连接池数量
minIdle: 10
# 最大连接池数量
maxActive: 20
# 配置获取连接等待超时的时间
maxWait: 60000
# 配置连接超时时间
connectTimeout: 30000
# 配置网络超时时间
socketTimeout: 60000
# 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
timeBetweenEvictionRunsMillis: 60000
# 配置一个连接在池中最小生存的时间,单位是毫秒
minEvictableIdleTimeMillis: 300000
# 配置一个连接在池中最大生存的时间,单位是毫秒
maxEvictableIdleTimeMillis: 900000
# 配置检测连接是否有效
validationQuery: SELECT 1 FROM DUAL
testWhileIdle: true
testOnBorrow: false
testOnReturn: false
webStatFilter:
enabled: true
statViewServlet:
enabled: true
# 设置白名单,不填则允许所有访问
allow:
url-pattern: /druid/*
# 控制台管理用户名和密码
login-username: jg
login-password: 123456
filter:
stat:
enabled: true
# 慢SQL记录
log-slow-sql: true
slow-sql-millis: 1000
merge-sql: true
wall:
config:
multi-statement-allow: true
# redis 配置
redis:
# 地址
host: localhost
# 端口默认为6379
port: 6379
# 数据库索引
database: 0
# 密码
password:
# 连接超时时间
timeout: 10s
lettuce:
pool:
# 连接池中的最小空闲连接
min-idle: 0
# 连接池中的最大空闲连接
max-idle: 8
# 连接池的最大数据库连接数
max-active: 8
# #连接池最大阻塞等待时间(使用负值表示没有限制)
max-wait: -1ms
# 项目相关配置
jg:
# 文件路径 示例( Windows配置D:/jg/uploadPathLinux配置 /home/jg/uploadPath
profile: /home/jg/uploadPath

View File

@ -53,7 +53,7 @@ spring:
# 国际化资源文件路径
basename: i18n/messages
profiles:
active: druid
active: @spring.profiles.active@
# 文件上传
servlet:
multipart:
@ -66,29 +66,6 @@ spring:
restart:
# 热部署开关
enabled: true
# redis 配置
redis:
# 地址
host: 192.168.50.18
# 端口默认为6379
port: 6379
# 数据库索引
database: 0
# 密码
password: jingang@redis
# 连接超时时间
timeout: 10s
lettuce:
pool:
# 连接池中的最小空闲连接
min-idle: 0
# 连接池中的最大空闲连接
max-idle: 8
# 连接池的最大数据库连接数
max-active: 8
# #连接池最大阻塞等待时间(使用负值表示没有限制)
max-wait: -1ms
# token配置
token:
# 令牌自定义标识

View File

@ -1,6 +1,7 @@
package ${packageName}.controller;
import java.util.List;
import javax.annotation.Resource;
import com.github.pagehelper.PageInfo;
import lombok.extern.slf4j.Slf4j;
import javax.servlet.http.HttpServletResponse;
import com.jg.framework.aspectj.lang.enums.BusinessType;
@ -10,10 +11,7 @@ import io.swagger.annotations.ApiOperation;
import org.springframework.security.access.prepost.PreAuthorize;
import com.jg.common.utils.QueryPage;
import com.jg.framework.aspectj.lang.annotation.Log;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;
import com.jg.framework.web.controller.BaseController;
import ${packageName}.domain.${ClassName};
import ${packageName}.service.I${ClassName}Service;
@ -31,7 +29,7 @@ import com.jg.framework.web.domain.R;
@Slf4j
@Api(tags = "${functionName}")
@RestController
@RequestMapping("/${moduleName}")
@RequestMapping("/${businessName}")
public class ${ClassName}Controller extends BaseController{
@Resource
@ -46,7 +44,8 @@ public class ${ClassName}Controller extends BaseController{
public R listPage(QueryPage queryPage,${ClassName} ${className}) {
startPage();
List<${ClassName}> list = ${className}Service.select${ClassName}List(${className});
return R.page(queryPage.getPageNum(),queryPage.getPageSize(),list.size(),list);
int size = Integer.parseInt(String.valueOf(new PageInfo(list).getTotal()));
return R.page(queryPage.getPageNum(),queryPage.getPageSize(),size,list);
}
/**
* ${functionName}列表
@ -66,7 +65,7 @@ public class ${ClassName}Controller extends BaseController{
@ApiOperation(value = "${functionName}id详细信息", notes = "${functionName}id详细信息")
@GetMapping("/query")
public R<${ClassName}> query(Long id) {
${ClassName} queryinfo = ${className}Service.getById(id);
${ClassName} queryinfo = ${className}Service.select${ClassName}By${pkColumn.capJavaField}(${pkColumn.javaField});
return R.ok(queryinfo);
}
/**
@ -76,8 +75,8 @@ public class ${ClassName}Controller extends BaseController{
@ApiOperation(value = "${functionName}新增信息", notes = "${functionName}新增信息")
@Log(title = "${functionName}", businessType = BusinessType.INSERT)
@PostMapping("/add")
public R<Boolean> add(${ClassName} ${className}) {
boolean res = ${className}Service.save(${className});
public R<Integer> add(@RequestBody ${ClassName} ${className}) {
int res = ${className}Service.insert${ClassName}(${className});
return R.ok(res);
}
/**
@ -87,8 +86,8 @@ public class ${ClassName}Controller extends BaseController{
@ApiOperation(value = "${functionName}修改信息", notes = "${functionName}修改信息")
@Log(title = "${functionName}", businessType = BusinessType.UPDATE)
@PostMapping("/edit")
public R<Boolean> edit(${ClassName} ${className}) {
boolean res = ${className}Service.updateById(${className});
public R<Integer> edit(@RequestBody ${ClassName} ${className}) {
int res = ${className}Service.update${ClassName}(${className});
return R.ok(res);
}
/**
@ -99,7 +98,19 @@ public class ${ClassName}Controller extends BaseController{
@Log(title = "${functionName}", businessType = BusinessType.DELETE)
@PostMapping("/remove")
public R<Boolean> remove(Long id) {
boolean res = ${className}Service.removeById(id);
boolean res = ${className}Service.delete${ClassName}By${pkColumn.capJavaField}(id);
return R.ok(res);
}
/**
* ${functionName}批量删除信息
*/
@PreAuthorize("@ss.hasPermi('${permissionPrefix}:removeBatch')")
@ApiOperation(value = "${functionName}批量删除信息", notes = "${functionName}批量删除信息")
@Log(title = "${functionName}", businessType = BusinessType.DELETE)
@PostMapping("/removeBatch")
public R<Boolean> removeBatch(@RequestBody Long[] ids) {
boolean res = ${className}Service.delete${ClassName}By${pkColumn.capJavaField}s(ids);
return R.ok(res);
}

View File

@ -1,6 +1,5 @@
package ${packageName}.domain;
import com.alibaba.fastjson2.annotation.JSONField;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
@ -15,8 +14,10 @@ import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
#if($table.sub)
import java.util.List;
#end
/**
* ${functionName}对象 ${tableName}
@ -30,7 +31,7 @@ import lombok.NoArgsConstructor;
@Builder
@ApiModel("${functionName}表")
@TableName("${tableName}")
public class ${ClassName}{
public class ${ClassName} implements Serializable {
private static final long serialVersionUID=1L;
#foreach ($column in $columns)
@ -66,4 +67,11 @@ private static final long serialVersionUID=1L;
#end
#end
#end
#if($table.sub)
/** $table.subTable.functionName信息 */
@ApiModelProperty(value = "$table.subTable.functionName信息",hidden = true)
@TableField(exist = false)
private List<${subClassName}> ${subclassName}List;
#end
}

View File

@ -11,6 +11,7 @@ import java.util.List;
* @date ${datetime}
*/
public interface ${ClassName}Mapper extends BaseMapper<${ClassName}> {
/**
* 查询${functionName}分页列表
*
@ -18,4 +19,23 @@ public interface ${ClassName}Mapper extends BaseMapper<${ClassName}> {
* @return ${functionName}集合
*/
public List<${ClassName}> select${ClassName}List(${ClassName} ${className});
/**
* 查询${functionName}
*
* @param ${pkColumn.javaField} ${functionName}主键
* @return ${functionName}
*/
public ${ClassName} select${ClassName}By${pkColumn.capJavaField}(${pkColumn.javaType} ${pkColumn.javaField});
#if($table.sub)
/**
* 通过${functionName}主键删除${subTable.functionName}信息
*
* @param ${pkColumn.javaField} ${functionName}ID
* @return 结果
*/
public int delete${subClassName}By${subTableFkClassName}(${pkColumn.javaType} ${pkColumn.javaField});
#end
}

View File

@ -18,4 +18,44 @@ public interface I${ClassName}Service extends IService<${ClassName}> {
* @return ${functionName}集合
*/
public List<${ClassName}> select${ClassName}List(${ClassName} ${className});
/**
* 查询${functionName}
*
* @param ${pkColumn.javaField} ${functionName}主键
* @return ${functionName}
*/
public ${ClassName} select${ClassName}By${pkColumn.capJavaField}(${pkColumn.javaType} ${pkColumn.javaField});
/**
* 新增${functionName}
*
* @param ${className} ${functionName}
* @return 结果
*/
public int insert${ClassName}(${ClassName} ${className});
/**
* 修改${functionName}
*
* @param ${className} ${functionName}
* @return 结果
*/
public int update${ClassName}(${ClassName} ${className});
/**
* 批量删除${functionName}
*
* @param ${pkColumn.javaField}s 需要删除的${functionName}主键集合
* @return 结果
*/
public boolean delete${ClassName}By${pkColumn.capJavaField}s(${pkColumn.javaType}[] ${pkColumn.javaField}s);
/**
* 删除${functionName}信息
*
* @param ${pkColumn.javaField} ${functionName}主键
* @return 结果
*/
public boolean delete${ClassName}By${pkColumn.capJavaField}(${pkColumn.javaType} ${pkColumn.javaField});
}

View File

@ -4,6 +4,12 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import ${packageName}.mapper.${ClassName}Mapper;
import ${packageName}.domain.${ClassName};
import ${packageName}.service.I${ClassName}Service;
#if($table.sub)
import com.jg.common.utils.StringUtils;
import org.springframework.transaction.annotation.Transactional;
import ${packageName}.mapper.${subClassName}Mapper;
import ${packageName}.domain.${subClassName};
#end
import org.springframework.stereotype.Service;
import java.util.List;
import javax.annotation.Resource;
@ -19,7 +25,10 @@ public class ${ClassName}ServiceImpl extends ServiceImpl<${ClassName}Mapper, ${C
@Resource
private ${ClassName}Mapper ${className}Mapper;
#if($table.sub)
@Resource
private ${subClassName}Mapper ${subclassName}Mapper;
#end
/**
* 查询${functionName}分页列表
*
@ -31,4 +40,114 @@ public class ${ClassName}ServiceImpl extends ServiceImpl<${ClassName}Mapper, ${C
{
return ${className}Mapper.select${ClassName}List(${className});
}
/**
* 查询${functionName}
*
* @param ${pkColumn.javaField} ${functionName}主键
* @return ${functionName}
*/
@Override
public ${ClassName} select${ClassName}By${pkColumn.capJavaField}(${pkColumn.javaType} ${pkColumn.javaField})
{
return ${className}Mapper.select${ClassName}By${pkColumn.capJavaField}(${pkColumn.javaField});
}
/**
* 新增${functionName}
*
* @param ${className} ${functionName}
* @return 结果
*/
#if($table.sub)
@Transactional
#end
@Override
public int insert${ClassName}(${ClassName} ${className})
{
#if($table.sub)
int rows = ${className}Mapper.insert(${className});
insert${subClassName}(${className});
return rows;
#else
return ${className}Mapper.insert(${className});
#end
}
/**
* 修改${functionName}
*
* @param ${className} ${functionName}
* @return 结果
*/
#if($table.sub)
@Transactional
#end
@Override
public int update${ClassName}(${ClassName} ${className})
{
#if($table.sub)
${className}Mapper.delete${subClassName}By${subTableFkClassName}(${className}.get${pkColumn.capJavaField}());
insert${subClassName}(${className});
#end
return ${className}Mapper.updateById(${className});
}
/**
* 批量删除${functionName}
*
* @param ${pkColumn.javaField}s 需要删除的${functionName}主键
* @return 结果
*/
#if($table.sub)
@Transactional
#end
@Override
public boolean delete${ClassName}By${pkColumn.capJavaField}s(${pkColumn.javaType}[] ${pkColumn.javaField}s)
{
for (${pkColumn.javaType} ${pkColumn.javaField} : ${pkColumn.javaField}s) {
delete${ClassName}By${pkColumn.capJavaField}(${pkColumn.javaField});
}
return true;
}
/**
* 删除${functionName}信息
*
* @param ${pkColumn.javaField} ${functionName}主键
* @return 结果
*/
#if($table.sub)
@Transactional
#end
@Override
public boolean delete${ClassName}By${pkColumn.capJavaField}(${pkColumn.javaType} ${pkColumn.javaField})
{
#if($table.sub)
${className}Mapper.delete${subClassName}By${subTableFkClassName}(${pkColumn.javaField});
#end
${className}Mapper.deleteById(${pkColumn.javaField});
return true;
}
#if($table.sub)
/**
* 新增${subTable.functionName}信息
*
* @param ${className} ${functionName}对象
*/
public void insert${subClassName}(${ClassName} ${className})
{
List<${subClassName}> ${subclassName}List = ${className}.get${subClassName}List();
${pkColumn.javaType} ${pkColumn.javaField} = ${className}.get${pkColumn.capJavaField}();
if (StringUtils.isNotNull(${subclassName}List))
{
for (${subClassName} ${subclassName} : ${subclassName}List)
{
${subclassName}.set${subTableFkClassName}(${pkColumn.javaField});
${subclassName}Mapper.insert(${subclassName});
}
}
}
#end
}

View File

@ -1,21 +1,35 @@
package ${packageName}.domain;
#foreach ($import in $subImportList)
import ${import};
#end
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.rchuing.common.annotation.Excel;
import com.rchuing.common.core.domain.BaseEntity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.jg.framework.aspectj.lang.annotation.Excel;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import io.swagger.annotations.ApiModel;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
/**
* ${subTable.functionName}对象 ${subTableName}
*
* @author ${author}
* @author jg jg${author}
* @date ${datetime}
*/
public class ${subClassName} extends BaseEntity {
private static final long serialVersionUID = 1L;
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
@ApiModel("${subTable.functionName}表")
@TableName("${subTableName}")
public class ${subClassName} implements Serializable {
private static final long serialVersionUID=1L;
#foreach ($column in $subTable.columns)
#if(!$table.isSuperColumn($column.javaField))
@ -27,47 +41,27 @@ private static final long serialVersionUID = 1L;
#else
#set($comment=$column.columnComment)
#end
#if($parentheseIndex != -1)
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
#elseif($column.javaType == 'Date')
@JsonFormat(pattern = "yyyy-MM-dd")
@Excel(name = "${comment}", width = 30, dateFormat = "yyyy-MM-dd")
#else
@Excel(name = "${comment}")
#end
#end
private $column.javaType $column.javaField;
#if($column.isPk == 1)
@JsonSerialize(using = ToStringSerializer.class)
@ApiModelProperty("$column.columnComment")
@TableId(value = "$column.columnName" , type = IdType.ASSIGN_ID)
private $column.javaType $column.javaField;
#else
@ApiModelProperty("$column.columnComment")
@Excel(name = "$column.columnComment")
@TableField("$column.columnName")
private $column.javaType $column.javaField;
#end
#else
#if($column.javaType == 'Date')
/** $column.columnComment */
@ApiModelProperty(value = "$column.columnComment",hidden = true)
@Excel(name = "$column.columnComment")
@TableField("$column.columnName")
@JsonSerialize(using = ToStringSerializer.class)
private String $column.javaField;
#end
#end
#end
#foreach ($column in $subTable.columns)
#if(!$table.isSuperColumn($column.javaField))
#if($column.javaField.length() > 2 && $column.javaField.substring(1,2).matches("[A-Z]"))
#set($AttrName=$column.javaField)
#else
#set($AttrName=$column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)})
#end
public void set${AttrName}($column.javaType $column.javaField) {
this.$column.javaField = $column.javaField;
}
public $column.javaType get${AttrName}() {
return $column.javaField;
}
#end
#end
@Override
public String toString() {
return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
#foreach ($column in $subTable.columns)
#if($column.javaField.length() > 2 && $column.javaField.substring(1,2).matches("[A-Z]"))
#set($AttrName=$column.javaField)
#else
#set($AttrName=$column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)})
#end
.append("${column.javaField}", get${AttrName}())
#end
.toString();
}
}
}

View File

@ -3,7 +3,7 @@ import request from '@/utils/request'
// 查询${functionName}分列表
export function listPage${BusinessName}(data) {
return request({
url: '/${moduleName}/listPage',
url: '/${businessName}/listPage',
method: 'post',
params: data
})
@ -11,14 +11,14 @@ export function listPage${BusinessName}(data) {
// 查询${functionName}列表
export function list${BusinessName}() {
return request({
url: '/${moduleName}/list',
url: '/${businessName}/list',
method: 'get',
})
}
// 查询${functionName}详细
export function get${BusinessName}(${pkColumn.javaField}) {
return request({
url: '/${moduleName}/query?id=' + ${pkColumn.javaField},
url: '/${businessName}/query?id=' + ${pkColumn.javaField},
method: 'get'
})
}
@ -26,26 +26,35 @@ export function get${BusinessName}(${pkColumn.javaField}) {
// 新增${functionName}
export function add${BusinessName}(data) {
return request({
url: '/${moduleName}/add',
url: '/${businessName}/add',
method: 'post',
params: data
data: data
})
}
// 修改${functionName}
export function update${BusinessName}(data) {
return request({
url: '/${moduleName}/edit',
url: '/${businessName}/edit',
method: 'post',
params: data
data: data
})
}
// 删除${functionName}
export function del${BusinessName}(${pkColumn.javaField}) {
return request({
url: '/${moduleName}/remove/',
url: '/${businessName}/remove/',
method: 'post',
params: {id:${pkColumn.javaField}}
})
}
// 批量删除${functionName}
export function delBatch${BusinessName}(data) {
return request({
url: '/${businessName}/removeBatch/',
method: 'post',
data: data
})
}

View File

@ -1,11 +1,12 @@
-- 菜单 SQL
insert into sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
values('${functionName}', '${parentMenuId}', '1', '${businessName}', '${moduleName}/${businessName}/index', 1, 0, 'C', '0', '0', '${permissionPrefix}:list', '#', 'admin', sysdate(), '', null, '${functionName}菜单');
values('${functionName}', '${parentMenuId}', '1', '${businessName}', '${moduleName}/${businessName}/index', 1, 0, 'C', '0', '0', '${permissionPrefix}:listPage', '#', 'admin', sysdate(), '', null, '${functionName}菜单');
-- 按钮父菜单ID
SELECT @parentId := LAST_INSERT_ID();
-- 按钮 SQL
insert into sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
values('${functionName}查询', @parentId, '1', '#', '', 1, 0, 'F', '0', '0', '${permissionPrefix}:query', '#', 'admin', sysdate(), '', null, '');
@ -18,5 +19,8 @@ values('${functionName}修改', @parentId, '3', '#', '', 1, 0, 'F', '0', '0', '
insert into sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
values('${functionName}删除', @parentId, '4', '#', '', 1, 0, 'F', '0', '0', '${permissionPrefix}:remove', '#', 'admin', sysdate(), '', null, '');
insert into sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
values('${functionName}批量删除', @parentId, '4', '#', '', 1, 0, 'F', '0', '0', '${permissionPrefix}:removeBatch', '#', 'admin', sysdate(), '', null, '');
insert into sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
values('${functionName}导出', @parentId, '5', '#', '', 1, 0, 'F', '0', '0', '${permissionPrefix}:export', '#', 'admin', sysdate(), '', null, '');

View File

@ -99,8 +99,8 @@
icon="el-icon-delete"
size="mini"
:disabled="multiple"
@click="handleDelete"
v-hasPermi="['${moduleName}:${businessName}:remove']"
@click="handleBatchDelete"
v-hasPermi="['${moduleName}:${businessName}:removeBatch']"
>删除
</el-button>
</el-col>
@ -373,6 +373,7 @@
listPage${BusinessName},
get${BusinessName},
del${BusinessName},
delBatch${BusinessName},
add${BusinessName},
update${BusinessName}
} from "@/api/${moduleName}/${businessName}";
@ -606,15 +607,30 @@
},
/** 删除按钮操作 */
handleDelete(row) {
const ${pkColumn.javaField}s = row.$
const ${pkColumn.javaField} = row.$
{
pkColumn.javaField
}
||
this.ids;
};
this.#[[$modal]]
#.confirm('是否确认删除${functionName}编号为"' + ${pkColumn.javaField} + '"的数据项?').then(function () {
return del$
{
BusinessName
}
(${pkColumn.javaField});
}).then(() => {
this.getList();
this.#[[$modal]]
#.msgSuccess("删除成功");
}).catch(() => {
});
},
/** 批量删除按钮操作 */
handleBatchDelete() {
const ${pkColumn.javaField}s = this.ids;
this.#[[$modal]]
#.confirm('是否确认删除${functionName}编号为"' + ${pkColumn.javaField}s + '"的数据项?').then(function () {
return del$
return delBatch$
{
BusinessName
}
@ -703,7 +719,7 @@
/** 导出按钮操作 */
handleExport()
{
this.download('${moduleName}/export', {
this.download('${businessName}/export', {
...this.queryParams
}, `${businessName}_#[[${new Date().getTime()}]]#.xlsx`)
}

View File

@ -92,8 +92,8 @@
plain
icon="Delete"
:disabled="multiple"
@click="handleDelete"
v-hasPermi="['${moduleName}:${businessName}:remove']"
@click="handleBatchDelete"
v-hasPermi="['${moduleName}:${businessName}:removeBatch']"
>删除</el-button>
</el-col>
<el-col :span="1.5">
@ -344,7 +344,7 @@
</template>
<script setup name="${BusinessName}">
import { listPage${BusinessName}, get${BusinessName}, del${BusinessName}, add${BusinessName}, update${BusinessName} } from "@/api/${moduleName}/${businessName}";
import { listPage${BusinessName}, get${BusinessName}, del${BusinessName}, delBatch${BusinessName}, add${BusinessName}, update${BusinessName} } from "@/api/${moduleName}/${businessName}";
const { proxy } = getCurrentInstance();
#if(${dicts} != '')
@ -534,9 +534,20 @@ function submitForm() {
/** 删除按钮操作 */
function handleDelete(row) {
const _${pkColumn.javaField}s = row.${pkColumn.javaField} || ids.value;
const _${pkColumn.javaField} = row.${pkColumn.javaField};
proxy.#[[$modal]]#.confirm('是否确认删除${functionName}编号为"' + _${pkColumn.javaField} + '"的数据项?').then(function() {
return del${BusinessName}(_${pkColumn.javaField});
}).then(() => {
getList();
proxy.#[[$modal]]#.msgSuccess("删除成功");
}).catch(() => {});
}
/** 批量删除按钮操作 */
function handleBatchDelete() {
const _${pkColumn.javaField}s = ids.value;
proxy.#[[$modal]]#.confirm('是否确认删除${functionName}编号为"' + _${pkColumn.javaField}s + '"的数据项?').then(function() {
return del${BusinessName}(_${pkColumn.javaField}s);
return delBatch${BusinessName}(_${pkColumn.javaField}s);
}).then(() => {
getList();
proxy.#[[$modal]]#.msgSuccess("删除成功");

View File

@ -55,4 +55,24 @@
#end
</where>
</select>
<select id="select${ClassName}By${pkColumn.capJavaField}" parameterType="${pkColumn.javaType}" resultMap="#if($table.sub)${ClassName}${subClassName}Result#else${ClassName}Result#end">
#if($table.crud || $table.tree)
<include refid="select${ClassName}Vo"/>
where ${pkColumn.columnName} = #{${pkColumn.javaField}}
#elseif($table.sub)
select#foreach($column in $columns) a.$column.columnName#if($foreach.count != $columns.size()),#end#end,
#foreach($column in $subTable.columns) b.$column.columnName as sub_$column.columnName#if($foreach.count != $subTable.columns.size()),#end#end
from ${tableName} a
left join ${subTableName} b on b.${subTableFkName} = a.${pkColumn.columnName}
where a.${pkColumn.columnName} = #{${pkColumn.javaField}}
#end
</select>
#if($table.sub)
<delete id="delete${subClassName}By${subTableFkClassName}" parameterType="${pkColumn.javaType}">
delete from ${subTableName} where ${subTableFkName} = #{${subTableFkclassName}}
</delete>
#end
</mapper>