From cef84284bb62a90a8e3bb7e80d43dcb14a75eb8c Mon Sep 17 00:00:00 2001 From: dy <2389062315@qq.com> Date: Thu, 14 Aug 2025 09:16:19 +0800 Subject: [PATCH 01/68] =?UTF-8?q?=E6=8E=92=E7=8F=AD=E5=8C=BA=E5=9F=9F?= =?UTF-8?q?=E7=AE=A1=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/AttendanceAreaController.java | 106 ++++++++++++++ .../property/domain/AttendanceArea.java | 46 ++++++ .../property/domain/bo/AttendanceAreaBo.java | 45 ++++++ .../property/domain/vo/AttendanceAreaVo.java | 56 ++++++++ .../property/mapper/AttendanceAreaMapper.java | 15 ++ .../service/IAttendanceAreaService.java | 69 +++++++++ .../impl/AttendanceAreaServiceImpl.java | 134 ++++++++++++++++++ script/config/nacos/datasource.yml | 2 +- 8 files changed, 472 insertions(+), 1 deletion(-) create mode 100644 ruoyi-modules/Property/src/main/java/org/dromara/property/controller/AttendanceAreaController.java create mode 100644 ruoyi-modules/Property/src/main/java/org/dromara/property/domain/AttendanceArea.java create mode 100644 ruoyi-modules/Property/src/main/java/org/dromara/property/domain/bo/AttendanceAreaBo.java create mode 100644 ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/AttendanceAreaVo.java create mode 100644 ruoyi-modules/Property/src/main/java/org/dromara/property/mapper/AttendanceAreaMapper.java create mode 100644 ruoyi-modules/Property/src/main/java/org/dromara/property/service/IAttendanceAreaService.java create mode 100644 ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/AttendanceAreaServiceImpl.java diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/controller/AttendanceAreaController.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/controller/AttendanceAreaController.java new file mode 100644 index 00000000..e8a851a7 --- /dev/null +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/controller/AttendanceAreaController.java @@ -0,0 +1,106 @@ +package org.dromara.property.controller; + +import java.util.List; + +import lombok.RequiredArgsConstructor; +import jakarta.servlet.http.HttpServletResponse; +import jakarta.validation.constraints.*; +import cn.dev33.satoken.annotation.SaCheckPermission; +import org.springframework.web.bind.annotation.*; +import org.springframework.validation.annotation.Validated; +import org.dromara.common.idempotent.annotation.RepeatSubmit; +import org.dromara.common.log.annotation.Log; +import org.dromara.common.web.core.BaseController; +import org.dromara.common.mybatis.core.page.PageQuery; +import org.dromara.common.core.domain.R; +import org.dromara.common.core.validate.AddGroup; +import org.dromara.common.core.validate.EditGroup; +import org.dromara.common.log.enums.BusinessType; +import org.dromara.common.excel.utils.ExcelUtil; +import org.dromara.property.domain.vo.AttendanceAreaVo; +import org.dromara.property.domain.bo.AttendanceAreaBo; +import org.dromara.property.service.IAttendanceAreaService; +import org.dromara.common.mybatis.core.page.TableDataInfo; + +/** + * 区域区域管理 + * 前端访问路由地址为:/property/attendanceArea + * + * @author LionLi + * @date 2025-08-13 + */ +@Validated +@RequiredArgsConstructor +@RestController +@RequestMapping("/attendanceArea") +public class AttendanceAreaController extends BaseController { + + private final IAttendanceAreaService attendanceAreaService; + + /** + * 查询区域区域管理列表 + */ + @SaCheckPermission("property:attendanceArea:list") + @GetMapping("/list") + public TableDataInfo list(AttendanceAreaBo bo, PageQuery pageQuery) { + return attendanceAreaService.queryPageList(bo, pageQuery); + } + + /** + * 导出区域区域管理列表 + */ + @SaCheckPermission("property:attendanceArea:export") + @Log(title = "区域区域管理", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(AttendanceAreaBo bo, HttpServletResponse response) { + List list = attendanceAreaService.queryList(bo); + ExcelUtil.exportExcel(list, "区域区域管理", AttendanceAreaVo.class, response); + } + + /** + * 获取区域区域管理详细信息 + * + * @param id 主键 + */ + @SaCheckPermission("property:attendanceArea:query") + @GetMapping("/{id}") + public R getInfo(@NotNull(message = "主键不能为空") + @PathVariable("id") Long id) { + return R.ok(attendanceAreaService.queryById(id)); + } + + /** + * 新增区域区域管理 + */ + @SaCheckPermission("property:attendanceArea:add") + @Log(title = "区域区域管理", businessType = BusinessType.INSERT) + @RepeatSubmit() + @PostMapping() + public R add(@Validated(AddGroup.class) @RequestBody AttendanceAreaBo bo) { + return toAjax(attendanceAreaService.insertByBo(bo)); + } + + /** + * 修改区域区域管理 + */ + @SaCheckPermission("property:attendanceArea:edit") + @Log(title = "区域区域管理", businessType = BusinessType.UPDATE) + @RepeatSubmit() + @PutMapping() + public R edit(@Validated(EditGroup.class) @RequestBody AttendanceAreaBo bo) { + return toAjax(attendanceAreaService.updateByBo(bo)); + } + + /** + * 删除区域区域管理 + * + * @param ids 主键串 + */ + @SaCheckPermission("property:attendanceArea:remove") + @Log(title = "区域区域管理", businessType = BusinessType.DELETE) + @DeleteMapping("/{ids}") + public R remove(@NotEmpty(message = "主键不能为空") + @PathVariable("ids") Long[] ids) { + return toAjax(attendanceAreaService.deleteWithValidByIds(List.of(ids), true)); + } +} diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/AttendanceArea.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/AttendanceArea.java new file mode 100644 index 00000000..12dd4157 --- /dev/null +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/AttendanceArea.java @@ -0,0 +1,46 @@ +package org.dromara.property.domain; + +import org.dromara.common.tenant.core.TenantEntity; +import com.baomidou.mybatisplus.annotation.*; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serial; + +/** + * 区域区域管理对象 attendance_area + * + * @author LionLi + * @date 2025-08-13 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("attendance_area") +public class AttendanceArea extends TenantEntity { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 主键id + */ + @TableId(value = "id") + private Long id; + + /** + * 摄像机id + */ + private Long deviceManageId; + + /** + * 区域 + */ + private String area; + + /** + * 备注 + */ + private String reamark; + + +} diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/bo/AttendanceAreaBo.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/bo/AttendanceAreaBo.java new file mode 100644 index 00000000..6f4b3039 --- /dev/null +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/bo/AttendanceAreaBo.java @@ -0,0 +1,45 @@ +package org.dromara.property.domain.bo; + +import org.dromara.property.domain.AttendanceArea; +import org.dromara.common.mybatis.core.domain.BaseEntity; +import org.dromara.common.core.validate.AddGroup; +import org.dromara.common.core.validate.EditGroup; +import io.github.linpeilie.annotations.AutoMapper; +import lombok.Data; +import lombok.EqualsAndHashCode; +import jakarta.validation.constraints.*; + +/** + * 区域区域管理业务对象 attendance_area + * + * @author LionLi + * @date 2025-08-13 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@AutoMapper(target = AttendanceArea.class, reverseConvertGenerate = false) +public class AttendanceAreaBo extends BaseEntity { + + /** + * 主键id + */ + @NotNull(message = "主键id不能为空", groups = { EditGroup.class }) + private Long id; + + /** + * 摄像机id + */ + private Long deviceManageId; + + /** + * 区域 + */ + private String area; + + /** + * 备注 + */ + private String reamark; + + +} diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/AttendanceAreaVo.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/AttendanceAreaVo.java new file mode 100644 index 00000000..6ae4d374 --- /dev/null +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/AttendanceAreaVo.java @@ -0,0 +1,56 @@ +package org.dromara.property.domain.vo; + +import org.dromara.property.domain.AttendanceArea; +import cn.idev.excel.annotation.ExcelIgnoreUnannotated; +import cn.idev.excel.annotation.ExcelProperty; +import org.dromara.common.excel.annotation.ExcelDictFormat; +import org.dromara.common.excel.convert.ExcelDictConvert; +import io.github.linpeilie.annotations.AutoMapper; +import lombok.Data; + +import java.io.Serial; +import java.io.Serializable; +import java.util.Date; + + + +/** + * 区域区域管理视图对象 attendance_area + * + * @author LionLi + * @date 2025-08-13 + */ +@Data +@ExcelIgnoreUnannotated +@AutoMapper(target = AttendanceArea.class) +public class AttendanceAreaVo implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 主键id + */ + @ExcelProperty(value = "主键id") + private Long id; + + /** + * 摄像机id + */ + @ExcelProperty(value = "摄像机id") + private Long deviceManageId; + + /** + * 区域 + */ + @ExcelProperty(value = "区域") + private String area; + + /** + * 备注 + */ + @ExcelProperty(value = "备注") + private String reamark; + + +} diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/mapper/AttendanceAreaMapper.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/mapper/AttendanceAreaMapper.java new file mode 100644 index 00000000..cd78801b --- /dev/null +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/mapper/AttendanceAreaMapper.java @@ -0,0 +1,15 @@ +package org.dromara.property.mapper; + +import org.dromara.property.domain.AttendanceArea; +import org.dromara.property.domain.vo.AttendanceAreaVo; +import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; + +/** + * 区域区域管理Mapper接口 + * + * @author LionLi + * @date 2025-08-13 + */ +public interface AttendanceAreaMapper extends BaseMapperPlus { + +} diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/service/IAttendanceAreaService.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/service/IAttendanceAreaService.java new file mode 100644 index 00000000..d832b9d1 --- /dev/null +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/service/IAttendanceAreaService.java @@ -0,0 +1,69 @@ +package org.dromara.property.service; + +import org.dromara.property.domain.AttendanceArea; +import org.dromara.property.domain.vo.AttendanceAreaVo; +import org.dromara.property.domain.bo.AttendanceAreaBo; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.common.mybatis.core.page.PageQuery; + +import java.util.Collection; +import java.util.List; + +/** + * 区域区域管理Service接口 + * + * @author LionLi + * @date 2025-08-13 + */ +public interface IAttendanceAreaService { + + /** + * 查询区域区域管理 + * + * @param id 主键 + * @return 区域区域管理 + */ + AttendanceAreaVo queryById(Long id); + + /** + * 分页查询区域区域管理列表 + * + * @param bo 查询条件 + * @param pageQuery 分页参数 + * @return 区域区域管理分页列表 + */ + TableDataInfo queryPageList(AttendanceAreaBo bo, PageQuery pageQuery); + + /** + * 查询符合条件的区域区域管理列表 + * + * @param bo 查询条件 + * @return 区域区域管理列表 + */ + List queryList(AttendanceAreaBo bo); + + /** + * 新增区域区域管理 + * + * @param bo 区域区域管理 + * @return 是否新增成功 + */ + Boolean insertByBo(AttendanceAreaBo bo); + + /** + * 修改区域区域管理 + * + * @param bo 区域区域管理 + * @return 是否修改成功 + */ + Boolean updateByBo(AttendanceAreaBo bo); + + /** + * 校验并批量删除区域区域管理信息 + * + * @param ids 待删除的主键集合 + * @param isValid 是否进行有效性校验 + * @return 是否删除成功 + */ + Boolean deleteWithValidByIds(Collection ids, Boolean isValid); +} diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/AttendanceAreaServiceImpl.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/AttendanceAreaServiceImpl.java new file mode 100644 index 00000000..e22440b7 --- /dev/null +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/AttendanceAreaServiceImpl.java @@ -0,0 +1,134 @@ +package org.dromara.property.service.impl; + +import org.dromara.common.core.utils.MapstructUtils; +import org.dromara.common.core.utils.StringUtils; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.common.mybatis.core.page.PageQuery; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.dromara.property.domain.bo.AttendanceAreaBo; +import org.dromara.property.domain.vo.AttendanceAreaVo; +import org.dromara.property.domain.AttendanceArea; +import org.dromara.property.mapper.AttendanceAreaMapper; +import org.dromara.property.service.IAttendanceAreaService; + +import java.util.List; +import java.util.Map; +import java.util.Collection; + +/** + * 区域区域管理Service业务层处理 + * + * @author LionLi + * @date 2025-08-13 + */ +@Slf4j +@RequiredArgsConstructor +@Service +public class AttendanceAreaServiceImpl implements IAttendanceAreaService { + + private final AttendanceAreaMapper baseMapper; + + /** + * 查询区域区域管理 + * + * @param id 主键 + * @return 区域区域管理 + */ + @Override + public AttendanceAreaVo queryById(Long id){ + return baseMapper.selectVoById(id); + } + + /** + * 分页查询区域区域管理列表 + * + * @param bo 查询条件 + * @param pageQuery 分页参数 + * @return 区域区域管理分页列表 + */ + @Override + public TableDataInfo queryPageList(AttendanceAreaBo bo, PageQuery pageQuery) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + Page result = baseMapper.selectVoPage(pageQuery.build(), lqw); + return TableDataInfo.build(result); + } + + /** + * 查询符合条件的区域区域管理列表 + * + * @param bo 查询条件 + * @return 区域区域管理列表 + */ + @Override + public List queryList(AttendanceAreaBo bo) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + return baseMapper.selectVoList(lqw); + } + + private LambdaQueryWrapper buildQueryWrapper(AttendanceAreaBo bo) { + Map params = bo.getParams(); + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.orderByAsc(AttendanceArea::getId); + lqw.eq(bo.getDeviceManageId() != null, AttendanceArea::getDeviceManageId, bo.getDeviceManageId()); + lqw.like(StringUtils.isNotBlank(bo.getArea()), AttendanceArea::getArea, bo.getArea()); + lqw.eq(StringUtils.isNotBlank(bo.getReamark()), AttendanceArea::getReamark, bo.getReamark()); + return lqw; + } + + /** + * 新增区域区域管理 + * + * @param bo 区域区域管理 + * @return 是否新增成功 + */ + @Override + public Boolean insertByBo(AttendanceAreaBo bo) { + AttendanceArea add = MapstructUtils.convert(bo, AttendanceArea.class); + validEntityBeforeSave(add); + boolean flag = baseMapper.insert(add) > 0; + if (flag) { + bo.setId(add.getId()); + } + return flag; + } + + /** + * 修改区域区域管理 + * + * @param bo 区域区域管理 + * @return 是否修改成功 + */ + @Override + public Boolean updateByBo(AttendanceAreaBo bo) { + AttendanceArea update = MapstructUtils.convert(bo, AttendanceArea.class); + validEntityBeforeSave(update); + return baseMapper.updateById(update) > 0; + } + + /** + * 保存前的数据校验 + */ + private void validEntityBeforeSave(AttendanceArea entity){ + //TODO 做一些数据校验,如唯一约束 + } + + /** + * 校验并批量删除区域区域管理信息 + * + * @param ids 待删除的主键集合 + * @param isValid 是否进行有效性校验 + * @return 是否删除成功 + */ + @Override + public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) { + if(isValid){ + //TODO 做一些业务上的校验,判断是否需要校验 + } + return baseMapper.deleteByIds(ids) > 0; + } +} diff --git a/script/config/nacos/datasource.yml b/script/config/nacos/datasource.yml index 15210e86..5451080d 100644 --- a/script/config/nacos/datasource.yml +++ b/script/config/nacos/datasource.yml @@ -6,7 +6,7 @@ datasource: username: root password: 1234 gen: - url: jdbc:mysql://localhost:3306/ry-cloud?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&rewriteBatchedStatements=true&allowPublicKeyRetrieval=true + url: jdbc:mysql://localhost:3306/dimp?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&rewriteBatchedStatements=true&allowPublicKeyRetrieval=true username: root password: 1234 job: From de44deae2e14f71a73f8a53e31c22c33e21afbc6 Mon Sep 17 00:00:00 2001 From: bichangxiong <3057647414@qq.com> Date: Thu, 14 Aug 2025 11:35:56 +0800 Subject: [PATCH 02/68] =?UTF-8?q?=E6=9B=B4=E6=96=B0=20.gitea/workflows/dev?= =?UTF-8?q?.yml?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitea/workflows/dev.yml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/.gitea/workflows/dev.yml b/.gitea/workflows/dev.yml index 13c24388..cebfe314 100644 --- a/.gitea/workflows/dev.yml +++ b/.gitea/workflows/dev.yml @@ -39,14 +39,14 @@ jobs: cat > ~/.m2/settings.xml << EOF - $HOME/.m2/repository + /root/.m2/repository multi-repo local-repo - file://$HOME/.m2/repository + file:///root/.m2/repository aliyun-public @@ -101,9 +101,9 @@ jobs: COMMON_MODULES=( "ruoyi-common" "ruoyi-api" - "ruoyi-common-bom" + # "ruoyi-common-bom" "ruoyi-common-alibaba-bom" - "ruoyi-api-bom" + # "ruoyi-api-bom" ) for module in "${COMMON_MODULES[@]}"; do @@ -115,7 +115,7 @@ jobs: retries=3 count=0 - until "$MAVEN_HOME/bin/mvn" clean install -U -DskipTests -f "$MODULE_POM_ABSOLUTE_PATH"; do + until "$MAVEN_HOME/bin/mvn" clean compile install -U -DskipTests -f "$MODULE_POM_ABSOLUTE_PATH"; do count=$((count + 1)) if [ $count -ge $retries ]; then echo "错误:模块 $module 构建失败" From 8c32e29571e3555a12c3659cb2984f217f03a369 Mon Sep 17 00:00:00 2001 From: bichangxiong <3057647414@qq.com> Date: Thu, 14 Aug 2025 11:55:03 +0800 Subject: [PATCH 03/68] =?UTF-8?q?=E6=9B=B4=E6=96=B0=20.gitea/workflows/dev?= =?UTF-8?q?.yml?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitea/workflows/dev.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.gitea/workflows/dev.yml b/.gitea/workflows/dev.yml index cebfe314..2409dfa1 100644 --- a/.gitea/workflows/dev.yml +++ b/.gitea/workflows/dev.yml @@ -101,9 +101,9 @@ jobs: COMMON_MODULES=( "ruoyi-common" "ruoyi-api" - # "ruoyi-common-bom" + "ruoyi-common-bom" "ruoyi-common-alibaba-bom" - # "ruoyi-api-bom" + "ruoyi-api-bom" ) for module in "${COMMON_MODULES[@]}"; do From f807f37395684c6f11cab662abc07d1c52f2dbee Mon Sep 17 00:00:00 2001 From: bichangxiong <3057647414@qq.com> Date: Thu, 14 Aug 2025 12:04:13 +0800 Subject: [PATCH 04/68] =?UTF-8?q?=E6=9B=B4=E6=96=B0=20.gitea/workflows/dev?= =?UTF-8?q?.yml?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitea/workflows/dev.yml | 80 ++++++++++++++++++++-------------------- 1 file changed, 40 insertions(+), 40 deletions(-) diff --git a/.gitea/workflows/dev.yml b/.gitea/workflows/dev.yml index 2409dfa1..84b2fe73 100644 --- a/.gitea/workflows/dev.yml +++ b/.gitea/workflows/dev.yml @@ -80,50 +80,50 @@ jobs: sleep 10 done - build-common-modules: - needs: build-parent-pom - runs-on: ubuntu - steps: - - name: 拉取代码仓库 - uses: http://git.missmoc.top/mocheng/checkout@v4 + # build-common-modules: + # needs: build-parent-pom + # runs-on: ubuntu + # steps: + # - name: 拉取代码仓库 + # uses: http://git.missmoc.top/mocheng/checkout@v4 - - name: 配置环境变量 - run: | - export JAVA_HOME="/java17/java17" - export MAVEN_HOME="/maven/apache-maven-3.9.11" - echo "JAVA_HOME=$JAVA_HOME" >> $GITHUB_ENV - echo "$JAVA_HOME/bin" >> $GITHUB_PATH - echo "MAVEN_HOME=$MAVEN_HOME" >> $GITHUB_ENV - echo "$MAVEN_HOME/bin" >> $GITHUB_PATH + # - name: 配置环境变量 + # run: | + # export JAVA_HOME="/java17/java17" + # export MAVEN_HOME="/maven/apache-maven-3.9.11" + # echo "JAVA_HOME=$JAVA_HOME" >> $GITHUB_ENV + # echo "$JAVA_HOME/bin" >> $GITHUB_PATH + # echo "MAVEN_HOME=$MAVEN_HOME" >> $GITHUB_ENV + # echo "$MAVEN_HOME/bin" >> $GITHUB_PATH - - name: 构建通用模块(仅本地使用,不上传) - run: | - COMMON_MODULES=( - "ruoyi-common" - "ruoyi-api" - "ruoyi-common-bom" - "ruoyi-common-alibaba-bom" - "ruoyi-api-bom" - ) + # - name: 构建通用模块(仅本地使用,不上传) + # run: | + # COMMON_MODULES=( + # "ruoyi-common" + # "ruoyi-api" + # "ruoyi-common-bom" + # "ruoyi-common-alibaba-bom" + # "ruoyi-api-bom" + # ) - for module in "${COMMON_MODULES[@]}"; do - MODULE_POM_ABSOLUTE_PATH="${GITHUB_WORKSPACE}/${module}/pom.xml" - if [ ! -f "$MODULE_POM_ABSOLUTE_PATH" ]; then - echo "警告:模块 $module 不存在,跳过" - continue - fi + # for module in "${COMMON_MODULES[@]}"; do + # MODULE_POM_ABSOLUTE_PATH="${GITHUB_WORKSPACE}/${module}/pom.xml" + # if [ ! -f "$MODULE_POM_ABSOLUTE_PATH" ]; then + # echo "警告:模块 $module 不存在,跳过" + # continue + # fi - retries=3 - count=0 - until "$MAVEN_HOME/bin/mvn" clean compile install -U -DskipTests -f "$MODULE_POM_ABSOLUTE_PATH"; do - count=$((count + 1)) - if [ $count -ge $retries ]; then - echo "错误:模块 $module 构建失败" - exit 1 - fi - sleep 10 - done - done + # retries=3 + # count=0 + # until "$MAVEN_HOME/bin/mvn" clean compile install -U -DskipTests -f "$MODULE_POM_ABSOLUTE_PATH"; do + # count=$((count + 1)) + # if [ $count -ge $retries ]; then + # echo "错误:模块 $module 构建失败" + # exit 1 + # fi + # sleep 10 + # done + # done build-and-push-services: needs: build-common-modules From b9b0a040995f26d87de6a8f8198d79e706ebc114 Mon Sep 17 00:00:00 2001 From: bichangxiong <3057647414@qq.com> Date: Thu, 14 Aug 2025 12:14:12 +0800 Subject: [PATCH 05/68] =?UTF-8?q?=E6=9B=B4=E6=96=B0=20.gitea/workflows/dev?= =?UTF-8?q?.yml?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitea/workflows/dev.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitea/workflows/dev.yml b/.gitea/workflows/dev.yml index 84b2fe73..6680ef88 100644 --- a/.gitea/workflows/dev.yml +++ b/.gitea/workflows/dev.yml @@ -71,7 +71,7 @@ jobs: retries=3 count=0 - until "$MAVEN_HOME/bin/mvn" clean package -U -DskipTests -f "$MAIN_POM_ABSOLUTE_PATH"; do + until "$MAVEN_HOME/bin/mvn" clean install -U -DskipTests -f "$MAIN_POM_ABSOLUTE_PATH"; do count=$((count + 1)) if [ $count -ge $retries ]; then echo "错误:主POM构建失败" From e41835c95e18813c492c5bc93ac35f556bdf00d9 Mon Sep 17 00:00:00 2001 From: dy <2389062315@qq.com> Date: Thu, 14 Aug 2025 12:31:17 +0800 Subject: [PATCH 06/68] =?UTF-8?q?=E8=BF=9C=E7=A8=8B=E8=B0=83=E7=94=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ruoyi-modules/Property/pom.xml | 6 --- .../property/domain/AttendanceUserGroup.java | 8 ++-- .../domain/vo/AttendanceUserGroupVo.java | 13 +++---- .../dubbo/RemoteBuildingServiceImpl.java | 2 - .../AttendanceArrangementServiceImpl.java | 22 +++++------ .../impl/AttendanceUserGroupServiceImpl.java | 37 +++++++++---------- .../service/impl/SysUserServiceImpl.java | 1 - 7 files changed, 38 insertions(+), 51 deletions(-) diff --git a/ruoyi-modules/Property/pom.xml b/ruoyi-modules/Property/pom.xml index a062fa82..4164e16b 100644 --- a/ruoyi-modules/Property/pom.xml +++ b/ruoyi-modules/Property/pom.xml @@ -120,12 +120,6 @@ sis-api 2.4.0 - - org.dromara - ruoyi-system - 2.4.0 - compile - org.dromara ruoyi-common-websocket diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/AttendanceUserGroup.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/AttendanceUserGroup.java index 666f0ae6..58558521 100644 --- a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/AttendanceUserGroup.java +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/AttendanceUserGroup.java @@ -1,15 +1,13 @@ package org.dromara.property.domain; -import org.dromara.common.tenant.core.TenantEntity; -import com.baomidou.mybatisplus.annotation.*; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; import lombok.Data; import lombok.EqualsAndHashCode; -import org.dromara.system.domain.SysUser; -import org.springframework.format.annotation.DateTimeFormat; +import org.dromara.common.tenant.core.TenantEntity; import java.io.Serial; import java.time.LocalDate; -import java.util.List; /** * 排班明细对象 attendance_user_group diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/AttendanceUserGroupVo.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/AttendanceUserGroupVo.java index f64884a3..9ccab8ee 100644 --- a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/AttendanceUserGroupVo.java +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/AttendanceUserGroupVo.java @@ -1,20 +1,17 @@ package org.dromara.property.domain.vo; -import org.dromara.property.domain.*; import cn.idev.excel.annotation.ExcelIgnoreUnannotated; import cn.idev.excel.annotation.ExcelProperty; -import org.dromara.common.excel.annotation.ExcelDictFormat; -import org.dromara.common.excel.convert.ExcelDictConvert; import io.github.linpeilie.annotations.AutoMapper; import lombok.Data; -import org.dromara.system.domain.SysUser; -import org.dromara.system.domain.vo.SysUserVo; +import org.dromara.property.api.domain.vo.RemoteBuildingVo; +import org.dromara.property.domain.*; +import org.dromara.system.api.domain.vo.RemoteUserVo; import org.springframework.format.annotation.DateTimeFormat; import java.io.Serial; import java.io.Serializable; import java.time.LocalDate; -import java.util.Date; @@ -88,7 +85,9 @@ public class AttendanceUserGroupVo implements Serializable { private AttendanceScheduleCycle scheduleCycle; - private SysUserVo sysUser; +// private SysUserVo sysUser; + + private RemoteUserVo remoteUserVo; } diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/dubbo/RemoteBuildingServiceImpl.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/dubbo/RemoteBuildingServiceImpl.java index 391fbe35..d326256a 100644 --- a/ruoyi-modules/Property/src/main/java/org/dromara/property/dubbo/RemoteBuildingServiceImpl.java +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/dubbo/RemoteBuildingServiceImpl.java @@ -5,9 +5,7 @@ import org.apache.dubbo.config.annotation.DubboService; import org.dromara.property.api.RemoteBuildingService; import org.dromara.property.api.domain.vo.RemoteBuildingVo; import org.dromara.property.domain.vo.TbBuildingVo; -import org.dromara.property.domain.vo.TbUnitVo; import org.dromara.property.service.ITbBuildingService; -import org.dromara.property.service.ITbUnitService; /** * 对外提供的远程服务调用 diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/AttendanceArrangementServiceImpl.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/AttendanceArrangementServiceImpl.java index 823732b7..dcd8438e 100644 --- a/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/AttendanceArrangementServiceImpl.java +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/AttendanceArrangementServiceImpl.java @@ -21,10 +21,8 @@ import org.dromara.property.domain.vo.AttendanceArrangementVo; import org.dromara.property.domain.vo.AttendanceUserGroupVo; import org.dromara.property.mapper.*; import org.dromara.property.service.IAttendanceArrangementService; -import org.dromara.system.domain.SysUser; -import org.dromara.system.domain.vo.SysUserVo; -import org.dromara.system.mapper.SysUserMapper; -import org.dromara.system.service.ISysUserService; +import org.dromara.system.api.RemoteUserService; +import org.dromara.system.api.domain.vo.RemoteUserVo; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -62,7 +60,7 @@ public class AttendanceArrangementServiceImpl implements IAttendanceArrangementS private final AttendanceScheduleCycleMapper scheduleCycleMapper; @DubboReference - private final ISysUserService sysUserService; + private RemoteUserService remoteUserService; /** * 查询排班 * @@ -82,8 +80,11 @@ public class AttendanceArrangementServiceImpl implements IAttendanceArrangementS List userGroupList = userGroupMapper.selectVoList(Wrappers.lambdaQuery().eq(AttendanceUserGroup::getScheduleId, id)); //查询所有的用户信息 userGroupList.forEach(userGroup -> { - SysUserVo sysUserVo = sysUserService.selectUserById(userGroup.getEmployeeId()); - userGroup.setSysUser(sysUserVo); +// SysUserVo sysUserVo = sysUserService.selectUserById(userGroup.getEmployeeId()); +// userGroup.setSysUser(sysUserVo); + + RemoteUserVo userInfoById = remoteUserService.getUserInfoById(userGroup.getEmployeeId()); + userGroup.setRemoteUserVo(userInfoById); }); //将排班人员信息添加到排班信息中 vo.setUserGroupList(userGroupList); @@ -124,10 +125,9 @@ public class AttendanceArrangementServiceImpl implements IAttendanceArrangementS //将userList存到userGroupList中 userGroupVoList.forEach(userGroup -> { - SysUserVo sysUserVo = sysUserService.selectUserById(userGroup.getEmployeeId()); -// SysUserVo sysUserVo1 = sysUserService.selectUserById(userGroupVoList.get(0).getEmployeeId()); - userGroup.setSysUser(sysUserVo); -// userGroup.setSysUser(sysUserVo1); + + RemoteUserVo userInfoById = remoteUserService.getUserInfoById(userGroup.getEmployeeId()); + userGroup.setRemoteUserVo(userInfoById); } ); diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/AttendanceUserGroupServiceImpl.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/AttendanceUserGroupServiceImpl.java index a4703391..271551ae 100644 --- a/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/AttendanceUserGroupServiceImpl.java +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/AttendanceUserGroupServiceImpl.java @@ -1,32 +1,30 @@ package org.dromara.property.service.impl; -import org.apache.dubbo.config.annotation.DubboReference; -import org.apache.dubbo.config.annotation.DubboService; -import org.dromara.common.core.utils.MapstructUtils; -import org.dromara.common.core.utils.StringUtils; -import org.dromara.common.mybatis.core.page.TableDataInfo; -import org.dromara.common.mybatis.core.page.PageQuery; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; +import org.apache.dubbo.config.annotation.DubboReference; +import org.dromara.common.core.utils.MapstructUtils; +import org.dromara.common.mybatis.core.page.PageQuery; +import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.property.domain.*; -import org.dromara.property.domain.bo.AttendanceArrangementBo; -import org.dromara.property.domain.constant.StatusConstant; -import org.dromara.property.domain.vo.AttendanceArrangementVo; -import org.dromara.property.mapper.*; -import org.dromara.system.domain.vo.SysUserVo; -import org.dromara.system.service.ISysUserService; -import org.springframework.stereotype.Service; import org.dromara.property.domain.bo.AttendanceUserGroupBo; +import org.dromara.property.domain.constant.StatusConstant; import org.dromara.property.domain.vo.AttendanceUserGroupVo; +import org.dromara.property.mapper.*; import org.dromara.property.service.IAttendanceUserGroupService; +import org.dromara.system.api.RemoteUserService; +import org.dromara.system.api.domain.vo.RemoteUserVo; +import org.springframework.stereotype.Service; import java.time.LocalDate; -import java.time.ZoneId; import java.time.temporal.ChronoUnit; -import java.util.*; +import java.util.Collection; +import java.util.List; +import java.util.Map; +import java.util.Objects; import java.util.stream.Collectors; /** @@ -53,7 +51,7 @@ public class AttendanceUserGroupServiceImpl implements IAttendanceUserGroupServi private final AttendanceScheduleCycleMapper scheduleCycleMapper; @DubboReference - private ISysUserService sysUserService; + private RemoteUserService remoteUserService; /** @@ -179,8 +177,9 @@ public class AttendanceUserGroupServiceImpl implements IAttendanceUserGroupServi Long scheduleId = vo.getScheduleId(); //根据employeeId查询出用户的详细信息 - SysUserVo sysUserVo = sysUserService.selectUserById(vo.getEmployeeId()); - vo.setSysUser(sysUserVo); +// SysUserVo sysUserVo = sysUserService.selectUserById(vo.getEmployeeId()); + RemoteUserVo userInfoById = remoteUserService.getUserInfoById(vo.getEmployeeId()); + vo.setRemoteUserVo(userInfoById); //根据scheduleId查询出排班的详细信息 AttendanceArrangement attendanceArrangement = arrangementMapper.selectOne(Wrappers.lambdaQuery().eq(AttendanceArrangement::getId, scheduleId)); diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysUserServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysUserServiceImpl.java index d42d1d44..5e9d71ac 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysUserServiceImpl.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysUserServiceImpl.java @@ -45,7 +45,6 @@ import java.util.Map; @Slf4j @RequiredArgsConstructor @Service -@DubboService public class SysUserServiceImpl implements ISysUserService { private final SysUserMapper baseMapper; From 0d6a1b268d9c06a387933e9c6996f8610dc55055 Mon Sep 17 00:00:00 2001 From: bichangxiong <3057647414@qq.com> Date: Thu, 14 Aug 2025 13:56:06 +0800 Subject: [PATCH 07/68] =?UTF-8?q?=E6=9B=B4=E6=96=B0=20.gitea/workflows/dev?= =?UTF-8?q?.yml?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitea/workflows/dev.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.gitea/workflows/dev.yml b/.gitea/workflows/dev.yml index 6680ef88..6c5e52bc 100644 --- a/.gitea/workflows/dev.yml +++ b/.gitea/workflows/dev.yml @@ -196,7 +196,9 @@ jobs: with: context: "${GITHUB_WORKSPACE}" file: ${{ steps.dockerfile-path.outputs.dockerfile_path }} - tags: ${{ secrets.REGISTRY_URL }}/by2025/${{ matrix.service }}:${{ github.sha }} + # tags: ${{ secrets.REGISTRY_URL }}/by2025/${{ matrix.service }}:${{ github.sha }} + # tags: ${{ secrets.REGISTRY_URL }}/by2025/$(echo ${{ matrix.service }} | tr 'A-Z' 'a-z'):${{ github.sha }} + tags: ${{ secrets.REGISTRY_URL }}/by2025/${{ matrix.service }}:${{ gitea.sha }} push: true cache-from: type=gha cache-to: type=gha,mode=max From f5b011a869cccabe61304d38993874eb2c2ecf99 Mon Sep 17 00:00:00 2001 From: bichangxiong <3057647414@qq.com> Date: Thu, 14 Aug 2025 14:01:00 +0800 Subject: [PATCH 08/68] =?UTF-8?q?=E6=9B=B4=E6=96=B0=20.gitea/workflows/dev?= =?UTF-8?q?.yml?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitea/workflows/dev.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitea/workflows/dev.yml b/.gitea/workflows/dev.yml index 6c5e52bc..969c3b15 100644 --- a/.gitea/workflows/dev.yml +++ b/.gitea/workflows/dev.yml @@ -198,7 +198,7 @@ jobs: file: ${{ steps.dockerfile-path.outputs.dockerfile_path }} # tags: ${{ secrets.REGISTRY_URL }}/by2025/${{ matrix.service }}:${{ github.sha }} # tags: ${{ secrets.REGISTRY_URL }}/by2025/$(echo ${{ matrix.service }} | tr 'A-Z' 'a-z'):${{ github.sha }} - tags: ${{ secrets.REGISTRY_URL }}/by2025/${{ matrix.service }}:${{ gitea.sha }} + tags: ${{ secrets.REGISTRY_URL }}/by2025/${{ matrix.service }}:2.0.4 push: true cache-from: type=gha cache-to: type=gha,mode=max From 6533f6720f3eee7bc12d03bdb46dd06911b3fa3c Mon Sep 17 00:00:00 2001 From: bichangxiong <3057647414@qq.com> Date: Thu, 14 Aug 2025 14:05:37 +0800 Subject: [PATCH 09/68] =?UTF-8?q?=E6=9B=B4=E6=96=B0=20.gitea/workflows/dev?= =?UTF-8?q?.yml?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitea/workflows/dev.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.gitea/workflows/dev.yml b/.gitea/workflows/dev.yml index 969c3b15..62b0e912 100644 --- a/.gitea/workflows/dev.yml +++ b/.gitea/workflows/dev.yml @@ -196,9 +196,9 @@ jobs: with: context: "${GITHUB_WORKSPACE}" file: ${{ steps.dockerfile-path.outputs.dockerfile_path }} - # tags: ${{ secrets.REGISTRY_URL }}/by2025/${{ matrix.service }}:${{ github.sha }} + tags: ${{ secrets.REGISTRY_URL }}/by2025/SmartParks/${{ matrix.service }}:${{ github.sha }} # tags: ${{ secrets.REGISTRY_URL }}/by2025/$(echo ${{ matrix.service }} | tr 'A-Z' 'a-z'):${{ github.sha }} - tags: ${{ secrets.REGISTRY_URL }}/by2025/${{ matrix.service }}:2.0.4 + # tags: ${{ secrets.REGISTRY_URL }}/by2025/${{ matrix.service }}:2.0.4 push: true cache-from: type=gha cache-to: type=gha,mode=max From 7e36a04fae5f791858a3099ec3c450c12cd2aa93 Mon Sep 17 00:00:00 2001 From: bichangxiong <3057647414@qq.com> Date: Thu, 14 Aug 2025 14:13:49 +0800 Subject: [PATCH 10/68] =?UTF-8?q?=E6=9B=B4=E6=96=B0=20.gitea/workflows/dev?= =?UTF-8?q?.yml?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitea/workflows/dev.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitea/workflows/dev.yml b/.gitea/workflows/dev.yml index 62b0e912..d95dc7af 100644 --- a/.gitea/workflows/dev.yml +++ b/.gitea/workflows/dev.yml @@ -196,7 +196,7 @@ jobs: with: context: "${GITHUB_WORKSPACE}" file: ${{ steps.dockerfile-path.outputs.dockerfile_path }} - tags: ${{ secrets.REGISTRY_URL }}/by2025/SmartParks/${{ matrix.service }}:${{ github.sha }} + tags: ${{ secrets.REGISTRY_URL }}by2025/${{ steps.fix-service-name.outputs.fixed_service_name }}:latest # tags: ${{ secrets.REGISTRY_URL }}/by2025/$(echo ${{ matrix.service }} | tr 'A-Z' 'a-z'):${{ github.sha }} # tags: ${{ secrets.REGISTRY_URL }}/by2025/${{ matrix.service }}:2.0.4 push: true From 92adf7e0106ae9b015057181e9a4e31d34d3a8b4 Mon Sep 17 00:00:00 2001 From: bichangxiong <3057647414@qq.com> Date: Thu, 14 Aug 2025 14:18:44 +0800 Subject: [PATCH 11/68] =?UTF-8?q?=E6=9B=B4=E6=96=B0=20.gitea/workflows/dev?= =?UTF-8?q?.yml?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitea/workflows/dev.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitea/workflows/dev.yml b/.gitea/workflows/dev.yml index d95dc7af..05e36da9 100644 --- a/.gitea/workflows/dev.yml +++ b/.gitea/workflows/dev.yml @@ -196,7 +196,7 @@ jobs: with: context: "${GITHUB_WORKSPACE}" file: ${{ steps.dockerfile-path.outputs.dockerfile_path }} - tags: ${{ secrets.REGISTRY_URL }}by2025/${{ steps.fix-service-name.outputs.fixed_service_name }}:latest + tags: ${{ secrets.REGISTRY_URL }}by2025/SmartParks/${{ matrix.service }}:latest # tags: ${{ secrets.REGISTRY_URL }}/by2025/$(echo ${{ matrix.service }} | tr 'A-Z' 'a-z'):${{ github.sha }} # tags: ${{ secrets.REGISTRY_URL }}/by2025/${{ matrix.service }}:2.0.4 push: true From 52cb5277f1f662cc8f79dc1048205c67751b9474 Mon Sep 17 00:00:00 2001 From: bichangxiong <3057647414@qq.com> Date: Thu, 14 Aug 2025 14:25:32 +0800 Subject: [PATCH 12/68] =?UTF-8?q?=E6=9B=B4=E6=96=B0=20.gitea/workflows/dev?= =?UTF-8?q?.yml?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitea/workflows/dev.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitea/workflows/dev.yml b/.gitea/workflows/dev.yml index 05e36da9..0d5e2c00 100644 --- a/.gitea/workflows/dev.yml +++ b/.gitea/workflows/dev.yml @@ -196,7 +196,7 @@ jobs: with: context: "${GITHUB_WORKSPACE}" file: ${{ steps.dockerfile-path.outputs.dockerfile_path }} - tags: ${{ secrets.REGISTRY_URL }}by2025/SmartParks/${{ matrix.service }}:latest + tags: ${{ secrets.REGISTRY_URL }}/by2025/SmartParks/${{ matrix.service }}:latest # tags: ${{ secrets.REGISTRY_URL }}/by2025/$(echo ${{ matrix.service }} | tr 'A-Z' 'a-z'):${{ github.sha }} # tags: ${{ secrets.REGISTRY_URL }}/by2025/${{ matrix.service }}:2.0.4 push: true From 2556be5019c87f4ce72fa60fcfb52ce0c2648a88 Mon Sep 17 00:00:00 2001 From: bichangxiong <3057647414@qq.com> Date: Thu, 14 Aug 2025 14:32:37 +0800 Subject: [PATCH 13/68] =?UTF-8?q?=E6=9B=B4=E6=96=B0=20.gitea/workflows/dev?= =?UTF-8?q?.yml?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitea/workflows/dev.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitea/workflows/dev.yml b/.gitea/workflows/dev.yml index 0d5e2c00..e8e78000 100644 --- a/.gitea/workflows/dev.yml +++ b/.gitea/workflows/dev.yml @@ -196,7 +196,7 @@ jobs: with: context: "${GITHUB_WORKSPACE}" file: ${{ steps.dockerfile-path.outputs.dockerfile_path }} - tags: ${{ secrets.REGISTRY_URL }}/by2025/SmartParks/${{ matrix.service }}:latest + tags: 172.100.10.45:3000/by2025/SmartParks/${{ matrix.service }}:latest # tags: ${{ secrets.REGISTRY_URL }}/by2025/$(echo ${{ matrix.service }} | tr 'A-Z' 'a-z'):${{ github.sha }} # tags: ${{ secrets.REGISTRY_URL }}/by2025/${{ matrix.service }}:2.0.4 push: true From 74e5323934ec6a0aa5832b4e649423c7003f7026 Mon Sep 17 00:00:00 2001 From: dy <2389062315@qq.com> Date: Thu, 14 Aug 2025 15:16:53 +0800 Subject: [PATCH 14/68] =?UTF-8?q?=E9=83=A8=E9=97=A8=E5=90=8D=E7=A7=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../domain/vo/AttendanceUserGroupVo.java | 2 ++ .../AttendanceArrangementServiceImpl.java | 14 ++++++++++--- .../impl/AttendanceUserGroupServiceImpl.java | 21 ++++++++++++++----- 3 files changed, 29 insertions(+), 8 deletions(-) diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/AttendanceUserGroupVo.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/AttendanceUserGroupVo.java index 9ccab8ee..bb60b40e 100644 --- a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/AttendanceUserGroupVo.java +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/AttendanceUserGroupVo.java @@ -89,5 +89,7 @@ public class AttendanceUserGroupVo implements Serializable { private RemoteUserVo remoteUserVo; + private String deptName; + } diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/AttendanceArrangementServiceImpl.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/AttendanceArrangementServiceImpl.java index dcd8438e..059972c5 100644 --- a/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/AttendanceArrangementServiceImpl.java +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/AttendanceArrangementServiceImpl.java @@ -80,11 +80,14 @@ public class AttendanceArrangementServiceImpl implements IAttendanceArrangementS List userGroupList = userGroupMapper.selectVoList(Wrappers.lambdaQuery().eq(AttendanceUserGroup::getScheduleId, id)); //查询所有的用户信息 userGroupList.forEach(userGroup -> { -// SysUserVo sysUserVo = sysUserService.selectUserById(userGroup.getEmployeeId()); -// userGroup.setSysUser(sysUserVo); - RemoteUserVo userInfoById = remoteUserService.getUserInfoById(userGroup.getEmployeeId()); userGroup.setRemoteUserVo(userInfoById); + + //获取deptId + Long deptId = userGroup.getDeptId(); + //根据deptId查询出部门名称 + String deptName = remoteUserService.selectDeptNamesByIds(Arrays.asList(deptId)).get(deptId); + userGroup.setDeptName(deptName); }); //将排班人员信息添加到排班信息中 vo.setUserGroupList(userGroupList); @@ -128,6 +131,11 @@ public class AttendanceArrangementServiceImpl implements IAttendanceArrangementS RemoteUserVo userInfoById = remoteUserService.getUserInfoById(userGroup.getEmployeeId()); userGroup.setRemoteUserVo(userInfoById); + //获取deptId + Long deptId = userGroup.getDeptId(); + //根据deptId查询出部门名称 + String deptName = remoteUserService.selectDeptNamesByIds(Arrays.asList(deptId)).get(deptId); + userGroup.setDeptName(deptName); } ); diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/AttendanceUserGroupServiceImpl.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/AttendanceUserGroupServiceImpl.java index 271551ae..9c03f36c 100644 --- a/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/AttendanceUserGroupServiceImpl.java +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/AttendanceUserGroupServiceImpl.java @@ -15,16 +15,14 @@ import org.dromara.property.domain.constant.StatusConstant; import org.dromara.property.domain.vo.AttendanceUserGroupVo; import org.dromara.property.mapper.*; import org.dromara.property.service.IAttendanceUserGroupService; +import org.dromara.system.api.RemoteDeptService; import org.dromara.system.api.RemoteUserService; import org.dromara.system.api.domain.vo.RemoteUserVo; import org.springframework.stereotype.Service; import java.time.LocalDate; import java.time.temporal.ChronoUnit; -import java.util.Collection; -import java.util.List; -import java.util.Map; -import java.util.Objects; +import java.util.*; import java.util.stream.Collectors; /** @@ -53,6 +51,9 @@ public class AttendanceUserGroupServiceImpl implements IAttendanceUserGroupServi @DubboReference private RemoteUserService remoteUserService; + @DubboReference + private RemoteDeptService remoteDeptService; + /** * 查询排班明细 @@ -177,10 +178,20 @@ public class AttendanceUserGroupServiceImpl implements IAttendanceUserGroupServi Long scheduleId = vo.getScheduleId(); //根据employeeId查询出用户的详细信息 -// SysUserVo sysUserVo = sysUserService.selectUserById(vo.getEmployeeId()); RemoteUserVo userInfoById = remoteUserService.getUserInfoById(vo.getEmployeeId()); vo.setRemoteUserVo(userInfoById); + + Long deptId = vo.getDeptId(); + String deptName = remoteUserService.selectDeptNamesByIds(Arrays.asList(deptId)).get(deptId); + vo.setDeptName(deptName); + + +// //通过employeeId查询出用户的部门信息 +// String deptInfo = remoteDeptService.selectDeptNameByIds(String.valueOf(vo.getDeptId())); +// vo.setDeptName(deptInfo); + + //根据scheduleId查询出排班的详细信息 AttendanceArrangement attendanceArrangement = arrangementMapper.selectOne(Wrappers.lambdaQuery().eq(AttendanceArrangement::getId, scheduleId)); // 假设每个vo只有一个scheduleId From 20c27a8f7f99657f6640b7013c0a416d27d88877 Mon Sep 17 00:00:00 2001 From: bichangxiong <3057647414@qq.com> Date: Thu, 14 Aug 2025 15:22:14 +0800 Subject: [PATCH 15/68] =?UTF-8?q?=E6=9B=B4=E6=96=B0=20.gitea/workflows/dev?= =?UTF-8?q?.yml?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitea/workflows/dev.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitea/workflows/dev.yml b/.gitea/workflows/dev.yml index e8e78000..a87f9495 100644 --- a/.gitea/workflows/dev.yml +++ b/.gitea/workflows/dev.yml @@ -196,7 +196,7 @@ jobs: with: context: "${GITHUB_WORKSPACE}" file: ${{ steps.dockerfile-path.outputs.dockerfile_path }} - tags: 172.100.10.45:3000/by2025/SmartParks/${{ matrix.service }}:latest + tags: 172.100.10.45:3000/by2025/smartparks/${{ matrix.service }}:latest # tags: ${{ secrets.REGISTRY_URL }}/by2025/$(echo ${{ matrix.service }} | tr 'A-Z' 'a-z'):${{ github.sha }} # tags: ${{ secrets.REGISTRY_URL }}/by2025/${{ matrix.service }}:2.0.4 push: true From cfd7a4de879b9f4a06b10ee1697f854973b409ca Mon Sep 17 00:00:00 2001 From: bichangxiong <3057647414@qq.com> Date: Thu, 14 Aug 2025 15:29:20 +0800 Subject: [PATCH 16/68] =?UTF-8?q?=E6=9B=B4=E6=96=B0=20.gitea/workflows/dev?= =?UTF-8?q?.yml?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitea/workflows/dev.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitea/workflows/dev.yml b/.gitea/workflows/dev.yml index a87f9495..3270cd20 100644 --- a/.gitea/workflows/dev.yml +++ b/.gitea/workflows/dev.yml @@ -195,7 +195,7 @@ jobs: uses: http://git.missmoc.top/mocheng/build-push-action@v5 with: context: "${GITHUB_WORKSPACE}" - file: ${{ steps.dockerfile-path.outputs.dockerfile_path }} + file: ${{ github.workspace }}/${{ matrix.service }}/Dockerfile tags: 172.100.10.45:3000/by2025/smartparks/${{ matrix.service }}:latest # tags: ${{ secrets.REGISTRY_URL }}/by2025/$(echo ${{ matrix.service }} | tr 'A-Z' 'a-z'):${{ github.sha }} # tags: ${{ secrets.REGISTRY_URL }}/by2025/${{ matrix.service }}:2.0.4 From 9abb69888bc3482a1991e509a40994efd94a819c Mon Sep 17 00:00:00 2001 From: dy <2389062315@qq.com> Date: Thu, 14 Aug 2025 15:41:00 +0800 Subject: [PATCH 17/68] =?UTF-8?q?=E6=8E=92=E7=8F=AD=E5=8C=BA=E5=9F=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../domain/AttendanceArrangement.java | 5 + .../domain/bo/AttendanceArrangementBo.java | 6 + .../domain/vo/AttendanceArrangementVo.java | 8 ++ .../domain/vo/AttendanceUserGroupVo.java | 2 + .../AttendanceArrangementServiceImpl.java | 18 +-- .../impl/AttendanceUserGroupServiceImpl.java | 129 ++++++++++-------- 6 files changed, 100 insertions(+), 68 deletions(-) diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/AttendanceArrangement.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/AttendanceArrangement.java index fe92975f..746ff5e7 100644 --- a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/AttendanceArrangement.java +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/AttendanceArrangement.java @@ -41,6 +41,11 @@ public class AttendanceArrangement extends TenantEntity { */ private Long groupId; + /** + * 区域id + */ + private Long areaId; + /** * 排班类型:1-固定班制,2-排班制 */ diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/bo/AttendanceArrangementBo.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/bo/AttendanceArrangementBo.java index 2968a7cb..807be3b0 100644 --- a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/bo/AttendanceArrangementBo.java +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/bo/AttendanceArrangementBo.java @@ -45,6 +45,11 @@ public class AttendanceArrangementBo extends BaseEntity { */ private Long groupId; + /** + * 区域id + */ + private Long areaId; + /** * 排班类型:1-固定班制,2-排班制 */ @@ -99,4 +104,5 @@ public class AttendanceArrangementBo extends BaseEntity { private List scheduleCycleList; + } diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/AttendanceArrangementVo.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/AttendanceArrangementVo.java index c2955ad9..61b6644b 100644 --- a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/AttendanceArrangementVo.java +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/AttendanceArrangementVo.java @@ -45,6 +45,12 @@ public class AttendanceArrangementVo implements Serializable { @ExcelProperty(value = "考勤组ID") private Long groupId; + @ExcelProperty(value = "区域Id") + /** + * 区域id + */ + private Long areaId; + /** * 排班类型:1-固定班制,2-排班制 */ @@ -90,5 +96,7 @@ public class AttendanceArrangementVo implements Serializable { //排班制 private AttendanceScheduleCycle scheduleCycle; + private AttendanceArea attendanceArea; + } diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/AttendanceUserGroupVo.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/AttendanceUserGroupVo.java index bb60b40e..ffc3f24a 100644 --- a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/AttendanceUserGroupVo.java +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/AttendanceUserGroupVo.java @@ -91,5 +91,7 @@ public class AttendanceUserGroupVo implements Serializable { private String deptName; + private AttendanceArea attendanceArea; + } diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/AttendanceArrangementServiceImpl.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/AttendanceArrangementServiceImpl.java index 059972c5..588c7328 100644 --- a/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/AttendanceArrangementServiceImpl.java +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/AttendanceArrangementServiceImpl.java @@ -1,15 +1,11 @@ package org.dromara.property.service.impl; -import cn.hutool.core.date.DateUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; -import org.apache.commons.beanutils.BeanUtils; import org.apache.dubbo.config.annotation.DubboReference; -import org.apache.dubbo.config.annotation.DubboService; import org.dromara.common.core.utils.MapstructUtils; import org.dromara.common.core.utils.StringUtils; import org.dromara.common.mybatis.core.page.PageQuery; @@ -26,10 +22,8 @@ import org.dromara.system.api.domain.vo.RemoteUserVo; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import java.time.DayOfWeek; import java.time.LocalDate; import java.time.ZoneId; -import java.time.temporal.WeekFields; import java.util.*; import java.util.stream.Collectors; @@ -59,6 +53,8 @@ public class AttendanceArrangementServiceImpl implements IAttendanceArrangementS private final AttendanceScheduleCycleMapper scheduleCycleMapper; + private final AttendanceAreaMapper attendanceAreaMapper; + @DubboReference private RemoteUserService remoteUserService; /** @@ -149,7 +145,13 @@ public class AttendanceArrangementServiceImpl implements IAttendanceArrangementS //将考勤组的信息存到vo中 vo.setAttendanceGroup(attendanceGroup); - //3.查询班制信息 + //3.根据id查询区域信息 + Long areaId = vo.getAreaId(); + //根据区域id查询出区域的详细信息 + AttendanceArea attendanceArea = attendanceAreaMapper.selectById(areaId); + vo.setAttendanceArea(attendanceArea); + + //4.查询班制信息 //判断当前考勤组的班制是固定班制还是排班制 if (Objects.equals(attendanceGroup.getAttendanceType(), StatusConstant.FIXEDSCHEDULE)) { //3.1固定班制 @@ -205,7 +207,7 @@ public class AttendanceArrangementServiceImpl implements IAttendanceArrangementS } - //根据cycleDay查询出当前日期的班次信息 + //5.根据cycleDay查询出当前日期的班次信息 AttendanceScheduleCycle cycle = scheduleCycleMapper.selectOne(Wrappers.lambdaQuery().eq(AttendanceScheduleCycle::getGroupId, groupId).eq(AttendanceScheduleCycle::getDayNumber, cycleDay)); //将cycle存到vo中 vo.setScheduleCycle(cycle); diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/AttendanceUserGroupServiceImpl.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/AttendanceUserGroupServiceImpl.java index 9c03f36c..b7535a88 100644 --- a/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/AttendanceUserGroupServiceImpl.java +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/AttendanceUserGroupServiceImpl.java @@ -48,6 +48,8 @@ public class AttendanceUserGroupServiceImpl implements IAttendanceUserGroupServi private final AttendanceScheduleCycleMapper scheduleCycleMapper; + private final AttendanceAreaMapper attendanceAreaMapper; + @DubboReference private RemoteUserService remoteUserService; @@ -194,73 +196,80 @@ public class AttendanceUserGroupServiceImpl implements IAttendanceUserGroupServi //根据scheduleId查询出排班的详细信息 AttendanceArrangement attendanceArrangement = arrangementMapper.selectOne(Wrappers.lambdaQuery().eq(AttendanceArrangement::getId, scheduleId)); - // 假设每个vo只有一个scheduleId - Long userGroupListScheduleId = attendanceArrangement.getId(); - AttendanceArrangement arrangement = arrangementMapper.selectOne(Wrappers.lambdaQuery().eq(AttendanceArrangement::getId, userGroupListScheduleId)); - vo.setAttendanceArrangement(arrangement); + // 假设每个vo只有一个scheduleId + Long userGroupListScheduleId = attendanceArrangement.getId(); + AttendanceArrangement arrangement = arrangementMapper.selectOne(Wrappers.lambdaQuery().eq(AttendanceArrangement::getId, userGroupListScheduleId)); + vo.setAttendanceArrangement(arrangement); - // 根据scheduleId过滤出groupId - Long groupId = arrangement.getGroupId(); - // 根据groupId查询出考勤组的详细信息 - AttendanceGroup attendanceGroup = groupMapper.selectById(groupId); - vo.setAttendanceGroup(attendanceGroup); + // 根据scheduleId过滤出groupId + Long groupId = arrangement.getGroupId(); + // 根据groupId查询出考勤组的详细信息 + AttendanceGroup attendanceGroup = groupMapper.selectById(groupId); + vo.setAttendanceGroup(attendanceGroup); - // 判断当前考勤组的班制是固定班制还是排班制 - if (Objects.equals(attendanceGroup.getAttendanceType(), StatusConstant.FIXEDSCHEDULE)) { - // 固定班制 - // 根据考勤组id查询出班制信息的dayOfWeek - List weekSetList = weekSetMapper.selectList(Wrappers.lambdaQuery().eq(AttendanceWeekSet::getGroupId, groupId)); - // 将当前日期转换为周几 - int weekNumber = bo.getCurrentDate().getDayOfWeek().getValue(); - // 匹配weekNumber和weekSetList中的dayOfWeek,匹配成功则将weekSet存到vo中 - AttendanceWeekSet attendanceWeekSet = weekSetList.stream().filter(weekSet -> weekSet.getDayOfWeek() == weekNumber).findFirst().orElse(null); - if (attendanceWeekSet != null) { - // 根据过滤出来的attendanceWeekSet的weekSetId查询出shiftId - Long shiftId = attendanceWeekSet.getShiftId(); - // 根据shiftId查询出班次的详细信息 - AttendanceShift attendanceShift = shiftMapper.selectById(shiftId); - // 将attendanceShift存到vo中 - vo.setAttendanceShift(attendanceShift); - } - } else if (Objects.equals(attendanceGroup.getAttendanceType(), StatusConstant.SHIFTSCHEDULE)) { - // 排班制 - // 将startDate作为第一天,endDate作为最后一天,循环判断当前日期是第几天,取出当前天数的班次信息。 - LocalDate startDate = vo.getStartDate(); - LocalDate endDate = vo.getEndDate(); - LocalDate currentDate = bo.getCurrentDate(); - // 取出attendanceScheduleCycle表中的天数 - List cycleDaysList = scheduleCycleMapper.selectList(Wrappers.lambdaQuery().eq(AttendanceScheduleCycle::getGroupId, groupId)).stream() - .map(AttendanceScheduleCycle::getDayNumber) - .toList(); + //3.根据id查询区域信息 + Long areaId = arrangement.getAreaId(); + //根据区域id查询出区域的详细信息 + AttendanceArea attendanceArea = attendanceAreaMapper.selectById(areaId); + vo.setAttendanceArea(attendanceArea); - // 在startDate和endDate之间循环,判断当前日期是cycleDays中的第几天 - for (LocalDate date = startDate; date.isBefore(endDate) || date.isEqual(endDate); date = date.plusDays(1)) { - if (date.isEqual(currentDate)) { - // 判断当前日期是cycleDays中的第几天 - int dayNumber = (int) (ChronoUnit.DAYS.between(startDate, date) + 1); - int cycleDay = dayNumber % cycleDaysList.size(); - if (cycleDay == 0) { - cycleDay = cycleDaysList.size(); - } - // 根据cycleDay查询出当前日期的班次信息 - AttendanceScheduleCycle cycle = scheduleCycleMapper.selectOne(Wrappers.lambdaQuery() - .eq(AttendanceScheduleCycle::getGroupId, groupId) - .eq(AttendanceScheduleCycle::getDayNumber, cycleDay)); - if (cycle != null) { - // 将cycle存到vo中 - vo.setScheduleCycle(cycle); - // 根据cycleId查询出shiftId - Long shiftId = cycle.getShiftId(); - // 根据shiftId查询出班次的详细信息 - AttendanceShift attendanceShift = shiftMapper.selectById(shiftId); - // 将shift存到vo中 - vo.setAttendanceShift(attendanceShift); - } - break; // 找到当前日期后跳出循环 + // 判断当前考勤组的班制是固定班制还是排班制 + if (Objects.equals(attendanceGroup.getAttendanceType(), StatusConstant.FIXEDSCHEDULE)) { + // 固定班制 + // 根据考勤组id查询出班制信息的dayOfWeek + List weekSetList = weekSetMapper.selectList(Wrappers.lambdaQuery().eq(AttendanceWeekSet::getGroupId, groupId)); + // 将当前日期转换为周几 + int weekNumber = bo.getCurrentDate().getDayOfWeek().getValue(); + // 匹配weekNumber和weekSetList中的dayOfWeek,匹配成功则将weekSet存到vo中 + AttendanceWeekSet attendanceWeekSet = weekSetList.stream().filter(weekSet -> weekSet.getDayOfWeek() == weekNumber).findFirst().orElse(null); + if (attendanceWeekSet != null) { + // 根据过滤出来的attendanceWeekSet的weekSetId查询出shiftId + Long shiftId = attendanceWeekSet.getShiftId(); + // 根据shiftId查询出班次的详细信息 + AttendanceShift attendanceShift = shiftMapper.selectById(shiftId); + // 将attendanceShift存到vo中 + vo.setAttendanceShift(attendanceShift); + } + } else if (Objects.equals(attendanceGroup.getAttendanceType(), StatusConstant.SHIFTSCHEDULE)) { + // 排班制 + // 将startDate作为第一天,endDate作为最后一天,循环判断当前日期是第几天,取出当前天数的班次信息。 + LocalDate startDate = vo.getStartDate(); + LocalDate endDate = vo.getEndDate(); + LocalDate currentDate = bo.getCurrentDate(); + + // 取出attendanceScheduleCycle表中的天数 + List cycleDaysList = scheduleCycleMapper.selectList(Wrappers.lambdaQuery().eq(AttendanceScheduleCycle::getGroupId, groupId)).stream() + .map(AttendanceScheduleCycle::getDayNumber) + .toList(); + + // 在startDate和endDate之间循环,判断当前日期是cycleDays中的第几天 + for (LocalDate date = startDate; date.isBefore(endDate) || date.isEqual(endDate); date = date.plusDays(1)) { + if (date.isEqual(currentDate)) { + // 判断当前日期是cycleDays中的第几天 + int dayNumber = (int) (ChronoUnit.DAYS.between(startDate, date) + 1); + int cycleDay = dayNumber % cycleDaysList.size(); + if (cycleDay == 0) { + cycleDay = cycleDaysList.size(); } + // 根据cycleDay查询出当前日期的班次信息 + AttendanceScheduleCycle cycle = scheduleCycleMapper.selectOne(Wrappers.lambdaQuery() + .eq(AttendanceScheduleCycle::getGroupId, groupId) + .eq(AttendanceScheduleCycle::getDayNumber, cycleDay)); + if (cycle != null) { + // 将cycle存到vo中 + vo.setScheduleCycle(cycle); + // 根据cycleId查询出shiftId + Long shiftId = cycle.getShiftId(); + // 根据shiftId查询出班次的详细信息 + AttendanceShift attendanceShift = shiftMapper.selectById(shiftId); + // 将shift存到vo中 + vo.setAttendanceShift(attendanceShift); + } + break; // 找到当前日期后跳出循环 } } + } } return vo; }).collect(Collectors.toList())); From 9bf0fb35683effcaacd5a69902dd2c18ccbb0140 Mon Sep 17 00:00:00 2001 From: bichangxiong <3057647414@qq.com> Date: Thu, 14 Aug 2025 15:42:10 +0800 Subject: [PATCH 18/68] =?UTF-8?q?=E6=9B=B4=E6=96=B0=20.gitea/workflows/dev?= =?UTF-8?q?.yml?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitea/workflows/dev.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitea/workflows/dev.yml b/.gitea/workflows/dev.yml index 3270cd20..33320f81 100644 --- a/.gitea/workflows/dev.yml +++ b/.gitea/workflows/dev.yml @@ -195,7 +195,7 @@ jobs: uses: http://git.missmoc.top/mocheng/build-push-action@v5 with: context: "${GITHUB_WORKSPACE}" - file: ${{ github.workspace }}/${{ matrix.service }}/Dockerfile + file: ${GITHUB_WORKSPACE}/${{ matrix.service }}/Dockerfile tags: 172.100.10.45:3000/by2025/smartparks/${{ matrix.service }}:latest # tags: ${{ secrets.REGISTRY_URL }}/by2025/$(echo ${{ matrix.service }} | tr 'A-Z' 'a-z'):${{ github.sha }} # tags: ${{ secrets.REGISTRY_URL }}/by2025/${{ matrix.service }}:2.0.4 From 8bbe92db4e8f8c6dbaca8d6023af979a6d1b026a Mon Sep 17 00:00:00 2001 From: bichangxiong <3057647414@qq.com> Date: Thu, 14 Aug 2025 15:50:05 +0800 Subject: [PATCH 19/68] =?UTF-8?q?=E6=9B=B4=E6=96=B0=20.gitea/workflows/dev?= =?UTF-8?q?.yml?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitea/workflows/dev.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.gitea/workflows/dev.yml b/.gitea/workflows/dev.yml index 33320f81..cf53dcee 100644 --- a/.gitea/workflows/dev.yml +++ b/.gitea/workflows/dev.yml @@ -194,8 +194,8 @@ jobs: - name: 构建并推送Docker镜像(仅推送镜像,不上传JAR) uses: http://git.missmoc.top/mocheng/build-push-action@v5 with: - context: "${GITHUB_WORKSPACE}" - file: ${GITHUB_WORKSPACE}/${{ matrix.service }}/Dockerfile + context: "${{ github.workspace }}" + file: ${{ github.workspace }}/${{ matrix.service }}/Dockerfile tags: 172.100.10.45:3000/by2025/smartparks/${{ matrix.service }}:latest # tags: ${{ secrets.REGISTRY_URL }}/by2025/$(echo ${{ matrix.service }} | tr 'A-Z' 'a-z'):${{ github.sha }} # tags: ${{ secrets.REGISTRY_URL }}/by2025/${{ matrix.service }}:2.0.4 From 6410e15b88c6fe8af89a12cef51ef88c6db30790 Mon Sep 17 00:00:00 2001 From: mocheng <3057647414@qq.com> Date: Thu, 14 Aug 2025 15:57:04 +0800 Subject: [PATCH 20/68] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=9F=BA=E7=A1=80?= =?UTF-8?q?=E9=95=9C=E5=83=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ruoyi-auth/Dockerfile | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/ruoyi-auth/Dockerfile b/ruoyi-auth/Dockerfile index 8555931b..a1914e71 100644 --- a/ruoyi-auth/Dockerfile +++ b/ruoyi-auth/Dockerfile @@ -1,5 +1,6 @@ # 贝尔实验室 Spring 官方推荐镜像 JDK下载地址 https://bell-sw.com/pages/downloads/ -FROM bellsoft/liberica-openjdk-debian:17.0.11-cds +#FROM bellsoft/liberica-openjdk-debian:17.0.11-cds +FROM registry.cn-hangzhou.aliyuncs.com/aliyun_openjdk/openjdk:17-jdk-slim #FROM bellsoft/liberica-openjdk-debian:21.0.5-cds #FROM findepi/graalvm:java17-native From 8b9e05351706194590d6b4939e1788643860cb9b Mon Sep 17 00:00:00 2001 From: mocheng <3057647414@qq.com> Date: Thu, 14 Aug 2025 16:28:30 +0800 Subject: [PATCH 21/68] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=9F=BA=E7=A1=80?= =?UTF-8?q?=E9=95=9C=E5=83=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitea/workflows/dev.yml | 62 +++++++++++++++++++++++++++++++--------- 1 file changed, 49 insertions(+), 13 deletions(-) diff --git a/.gitea/workflows/dev.yml b/.gitea/workflows/dev.yml index cf53dcee..51605f57 100644 --- a/.gitea/workflows/dev.yml +++ b/.gitea/workflows/dev.yml @@ -15,7 +15,7 @@ jobs: run: | export JAVA_HOME="/java17/java17" export MAVEN_HOME="/maven/apache-maven-3.9.11" - + if [ ! -f "$JAVA_HOME/bin/java" ]; then echo "错误:JDK可执行文件不存在于 $JAVA_HOME/bin/java" exit 1 @@ -24,12 +24,12 @@ jobs: echo "错误:Maven可执行文件不存在于 $MAVEN_HOME/bin/mvn" exit 1 fi - + echo "JAVA_HOME=$JAVA_HOME" >> $GITHUB_ENV echo "$JAVA_HOME/bin" >> $GITHUB_PATH echo "MAVEN_HOME=$MAVEN_HOME" >> $GITHUB_ENV echo "$MAVEN_HOME/bin" >> $GITHUB_PATH - + "$JAVA_HOME/bin/java" -version "$MAVEN_HOME/bin/mvn" -v @@ -68,7 +68,7 @@ jobs: echo "错误:主POM文件不存在" exit 1 fi - + retries=3 count=0 until "$MAVEN_HOME/bin/mvn" clean install -U -DskipTests -f "$MAIN_POM_ABSOLUTE_PATH"; do @@ -105,14 +105,14 @@ jobs: # "ruoyi-common-alibaba-bom" # "ruoyi-api-bom" # ) - + # for module in "${COMMON_MODULES[@]}"; do # MODULE_POM_ABSOLUTE_PATH="${GITHUB_WORKSPACE}/${module}/pom.xml" # if [ ! -f "$MODULE_POM_ABSOLUTE_PATH" ]; then # echo "警告:模块 $module 不存在,跳过" # continue # fi - + # retries=3 # count=0 # until "$MAVEN_HOME/bin/mvn" clean compile install -U -DskipTests -f "$MODULE_POM_ABSOLUTE_PATH"; do @@ -166,7 +166,7 @@ jobs: echo "错误:服务 $SERVICE_NAME 的POM文件不存在" exit 1 fi - + "$MAVEN_HOME/bin/mvn" clean package -U -DskipTests -f "$SERVICE_POM_ABSOLUTE_PATH" - name: 配置Docker Buildx @@ -184,22 +184,58 @@ jobs: run: | SERVICE_NAME="${{ matrix.service }}" DOCKERFILE_ABSOLUTE_PATH="${GITHUB_WORKSPACE}/${SERVICE_NAME}/Dockerfile" - + if [ -f "$DOCKERFILE_ABSOLUTE_PATH" ]; then echo "dockerfile_path=$DOCKERFILE_ABSOLUTE_PATH" >> $GITHUB_OUTPUT else echo "dockerfile_path=${GITHUB_WORKSPACE}/Dockerfile" >> $GITHUB_OUTPUT fi + # - name: 构建并推送Docker镜像(仅推送镜像,不上传JAR) + # uses: http://git.missmoc.top/mocheng/build-push-action@v5 + # with: + # context: "${{ github.workspace }}" + # file: ${{ github.workspace }}/${{ matrix.service }}/Dockerfile + # tags: 172.100.10.45:3000/by2025/smartparks/${{ matrix.service }}:latest + # # tags: ${{ secrets.REGISTRY_URL }}/by2025/$(echo ${{ matrix.service }} | tr 'A-Z' 'a-z'):${{ github.sha }} + # # tags: ${{ secrets.REGISTRY_URL }}/by2025/${{ matrix.service }}:2.0.4 + # push: true + # cache-from: type=gha + # cache-to: type=gha,mode=max + # - name: 构建并推送Docker镜像(仅推送镜像,不上传JAR) uses: http://git.missmoc.top/mocheng/build-push-action@v5 with: + # 指定构建上下文为当前工作目录 context: "${{ github.workspace }}" - file: ${{ github.workspace }}/${{ matrix.service }}/Dockerfile - tags: 172.100.10.45:3000/by2025/smartparks/${{ matrix.service }}:latest - # tags: ${{ secrets.REGISTRY_URL }}/by2025/$(echo ${{ matrix.service }} | tr 'A-Z' 'a-z'):${{ github.sha }} - # tags: ${{ secrets.REGISTRY_URL }}/by2025/${{ matrix.service }}:2.0.4 + + # 指定Dockerfile路径,基于矩阵中的服务名称 + file: "${{ github.workspace }}/${{ matrix.service }}/Dockerfile" + + # 镜像标签,推送到私有仓库 + tags: "172.100.10.45:3000/by2025/smartparks/${{ matrix.service }}:latest" + + # 启用镜像推送 push: true + + # 使用GitHub Actions缓存加速构建 cache-from: type=gha cache-to: type=gha,mode=max - \ No newline at end of file + + # 新增:设置镜像拉取超时时间(秒) + pull-timeout: 300 + + # 新增:构建参数,可在Dockerfile中使用ARG引用 + build-args: | + # 示例:使用国内镜像源加速基础镜像拉取 + BASE_IMAGE_MIRROR=registry.cn-hangzhou.aliyuncs.com + + # 新增:配置Docker守护进程的镜像加速源 + daemon-config: | + { + "registry-mirrors": [ + "https://registry.cn-hangzhou.aliyuncs.com", + "https://hub-mirror.c.163.com", + "https://mirror.baidubce.com" + ] + } From d9264b65ab02a4dc160942d37261363f96e04774 Mon Sep 17 00:00:00 2001 From: mocheng <3057647414@qq.com> Date: Thu, 14 Aug 2025 16:44:11 +0800 Subject: [PATCH 22/68] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=9F=BA=E7=A1=80?= =?UTF-8?q?=E9=95=9C=E5=83=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitea/workflows/dev.yml | 45 ++++------------------------------------ ruoyi-auth/Dockerfile | 3 ++- 2 files changed, 6 insertions(+), 42 deletions(-) diff --git a/.gitea/workflows/dev.yml b/.gitea/workflows/dev.yml index 51605f57..5a5e5464 100644 --- a/.gitea/workflows/dev.yml +++ b/.gitea/workflows/dev.yml @@ -191,51 +191,14 @@ jobs: echo "dockerfile_path=${GITHUB_WORKSPACE}/Dockerfile" >> $GITHUB_OUTPUT fi - # - name: 构建并推送Docker镜像(仅推送镜像,不上传JAR) - # uses: http://git.missmoc.top/mocheng/build-push-action@v5 - # with: - # context: "${{ github.workspace }}" - # file: ${{ github.workspace }}/${{ matrix.service }}/Dockerfile - # tags: 172.100.10.45:3000/by2025/smartparks/${{ matrix.service }}:latest - # # tags: ${{ secrets.REGISTRY_URL }}/by2025/$(echo ${{ matrix.service }} | tr 'A-Z' 'a-z'):${{ github.sha }} - # # tags: ${{ secrets.REGISTRY_URL }}/by2025/${{ matrix.service }}:2.0.4 - # push: true - # cache-from: type=gha - # cache-to: type=gha,mode=max - # - name: 构建并推送Docker镜像(仅推送镜像,不上传JAR) uses: http://git.missmoc.top/mocheng/build-push-action@v5 with: - # 指定构建上下文为当前工作目录 context: "${{ github.workspace }}" - - # 指定Dockerfile路径,基于矩阵中的服务名称 - file: "${{ github.workspace }}/${{ matrix.service }}/Dockerfile" - - # 镜像标签,推送到私有仓库 - tags: "172.100.10.45:3000/by2025/smartparks/${{ matrix.service }}:latest" - - # 启用镜像推送 + file: ${{ github.workspace }}/${{ matrix.service }}/Dockerfile + tags: 172.100.10.45:3000/by2025/smartparks/${{ matrix.service }}:latest + # tags: ${{ secrets.REGISTRY_URL }}/by2025/$(echo ${{ matrix.service }} | tr 'A-Z' 'a-z'):${{ github.sha }} + # tags: ${{ secrets.REGISTRY_URL }}/by2025/${{ matrix.service }}:2.0.4 push: true - - # 使用GitHub Actions缓存加速构建 cache-from: type=gha cache-to: type=gha,mode=max - - # 新增:设置镜像拉取超时时间(秒) - pull-timeout: 300 - - # 新增:构建参数,可在Dockerfile中使用ARG引用 - build-args: | - # 示例:使用国内镜像源加速基础镜像拉取 - BASE_IMAGE_MIRROR=registry.cn-hangzhou.aliyuncs.com - - # 新增:配置Docker守护进程的镜像加速源 - daemon-config: | - { - "registry-mirrors": [ - "https://registry.cn-hangzhou.aliyuncs.com", - "https://hub-mirror.c.163.com", - "https://mirror.baidubce.com" - ] - } diff --git a/ruoyi-auth/Dockerfile b/ruoyi-auth/Dockerfile index a1914e71..716df43d 100644 --- a/ruoyi-auth/Dockerfile +++ b/ruoyi-auth/Dockerfile @@ -1,7 +1,8 @@ # 贝尔实验室 Spring 官方推荐镜像 JDK下载地址 https://bell-sw.com/pages/downloads/ #FROM bellsoft/liberica-openjdk-debian:17.0.11-cds -FROM registry.cn-hangzhou.aliyuncs.com/aliyun_openjdk/openjdk:17-jdk-slim +#FROM registry.cn-hangzhou.aliyuncs.com/aliyun_openjdk/openjdk:17-jdk-slim #FROM bellsoft/liberica-openjdk-debian:21.0.5-cds +FROM 172.100.10.45:3000/by2025/base-images/liberica-openjdk-debian:17.0.11-cds #FROM findepi/graalvm:java17-native LABEL maintainer="Lion Li" From a8b21eeaa3d3c2fea082fc64d48baefcd77f8373 Mon Sep 17 00:00:00 2001 From: mocheng <3057647414@qq.com> Date: Thu, 14 Aug 2025 16:52:36 +0800 Subject: [PATCH 23/68] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=9F=BA=E7=A1=80?= =?UTF-8?q?=E9=95=9C=E5=83=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitea/workflows/dev.yml | 24 ++++++++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) diff --git a/.gitea/workflows/dev.yml b/.gitea/workflows/dev.yml index 5a5e5464..1931e454 100644 --- a/.gitea/workflows/dev.yml +++ b/.gitea/workflows/dev.yml @@ -195,10 +195,26 @@ jobs: uses: http://git.missmoc.top/mocheng/build-push-action@v5 with: context: "${{ github.workspace }}" - file: ${{ github.workspace }}/${{ matrix.service }}/Dockerfile - tags: 172.100.10.45:3000/by2025/smartparks/${{ matrix.service }}:latest - # tags: ${{ secrets.REGISTRY_URL }}/by2025/$(echo ${{ matrix.service }} | tr 'A-Z' 'a-z'):${{ github.sha }} - # tags: ${{ secrets.REGISTRY_URL }}/by2025/${{ matrix.service }}:2.0.4 + file: "${{ github.workspace }}/${{ matrix.service }}/Dockerfile" + tags: "172.100.10.45:3000/by2025/smartparks/${{ matrix.service }}:latest" push: true cache-from: type=gha cache-to: type=gha,mode=max + + # 关键配置:允许该仓库使用HTTP + daemon-config: | + { + "insecure-registries": ["172.100.10.45:3000"] + } + + # 确保buildx使用正确的网络配置 + driver-opts: | + network=host +# context: "${{ github.workspace }}" +# file: ${{ github.workspace }}/${{ matrix.service }}/Dockerfile +# tags: 172.100.10.45:3000/by2025/smartparks/${{ matrix.service }}:latest +# # tags: ${{ secrets.REGISTRY_URL }}/by2025/$(echo ${{ matrix.service }} | tr 'A-Z' 'a-z'):${{ github.sha }} +# # tags: ${{ secrets.REGISTRY_URL }}/by2025/${{ matrix.service }}:2.0.4 +# push: true +# cache-from: type=gha +# cache-to: type=gha,mode=max From ee0664c23b4a5ccb5251f12a1607eea46a255cb4 Mon Sep 17 00:00:00 2001 From: bichangxiong <3057647414@qq.com> Date: Thu, 14 Aug 2025 16:59:00 +0800 Subject: [PATCH 24/68] =?UTF-8?q?=E6=9B=B4=E6=96=B0=20.gitea/workflows/dev?= =?UTF-8?q?.yml?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitea/workflows/dev.yml | 156 +++++++++++++++++++-------------------- 1 file changed, 74 insertions(+), 82 deletions(-) diff --git a/.gitea/workflows/dev.yml b/.gitea/workflows/dev.yml index 1931e454..00c725ec 100644 --- a/.gitea/workflows/dev.yml +++ b/.gitea/workflows/dev.yml @@ -80,50 +80,50 @@ jobs: sleep 10 done - # build-common-modules: - # needs: build-parent-pom - # runs-on: ubuntu - # steps: - # - name: 拉取代码仓库 - # uses: http://git.missmoc.top/mocheng/checkout@v4 + build-common-modules: + needs: build-parent-pom + runs-on: ubuntu + steps: + - name: 拉取代码仓库 + uses: http://git.missmoc.top/mocheng/checkout@v4 - # - name: 配置环境变量 - # run: | - # export JAVA_HOME="/java17/java17" - # export MAVEN_HOME="/maven/apache-maven-3.9.11" - # echo "JAVA_HOME=$JAVA_HOME" >> $GITHUB_ENV - # echo "$JAVA_HOME/bin" >> $GITHUB_PATH - # echo "MAVEN_HOME=$MAVEN_HOME" >> $GITHUB_ENV - # echo "$MAVEN_HOME/bin" >> $GITHUB_PATH + - name: 配置环境变量 + run: | + export JAVA_HOME="/java17/java17" + export MAVEN_HOME="/maven/apache-maven-3.9.11" + echo "JAVA_HOME=$JAVA_HOME" >> $GITHUB_ENV + echo "$JAVA_HOME/bin" >> $GITHUB_PATH + echo "MAVEN_HOME=$MAVEN_HOME" >> $GITHUB_ENV + echo "$MAVEN_HOME/bin" >> $GITHUB_PATH - # - name: 构建通用模块(仅本地使用,不上传) - # run: | - # COMMON_MODULES=( - # "ruoyi-common" - # "ruoyi-api" - # "ruoyi-common-bom" - # "ruoyi-common-alibaba-bom" - # "ruoyi-api-bom" - # ) + - name: 构建通用模块(仅本地使用,不上传) + run: | + COMMON_MODULES=( + "ruoyi-common" + "ruoyi-api" + "ruoyi-common-bom" + "ruoyi-common-alibaba-bom" + "ruoyi-api-bom" + ) - # for module in "${COMMON_MODULES[@]}"; do - # MODULE_POM_ABSOLUTE_PATH="${GITHUB_WORKSPACE}/${module}/pom.xml" - # if [ ! -f "$MODULE_POM_ABSOLUTE_PATH" ]; then - # echo "警告:模块 $module 不存在,跳过" - # continue - # fi + for module in "${COMMON_MODULES[@]}"; do + MODULE_POM_ABSOLUTE_PATH="${GITHUB_WORKSPACE}/${module}/pom.xml" + if [ ! -f "$MODULE_POM_ABSOLUTE_PATH" ]; then + echo "警告:模块 $module 不存在,跳过" + continue + fi - # retries=3 - # count=0 - # until "$MAVEN_HOME/bin/mvn" clean compile install -U -DskipTests -f "$MODULE_POM_ABSOLUTE_PATH"; do - # count=$((count + 1)) - # if [ $count -ge $retries ]; then - # echo "错误:模块 $module 构建失败" - # exit 1 - # fi - # sleep 10 - # done - # done + retries=3 + count=0 + until "$MAVEN_HOME/bin/mvn" clean compile install -U -DskipTests -f "$MODULE_POM_ABSOLUTE_PATH"; do + count=$((count + 1)) + if [ $count -ge $retries ]; then + echo "错误:模块 $module 构建失败" + exit 1 + fi + sleep 10 + done + done build-and-push-services: needs: build-common-modules @@ -169,52 +169,44 @@ jobs: "$MAVEN_HOME/bin/mvn" clean package -U -DskipTests -f "$SERVICE_POM_ABSOLUTE_PATH" - - name: 配置Docker Buildx - uses: http://git.missmoc.top/mocheng/setup-buildx-action@v3 + - name: 配置Docker允许HTTP私有仓库 + run: | + # 配置Docker守护进程接受HTTP私有仓库 + sudo mkdir -p /etc/docker + echo '{ "insecure-registries": ["172.100.10.45:3000"] }' | sudo tee /etc/docker/daemon.json + # 重启Docker使配置生效 + sudo systemctl restart docker + # 验证配置 + docker info | grep -A 10 "Insecure Registries" - - name: 登录到容器仓库 - uses: http://git.missmoc.top/mocheng/login-action@v3 - with: - registry: ${{ secrets.REGISTRY_URL }} - username: ${{ secrets.REGISTRY_USER }} - password: ${{ secrets.REGISTRY_PASS }} + - name: 登录到私有容器仓库 + run: | + echo "${{ secrets.REGISTRY_PASS }}" | docker login ${{ secrets.REGISTRY_URL }} -u ${{ secrets.REGISTRY_USER }} --password-stdin - - name: 确定Dockerfile路径 - id: dockerfile-path + - name: 构建Docker镜像 run: | SERVICE_NAME="${{ matrix.service }}" - DOCKERFILE_ABSOLUTE_PATH="${GITHUB_WORKSPACE}/${SERVICE_NAME}/Dockerfile" - - if [ -f "$DOCKERFILE_ABSOLUTE_PATH" ]; then - echo "dockerfile_path=$DOCKERFILE_ABSOLUTE_PATH" >> $GITHUB_OUTPUT + # 替换路径中的斜杠为连字符,避免镜像标签中的路径问题 + SANITIZED_SERVICE_NAME=$(echo "$SERVICE_NAME" | tr '/' '-') + IMAGE_TAG="172.100.10.45:3000/by2025/smartparks/${SANITIZED_SERVICE_NAME}:latest" + + # 确定Dockerfile路径 + if [ -f "${GITHUB_WORKSPACE}/${SERVICE_NAME}/Dockerfile" ]; then + DOCKERFILE_PATH="${GITHUB_WORKSPACE}/${SERVICE_NAME}/Dockerfile" else - echo "dockerfile_path=${GITHUB_WORKSPACE}/Dockerfile" >> $GITHUB_OUTPUT + DOCKERFILE_PATH="${GITHUB_WORKSPACE}/Dockerfile" fi + + # 使用原生docker build命令构建镜像 + docker build -t "$IMAGE_TAG" -f "$DOCKERFILE_PATH" "${GITHUB_WORKSPACE}" + + # 保存镜像标签供后续步骤使用 + echo "IMAGE_TAG=$IMAGE_TAG" >> $GITHUB_ENV - - name: 构建并推送Docker镜像(仅推送镜像,不上传JAR) - uses: http://git.missmoc.top/mocheng/build-push-action@v5 - with: - context: "${{ github.workspace }}" - file: "${{ github.workspace }}/${{ matrix.service }}/Dockerfile" - tags: "172.100.10.45:3000/by2025/smartparks/${{ matrix.service }}:latest" - push: true - cache-from: type=gha - cache-to: type=gha,mode=max - - # 关键配置:允许该仓库使用HTTP - daemon-config: | - { - "insecure-registries": ["172.100.10.45:3000"] - } - - # 确保buildx使用正确的网络配置 - driver-opts: | - network=host -# context: "${{ github.workspace }}" -# file: ${{ github.workspace }}/${{ matrix.service }}/Dockerfile -# tags: 172.100.10.45:3000/by2025/smartparks/${{ matrix.service }}:latest -# # tags: ${{ secrets.REGISTRY_URL }}/by2025/$(echo ${{ matrix.service }} | tr 'A-Z' 'a-z'):${{ github.sha }} -# # tags: ${{ secrets.REGISTRY_URL }}/by2025/${{ matrix.service }}:2.0.4 -# push: true -# cache-from: type=gha -# cache-to: type=gha,mode=max + - name: 推送Docker镜像到私有仓库 + run: | + # 推送镜像 + docker push "$IMAGE_TAG" + + # 登出仓库 + docker logout ${{ secrets.REGISTRY_URL }} From 61883eff213e2e57747409cf9df30a3f14ff3049 Mon Sep 17 00:00:00 2001 From: mocheng <3057647414@qq.com> Date: Thu, 14 Aug 2025 17:08:31 +0800 Subject: [PATCH 25/68] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=9F=BA=E7=A1=80?= =?UTF-8?q?=E9=95=9C=E5=83=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitea/workflows/dev.yml | 339 ++++++++++++++++++++++++++++++++------- 1 file changed, 283 insertions(+), 56 deletions(-) diff --git a/.gitea/workflows/dev.yml b/.gitea/workflows/dev.yml index 1931e454..7947582b 100644 --- a/.gitea/workflows/dev.yml +++ b/.gitea/workflows/dev.yml @@ -1,3 +1,225 @@ +#run-name: ${{ gitea.actor }} 构建镜像并推送(不含JAR依赖上传)🚀 +#on: +# push: +# branches: +# - master +# +#jobs: +# build-parent-pom: +# runs-on: ubuntu +# steps: +# - name: 拉取代码仓库 +# uses: http://git.missmoc.top/mocheng/checkout@v4 +# +# - name: 配置环境变量(绝对路径) +# run: | +# export JAVA_HOME="/java17/java17" +# export MAVEN_HOME="/maven/apache-maven-3.9.11" +# +# if [ ! -f "$JAVA_HOME/bin/java" ]; then +# echo "错误:JDK可执行文件不存在于 $JAVA_HOME/bin/java" +# exit 1 +# fi +# if [ ! -f "$MAVEN_HOME/bin/mvn" ]; then +# echo "错误:Maven可执行文件不存在于 $MAVEN_HOME/bin/mvn" +# exit 1 +# fi +# +# echo "JAVA_HOME=$JAVA_HOME" >> $GITHUB_ENV +# echo "$JAVA_HOME/bin" >> $GITHUB_PATH +# echo "MAVEN_HOME=$MAVEN_HOME" >> $GITHUB_ENV +# echo "$MAVEN_HOME/bin" >> $GITHUB_PATH +# +# "$JAVA_HOME/bin/java" -version +# "$MAVEN_HOME/bin/mvn" -v +# +# - name: 配置Maven仓库 +# run: | +# mkdir -p ~/.m2 +# cat > ~/.m2/settings.xml << EOF +# +# +# /root/.m2/repository +# +# +# multi-repo +# +# +# local-repo +# file:///root/.m2/repository +# +# +# aliyun-public +# https://maven.aliyun.com/repository/public +# +# +# +# +# +# multi-repo +# +# +# EOF +# +# - name: 构建主POM(仅本地安装,不上传) +# run: | +# MAIN_POM_ABSOLUTE_PATH="${GITHUB_WORKSPACE}/pom.xml" +# if [ ! -f "$MAIN_POM_ABSOLUTE_PATH" ]; then +# echo "错误:主POM文件不存在" +# exit 1 +# fi +# +# retries=3 +# count=0 +# until "$MAVEN_HOME/bin/mvn" clean install -U -DskipTests -f "$MAIN_POM_ABSOLUTE_PATH"; do +# count=$((count + 1)) +# if [ $count -ge $retries ]; then +# echo "错误:主POM构建失败" +# exit 1 +# fi +# sleep 10 +# done +# +# # build-common-modules: +# # needs: build-parent-pom +# # runs-on: ubuntu +# # steps: +# # - name: 拉取代码仓库 +# # uses: http://git.missmoc.top/mocheng/checkout@v4 +# +# # - name: 配置环境变量 +# # run: | +# # export JAVA_HOME="/java17/java17" +# # export MAVEN_HOME="/maven/apache-maven-3.9.11" +# # echo "JAVA_HOME=$JAVA_HOME" >> $GITHUB_ENV +# # echo "$JAVA_HOME/bin" >> $GITHUB_PATH +# # echo "MAVEN_HOME=$MAVEN_HOME" >> $GITHUB_ENV +# # echo "$MAVEN_HOME/bin" >> $GITHUB_PATH +# +# # - name: 构建通用模块(仅本地使用,不上传) +# # run: | +# # COMMON_MODULES=( +# # "ruoyi-common" +# # "ruoyi-api" +# # "ruoyi-common-bom" +# # "ruoyi-common-alibaba-bom" +# # "ruoyi-api-bom" +# # ) +# +# # for module in "${COMMON_MODULES[@]}"; do +# # MODULE_POM_ABSOLUTE_PATH="${GITHUB_WORKSPACE}/${module}/pom.xml" +# # if [ ! -f "$MODULE_POM_ABSOLUTE_PATH" ]; then +# # echo "警告:模块 $module 不存在,跳过" +# # continue +# # fi +# +# # retries=3 +# # count=0 +# # until "$MAVEN_HOME/bin/mvn" clean compile install -U -DskipTests -f "$MODULE_POM_ABSOLUTE_PATH"; do +# # count=$((count + 1)) +# # if [ $count -ge $retries ]; then +# # echo "错误:模块 $module 构建失败" +# # exit 1 +# # fi +# # sleep 10 +# # done +# # done +# +# build-and-push-services: +# needs: build-common-modules +# runs-on: ubuntu +# strategy: +# matrix: +# service: +# - ruoyi-auth +# - ruoyi-gateway +# - ruoyi-modules/Property +# - ruoyi-modules/ruoyi-gen +# - ruoyi-modules/ruoyi-job +# - ruoyi-modules/ruoyi-resource +# - ruoyi-modules/ruoyi-system +# - ruoyi-modules/ruoyi-workflow +# - ruoyi-modules/Sis +# - ruoyi-visual/ruoyi-monitor +# - ruoyi-visual/ruoyi-nacos +# - ruoyi-seata-server +# - ruoyi-sentinel-dashboard +# - ruoyi-snailjob-server +# steps: +# - name: 拉取代码仓库 +# uses: http://git.missmoc.top/mocheng/checkout@v4 +# +# - name: 配置环境变量 +# run: | +# export JAVA_HOME="/java17/java17" +# export MAVEN_HOME="/maven/apache-maven-3.9.11" +# echo "JAVA_HOME=$JAVA_HOME" >> $GITHUB_ENV +# echo "$JAVA_HOME/bin" >> $GITHUB_PATH +# echo "MAVEN_HOME=$MAVEN_HOME" >> $GITHUB_ENV +# echo "$MAVEN_HOME/bin" >> $GITHUB_PATH +# +# - name: 构建服务模块 +# run: | +# SERVICE_NAME="${{ matrix.service }}" +# SERVICE_POM_ABSOLUTE_PATH="${GITHUB_WORKSPACE}/${SERVICE_NAME}/pom.xml" +# if [ ! -f "$SERVICE_POM_ABSOLUTE_PATH" ]; then +# echo "错误:服务 $SERVICE_NAME 的POM文件不存在" +# exit 1 +# fi +# +# "$MAVEN_HOME/bin/mvn" clean package -U -DskipTests -f "$SERVICE_POM_ABSOLUTE_PATH" +# +# - name: 配置Docker Buildx +# uses: http://git.missmoc.top/mocheng/setup-buildx-action@v3 +# +# - name: 登录到容器仓库 +# uses: http://git.missmoc.top/mocheng/login-action@v3 +# with: +# registry: ${{ secrets.REGISTRY_URL }} +# username: ${{ secrets.REGISTRY_USER }} +# password: ${{ secrets.REGISTRY_PASS }} +# +# - name: 确定Dockerfile路径 +# id: dockerfile-path +# run: | +# SERVICE_NAME="${{ matrix.service }}" +# DOCKERFILE_ABSOLUTE_PATH="${GITHUB_WORKSPACE}/${SERVICE_NAME}/Dockerfile" +# +# if [ -f "$DOCKERFILE_ABSOLUTE_PATH" ]; then +# echo "dockerfile_path=$DOCKERFILE_ABSOLUTE_PATH" >> $GITHUB_OUTPUT +# else +# echo "dockerfile_path=${GITHUB_WORKSPACE}/Dockerfile" >> $GITHUB_OUTPUT +# fi +# +# - name: 构建并推送Docker镜像(仅推送镜像,不上传JAR) +# uses: http://git.missmoc.top/mocheng/build-push-action@v5 +# with: +# context: "${{ github.workspace }}" +# file: "${{ github.workspace }}/${{ matrix.service }}/Dockerfile" +# tags: "172.100.10.45:3000/by2025/smartparks/${{ matrix.service }}:latest" +# push: true +# cache-from: type=gha +# cache-to: type=gha,mode=max +# +# # 关键配置:允许该仓库使用HTTP +# daemon-config: | +# { +# "insecure-registries": ["172.100.10.45:3000"] +# } +# +# # 确保buildx使用正确的网络配置 +# driver-opts: | +# network=host +## context: "${{ github.workspace }}" +## file: ${{ github.workspace }}/${{ matrix.service }}/Dockerfile +## tags: 172.100.10.45:3000/by2025/smartparks/${{ matrix.service }}:latest +## # tags: ${{ secrets.REGISTRY_URL }}/by2025/$(echo ${{ matrix.service }} | tr 'A-Z' 'a-z'):${{ github.sha }} +## # tags: ${{ secrets.REGISTRY_URL }}/by2025/${{ matrix.service }}:2.0.4 +## push: true +## cache-from: type=gha +## cache-to: type=gha,mode=max + + run-name: ${{ gitea.actor }} 构建镜像并推送(不含JAR依赖上传)🚀 on: push: @@ -80,50 +302,50 @@ jobs: sleep 10 done - # build-common-modules: - # needs: build-parent-pom - # runs-on: ubuntu - # steps: - # - name: 拉取代码仓库 - # uses: http://git.missmoc.top/mocheng/checkout@v4 + build-common-modules: + needs: build-parent-pom + runs-on: ubuntu + steps: + - name: 拉取代码仓库 + uses: http://git.missmoc.top/mocheng/checkout@v4 - # - name: 配置环境变量 - # run: | - # export JAVA_HOME="/java17/java17" - # export MAVEN_HOME="/maven/apache-maven-3.9.11" - # echo "JAVA_HOME=$JAVA_HOME" >> $GITHUB_ENV - # echo "$JAVA_HOME/bin" >> $GITHUB_PATH - # echo "MAVEN_HOME=$MAVEN_HOME" >> $GITHUB_ENV - # echo "$MAVEN_HOME/bin" >> $GITHUB_PATH + - name: 配置环境变量 + run: | + export JAVA_HOME="/java17/java17" + export MAVEN_HOME="/maven/apache-maven-3.9.11" + echo "JAVA_HOME=$JAVA_HOME" >> $GITHUB_ENV + echo "$JAVA_HOME/bin" >> $GITHUB_PATH + echo "MAVEN_HOME=$MAVEN_HOME" >> $GITHUB_ENV + echo "$MAVEN_HOME/bin" >> $GITHUB_PATH - # - name: 构建通用模块(仅本地使用,不上传) - # run: | - # COMMON_MODULES=( - # "ruoyi-common" - # "ruoyi-api" - # "ruoyi-common-bom" - # "ruoyi-common-alibaba-bom" - # "ruoyi-api-bom" - # ) + - name: 构建通用模块(仅本地使用,不上传) + run: | + COMMON_MODULES=( + "ruoyi-common" + "ruoyi-api" + "ruoyi-common-bom" + "ruoyi-common-alibaba-bom" + "ruoyi-api-bom" + ) - # for module in "${COMMON_MODULES[@]}"; do - # MODULE_POM_ABSOLUTE_PATH="${GITHUB_WORKSPACE}/${module}/pom.xml" - # if [ ! -f "$MODULE_POM_ABSOLUTE_PATH" ]; then - # echo "警告:模块 $module 不存在,跳过" - # continue - # fi + for module in "${COMMON_MODULES[@]}"; do + MODULE_POM_ABSOLUTE_PATH="${GITHUB_WORKSPACE}/${module}/pom.xml" + if [ ! -f "$MODULE_POM_ABSOLUTE_PATH" ]; then + echo "警告:模块 $module 不存在,跳过" + continue + fi - # retries=3 - # count=0 - # until "$MAVEN_HOME/bin/mvn" clean compile install -U -DskipTests -f "$MODULE_POM_ABSOLUTE_PATH"; do - # count=$((count + 1)) - # if [ $count -ge $retries ]; then - # echo "错误:模块 $module 构建失败" - # exit 1 - # fi - # sleep 10 - # done - # done + retries=3 + count=0 + until "$MAVEN_HOME/bin/mvn" clean compile install -U -DskipTests -f "$MODULE_POM_ABSOLUTE_PATH"; do + count=$((count + 1)) + if [ $count -ge $retries ]; then + echo "错误:模块 $module 构建失败" + exit 1 + fi + sleep 10 + done + done build-and-push-services: needs: build-common-modules @@ -169,8 +391,21 @@ jobs: "$MAVEN_HOME/bin/mvn" clean package -U -DskipTests -f "$SERVICE_POM_ABSOLUTE_PATH" - - name: 配置Docker Buildx + - name: 检查JAR文件是否存在 + run: | + SERVICE_NAME="${{ matrix.service }}" + JAR_PATH="${GITHUB_WORKSPACE}/${SERVICE_NAME}/target/$(basename ${SERVICE_NAME}).jar" + if [ ! -f "$JAR_PATH" ]; then + echo "错误:JAR文件不存在 - $JAR_PATH" + echo "目标目录内容:" + ls -l "${GITHUB_WORKSPACE}/${SERVICE_NAME}/target" + exit 1 + fi + + - name: 配置Docker Buildx(使用原生Docker驱动) uses: http://git.missmoc.top/mocheng/setup-buildx-action@v3 + with: + driver: docker # 避免容器化驱动的网络隔离问题 - name: 登录到容器仓库 uses: http://git.missmoc.top/mocheng/login-action@v3 @@ -194,27 +429,19 @@ jobs: - name: 构建并推送Docker镜像(仅推送镜像,不上传JAR) uses: http://git.missmoc.top/mocheng/build-push-action@v5 with: - context: "${{ github.workspace }}" - file: "${{ github.workspace }}/${{ matrix.service }}/Dockerfile" - tags: "172.100.10.45:3000/by2025/smartparks/${{ matrix.service }}:latest" + # 使用服务模块目录作为构建上下文(确保能找到target/JAR) + context: "${{ github.workspace }}/${{ matrix.service }}" + file: "${{ steps.dockerfile-path.outputs.dockerfile_path }}" + # 处理镜像标签中的斜杠(避免格式错误) + tags: "172.100.10.45:3000/by2025/smartparks/$(echo ${{ matrix.service }} | tr '/' '-'):latest" push: true cache-from: type=gha cache-to: type=gha,mode=max - - # 关键配置:允许该仓库使用HTTP + # 允许HTTP访问私有仓库 daemon-config: | { "insecure-registries": ["172.100.10.45:3000"] } - - # 确保buildx使用正确的网络配置 + # 禁用容器化网络,使用主机网络 driver-opts: | network=host -# context: "${{ github.workspace }}" -# file: ${{ github.workspace }}/${{ matrix.service }}/Dockerfile -# tags: 172.100.10.45:3000/by2025/smartparks/${{ matrix.service }}:latest -# # tags: ${{ secrets.REGISTRY_URL }}/by2025/$(echo ${{ matrix.service }} | tr 'A-Z' 'a-z'):${{ github.sha }} -# # tags: ${{ secrets.REGISTRY_URL }}/by2025/${{ matrix.service }}:2.0.4 -# push: true -# cache-from: type=gha -# cache-to: type=gha,mode=max From 6a7a0a344f40d613dc69fb34bcab614b5caf41b9 Mon Sep 17 00:00:00 2001 From: mocheng <3057647414@qq.com> Date: Thu, 14 Aug 2025 17:09:22 +0800 Subject: [PATCH 26/68] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=9F=BA=E7=A1=80?= =?UTF-8?q?=E9=95=9C=E5=83=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitea/workflows/dev.yml | 222 --------------------------------------- 1 file changed, 222 deletions(-) diff --git a/.gitea/workflows/dev.yml b/.gitea/workflows/dev.yml index 7947582b..3b644811 100644 --- a/.gitea/workflows/dev.yml +++ b/.gitea/workflows/dev.yml @@ -1,225 +1,3 @@ -#run-name: ${{ gitea.actor }} 构建镜像并推送(不含JAR依赖上传)🚀 -#on: -# push: -# branches: -# - master -# -#jobs: -# build-parent-pom: -# runs-on: ubuntu -# steps: -# - name: 拉取代码仓库 -# uses: http://git.missmoc.top/mocheng/checkout@v4 -# -# - name: 配置环境变量(绝对路径) -# run: | -# export JAVA_HOME="/java17/java17" -# export MAVEN_HOME="/maven/apache-maven-3.9.11" -# -# if [ ! -f "$JAVA_HOME/bin/java" ]; then -# echo "错误:JDK可执行文件不存在于 $JAVA_HOME/bin/java" -# exit 1 -# fi -# if [ ! -f "$MAVEN_HOME/bin/mvn" ]; then -# echo "错误:Maven可执行文件不存在于 $MAVEN_HOME/bin/mvn" -# exit 1 -# fi -# -# echo "JAVA_HOME=$JAVA_HOME" >> $GITHUB_ENV -# echo "$JAVA_HOME/bin" >> $GITHUB_PATH -# echo "MAVEN_HOME=$MAVEN_HOME" >> $GITHUB_ENV -# echo "$MAVEN_HOME/bin" >> $GITHUB_PATH -# -# "$JAVA_HOME/bin/java" -version -# "$MAVEN_HOME/bin/mvn" -v -# -# - name: 配置Maven仓库 -# run: | -# mkdir -p ~/.m2 -# cat > ~/.m2/settings.xml << EOF -# -# -# /root/.m2/repository -# -# -# multi-repo -# -# -# local-repo -# file:///root/.m2/repository -# -# -# aliyun-public -# https://maven.aliyun.com/repository/public -# -# -# -# -# -# multi-repo -# -# -# EOF -# -# - name: 构建主POM(仅本地安装,不上传) -# run: | -# MAIN_POM_ABSOLUTE_PATH="${GITHUB_WORKSPACE}/pom.xml" -# if [ ! -f "$MAIN_POM_ABSOLUTE_PATH" ]; then -# echo "错误:主POM文件不存在" -# exit 1 -# fi -# -# retries=3 -# count=0 -# until "$MAVEN_HOME/bin/mvn" clean install -U -DskipTests -f "$MAIN_POM_ABSOLUTE_PATH"; do -# count=$((count + 1)) -# if [ $count -ge $retries ]; then -# echo "错误:主POM构建失败" -# exit 1 -# fi -# sleep 10 -# done -# -# # build-common-modules: -# # needs: build-parent-pom -# # runs-on: ubuntu -# # steps: -# # - name: 拉取代码仓库 -# # uses: http://git.missmoc.top/mocheng/checkout@v4 -# -# # - name: 配置环境变量 -# # run: | -# # export JAVA_HOME="/java17/java17" -# # export MAVEN_HOME="/maven/apache-maven-3.9.11" -# # echo "JAVA_HOME=$JAVA_HOME" >> $GITHUB_ENV -# # echo "$JAVA_HOME/bin" >> $GITHUB_PATH -# # echo "MAVEN_HOME=$MAVEN_HOME" >> $GITHUB_ENV -# # echo "$MAVEN_HOME/bin" >> $GITHUB_PATH -# -# # - name: 构建通用模块(仅本地使用,不上传) -# # run: | -# # COMMON_MODULES=( -# # "ruoyi-common" -# # "ruoyi-api" -# # "ruoyi-common-bom" -# # "ruoyi-common-alibaba-bom" -# # "ruoyi-api-bom" -# # ) -# -# # for module in "${COMMON_MODULES[@]}"; do -# # MODULE_POM_ABSOLUTE_PATH="${GITHUB_WORKSPACE}/${module}/pom.xml" -# # if [ ! -f "$MODULE_POM_ABSOLUTE_PATH" ]; then -# # echo "警告:模块 $module 不存在,跳过" -# # continue -# # fi -# -# # retries=3 -# # count=0 -# # until "$MAVEN_HOME/bin/mvn" clean compile install -U -DskipTests -f "$MODULE_POM_ABSOLUTE_PATH"; do -# # count=$((count + 1)) -# # if [ $count -ge $retries ]; then -# # echo "错误:模块 $module 构建失败" -# # exit 1 -# # fi -# # sleep 10 -# # done -# # done -# -# build-and-push-services: -# needs: build-common-modules -# runs-on: ubuntu -# strategy: -# matrix: -# service: -# - ruoyi-auth -# - ruoyi-gateway -# - ruoyi-modules/Property -# - ruoyi-modules/ruoyi-gen -# - ruoyi-modules/ruoyi-job -# - ruoyi-modules/ruoyi-resource -# - ruoyi-modules/ruoyi-system -# - ruoyi-modules/ruoyi-workflow -# - ruoyi-modules/Sis -# - ruoyi-visual/ruoyi-monitor -# - ruoyi-visual/ruoyi-nacos -# - ruoyi-seata-server -# - ruoyi-sentinel-dashboard -# - ruoyi-snailjob-server -# steps: -# - name: 拉取代码仓库 -# uses: http://git.missmoc.top/mocheng/checkout@v4 -# -# - name: 配置环境变量 -# run: | -# export JAVA_HOME="/java17/java17" -# export MAVEN_HOME="/maven/apache-maven-3.9.11" -# echo "JAVA_HOME=$JAVA_HOME" >> $GITHUB_ENV -# echo "$JAVA_HOME/bin" >> $GITHUB_PATH -# echo "MAVEN_HOME=$MAVEN_HOME" >> $GITHUB_ENV -# echo "$MAVEN_HOME/bin" >> $GITHUB_PATH -# -# - name: 构建服务模块 -# run: | -# SERVICE_NAME="${{ matrix.service }}" -# SERVICE_POM_ABSOLUTE_PATH="${GITHUB_WORKSPACE}/${SERVICE_NAME}/pom.xml" -# if [ ! -f "$SERVICE_POM_ABSOLUTE_PATH" ]; then -# echo "错误:服务 $SERVICE_NAME 的POM文件不存在" -# exit 1 -# fi -# -# "$MAVEN_HOME/bin/mvn" clean package -U -DskipTests -f "$SERVICE_POM_ABSOLUTE_PATH" -# -# - name: 配置Docker Buildx -# uses: http://git.missmoc.top/mocheng/setup-buildx-action@v3 -# -# - name: 登录到容器仓库 -# uses: http://git.missmoc.top/mocheng/login-action@v3 -# with: -# registry: ${{ secrets.REGISTRY_URL }} -# username: ${{ secrets.REGISTRY_USER }} -# password: ${{ secrets.REGISTRY_PASS }} -# -# - name: 确定Dockerfile路径 -# id: dockerfile-path -# run: | -# SERVICE_NAME="${{ matrix.service }}" -# DOCKERFILE_ABSOLUTE_PATH="${GITHUB_WORKSPACE}/${SERVICE_NAME}/Dockerfile" -# -# if [ -f "$DOCKERFILE_ABSOLUTE_PATH" ]; then -# echo "dockerfile_path=$DOCKERFILE_ABSOLUTE_PATH" >> $GITHUB_OUTPUT -# else -# echo "dockerfile_path=${GITHUB_WORKSPACE}/Dockerfile" >> $GITHUB_OUTPUT -# fi -# -# - name: 构建并推送Docker镜像(仅推送镜像,不上传JAR) -# uses: http://git.missmoc.top/mocheng/build-push-action@v5 -# with: -# context: "${{ github.workspace }}" -# file: "${{ github.workspace }}/${{ matrix.service }}/Dockerfile" -# tags: "172.100.10.45:3000/by2025/smartparks/${{ matrix.service }}:latest" -# push: true -# cache-from: type=gha -# cache-to: type=gha,mode=max -# -# # 关键配置:允许该仓库使用HTTP -# daemon-config: | -# { -# "insecure-registries": ["172.100.10.45:3000"] -# } -# -# # 确保buildx使用正确的网络配置 -# driver-opts: | -# network=host -## context: "${{ github.workspace }}" -## file: ${{ github.workspace }}/${{ matrix.service }}/Dockerfile -## tags: 172.100.10.45:3000/by2025/smartparks/${{ matrix.service }}:latest -## # tags: ${{ secrets.REGISTRY_URL }}/by2025/$(echo ${{ matrix.service }} | tr 'A-Z' 'a-z'):${{ github.sha }} -## # tags: ${{ secrets.REGISTRY_URL }}/by2025/${{ matrix.service }}:2.0.4 -## push: true -## cache-from: type=gha -## cache-to: type=gha,mode=max - - run-name: ${{ gitea.actor }} 构建镜像并推送(不含JAR依赖上传)🚀 on: push: From 67b3ae8d17016d79d584754b4fe2b39987499404 Mon Sep 17 00:00:00 2001 From: dy <2389062315@qq.com> Date: Thu, 14 Aug 2025 17:18:33 +0800 Subject: [PATCH 27/68] 1 --- .../java/org/dromara/property/domain/AttendanceArea.java | 2 +- .../org/dromara/property/domain/bo/AttendanceAreaBo.java | 4 +++- .../property/service/impl/AttendanceAreaServiceImpl.java | 7 +++++++ .../org/dromara/sis/controller/AlarmPushController.java | 2 +- 4 files changed, 12 insertions(+), 3 deletions(-) diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/AttendanceArea.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/AttendanceArea.java index 12dd4157..e93cd13d 100644 --- a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/AttendanceArea.java +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/AttendanceArea.java @@ -30,7 +30,7 @@ public class AttendanceArea extends TenantEntity { /** * 摄像机id */ - private Long deviceManageId; + private String deviceManageId; /** * 区域 diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/bo/AttendanceAreaBo.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/bo/AttendanceAreaBo.java index 6f4b3039..b65fc902 100644 --- a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/bo/AttendanceAreaBo.java +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/bo/AttendanceAreaBo.java @@ -9,6 +9,8 @@ import lombok.Data; import lombok.EqualsAndHashCode; import jakarta.validation.constraints.*; +import java.util.List; + /** * 区域区域管理业务对象 attendance_area * @@ -29,7 +31,7 @@ public class AttendanceAreaBo extends BaseEntity { /** * 摄像机id */ - private Long deviceManageId; + private List deviceManageId; /** * 区域 diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/AttendanceAreaServiceImpl.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/AttendanceAreaServiceImpl.java index e22440b7..113999b1 100644 --- a/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/AttendanceAreaServiceImpl.java +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/AttendanceAreaServiceImpl.java @@ -1,5 +1,6 @@ package org.dromara.property.service.impl; +import cn.hutool.core.util.ObjectUtil; import org.dromara.common.core.utils.MapstructUtils; import org.dromara.common.core.utils.StringUtils; import org.dromara.common.mybatis.core.page.TableDataInfo; @@ -89,6 +90,12 @@ public class AttendanceAreaServiceImpl implements IAttendanceAreaService { @Override public Boolean insertByBo(AttendanceAreaBo bo) { AttendanceArea add = MapstructUtils.convert(bo, AttendanceArea.class); + if (ObjectUtil.isNotEmpty(bo.getDeviceManageId())) { + assert add != null; + // 将 deviceManageId 集合转换为以逗号分隔的字符串 + String deviceManageIdsStr = StringUtils.join(bo.getDeviceManageId(), ","); + add.setDeviceManageId(deviceManageIdsStr); + } validEntityBeforeSave(add); boolean flag = baseMapper.insert(add) > 0; if (flag) { diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/controller/AlarmPushController.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/controller/AlarmPushController.java index 929d50c0..1ed9b47c 100644 --- a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/controller/AlarmPushController.java +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/controller/AlarmPushController.java @@ -130,7 +130,7 @@ public class AlarmPushController { sisAlarmEvents.setId(recordId); // 转换类型和级别 - sisAlarmEvents.setType(convertToLong(recordMap.get("Type"))); +// sisAlarmEvents.setType(convertToLong(recordMap.get("Type"))); sisAlarmEvents.setLevel(convertToLong(recordMap.get("Level"))); // 设备信息 From 007c40b9e645b71af526c06f3d7d4185cc9cd14d Mon Sep 17 00:00:00 2001 From: mocheng <3057647414@qq.com> Date: Thu, 14 Aug 2025 17:18:34 +0800 Subject: [PATCH 28/68] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=9F=BA=E7=A1=80?= =?UTF-8?q?=E9=95=9C=E5=83=8F1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitea/workflows/dev.yml | 117 +++++++++++++++++++-------------------- 1 file changed, 56 insertions(+), 61 deletions(-) diff --git a/.gitea/workflows/dev.yml b/.gitea/workflows/dev.yml index 3b644811..1931e454 100644 --- a/.gitea/workflows/dev.yml +++ b/.gitea/workflows/dev.yml @@ -80,50 +80,50 @@ jobs: sleep 10 done - build-common-modules: - needs: build-parent-pom - runs-on: ubuntu - steps: - - name: 拉取代码仓库 - uses: http://git.missmoc.top/mocheng/checkout@v4 + # build-common-modules: + # needs: build-parent-pom + # runs-on: ubuntu + # steps: + # - name: 拉取代码仓库 + # uses: http://git.missmoc.top/mocheng/checkout@v4 - - name: 配置环境变量 - run: | - export JAVA_HOME="/java17/java17" - export MAVEN_HOME="/maven/apache-maven-3.9.11" - echo "JAVA_HOME=$JAVA_HOME" >> $GITHUB_ENV - echo "$JAVA_HOME/bin" >> $GITHUB_PATH - echo "MAVEN_HOME=$MAVEN_HOME" >> $GITHUB_ENV - echo "$MAVEN_HOME/bin" >> $GITHUB_PATH + # - name: 配置环境变量 + # run: | + # export JAVA_HOME="/java17/java17" + # export MAVEN_HOME="/maven/apache-maven-3.9.11" + # echo "JAVA_HOME=$JAVA_HOME" >> $GITHUB_ENV + # echo "$JAVA_HOME/bin" >> $GITHUB_PATH + # echo "MAVEN_HOME=$MAVEN_HOME" >> $GITHUB_ENV + # echo "$MAVEN_HOME/bin" >> $GITHUB_PATH - - name: 构建通用模块(仅本地使用,不上传) - run: | - COMMON_MODULES=( - "ruoyi-common" - "ruoyi-api" - "ruoyi-common-bom" - "ruoyi-common-alibaba-bom" - "ruoyi-api-bom" - ) + # - name: 构建通用模块(仅本地使用,不上传) + # run: | + # COMMON_MODULES=( + # "ruoyi-common" + # "ruoyi-api" + # "ruoyi-common-bom" + # "ruoyi-common-alibaba-bom" + # "ruoyi-api-bom" + # ) - for module in "${COMMON_MODULES[@]}"; do - MODULE_POM_ABSOLUTE_PATH="${GITHUB_WORKSPACE}/${module}/pom.xml" - if [ ! -f "$MODULE_POM_ABSOLUTE_PATH" ]; then - echo "警告:模块 $module 不存在,跳过" - continue - fi + # for module in "${COMMON_MODULES[@]}"; do + # MODULE_POM_ABSOLUTE_PATH="${GITHUB_WORKSPACE}/${module}/pom.xml" + # if [ ! -f "$MODULE_POM_ABSOLUTE_PATH" ]; then + # echo "警告:模块 $module 不存在,跳过" + # continue + # fi - retries=3 - count=0 - until "$MAVEN_HOME/bin/mvn" clean compile install -U -DskipTests -f "$MODULE_POM_ABSOLUTE_PATH"; do - count=$((count + 1)) - if [ $count -ge $retries ]; then - echo "错误:模块 $module 构建失败" - exit 1 - fi - sleep 10 - done - done + # retries=3 + # count=0 + # until "$MAVEN_HOME/bin/mvn" clean compile install -U -DskipTests -f "$MODULE_POM_ABSOLUTE_PATH"; do + # count=$((count + 1)) + # if [ $count -ge $retries ]; then + # echo "错误:模块 $module 构建失败" + # exit 1 + # fi + # sleep 10 + # done + # done build-and-push-services: needs: build-common-modules @@ -169,21 +169,8 @@ jobs: "$MAVEN_HOME/bin/mvn" clean package -U -DskipTests -f "$SERVICE_POM_ABSOLUTE_PATH" - - name: 检查JAR文件是否存在 - run: | - SERVICE_NAME="${{ matrix.service }}" - JAR_PATH="${GITHUB_WORKSPACE}/${SERVICE_NAME}/target/$(basename ${SERVICE_NAME}).jar" - if [ ! -f "$JAR_PATH" ]; then - echo "错误:JAR文件不存在 - $JAR_PATH" - echo "目标目录内容:" - ls -l "${GITHUB_WORKSPACE}/${SERVICE_NAME}/target" - exit 1 - fi - - - name: 配置Docker Buildx(使用原生Docker驱动) + - name: 配置Docker Buildx uses: http://git.missmoc.top/mocheng/setup-buildx-action@v3 - with: - driver: docker # 避免容器化驱动的网络隔离问题 - name: 登录到容器仓库 uses: http://git.missmoc.top/mocheng/login-action@v3 @@ -207,19 +194,27 @@ jobs: - name: 构建并推送Docker镜像(仅推送镜像,不上传JAR) uses: http://git.missmoc.top/mocheng/build-push-action@v5 with: - # 使用服务模块目录作为构建上下文(确保能找到target/JAR) - context: "${{ github.workspace }}/${{ matrix.service }}" - file: "${{ steps.dockerfile-path.outputs.dockerfile_path }}" - # 处理镜像标签中的斜杠(避免格式错误) - tags: "172.100.10.45:3000/by2025/smartparks/$(echo ${{ matrix.service }} | tr '/' '-'):latest" + context: "${{ github.workspace }}" + file: "${{ github.workspace }}/${{ matrix.service }}/Dockerfile" + tags: "172.100.10.45:3000/by2025/smartparks/${{ matrix.service }}:latest" push: true cache-from: type=gha cache-to: type=gha,mode=max - # 允许HTTP访问私有仓库 + + # 关键配置:允许该仓库使用HTTP daemon-config: | { "insecure-registries": ["172.100.10.45:3000"] } - # 禁用容器化网络,使用主机网络 + + # 确保buildx使用正确的网络配置 driver-opts: | network=host +# context: "${{ github.workspace }}" +# file: ${{ github.workspace }}/${{ matrix.service }}/Dockerfile +# tags: 172.100.10.45:3000/by2025/smartparks/${{ matrix.service }}:latest +# # tags: ${{ secrets.REGISTRY_URL }}/by2025/$(echo ${{ matrix.service }} | tr 'A-Z' 'a-z'):${{ github.sha }} +# # tags: ${{ secrets.REGISTRY_URL }}/by2025/${{ matrix.service }}:2.0.4 +# push: true +# cache-from: type=gha +# cache-to: type=gha,mode=max From 86ba03167bdc6eb81ebc5fdeeed263153feeca44 Mon Sep 17 00:00:00 2001 From: dy <2389062315@qq.com> Date: Thu, 14 Aug 2025 17:21:14 +0800 Subject: [PATCH 29/68] 1 --- .../Sis/src/main/java/org/dromara/sis/task/DataSyncTask.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/task/DataSyncTask.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/task/DataSyncTask.java index b9a4012d..b46809bc 100644 --- a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/task/DataSyncTask.java +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/task/DataSyncTask.java @@ -86,7 +86,7 @@ public class DataSyncTask { //同步成功后,将两张表的数据合并到alarmEvents表中 SisAlarmEventsBo sisAlarmEvents = new SisAlarmEventsBo(); sisAlarmEvents.setId(recordId); - sisAlarmEvents.setType(Long.valueOf((Integer) recordMap.get("Type"))); +// sisAlarmEvents.setType(Long.valueOf((Integer) recordMap.get("Type"))); sisAlarmEvents.setLevel(Long.valueOf((Integer) recordMap.get("Level"))); sisAlarmEvents.setDeviceIp((String) recordMap.get("DeviceSipNum")); sisAlarmEvents.setDeviceName(recordMap.get("DeviceName").toString()); From b75b7994323b11dc1b702dea9b51a716df65e38c Mon Sep 17 00:00:00 2001 From: yuyongle <1150359267@qq.com> Date: Thu, 14 Aug 2025 17:23:36 +0800 Subject: [PATCH 30/68] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E8=B0=83=E6=9F=A5?= =?UTF-8?q?=E9=97=AE=E5=8D=B7=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/QuestionnaireController.java | 0 .../mobile/MServiceWorkOrdersController.java | 16 ++++++++++++---- .../dromara/property/domain/Questionnaire.java | 0 .../property/domain/QuestionnaireQuestion.java | 0 .../domain/QuestionnaireQuestionItem.java | 0 .../property/domain/bo/QuestionnaireBo.java | 0 .../domain/bo/QuestionnaireQuestionBo.java | 0 .../domain/bo/QuestionnaireQuestionItemBo.java | 0 .../domain/vo/QuestionnaireQuestionItemVo.java | 0 .../domain/vo/QuestionnaireQuestionVo.java | 0 .../property/domain/vo/QuestionnaireVo.java | 0 .../property/mapper/QuestionnaireMapper.java | 0 .../mapper/QuestionnaireQuestionItemMapper.java | 0 .../mapper/QuestionnaireQuestionMapper.java | 0 .../property/service/IQuestionnaireService.java | 0 .../service/impl/QuestionnaireServiceImpl.java | 0 .../mapper/Property/QuestionnaireMapper.xml | 0 .../Property/QuestionnaireQuestionItemMapper.xml | 0 .../Property/QuestionnaireQuestionMapper.xml | 0 19 files changed, 12 insertions(+), 4 deletions(-) create mode 100644 ruoyi-modules/Property/src/main/java/org/dromara/property/controller/QuestionnaireController.java create mode 100644 ruoyi-modules/Property/src/main/java/org/dromara/property/domain/Questionnaire.java create mode 100644 ruoyi-modules/Property/src/main/java/org/dromara/property/domain/QuestionnaireQuestion.java create mode 100644 ruoyi-modules/Property/src/main/java/org/dromara/property/domain/QuestionnaireQuestionItem.java create mode 100644 ruoyi-modules/Property/src/main/java/org/dromara/property/domain/bo/QuestionnaireBo.java create mode 100644 ruoyi-modules/Property/src/main/java/org/dromara/property/domain/bo/QuestionnaireQuestionBo.java create mode 100644 ruoyi-modules/Property/src/main/java/org/dromara/property/domain/bo/QuestionnaireQuestionItemBo.java create mode 100644 ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/QuestionnaireQuestionItemVo.java create mode 100644 ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/QuestionnaireQuestionVo.java create mode 100644 ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/QuestionnaireVo.java create mode 100644 ruoyi-modules/Property/src/main/java/org/dromara/property/mapper/QuestionnaireMapper.java create mode 100644 ruoyi-modules/Property/src/main/java/org/dromara/property/mapper/QuestionnaireQuestionItemMapper.java create mode 100644 ruoyi-modules/Property/src/main/java/org/dromara/property/mapper/QuestionnaireQuestionMapper.java create mode 100644 ruoyi-modules/Property/src/main/java/org/dromara/property/service/IQuestionnaireService.java create mode 100644 ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/QuestionnaireServiceImpl.java create mode 100644 ruoyi-modules/Property/src/main/resources/mapper/Property/QuestionnaireMapper.xml create mode 100644 ruoyi-modules/Property/src/main/resources/mapper/Property/QuestionnaireQuestionItemMapper.xml create mode 100644 ruoyi-modules/Property/src/main/resources/mapper/Property/QuestionnaireQuestionMapper.xml diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/controller/QuestionnaireController.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/controller/QuestionnaireController.java new file mode 100644 index 00000000..e69de29b diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/controller/mobile/MServiceWorkOrdersController.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/controller/mobile/MServiceWorkOrdersController.java index 2114b401..94ce085d 100644 --- a/ruoyi-modules/Property/src/main/java/org/dromara/property/controller/mobile/MServiceWorkOrdersController.java +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/controller/mobile/MServiceWorkOrdersController.java @@ -6,14 +6,15 @@ import org.dromara.common.core.validate.AddGroup; import org.dromara.common.idempotent.annotation.RepeatSubmit; import org.dromara.common.log.annotation.Log; import org.dromara.common.log.enums.BusinessType; +import org.dromara.common.mybatis.core.page.PageQuery; +import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.common.web.core.BaseController; +import org.dromara.property.domain.bo.ServiceWorkOrdersBo; import org.dromara.property.domain.bo.mobile.MServiceWorkOrdersBo; +import org.dromara.property.domain.vo.ServiceWorkOrdersVo; import org.dromara.property.service.IServiceWorkOrdersService; import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; /** * 【业务管理-工单处理】 @@ -38,4 +39,11 @@ public class MServiceWorkOrdersController extends BaseController { public R add(@Validated(AddGroup.class) @RequestBody MServiceWorkOrdersBo bo) { return toAjax(serviceWorkOrdersService.insertMServiceWorkOrdersBo(bo)); } + /** + * 小程序查询【工单处理】 + */ + @GetMapping("/list") + public TableDataInfo list(ServiceWorkOrdersBo bo, PageQuery pageQuery) { + return serviceWorkOrdersService.queryPageList(bo, pageQuery); + } } diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/Questionnaire.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/Questionnaire.java new file mode 100644 index 00000000..e69de29b diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/QuestionnaireQuestion.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/QuestionnaireQuestion.java new file mode 100644 index 00000000..e69de29b diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/QuestionnaireQuestionItem.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/QuestionnaireQuestionItem.java new file mode 100644 index 00000000..e69de29b diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/bo/QuestionnaireBo.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/bo/QuestionnaireBo.java new file mode 100644 index 00000000..e69de29b diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/bo/QuestionnaireQuestionBo.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/bo/QuestionnaireQuestionBo.java new file mode 100644 index 00000000..e69de29b diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/bo/QuestionnaireQuestionItemBo.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/bo/QuestionnaireQuestionItemBo.java new file mode 100644 index 00000000..e69de29b diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/QuestionnaireQuestionItemVo.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/QuestionnaireQuestionItemVo.java new file mode 100644 index 00000000..e69de29b diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/QuestionnaireQuestionVo.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/QuestionnaireQuestionVo.java new file mode 100644 index 00000000..e69de29b diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/QuestionnaireVo.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/QuestionnaireVo.java new file mode 100644 index 00000000..e69de29b diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/mapper/QuestionnaireMapper.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/mapper/QuestionnaireMapper.java new file mode 100644 index 00000000..e69de29b diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/mapper/QuestionnaireQuestionItemMapper.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/mapper/QuestionnaireQuestionItemMapper.java new file mode 100644 index 00000000..e69de29b diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/mapper/QuestionnaireQuestionMapper.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/mapper/QuestionnaireQuestionMapper.java new file mode 100644 index 00000000..e69de29b diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/service/IQuestionnaireService.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/service/IQuestionnaireService.java new file mode 100644 index 00000000..e69de29b diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/QuestionnaireServiceImpl.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/QuestionnaireServiceImpl.java new file mode 100644 index 00000000..e69de29b diff --git a/ruoyi-modules/Property/src/main/resources/mapper/Property/QuestionnaireMapper.xml b/ruoyi-modules/Property/src/main/resources/mapper/Property/QuestionnaireMapper.xml new file mode 100644 index 00000000..e69de29b diff --git a/ruoyi-modules/Property/src/main/resources/mapper/Property/QuestionnaireQuestionItemMapper.xml b/ruoyi-modules/Property/src/main/resources/mapper/Property/QuestionnaireQuestionItemMapper.xml new file mode 100644 index 00000000..e69de29b diff --git a/ruoyi-modules/Property/src/main/resources/mapper/Property/QuestionnaireQuestionMapper.xml b/ruoyi-modules/Property/src/main/resources/mapper/Property/QuestionnaireQuestionMapper.xml new file mode 100644 index 00000000..e69de29b From c7e81a892c98b2ba00dec5596c9480d6da19d3ca Mon Sep 17 00:00:00 2001 From: mocheng <3057647414@qq.com> Date: Thu, 14 Aug 2025 17:24:34 +0800 Subject: [PATCH 31/68] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=9F=BA=E7=A1=80?= =?UTF-8?q?=E9=95=9C=E5=83=8F1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitea/workflows/dev.yml | 24 ++++-------------------- 1 file changed, 4 insertions(+), 20 deletions(-) diff --git a/.gitea/workflows/dev.yml b/.gitea/workflows/dev.yml index 1931e454..5a5e5464 100644 --- a/.gitea/workflows/dev.yml +++ b/.gitea/workflows/dev.yml @@ -195,26 +195,10 @@ jobs: uses: http://git.missmoc.top/mocheng/build-push-action@v5 with: context: "${{ github.workspace }}" - file: "${{ github.workspace }}/${{ matrix.service }}/Dockerfile" - tags: "172.100.10.45:3000/by2025/smartparks/${{ matrix.service }}:latest" + file: ${{ github.workspace }}/${{ matrix.service }}/Dockerfile + tags: 172.100.10.45:3000/by2025/smartparks/${{ matrix.service }}:latest + # tags: ${{ secrets.REGISTRY_URL }}/by2025/$(echo ${{ matrix.service }} | tr 'A-Z' 'a-z'):${{ github.sha }} + # tags: ${{ secrets.REGISTRY_URL }}/by2025/${{ matrix.service }}:2.0.4 push: true cache-from: type=gha cache-to: type=gha,mode=max - - # 关键配置:允许该仓库使用HTTP - daemon-config: | - { - "insecure-registries": ["172.100.10.45:3000"] - } - - # 确保buildx使用正确的网络配置 - driver-opts: | - network=host -# context: "${{ github.workspace }}" -# file: ${{ github.workspace }}/${{ matrix.service }}/Dockerfile -# tags: 172.100.10.45:3000/by2025/smartparks/${{ matrix.service }}:latest -# # tags: ${{ secrets.REGISTRY_URL }}/by2025/$(echo ${{ matrix.service }} | tr 'A-Z' 'a-z'):${{ github.sha }} -# # tags: ${{ secrets.REGISTRY_URL }}/by2025/${{ matrix.service }}:2.0.4 -# push: true -# cache-from: type=gha -# cache-to: type=gha,mode=max From 4b3ed9dbaf83b041cb0bcd1053ad701fabcbf755 Mon Sep 17 00:00:00 2001 From: mocheng <3057647414@qq.com> Date: Thu, 14 Aug 2025 17:30:14 +0800 Subject: [PATCH 32/68] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=9F=BA=E7=A1=80?= =?UTF-8?q?=E9=95=9C=E5=83=8F3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitea/workflows/dev.yml | 59 ++++++++++++++++++++-------------------- 1 file changed, 30 insertions(+), 29 deletions(-) diff --git a/.gitea/workflows/dev.yml b/.gitea/workflows/dev.yml index 5a5e5464..e0bfee72 100644 --- a/.gitea/workflows/dev.yml +++ b/.gitea/workflows/dev.yml @@ -80,38 +80,38 @@ jobs: sleep 10 done - # build-common-modules: - # needs: build-parent-pom - # runs-on: ubuntu - # steps: - # - name: 拉取代码仓库 - # uses: http://git.missmoc.top/mocheng/checkout@v4 + # build-common-modules: + # needs: build-parent-pom + # runs-on: ubuntu + # steps: + # - name: 拉取代码仓库 + # uses: http://git.missmoc.top/mocheng/checkout@v4 - # - name: 配置环境变量 - # run: | - # export JAVA_HOME="/java17/java17" - # export MAVEN_HOME="/maven/apache-maven-3.9.11" - # echo "JAVA_HOME=$JAVA_HOME" >> $GITHUB_ENV - # echo "$JAVA_HOME/bin" >> $GITHUB_PATH - # echo "MAVEN_HOME=$MAVEN_HOME" >> $GITHUB_ENV - # echo "$MAVEN_HOME/bin" >> $GITHUB_PATH + # - name: 配置环境变量 + # run: | + # export JAVA_HOME="/java17/java17" + # export MAVEN_HOME="/maven/apache-maven-3.9.11" + # echo "JAVA_HOME=$JAVA_HOME" >> $GITHUB_ENV + # echo "$JAVA_HOME/bin" >> $GITHUB_PATH + # echo "MAVEN_HOME=$MAVEN_HOME" >> $GITHUB_ENV + # echo "$MAVEN_HOME/bin" >> $GITHUB_PATH - # - name: 构建通用模块(仅本地使用,不上传) - # run: | - # COMMON_MODULES=( - # "ruoyi-common" - # "ruoyi-api" - # "ruoyi-common-bom" - # "ruoyi-common-alibaba-bom" - # "ruoyi-api-bom" - # ) + # - name: 构建通用模块(仅本地使用,不上传) + # run: | + # COMMON_MODULES=( + # "ruoyi-common" + # "ruoyi-api" + # "ruoyi-common-bom" + # "ruoyi-common-alibaba-bom" + # "ruoyi-api-bom" + # ) - # for module in "${COMMON_MODULES[@]}"; do - # MODULE_POM_ABSOLUTE_PATH="${GITHUB_WORKSPACE}/${module}/pom.xml" - # if [ ! -f "$MODULE_POM_ABSOLUTE_PATH" ]; then - # echo "警告:模块 $module 不存在,跳过" - # continue - # fi + # for module in "${COMMON_MODULES[@]}"; do + # MODULE_POM_ABSOLUTE_PATH="${GITHUB_WORKSPACE}/${module}/pom.xml" + # if [ ! -f "$MODULE_POM_ABSOLUTE_PATH" ]; then + # echo "警告:模块 $module 不存在,跳过" + # continue + # fi # retries=3 # count=0 @@ -202,3 +202,4 @@ jobs: push: true cache-from: type=gha cache-to: type=gha,mode=max + From 6ceea972006b74e186f9fe387c924247e249025f Mon Sep 17 00:00:00 2001 From: mocheng <3057647414@qq.com> Date: Thu, 14 Aug 2025 19:23:51 +0800 Subject: [PATCH 33/68] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E5=B7=A5=E4=BD=9C?= =?UTF-8?q?=E6=B5=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitea/workflows/dev.yml | 2 +- .gitea/workflows/master.yml | 61 +++++++++++++++++++++++++++++++++++++ 2 files changed, 62 insertions(+), 1 deletion(-) create mode 100644 .gitea/workflows/master.yml diff --git a/.gitea/workflows/dev.yml b/.gitea/workflows/dev.yml index e0bfee72..9a657a4b 100644 --- a/.gitea/workflows/dev.yml +++ b/.gitea/workflows/dev.yml @@ -2,7 +2,7 @@ run-name: ${{ gitea.actor }} 构建镜像并推送(不含JAR依赖上传) on: push: branches: - - master + - main jobs: build-parent-pom: diff --git a/.gitea/workflows/master.yml b/.gitea/workflows/master.yml new file mode 100644 index 00000000..8aaf5554 --- /dev/null +++ b/.gitea/workflows/master.yml @@ -0,0 +1,61 @@ +name: Build and Push Docker Images + +# 监听master分支的push事件 +on: + push: + branches: [ master ] + +jobs: + build-and-push: + # 使用当前运行器(已安装Java、Maven和Docker) + runs-on: self-hosted + + steps: + # 拉取代码 + - name: Checkout code + uses: actions/checkout@v4 + + # 使用服务器上的Maven构建项目 + - name: Build with Maven + run: | + echo "开始使用Maven构建项目..." + mvn clean package -DskipTests + echo "Maven构建完成" + + # 查找所有Dockerfile并构建推送镜像 + - name: Build and push Docker images + env: + # 私有仓库地址(请替换为实际地址) + DOCKER_REGISTRY: your-private-registry.example.com + # 私有仓库认证信息(在Gitea仓库设置中配置secrets) + DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }} + DOCKER_PASSWORD: ${{ secrets.DOCKER_PASSWORD }} + run: | + echo "登录到私有Docker仓库..." + echo "$DOCKER_PASSWORD" | docker login $DOCKER_REGISTRY -u $DOCKER_USERNAME --password-stdin + + echo "查找项目中的所有Dockerfile..." + # 查找所有Dockerfile(排除.git目录) + find . -type f -name "Dockerfile" ! -path "./.git/*" | while read -r dockerfile; do + echo "处理Dockerfile: $dockerfile" + + # 获取Dockerfile所在目录 + docker_context=$(dirname "$dockerfile") + + # 生成镜像名称(基于目录结构) + image_name=$(echo "$docker_context" | sed 's|./||g' | tr '/' '-') + full_image_name="$DOCKER_REGISTRY/$image_name:${{ github.sha }}" + + echo "构建镜像: $full_image_name" + docker build -t "$full_image_name" -f "$dockerfile" "$docker_context" + + echo "推送镜像: $full_image_name" + docker push "$full_image_name" + + # 可选:添加latest标签并推送 + docker tag "$full_image_name" "$DOCKER_REGISTRY/$image_name:latest" + docker push "$DOCKER_REGISTRY/$image_name:latest" + done + + echo "所有镜像构建和推送完成" + docker logout $DOCKER_REGISTRY From 46735c04ba9bf2c352bc6498c3459393c985b287 Mon Sep 17 00:00:00 2001 From: mocheng <3057647414@qq.com> Date: Thu, 14 Aug 2025 19:25:24 +0800 Subject: [PATCH 34/68] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E5=B7=A5=E4=BD=9C?= =?UTF-8?q?=E6=B5=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitea/workflows/master.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitea/workflows/master.yml b/.gitea/workflows/master.yml index 8aaf5554..90e57914 100644 --- a/.gitea/workflows/master.yml +++ b/.gitea/workflows/master.yml @@ -8,7 +8,7 @@ on: jobs: build-and-push: # 使用当前运行器(已安装Java、Maven和Docker) - runs-on: self-hosted + runs-on: ubuntu steps: # 拉取代码 From 0a25ddc8ef1d08e5a4da6a2f508186e4da278eba Mon Sep 17 00:00:00 2001 From: mocheng <3057647414@qq.com> Date: Thu, 14 Aug 2025 19:26:12 +0800 Subject: [PATCH 35/68] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E5=B7=A5=E4=BD=9C?= =?UTF-8?q?=E6=B5=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitea/workflows/master.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitea/workflows/master.yml b/.gitea/workflows/master.yml index 90e57914..717822f0 100644 --- a/.gitea/workflows/master.yml +++ b/.gitea/workflows/master.yml @@ -13,7 +13,7 @@ jobs: steps: # 拉取代码 - name: Checkout code - uses: actions/checkout@v4 + uses: http://git.missmoc.top/mocheng/checkout@v4 # 使用服务器上的Maven构建项目 - name: Build with Maven From 64538d32e9e0afb786315a5e5bd9997ef1f6d356 Mon Sep 17 00:00:00 2001 From: mocheng <3057647414@qq.com> Date: Thu, 14 Aug 2025 19:29:17 +0800 Subject: [PATCH 36/68] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E5=B7=A5=E4=BD=9C?= =?UTF-8?q?=E6=B5=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitea/workflows/master.yml | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/.gitea/workflows/master.yml b/.gitea/workflows/master.yml index 717822f0..65615e6f 100644 --- a/.gitea/workflows/master.yml +++ b/.gitea/workflows/master.yml @@ -19,20 +19,20 @@ jobs: - name: Build with Maven run: | echo "开始使用Maven构建项目..." - mvn clean package -DskipTests + /maven/apache-maven-3.9.11/bin/mvn clean package -DskipTests echo "Maven构建完成" # 查找所有Dockerfile并构建推送镜像 - name: Build and push Docker images env: # 私有仓库地址(请替换为实际地址) - DOCKER_REGISTRY: your-private-registry.example.com + DOCKER_REGISTRY: 172.100.10.45:3000 # 私有仓库认证信息(在Gitea仓库设置中配置secrets) - DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }} - DOCKER_PASSWORD: ${{ secrets.DOCKER_PASSWORD }} + DOCKER_USERNAME: ${{ secrets.REGISTRY_USER }} + DOCKER_PASSWORD: ${{ secrets.REGISTRY_PASS }} run: | echo "登录到私有Docker仓库..." - echo "$DOCKER_PASSWORD" | docker login $DOCKER_REGISTRY -u $DOCKER_USERNAME --password-stdin + echo "REGISTRY_PASS" | docker login REGISTRY_URL -u REGISTRY_USER --password-stdin echo "查找项目中的所有Dockerfile..." # 查找所有Dockerfile(排除.git目录) @@ -44,7 +44,7 @@ jobs: # 生成镜像名称(基于目录结构) image_name=$(echo "$docker_context" | sed 's|./||g' | tr '/' '-') - full_image_name="$DOCKER_REGISTRY/$image_name:${{ github.sha }}" + full_image_name="REGISTRY_URL/$image_name:${{ github.sha }}" echo "构建镜像: $full_image_name" docker build -t "$full_image_name" -f "$dockerfile" "$docker_context" @@ -53,9 +53,9 @@ jobs: docker push "$full_image_name" # 可选:添加latest标签并推送 - docker tag "$full_image_name" "$DOCKER_REGISTRY/$image_name:latest" - docker push "$DOCKER_REGISTRY/$image_name:latest" + docker tag "$full_image_name" "REGISTRY_URL/$image_name:latest" + docker push "REGISTRY_URL/$image_name:latest" done echo "所有镜像构建和推送完成" - docker logout $DOCKER_REGISTRY + docker logout REGISTRY_URL From 78cba4532dbd77de9dfbf186a8be45f18666138e Mon Sep 17 00:00:00 2001 From: mocheng <3057647414@qq.com> Date: Thu, 14 Aug 2025 19:32:22 +0800 Subject: [PATCH 37/68] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E5=B7=A5=E4=BD=9C?= =?UTF-8?q?=E6=B5=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitea/workflows/master.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitea/workflows/master.yml b/.gitea/workflows/master.yml index 65615e6f..11915509 100644 --- a/.gitea/workflows/master.yml +++ b/.gitea/workflows/master.yml @@ -26,7 +26,7 @@ jobs: - name: Build and push Docker images env: # 私有仓库地址(请替换为实际地址) - DOCKER_REGISTRY: 172.100.10.45:3000 + REGISTRY_URL: 172.100.10.45:3000 # 私有仓库认证信息(在Gitea仓库设置中配置secrets) DOCKER_USERNAME: ${{ secrets.REGISTRY_USER }} DOCKER_PASSWORD: ${{ secrets.REGISTRY_PASS }} From 9d0e22e9e687ddd83fa5be49007246e5d873a6cc Mon Sep 17 00:00:00 2001 From: mocheng <3057647414@qq.com> Date: Thu, 14 Aug 2025 19:36:39 +0800 Subject: [PATCH 38/68] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E5=B7=A5=E4=BD=9C?= =?UTF-8?q?=E6=B5=813?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitea/workflows/master.yml | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/.gitea/workflows/master.yml b/.gitea/workflows/master.yml index 11915509..77964a39 100644 --- a/.gitea/workflows/master.yml +++ b/.gitea/workflows/master.yml @@ -8,31 +8,31 @@ on: jobs: build-and-push: # 使用当前运行器(已安装Java、Maven和Docker) - runs-on: ubuntu + runs-on: self-hosted steps: # 拉取代码 - name: Checkout code - uses: http://git.missmoc.top/mocheng/checkout@v4 + uses: actions/checkout@v4 # 使用服务器上的Maven构建项目 - name: Build with Maven run: | echo "开始使用Maven构建项目..." - /maven/apache-maven-3.9.11/bin/mvn clean package -DskipTests + mvn clean package -DskipTests echo "Maven构建完成" # 查找所有Dockerfile并构建推送镜像 - name: Build and push Docker images env: # 私有仓库地址(请替换为实际地址) - REGISTRY_URL: 172.100.10.45:3000 + DOCKER_REGISTRY: 172.100.10.45:3000 # 私有仓库认证信息(在Gitea仓库设置中配置secrets) - DOCKER_USERNAME: ${{ secrets.REGISTRY_USER }} - DOCKER_PASSWORD: ${{ secrets.REGISTRY_PASS }} + DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }} + DOCKER_PASSWORD: ${{ secrets.DOCKER_PASSWORD }} run: | echo "登录到私有Docker仓库..." - echo "REGISTRY_PASS" | docker login REGISTRY_URL -u REGISTRY_USER --password-stdin + echo "$DOCKER_PASSWORD" | docker login $DOCKER_REGISTRY -u $DOCKER_USERNAME --password-stdin echo "查找项目中的所有Dockerfile..." # 查找所有Dockerfile(排除.git目录) @@ -44,7 +44,7 @@ jobs: # 生成镜像名称(基于目录结构) image_name=$(echo "$docker_context" | sed 's|./||g' | tr '/' '-') - full_image_name="REGISTRY_URL/$image_name:${{ github.sha }}" + full_image_name="$DOCKER_REGISTRY/$image_name:${{ github.sha }}" echo "构建镜像: $full_image_name" docker build -t "$full_image_name" -f "$dockerfile" "$docker_context" @@ -53,9 +53,9 @@ jobs: docker push "$full_image_name" # 可选:添加latest标签并推送 - docker tag "$full_image_name" "REGISTRY_URL/$image_name:latest" - docker push "REGISTRY_URL/$image_name:latest" + docker tag "$full_image_name" "$DOCKER_REGISTRY/$image_name:latest" + docker push "$DOCKER_REGISTRY/$image_name:latest" done echo "所有镜像构建和推送完成" - docker logout REGISTRY_URL + docker logout $DOCKER_REGISTRY From 0db34e94fd352a7760cf65a4e38780192a3ccd7d Mon Sep 17 00:00:00 2001 From: mocheng <3057647414@qq.com> Date: Thu, 14 Aug 2025 19:37:31 +0800 Subject: [PATCH 39/68] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E5=B7=A5=E4=BD=9C?= =?UTF-8?q?=E6=B5=813?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitea/workflows/master.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitea/workflows/master.yml b/.gitea/workflows/master.yml index 77964a39..0b0995c7 100644 --- a/.gitea/workflows/master.yml +++ b/.gitea/workflows/master.yml @@ -8,7 +8,7 @@ on: jobs: build-and-push: # 使用当前运行器(已安装Java、Maven和Docker) - runs-on: self-hosted + runs-on: ubuntu steps: # 拉取代码 From c5ab0b0217080a7760cc103ebb5991208ec7e8c9 Mon Sep 17 00:00:00 2001 From: mocheng <3057647414@qq.com> Date: Thu, 14 Aug 2025 19:38:20 +0800 Subject: [PATCH 40/68] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E5=B7=A5=E4=BD=9C?= =?UTF-8?q?=E6=B5=813?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitea/workflows/master.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitea/workflows/master.yml b/.gitea/workflows/master.yml index 0b0995c7..984b7bc8 100644 --- a/.gitea/workflows/master.yml +++ b/.gitea/workflows/master.yml @@ -13,7 +13,7 @@ jobs: steps: # 拉取代码 - name: Checkout code - uses: actions/checkout@v4 + uses: http://git.missmoc.top/mocheng/checkout@v4 # 使用服务器上的Maven构建项目 - name: Build with Maven From 1e35f72bd993d0fd3dd98931e094dc44af2c41e8 Mon Sep 17 00:00:00 2001 From: mocheng <3057647414@qq.com> Date: Thu, 14 Aug 2025 19:39:06 +0800 Subject: [PATCH 41/68] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E5=B7=A5=E4=BD=9C?= =?UTF-8?q?=E6=B5=813?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitea/workflows/master.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitea/workflows/master.yml b/.gitea/workflows/master.yml index 984b7bc8..f3695db5 100644 --- a/.gitea/workflows/master.yml +++ b/.gitea/workflows/master.yml @@ -19,7 +19,7 @@ jobs: - name: Build with Maven run: | echo "开始使用Maven构建项目..." - mvn clean package -DskipTests + /maven/apache-maven-3.9.11/bin/mvn clean package -DskipTests echo "Maven构建完成" # 查找所有Dockerfile并构建推送镜像 From 72b431f1a96f706b83cb4764ab2bad7ad783cfd7 Mon Sep 17 00:00:00 2001 From: mocheng <3057647414@qq.com> Date: Thu, 14 Aug 2025 20:08:14 +0800 Subject: [PATCH 42/68] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E5=B7=A5=E4=BD=9C?= =?UTF-8?q?=E6=B5=813?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitea/workflows/master.yml | 103 +++++++++++++++++++++++------------- 1 file changed, 66 insertions(+), 37 deletions(-) diff --git a/.gitea/workflows/master.yml b/.gitea/workflows/master.yml index f3695db5..af1bb707 100644 --- a/.gitea/workflows/master.yml +++ b/.gitea/workflows/master.yml @@ -1,61 +1,90 @@ -name: Build and Push Docker Images +name: Build and Push to SmartParks Registry -# 监听master分支的push事件 +# 监听master分支的推送事件 on: push: branches: [ master ] jobs: - build-and-push: - # 使用当前运行器(已安装Java、Maven和Docker) + build-and-deploy: + name: 构建并推送镜像到仓库注册表 runs-on: ubuntu + timeout-minutes: 30 # 设置超时时间,防止无限等待 steps: - # 拉取代码 - - name: Checkout code - uses: http://git.missmoc.top/mocheng/checkout@v4 + - name: 拉取代码 + uses: actions/checkout@v4 + with: + fetch-depth: 0 # 拉取完整历史,确保版本信息正确 - # 使用服务器上的Maven构建项目 - - name: Build with Maven + - name: 使用Maven构建项目 run: | - echo "开始使用Maven构建项目..." - /maven/apache-maven-3.9.11/bin/mvn clean package -DskipTests - echo "Maven构建完成" + echo "===== 开始Maven构建 =====" + mvn clean package -DskipTests + echo "===== Maven构建完成 =====" + # 验证构建结果 + if [ ! -d "./target" ]; then + echo "错误:Maven构建未生成target目录" + exit 1 + fi - # 查找所有Dockerfile并构建推送镜像 - - name: Build and push Docker images + - name: 构建并推送Docker镜像 env: - # 私有仓库地址(请替换为实际地址) - DOCKER_REGISTRY: 172.100.10.45:3000 - # 私有仓库认证信息(在Gitea仓库设置中配置secrets) - DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }} - DOCKER_PASSWORD: ${{ secrets.DOCKER_PASSWORD }} + # Gitea容器注册表地址(请确认是否正确) + GITEA_REGISTRY: 172.100.10.45:3000 + # 仓库路径(组织/仓库名,严格区分大小写) + REPO_PATH: by2025/SmartParks + # Gitea内置认证令牌 + GITEA_TOKEN: ${{ secrets.GITEA_TOKEN }} run: | - echo "登录到私有Docker仓库..." - echo "$DOCKER_PASSWORD" | docker login $DOCKER_REGISTRY -u $DOCKER_USERNAME --password-stdin + echo "===== 登录到Gitea容器注册表 =====" + # 登录并检查结果 + if ! echo "$GITEA_TOKEN" | docker login $GITEA_REGISTRY -u ${{ github.actor }} --password-stdin; then + echo "错误:登录到容器注册表失败" + exit 1 + fi - echo "查找项目中的所有Dockerfile..." - # 查找所有Dockerfile(排除.git目录) - find . -type f -name "Dockerfile" ! -path "./.git/*" | while read -r dockerfile; do - echo "处理Dockerfile: $dockerfile" + echo "===== 查找项目中的Dockerfile =====" + # 查找所有Dockerfile并检查是否存在 + dockerfiles=$(find . -type f -name "Dockerfile" ! -path "./.git/*") + if [ -z "$dockerfiles" ]; then + echo "警告:未找到任何Dockerfile" + exit 0 + fi + + # 处理每个Dockerfile + echo "$dockerfiles" | while read -r dockerfile; do + echo "===== 处理Dockerfile: $dockerfile =====" - # 获取Dockerfile所在目录 docker_context=$(dirname "$dockerfile") - - # 生成镜像名称(基于目录结构) - image_name=$(echo "$docker_context" | sed 's|./||g' | tr '/' '-') - full_image_name="$DOCKER_REGISTRY/$image_name:${{ github.sha }}" + # 生成镜像标签(基于目录名,转换为小写并替换斜杠) + image_tag=$(echo "$docker_context" | sed 's|./||g' | tr '/' '-' | tr '[:upper:]' '[:lower:]') + # 完整镜像名称 + full_image_name="$GITEA_REGISTRY/$REPO_PATH:$image_tag-${{ github.sha }}" echo "构建镜像: $full_image_name" - docker build -t "$full_image_name" -f "$dockerfile" "$docker_context" + if ! docker build -t "$full_image_name" -f "$dockerfile" "$docker_context"; then + echo "错误:构建镜像 $full_image_name 失败" + exit 1 + fi echo "推送镜像: $full_image_name" - docker push "$full_image_name" + if ! docker push "$full_image_name"; then + echo "错误:推送镜像 $full_image_name 失败" + exit 1 + fi - # 可选:添加latest标签并推送 - docker tag "$full_image_name" "$DOCKER_REGISTRY/$image_name:latest" - docker push "$DOCKER_REGISTRY/$image_name:latest" + # 推送latest标签 + latest_image="$GITEA_REGISTRY/$REPO_PATH:$image_tag-latest" + echo "推送最新标签: $latest_image" + docker tag "$full_image_name" "$latest_image" + if ! docker push "$latest_image"; then + echo "错误:推送最新标签 $latest_image 失败" + exit 1 + fi done - echo "所有镜像构建和推送完成" - docker logout $DOCKER_REGISTRY + echo "===== 清理操作 =====" + docker logout $GITEA_REGISTRY + echo "===== 所有操作完成 =====" + From 7c8ddfcda57b600df11e19636cfcaab0b8271494 Mon Sep 17 00:00:00 2001 From: mocheng <3057647414@qq.com> Date: Thu, 14 Aug 2025 20:09:16 +0800 Subject: [PATCH 43/68] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E5=B7=A5=E4=BD=9C?= =?UTF-8?q?=E6=B5=813?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitea/workflows/master.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitea/workflows/master.yml b/.gitea/workflows/master.yml index af1bb707..592b16ff 100644 --- a/.gitea/workflows/master.yml +++ b/.gitea/workflows/master.yml @@ -13,7 +13,7 @@ jobs: steps: - name: 拉取代码 - uses: actions/checkout@v4 + uses: http://git.missmoc.top/mocheng/checkout@v4 with: fetch-depth: 0 # 拉取完整历史,确保版本信息正确 From 81d60e38322be1f45833cd3af79c9f5e25ff9bb7 Mon Sep 17 00:00:00 2001 From: mocheng <3057647414@qq.com> Date: Thu, 14 Aug 2025 20:11:04 +0800 Subject: [PATCH 44/68] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E5=B7=A5=E4=BD=9C?= =?UTF-8?q?=E6=B5=813?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitea/workflows/master.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitea/workflows/master.yml b/.gitea/workflows/master.yml index 592b16ff..aa33f820 100644 --- a/.gitea/workflows/master.yml +++ b/.gitea/workflows/master.yml @@ -20,7 +20,7 @@ jobs: - name: 使用Maven构建项目 run: | echo "===== 开始Maven构建 =====" - mvn clean package -DskipTests + /maven/apache-maven-3.9.11/bin/mvn clean package -DskipTests echo "===== Maven构建完成 =====" # 验证构建结果 if [ ! -d "./target" ]; then From 93af6976da4fd56210c75af97b4a285edd64ae95 Mon Sep 17 00:00:00 2001 From: mocheng <3057647414@qq.com> Date: Thu, 14 Aug 2025 20:14:14 +0800 Subject: [PATCH 45/68] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E5=B7=A5=E4=BD=9C?= =?UTF-8?q?=E6=B5=813?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitea/workflows/master.yml | 6 ------ 1 file changed, 6 deletions(-) diff --git a/.gitea/workflows/master.yml b/.gitea/workflows/master.yml index aa33f820..2a2b8350 100644 --- a/.gitea/workflows/master.yml +++ b/.gitea/workflows/master.yml @@ -22,12 +22,6 @@ jobs: echo "===== 开始Maven构建 =====" /maven/apache-maven-3.9.11/bin/mvn clean package -DskipTests echo "===== Maven构建完成 =====" - # 验证构建结果 - if [ ! -d "./target" ]; then - echo "错误:Maven构建未生成target目录" - exit 1 - fi - - name: 构建并推送Docker镜像 env: # Gitea容器注册表地址(请确认是否正确) From c1ee3a3328beadfaa5e973067f776ae502d9a53e Mon Sep 17 00:00:00 2001 From: mocheng <3057647414@qq.com> Date: Thu, 14 Aug 2025 20:17:21 +0800 Subject: [PATCH 46/68] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E5=B7=A5=E4=BD=9C?= =?UTF-8?q?=E6=B5=813?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitea/workflows/master.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitea/workflows/master.yml b/.gitea/workflows/master.yml index 2a2b8350..9463a76d 100644 --- a/.gitea/workflows/master.yml +++ b/.gitea/workflows/master.yml @@ -27,7 +27,7 @@ jobs: # Gitea容器注册表地址(请确认是否正确) GITEA_REGISTRY: 172.100.10.45:3000 # 仓库路径(组织/仓库名,严格区分大小写) - REPO_PATH: by2025/SmartParks + REPO_PATH: by2025/smartparks # Gitea内置认证令牌 GITEA_TOKEN: ${{ secrets.GITEA_TOKEN }} run: | From 1179cbd77a15486935a75eb5a5d40c483f908e55 Mon Sep 17 00:00:00 2001 From: mocheng <3057647414@qq.com> Date: Thu, 14 Aug 2025 20:21:49 +0800 Subject: [PATCH 47/68] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E5=B7=A5=E4=BD=9C?= =?UTF-8?q?=E6=B5=813?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitea/workflows/master.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitea/workflows/master.yml b/.gitea/workflows/master.yml index 9463a76d..a42605c6 100644 --- a/.gitea/workflows/master.yml +++ b/.gitea/workflows/master.yml @@ -27,7 +27,7 @@ jobs: # Gitea容器注册表地址(请确认是否正确) GITEA_REGISTRY: 172.100.10.45:3000 # 仓库路径(组织/仓库名,严格区分大小写) - REPO_PATH: by2025/smartparks + REPO_PATH: by2025/dockerimage # Gitea内置认证令牌 GITEA_TOKEN: ${{ secrets.GITEA_TOKEN }} run: | From 78a33f408fc9156b85f024cbab1f3a6d61cb93ab Mon Sep 17 00:00:00 2001 From: mocheng <3057647414@qq.com> Date: Thu, 14 Aug 2025 20:32:26 +0800 Subject: [PATCH 48/68] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E5=B7=A5=E4=BD=9C?= =?UTF-8?q?=E6=B5=813?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitea/workflows/master.yml | 48 +++++++++++++++++++++++++++++-------- 1 file changed, 38 insertions(+), 10 deletions(-) diff --git a/.gitea/workflows/master.yml b/.gitea/workflows/master.yml index a42605c6..4f918a5a 100644 --- a/.gitea/workflows/master.yml +++ b/.gitea/workflows/master.yml @@ -10,6 +10,9 @@ jobs: name: 构建并推送镜像到仓库注册表 runs-on: ubuntu timeout-minutes: 30 # 设置超时时间,防止无限等待 + permissions: + packages: write # 明确请求包管理权限 + contents: read # 读取代码权限 steps: - name: 拉取代码 @@ -21,20 +24,34 @@ jobs: run: | echo "===== 开始Maven构建 =====" /maven/apache-maven-3.9.11/bin/mvn clean package -DskipTests + echo "===== 验证构建结果 =====" + if [ ! -d "./target" ] || [ -z "$(ls -A ./target/*.jar 2>/dev/null)" ]; then + echo "错误:Maven构建未生成有效JAR包" + exit 1 + fi echo "===== Maven构建完成 =====" + - name: 构建并推送Docker镜像 env: - # Gitea容器注册表地址(请确认是否正确) + # Gitea容器注册表地址 GITEA_REGISTRY: 172.100.10.45:3000 - # 仓库路径(组织/仓库名,严格区分大小写) + # 仓库路径(严格区分大小写) REPO_PATH: by2025/dockerimage - # Gitea内置认证令牌 - GITEA_TOKEN: ${{ secrets.GITEA_TOKEN }} + # 使用手动创建的专用推送令牌(推荐) + GITEA_TOKEN: ${{ secrets.DOCKER_PUSH_TOKEN }} + # 当前仓库信息(用于调试) + CURRENT_REPO: ${{ github.repository }} run: | + echo "===== 环境信息验证 =====" + echo "当前仓库: $CURRENT_REPO" + echo "目标仓库路径: $REPO_PATH" + echo "镜像仓库地址: $GITEA_REGISTRY" + echo "===== 登录到Gitea容器注册表 =====" # 登录并检查结果 if ! echo "$GITEA_TOKEN" | docker login $GITEA_REGISTRY -u ${{ github.actor }} --password-stdin; then echo "错误:登录到容器注册表失败" + echo "请检查令牌权限和仓库地址是否正确" exit 1 fi @@ -52,25 +69,35 @@ jobs: docker_context=$(dirname "$dockerfile") # 生成镜像标签(基于目录名,转换为小写并替换斜杠) - image_tag=$(echo "$docker_context" | sed 's|./||g' | tr '/' '-' | tr '[:upper:]' '[:lower:]') - # 完整镜像名称 + image_tag=$(echo "$docker_context" | sed 's|./||g' | tr '/' '-' | tr '[:upper:]' '[:lower:]' | sed 's/[^a-z0-9_-]//g') + # 完整镜像名称(确保符合Docker规范) full_image_name="$GITEA_REGISTRY/$REPO_PATH:$image_tag-${{ github.sha }}" + echo "镜像名称: $full_image_name" - echo "构建镜像: $full_image_name" + echo "===== 构建镜像 =====" if ! docker build -t "$full_image_name" -f "$dockerfile" "$docker_context"; then echo "错误:构建镜像 $full_image_name 失败" exit 1 fi - echo "推送镜像: $full_image_name" + echo "===== 测试镜像 =====" + if ! docker images "$full_image_name" | grep -q "$full_image_name"; then + echo "错误:镜像构建后未找到 $full_image_name" + exit 1 + fi + + echo "===== 推送镜像 =====" if ! docker push "$full_image_name"; then echo "错误:推送镜像 $full_image_name 失败" + echo "可能原因:令牌无write:packages权限、仓库不存在或网络问题" + # 尝试获取详细错误信息 + curl -u ${{ github.actor }}:$GITEA_TOKEN $GITEA_REGISTRY/v2/_catalog exit 1 fi # 推送latest标签 latest_image="$GITEA_REGISTRY/$REPO_PATH:$image_tag-latest" - echo "推送最新标签: $latest_image" + echo "===== 推送最新标签: $latest_image =====" docker tag "$full_image_name" "$latest_image" if ! docker push "$latest_image"; then echo "错误:推送最新标签 $latest_image 失败" @@ -80,5 +107,6 @@ jobs: echo "===== 清理操作 =====" docker logout $GITEA_REGISTRY + # 可选:清理构建的镜像释放空间 + docker system prune -f echo "===== 所有操作完成 =====" - From 515d473da0e16641d9d9cab3ef2e1d5782bd34ed Mon Sep 17 00:00:00 2001 From: mocheng <3057647414@qq.com> Date: Thu, 14 Aug 2025 20:35:16 +0800 Subject: [PATCH 49/68] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E5=B7=A5=E4=BD=9C?= =?UTF-8?q?=E6=B5=813?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitea/workflows/master.yml | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/.gitea/workflows/master.yml b/.gitea/workflows/master.yml index 4f918a5a..51c8c1a5 100644 --- a/.gitea/workflows/master.yml +++ b/.gitea/workflows/master.yml @@ -24,11 +24,7 @@ jobs: run: | echo "===== 开始Maven构建 =====" /maven/apache-maven-3.9.11/bin/mvn clean package -DskipTests - echo "===== 验证构建结果 =====" - if [ ! -d "./target" ] || [ -z "$(ls -A ./target/*.jar 2>/dev/null)" ]; then - echo "错误:Maven构建未生成有效JAR包" - exit 1 - fi + echo "===== Maven构建完成 =====" - name: 构建并推送Docker镜像 From db30232834b974a33df2586ab664b2e17f61bc85 Mon Sep 17 00:00:00 2001 From: mocheng <3057647414@qq.com> Date: Thu, 14 Aug 2025 20:41:54 +0800 Subject: [PATCH 50/68] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E5=B7=A5=E4=BD=9C?= =?UTF-8?q?=E6=B5=813?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitea/workflows/master.yml | 69 ++++++++++++++----------------------- 1 file changed, 25 insertions(+), 44 deletions(-) diff --git a/.gitea/workflows/master.yml b/.gitea/workflows/master.yml index 51c8c1a5..116b0369 100644 --- a/.gitea/workflows/master.yml +++ b/.gitea/workflows/master.yml @@ -1,4 +1,4 @@ -name: Build and Push to SmartParks Registry +name: Build and Push to Target Registry # 监听master分支的推送事件 on: @@ -7,18 +7,15 @@ on: jobs: build-and-deploy: - name: 构建并推送镜像到仓库注册表 + name: 构建并推送镜像到目标仓库 runs-on: ubuntu - timeout-minutes: 30 # 设置超时时间,防止无限等待 - permissions: - packages: write # 明确请求包管理权限 - contents: read # 读取代码权限 + timeout-minutes: 30 steps: - name: 拉取代码 uses: http://git.missmoc.top/mocheng/checkout@v4 with: - fetch-depth: 0 # 拉取完整历史,确保版本信息正确 + fetch-depth: 0 - name: 使用Maven构建项目 run: | @@ -29,30 +26,24 @@ jobs: - name: 构建并推送Docker镜像 env: - # Gitea容器注册表地址 - GITEA_REGISTRY: 172.100.10.45:3000 - # 仓库路径(严格区分大小写) - REPO_PATH: by2025/dockerimage - # 使用手动创建的专用推送令牌(推荐) - GITEA_TOKEN: ${{ secrets.DOCKER_PUSH_TOKEN }} - # 当前仓库信息(用于调试) - CURRENT_REPO: ${{ github.repository }} + # 目标仓库的容器注册表地址 + TARGET_REGISTRY: 172.100.10.45:3000 + # 目标代码仓库路径(组织/仓库名,严格区分大小写) + TARGET_REPO: by2025/dockerimage # 替换为目标仓库路径 + # 登录目标仓库的账户密码(在Gitea secrets中配置) + REGISTRY_USERNAME: ${{ secrets.TARGET_REGISTRY_USERNAME }} + REGISTRY_PASSWORD: ${{ secrets.TARGET_REGISTRY_PASSWORD }} run: | - echo "===== 环境信息验证 =====" - echo "当前仓库: $CURRENT_REPO" - echo "目标仓库路径: $REPO_PATH" - echo "镜像仓库地址: $GITEA_REGISTRY" + echo "===== 环境信息 =====" + echo "目标仓库: $TARGET_REGISTRY/$TARGET_REPO" - echo "===== 登录到Gitea容器注册表 =====" - # 登录并检查结果 - if ! echo "$GITEA_TOKEN" | docker login $GITEA_REGISTRY -u ${{ github.actor }} --password-stdin; then - echo "错误:登录到容器注册表失败" - echo "请检查令牌权限和仓库地址是否正确" + echo "===== 使用账户密码登录目标仓库 =====" + if ! echo "$REGISTRY_PASSWORD" | docker login $TARGET_REGISTRY -u $REGISTRY_USERNAME --password-stdin; then + echo "错误:登录目标仓库失败,请检查账户密码" exit 1 fi echo "===== 查找项目中的Dockerfile =====" - # 查找所有Dockerfile并检查是否存在 dockerfiles=$(find . -type f -name "Dockerfile" ! -path "./.git/*") if [ -z "$dockerfiles" ]; then echo "警告:未找到任何Dockerfile" @@ -64,45 +55,35 @@ jobs: echo "===== 处理Dockerfile: $dockerfile =====" docker_context=$(dirname "$dockerfile") - # 生成镜像标签(基于目录名,转换为小写并替换斜杠) + # 生成镜像标签(转换为小写,符合Docker规范) image_tag=$(echo "$docker_context" | sed 's|./||g' | tr '/' '-' | tr '[:upper:]' '[:lower:]' | sed 's/[^a-z0-9_-]//g') - # 完整镜像名称(确保符合Docker规范) - full_image_name="$GITEA_REGISTRY/$REPO_PATH:$image_tag-${{ github.sha }}" + # 完整镜像名称(目标仓库路径) + full_image_name="$TARGET_REGISTRY/$TARGET_REPO:$image_tag-${{ github.sha }}" echo "镜像名称: $full_image_name" echo "===== 构建镜像 =====" if ! docker build -t "$full_image_name" -f "$dockerfile" "$docker_context"; then - echo "错误:构建镜像 $full_image_name 失败" + echo "错误:构建镜像失败" exit 1 fi - echo "===== 测试镜像 =====" - if ! docker images "$full_image_name" | grep -q "$full_image_name"; then - echo "错误:镜像构建后未找到 $full_image_name" - exit 1 - fi - - echo "===== 推送镜像 =====" + echo "===== 推送镜像到目标仓库 =====" if ! docker push "$full_image_name"; then - echo "错误:推送镜像 $full_image_name 失败" - echo "可能原因:令牌无write:packages权限、仓库不存在或网络问题" - # 尝试获取详细错误信息 - curl -u ${{ github.actor }}:$GITEA_TOKEN $GITEA_REGISTRY/v2/_catalog + echo "错误:推送镜像失败,请检查账户是否有目标仓库的推送权限" exit 1 fi # 推送latest标签 - latest_image="$GITEA_REGISTRY/$REPO_PATH:$image_tag-latest" + latest_image="$TARGET_REGISTRY/$TARGET_REPO:$image_tag-latest" echo "===== 推送最新标签: $latest_image =====" docker tag "$full_image_name" "$latest_image" if ! docker push "$latest_image"; then - echo "错误:推送最新标签 $latest_image 失败" + echo "错误:推送latest标签失败" exit 1 fi done echo "===== 清理操作 =====" - docker logout $GITEA_REGISTRY - # 可选:清理构建的镜像释放空间 + docker logout $TARGET_REGISTRY docker system prune -f echo "===== 所有操作完成 =====" From 44e6a1b556b7ad6d956aa12221db5cce7ac79d37 Mon Sep 17 00:00:00 2001 From: mocheng <3057647414@qq.com> Date: Thu, 14 Aug 2025 21:07:03 +0800 Subject: [PATCH 51/68] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E5=B7=A5=E4=BD=9C?= =?UTF-8?q?=E6=B5=813?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitea/workflows/master.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.gitea/workflows/master.yml b/.gitea/workflows/master.yml index 116b0369..80945c9b 100644 --- a/.gitea/workflows/master.yml +++ b/.gitea/workflows/master.yml @@ -27,9 +27,9 @@ jobs: - name: 构建并推送Docker镜像 env: # 目标仓库的容器注册表地址 - TARGET_REGISTRY: 172.100.10.45:3000 + TARGET_REGISTRY: 10.20.1.60:5000 # 目标代码仓库路径(组织/仓库名,严格区分大小写) - TARGET_REPO: by2025/dockerimage # 替换为目标仓库路径 + TARGET_REPO: by2025 # 替换为目标仓库路径 # 登录目标仓库的账户密码(在Gitea secrets中配置) REGISTRY_USERNAME: ${{ secrets.TARGET_REGISTRY_USERNAME }} REGISTRY_PASSWORD: ${{ secrets.TARGET_REGISTRY_PASSWORD }} From d235ac8e815c29b41bb37ca43f2598298e88b4ae Mon Sep 17 00:00:00 2001 From: mocheng <3057647414@qq.com> Date: Thu, 14 Aug 2025 21:12:12 +0800 Subject: [PATCH 52/68] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E5=B7=A5=E4=BD=9C?= =?UTF-8?q?=E6=B5=813?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitea/workflows/master.yml | 34 ++++++++++++---------------------- 1 file changed, 12 insertions(+), 22 deletions(-) diff --git a/.gitea/workflows/master.yml b/.gitea/workflows/master.yml index 80945c9b..af81d846 100644 --- a/.gitea/workflows/master.yml +++ b/.gitea/workflows/master.yml @@ -26,22 +26,15 @@ jobs: - name: 构建并推送Docker镜像 env: - # 目标仓库的容器注册表地址 - TARGET_REGISTRY: 10.20.1.60:5000 - # 目标代码仓库路径(组织/仓库名,严格区分大小写) - TARGET_REPO: by2025 # 替换为目标仓库路径 - # 登录目标仓库的账户密码(在Gitea secrets中配置) - REGISTRY_USERNAME: ${{ secrets.TARGET_REGISTRY_USERNAME }} - REGISTRY_PASSWORD: ${{ secrets.TARGET_REGISTRY_PASSWORD }} + # 替换为你的Docker Registry地址(例如:localhost:5000 或 192.168.1.100:5000) + TARGET_REGISTRY: 127.0.0.1:5000 + # 目标仓库中的项目名称 + TARGET_PROJECT: smartparks run: | echo "===== 环境信息 =====" - echo "目标仓库: $TARGET_REGISTRY/$TARGET_REPO" + echo "目标仓库: $TARGET_REGISTRY/$TARGET_PROJECT" - echo "===== 使用账户密码登录目标仓库 =====" - if ! echo "$REGISTRY_PASSWORD" | docker login $TARGET_REGISTRY -u $REGISTRY_USERNAME --password-stdin; then - echo "错误:登录目标仓库失败,请检查账户密码" - exit 1 - fi + # 【删除登录步骤】因为仓库无认证,无需登录 echo "===== 查找项目中的Dockerfile =====" dockerfiles=$(find . -type f -name "Dockerfile" ! -path "./.git/*") @@ -50,15 +43,13 @@ jobs: exit 0 fi - # 处理每个Dockerfile + # 处理每个Dockerfile(后续构建、推送逻辑与之前类似,保持不变) echo "$dockerfiles" | while read -r dockerfile; do echo "===== 处理Dockerfile: $dockerfile =====" docker_context=$(dirname "$dockerfile") - # 生成镜像标签(转换为小写,符合Docker规范) image_tag=$(echo "$docker_context" | sed 's|./||g' | tr '/' '-' | tr '[:upper:]' '[:lower:]' | sed 's/[^a-z0-9_-]//g') - # 完整镜像名称(目标仓库路径) - full_image_name="$TARGET_REGISTRY/$TARGET_REPO:$image_tag-${{ github.sha }}" + full_image_name="$TARGET_REGISTRY/$TARGET_PROJECT:$image_tag-${{ github.sha }}" echo "镜像名称: $full_image_name" echo "===== 构建镜像 =====" @@ -67,14 +58,14 @@ jobs: exit 1 fi - echo "===== 推送镜像到目标仓库 =====" + echo "===== 推送镜像到仓库 =====" if ! docker push "$full_image_name"; then - echo "错误:推送镜像失败,请检查账户是否有目标仓库的推送权限" + echo "错误:推送镜像失败,请检查仓库是否可访问" exit 1 fi - # 推送latest标签 - latest_image="$TARGET_REGISTRY/$TARGET_REPO:$image_tag-latest" + # 推送latest标签(逻辑保持不变) + latest_image="$TARGET_REGISTRY/$TARGET_PROJECT:$image_tag-latest" echo "===== 推送最新标签: $latest_image =====" docker tag "$full_image_name" "$latest_image" if ! docker push "$latest_image"; then @@ -84,6 +75,5 @@ jobs: done echo "===== 清理操作 =====" - docker logout $TARGET_REGISTRY docker system prune -f echo "===== 所有操作完成 =====" From 9d12fc7fdd0fdbc3406afc4e782806e4bd31f1d5 Mon Sep 17 00:00:00 2001 From: mocheng <3057647414@qq.com> Date: Thu, 14 Aug 2025 21:17:29 +0800 Subject: [PATCH 53/68] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E5=B7=A5=E4=BD=9C?= =?UTF-8?q?=E6=B5=813?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitea/workflows/master.yml | 31 +++++++++++++++++++++---------- 1 file changed, 21 insertions(+), 10 deletions(-) diff --git a/.gitea/workflows/master.yml b/.gitea/workflows/master.yml index af81d846..fd4a22dc 100644 --- a/.gitea/workflows/master.yml +++ b/.gitea/workflows/master.yml @@ -1,13 +1,12 @@ -name: Build and Push to Target Registry +name: Build and Push to Docker Registry -# 监听master分支的推送事件 on: push: branches: [ master ] jobs: build-and-deploy: - name: 构建并推送镜像到目标仓库 + name: 构建并推送镜像到Docker Registry runs-on: ubuntu timeout-minutes: 30 @@ -21,20 +20,30 @@ jobs: run: | echo "===== 开始Maven构建 =====" /maven/apache-maven-3.9.11/bin/mvn clean package -DskipTests - echo "===== Maven构建完成 =====" - name: 构建并推送Docker镜像 env: - # 替换为你的Docker Registry地址(例如:localhost:5000 或 192.168.1.100:5000) + # 目标仓库地址(你的新建仓库) TARGET_REGISTRY: 127.0.0.1:5000 # 目标仓库中的项目名称 TARGET_PROJECT: smartparks + # 基础镜像所在仓库地址(需要认证的仓库) + BASE_REGISTRY: 172.100.10.45:3000 + # 基础镜像仓库的登录凭证(在Gitea secrets中配置) + BASE_REGISTRY_USERNAME: ${{ secrets.BASE_REGISTRY_USERNAME }} + BASE_REGISTRY_PASSWORD: ${{ secrets.BASE_REGISTRY_PASSWORD }} run: | echo "===== 环境信息 =====" echo "目标仓库: $TARGET_REGISTRY/$TARGET_PROJECT" + echo "基础镜像仓库: $BASE_REGISTRY" - # 【删除登录步骤】因为仓库无认证,无需登录 + # 关键步骤:先登录到基础镜像仓库(解决401认证问题) + echo "===== 登录基础镜像仓库 =====" + if ! echo "$BASE_REGISTRY_PASSWORD" | docker login $BASE_REGISTRY -u $BASE_REGISTRY_USERNAME --password-stdin; then + echo "错误:登录基础镜像仓库 $BASE_REGISTRY 失败,请检查账户密码" + exit 1 + fi echo "===== 查找项目中的Dockerfile =====" dockerfiles=$(find . -type f -name "Dockerfile" ! -path "./.git/*") @@ -43,7 +52,7 @@ jobs: exit 0 fi - # 处理每个Dockerfile(后续构建、推送逻辑与之前类似,保持不变) + # 处理每个Dockerfile echo "$dockerfiles" | while read -r dockerfile; do echo "===== 处理Dockerfile: $dockerfile =====" @@ -58,13 +67,14 @@ jobs: exit 1 fi - echo "===== 推送镜像到仓库 =====" + echo "===== 推送镜像到目标仓库 =====" + # 目标仓库无认证,直接推送 if ! docker push "$full_image_name"; then - echo "错误:推送镜像失败,请检查仓库是否可访问" + echo "错误:推送镜像到目标仓库失败,请检查仓库是否可访问" exit 1 fi - # 推送latest标签(逻辑保持不变) + # 推送latest标签 latest_image="$TARGET_REGISTRY/$TARGET_PROJECT:$image_tag-latest" echo "===== 推送最新标签: $latest_image =====" docker tag "$full_image_name" "$latest_image" @@ -75,5 +85,6 @@ jobs: done echo "===== 清理操作 =====" + docker logout $BASE_REGISTRY # 退出基础镜像仓库登录 docker system prune -f echo "===== 所有操作完成 =====" From be52875780e05134b4bbe234cd4550db75d6ea8b Mon Sep 17 00:00:00 2001 From: mocheng <3057647414@qq.com> Date: Thu, 14 Aug 2025 21:24:11 +0800 Subject: [PATCH 54/68] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E5=B7=A5=E4=BD=9C?= =?UTF-8?q?=E6=B5=813?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitea/workflows/master.yml | 31 ++++++++++--------------------- ruoyi-auth/Dockerfile | 2 +- 2 files changed, 11 insertions(+), 22 deletions(-) diff --git a/.gitea/workflows/master.yml b/.gitea/workflows/master.yml index fd4a22dc..af81d846 100644 --- a/.gitea/workflows/master.yml +++ b/.gitea/workflows/master.yml @@ -1,12 +1,13 @@ -name: Build and Push to Docker Registry +name: Build and Push to Target Registry +# 监听master分支的推送事件 on: push: branches: [ master ] jobs: build-and-deploy: - name: 构建并推送镜像到Docker Registry + name: 构建并推送镜像到目标仓库 runs-on: ubuntu timeout-minutes: 30 @@ -20,30 +21,20 @@ jobs: run: | echo "===== 开始Maven构建 =====" /maven/apache-maven-3.9.11/bin/mvn clean package -DskipTests + echo "===== Maven构建完成 =====" - name: 构建并推送Docker镜像 env: - # 目标仓库地址(你的新建仓库) + # 替换为你的Docker Registry地址(例如:localhost:5000 或 192.168.1.100:5000) TARGET_REGISTRY: 127.0.0.1:5000 # 目标仓库中的项目名称 TARGET_PROJECT: smartparks - # 基础镜像所在仓库地址(需要认证的仓库) - BASE_REGISTRY: 172.100.10.45:3000 - # 基础镜像仓库的登录凭证(在Gitea secrets中配置) - BASE_REGISTRY_USERNAME: ${{ secrets.BASE_REGISTRY_USERNAME }} - BASE_REGISTRY_PASSWORD: ${{ secrets.BASE_REGISTRY_PASSWORD }} run: | echo "===== 环境信息 =====" echo "目标仓库: $TARGET_REGISTRY/$TARGET_PROJECT" - echo "基础镜像仓库: $BASE_REGISTRY" - # 关键步骤:先登录到基础镜像仓库(解决401认证问题) - echo "===== 登录基础镜像仓库 =====" - if ! echo "$BASE_REGISTRY_PASSWORD" | docker login $BASE_REGISTRY -u $BASE_REGISTRY_USERNAME --password-stdin; then - echo "错误:登录基础镜像仓库 $BASE_REGISTRY 失败,请检查账户密码" - exit 1 - fi + # 【删除登录步骤】因为仓库无认证,无需登录 echo "===== 查找项目中的Dockerfile =====" dockerfiles=$(find . -type f -name "Dockerfile" ! -path "./.git/*") @@ -52,7 +43,7 @@ jobs: exit 0 fi - # 处理每个Dockerfile + # 处理每个Dockerfile(后续构建、推送逻辑与之前类似,保持不变) echo "$dockerfiles" | while read -r dockerfile; do echo "===== 处理Dockerfile: $dockerfile =====" @@ -67,14 +58,13 @@ jobs: exit 1 fi - echo "===== 推送镜像到目标仓库 =====" - # 目标仓库无认证,直接推送 + echo "===== 推送镜像到仓库 =====" if ! docker push "$full_image_name"; then - echo "错误:推送镜像到目标仓库失败,请检查仓库是否可访问" + echo "错误:推送镜像失败,请检查仓库是否可访问" exit 1 fi - # 推送latest标签 + # 推送latest标签(逻辑保持不变) latest_image="$TARGET_REGISTRY/$TARGET_PROJECT:$image_tag-latest" echo "===== 推送最新标签: $latest_image =====" docker tag "$full_image_name" "$latest_image" @@ -85,6 +75,5 @@ jobs: done echo "===== 清理操作 =====" - docker logout $BASE_REGISTRY # 退出基础镜像仓库登录 docker system prune -f echo "===== 所有操作完成 =====" diff --git a/ruoyi-auth/Dockerfile b/ruoyi-auth/Dockerfile index 716df43d..70e18c37 100644 --- a/ruoyi-auth/Dockerfile +++ b/ruoyi-auth/Dockerfile @@ -2,7 +2,7 @@ #FROM bellsoft/liberica-openjdk-debian:17.0.11-cds #FROM registry.cn-hangzhou.aliyuncs.com/aliyun_openjdk/openjdk:17-jdk-slim #FROM bellsoft/liberica-openjdk-debian:21.0.5-cds -FROM 172.100.10.45:3000/by2025/base-images/liberica-openjdk-debian:17.0.11-cds +FROM 127.0.0.1:5000/smartparks/base-images/liberica-openjdk-debian #FROM findepi/graalvm:java17-native LABEL maintainer="Lion Li" From 2becd3e7ce0eb4229b88aa9d0c8ab71a75fd8690 Mon Sep 17 00:00:00 2001 From: mocheng <3057647414@qq.com> Date: Thu, 14 Aug 2025 21:27:44 +0800 Subject: [PATCH 55/68] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E5=B7=A5=E4=BD=9C?= =?UTF-8?q?=E6=B5=813?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ruoyi-auth/Dockerfile | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/ruoyi-auth/Dockerfile b/ruoyi-auth/Dockerfile index 70e18c37..9734be2d 100644 --- a/ruoyi-auth/Dockerfile +++ b/ruoyi-auth/Dockerfile @@ -2,7 +2,8 @@ #FROM bellsoft/liberica-openjdk-debian:17.0.11-cds #FROM registry.cn-hangzhou.aliyuncs.com/aliyun_openjdk/openjdk:17-jdk-slim #FROM bellsoft/liberica-openjdk-debian:21.0.5-cds -FROM 127.0.0.1:5000/smartparks/base-images/liberica-openjdk-debian +#FROM 127.0.0.1:5000/smartparks/base-images/liberica-openjdk-debian +FROM 127.0.0.1:5000/smartparks/base-images/liberica-openjdk-debian:17.0.11-cds #FROM findepi/graalvm:java17-native LABEL maintainer="Lion Li" From 9a4be9e609678d5a1fd375fa616f99992fce224a Mon Sep 17 00:00:00 2001 From: mocheng <3057647414@qq.com> Date: Thu, 14 Aug 2025 21:33:46 +0800 Subject: [PATCH 56/68] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E5=B7=A5=E4=BD=9C?= =?UTF-8?q?=E6=B5=813?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ruoyi-modules/pom.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ruoyi-modules/pom.xml b/ruoyi-modules/pom.xml index 267aca5a..3e55175f 100644 --- a/ruoyi-modules/pom.xml +++ b/ruoyi-modules/pom.xml @@ -14,8 +14,8 @@ ruoyi-job ruoyi-resource ruoyi-workflow - - + Property + Sis ruoyi-modules From fc4d7a2bdf32977fdd90081a85ef82ceb3000698 Mon Sep 17 00:00:00 2001 From: mocheng <3057647414@qq.com> Date: Thu, 14 Aug 2025 23:17:45 +0800 Subject: [PATCH 57/68] =?UTF-8?q?=E7=89=A9=E4=B8=9A=E6=A8=A1=E5=9D=97?= =?UTF-8?q?=E6=89=93=E5=8C=85=E6=8A=A5=E9=94=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ruoyi-modules/pom.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ruoyi-modules/pom.xml b/ruoyi-modules/pom.xml index 3e55175f..267aca5a 100644 --- a/ruoyi-modules/pom.xml +++ b/ruoyi-modules/pom.xml @@ -14,8 +14,8 @@ ruoyi-job ruoyi-resource ruoyi-workflow - Property - Sis + + ruoyi-modules From 63ee35574599ae99e5f69a90821d4c4541893ded Mon Sep 17 00:00:00 2001 From: mocheng <3057647414@qq.com> Date: Thu, 14 Aug 2025 23:37:12 +0800 Subject: [PATCH 58/68] =?UTF-8?q?=E7=89=A9=E4=B8=9A=E6=A8=A1=E5=9D=97?= =?UTF-8?q?=E6=89=93=E5=8C=85=E6=8A=A5=E9=94=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitea/workflows/master.yml | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/.gitea/workflows/master.yml b/.gitea/workflows/master.yml index af81d846..3daf0aed 100644 --- a/.gitea/workflows/master.yml +++ b/.gitea/workflows/master.yml @@ -31,6 +31,7 @@ jobs: # 目标仓库中的项目名称 TARGET_PROJECT: smartparks run: | + echo "===== 环境信息 =====" echo "目标仓库: $TARGET_REGISTRY/$TARGET_PROJECT" @@ -52,6 +53,16 @@ jobs: full_image_name="$TARGET_REGISTRY/$TARGET_PROJECT:$image_tag-${{ github.sha }}" echo "镜像名称: $full_image_name" + # 检查JAR包是否存在 + echo "===== 检查JAR包 =====" + jar_files=$(find "$docker_context" -name "*.jar" -type f) + if [ -z "$jar_files" ]; then + echo "警告:在 $docker_context 目录中未找到JAR包" + exit 1 + fi + echo "找到JAR包:" + echo "$jar_files" + echo "===== 构建镜像 =====" if ! docker build -t "$full_image_name" -f "$dockerfile" "$docker_context"; then echo "错误:构建镜像失败" @@ -77,3 +88,4 @@ jobs: echo "===== 清理操作 =====" docker system prune -f echo "===== 所有操作完成 =====" + From 6075704524a70ac427592d9fa62a423a9ef6871a Mon Sep 17 00:00:00 2001 From: bichangxiong <3057647414@qq.com> Date: Thu, 14 Aug 2025 23:39:56 +0800 Subject: [PATCH 59/68] =?UTF-8?q?=E6=9B=B4=E6=96=B0=20.gitea/workflows/mas?= =?UTF-8?q?ter.yml?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitea/workflows/master.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitea/workflows/master.yml b/.gitea/workflows/master.yml index 3daf0aed..458188ed 100644 --- a/.gitea/workflows/master.yml +++ b/.gitea/workflows/master.yml @@ -60,7 +60,7 @@ jobs: echo "警告:在 $docker_context 目录中未找到JAR包" exit 1 fi - echo "找到JAR包:" + echo "找到JAR包:" echo "$jar_files" echo "===== 构建镜像 =====" From f488acf9cc1fc95f698d973306aa121a40a04cc4 Mon Sep 17 00:00:00 2001 From: mocheng <3057647414@qq.com> Date: Thu, 14 Aug 2025 23:41:27 +0800 Subject: [PATCH 60/68] =?UTF-8?q?=E7=89=A9=E4=B8=9A=E6=A8=A1=E5=9D=97?= =?UTF-8?q?=E6=89=93=E5=8C=85=E6=8A=A5=E9=94=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitea/workflows/master.yml | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/.gitea/workflows/master.yml b/.gitea/workflows/master.yml index 3daf0aed..af81d846 100644 --- a/.gitea/workflows/master.yml +++ b/.gitea/workflows/master.yml @@ -31,7 +31,6 @@ jobs: # 目标仓库中的项目名称 TARGET_PROJECT: smartparks run: | - echo "===== 环境信息 =====" echo "目标仓库: $TARGET_REGISTRY/$TARGET_PROJECT" @@ -53,16 +52,6 @@ jobs: full_image_name="$TARGET_REGISTRY/$TARGET_PROJECT:$image_tag-${{ github.sha }}" echo "镜像名称: $full_image_name" - # 检查JAR包是否存在 - echo "===== 检查JAR包 =====" - jar_files=$(find "$docker_context" -name "*.jar" -type f) - if [ -z "$jar_files" ]; then - echo "警告:在 $docker_context 目录中未找到JAR包" - exit 1 - fi - echo "找到JAR包:" - echo "$jar_files" - echo "===== 构建镜像 =====" if ! docker build -t "$full_image_name" -f "$dockerfile" "$docker_context"; then echo "错误:构建镜像失败" @@ -88,4 +77,3 @@ jobs: echo "===== 清理操作 =====" docker system prune -f echo "===== 所有操作完成 =====" - From 9110c152aa749c0552d765158ee90fc71160ec75 Mon Sep 17 00:00:00 2001 From: mocheng <3057647414@qq.com> Date: Thu, 14 Aug 2025 23:43:25 +0800 Subject: [PATCH 61/68] =?UTF-8?q?=E7=89=A9=E4=B8=9A=E6=A8=A1=E5=9D=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitea/workflows/master.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitea/workflows/master.yml b/.gitea/workflows/master.yml index af81d846..33371768 100644 --- a/.gitea/workflows/master.yml +++ b/.gitea/workflows/master.yml @@ -76,4 +76,4 @@ jobs: echo "===== 清理操作 =====" docker system prune -f - echo "===== 所有操作完成 =====" + echo "===== 所有操作完成 ====" From d13f58cb95771677b5a3e5be0373ff511e84db46 Mon Sep 17 00:00:00 2001 From: mocheng <3057647414@qq.com> Date: Thu, 14 Aug 2025 23:46:20 +0800 Subject: [PATCH 62/68] =?UTF-8?q?=E7=89=A9=E4=B8=9A=E6=A8=A1=E5=9D=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitea/workflows/master.yml | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/.gitea/workflows/master.yml b/.gitea/workflows/master.yml index 33371768..b9c977b9 100644 --- a/.gitea/workflows/master.yml +++ b/.gitea/workflows/master.yml @@ -52,6 +52,16 @@ jobs: full_image_name="$TARGET_REGISTRY/$TARGET_PROJECT:$image_tag-${{ github.sha }}" echo "镜像名称: $full_image_name" + # 检查JAR包是否存在 + echo "===== 检查JAR包 =====" + jar_files=$(find "$docker_context" -name "*.jar" -type f) + if [ -z "$jar_files" ]; then + echo "警告:在 $docker_context 目录中未找到JAR包" + exit 1 + fi + echo "找到JAR包:" + echo "$jar_files" + echo "===== 构建镜像 =====" if ! docker build -t "$full_image_name" -f "$dockerfile" "$docker_context"; then echo "错误:构建镜像失败" From d9cf6ef530abd2aedf561dcf5643cc758ecdaf42 Mon Sep 17 00:00:00 2001 From: mocheng <3057647414@qq.com> Date: Thu, 14 Aug 2025 23:55:35 +0800 Subject: [PATCH 63/68] =?UTF-8?q?=E7=89=A9=E4=B8=9A=E6=A8=A1=E5=9D=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitea/workflows/master.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitea/workflows/master.yml b/.gitea/workflows/master.yml index b9c977b9..9ca94237 100644 --- a/.gitea/workflows/master.yml +++ b/.gitea/workflows/master.yml @@ -57,7 +57,7 @@ jobs: jar_files=$(find "$docker_context" -name "*.jar" -type f) if [ -z "$jar_files" ]; then echo "警告:在 $docker_context 目录中未找到JAR包" - exit 1 + continue fi echo "找到JAR包:" echo "$jar_files" From f05fbc967df91f9752d4dfbea9f8e31daa0c5aa5 Mon Sep 17 00:00:00 2001 From: dy <2389062315@qq.com> Date: Fri, 15 Aug 2025 10:24:33 +0800 Subject: [PATCH 64/68] 1 --- .../java/org/dromara/property/domain/bo/AttendanceAreaBo.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/bo/AttendanceAreaBo.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/bo/AttendanceAreaBo.java index b65fc902..aeef74d4 100644 --- a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/bo/AttendanceAreaBo.java +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/bo/AttendanceAreaBo.java @@ -31,7 +31,7 @@ public class AttendanceAreaBo extends BaseEntity { /** * 摄像机id */ - private List deviceManageId; + private Long deviceManageId; /** * 区域 From da70fcc8699f5b413fc051b3852fb98825282931 Mon Sep 17 00:00:00 2001 From: dy <2389062315@qq.com> Date: Fri, 15 Aug 2025 10:26:01 +0800 Subject: [PATCH 65/68] 1 --- .../main/java/org/dromara/property/domain/AttendanceArea.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/AttendanceArea.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/AttendanceArea.java index e93cd13d..12dd4157 100644 --- a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/AttendanceArea.java +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/AttendanceArea.java @@ -30,7 +30,7 @@ public class AttendanceArea extends TenantEntity { /** * 摄像机id */ - private String deviceManageId; + private Long deviceManageId; /** * 区域 From 77bfdd2823028a066235bed4ef0bd919491a4729 Mon Sep 17 00:00:00 2001 From: dy <2389062315@qq.com> Date: Fri, 15 Aug 2025 10:29:54 +0800 Subject: [PATCH 66/68] 1 --- .../property/service/impl/AttendanceAreaServiceImpl.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/AttendanceAreaServiceImpl.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/AttendanceAreaServiceImpl.java index 113999b1..26b70136 100644 --- a/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/AttendanceAreaServiceImpl.java +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/AttendanceAreaServiceImpl.java @@ -93,8 +93,8 @@ public class AttendanceAreaServiceImpl implements IAttendanceAreaService { if (ObjectUtil.isNotEmpty(bo.getDeviceManageId())) { assert add != null; // 将 deviceManageId 集合转换为以逗号分隔的字符串 - String deviceManageIdsStr = StringUtils.join(bo.getDeviceManageId(), ","); - add.setDeviceManageId(deviceManageIdsStr); +// String deviceManageIdsStr = StringUtils.join(bo.getDeviceManageId(), ","); + add.setDeviceManageId(bo.getDeviceManageId()); } validEntityBeforeSave(add); boolean flag = baseMapper.insert(add) > 0; From 44beda8f341099a7a0964179b38b14a0b7e96cba Mon Sep 17 00:00:00 2001 From: dy <2389062315@qq.com> Date: Fri, 15 Aug 2025 10:54:13 +0800 Subject: [PATCH 67/68] 1 --- .../property/domain/AttendanceAreaDevice.java | 42 +++++++++++++++++++ ruoyi-modules/pom.xml | 2 +- 2 files changed, 43 insertions(+), 1 deletion(-) create mode 100644 ruoyi-modules/Property/src/main/java/org/dromara/property/domain/AttendanceAreaDevice.java diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/AttendanceAreaDevice.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/AttendanceAreaDevice.java new file mode 100644 index 00000000..32c7362d --- /dev/null +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/AttendanceAreaDevice.java @@ -0,0 +1,42 @@ +package org.dromara.property.domain; + +import org.dromara.common.tenant.core.TenantEntity; +import com.baomidou.mybatisplus.annotation.*; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serial; + +/** + * 摄像头区域中间表 attendance_area_device + * + * @author LionLi + * @date 2025-08-13 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("attendance_area_device") +public class AttendanceAreaDevice extends TenantEntity { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 主键id + */ + @TableId(value = "id") + private Long id; + + /** + * 区域id + */ + private Long areaId; + + /** + * 摄像机id + */ + private String deviceManageId; + + + +} diff --git a/ruoyi-modules/pom.xml b/ruoyi-modules/pom.xml index 267aca5a..bb867d3f 100644 --- a/ruoyi-modules/pom.xml +++ b/ruoyi-modules/pom.xml @@ -14,7 +14,7 @@ ruoyi-job ruoyi-resource ruoyi-workflow - + Property From 80a44540d8f1bc1358c6c6c524b4731df0585bec Mon Sep 17 00:00:00 2001 From: yuyongle <1150359267@qq.com> Date: Fri, 15 Aug 2025 11:42:57 +0800 Subject: [PATCH 68/68] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E4=BA=86=E8=B0=83?= =?UTF-8?q?=E6=9F=A5=E9=97=AE=E5=8D=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/QuestionnaireController.java | 95 ++++++++ .../property/domain/Questionnaire.java | 63 ++++++ .../domain/QuestionnaireQuestion.java | 61 +++++ .../domain/QuestionnaireQuestionItem.java | 51 +++++ .../property/domain/bo/QuestionnaireBo.java | 70 ++++++ .../domain/bo/QuestionnaireQuestionBo.java | 69 ++++++ .../bo/QuestionnaireQuestionItemBo.java | 51 +++++ .../vo/QuestionnaireQuestionItemVo.java | 62 +++++ .../domain/vo/QuestionnaireQuestionVo.java | 74 ++++++ .../property/domain/vo/QuestionnaireVo.java | 76 +++++++ .../property/mapper/QuestionnaireMapper.java | 17 ++ .../QuestionnaireQuestionItemMapper.java | 17 ++ .../mapper/QuestionnaireQuestionMapper.java | 17 ++ .../service/IQuestionnaireService.java | 69 ++++++ .../impl/QuestionnaireServiceImpl.java | 212 ++++++++++++++++++ .../mapper/Property/QuestionnaireMapper.xml | 7 + .../QuestionnaireQuestionItemMapper.xml | 7 + .../Property/QuestionnaireQuestionMapper.xml | 7 + 18 files changed, 1025 insertions(+) diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/controller/QuestionnaireController.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/controller/QuestionnaireController.java index e69de29b..a54cdfe7 100644 --- a/ruoyi-modules/Property/src/main/java/org/dromara/property/controller/QuestionnaireController.java +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/controller/QuestionnaireController.java @@ -0,0 +1,95 @@ +package org.dromara.property.controller; + +import java.util.List; + +import lombok.RequiredArgsConstructor; +import jakarta.servlet.http.HttpServletResponse; +import jakarta.validation.constraints.*; +import cn.dev33.satoken.annotation.SaCheckPermission; +import org.springframework.web.bind.annotation.*; +import org.springframework.validation.annotation.Validated; +import org.dromara.common.idempotent.annotation.RepeatSubmit; +import org.dromara.common.log.annotation.Log; +import org.dromara.common.web.core.BaseController; +import org.dromara.common.mybatis.core.page.PageQuery; +import org.dromara.common.core.domain.R; +import org.dromara.common.core.validate.AddGroup; +import org.dromara.common.core.validate.EditGroup; +import org.dromara.common.log.enums.BusinessType; +import org.dromara.common.excel.utils.ExcelUtil; +import org.dromara.property.domain.vo.QuestionnaireVo; +import org.dromara.property.domain.bo.QuestionnaireBo; +import org.dromara.property.service.IQuestionnaireService; +import org.dromara.common.mybatis.core.page.TableDataInfo; + +/** + * 调查问卷 + * 前端访问路由地址为:/property/questionnaire + * + * @author LionLi + * @date 2025-08-14 + */ +@Validated +@RequiredArgsConstructor +@RestController +@RequestMapping("/questionnaire") +public class QuestionnaireController extends BaseController { + + private final IQuestionnaireService questionnaireService; + + /** + * 查询调查问卷列表 + */ + @SaCheckPermission("property:questionnaire:list") + @GetMapping("/list") + public TableDataInfo list(QuestionnaireBo bo, PageQuery pageQuery) { + return questionnaireService.queryPageList(bo, pageQuery); + } + + /** + * 获取调查问卷详细信息 + * + * @param id 主键 + */ + @SaCheckPermission("property:questionnaire:query") + @GetMapping("/{id}") + public R getInfo(@NotNull(message = "主键不能为空") + @PathVariable("id") Long id) { + return R.ok(questionnaireService.queryById(id)); + } + + /** + * 新增调查问卷 + */ + @SaCheckPermission("property:questionnaire:add") + @Log(title = "调查问卷", businessType = BusinessType.INSERT) + @RepeatSubmit() + @PostMapping() + public R add(@Validated(AddGroup.class) @RequestBody QuestionnaireBo bo) { + return toAjax(questionnaireService.insertByBo(bo)); + } + + /** + * 修改调查问卷 + */ + @SaCheckPermission("property:questionnaire:edit") + @Log(title = "调查问卷", businessType = BusinessType.UPDATE) + @RepeatSubmit() + @PutMapping() + public R edit(@Validated(EditGroup.class) @RequestBody QuestionnaireBo bo) { + return toAjax(questionnaireService.updateByBo(bo)); + } + + /** + * 删除调查问卷 + * + * @param ids 主键串 + */ + @SaCheckPermission("property:questionnaire:remove") + @Log(title = "调查问卷", businessType = BusinessType.DELETE) + @DeleteMapping("/{ids}") + public R remove(@NotEmpty(message = "主键不能为空") + @PathVariable("ids") Long[] ids) { + return toAjax(questionnaireService.deleteWithValidByIds(List.of(ids), true)); + } +} diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/Questionnaire.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/Questionnaire.java index e69de29b..f27003c2 100644 --- a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/Questionnaire.java +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/Questionnaire.java @@ -0,0 +1,63 @@ +package org.dromara.property.domain; + +import org.dromara.common.tenant.core.TenantEntity; +import com.baomidou.mybatisplus.annotation.*; +import lombok.Data; +import lombok.EqualsAndHashCode; +import java.util.Date; +import com.fasterxml.jackson.annotation.JsonFormat; + +import java.io.Serial; + +/** + * 调查问卷对象 questionnaire + * + * @author LionLi + * @date 2025-08-14 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("questionnaire") +public class Questionnaire extends TenantEntity { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * id + */ + @TableId(value = "id") + private Long id; + + /** + * 标题 + */ + private String head; + + /** + * 描述 + */ + private String depict; + + /** + * 是否匿名收集 + */ + private String isAnonyCollec; + + /** + * 是否多次提交 + */ + private String isCommit; + + /** + * 截止日期 + */ + private Date deadline; + + /** + * 状态(1草稿2已发布3未发布) + */ + private String status; + + +} diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/QuestionnaireQuestion.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/QuestionnaireQuestion.java index e69de29b..9cdbbdf4 100644 --- a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/QuestionnaireQuestion.java +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/QuestionnaireQuestion.java @@ -0,0 +1,61 @@ +package org.dromara.property.domain; + +import org.dromara.common.tenant.core.TenantEntity; +import com.baomidou.mybatisplus.annotation.*; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serial; + +/** + * 调查问卷问题对象 questionnaire_question + * + * @author LionLi + * @date 2025-08-14 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("questionnaire_question") +public class QuestionnaireQuestion extends TenantEntity { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * id + */ + @TableId(value = "id") + private Long id; + + /** + * 调查问卷id + */ + private Long questionnaireId; + + /** + * 标题 + */ + private String head; + + /** + * 问题类型(1单行文本2多行文本3单选题4多选题5评分题6日期选择) + */ + private String type; + + /** + * 是否必填(1不必填2必填) + */ + private String isRequired; + + /** + * 描述 + */ + private String depict; + + /** + * 排序 + */ + private Long sort; + + +} diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/QuestionnaireQuestionItem.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/QuestionnaireQuestionItem.java index e69de29b..b257f780 100644 --- a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/QuestionnaireQuestionItem.java +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/QuestionnaireQuestionItem.java @@ -0,0 +1,51 @@ +package org.dromara.property.domain; + +import org.dromara.common.tenant.core.TenantEntity; +import com.baomidou.mybatisplus.annotation.*; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serial; + +/** + * 调查问卷问题选项对象 questionnaire_question_item + * + * @author LionLi + * @date 2025-08-14 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("questionnaire_question_item") +public class QuestionnaireQuestionItem extends TenantEntity { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * id + */ + @TableId(value = "id") + private Long id; + + /** + * 问题id + */ + private Long questionId; + + /** + * 选项内容 + */ + private String itemContent; + + /** + * 排序 + */ + private Long sort; + + /** + * 备注 + */ + private String remark; + + +} diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/bo/QuestionnaireBo.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/bo/QuestionnaireBo.java index e69de29b..9ef514d2 100644 --- a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/bo/QuestionnaireBo.java +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/bo/QuestionnaireBo.java @@ -0,0 +1,70 @@ +package org.dromara.property.domain.bo; + +import org.dromara.property.domain.Questionnaire; +import org.dromara.common.mybatis.core.domain.BaseEntity; +import org.dromara.common.core.validate.AddGroup; +import org.dromara.common.core.validate.EditGroup; +import io.github.linpeilie.annotations.AutoMapper; +import lombok.Data; +import lombok.EqualsAndHashCode; +import jakarta.validation.constraints.*; +import java.util.Date; +import java.util.List; + +import com.fasterxml.jackson.annotation.JsonFormat; + +/** + * 调查问卷业务对象 questionnaire + * + * @author LionLi + * @date 2025-08-14 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@AutoMapper(target = Questionnaire.class, reverseConvertGenerate = false) +public class QuestionnaireBo extends BaseEntity { + + /** + * id + */ + @NotNull(message = "id不能为空", groups = { EditGroup.class }) + private Long id; + + /** + * 标题 + */ + @NotBlank(message = "标题不能为空", groups = { AddGroup.class, EditGroup.class }) + private String head; + + /** + * 描述 + */ + @NotBlank(message = "问卷描述不能为空", groups = { AddGroup.class, EditGroup.class }) + private String depict; + + /** + * 是否匿名收集 + */ + private String isAnonyCollec; + + /** + * 是否多次提交 + */ + private String isCommit; + + /** + * 截止日期 + */ + @NotNull(message = "截止日期不能为空", groups = { AddGroup.class, EditGroup.class }) + private Date deadline; + + /** + * 状态(1草稿2已发布3未发布) + */ + @NotBlank(message = "状态(1草稿2已发布3未发布)不能为空", groups = { AddGroup.class, EditGroup.class }) + private String status; + /** + * 问卷问题列表 + */ + private List questionnaireQuestions; +} diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/bo/QuestionnaireQuestionBo.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/bo/QuestionnaireQuestionBo.java index e69de29b..8cd9c922 100644 --- a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/bo/QuestionnaireQuestionBo.java +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/bo/QuestionnaireQuestionBo.java @@ -0,0 +1,69 @@ +package org.dromara.property.domain.bo; + +import org.dromara.property.domain.QuestionnaireQuestion; +import org.dromara.common.mybatis.core.domain.BaseEntity; +import org.dromara.common.core.validate.AddGroup; +import org.dromara.common.core.validate.EditGroup; +import io.github.linpeilie.annotations.AutoMapper; +import lombok.Data; +import lombok.EqualsAndHashCode; +import jakarta.validation.constraints.*; + +import java.util.List; + +/** + * 调查问卷问题业务对象 questionnaire_question + * + * @author LionLi + * @date 2025-08-14 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@AutoMapper(target = QuestionnaireQuestion.class, reverseConvertGenerate = false) +public class QuestionnaireQuestionBo extends BaseEntity { + + /** + * id + */ + private Long id; + + /** + * 调查问卷id + */ + @NotNull(message = "调查问卷id不能为空", groups = {AddGroup.class, EditGroup.class}) + private Long questionnaireId; + + /** + * 标题 + */ + @NotBlank(message = "标题不能为空", groups = {AddGroup.class, EditGroup.class}) + private String head; + + /** + * 问题类型(1单行文本2多行文本3单选题4多选题5评分题6日期选择) + */ + @NotBlank(message = "问题类型(1单行文本2多行文本3单选题4多选题5评分题6日期选择)不能为空", groups = {AddGroup.class, EditGroup.class}) + private String type; + + /** + * 是否必填(1不必填2必填) + */ + @NotBlank(message = "是否必填(1不必填2必填)不能为空", groups = {AddGroup.class, EditGroup.class}) + private String isRequired; + + /** + * 描述 + */ + private String depict; + + /** + * 排序 + */ + @NotNull(message = "排序不能为空", groups = {AddGroup.class, EditGroup.class}) + private Long sort; + + /** + * 问题项目列表多选题必传 + */ + private List questionnaireQuestionItems; +} diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/bo/QuestionnaireQuestionItemBo.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/bo/QuestionnaireQuestionItemBo.java index e69de29b..1b5c09ff 100644 --- a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/bo/QuestionnaireQuestionItemBo.java +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/bo/QuestionnaireQuestionItemBo.java @@ -0,0 +1,51 @@ +package org.dromara.property.domain.bo; + +import org.dromara.property.domain.QuestionnaireQuestionItem; +import org.dromara.common.mybatis.core.domain.BaseEntity; +import org.dromara.common.core.validate.AddGroup; +import org.dromara.common.core.validate.EditGroup; +import io.github.linpeilie.annotations.AutoMapper; +import lombok.Data; +import lombok.EqualsAndHashCode; +import jakarta.validation.constraints.*; + +/** + * 调查问卷问题选项业务对象 questionnaire_question_item + * + * @author LionLi + * @date 2025-08-14 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@AutoMapper(target = QuestionnaireQuestionItem.class, reverseConvertGenerate = false) +public class QuestionnaireQuestionItemBo extends BaseEntity { + + /** + * id + */ + private Long id; + + /** + * 问题id + */ + @NotNull(message = "问题id不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long questionId; + + /** + * 选项内容 + */ + @NotBlank(message = "选项内容不能为空", groups = { AddGroup.class, EditGroup.class }) + private String itemContent; + + /** + * 排序 + */ + private Long sort; + + /** + * 备注 + */ + private String remark; + + +} diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/QuestionnaireQuestionItemVo.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/QuestionnaireQuestionItemVo.java index e69de29b..798fa053 100644 --- a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/QuestionnaireQuestionItemVo.java +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/QuestionnaireQuestionItemVo.java @@ -0,0 +1,62 @@ +package org.dromara.property.domain.vo; + +import org.dromara.property.domain.QuestionnaireQuestionItem; +import cn.idev.excel.annotation.ExcelIgnoreUnannotated; +import cn.idev.excel.annotation.ExcelProperty; +import org.dromara.common.excel.annotation.ExcelDictFormat; +import org.dromara.common.excel.convert.ExcelDictConvert; +import io.github.linpeilie.annotations.AutoMapper; +import lombok.Data; + +import java.io.Serial; +import java.io.Serializable; +import java.util.Date; + + + +/** + * 调查问卷问题选项视图对象 questionnaire_question_item + * + * @author LionLi + * @date 2025-08-14 + */ +@Data +@ExcelIgnoreUnannotated +@AutoMapper(target = QuestionnaireQuestionItem.class) +public class QuestionnaireQuestionItemVo implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * id + */ + @ExcelProperty(value = "id") + private Long id; + + /** + * 问题id + */ + @ExcelProperty(value = "问题id") + private Long questionId; + + /** + * 选项内容 + */ + @ExcelProperty(value = "选项内容") + private String itemContent; + + /** + * 排序 + */ + @ExcelProperty(value = "排序") + private Long sort; + + /** + * 备注 + */ + @ExcelProperty(value = "备注") + private String remark; + + +} diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/QuestionnaireQuestionVo.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/QuestionnaireQuestionVo.java index e69de29b..964bf8ec 100644 --- a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/QuestionnaireQuestionVo.java +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/QuestionnaireQuestionVo.java @@ -0,0 +1,74 @@ +package org.dromara.property.domain.vo; + +import org.dromara.property.domain.QuestionnaireQuestion; +import cn.idev.excel.annotation.ExcelIgnoreUnannotated; +import cn.idev.excel.annotation.ExcelProperty; +import org.dromara.common.excel.annotation.ExcelDictFormat; +import org.dromara.common.excel.convert.ExcelDictConvert; +import io.github.linpeilie.annotations.AutoMapper; +import lombok.Data; + +import java.io.Serial; +import java.io.Serializable; +import java.util.Date; + + + +/** + * 调查问卷问题视图对象 questionnaire_question + * + * @author LionLi + * @date 2025-08-14 + */ +@Data +@ExcelIgnoreUnannotated +@AutoMapper(target = QuestionnaireQuestion.class) +public class QuestionnaireQuestionVo implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * id + */ + @ExcelProperty(value = "id") + private Long id; + + /** + * 调查问卷id + */ + @ExcelProperty(value = "调查问卷id") + private Long questionnaireId; + + /** + * 标题 + */ + @ExcelProperty(value = "标题") + private String head; + + /** + * 问题类型(1单行文本2多行文本3单选题4多选题5评分题6日期选择) + */ + @ExcelProperty(value = "问题类型(1单行文本2多行文本3单选题4多选题5评分题6日期选择)") + private String type; + + /** + * 是否必填(1不必填2必填) + */ + @ExcelProperty(value = "是否必填(1不必填2必填)") + private String isRequired; + + /** + * 描述 + */ + @ExcelProperty(value = "描述") + private String depict; + + /** + * 排序 + */ + @ExcelProperty(value = "排序") + private Long sort; + + +} diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/QuestionnaireVo.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/QuestionnaireVo.java index e69de29b..b50fe3c8 100644 --- a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/QuestionnaireVo.java +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/QuestionnaireVo.java @@ -0,0 +1,76 @@ +package org.dromara.property.domain.vo; + +import java.util.Date; +import com.fasterxml.jackson.annotation.JsonFormat; +import org.dromara.property.domain.Questionnaire; +import cn.idev.excel.annotation.ExcelIgnoreUnannotated; +import cn.idev.excel.annotation.ExcelProperty; +import org.dromara.common.excel.annotation.ExcelDictFormat; +import org.dromara.common.excel.convert.ExcelDictConvert; +import io.github.linpeilie.annotations.AutoMapper; +import lombok.Data; + +import java.io.Serial; +import java.io.Serializable; +import java.util.Date; + + + +/** + * 调查问卷视图对象 questionnaire + * + * @author LionLi + * @date 2025-08-14 + */ +@Data +@ExcelIgnoreUnannotated +@AutoMapper(target = Questionnaire.class) +public class QuestionnaireVo implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * id + */ + @ExcelProperty(value = "id") + private Long id; + + /** + * 标题 + */ + @ExcelProperty(value = "标题") + private String head; + + /** + * 描述 + */ + @ExcelProperty(value = "描述") + private String depict; + + /** + * 是否匿名收集 + */ + @ExcelProperty(value = "是否匿名收集") + private String isAnonyCollec; + + /** + * 是否多次提交 + */ + @ExcelProperty(value = "是否多次提交") + private String isCommit; + + /** + * 截止日期 + */ + @ExcelProperty(value = "截止日期") + private Date deadline; + + /** + * 状态(1草稿2已发布3未发布) + */ + @ExcelProperty(value = "状态(1草稿2已发布3未发布)") + private String status; + + +} diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/mapper/QuestionnaireMapper.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/mapper/QuestionnaireMapper.java index e69de29b..b76bb3ab 100644 --- a/ruoyi-modules/Property/src/main/java/org/dromara/property/mapper/QuestionnaireMapper.java +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/mapper/QuestionnaireMapper.java @@ -0,0 +1,17 @@ +package org.dromara.property.mapper; + +import org.apache.ibatis.annotations.Mapper; +import org.dromara.property.domain.Questionnaire; +import org.dromara.property.domain.vo.QuestionnaireVo; +import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; + +/** + * 调查问卷Mapper接口 + * + * @author LionLi + * @date 2025-08-14 + */ +@Mapper +public interface QuestionnaireMapper extends BaseMapperPlus { + +} diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/mapper/QuestionnaireQuestionItemMapper.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/mapper/QuestionnaireQuestionItemMapper.java index e69de29b..adf0124d 100644 --- a/ruoyi-modules/Property/src/main/java/org/dromara/property/mapper/QuestionnaireQuestionItemMapper.java +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/mapper/QuestionnaireQuestionItemMapper.java @@ -0,0 +1,17 @@ +package org.dromara.property.mapper; + +import org.apache.ibatis.annotations.Mapper; +import org.dromara.property.domain.QuestionnaireQuestionItem; +import org.dromara.property.domain.vo.QuestionnaireQuestionItemVo; +import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; + +/** + * 调查问卷问题选项Mapper接口 + * + * @author LionLi + * @date 2025-08-14 + */ +@Mapper +public interface QuestionnaireQuestionItemMapper extends BaseMapperPlus { + +} diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/mapper/QuestionnaireQuestionMapper.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/mapper/QuestionnaireQuestionMapper.java index e69de29b..d0def2a1 100644 --- a/ruoyi-modules/Property/src/main/java/org/dromara/property/mapper/QuestionnaireQuestionMapper.java +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/mapper/QuestionnaireQuestionMapper.java @@ -0,0 +1,17 @@ +package org.dromara.property.mapper; + +import org.apache.ibatis.annotations.Mapper; +import org.dromara.property.domain.QuestionnaireQuestion; +import org.dromara.property.domain.vo.QuestionnaireQuestionVo; +import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; + +/** + * 调查问卷问题Mapper接口 + * + * @author LionLi + * @date 2025-08-14 + */ +@Mapper +public interface QuestionnaireQuestionMapper extends BaseMapperPlus { + +} diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/service/IQuestionnaireService.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/service/IQuestionnaireService.java index e69de29b..11b6ade4 100644 --- a/ruoyi-modules/Property/src/main/java/org/dromara/property/service/IQuestionnaireService.java +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/service/IQuestionnaireService.java @@ -0,0 +1,69 @@ +package org.dromara.property.service; + +import org.dromara.property.domain.Questionnaire; +import org.dromara.property.domain.vo.QuestionnaireVo; +import org.dromara.property.domain.bo.QuestionnaireBo; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.common.mybatis.core.page.PageQuery; + +import java.util.Collection; +import java.util.List; + +/** + * 调查问卷Service接口 + * + * @author LionLi + * @date 2025-08-14 + */ +public interface IQuestionnaireService { + + /** + * 查询调查问卷 + * + * @param id 主键 + * @return 调查问卷 + */ + QuestionnaireVo queryById(Long id); + + /** + * 分页查询调查问卷列表 + * + * @param bo 查询条件 + * @param pageQuery 分页参数 + * @return 调查问卷分页列表 + */ + TableDataInfo queryPageList(QuestionnaireBo bo, PageQuery pageQuery); + + /** + * 查询符合条件的调查问卷列表 + * + * @param bo 查询条件 + * @return 调查问卷列表 + */ + List queryList(QuestionnaireBo bo); + + /** + * 新增调查问卷 + * + * @param bo 调查问卷 + * @return 是否新增成功 + */ + Boolean insertByBo(QuestionnaireBo bo); + + /** + * 修改调查问卷 + * + * @param bo 调查问卷 + * @return 是否修改成功 + */ + Boolean updateByBo(QuestionnaireBo bo); + + /** + * 校验并批量删除调查问卷信息 + * + * @param ids 待删除的主键集合 + * @param isValid 是否进行有效性校验 + * @return 是否删除成功 + */ + Boolean deleteWithValidByIds(Collection ids, Boolean isValid); +} diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/QuestionnaireServiceImpl.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/QuestionnaireServiceImpl.java index e69de29b..01df710b 100644 --- a/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/QuestionnaireServiceImpl.java +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/QuestionnaireServiceImpl.java @@ -0,0 +1,212 @@ +package org.dromara.property.service.impl; + +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.collection.CollUtil; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +import org.dromara.common.core.utils.MapstructUtils; +import org.dromara.common.core.utils.StringUtils; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.common.mybatis.core.page.PageQuery; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.dromara.property.domain.QuestionnaireQuestion; +import org.dromara.property.domain.QuestionnaireQuestionItem; +import org.dromara.property.domain.bo.QuestionnaireQuestionBo; +import org.dromara.property.domain.bo.QuestionnaireQuestionItemBo; +import org.dromara.property.mapper.QuestionnaireQuestionItemMapper; +import org.dromara.property.mapper.QuestionnaireQuestionMapper; +import org.springframework.stereotype.Service; +import org.dromara.property.domain.bo.QuestionnaireBo; +import org.dromara.property.domain.vo.QuestionnaireVo; +import org.dromara.property.domain.Questionnaire; +import org.dromara.property.mapper.QuestionnaireMapper; +import org.dromara.property.service.IQuestionnaireService; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; +import java.util.Map; +import java.util.Collection; + +/** + * 调查问卷Service业务层处理 + * + * @author LionLi + * @date 2025-08-14 + */ +@Slf4j +@RequiredArgsConstructor +@Service +public class QuestionnaireServiceImpl implements IQuestionnaireService { + + private final QuestionnaireMapper baseMapper; + private final QuestionnaireQuestionMapper questionnaireQuestionMapper; + private final QuestionnaireQuestionItemMapper questionnaireQuestionItemMapper; + + /** + * 查询调查问卷 + * + * @param id 主键 + * @return 调查问卷 + */ + @Override + public QuestionnaireVo queryById(Long id) { + return baseMapper.selectVoById(id); + } + + /** + * 分页查询调查问卷列表 + * + * @param bo 查询条件 + * @param pageQuery 分页参数 + * @return 调查问卷分页列表 + */ + @Override + public TableDataInfo queryPageList(QuestionnaireBo bo, PageQuery pageQuery) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + Page result = baseMapper.selectVoPage(pageQuery.build(), lqw); + return TableDataInfo.build(result); + } + + /** + * 查询符合条件的调查问卷列表 + * + * @param bo 查询条件 + * @return 调查问卷列表 + */ + @Override + public List queryList(QuestionnaireBo bo) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + return baseMapper.selectVoList(lqw); + } + + private LambdaQueryWrapper buildQueryWrapper(QuestionnaireBo bo) { + Map params = bo.getParams(); + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.orderByAsc(Questionnaire::getId); + lqw.like(StringUtils.isNotBlank(bo.getHead()), Questionnaire::getHead, bo.getHead()); + lqw.eq(StringUtils.isNotBlank(bo.getStatus()), Questionnaire::getStatus, bo.getStatus()); + return lqw; + } + + /** + * 新增调查问卷 + * + * @param bo 调查问卷 + * @return 是否新增成功 + */ + @Override + @Transactional(rollbackFor = Exception.class) + public Boolean insertByBo(QuestionnaireBo bo) { + Questionnaire add = MapstructUtils.convert(bo, Questionnaire.class); + boolean flag = baseMapper.insert(add) > 0; + if (flag) { + bo.setId(add.getId()); + validEntityBeforeAdd(bo); + } + return flag; + } + + /** + * 修改调查问卷 + * + * @param bo 调查问卷 + * @return 是否修改成功 + */ + @Override + @Transactional(rollbackFor = Exception.class) + public Boolean updateByBo(QuestionnaireBo bo) { + Questionnaire update = MapstructUtils.convert(bo, Questionnaire.class); + boolean flag = baseMapper.updateById(update) > 0; + if (flag) { + validEntityBeforeUpdate(bo); + } + return flag; + } + + /** + * 保存前的数据校验 + */ + private void validEntityBeforeAdd(QuestionnaireBo bo) { + //TODO 做一些数据校验,如唯一约束 + List questionnaireQuestions = bo.getQuestionnaireQuestions(); + if (CollUtil.isNotEmpty(questionnaireQuestions)) { + questionnaireQuestions.stream().forEach(questionnaireQuestionBo -> { + //新增问题 + questionnaireQuestionBo.setQuestionnaireId(bo.getId()); + QuestionnaireQuestion questionnaireQuestion = BeanUtil.copyProperties(questionnaireQuestionBo, QuestionnaireQuestion.class); + questionnaireQuestionMapper.insert(questionnaireQuestion); + List questionnaireQuestionItems = questionnaireQuestionBo.getQuestionnaireQuestionItems(); + if (CollUtil.isNotEmpty(questionnaireQuestionItems)) { + questionnaireQuestionItems.stream().forEach(questionnaireQuestionItemBo -> { + //新增问题项 + questionnaireQuestionItemBo.setQuestionId(questionnaireQuestion.getId()); + QuestionnaireQuestionItem questionnaireQuestionItem = BeanUtil.copyProperties(questionnaireQuestionItemBo, QuestionnaireQuestionItem.class); + questionnaireQuestionItemMapper.insert(questionnaireQuestionItem); + }); + } + }); + + } + } + + /** + * 更新前的数据校验 + */ + private void validEntityBeforeUpdate(QuestionnaireBo bo) { + List questionnaireQuestions = bo.getQuestionnaireQuestions(); + if (CollUtil.isNotEmpty(questionnaireQuestions)) { + //删除问题 + questionnaireQuestionMapper.delete(new LambdaUpdateWrapper().eq(QuestionnaireQuestion::getQuestionnaireId, bo.getId())); + questionnaireQuestions.stream().forEach(questionnaireQuestionBo -> { + //新增问题 + questionnaireQuestionBo.setQuestionnaireId(bo.getId()); + QuestionnaireQuestion questionnaireQuestion = BeanUtil.copyProperties(questionnaireQuestionBo, QuestionnaireQuestion.class); + questionnaireQuestionMapper.insert(questionnaireQuestion); + List questionnaireQuestionItems = questionnaireQuestionBo.getQuestionnaireQuestionItems(); + if (CollUtil.isNotEmpty(questionnaireQuestionItems)) { + //删除问题项 + questionnaireQuestionItemMapper.delete(new LambdaUpdateWrapper().eq(QuestionnaireQuestionItem::getQuestionId, questionnaireQuestion.getId())); + questionnaireQuestionItems.stream().forEach(questionnaireQuestionItemBo -> { + //新增问题项 + questionnaireQuestionItemBo.setQuestionId(questionnaireQuestion.getId()); + QuestionnaireQuestionItem questionnaireQuestionItem = BeanUtil.copyProperties(questionnaireQuestionItemBo, QuestionnaireQuestionItem.class); + questionnaireQuestionItemMapper.insert(questionnaireQuestionItem); + }); + } + }); + + } + } + + /** + * 校验并批量删除调查问卷信息 + * + * @param ids 待删除的主键集合 + * @param isValid 是否进行有效性校验 + * @return 是否删除成功 + */ + @Override + public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) { + boolean flag = baseMapper.deleteByIds(ids) > 0; + if(flag){ + ids.stream().forEach(id -> { + //查询问题 + List questionnaireQuestionList = questionnaireQuestionMapper.selectList(new LambdaUpdateWrapper().eq(QuestionnaireQuestion::getQuestionnaireId, id)); + //查询问题项 + if (CollUtil.isNotEmpty(questionnaireQuestionList)) { + questionnaireQuestionList.stream().forEach(questionnaireQuestion -> { + boolean falg = questionnaireQuestionItemMapper.exists(new LambdaUpdateWrapper().eq(QuestionnaireQuestionItem::getQuestionId, questionnaireQuestion.getId())); + if (falg) { + questionnaireQuestionItemMapper.delete(new LambdaUpdateWrapper().eq(QuestionnaireQuestionItem::getQuestionId, questionnaireQuestion.getId())); + } + }); + } + }); + } + + return flag; + } +} diff --git a/ruoyi-modules/Property/src/main/resources/mapper/Property/QuestionnaireMapper.xml b/ruoyi-modules/Property/src/main/resources/mapper/Property/QuestionnaireMapper.xml index e69de29b..310420a7 100644 --- a/ruoyi-modules/Property/src/main/resources/mapper/Property/QuestionnaireMapper.xml +++ b/ruoyi-modules/Property/src/main/resources/mapper/Property/QuestionnaireMapper.xml @@ -0,0 +1,7 @@ + + + + + diff --git a/ruoyi-modules/Property/src/main/resources/mapper/Property/QuestionnaireQuestionItemMapper.xml b/ruoyi-modules/Property/src/main/resources/mapper/Property/QuestionnaireQuestionItemMapper.xml index e69de29b..3f550081 100644 --- a/ruoyi-modules/Property/src/main/resources/mapper/Property/QuestionnaireQuestionItemMapper.xml +++ b/ruoyi-modules/Property/src/main/resources/mapper/Property/QuestionnaireQuestionItemMapper.xml @@ -0,0 +1,7 @@ + + + + + diff --git a/ruoyi-modules/Property/src/main/resources/mapper/Property/QuestionnaireQuestionMapper.xml b/ruoyi-modules/Property/src/main/resources/mapper/Property/QuestionnaireQuestionMapper.xml index e69de29b..296bf895 100644 --- a/ruoyi-modules/Property/src/main/resources/mapper/Property/QuestionnaireQuestionMapper.xml +++ b/ruoyi-modules/Property/src/main/resources/mapper/Property/QuestionnaireQuestionMapper.xml @@ -0,0 +1,7 @@ + + + + +