From 372719826425e958d4f2407d58211b2d4cd3f624 Mon Sep 17 00:00:00 2001 From: attiya <2413103649@qq.com> Date: Fri, 19 Sep 2025 14:46:51 +0800 Subject: [PATCH] =?UTF-8?q?=E5=85=AC=E5=91=8A=E5=9F=BA=E7=A1=80=E5=8A=9F?= =?UTF-8?q?=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .idea/.cache/.Apifox_Helper/.toolWindow.db | Bin 204800 -> 212992 bytes .idea/inspectionProfiles/Project_Default.xml | 10 ++ .../cdzy/activity/component/ImageConfig.java | 27 +++++ .../component/MyBatisFlexConfiguration.java | 48 -------- .../activity/component/SaTokenConfigure.java | 1 + .../controller/ActivityController.java | 13 --- .../controller/BulletinController.java | 106 ++++++++++++++++++ .../controller/ImagePreviewController.java | 58 ++++++++++ .../activity/controller/TestController.java | 16 --- .../cdzy/activity/mapper/BulletinMapper.java | 14 +++ .../com/cdzy/activity/model/Bulletin.java | 50 +++++++++ .../cdzy/activity/model/vo/BulletinVo.java | 48 ++++++++ .../activity/service/BulletinService.java | 20 ++++ .../service/impl/ActivityServiceImpl.java | 32 +++++- .../service/impl/BulletinServiceImpl.java | 75 +++++++++++++ .../com/cdzy/activity/uitls/FileUtils.java | 57 ++++++++++ src/main/resources/application-dev.yml | 4 +- target/classes/application-dev.yml | 4 +- .../cdzy/activity/component/ImageConfig.class | Bin 0 -> 1115 bytes .../component/MyBatisFlexConfiguration.class | Bin 3056 -> 0 bytes .../activity/component/SaTokenConfigure.class | Bin 4187 -> 4216 bytes .../controller/ActivityController.class | Bin 4372 -> 4372 bytes .../controller/BulletinController.class | Bin 0 -> 4458 bytes .../controller/ImagePreviewController.class | Bin 0 -> 1891 bytes .../activity/controller/TestController.class | Bin 884 -> 0 bytes .../cdzy/activity/mapper/BulletinMapper.class | Bin 0 -> 283 bytes .../model/Bulletin$BulletinBuilder.class | Bin 0 -> 2203 bytes .../com/cdzy/activity/model/Bulletin.class | Bin 0 -> 4324 bytes .../model/table/BulletinTableDef.class | Bin 0 -> 3258 bytes .../activity/service/BulletinService.class | Bin 0 -> 502 bytes .../service/impl/ActivityServiceImpl.class | Bin 5680 -> 7249 bytes .../service/impl/BulletinServiceImpl.class | Bin 0 -> 4197 bytes .../com/cdzy/activity/uitls/FileUtils.class | Bin 0 -> 3037 bytes .../model/table/BulletinTableDef.java | 57 ++++++++++ 34 files changed, 559 insertions(+), 81 deletions(-) create mode 100644 .idea/inspectionProfiles/Project_Default.xml create mode 100644 src/main/java/com/cdzy/activity/component/ImageConfig.java delete mode 100644 src/main/java/com/cdzy/activity/component/MyBatisFlexConfiguration.java create mode 100644 src/main/java/com/cdzy/activity/controller/BulletinController.java create mode 100644 src/main/java/com/cdzy/activity/controller/ImagePreviewController.java delete mode 100644 src/main/java/com/cdzy/activity/controller/TestController.java create mode 100644 src/main/java/com/cdzy/activity/mapper/BulletinMapper.java create mode 100644 src/main/java/com/cdzy/activity/model/Bulletin.java create mode 100644 src/main/java/com/cdzy/activity/model/vo/BulletinVo.java create mode 100644 src/main/java/com/cdzy/activity/service/BulletinService.java create mode 100644 src/main/java/com/cdzy/activity/service/impl/BulletinServiceImpl.java create mode 100644 src/main/java/com/cdzy/activity/uitls/FileUtils.java create mode 100644 target/classes/com/cdzy/activity/component/ImageConfig.class delete mode 100644 target/classes/com/cdzy/activity/component/MyBatisFlexConfiguration.class create mode 100644 target/classes/com/cdzy/activity/controller/BulletinController.class create mode 100644 target/classes/com/cdzy/activity/controller/ImagePreviewController.class delete mode 100644 target/classes/com/cdzy/activity/controller/TestController.class create mode 100644 target/classes/com/cdzy/activity/mapper/BulletinMapper.class create mode 100644 target/classes/com/cdzy/activity/model/Bulletin$BulletinBuilder.class create mode 100644 target/classes/com/cdzy/activity/model/Bulletin.class create mode 100644 target/classes/com/cdzy/activity/model/table/BulletinTableDef.class create mode 100644 target/classes/com/cdzy/activity/service/BulletinService.class create mode 100644 target/classes/com/cdzy/activity/service/impl/BulletinServiceImpl.class create mode 100644 target/classes/com/cdzy/activity/uitls/FileUtils.class create mode 100644 target/generated-sources/annotations/com/cdzy/activity/model/table/BulletinTableDef.java diff --git a/.idea/.cache/.Apifox_Helper/.toolWindow.db b/.idea/.cache/.Apifox_Helper/.toolWindow.db index 28a2e7c77a02d7fbd5f00537254dc35d592d0ca3..837d4a2a4618d7d54b12b68fd11524466247737f 100644 GIT binary patch delta 1407 zcmcJOO-vI(7>2t`n)pWq%eHhW9fBkxGRf@B?(9wz1>{E?EQp~gu`zbL+a-kpYKSNv zT8wDYi*nj{KojG^iwELQ^@h>JlP3~GVvK={7cU(2!a;YDi~J-t(K){JP3C*P_x%cs z2MUGCdv)Ht$Kw&_8rr!0OzK67dknSn=h@s((a$Hlv$58+|3KX5DXv6O1(*8KVAia3W&W-+Q{pw3hU$_7JFw^R+v z$Wjf02~{mZ-NFn)lo$$zx|(57He~`C&KNLlGNxdiNgA~jw@|Z~u1hQpiAH58r!C!i zA`xgQ8ljY!ih@kpE$qvvlwniFP*pVp$`li*5vD?u5u8!5hO`VNZl#ViJE!3Zl5F(|PH2}LlA$U8~Jq_P`H&EYbP`nMo^T#z`8b=i7Vh2Kue+7`%-!E*&b4ZA)UnIfg-xsS5|XxiC9w!5e|ohc6&vvma2Fl8nXwHx zU-c$jIZNxp*+MJ-z-4RZeG`+t>D-8F(@56SujemJe PRk4P*w5LT7+d=vTQXznz delta 134 zcmV;10D1p_fDM4a43HZIdH?_b8Id4A0eXR8wO|3H9~cN9*Z=?k02v?qANC*dAM79J zAL1X~AJ~yW7`HSa0iPcQWq5RMb(h#b0W20V7$^W3Q5l&Ta35V9DI9wm6dgz&;+Gsi o0VE0?!ydU9^&S-(;g?Q80T{PxKmqX + + + \ No newline at end of file diff --git a/src/main/java/com/cdzy/activity/component/ImageConfig.java b/src/main/java/com/cdzy/activity/component/ImageConfig.java new file mode 100644 index 0000000..6056ac2 --- /dev/null +++ b/src/main/java/com/cdzy/activity/component/ImageConfig.java @@ -0,0 +1,27 @@ +package com.cdzy.activity.component; + +import lombok.Getter; +import lombok.Setter; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.context.annotation.Configuration; + +/** + * 微信配置类 + * + * @author attiya + */ +@Getter +@Setter +@Configuration +@ConfigurationProperties(prefix = "image") +public class ImageConfig { + /** + * 活动封面地址 + */ + private String activityUrl; + /** + * 公告封面地址 + */ + private String bulletinUrl; + +} diff --git a/src/main/java/com/cdzy/activity/component/MyBatisFlexConfiguration.java b/src/main/java/com/cdzy/activity/component/MyBatisFlexConfiguration.java deleted file mode 100644 index 39e42d6..0000000 --- a/src/main/java/com/cdzy/activity/component/MyBatisFlexConfiguration.java +++ /dev/null @@ -1,48 +0,0 @@ -package com.cdzy.activity.component; - -import com.mybatisflex.annotation.KeyType; -import com.mybatisflex.core.FlexGlobalConfig; -import com.mybatisflex.core.audit.AuditManager; -import com.mybatisflex.core.dialect.DbType; -import com.mybatisflex.core.keygen.KeyGenerators; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; - -/** - * @author attiya - */ -@Configuration -public class MyBatisFlexConfiguration { - - private static final Logger logger = LoggerFactory.getLogger("mybatis-flex-sql:"); - - public MyBatisFlexConfiguration() { - // 只保留审计功能配置(这部分可以留在构造函数) - AuditManager.setAuditEnable(true); - AuditManager.setMessageCollector(auditMessage -> - logger.info("{},{}ms", auditMessage.getFullSql(), auditMessage.getElapsedTime()) - ); - } - - @Bean - public FlexGlobalConfig flexGlobalConfig() { - FlexGlobalConfig globalConfig = FlexGlobalConfig.getDefaultConfig(); - - - // 1. 数据库方言 - globalConfig.setDbType(DbType.MYSQL); - - // 2. 全局主键配置(从构造函数移到这里) - FlexGlobalConfig.KeyConfig keyConfig = new FlexGlobalConfig.KeyConfig(); - keyConfig.setKeyType(KeyType.Generator); - keyConfig.setValue(KeyGenerators.snowFlakeId); - keyConfig.setBefore(true); - globalConfig.setKeyConfig(keyConfig); - - - logger.info("MyBatis-Flex 全局配置已完成,使用 MySQL 方言和雪花算法"); - return globalConfig; - } -} \ No newline at end of file diff --git a/src/main/java/com/cdzy/activity/component/SaTokenConfigure.java b/src/main/java/com/cdzy/activity/component/SaTokenConfigure.java index a9ef58c..a7ed080 100644 --- a/src/main/java/com/cdzy/activity/component/SaTokenConfigure.java +++ b/src/main/java/com/cdzy/activity/component/SaTokenConfigure.java @@ -29,6 +29,7 @@ public class SaTokenConfigure implements WebMvcConfigurer { .addInclude("/**") // 开放地址 .addExclude("/user/**") + .addExclude("/api/**") .setAuth(obj -> { // 登录校验 -- 拦截所有路由,并排除/user/doLogin 用于开放登录 SaRouter.match("/**", "/staff/login", r -> StpUtil.checkLogin()); diff --git a/src/main/java/com/cdzy/activity/controller/ActivityController.java b/src/main/java/com/cdzy/activity/controller/ActivityController.java index 2d6f5f9..109863a 100644 --- a/src/main/java/com/cdzy/activity/controller/ActivityController.java +++ b/src/main/java/com/cdzy/activity/controller/ActivityController.java @@ -11,7 +11,6 @@ import com.mybatisflex.core.util.StringUtil; import jakarta.annotation.Resource; import org.springframework.http.MediaType; import org.springframework.web.bind.annotation.*; -import org.springframework.web.multipart.MultipartFile; import java.io.IOException; import java.util.List; @@ -42,18 +41,6 @@ public class ActivityController { activityService.saveActivity(activity); return JsonResult.success(); } -// -// /** -// * 添加。 -// * -// * @param file 封面文件 -// * @return {@code 200} 添加成功,{@code 500} 添加失败 -// */ -// @PostMapping("upload") -// public JsonResult upload(MultipartFile file) throws IOException { -// activityService.saveActivity(activity); -// return JsonResult.success(); -// } /** * 根据主键删除。 diff --git a/src/main/java/com/cdzy/activity/controller/BulletinController.java b/src/main/java/com/cdzy/activity/controller/BulletinController.java new file mode 100644 index 0000000..21df8ee --- /dev/null +++ b/src/main/java/com/cdzy/activity/controller/BulletinController.java @@ -0,0 +1,106 @@ +package com.cdzy.activity.controller; + +import com.cdzy.activity.model.Bulletin; +import com.cdzy.activity.model.JsonResult; +import com.cdzy.activity.model.PageParam; +import com.cdzy.activity.model.vo.BulletinVo; +import com.cdzy.activity.service.BulletinService; +import com.mybatisflex.core.paginate.Page; +import com.mybatisflex.core.query.QueryWrapper; +import com.mybatisflex.core.util.StringUtil; +import jakarta.annotation.Resource; +import org.springframework.web.bind.annotation.*; + +import java.io.IOException; +import java.util.List; + +import static com.cdzy.activity.model.table.BulletinTableDef.BULLETIN; + +/** + * 公告控制层。 + * + * @author attiya + * @since 2025-09-18 + */ +@RestController +@RequestMapping("/bulletin") +public class BulletinController { + + @Resource + private BulletinService bulletinService; + + /** + * 保存。 + * + * @param bulletin 公告基础信息 + * @return {@code true} 保存成功,{@code false} 保存失败 + */ + @PostMapping(value = "save",consumes = "multipart/*", headers = "content-type=multipart/form-data") + public JsonResult save(BulletinVo bulletin) throws IOException { + bulletinService.saveBulletin(bulletin); + return JsonResult.success(); + } + + /** + * 根据主键删除。 + * + * @param id 主键 + * @return {@code true} 删除成功,{@code false} 删除失败 + */ + @DeleteMapping("remove/{id}") + public JsonResult remove(@PathVariable Long id) { + bulletinService.removeById(id); + return JsonResult.success(); + } + + /** + * 根据主键更新。 + * + * @param bulletin 基础信息 + * @return {@code true} 更新成功,{@code false} 更新失败 + */ + @PutMapping(value = "update",consumes = "multipart/*", headers = "content-type=multipart/form-data") + public JsonResult update(BulletinVo bulletin) throws IOException { + bulletinService.updateBulletind(bulletin); + return JsonResult.success(); + } + + /** + * 查询所有。 + * + * @return 所有数据 + */ + @GetMapping("list") + public JsonResult list() { + List list = bulletinService.list(); + return JsonResult.success(list); + } + + /** + * 根据主键获取。 + * + * @param id 主键 + * @return 详情 + */ + @GetMapping("getInfo/{id}") + public JsonResult getInfo(@PathVariable Long id) { + Bulletin bulletin = bulletinService.getById(id); + return JsonResult.success(bulletin); + + } + + /** + * 分页查询 + * @param pageParam 分页参数 + * @param bulletinTitle 公告标题 + * @return 分页结果 + */ + @GetMapping("page") + public JsonResult page(PageParam pageParam, String bulletinTitle) { + QueryWrapper queryWrapper = QueryWrapper.create() + .where(BULLETIN.BULLETIN_TITLE.like(bulletinTitle, StringUtil.hasText(bulletinTitle))); + Page page = bulletinService.page(pageParam.getPage(), queryWrapper); + return JsonResult.success(page); + } + +} diff --git a/src/main/java/com/cdzy/activity/controller/ImagePreviewController.java b/src/main/java/com/cdzy/activity/controller/ImagePreviewController.java new file mode 100644 index 0000000..816775a --- /dev/null +++ b/src/main/java/com/cdzy/activity/controller/ImagePreviewController.java @@ -0,0 +1,58 @@ +package com.cdzy.activity.controller; + + +import com.cdzy.activity.component.ImageConfig; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.core.io.Resource; +import org.springframework.core.io.UrlResource; +import org.springframework.http.MediaType; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.net.MalformedURLException; +import java.nio.file.Path; + +/** + * 图片预览控制层。 + */ +@RestController +@RequestMapping("/api/images") +public class ImagePreviewController { + + @Autowired + private ImageConfig imageConfig; + + /** + * 活动封面预览 + * @param filename 封面文件名称 + * @return 图片 + * @throws MalformedURLException 预览错误 + */ + @GetMapping(value = "/activity/{filename}", produces = { + MediaType.IMAGE_JPEG_VALUE, + MediaType.IMAGE_PNG_VALUE, + MediaType.IMAGE_GIF_VALUE + }) + public Resource previewActivityImage(@PathVariable String filename) throws MalformedURLException { + Path filePath = Path.of(imageConfig.getActivityUrl(), filename); + return new UrlResource(filePath.toUri()); + } + + /** + * 公告封面预览 + * @param filename 封面文件名称 + * @return 图片 + * @throws MalformedURLException 预览错误 + */ + @GetMapping(value = "/bulletin/{filename}", produces = { + MediaType.IMAGE_JPEG_VALUE, + MediaType.IMAGE_PNG_VALUE, + MediaType.IMAGE_GIF_VALUE + }) + public Resource previewBulletinImage(@PathVariable String filename) throws MalformedURLException { + Path filePath = Path.of(imageConfig.getBulletinUrl(), filename); + return new UrlResource(filePath.toUri()); + } +} \ No newline at end of file diff --git a/src/main/java/com/cdzy/activity/controller/TestController.java b/src/main/java/com/cdzy/activity/controller/TestController.java deleted file mode 100644 index 79b4f00..0000000 --- a/src/main/java/com/cdzy/activity/controller/TestController.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.cdzy.activity.controller; - - -import com.cdzy.activity.model.JsonResult; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.RestController; - -import java.time.LocalDateTime; - -@RestController -public class TestController { - @GetMapping("/test") - public JsonResult test() { - return JsonResult.success(LocalDateTime.now()); - } -} \ No newline at end of file diff --git a/src/main/java/com/cdzy/activity/mapper/BulletinMapper.java b/src/main/java/com/cdzy/activity/mapper/BulletinMapper.java new file mode 100644 index 0000000..faa2778 --- /dev/null +++ b/src/main/java/com/cdzy/activity/mapper/BulletinMapper.java @@ -0,0 +1,14 @@ +package com.cdzy.activity.mapper; + +import com.mybatisflex.core.BaseMapper; +import com.cdzy.activity.model.Bulletin; + +/** + * 映射层。 + * + * @author attiya + * @since 2025-09-18 + */ +public interface BulletinMapper extends BaseMapper { + +} diff --git a/src/main/java/com/cdzy/activity/model/Bulletin.java b/src/main/java/com/cdzy/activity/model/Bulletin.java new file mode 100644 index 0000000..42f0700 --- /dev/null +++ b/src/main/java/com/cdzy/activity/model/Bulletin.java @@ -0,0 +1,50 @@ +package com.cdzy.activity.model; + +import com.mybatisflex.annotation.Id; +import com.mybatisflex.annotation.KeyType; +import com.mybatisflex.annotation.Table; +import java.io.Serializable; + +import java.io.Serial; + +import com.mybatisflex.core.keygen.KeyGenerators; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * 实体类。 + * + * @author attiya + * @since 2025-09-18 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +@Table("bulletin") +public class Bulletin implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + @Id(keyType = KeyType.Generator, value = KeyGenerators.snowFlakeId) + private Long bulletinId; + + /** + * 公告标题 + */ + private String bulletinTitle; + + /** + * 封面 + */ + private String bulletinCover; + + /** + * 内容 + */ + private String bulletinDescription; + +} diff --git a/src/main/java/com/cdzy/activity/model/vo/BulletinVo.java b/src/main/java/com/cdzy/activity/model/vo/BulletinVo.java new file mode 100644 index 0000000..6ae7867 --- /dev/null +++ b/src/main/java/com/cdzy/activity/model/vo/BulletinVo.java @@ -0,0 +1,48 @@ +package com.cdzy.activity.model.vo; + +import com.mybatisflex.annotation.Id; +import com.mybatisflex.annotation.KeyType; +import com.mybatisflex.annotation.Table; +import com.mybatisflex.core.keygen.KeyGenerators; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; +import org.springframework.web.multipart.MultipartFile; + +import java.io.Serial; +import java.io.Serializable; + +/** + * 实体类。 + * + * @author attiya + * @since 2025-09-18 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class BulletinVo implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + private Long bulletinId; + + /** + * 公告标题 + */ + private String bulletinTitle; + + /** + * 封面 + */ + private MultipartFile bulletinCover; + + /** + * 内容 + */ + private String bulletinDescription; + +} diff --git a/src/main/java/com/cdzy/activity/service/BulletinService.java b/src/main/java/com/cdzy/activity/service/BulletinService.java new file mode 100644 index 0000000..5d25f7f --- /dev/null +++ b/src/main/java/com/cdzy/activity/service/BulletinService.java @@ -0,0 +1,20 @@ +package com.cdzy.activity.service; + +import com.cdzy.activity.model.vo.BulletinVo; +import com.mybatisflex.core.service.IService; +import com.cdzy.activity.model.Bulletin; + +import java.io.IOException; + +/** + * 服务层。 + * + * @author attiya + * @since 2025-09-18 + */ +public interface BulletinService extends IService { + + void saveBulletin(BulletinVo bulletin) throws IOException; + + void updateBulletind(BulletinVo bulletin) throws IOException; +} diff --git a/src/main/java/com/cdzy/activity/service/impl/ActivityServiceImpl.java b/src/main/java/com/cdzy/activity/service/impl/ActivityServiceImpl.java index d6eba33..3ffda78 100644 --- a/src/main/java/com/cdzy/activity/service/impl/ActivityServiceImpl.java +++ b/src/main/java/com/cdzy/activity/service/impl/ActivityServiceImpl.java @@ -1,16 +1,22 @@ package com.cdzy.activity.service.impl; +import cn.hutool.core.io.FileUtil; +import cn.hutool.core.lang.UUID; +import com.cdzy.activity.component.ImageConfig; import com.cdzy.activity.enums.ActivityStatus; import com.cdzy.activity.mapper.ActivityMapper; import com.cdzy.activity.model.Activity; import com.cdzy.activity.model.vo.ActivityVo; import com.cdzy.activity.service.ActivityService; +import com.cdzy.activity.uitls.FileUtils; import com.cdzy.activity.uitls.ImageToBase64Converter; import com.mybatisflex.core.query.QueryWrapper; import com.mybatisflex.spring.service.impl.ServiceImpl; import jakarta.annotation.Resource; import org.springframework.stereotype.Service; +import org.springframework.web.multipart.MultipartFile; +import java.io.File; import java.io.IOException; import java.time.LocalDateTime; import java.util.List; @@ -29,9 +35,20 @@ public class ActivityServiceImpl extends ServiceImpl @Resource private ActivityMapper activityMapper; + @Resource + private ImageConfig imageConfig; + @Override public void saveActivity(ActivityVo activity) throws IOException { - String convert = ImageToBase64Converter.convertToBase64(activity.getActivityCover()); + MultipartFile activityCover = activity.getActivityCover(); + String convert = null; + if (activityCover != null){ + String uuid = UUID.randomUUID().toString(); + String fileExtension = FileUtils.getFileExtension(activityCover); + String destPath = imageConfig.getActivityUrl()+"/"+uuid+fileExtension; + FileUtils.copyMultipartFile(activityCover,destPath,true); + convert = uuid + fileExtension; + } Activity entity = Activity.builder() .activityName(activity.getActivityName()) .activityCover(convert) @@ -44,6 +61,7 @@ public class ActivityServiceImpl extends ServiceImpl .endTime(activity.getEndTime()) .maxNum(activity.getMaxNum()) .limitPeople(activity.getLimitPeople()) + .limitRegister(activity.getLimitRegister()) .status(ActivityStatus.UN_START_REGISTERING) .build(); activityMapper.insert(entity); @@ -54,7 +72,16 @@ public class ActivityServiceImpl extends ServiceImpl Activity entity = activityMapper.selectOneById(activity.getActivityId()); if (entity != null) { entity.setActivityName(activity.getActivityName()); - String convert = ImageToBase64Converter.convertToBase64(activity.getActivityCover()); + MultipartFile activityCover = activity.getActivityCover(); + String convert = entity.getActivityCover(); + if (activityCover != null){ + String uuid = UUID.randomUUID().toString(); + String fileExtension = FileUtils.getFileExtension(activityCover); + String destPath = imageConfig.getActivityUrl()+"/"+uuid+fileExtension; + FileUtils.copyMultipartFile(activityCover,destPath,true); + FileUtil.del(imageConfig.getActivityUrl()+"/"+convert); + convert = uuid + fileExtension; + } entity.setActivityCover(convert); entity.setActivitySponsor(activity.getActivitySponsor()); entity.setActivityDescription(activity.getActivityDescription()); @@ -65,6 +92,7 @@ public class ActivityServiceImpl extends ServiceImpl entity.setEndTime(activity.getEndTime()); entity.setMaxNum(activity.getMaxNum()); entity.setLimitPeople(activity.getLimitPeople()); + entity.setLimitRegister(activity.getLimitRegister()); activityMapper.update(entity); }else { throw new RuntimeException("该活动不存在"); diff --git a/src/main/java/com/cdzy/activity/service/impl/BulletinServiceImpl.java b/src/main/java/com/cdzy/activity/service/impl/BulletinServiceImpl.java new file mode 100644 index 0000000..09ca5f8 --- /dev/null +++ b/src/main/java/com/cdzy/activity/service/impl/BulletinServiceImpl.java @@ -0,0 +1,75 @@ +package com.cdzy.activity.service.impl; + +import cn.hutool.core.io.FileUtil; +import cn.hutool.core.lang.UUID; +import com.cdzy.activity.component.ImageConfig; +import com.cdzy.activity.model.vo.ActivityVo; +import com.cdzy.activity.model.vo.BulletinVo; +import com.cdzy.activity.uitls.FileUtils; +import com.mybatisflex.spring.service.impl.ServiceImpl; +import com.cdzy.activity.model.Bulletin; +import com.cdzy.activity.mapper.BulletinMapper; +import com.cdzy.activity.service.BulletinService; +import jakarta.annotation.Resource; +import org.springframework.stereotype.Service; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; + +/** + * 服务层实现。 + * + * @author attiya + * @since 2025-09-18 + */ +@Service +public class BulletinServiceImpl extends ServiceImpl implements BulletinService { + + @Resource + private BulletinMapper bulletinMapper; + + @Resource + private ImageConfig imageConfig; + + @Override + public void saveBulletin(BulletinVo bulletin) throws IOException { + MultipartFile activityCover = bulletin.getBulletinCover(); + String convert = null; + if (activityCover != null) { + String uuid = UUID.randomUUID().toString(); + String fileExtension = FileUtils.getFileExtension(activityCover); + String destPath = imageConfig.getActivityUrl() + "/" + uuid + fileExtension; + FileUtils.copyMultipartFile(activityCover, destPath, true); + convert = uuid + fileExtension; + } + Bulletin entity = Bulletin.builder() + .bulletinCover(convert) + .bulletinTitle(bulletin.getBulletinTitle()) + .bulletinDescription(bulletin.getBulletinDescription()) + .build(); + bulletinMapper.insert(entity); + } + + @Override + public void updateBulletind(BulletinVo bulletin) throws IOException { + Bulletin entity = bulletinMapper.selectOneById(bulletin.getBulletinId()); + if (entity != null) { + entity.setBulletinTitle(bulletin.getBulletinTitle()); + MultipartFile activityCover = bulletin.getBulletinCover(); + String convert = entity.getBulletinCover(); + if (activityCover != null) { + String uuid = UUID.randomUUID().toString(); + String fileExtension = FileUtils.getFileExtension(activityCover); + String destPath = imageConfig.getActivityUrl() + "/" + uuid + fileExtension; + FileUtils.copyMultipartFile(activityCover, destPath, true); + FileUtil.del(imageConfig.getActivityUrl() + "/" + convert); + convert = uuid + fileExtension; + } + entity.setBulletinCover(convert); + entity.setBulletinDescription(bulletin.getBulletinDescription()); + bulletinMapper.update(entity); + } else { + throw new RuntimeException("该公告不存在"); + } + } +} diff --git a/src/main/java/com/cdzy/activity/uitls/FileUtils.java b/src/main/java/com/cdzy/activity/uitls/FileUtils.java new file mode 100644 index 0000000..20e108c --- /dev/null +++ b/src/main/java/com/cdzy/activity/uitls/FileUtils.java @@ -0,0 +1,57 @@ +package com.cdzy.activity.uitls; + +import cn.hutool.core.io.FileUtil; +import org.springframework.web.multipart.MultipartFile; + +import java.io.File; +import java.io.IOException; +import java.util.Optional; + +public class FileUtils { + /** + * 安全获取文件后缀(包含点符号) + * @param file MultipartFile对象 + * @return 如 ".jpg" 或空字符串 + */ + public static String getFileExtension(MultipartFile file) { + return Optional.ofNullable(file.getOriginalFilename()) + .filter(name -> name.contains(".")) + .map(name -> name.substring(name.lastIndexOf("."))) + .orElse(""); + } + + /** + * 获取无点的纯后缀(小写形式) + * @param file MultipartFile对象 + * @return 如 "jpg" 或空字符串 + */ + public static String getFileExtensionWithoutDot(MultipartFile file) { + return getFileExtension(file).replace(".", "").toLowerCase(); + } + + /** + * 复制MultipartFile到指定路径(自动创建目录) + * + * @param file 源文件(MultipartFile类型) + * @param destPath 目标绝对路径(包含文件名) + * @param override 是否覆盖已存在文件 + * @throws IOException 文件操作异常 + */ + public static void copyMultipartFile(MultipartFile file, String destPath, boolean override) throws IOException { + // 校验目标路径 + if (destPath == null || destPath.trim().isEmpty()) { + throw new IllegalArgumentException("Destination path cannot be empty"); + } + + // 创建父目录(如果不存在) + File destFile = new File(destPath); + FileUtil.mkParentDirs(destFile); + + // 执行文件复制 + if (override || !destFile.exists()) { + file.transferTo(destFile); + } + + } + +} diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml index fefa6d4..ea2ce7c 100644 --- a/src/main/resources/application-dev.yml +++ b/src/main/resources/application-dev.yml @@ -67,4 +67,6 @@ wechat: appid: wx327d788d7bd6eddf app-secret: adf2539a6c26499c67b5a3829f2e05e3 - +image: + activity-url: D:/file/activity + bulletin-url: D:/file/bulletin diff --git a/target/classes/application-dev.yml b/target/classes/application-dev.yml index fefa6d4..ea2ce7c 100644 --- a/target/classes/application-dev.yml +++ b/target/classes/application-dev.yml @@ -67,4 +67,6 @@ wechat: appid: wx327d788d7bd6eddf app-secret: adf2539a6c26499c67b5a3829f2e05e3 - +image: + activity-url: D:/file/activity + bulletin-url: D:/file/bulletin diff --git a/target/classes/com/cdzy/activity/component/ImageConfig.class b/target/classes/com/cdzy/activity/component/ImageConfig.class new file mode 100644 index 0000000000000000000000000000000000000000..183cc824096f0d974b1751164d1fd689cd12622e GIT binary patch literal 1115 zcma)5+invv5Ix@9Xp$yrXn;^|O50>8^@ZJ<=ua}PHk#)JGOX3WNEF? z$tTO4cjE`x*CcF(R(B1oph|0T9DvJMr4vI9SBP{L{0+G;bmik>C~lZ1^&-;tZIr<5=`^-kot9=CH1Vz@!x4E-)dG^_LGV*2Ha g(!0J->C1EU9&S-y54UlLY?*fJWbYE-UX1&H0pWb+9smFU literal 0 HcmV?d00001 diff --git a/target/classes/com/cdzy/activity/component/MyBatisFlexConfiguration.class b/target/classes/com/cdzy/activity/component/MyBatisFlexConfiguration.class deleted file mode 100644 index 529a1aaf8b3e56074aca1da94e6df5c9ecb2a282..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3056 zcmb7GTXz#x6#h;LOp=aJQYbfp0=*=?FrXEM0MZs(E(r*&QSdrRPQtX4nUI;Z4T#_c zMJ$Re)Cd0n%LkT}wMs$Jcb7lIa(VI}xZGzZZPO%0SY1hHPR_o3-`@K>=g)ud{|;ae zuKQ7gMG`zR7GnuR-HD!OWfDfg-?QCMlEE9)`Xc+ zGKIKmYgS6%wp)Z(_Ya==jII%n_%PlaLuN@A&uWvFA2 z5~i*@5tU#l@)XBWZdv5C*WGUB!Xl}FjC!nKsHZsP8yL0)pUa`Z*??6NR?Ap}wG7Qw z)9E9`{kj=f^rRH^eW+}7~m~!i|4=-Z9gbgw_qLE=s)tE_56(lM9 zMM z41U5l>#4O8U=?$L?`4Kid2UWu5A#BrJIT#vWqI)mL#<_)qkXzM%nv0+0rycy!}tW3)g`+xYN@dyj8koW4H(U%CD0){hVGd|!*hI3gh;BPvL&E00FX zp&2RDi(@1i=gxPWJD;)qIF1t%24oE4&1X?1S3#&pXkPpBx;}75XIMd#T2Uq8`Yjo6 z<0NSq?LMHZS&JtJwG5S&6!EYh@8Det@5y){AJCpT4-wNKNsvZF3mi+4GzAZr1`t1o z1zJ@=jWg`5(j+Abxq2L~TnWXzNHQ!h>TqX@3eaht(RcZgLR!LU85)KdR+UrPM;&11 z3en_|beO&U1sVvQvj7R6VBVH1S?s^w_60i(!W| z#n0P*Vd?{cYQEUY>3Q1QS|JcsXM=qCXq0D0YWuTU&50S=uQ`!7Y-)g*W@&`5dsev! zV5dt}R*ZNmr)K!5nH#1FGi*L)D)Zh;Tt;kD+sHGUBWen4Nu=n67Ld)O%%O`E@ljC z#gRcz9(tzhA$aU=ES4gL;DV5v|qW{A@}e)B6Sb2ud#! bkS}qWK3~&Hfc7=hC1RYYxQcJ_9oGB@5(s{U diff --git a/target/classes/com/cdzy/activity/component/SaTokenConfigure.class b/target/classes/com/cdzy/activity/component/SaTokenConfigure.class index c596b6cdf8ea1c490b13950ca2d9383d713941da..5d677b3a21a25458a94707affb71f1f5803af2c9 100644 GIT binary patch delta 1109 zcmYk4+jCP@6vlr$=Oibb?1mEMuF?w$Z75A!6cuR|YAXmR3R*$Dl$v6(rZtHu-r@zk zp{;c*3MyVuQ50>hhL};u&iLevGrs#D_~e7m_~1CM9Wu5Ld%nHCy>8!H`?tEk>-?Yp zE&l*?QkwG5s>NXv3NO_^I+RK#WAf0XX(nlARA;C~vxZjV1`b5pEZeSVZ)!F(fz%S8 zg{;+F%4LdhE}iemW=FD$J!V0m!JG(0%^!i5=;d7DaiwNGS1Ibvug+4_?QFiFQ=z*@ zGWm2Szh>8=(R7%r%}HlvWFwnAx;59*V}5bQ)OBXB+pe~lF}E?Ym2Do|H8*gh`Oe)J z-pWmyo7rg+!H&o+-0IP%xsBasAlMbUU9*=v%;{jyio2v%Dwppc983+5>>tX+aOk&M z_9>b~%S0$q<8u#bk3r3T?loPZQ}YgRpU1G~e)D^%Ei%HW#{-%yITQDGs0XJHdS{&I zn?A=m;qjK{ZQhw~jkv1)==>1x`Gk32^CCxUd0L1ME%A}&sfu;l=Mz5lIAfdq%nazC z)LGM1b4lZu)@@QV#&|8`()X53CY|jb?$71YIghUuaWk&tjz`f<)T|xOqgX}+EqG8C z7ZQA^iouHYuvjT!m0&P=4mBm00Eenhu$V{WZWD+DkMfwH;&Gl3FB|-lu=cIjv_+c> z?)NO&?Zo0ci!_v31w~eurGQ|^qn1s&AMC#Yu=ae9QGt=e0y zT96nk;7O?U?WE*xJ2)o$as=0xD6HGII<_I!^)1&p^d)ELJ4H9hU6pby5-C5>tTYaE!cG`X=Wg|7LoTEJ|^L@FZ zS5{ul)GAqQCbz`UY`mQe1sdlByS&1LIEH!k|6SKtLSbGkTp}}#XEUfd`(7w=jBo*7 xlXT}N{<`2XISF}tLv)JV2i54rHA}eCO!sv;H5RQk`+O^$I!!$d<||)U4gnl|nbAQ$5L4&(bZsGszH*=9Ir8yq0TSuG6fe$^7U)tTvd=K%Kh5 z91AQAH*=%QCQS>Q&3A!qp=NH@v~r7S2-b&hV~fk}nmcGSncx~{tL855Hs^vH=G`l^ zYO_7<9UZmZ>Fu4VD1Pp@WFJseS1&dLPGyP5HXd|&NRy<)Y;sOadzem_F3k?}hqEmF z2q~AeCc~qq-fdOc(O&nYKXTOL4c>I=*Sy8C(N*DqsykTfFyIm59nA|IEMu<#?^)o4 zCRd0)@c59AT!t*kk4;8@yY7_YvR{t(O&l7W=pULmu>WH3(8VMDzYY&4VoK^y+xky6 zFVR;YE(Jtk4Dph|2oejYUjB+C}>5!Bu#&f-Q(E>P;@ zb7pKk&#b@~rZqA%muC@-u{h6CYnPpo6wG`V`MWS<}_vE?HPH%6UT)0+|DSt)Aq}QQL*sOh;@S>s%9GC!Ij;)l u<2C-)F1&Iu^j n#_9uP`A+ucuVak>s)z)tSiqYCWTi5QGNdu6GNezg7MKYD2y7NQ delta 89 zcmbQDG(~AcJTIf{)2|&L1e( n#u^D^MNRhRuVYOGsz?K>SioBdWEC-pG88kYGL%fN7MKYD95WW# diff --git a/target/classes/com/cdzy/activity/controller/BulletinController.class b/target/classes/com/cdzy/activity/controller/BulletinController.class new file mode 100644 index 0000000000000000000000000000000000000000..555a2fde9c72b0dfb5ebf6c6c3e101148d6130d2 GIT binary patch literal 4458 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 literal 0 HcmV?d00001 diff --git a/target/classes/com/cdzy/activity/controller/TestController.class b/target/classes/com/cdzy/activity/controller/TestController.class deleted file mode 100644 index a30fa67fe80209c46538379775126f8690828340..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 884 zcma)4O>fjN5PjaS&=9tz1xhJUC+SOh-IazmcN$i#5?5g}K zIDt6u1Nc#hNwz8rrJ_;d$#~wId7kl)pWnU%c#69|YN&f?1Zbkguy7#8f~P_c`P=wF zCXS)CrL=O}4E0X8@8cZiJoo|5BVbsr;7(IuF z50@D3p9CgGJ8RNZTHcen+c|a_8apI}VLnn?zA3U;+MbA0+F7g)-4|As{?TT`y;mgg z!9T>DS|g+)j;b=;qmG>v_je}J|ABc_q&KTD})P(QggE>FpW1cSOHlVQ%0i**1~a=)3g}EGLCE OtXI)HRkW0_0sI0)?CE0w diff --git a/target/classes/com/cdzy/activity/mapper/BulletinMapper.class b/target/classes/com/cdzy/activity/mapper/BulletinMapper.class new file mode 100644 index 0000000000000000000000000000000000000000..127f579845911161165e1e297891c830d06bec70 GIT binary patch literal 283 zcmX^0Z`VEs1_oOOZgvJHMh5ld{9OIyl&VVo#N?99vdof7{oKTYg47~?r_!99)RN3R zUoe-QfrXJlASO?D){G2X!TF^{$*FFc kIY4WKQJt>`vJ~i6Mh0deW(5WS0|OHSJDB8P-~`iL0HD@Yi~s-t literal 0 HcmV?d00001 diff --git a/target/classes/com/cdzy/activity/model/Bulletin$BulletinBuilder.class b/target/classes/com/cdzy/activity/model/Bulletin$BulletinBuilder.class new file mode 100644 index 0000000000000000000000000000000000000000..df5e88145f76573af8eee8af0785f4f553684aa7 GIT binary patch literal 2203 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 F{|_?(c}xHR literal 0 HcmV?d00001 diff --git a/target/classes/com/cdzy/activity/model/table/BulletinTableDef.class b/target/classes/com/cdzy/activity/model/table/BulletinTableDef.class new file mode 100644 index 0000000000000000000000000000000000000000..5d532646961f5f233f1b801abdf9573108f88e92 GIT binary patch literal 3258 zcmc&$TUQ%Z6#fo@Bu$1}=tWv>v7{{wErDulYpN{-u+ah9CQz{|P9_JKGMPzdCfL-= z@9<~n(iUx(E}vaK`*U3Gb7p{0rj#z1%a_^bvd=!>w{K_u`1|Q^0N%s5NwhH_iFSr$ zrD0jzH|-SSNFoZusVg={IvVr^>C6?qukp9op&1 z1x=eS7w49XQw%Rh67b0<(a+GeO~`OIxGSKXQ1H6I(Y0;1Fuyo`CyA4->b~h)T&NEy zcyqUUxmebwlNe+;yluV8J;OEYzUkQF&>011#i7I7cT7!}3U`XP%EkG)B!(E6D)dwZ zBSJ4dp=ry7d2L~Kt|ZnkC>TYKp?hk2W@14rZ|yM*-+O5!LjEGf#zp)tGF&}S!bGJ| ziqO2R;1Vt~^saJ$POtI1roUD))_6@PhC{=9k7X$FuPC^RcNvb=^mSfvY(w|OIU0Gs zZu=g?l>>o_G*20+P-#&qbm;ZE)npitFcuzd_@?SkXFY9k)jCnhYYcy;YE=^ znu1x(5wWcVWEhh;U%@y-dw~j*vQRT^KG&#KxGSrYA)`5lZY}DrDVkHb*zT{HL@e%w zsgc>67-Z6>1QKDhOpns1XO{bGPW6`V(z4H8Ixn__gJSEP;u@8?2lF^X{)H~y(`sAV zp=6V%nzZyK5?B>=x5kj&c_B=D!&&FyLlKnX4E0{eCI5cc>Z4FGFnUwB zs}}dNn&YfD>Jgp2CA_;1mYa1Rp?MlEdG70kU7LYxTYa=^TRLz*-}Hd$<7_LV z2#1DC1CCY9!n|dF_e-XKavSB(becXPqSapK_kFZGb|I^M2Gqe z=_NJOxry$_$b_@kQBg&mfA@iFD-SDI8|DT zlgO4H!X39S;X<=>?H-E%OB2}48)qrI;IqwTvYlDso$qbDQ(lD`3J1%^DiHEeFqO~Tz I!Z+yu2f6J(z5oCK literal 0 HcmV?d00001 diff --git a/target/classes/com/cdzy/activity/service/BulletinService.class b/target/classes/com/cdzy/activity/service/BulletinService.class new file mode 100644 index 0000000000000000000000000000000000000000..3f1f4c6123ac766274ccc8987229851e3039948c GIT binary patch literal 502 zcmah`-A=+V7(E|?14Kdb6->kn`v6lfOf(_EU_!#37hU&>CEH52ZUG+63m?FTG8P=W z&=4=0_Vi27Uq8RzKLFgK@1aH*C=&}6u2(`Ts|#&cBIC5sip6~%MQn94`N1CQgx*{h zQbaPDiE%JzWj!1cE;c0bDv(xZuMsbWGAUO)!;*l|$z;JhTEf-k=&yQgLXJdXD*37L z2U9}(VX1gwwMjA$M}+>?i8f+5t|rdk6WccvKFd_bY&p#c&7jOd=;n)1+R8ylXifAi zkv316@G|-x&fog`H`vYI7`v?go$nG%Or9!!)R7ZA-;K(0t~c7QO2UC#4fjJeSGR{I gYG^rBceibH+^Io0c9?Locj(@9Hw@_Ebi1E@1F6o8lK=n! literal 0 HcmV?d00001 diff --git a/target/classes/com/cdzy/activity/service/impl/ActivityServiceImpl.class b/target/classes/com/cdzy/activity/service/impl/ActivityServiceImpl.class index 6025b19b9d700a180308cad216e3ecd764aa906c..f5bcbd78636c1eb70a3f1a1738fbfc6b2d527b86 100644 GIT binary patch literal 7249 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 Wosph0%tz?Xq?m)Y_d#bxu>TkN?_V(h diff --git a/target/classes/com/cdzy/activity/service/impl/BulletinServiceImpl.class b/target/classes/com/cdzy/activity/service/impl/BulletinServiceImpl.class new file mode 100644 index 0000000000000000000000000000000000000000..43ed9e1e8f27b45fbe4f9e0685f597bb89de6d53 GIT binary patch literal 4197 zcmbVP?Ry+m76092cW1MmkTxxaEp3I8(xgq8mab5;vCt$;eIE4_AN)J)^Y}0LK^}j1c4o85PJJ3b?A)1q&pG#; z-+A4Ce0bxp06vCV25o3pkWi6CNx zbp2zT?*geI(>DF10`0whvl*n(p&+AT6I6k{Qd+TeWm(gUzPV)j%Uanf8J4!>Xv0;@ zGJMmXbp$rg8-DaX;w%}iz~SD$3CHEd!ToctUN$Z{?xJ?dC}`!X<(n1V^|i_9ZOpWc zdkyWrm#XZ<5a9^wSRnxaTO)5L%o0eC%Tz($E>>IXc zI<~;^-VGZbqe};N<0A_0RdFBo2t3rP%NmzP=&y0@CbO*18zYWAXVPSX)Z$IBpNjoBAaGY%UzDm8b^pBSFYwLt zb=xO|r+QmGaXULPph*V~sCW>Xz?Py@SzZ%g0w*@^npRCN^v!ld;E*)zA%P>erGBik zIeb*X!zv!Z5rKPKQLg7&mc$9hE&!K=KH~o z3J~Zlgh?MJ`B;qY|CeHEJg(xH47TP{a*o+%NUcXyj7pUo_lGBGjHx&w*|s-Tpi#ps zx@N^^HcIAk6{jTg)=2qv=MyR>F(r@;&=u&p4Q%r=JjEYl3FH zB+$L4^i4SSe4xfNDn5lzliV{b3OQ{X!^@IDy4rO5CqJl*g7RmxU))jVY5mjGyEViOsh`k`i zIw~sbbqOL@9=a+#dAPkv(Wc0do~f!>l5R;=D<$1G6kMi4t6k%4)%MLYOMlS_f-Q|J zME76syms^Xw{E`j(mz*TzWMgGo3Fl+!6kf7_UDpc^8%PC}YDaE|3lHm^D3< zpdYhs$7gG2@f6s_(zM7Xs%v^Eo#R;dV zTeCWy$?tG8;V+mJnu{qbk#@oCuuereL+~!u)0d3sD2SO>BV#6qeBUhftX54KmaUbR z!8o_Jx28*m=bzF21vc|SSc{l8F-phXMtRX36Be*T8*bIC!bQjCh{N1Vv2k)H64-M~ z1tLs{QRlR;7Z;iM0pbe2&uMLg6Ow|f%&gT2jHa1PBL+PMKVqp1NSG_*ryD0^oHYCe zr*uY_!8#7HlEV2Mx-2MPs$coFTAS?uJh zaIbiv24zxA^?!ie3OZ}pI+*BR!CiyN{qJE{4fkgg+2jrM0)wgkY$~yW{`$^AU}^=2 z2WohfA|9(@n9K1RPS)_mV1mr2vx)1NZo_%0T05j_N72P+4{g}X%O7Ar+=s1{okbrG z$VrpWAq?PgPPe19?+F|vGKVnBlL8J0CY@#1-%9$g;%i8d^M1Ud2R?~-Q|#D6fP;Cl*wfNR`HknM-~G2fDc zQY3t@HsC9gKh3?X(oh=y&l0aVRuOp&!QKtH9Fa{F?AK*lYZ*oB5n~LyF zW>a;1m4U1x@r@1=H!u&ZVBvf=pdsS)O*T=3EiWL}pOLrsUx!bWUq|O(aOuhJ<@fQ~ zzpX-k3i1!iBLwFN{~tbzT^ttoAWzVT(9an;N2d(pF-#EjX-=mGhB;4+awa&AXE8>g zPSE(1#N<>1{v3HF{7G^?9KfFv+pc*c@8oFc)qfx@&7Qo+) z_771}kgI#(-?*nE-U~_mgyP!pQ~WGgf8NNNU-0{v{B5IeenoG+89aX%Jm1DUJdwlK QAWi-QI`A(3gg+zuU#O(EtN;K2 literal 0 HcmV?d00001 diff --git a/target/classes/com/cdzy/activity/uitls/FileUtils.class b/target/classes/com/cdzy/activity/uitls/FileUtils.class new file mode 100644 index 0000000000000000000000000000000000000000..adce330dbe32ee46fea0f290bb8ab9b03dcd4144 GIT binary patch literal 3037 zcmb7GX;;)%7=Eq{1ctDUO5Lh}Xoo>esamC|t+EL1u(T*vYL`2iJ3}Os#3aLF_kG`2 z`xAQlq5U#$=d}IQ4?X=!Jw1JICIcCSwsL@*d-JZ(`@HYXAAjHe1;8m>k7EmJ6vR~2 zqK={U3SZ=!$*sILmAN8xpP}xgVHy5uhMHv0Y$NK?pdhZI5h{abyLruXT*J!eTwV}M zw!5G$iHue#n!e$1*ViU0Post@7`EnxKjj*E!{Vkqu}F(yTe2s;=6S}K1_$G4MvH=0 z6>Uf`Bm#k=Z^V2Inf$)aiUjI^ChMvRoh9}MkQsSPG5_iZY+qn#n<3y-qw zs6-G*=8BdsU1-y;$QnBLMG(yn6+5wuAjuh~FIs5sfJ=dd~0TS1PDjqIM;ptf|LC4D4_mJvgf37#?O&T;Z5pr!0q~Sq{x}cSc+-3QHG*5$05# zZ^+9YoKP_!8=%p*)Ao{Zhqx!C%Rv<<<#~)KT#yH+RXmEvCms0dJ%)*z!^BYP7fHwthx_v#I=3v_@5qP_A#KKS2BWfp z&oOL|W*9=!Gpk^nK@I#Fc2I^m#xNR38WRd8RZL-;VV7=c^F`mbO-;95p@pKdVx(PI znC318H*C06zrCTKP^MCe%2t|xO2v#!y-q9}p6|)gaY4l_E>he2F1Ng#aL?NeZR<_V zO5iT3n8P!Ku*p4t+{%jOsoW;%jZ67wRXm6185+D|#tR0Blpf!teq2QcIzzo~TRt}| z%4l~KxoQr~Q9+07ED@+BZCGNmSjbT5<)M>E+d4OAxogOMco_5N4Kleu{hysMNTz9; zkm>$=WEER^vC`}~txodr6T{K9f=nva8<=S-HSy?xc&)s|5MVcj~*j&#n zfte+uP7^_CSl=x|@9jn5x`xD&5u|~*oB<5YW$_Ao7@B5$t}je*Cj>OU+7h0EWx7Tx zTppiVeZ#QR-fF1or1bCOFi?GDRe zsaR)i+b3#rr(89!r4Dbz@h09<@V1I~@NU&iFswy;L1^h9CDPzInx?i(6Qq%9y|()^ z%G*$>>|l&rSyOo3Y1>{XI?)jq<{wGFO7Z-PQ#BF)|I4z=sH?kmqb(V}9pa`rW6&+z ziuc#STe-*Q2(1t0Me~u0m+*3{{7ur?XY%ZG6)U*bifc5d#x0BHF-;9m5LdotIIuQn ztAeS9N5Qu=)&5L?|RL-W)xv zWdYQ)!f+E!x3Lu{;lA70E!TaC{Usdu4Lv`RRM~PnIR||p zH6wv`lHQGN6kJ=xQx^j{wxn*NH_m7_;>b-%-C;M*ViHm!_ zN4&3uCuvFb-NN}Tkhs+Zxb1~P&ne2T7dr^4P73=Vj-Ve$aRSGKm{MhDVNB!}Hk=^l z0bGSkICYY)2cK*f$yy^~%?*EHhk~&>EYd-YgqH$%nrZ@gY&yIOw8kZ==%q~R7->r! z8dIr6e+f^QaCtpMTO$xP;zbHVnjo%*Ci=tjDuIO;ek5yAb|fO|N?DzJz7j~iiq~ju gC;8Xu>^*#dkAtUA@F~8)m-H@9PQJo7_zpY&0W+!}^Z)<= literal 0 HcmV?d00001 diff --git a/target/generated-sources/annotations/com/cdzy/activity/model/table/BulletinTableDef.java b/target/generated-sources/annotations/com/cdzy/activity/model/table/BulletinTableDef.java new file mode 100644 index 0000000..eccde20 --- /dev/null +++ b/target/generated-sources/annotations/com/cdzy/activity/model/table/BulletinTableDef.java @@ -0,0 +1,57 @@ +package com.cdzy.activity.model.table; + +import com.mybatisflex.core.query.QueryColumn; +import com.mybatisflex.core.table.TableDef; + +// Auto generate by mybatis-flex, do not modify it. +public class BulletinTableDef extends TableDef { + + /** + * 实体类。 + + @author attiya + @since 2025-09-18 + */ + public static final BulletinTableDef BULLETIN = new BulletinTableDef(); + + public final QueryColumn BULLETIN_ID = new QueryColumn(this, "bulletin_id"); + + /** + * 封面 + */ + public final QueryColumn BULLETIN_COVER = new QueryColumn(this, "bulletin_cover"); + + /** + * 公告标题 + */ + public final QueryColumn BULLETIN_TITLE = new QueryColumn(this, "bulletin_title"); + + /** + * 内容 + */ + public final QueryColumn BULLETIN_DESCRIPTION = new QueryColumn(this, "bulletin_description"); + + /** + * 所有字段。 + */ + public final QueryColumn ALL_COLUMNS = new QueryColumn(this, "*"); + + /** + * 默认字段,不包含逻辑删除或者 large 等字段。 + */ + public final QueryColumn[] DEFAULT_COLUMNS = new QueryColumn[]{BULLETIN_ID, BULLETIN_COVER, BULLETIN_TITLE, BULLETIN_DESCRIPTION}; + + public BulletinTableDef() { + super("", "bulletin"); + } + + private BulletinTableDef(String schema, String name, String alisa) { + super(schema, name, alisa); + } + + public BulletinTableDef as(String alias) { + String key = getNameWithSchema() + "." + alias; + return getCache(key, k -> new BulletinTableDef("", "bulletin", alias)); + } + +}