Feat: haoka init demo

This commit is contained in:
Owen 2024-12-10 15:00:45 +08:00
parent 14a926b435
commit cbc1b5cec6
16 changed files with 584 additions and 65 deletions

View File

@ -15,6 +15,7 @@
<!-- 各种 module 拓展 -->
<module>yudao-module-system</module>
<module>yudao-module-infra</module>
<module>yudao-module-haoka</module>
<!-- <module>yudao-module-member</module>-->
<!-- <module>yudao-module-bpm</module>-->
<!-- <module>yudao-module-report</module>-->

View File

@ -0,0 +1,22 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>cn.iocoder.boot</groupId>
<artifactId>yudao</artifactId>
<version>${revision}</version>
</parent>
<artifactId>yudao-module-haoka</artifactId>
<packaging>pom</packaging>
<name>${project.artifactId}</name>
<description>
haoka 模块,主要实现 haoka 等功能。
</description>
<modules>
<module>yudao-module-haoka-api</module>
<module>yudao-module-haoka-biz</module>
</modules>
</project>

View File

@ -0,0 +1,26 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>cn.iocoder.boot</groupId>
<artifactId>yudao-module-haoka</artifactId>
<version>${revision}</version>
</parent>
<artifactId>yudao-module-haoka-api</artifactId>
<packaging>jar</packaging>
<name>${project.artifactId}</name>
<description> <!-- 4. 新增 description 为该模块的描述 -->
haoka api 模块 API暴露给其它模块调用
</description>
<dependencies>
<dependency>
<groupId>cn.iocoder.boot</groupId>
<artifactId>yudao-common</artifactId>
</dependency>
</dependencies>
</project>

View File

@ -0,0 +1,14 @@
package cn.iocoder.yudao.module.haoka.enums;
import cn.iocoder.yudao.framework.common.exception.ErrorCode;
/**
* haoka 错误码枚举类
* <p>
* haoka 系统使用 1-910-000-000
*/
public interface ErrorCodeConstants {
// ========== Demo 1_910_001_000 ==========
ErrorCode DEMO_NOT_EXISTS = new ErrorCode(1_910_001_001, "好卡案例不存在");
}

View File

@ -0,0 +1,52 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>cn.iocoder.boot</groupId>
<artifactId>yudao-module-haoka</artifactId>
<version>${revision}</version>
</parent>
<packaging>jar</packaging>
<artifactId>yudao-module-haoka-biz</artifactId>
<name>${project.artifactId}</name>
<description>
haoka biz 模块主要实现haoka 等功能。
</description>
<dependencies> <!-- 5. 新增依赖,这里引入的都是比较常用的业务组件、技术组件 -->
<dependency>
<groupId>cn.iocoder.boot</groupId>
<artifactId>yudao-module-haoka-api</artifactId>
<version>${revision}</version>
</dependency>
<!-- Web 相关 -->
<dependency>
<groupId>cn.iocoder.boot</groupId>
<artifactId>yudao-spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>cn.iocoder.boot</groupId>
<artifactId>yudao-spring-boot-starter-security</artifactId>
</dependency>
<!-- DB 相关 -->
<dependency>
<groupId>cn.iocoder.boot</groupId>
<artifactId>yudao-spring-boot-starter-mybatis</artifactId>
</dependency>
<!-- Test 测试相关 -->
<dependency>
<groupId>cn.iocoder.boot</groupId>
<artifactId>yudao-spring-boot-starter-test</artifactId>
</dependency>
<dependency>
<groupId>cn.iocoder.boot</groupId>
<artifactId>yudao-spring-boot-starter-excel</artifactId>
</dependency>
</dependencies>
</project>

View File

@ -0,0 +1,93 @@
package cn.iocoder.yudao.module.haoka.controller.admin.demo;
import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog;
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
import cn.iocoder.yudao.framework.common.pojo.PageParam;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
import cn.iocoder.yudao.module.haoka.controller.admin.demo.vo.DemoPageReqVO;
import cn.iocoder.yudao.module.haoka.controller.admin.demo.vo.DemoRespVO;
import cn.iocoder.yudao.module.haoka.controller.admin.demo.vo.DemoSaveReqVO;
import cn.iocoder.yudao.module.haoka.dal.dataobject.demo.DemoDO;
import cn.iocoder.yudao.module.haoka.service.demo.DemoService;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.annotation.Resource;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.validation.Valid;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.io.IOException;
import java.util.List;
import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.EXPORT;
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
@Tag(name = "管理后台 - 好卡案例")
@RestController
@RequestMapping("/haoka/demo")
@Validated
public class DemoController {
@Resource
private DemoService demoService;
@PostMapping("/create")
@Operation(summary = "创建好卡案例")
@PreAuthorize("@ss.hasPermission('haoka:demo:create')")
public CommonResult<Long> createDemo(@Valid @RequestBody DemoSaveReqVO createReqVO) {
return success(demoService.createDemo(createReqVO));
}
@PutMapping("/update")
@Operation(summary = "更新好卡案例")
@PreAuthorize("@ss.hasPermission('haoka:demo:update')")
public CommonResult<Boolean> updateDemo(@Valid @RequestBody DemoSaveReqVO updateReqVO) {
demoService.updateDemo(updateReqVO);
return success(true);
}
@DeleteMapping("/delete")
@Operation(summary = "删除好卡案例")
@Parameter(name = "id", description = "编号", required = true)
@PreAuthorize("@ss.hasPermission('haoka:demo:delete')")
public CommonResult<Boolean> deleteDemo(@RequestParam("id") Long id) {
demoService.deleteDemo(id);
return success(true);
}
@GetMapping("/get")
@Operation(summary = "获得好卡案例")
@Parameter(name = "id", description = "编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('haoka:demo:query')")
public CommonResult<DemoRespVO> getDemo(@RequestParam("id") Long id) {
DemoDO demo = demoService.getDemo(id);
return success(BeanUtils.toBean(demo, DemoRespVO.class));
}
@GetMapping("/page")
@Operation(summary = "获得好卡案例分页")
@PreAuthorize("@ss.hasPermission('haoka:demo:query')")
public CommonResult<PageResult<DemoRespVO>> getDemoPage(@Valid DemoPageReqVO pageReqVO) {
PageResult<DemoDO> pageResult = demoService.getDemoPage(pageReqVO);
return success(BeanUtils.toBean(pageResult, DemoRespVO.class));
}
@GetMapping("/export-excel")
@Operation(summary = "导出好卡案例 Excel")
@PreAuthorize("@ss.hasPermission('haoka:demo:export')")
@ApiAccessLog(operateType = EXPORT)
public void exportDemoExcel(@Valid DemoPageReqVO pageReqVO,
HttpServletResponse response) throws IOException {
pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
List<DemoDO> list = demoService.getDemoPage(pageReqVO).getList();
// 导出 Excel
ExcelUtils.write(response, "好卡案例.xls", "数据", DemoRespVO.class,
BeanUtils.toBean(list, DemoRespVO.class));
}
}

View File

@ -0,0 +1,33 @@
package cn.iocoder.yudao.module.haoka.controller.admin.demo.vo;
import cn.iocoder.yudao.framework.common.pojo.PageParam;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.ToString;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;
import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
@Schema(description = "管理后台 - 好卡案例分页 Request VO")
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
public class DemoPageReqVO extends PageParam {
@Schema(description = "名字", example = "芋艿")
private String name;
@Schema(description = "年龄")
private Integer age;
@Schema(description = "性别")
private Integer agent;
@Schema(description = "创建时间")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime[] createTime;
}

View File

@ -0,0 +1,35 @@
package cn.iocoder.yudao.module.haoka.controller.admin.demo.vo;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.time.LocalDateTime;
@Schema(description = "管理后台 - 好卡案例 Response VO")
@Data
@ExcelIgnoreUnannotated
public class DemoRespVO {
@Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "21448")
@ExcelProperty("编号")
private Long id;
@Schema(description = "名字", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋艿")
@ExcelProperty("名字")
private String name;
@Schema(description = "年龄", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("年龄")
private Integer age;
@Schema(description = "性别", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("性别")
private Integer agent;
@Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("创建时间")
private LocalDateTime createTime;
}

View File

@ -0,0 +1,27 @@
package cn.iocoder.yudao.module.haoka.controller.admin.demo.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotEmpty;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
@Schema(description = "管理后台 - 好卡案例新增/修改 Request VO")
@Data
public class DemoSaveReqVO {
@Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "21448")
private Long id;
@Schema(description = "名字", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋艿")
@NotEmpty(message = "名字不能为空")
private String name;
@Schema(description = "年龄", requiredMode = Schema.RequiredMode.REQUIRED)
@NotNull(message = "年龄不能为空")
private Integer age;
@Schema(description = "性别", requiredMode = Schema.RequiredMode.REQUIRED)
@NotNull(message = "性别不能为空")
private Integer agent;
}

View File

@ -0,0 +1,42 @@
package cn.iocoder.yudao.module.haoka.dal.dataobject.demo;
import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
import com.baomidou.mybatisplus.annotation.KeySequence;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.*;
/**
* 好卡案例 DO
*
* @author 芋道源码
*/
@TableName("haoka_demo")
@KeySequence("haoka_demo_seq") // 用于 OraclePostgreSQLKingbaseDB2H2 数据库的主键自增如果是 MySQL 等数据库可不写
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class DemoDO extends BaseDO {
/**
* 编号
*/
@TableId
private Long id;
/**
* 名字
*/
private String name;
/**
* 年龄
*/
private Integer age;
/**
* 性别
*/
private Integer agent;
}

View File

@ -0,0 +1,27 @@
package cn.iocoder.yudao.module.haoka.dal.mysql.demo;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
import cn.iocoder.yudao.module.haoka.controller.admin.demo.vo.DemoPageReqVO;
import cn.iocoder.yudao.module.haoka.dal.dataobject.demo.DemoDO;
import org.apache.ibatis.annotations.Mapper;
/**
* 好卡案例 Mapper
*
* @author 芋道源码
*/
@Mapper
public interface DemoMapper extends BaseMapperX<DemoDO> {
default PageResult<DemoDO> selectPage(DemoPageReqVO reqVO) {
return selectPage(reqVO, new LambdaQueryWrapperX<DemoDO>()
.likeIfPresent(DemoDO::getName, reqVO.getName())
.eqIfPresent(DemoDO::getAge, reqVO.getAge())
.eqIfPresent(DemoDO::getAgent, reqVO.getAgent())
.betweenIfPresent(DemoDO::getCreateTime, reqVO.getCreateTime())
.orderByDesc(DemoDO::getId));
}
}

View File

@ -0,0 +1,4 @@
/**
* haoka system
*/
package cn.iocoder.yudao.module.haoka;

View File

@ -0,0 +1,54 @@
package cn.iocoder.yudao.module.haoka.service.demo;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.module.haoka.controller.admin.demo.vo.DemoPageReqVO;
import cn.iocoder.yudao.module.haoka.controller.admin.demo.vo.DemoSaveReqVO;
import cn.iocoder.yudao.module.haoka.dal.dataobject.demo.DemoDO;
import jakarta.validation.Valid;
/**
* 好卡案例 Service 接口
*
* @author 芋道源码
*/
public interface DemoService {
/**
* 创建好卡案例
*
* @param createReqVO 创建信息
* @return 编号
*/
Long createDemo(@Valid DemoSaveReqVO createReqVO);
/**
* 更新好卡案例
*
* @param updateReqVO 更新信息
*/
void updateDemo(@Valid DemoSaveReqVO updateReqVO);
/**
* 删除好卡案例
*
* @param id 编号
*/
void deleteDemo(Long id);
/**
* 获得好卡案例
*
* @param id 编号
* @return 好卡案例
*/
DemoDO getDemo(Long id);
/**
* 获得好卡案例分页
*
* @param pageReqVO 分页查询
* @return 好卡案例分页
*/
PageResult<DemoDO> getDemoPage(DemoPageReqVO pageReqVO);
}

View File

@ -0,0 +1,70 @@
package cn.iocoder.yudao.module.haoka.service.demo;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import cn.iocoder.yudao.module.haoka.controller.admin.demo.vo.DemoPageReqVO;
import cn.iocoder.yudao.module.haoka.controller.admin.demo.vo.DemoSaveReqVO;
import cn.iocoder.yudao.module.haoka.dal.dataobject.demo.DemoDO;
import cn.iocoder.yudao.module.haoka.dal.mysql.demo.DemoMapper;
import jakarta.annotation.Resource;
import org.springframework.stereotype.Service;
import org.springframework.validation.annotation.Validated;
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
import static cn.iocoder.yudao.module.haoka.enums.ErrorCodeConstants.DEMO_NOT_EXISTS;
/**
* 好卡案例 Service 实现类
*
* @author 芋道源码
*/
@Service
@Validated
public class DemoServiceImpl implements DemoService {
@Resource
private DemoMapper demoMapper;
@Override
public Long createDemo(DemoSaveReqVO createReqVO) {
// 插入
DemoDO demo = BeanUtils.toBean(createReqVO, DemoDO.class);
demoMapper.insert(demo);
// 返回
return demo.getId();
}
@Override
public void updateDemo(DemoSaveReqVO updateReqVO) {
// 校验存在
validateDemoExists(updateReqVO.getId());
// 更新
DemoDO updateObj = BeanUtils.toBean(updateReqVO, DemoDO.class);
demoMapper.updateById(updateObj);
}
@Override
public void deleteDemo(Long id) {
// 校验存在
validateDemoExists(id);
// 删除
demoMapper.deleteById(id);
}
private void validateDemoExists(Long id) {
if (demoMapper.selectById(id) == null) {
throw exception(DEMO_NOT_EXISTS);
}
}
@Override
public DemoDO getDemo(Long id) {
return demoMapper.selectById(id);
}
@Override
public PageResult<DemoDO> getDemoPage(DemoPageReqVO pageReqVO) {
return demoMapper.selectPage(pageReqVO);
}
}

View File

@ -0,0 +1,12 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.iocoder.yudao.module.haoka.dal.mysql.demo.DemoMapper">
<!--
一般情况下,尽可能使用 Mapper 进行 CRUD 增删改查即可。
无法满足的场景,例如说多表关联查询,才使用 XML 编写 SQL。
代码生成器暂时只生成 Mapper XML 文件本身,更多推荐 MybatisX 快速开发插件来生成查询。
文档可见https://www.iocoder.cn/MyBatis/x-plugins/
-->
</mapper>

View File

@ -33,87 +33,94 @@
</dependency>
<!-- 会员中心。默认注释,保证编译速度 -->
<!-- <dependency>-->
<!-- <groupId>cn.iocoder.boot</groupId>-->
<!-- <artifactId>yudao-module-member-biz</artifactId>-->
<!-- <version>${revision}</version>-->
<!-- </dependency>-->
<!-- <dependency>-->
<!-- <groupId>cn.iocoder.boot</groupId>-->
<!-- <artifactId>yudao-module-member-biz</artifactId>-->
<!-- <version>${revision}</version>-->
<!-- </dependency>-->
<!-- 数据报表。默认注释,保证编译速度 -->
<!-- <dependency>-->
<!-- <groupId>cn.iocoder.boot</groupId>-->
<!-- <artifactId>yudao-module-report-biz</artifactId>-->
<!-- <version>${revision}</version>-->
<!-- </dependency>-->
<!-- <dependency>-->
<!-- <groupId>cn.iocoder.boot</groupId>-->
<!-- <artifactId>yudao-module-report-biz</artifactId>-->
<!-- <version>${revision}</version>-->
<!-- </dependency>-->
<!-- 工作流。默认注释,保证编译速度 -->
<!-- <dependency>-->
<!-- <groupId>cn.iocoder.boot</groupId>-->
<!-- <artifactId>yudao-module-bpm-biz</artifactId>-->
<!-- <version>${revision}</version>-->
<!-- </dependency>-->
<!-- <dependency>-->
<!-- <groupId>cn.iocoder.boot</groupId>-->
<!-- <artifactId>yudao-module-bpm-biz</artifactId>-->
<!-- <version>${revision}</version>-->
<!-- </dependency>-->
<!-- 支付服务。默认注释,保证编译速度 -->
<!-- <dependency>-->
<!-- <groupId>cn.iocoder.boot</groupId>-->
<!-- <artifactId>yudao-module-pay-biz</artifactId>-->
<!-- <version>${revision}</version>-->
<!-- </dependency>-->
<!-- <dependency>-->
<!-- <groupId>cn.iocoder.boot</groupId>-->
<!-- <artifactId>yudao-module-pay-biz</artifactId>-->
<!-- <version>${revision}</version>-->
<!-- </dependency>-->
<!-- 微信公众号模块。默认注释,保证编译速度 -->
<!-- <dependency>-->
<!-- <groupId>cn.iocoder.boot</groupId>-->
<!-- <artifactId>yudao-module-mp-biz</artifactId>-->
<!-- <version>${revision}</version>-->
<!-- </dependency>-->
<!-- <dependency>-->
<!-- <groupId>cn.iocoder.boot</groupId>-->
<!-- <artifactId>yudao-module-mp-biz</artifactId>-->
<!-- <version>${revision}</version>-->
<!-- </dependency>-->
<!-- 商城相关模块。默认注释,保证编译速度-->
<!-- <dependency>-->
<!-- <groupId>cn.iocoder.boot</groupId>-->
<!-- <artifactId>yudao-module-promotion-biz</artifactId>-->
<!-- <version>${revision}</version>-->
<!-- </dependency>-->
<!-- <dependency>-->
<!-- <groupId>cn.iocoder.boot</groupId>-->
<!-- <artifactId>yudao-module-product-biz</artifactId>-->
<!-- <version>${revision}</version>-->
<!-- </dependency>-->
<!-- <dependency>-->
<!-- <groupId>cn.iocoder.boot</groupId>-->
<!-- <artifactId>yudao-module-trade-biz</artifactId>-->
<!-- <version>${revision}</version>-->
<!-- </dependency>-->
<!-- <dependency>-->
<!-- <groupId>cn.iocoder.boot</groupId>-->
<!-- <artifactId>yudao-module-statistics-biz</artifactId>-->
<!-- <version>${revision}</version>-->
<!-- </dependency>-->
<!-- <dependency>-->
<!-- <groupId>cn.iocoder.boot</groupId>-->
<!-- <artifactId>yudao-module-promotion-biz</artifactId>-->
<!-- <version>${revision}</version>-->
<!-- </dependency>-->
<!-- <dependency>-->
<!-- <groupId>cn.iocoder.boot</groupId>-->
<!-- <artifactId>yudao-module-product-biz</artifactId>-->
<!-- <version>${revision}</version>-->
<!-- </dependency>-->
<!-- <dependency>-->
<!-- <groupId>cn.iocoder.boot</groupId>-->
<!-- <artifactId>yudao-module-trade-biz</artifactId>-->
<!-- <version>${revision}</version>-->
<!-- </dependency>-->
<!-- <dependency>-->
<!-- <groupId>cn.iocoder.boot</groupId>-->
<!-- <artifactId>yudao-module-statistics-biz</artifactId>-->
<!-- <version>${revision}</version>-->
<!-- </dependency>-->
<!-- CRM 相关模块。默认注释,保证编译速度 -->
<!-- <dependency>-->
<!-- <groupId>cn.iocoder.boot</groupId>-->
<!-- <artifactId>yudao-module-crm-biz</artifactId>-->
<!-- <version>${revision}</version>-->
<!-- </dependency>-->
<!-- <dependency>-->
<!-- <groupId>cn.iocoder.boot</groupId>-->
<!-- <artifactId>yudao-module-crm-biz</artifactId>-->
<!-- <version>${revision}</version>-->
<!-- </dependency>-->
<!-- ERP 相关模块。默认注释,保证编译速度 -->
<!-- <dependency>-->
<!-- <groupId>cn.iocoder.boot</groupId>-->
<!-- <artifactId>yudao-module-erp-biz</artifactId>-->
<!-- <version>${revision}</version>-->
<!-- </dependency>-->
<!-- <dependency>-->
<!-- <groupId>cn.iocoder.boot</groupId>-->
<!-- <artifactId>yudao-module-erp-biz</artifactId>-->
<!-- <version>${revision}</version>-->
<!-- </dependency>-->
<!-- AI 大模型相关模块。默认注释,保证编译速度 -->
<!-- <dependency>-->
<!-- <groupId>cn.iocoder.boot</groupId>-->
<!-- <artifactId>yudao-module-ai-biz</artifactId>-->
<!-- <version>${revision}</version>-->
<!-- </dependency>-->
<!-- <dependency>-->
<!-- <groupId>cn.iocoder.boot</groupId>-->
<!-- <artifactId>yudao-module-ai-biz</artifactId>-->
<!-- <version>${revision}</version>-->
<!-- </dependency>-->
<!-- IoT 物联网相关模块。默认注释,保证编译速度 -->
<!-- <dependency>-->
<!-- <groupId>cn.iocoder.boot</groupId>-->
<!-- <artifactId>yudao-module-iot-biz</artifactId>-->
<!-- <version>${revision}</version>-->
<!-- </dependency>-->
<!-- <dependency>-->
<!-- <groupId>cn.iocoder.boot</groupId>-->
<!-- <artifactId>yudao-module-iot-biz</artifactId>-->
<!-- <version>${revision}</version>-->
<!-- </dependency>-->
<!-- 好卡模块-->
<dependency>
<groupId>cn.iocoder.boot</groupId>
<artifactId>yudao-module-haoka-biz</artifactId>
<version>${revision}</version>
</dependency>
<!-- spring boot 配置所需依赖 -->
<dependency>