From d45b3cccb8841fb1f8d3d72c2c852f3a0ca215df Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=BD=97=E6=88=90?= <2847920761@qq.com> Date: Tue, 29 Jul 2025 10:07:46 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A4=9A=E6=95=B0=E6=8D=AE=E6=BA=90=E7=9A=84?= =?UTF-8?q?=E9=A1=B9=E7=9B=AE=E8=8E=B7=E5=8F=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/resources/application-dev.yml | 16 +-- .../BusContactformtemplateController.java | 1 + .../dromara/cory/controller/LhygOrXnyApp.java | 41 ------ .../cory/controller/OtherDateSource.java | 41 ++++++ .../org/dromara/cory/domain/SysProject.java | 115 +++++++++++++++++ .../cory/domain/bo/SysProjectListReq.java | 27 ++++ .../dromara/cory/domain/vo/SysProjectVo.java | 122 ++++++++++++++++++ .../cory/mapper/BusContactnoticeMapper.java | 5 + .../cory/mapper/OtherDateSourceMapper.java | 16 +++ .../cory/service/IOtherDateSourceService.java | 18 +++ .../impl/OtherDateSourceServiceImpl.java | 42 ++++++ 11 files changed, 395 insertions(+), 49 deletions(-) delete mode 100644 xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cory/controller/LhygOrXnyApp.java create mode 100644 xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cory/controller/OtherDateSource.java create mode 100644 xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cory/domain/SysProject.java create mode 100644 xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cory/domain/bo/SysProjectListReq.java create mode 100644 xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cory/domain/vo/SysProjectVo.java create mode 100644 xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cory/mapper/OtherDateSourceMapper.java create mode 100644 xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cory/service/IOtherDateSourceService.java create mode 100644 xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cory/service/impl/OtherDateSourceServiceImpl.java diff --git a/xinnengyuan/ruoyi-admin/src/main/resources/application-dev.yml b/xinnengyuan/ruoyi-admin/src/main/resources/application-dev.yml index 8dfb7a3c..ef2ff5cb 100644 --- a/xinnengyuan/ruoyi-admin/src/main/resources/application-dev.yml +++ b/xinnengyuan/ruoyi-admin/src/main/resources/application-dev.yml @@ -52,14 +52,14 @@ spring: url: jdbc:mysql://192.168.110.2:13386/xinnengyuandev?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 username: xinnengyuandev password: StRWCZdZirysNSs2 - # # 从库数据源 - # slave: - # lazy: true - # type: ${spring.datasource.type} - # driverClassName: com.mysql.cj.jdbc.Driver - # url: jdbc:mysql://localhost:3306/ry-vue?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true&rewriteBatchedStatements=true&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true - # username: - # password: + # 从库数据源 + slave: + lazy: true + type: ${spring.datasource.type} + driverClassName: com.mysql.cj.jdbc.Driver + url: jdbc:mysql://192.168.110.2:13386/zmkgdev?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true&rewriteBatchedStatements=true&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true + username: zmkgdev + password: JhYxREf25AXdy3h8 # oracle: # type: ${spring.datasource.type} # driverClassName: oracle.jdbc.OracleDriver diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cory/controller/BusContactformtemplateController.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cory/controller/BusContactformtemplateController.java index 705d96d8..cbb417cc 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cory/controller/BusContactformtemplateController.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cory/controller/BusContactformtemplateController.java @@ -2,6 +2,7 @@ package org.dromara.cory.controller; import cn.dev33.satoken.annotation.SaCheckPermission; import cn.dev33.satoken.annotation.SaMode; +import com.baomidou.dynamic.datasource.annotation.DS; import jakarta.servlet.http.HttpServletResponse; import jakarta.validation.constraints.NotEmpty; import jakarta.validation.constraints.NotNull; diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cory/controller/LhygOrXnyApp.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cory/controller/LhygOrXnyApp.java deleted file mode 100644 index fda16026..00000000 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cory/controller/LhygOrXnyApp.java +++ /dev/null @@ -1,41 +0,0 @@ -package org.dromara.cory.controller; - -import cn.dev33.satoken.annotation.SaCheckPermission; -import io.swagger.v3.oas.annotations.tags.Tag; -import lombok.RequiredArgsConstructor; -import org.dromara.common.core.domain.R; -import org.dromara.common.idempotent.annotation.RepeatSubmit; -import org.dromara.common.log.annotation.Log; -import org.dromara.common.log.enums.BusinessType; -import org.dromara.cory.domain.bo.BusContactformtemplateBo; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestPart; -import org.springframework.web.bind.annotation.RestController; -import org.springframework.web.multipart.MultipartFile; - -/** - * @Author 重构APP相关接口 - * @Date 2025/7/28 17:07 - * @Version 1.0 - */ - -@Validated -@RequiredArgsConstructor -@RestController -@RequestMapping("/cory/lhygOrXny") -public class LhygOrXnyApp { - -// /** -// * app登录 -// */ -// @RepeatSubmit() -// @PostMapping() -// public R Login( -// BusContactformtemplateBo bo, -// @RequestPart("file") MultipartFile file) { -// return toAjax(busContactformtemplateService.insertByBo(bo, file)); -// } - -} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cory/controller/OtherDateSource.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cory/controller/OtherDateSource.java new file mode 100644 index 00000000..4c550c2b --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cory/controller/OtherDateSource.java @@ -0,0 +1,41 @@ +package org.dromara.cory.controller; + +import cn.dev33.satoken.annotation.SaCheckPermission; +import com.baomidou.dynamic.datasource.annotation.DS; +import lombok.RequiredArgsConstructor; +import org.dromara.common.mybatis.core.page.PageQuery; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.cory.domain.bo.BusContactnoticeBo; +import org.dromara.cory.domain.bo.SysProjectListReq; +import org.dromara.cory.domain.vo.BusContactnoticeVo; +import org.dromara.cory.domain.vo.SysProjectVo; +import org.dromara.cory.service.IOtherDateSourceService; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + * @Author 铁憨憨 + * @Date 2025/7/29 9:21 + * @Version 1.0 + */ + + +@Validated +@RequiredArgsConstructor +@RestController +@RequestMapping("/cory/otherDateSource") +@DS("slave") +public class OtherDateSource { + private final IOtherDateSourceService otherDateSourceService; + + /** + * 获取项目列表 + */ + @SaCheckPermission("cory:otherDateSourceService:list") + @GetMapping("/list") + public TableDataInfo list(SysProjectListReq bo, PageQuery pageQuery) { + return otherDateSourceService.list(bo, pageQuery); + } +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cory/domain/SysProject.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cory/domain/SysProject.java new file mode 100644 index 00000000..a5bcfcb3 --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cory/domain/SysProject.java @@ -0,0 +1,115 @@ +package org.dromara.cory.domain; + +import com.baomidou.mybatisplus.annotation.*; +import jakarta.validation.constraints.Min; +import jakarta.validation.constraints.Pattern; +import lombok.Data; +import com.baomidou.mybatisplus.annotation.*; +import lombok.EqualsAndHashCode; +import org.dromara.common.mybatis.core.domain.BaseEntity; +import org.hibernate.validator.constraints.Length; +import java.util.Date; + +import java.io.Serializable; + +/** + * @Author 铁憨憨 + * @Date 2025/7/29 9:27 + * @Version 1.0 + */ +@Data +@TableName("sys_project") // 替换为实际表名 +public class SysProject implements Serializable { + + @TableId(type = IdType.AUTO) + private Long id; + + @Length(max = 64, message = "项目名称长度不能超过64个字符") + private String projectName; + + @Length(max = 64, message = "项目简称长度不能超过64个字符") + private String shortName; + + private Long pId; + + @Pattern(regexp = "[01]", message = "状态值必须为0或1") + private String status; + + @Length(max = 255, message = "项目图片URL长度不能超过255个字符") + private String picUrl; + + @Length(max = 20, message = "经度长度不能超过20个字符") + private String lng; + + @Length(max = 20, message = "纬度长度不能超过20个字符") + private String lat; + + @Length(max = 500, message = "备注长度不能超过500个字符") + private String remark; + + @Length(max = 20, message = "项目类型长度不能超过20个字符") + private String type; + + @Pattern(regexp = "[12]", message = "项目类型值必须为1或2") + private String isType; + + @Length(max = 20, message = "展示颜色长度不能超过20个字符") + private String colourRgb; + + @Length(max = 64, message = "创建者长度不能超过64个字符") + private String createBy; + + @Length(max = 64, message = "更新者长度不能超过64个字符") + private String updateBy; + + @TableField(fill = FieldFill.INSERT) + private Date createTime; + + @TableField(fill = FieldFill.INSERT_UPDATE) + private Date updateTime; + + private Date deletedAt; + + @Deprecated + @Length(max = 255, message = "项目ID长度不能超过255个字符") + private String projectId; + + @Length(max = 8192, message = "视角参数长度不能超过8192个字符") + private String view; + + @Length(max = 255, message = "项目地址长度不能超过255个字符") + private String projectSite; + + @Length(max = 50, message = "负责人长度不能超过50个字符") + private String principal; + + @Pattern(regexp = "^1[3-9]\\d{9}$", message = "负责人电话格式不正确") + private String principalPhone; + + @Length(max = 64, message = "小程序薪资负责人长度不能超过64个字符") + private String principalXz; + + @Length(max = 64, message = "实际容量长度不能超过64个字符") + private String actual; + + @Length(max = 64, message = "计划容量长度不能超过64个字符") + private String plan; + + @Length(max = 64, message = "开工时间长度不能超过64个字符") + private String onStreamTime; + + @Pattern(regexp = "^\\d{2}:\\d{2},\\d{2}:\\d{2}$", message = "打卡范围格式不正确,应为HH:MM,HH:MM") + private String punchRange; + + @Min(value = 0, message = "设计总量不能小于0") + private Integer designTotal; + + @Length(max = 255, message = "安全协议书长度不能超过255个字符") + private String securityAgreement; + + @Min(value = 0, message = "排序字段不能小于0") + private Long sort; + + @Pattern(regexp = "[12]", message = "显示隐藏值必须为1或2") + private String showHidden; +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cory/domain/bo/SysProjectListReq.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cory/domain/bo/SysProjectListReq.java new file mode 100644 index 00000000..a033658d --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cory/domain/bo/SysProjectListReq.java @@ -0,0 +1,27 @@ +package org.dromara.cory.domain.bo; + +import io.github.linpeilie.annotations.AutoMapper; +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.dromara.common.mybatis.core.domain.BaseEntity; +import org.dromara.cory.domain.BusContactnotice; +import org.dromara.cory.domain.SysProject; +import org.hibernate.validator.constraints.Length; + +import java.io.Serializable; + +/** + * @Author 铁憨憨 + * @Date 2025/7/29 9:42 + * @Version 1.0 + */ + +@Data +public class SysProjectListReq implements Serializable { + @Length(max = 64, message = "项目名称长度不能超过64个字符") + private String projectName; + + @Length(max = 64, message = "项目简称长度不能超过64个字符") + private String shortName; + +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cory/domain/vo/SysProjectVo.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cory/domain/vo/SysProjectVo.java new file mode 100644 index 00000000..ea19b2df --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cory/domain/vo/SysProjectVo.java @@ -0,0 +1,122 @@ +package org.dromara.cory.domain.vo; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.baomidou.mybatisplus.annotation.FieldFill; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import io.github.linpeilie.annotations.AutoMapper; +import jakarta.validation.constraints.Min; +import jakarta.validation.constraints.Pattern; +import lombok.Data; +import org.dromara.cory.domain.BusContactnotice; +import org.dromara.cory.domain.SysProject; +import org.hibernate.validator.constraints.Length; + +import java.io.Serializable; +import java.util.Date; + +/** + * @Author 铁憨憨 + * @Date 2025/7/29 9:35 + * @Version 1.0 + */ + +@Data +@ExcelIgnoreUnannotated +@AutoMapper(target = SysProject.class) +public class SysProjectVo implements Serializable { + + @TableId(type = IdType.AUTO) + private Long id; + + @Length(max = 64, message = "项目名称长度不能超过64个字符") + private String projectName; + + @Length(max = 64, message = "项目简称长度不能超过64个字符") + private String shortName; + + private Long pId; + + @Pattern(regexp = "[01]", message = "状态值必须为0或1") + private String status; + + @Length(max = 255, message = "项目图片URL长度不能超过255个字符") + private String picUrl; + + @Length(max = 20, message = "经度长度不能超过20个字符") + private String lng; + + @Length(max = 20, message = "纬度长度不能超过20个字符") + private String lat; + + @Length(max = 500, message = "备注长度不能超过500个字符") + private String remark; + + @Length(max = 20, message = "项目类型长度不能超过20个字符") + private String type; + + @Pattern(regexp = "[12]", message = "项目类型值必须为1或2") + private String isType; + + @Length(max = 20, message = "展示颜色长度不能超过20个字符") + private String colourRgb; + + @Length(max = 64, message = "创建者长度不能超过64个字符") + private String createBy; + + @Length(max = 64, message = "更新者长度不能超过64个字符") + private String updateBy; + + @TableField(fill = FieldFill.INSERT) + private Date createTime; + + @TableField(fill = FieldFill.INSERT_UPDATE) + private Date updateTime; + + private Date deletedAt; + + @Deprecated + @Length(max = 255, message = "项目ID长度不能超过255个字符") + private String projectId; + + @Length(max = 8192, message = "视角参数长度不能超过8192个字符") + private String view; + + @Length(max = 255, message = "项目地址长度不能超过255个字符") + private String projectSite; + + @Length(max = 50, message = "负责人长度不能超过50个字符") + private String principal; + + @Pattern(regexp = "^1[3-9]\\d{9}$", message = "负责人电话格式不正确") + private String principalPhone; + + @Length(max = 64, message = "小程序薪资负责人长度不能超过64个字符") + private String principalXz; + + @Length(max = 64, message = "实际容量长度不能超过64个字符") + private String actual; + + @Length(max = 64, message = "计划容量长度不能超过64个字符") + private String plan; + + @Length(max = 64, message = "开工时间长度不能超过64个字符") + private String onStreamTime; + + @Pattern(regexp = "^\\d{2}:\\d{2},\\d{2}:\\d{2}$", message = "打卡范围格式不正确,应为HH:MM,HH:MM") + private String punchRange; + + @Min(value = 0, message = "设计总量不能小于0") + private Integer designTotal; + + @Length(max = 255, message = "安全协议书长度不能超过255个字符") + private String securityAgreement; + + @Min(value = 0, message = "排序字段不能小于0") + private Long sort; + + @Pattern(regexp = "[12]", message = "显示隐藏值必须为1或2") + private String showHidden; + +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cory/mapper/BusContactnoticeMapper.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cory/mapper/BusContactnoticeMapper.java index 8cc96a12..e88331b1 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cory/mapper/BusContactnoticeMapper.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cory/mapper/BusContactnoticeMapper.java @@ -1,5 +1,8 @@ package org.dromara.cory.mapper; +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import io.github.linpeilie.annotations.AutoMapper; +import lombok.Data; import org.dromara.cory.domain.BusContactnotice; import org.dromara.cory.domain.vo.BusContactnoticeVo; import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; @@ -10,6 +13,8 @@ import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; * @author Lion Li * @date 2025-07-03 */ + + public interface BusContactnoticeMapper extends BaseMapperPlus { } diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cory/mapper/OtherDateSourceMapper.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cory/mapper/OtherDateSourceMapper.java new file mode 100644 index 00000000..70c86a22 --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cory/mapper/OtherDateSourceMapper.java @@ -0,0 +1,16 @@ +package org.dromara.cory.mapper; + +import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; +import org.dromara.cory.domain.BusContactnotice; +import org.dromara.cory.domain.SysProject; +import org.dromara.cory.domain.vo.BusContactnoticeVo; +import org.dromara.cory.domain.vo.SysProjectVo; + +/** + * @Author 铁憨憨 + * @Date 2025/7/29 9:25 + * @Version 1.0 + */ +public interface OtherDateSourceMapper extends BaseMapperPlus { + +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cory/service/IOtherDateSourceService.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cory/service/IOtherDateSourceService.java new file mode 100644 index 00000000..5a92694d --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cory/service/IOtherDateSourceService.java @@ -0,0 +1,18 @@ +package org.dromara.cory.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import org.dromara.common.mybatis.core.page.PageQuery; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.cory.domain.SysProject; +import org.dromara.cory.domain.bo.SysProjectListReq; +import org.dromara.cory.domain.vo.SysProjectVo; + +import java.util.List; + +/** + * @Author 铁憨憨 + * @Date 2025/7/29 9:26 + * @Version 1.0 + */public interface IOtherDateSourceService extends IService { + TableDataInfo list(SysProjectListReq bo, PageQuery pageQuery); +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cory/service/impl/OtherDateSourceServiceImpl.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cory/service/impl/OtherDateSourceServiceImpl.java new file mode 100644 index 00000000..b192dacb --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cory/service/impl/OtherDateSourceServiceImpl.java @@ -0,0 +1,42 @@ +package org.dromara.cory.service.impl; + +import com.baomidou.dynamic.datasource.annotation.DS; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.dromara.common.mybatis.core.page.PageQuery; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.cory.domain.BusContactnotice; +import org.dromara.cory.domain.SysProject; +import org.dromara.cory.domain.bo.SysProjectListReq; +import org.dromara.cory.domain.vo.BusContactnoticeVo; +import org.dromara.cory.domain.vo.SysProjectVo; +import org.dromara.cory.mapper.OtherDateSourceMapper; +import org.dromara.cory.service.IBusContactnoticeService; +import org.dromara.cory.service.IOtherDateSourceService; +import org.mapstruct.Mapper; +import org.springframework.stereotype.Service; + +/** + * @Author 铁憨憨 + * @Date 2025/7/29 9:25 + * @Version 1.0 + */ + +@Slf4j +@RequiredArgsConstructor +@Service +@DS("slave") +public class OtherDateSourceServiceImpl extends ServiceImpl implements IOtherDateSourceService { + @Override + public TableDataInfo list(SysProjectListReq req, PageQuery pageQuery) { + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); + lqw.like(SysProject::getProjectName,req.getProjectName()); + lqw.like(SysProject::getShortName,req.getShortName()); + IPage sysProjectVoIPage = baseMapper.selectVoPage(pageQuery.build(), lqw); + return TableDataInfo.build(sysProjectVoIPage); + } +}