doum
4 小时以前 bd33d9649906e88271725a7d450b0c49afd54df5
经销商管理
已添加6个文件
已修改3个文件
565 ■■■■■ 文件已修改
admin/src/components/business/OperaShopInfoWindow.vue 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/business/shop.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmmall_service/src/main/java/com/doumee/core/utils/CodeGenerator.java 208 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmmall_service/src/main/resources/templates/controller.vm 85 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmmall_service/src/main/resources/templates/entity.vm 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmmall_service/src/main/resources/templates/mapper.vm 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmmall_service/src/main/resources/templates/service.vm 97 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmmall_service/src/main/resources/templates/serviceImpl.vm 118 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/pom.xml 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/components/business/OperaShopInfoWindow.vue
@@ -199,7 +199,6 @@
              </el-table-column>
              <el-table-column prop="price" label="实付价格(元)" align="center" min-width="200px"></el-table-column>
              <el-table-column prop="shopSettlement" label="应结算金额(元)" align="center" min-width="150px"></el-table-column>
              <el-table-column prop="orderCode" label="应结算金额(元)" align="center" min-width="150px"></el-table-column>
              <el-table-column prop="returnMemberIntegral" label="返用户积分" align="center" min-width="150px"></el-table-column>
              <el-table-column prop="returnCustomerIntegral" label="返经销商积分" align="center" min-width="150px"></el-table-column>
              <el-table-column prop="payDate" label="支付时间" align="center" min-width="200px"></el-table-column>
admin/src/views/business/shop.vue
@@ -184,7 +184,7 @@
        })
    },
    showDetail (row) {
      this.$refs.OperaShopInfoWindow.open('经销商详情', row)
      this.$refs.OperaShopInfoWindow.open('经销商详情【'+row.name+'】', row)
    }
  }
}
server/dmmall_service/src/main/java/com/doumee/core/utils/CodeGenerator.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,208 @@
package com.doumee.core.utils;
import org.apache.velocity.Template;
import org.apache.velocity.VelocityContext;
import org.apache.velocity.app.VelocityEngine;
import org.apache.velocity.runtime.RuntimeConstants;
import org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.sql.*;
import java.util.Date;
import java.util.*;
// æ¼”示例子,执行 main æ–¹æ³•控制台输入模块表名回车自动生成对应项目目录中
public class CodeGenerator {
public static  String packName ="com.doumee";
    public static void main(String[] args) {
        // é…ç½®æ•°æ®åº“连接
        String url = "jdbc:mysql://192.168.0.211:3306/dmmall_full";
        String username = "root";
        String password = "Doumee@168";
        String database = "dmmall_full";
        String tableName = "car_driver";
        // èŽ·å–è¡¨ä¿¡æ¯å¹¶ç”Ÿæˆä»£ç 
        Map<String, Object> tableInfo = getTableInfo(url, username, password, database, tableName);
        generateCode(tableInfo);
    }
    public static Map<String, Object> getTableInfo(String url, String username, String password, String database, String tableName) {
        Map<String, Object> map = new HashMap<>();
        try (Connection conn = DriverManager.getConnection(url, username, password)) {
            // æŸ¥è¯¢è¡¨æ³¨é‡Š
            String tableQuery = "SELECT table_comment FROM information_schema.tables WHERE table_schema = ? AND table_name = ?";
            try (PreparedStatement ps = conn.prepareStatement(tableQuery)) {
                ps.setString(1, database);
                ps.setString(2, tableName);
                ResultSet rs = ps.executeQuery();
                if (rs.next()) {
                    map.put("tableComment", rs.getString("table_comment"));
                }
            }
            // æŸ¥è¯¢å­—段信息 auto_increment
            String columnQuery = "SELECT extra,column_name, column_type, column_comment FROM information_schema.columns WHERE table_schema = ? AND table_name = ? order by ordinal_position";
            List<Map<String, String>> columns = new ArrayList<>();
            try (PreparedStatement ps = conn.prepareStatement(columnQuery)) {
                ps.setString(1, database);
                ps.setString(2, tableName);
                ResultSet rs = ps.executeQuery();
                int index = 1;
                while (rs.next()) {
                    String javaName = toCamelCase(rs.getString("column_name"));
                    String getJavaName = javaName.substring(0,1).toUpperCase()+javaName.substring(1);
                    Map<String, String> columnInfo = new HashMap<>();
                    if(rs.getString("extra") !=null
                            && rs.getString("extra").contains("auto_increment")){
                        //如果是自增长
                        columnInfo.put("auto","1");  // è½¬æ¢ä¸º Java å˜é‡å
                    }else{
                        columnInfo.put("auto","0");  // è½¬æ¢ä¸º Java å˜é‡å
                    }
                    columnInfo.put("index",index++ +"");
                    columnInfo.put("columnName", rs.getString("column_name"));
                    columnInfo.put("javaName",javaName);  // è½¬æ¢ä¸º Java å˜é‡å
                    columnInfo.put("getJavaName",getJavaName);  // è½¬æ¢ä¸º Java å˜é‡å
                    columnInfo.put("javaType", sqlTypeToJavaType(rs.getString("column_type")));  // è½¬æ¢ä¸º Java ç±»åž‹
                    columnInfo.put("comment", rs.getString("column_comment"));
                    columns.add(columnInfo);
                }
            }
            map.put("columns", columns);
            map.put("tableName", tableName);
            map.put("entityName", toCamelCase(tableName));
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return map;
    }
    private static String sqlTypeToJavaType(String sqlType) {
        sqlType = sqlType.toLowerCase();
        if (sqlType.contains("int")) {
            return "Integer";
        } else if (sqlType.contains("bigint")) {
            return "Long";
        } else if (sqlType.contains("char") || sqlType.contains("text") || sqlType.contains("varchar")) {
            return "String";
        } else if (sqlType.contains("datetime") || sqlType.contains("timestamp")) {
            return "Date";
        } else if (sqlType.contains("date")) {
            return "Date";
        } else if (sqlType.contains("decimal") || sqlType.contains("double")) {
            return "BigDecimal";
        } else {
            return "String";
        }
    }
    private static String toCamelCase(String name) {
        StringBuilder result = new StringBuilder();
        String[] parts = name.split("_");
        for (int i = 0; i < parts.length; i++) {
            if (i == 0) {
                result.append(parts[i].toLowerCase());
            } else {
                result.append(Character.toUpperCase(parts[i].charAt(0))).append(parts[i].substring(1).toLowerCase());
            }
        }
        return result.toString();
    }
    private static void generateCode(Map<String, Object> tableInfo) {
        // è¯»å–表信息
        String entityName = (String) tableInfo.get("entityName");
        String tableName = (String) tableInfo.get("tableName");
        String tableComment = (String) tableInfo.get("tableComment");
        List<Map<String, String>> columns = (List<Map<String, String>>) tableInfo.get("columns");
        String templateDir = "D:\\code\\idea\\doumee_code\\server\\src\\main\\resources\\templates"; // æ¨¡æ¿æ–‡ä»¶çš„路径
        Properties p = new Properties();
        // æŒ‡å®šæ¨¡æ¿çš„加载位置
        p.setProperty(VelocityEngine.FILE_RESOURCE_LOADER_PATH, templateDir);
        // æŒ‡å®šè¾“入编码
        p.setProperty(VelocityEngine.INPUT_ENCODING, "UTF-8");
        p.setProperty(RuntimeConstants.RESOURCE_LOADER, "file");
        p.setProperty("file.resource.loader.class", "org.apache.velocity.runtime.resource.loader.FileResourceLoader");
        p.setProperty("velocimacro.library", "macro_library.vm"); // è®¾ç½®å®åº“文件名
        p.setProperty("velocimacro.library.autoreload", "true"); // å…è®¸è‡ªåŠ¨é‡æ–°åŠ è½½å®åº“
        p.setProperty("velocimacro.permissions.allow.inline.to.replace.global", "true"); // å…è®¸å†…联宏替换全局宏
        p.setProperty("velocimacro.library", "/templates/macro_library.vm"); // è®¾ç½®å®åº“文件名
        p.setProperty("velocimacro.library.autoreload", "true"); // å…è®¸è‡ªåŠ¨é‡æ–°åŠ è½½å®åº“
        // è®¾ç½® Velocity é…ç½®
        VelocityEngine velocityEngine = new VelocityEngine();
        velocityEngine.setProperty(RuntimeConstants.RESOURCE_LOADER, "classpath");
        velocityEngine.setProperty("classpath.resource.loader.class", ClasspathResourceLoader.class.getName());
        velocityEngine.init();
        // é…ç½®æ¨¡æ¿ç›®å½•
        // è®¾ç½®è¾“出目录
        String outputDir = "D:\\code\\idea\\doumee_code\\server\\src\\main\\java\\com\\testcom"; // è¾“出的代码文件夹路径
        String baseName = entityName.substring(0, 1).toUpperCase() + entityName.substring(1);
        // åˆ›å»º Velocity ä¸Šä¸‹æ–‡
        Map<String,String> pack = new HashMap<>();
        pack.put("Base",packName);
        pack.put("Entity",packName+".dao.businees.model");
        pack.put("Controller",packName+".api.businees");
        pack.put("Mapper",packName+".dao.businees");
        pack.put("Service",packName+".service.businees");
        pack.put("ServiceImpl",packName+".service.businees.impl");
        VelocityContext context = new VelocityContext();
        context.put("package",pack); // è®¾ç½®åŒ…路径
        context.put("entityName", baseName);
        context.put("entityNameLower", entityName);
        context.put("entityNameLowerFull", entityName.toLowerCase());
        context.put("tableName", tableName);
        context.put("tableComment", tableComment);
        context.put("columns", columns);
        context.put("nowDate", DateUtil.getPlusTime2(new Date()));
        // ç”Ÿæˆ Entity æ–‡ä»¶
        generateFile(velocityEngine, context,  "entity.vm", baseName, outputDir + "/dao/businees/model/" , ".java");
        // ç”Ÿæˆ Mapper æ–‡ä»¶
        generateFile(velocityEngine, context,  "mapper.vm",  baseName, outputDir + "/dao/businees/" , "Mapper.java");
        // ç”Ÿæˆ Service æŽ¥å£æ–‡ä»¶
        generateFile(velocityEngine, context,  "service.vm",  baseName, outputDir + "/service/businees/" , "Service.java");
        // ç”Ÿæˆ ServiceImpl æ–‡ä»¶
        generateFile(velocityEngine, context,  "serviceImpl.vm",  baseName, outputDir + "/service/businees/impl/" , "ServiceImpl.java");
        // ç”Ÿæˆ Controller æ–‡ä»¶
        generateFile(velocityEngine, context,  "controller.vm",  baseName, outputDir + "/api/businees/", "Controller.java");
    }
    private static void generateFile(VelocityEngine velocityEngine, VelocityContext context,  String templateName, String baseName,String outputFilePath,String endName)  {
        // èŽ·å–æ¨¡æ¿
        File file = new File(outputFilePath);
        if(!file.isDirectory()){
            file.mkdirs();
        }
        System.out.println(file.isFile());
        Template template = velocityEngine.getTemplate(  "templates/"+templateName);
        // åˆ›å»ºæ–‡ä»¶è¾“出流
        try{
            File f = new File(outputFilePath+baseName+endName);
            if(f.isFile()){
                f.delete();
            }
            f.createNewFile();
            // å°†ä¸Šä¸‹æ–‡æ•°æ®æ¸²æŸ“到模板中
            FileWriter writer = new FileWriter(outputFilePath+baseName+endName);
            template.merge(context, writer);
            writer.flush();
            writer.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
server/dmmall_service/src/main/resources/templates/controller.vm
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,85 @@
package ${package.Controller};
import ${package.Base}.core.annotation.excel.ExcelExporter;
import ${package.Base}.core.annotation.pr.PreventRepeat;
import ${package.Base}.core.model.ApiResponse;
import ${package.Base}.core.model.PageData;
import ${package.Base}.core.model.PageWrap;
import ${package.Entity}.${entityName};
import ${package.Base}.core.utils.Utils;
import ${package.Service}.${entityName}Service;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
import  ${package.Base}.api.BaseController;
/**
 * ${tableComment}Controller定义
 * @author doumee
 * @date ${nowDate}
 */
@Api(tags = "tableName接口")
@RestController
@RequestMapping("/business/${entityNameLower}")
public class ${entityName}Controller extends BaseController {
    @Autowired
    private ${entityName}Service ${entityNameLower}Service;
    @PreventRepeat
    @ApiOperation("新建")
    @PostMapping("/create")
    @RequiresPermissions("business:${entityNameLowerFull}:create")
    public ApiResponse create(@RequestBody ${entityName} ${entityNameLower}) {
        return ApiResponse.success(${entityNameLower}Service.create(${entityNameLower}));
    }
    @ApiOperation("根据ID删除")
    @GetMapping("/delete/{id}")
    @RequiresPermissions("business:${entityNameLowerFull}:delete")
    public ApiResponse deleteById(@PathVariable Integer id) {
        ${entityNameLower}Service.deleteById(id);
        return ApiResponse.success(null);
    }
    @ApiOperation("批量删除")
    @GetMapping("/delete/batch")
    @RequiresPermissions("business:${entityNameLowerFull}:delete")
    public ApiResponse deleteByIdInBatch(@RequestParam String ids) {
        ${entityNameLower}Service.deleteByIdInBatch(this.getIdList(ids));
        return ApiResponse.success(null);
    }
    @ApiOperation("根据ID修改")
    @PostMapping("/updateById")
    @RequiresPermissions("business:${entityNameLowerFull}:update")
    public ApiResponse updateById(@RequestBody ${entityName} ${entityNameLower}) {
        ${entityNameLower}Service.updateById(${entityNameLower});
        return ApiResponse.success(null);
    }
    @ApiOperation("分页查询")
    @PostMapping("/page")
    @RequiresPermissions("business:${entityNameLowerFull}:query")
    public ApiResponse<PageData<${entityName}>> findPage (@RequestBody PageWrap<${entityName}> pageWrap) {
        return ApiResponse.success(${entityNameLower}Service.findPage(pageWrap));
    }
    @ApiOperation("导出Excel")
    @PostMapping("/exportExcel")
    @RequiresPermissions("business:${entityNameLowerFull}:exportExcel")
    public void exportExcel (@RequestBody PageWrap<${entityName}> pageWrap, HttpServletResponse response) {
        ExcelExporter.build(${entityName}.class).export(${entityNameLower}Service.findPage(pageWrap).getRecords(), "月台_作业操作历史表", response);
    }
    @ApiOperation("根据ID查询")
    @GetMapping("/{id}")
    @RequiresPermissions("business:${entityNameLowerFull}:query")
    public ApiResponse findById(@PathVariable Integer id) {
        return ApiResponse.success(${entityNameLower}Service.findById(id));
    }
}
server/dmmall_service/src/main/resources/templates/entity.vm
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,32 @@
package ${package.Entity};
import com.baomidou.mybatisplus.annotation.TableField;
import com.doumee.core.annotation.excel.ExcelColumn;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import com.fasterxml.jackson.annotation.JsonFormat;
import java.util.Date;
import java.math.BigDecimal;
/**
 * ${tableComment}Model定义
 * @author doumee
 * @date ${nowDate}
 */
@Data
@TableName("${tableName}")
@ApiModel(value = "${entityName} å®žä½“ç±»")
public class ${entityName}  {
#foreach ($column in $columns)
    @ApiModelProperty("${column.comment}")
    @ExcelColumn(name="${column.comment}",index=${column.index} ,width=10)
    #if(${column.auto}=='1' and (${column.javaType}=='Integer' or ${column.javaType}=='Long') )
    @TableId(type = IdType.AUTO)
    #end
    private ${column.javaType} ${column.javaName};
#end
}
server/dmmall_service/src/main/resources/templates/mapper.vm
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,12 @@
package ${package.Mapper};
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import ${package.Entity}.${entityName};
import com.github.yulichang.base.MPJBaseMapper;
/**
 * ${tableComment}Mapper定义
 * @author doumee
 * @date ${nowDate}
 */
public interface ${entityName}Mapper extends MPJBaseMapper<${entityName}> {
}
server/dmmall_service/src/main/resources/templates/service.vm
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,97 @@
package ${package.Service};
import ${package.Base}.core.model.PageData;
import ${package.Base}.core.model.PageWrap;
import ${package.Entity}.${entityName};
import java.util.List;
/**
 * ${tableComment}Service定义
 * @author doumee
 * @date ${nowDate}
 */
public interface ${entityName}Service {
    /**
     * åˆ›å»º
     *
     * @param model å®žä½“对象
     * @return Integer
     */
    Integer create(${entityName} model);
    /**
     * ä¸»é”®åˆ é™¤
     *
     * @param id ä¸»é”®
     */
    void deleteById(Integer id);
    /**
     * åˆ é™¤
     *
     * @param model å®žä½“对象
     */
    void delete(${entityName} model);
    /**
     * æ‰¹é‡ä¸»é”®åˆ é™¤
     *
     * @param ids ä¸»é”®é›†
     */
    void deleteByIdInBatch(List<Integer> ids);
    /**
     * ä¸»é”®æ›´æ–°
     *
     * @param model å®žä½“对象
     */
    void updateById(${entityName} model);
    /**
     * æ‰¹é‡ä¸»é”®æ›´æ–°
     *
     * @param model å®žä½“集
     */
    void updateByIdInBatch(List<${entityName}> model);
    /**
     * ä¸»é”®æŸ¥è¯¢
     *
     * @param id ä¸»é”®
     * @return model
     */
    ${entityName} findById(Integer id);
    /**
     * æ¡ä»¶æŸ¥è¯¢å•条记录
     *
     * @param model å®žä½“对象
     * @return ${entityName}
     */
    ${entityName} findOne(${entityName} model);
    /**
     * æ¡ä»¶æŸ¥è¯¢
     *
     * @param model å®žä½“对象
     * @return List<${entityName}>
     */
    List<${entityName}> findList(${entityName} model);
    /**
     * åˆ†é¡µæŸ¥è¯¢
     *
     * @param pageWrap åˆ†é¡µå¯¹è±¡
     * @return PageData<${entityName}>
     */
    PageData<${entityName}> findPage(PageWrap<${entityName}> pageWrap);
    /**
     * æ¡ä»¶ç»Ÿè®¡
     *
     * @param model å®žä½“对象
     * @return long
     */
    long count(${entityName} model);
}
server/dmmall_service/src/main/resources/templates/serviceImpl.vm
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,118 @@
package ${package.ServiceImpl};
import ${package.Base}.core.model.PageData;
import ${package.Base}.core.model.PageWrap;
import ${package.Entity}.${entityName};
import ${package.Base}.core.utils.Utils;
import ${package.Mapper}.${entityName}Mapper;
import ${package.Service}.${entityName}Service;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import java.util.List;
/**
 * ${tableComment}Service实现
 * @author doumee
 * @date ${nowDate}
 */
@Service
public class ${entityName}ServiceImpl implements ${entityName}Service {
    @Autowired
    private ${entityName}Mapper ${entityNameLower}Mapper;
    @Override
    public Integer create(${entityName} ${entityNameLower}) {
        ${entityNameLower}Mapper.insert(${entityNameLower});
        return ${entityNameLower}.getId();
    }
    @Override
    public void deleteById(Integer id) {
        ${entityNameLower}Mapper.deleteById(id);
    }
    @Override
    public void delete(${entityName} ${entityNameLower}) {
        UpdateWrapper<${entityName}> deleteWrapper = new UpdateWrapper<>(${entityNameLower});
        ${entityNameLower}Mapper.delete(deleteWrapper);
    }
    @Override
    public void deleteByIdInBatch(List<Integer> ids) {
        if (CollectionUtils.isEmpty(ids)) {
            return;
        }
        ${entityNameLower}Mapper.deleteBatchIds(ids);
    }
    @Override
    public void updateById(${entityName} ${entityNameLower}) {
        ${entityNameLower}Mapper.updateById(${entityNameLower});
    }
    @Override
    public void updateByIdInBatch(List<${entityName}> ${entityNameLower}s) {
        if (CollectionUtils.isEmpty(${entityNameLower}s)) {
            return;
        }
        for (${entityName} ${entityNameLower}: ${entityNameLower}s) {
            this.updateById(${entityNameLower});
        }
    }
    @Override
    public ${entityName} findById(Integer id) {
        return ${entityNameLower}Mapper.selectById(id);
    }
    @Override
    public ${entityName} findOne(${entityName} ${entityNameLower}) {
        QueryWrapper<${entityName}> wrapper = new QueryWrapper<>(${entityNameLower}).last("limit 1");
        return ${entityNameLower}Mapper.selectOne(wrapper);
    }
    @Override
    public List<${entityName}> findList(${entityName} ${entityNameLower}) {
        QueryWrapper<${entityName}> wrapper = new QueryWrapper<>(${entityNameLower});
        return ${entityNameLower}Mapper.selectList(wrapper);
    }
    @Override
    public PageData<${entityName}> findPage(PageWrap<${entityName}> pageWrap) {
        IPage<${entityName}> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity());
        QueryWrapper<${entityName}> queryWrapper = new QueryWrapper<>();
        Utils.MP.blankToNull(pageWrap.getModel());
        #foreach ($column in $columns)
            #if(${column.javaType} !='Date')
               queryWrapper.lambda().eq(pageWrap.getModel().get${column.getJavaName}() != null,${entityName}::get${column.getJavaName}, pageWrap.getModel().get${column.getJavaName}());
            #end
            #if(${column.javaType} =='Date')
             if (pageWrap.getModel().getId() != null) {
                  queryWrapper.lambda().ge(${entityName}::get${column.getJavaName}, Utils.Date.getStart(pageWrap.getModel().get${column.getJavaName}()));
                  queryWrapper.lambda().le(${entityName}::get${column.getJavaName}, Utils.Date.getEnd(pageWrap.getModel().get${column.getJavaName}()));
             }
            #end
        #end
        for(PageWrap.SortData sortData: pageWrap.getSorts()) {
            if (sortData.getDirection().equalsIgnoreCase(PageWrap.DESC)) {
                queryWrapper.orderByDesc(sortData.getProperty());
            } else {
                queryWrapper.orderByAsc(sortData.getProperty());
            }
        }
        return PageData.from(${entityNameLower}Mapper.selectPage(page, queryWrapper));
    }
    @Override
    public long count(${entityName} ${entityNameLower}) {
        QueryWrapper<${entityName}> wrapper = new QueryWrapper<>(${entityNameLower});
        return ${entityNameLower}Mapper.selectCount(wrapper);
    }
}
server/pom.xml
@@ -92,6 +92,16 @@
    </dependency>
    <!-- è¿žæŽ¥æ±  -->
    <dependency>
      <groupId>com.baomidou</groupId>
      <artifactId>mybatis-plus-generator</artifactId>
      <version>3.5.3.1</version>
    </dependency>
    <dependency>
      <groupId>org.apache.velocity</groupId>
      <artifactId>velocity-engine-core</artifactId>
      <version>2.3</version>
    </dependency>
    <dependency>
      <groupId>com.alibaba</groupId>
      <artifactId>druid</artifactId>
      <version>${druid.version}</version>