diff --git a/backend/src/main/java/com/budwk/app/module/activity/controller/ActUserController.java b/backend/src/main/java/com/budwk/app/module/activity/controller/ActUserController.java index b014f12..ee8bb26 100644 --- a/backend/src/main/java/com/budwk/app/module/activity/controller/ActUserController.java +++ b/backend/src/main/java/com/budwk/app/module/activity/controller/ActUserController.java @@ -182,7 +182,7 @@ public class ActUserController { @At @SaCheckPermission("activity.user") public Result getActivityList(String year){ - List activityList = dao.query(Activity.class, Cnd.where("YEAR(startTime)", "=", year).and(Activity::getDelFlag, "=", false)); + List activityList = dao.query(Activity.class, Cnd.NEW().andEX("YEAR(startTime)", "=", year).and(Activity::getDelFlag, "=", false)); return Result.success(activityList); } diff --git a/backend/src/main/java/com/budwk/app/module/activity/controller/ActWonderfulMomentController.java b/backend/src/main/java/com/budwk/app/module/activity/controller/ActWonderfulMomentController.java new file mode 100644 index 0000000..41ee653 --- /dev/null +++ b/backend/src/main/java/com/budwk/app/module/activity/controller/ActWonderfulMomentController.java @@ -0,0 +1,123 @@ +package com.budwk.app.module.activity.controller; + +import cn.dev33.satoken.annotation.SaCheckLogin; +import cn.dev33.satoken.annotation.SaCheckPermission; +import cn.hutool.core.date.DateTime; +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.StrUtil; +import com.budwk.app.base.page.PageForm; +import com.budwk.app.base.page.Pagination; +import com.budwk.app.base.result.Result; +import com.budwk.app.module.activity.models.ActWonderfulMoment; +import com.budwk.app.module.activity.models.Activity; +import com.budwk.app.module.activity.service.ActWonderfulMomentService; +import com.budwk.app.web.commons.auth.satoken.StpClientUtil; +import lombok.extern.slf4j.Slf4j; +import org.nutz.aop.interceptor.ioc.TransAop; +import org.nutz.dao.Cnd; +import org.nutz.dao.sql.Sql; +import org.nutz.ioc.aop.Aop; +import org.nutz.ioc.loader.annotation.Inject; +import org.nutz.ioc.loader.annotation.IocBean; +import org.nutz.lang.Lang; +import org.nutz.lang.util.NutMap; +import org.nutz.mvc.annotation.At; +import org.nutz.mvc.annotation.Ok; +import org.nutz.mvc.annotation.Param; + +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +/** + * @ClassName ActWonderfulMomentController + * @Author JyuHsin + * @Date 2025/5/6 15:30 + * @Version 1.0 + * @Description TODO + */ +@Slf4j +@IocBean +@Ok("json:full") +@At("/platform/activity/wonderfulMoment") +public class ActWonderfulMomentController { + + @Inject + private ActWonderfulMomentService wonderfulMomentService; + + @At("") + @SaCheckPermission("activity.wonderfulMoment") + @Ok("beetl:/platform/activity/wonderfulMoment/index.html") + public void index() { + } + + @At + @SaCheckPermission("activity.wonderfulMoment") + public Result pageData(PageForm pageForm, String startTime, String endTime){ + Cnd cnd = Cnd.NEW(); + if (StrUtil.isNotBlank(pageForm.getSearchKeyword())) { + cnd.and("title", "like", "%" + pageForm.getSearchKeyword() + "%"); + } + cnd.andEX("publishTime", ">=", startTime); + cnd.andEX("publishTime", "<=", endTime); + cnd.desc("publishTime"); + Pagination pagination = wonderfulMomentService.listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), cnd); + return Result.success(pagination); + } + + @At + @Aop(TransAop.READ_COMMITTED) + @SaCheckPermission("activity.wonderfulMoment") + public Result onHandle(@Param("wonderfulMoment") ActWonderfulMoment wonderfulMoment) { + if(wonderfulMoment.getId() == null) { + wonderfulMoment.setPublishTime(DateUtil.now()); + } + wonderfulMomentService.insertOrUpdate(wonderfulMoment); + return Result.success(); + } + + @At + @Aop(TransAop.READ_COMMITTED) + @SaCheckPermission("activity.wonderfulMoment") + public Result onDelete(Long id) { + wonderfulMomentService.delete(id); + return Result.success(); + } + + @At + @SaCheckLogin(type = StpClientUtil.TYPE) + public Result getWonderfulMoment(@Param("id") Long id) { + Cnd cnd = Cnd.where("published", "=", true).andEX("id", "=", id); + cnd.desc("publishTime"); + List momentList = wonderfulMomentService.query(cnd); + List result = new ArrayList<>(); + for (ActWonderfulMoment wonderfulMoment : momentList) { + NutMap nutMap = Lang.obj2map(wonderfulMoment, NutMap.class); + DateTime dateTime = DateUtil.parse(wonderfulMoment.getPublishTime()); + //如果是今天 + if(DateUtil.isSameDay(dateTime, new Date())) { + nutMap.put("time", "今天" + DateUtil.format(dateTime, "HH:mm")); + } else { + nutMap.put("time", DateUtil.betweenDay(dateTime, new Date(), false) + "天前"); + } + result.add(nutMap); + } + return Result.success(result); + } + + @At("/getWonderfulMomentById/?") + @SaCheckLogin(type = StpClientUtil.TYPE) + public Result getWonderfulMomentById(Long id) { + ActWonderfulMoment moment = wonderfulMomentService.fetch(id); + return Result.success(moment); + } + + @At("/handleWonderfulMoment/?") + @SaCheckLogin(type = StpClientUtil.TYPE) + public Result handleWonderfulMoment(Long id) { + ActWonderfulMoment moment = wonderfulMomentService.fetch(id); + moment.setReadCount(moment.getReadCount() + 1); + wonderfulMomentService.update(moment); + return Result.success(); + } +} diff --git a/backend/src/main/java/com/budwk/app/module/activity/controller/ActivityManageController.java b/backend/src/main/java/com/budwk/app/module/activity/controller/ActivityManageController.java index e4aae90..827b7d8 100644 --- a/backend/src/main/java/com/budwk/app/module/activity/controller/ActivityManageController.java +++ b/backend/src/main/java/com/budwk/app/module/activity/controller/ActivityManageController.java @@ -1,5 +1,6 @@ package com.budwk.app.module.activity.controller; +import cn.dev33.satoken.annotation.SaCheckLogin; import cn.dev33.satoken.annotation.SaCheckPermission; import cn.hutool.core.collection.CollUtil; import com.budwk.app.base.page.PageForm; @@ -8,6 +9,7 @@ import com.budwk.app.base.result.Result; import com.budwk.app.module.activity.models.Activity; import com.budwk.app.module.activity.models.ActivityItem; import com.budwk.app.module.activity.service.ActivityManageService; +import com.budwk.app.web.commons.auth.satoken.StpClientUtil; import lombok.extern.slf4j.Slf4j; import org.nutz.aop.interceptor.ioc.TransAop; import org.nutz.dao.Cnd; @@ -163,4 +165,11 @@ public class ActivityManageController { return Result.success(); } + @At + @Aop(TransAop.READ_COMMITTED) + @SaCheckLogin(type = StpClientUtil.TYPE) + public Result getActivity() { + List activityList = activityService.query(Cnd.NEW()); + return Result.success(activityList); + } } diff --git a/backend/src/main/java/com/budwk/app/module/activity/models/ActWonderfulMoment.java b/backend/src/main/java/com/budwk/app/module/activity/models/ActWonderfulMoment.java new file mode 100644 index 0000000..e2aa5fb --- /dev/null +++ b/backend/src/main/java/com/budwk/app/module/activity/models/ActWonderfulMoment.java @@ -0,0 +1,56 @@ +package com.budwk.app.module.activity.models; + +import com.budwk.app.base.model.BaseModel; +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.nutz.dao.entity.annotation.*; + +/** + * @ClassName ActWonderfulMoment + * @Author JyuHsin + * @Date 2025/5/6 15:28 + * @Version 1.0 + * @Description TODO + */ +@Data +@Comment("活动项目队伍得分表") +@Table("act_wonderful_moment") +@EqualsAndHashCode(callSuper = true) +@TableMeta("{'mysql-charset':'utf8mb4'}") +public class ActWonderfulMoment extends BaseModel { + + @Id + @Comment("ID") + private Long id; + + @Column + @Comment("标题") + @ColDefine(type = ColType.VARCHAR, width = 100) + private String title; + + @Column + @Comment("发布内容") + @ColDefine(type = ColType.TEXT) + private String content; + + @Column + @Comment("发布时间") + @ColDefine(type = ColType.VARCHAR, width = 30) + private String publishTime; + + @Column + @Comment("封面图") + @ColDefine(type = ColType.VARCHAR, width = 500) + private String cover; + + @Column + @Comment("是否发布") + @ColDefine(type = ColType.BOOLEAN) + private Boolean published; + + @Column + @Comment("阅读次数") + @Default(value = "0") + @ColDefine(type = ColType.INT) + private Integer readCount; +} diff --git a/backend/src/main/java/com/budwk/app/module/activity/service/ActWonderfulMomentService.java b/backend/src/main/java/com/budwk/app/module/activity/service/ActWonderfulMomentService.java new file mode 100644 index 0000000..b95ded8 --- /dev/null +++ b/backend/src/main/java/com/budwk/app/module/activity/service/ActWonderfulMomentService.java @@ -0,0 +1,14 @@ +package com.budwk.app.module.activity.service; + +import com.budwk.app.base.service.BaseService; +import com.budwk.app.module.activity.models.ActWonderfulMoment; + +/** + * @ClassName ActWonderfulMomentService + * @Author JyuHsin + * @Date 2025/5/6 15:30 + * @Version 1.0 + * @Description TODO + */ +public interface ActWonderfulMomentService extends BaseService { +} diff --git a/backend/src/main/java/com/budwk/app/module/activity/service/impl/ActWonderfulMomentServiceImpl.java b/backend/src/main/java/com/budwk/app/module/activity/service/impl/ActWonderfulMomentServiceImpl.java new file mode 100644 index 0000000..c53e062 --- /dev/null +++ b/backend/src/main/java/com/budwk/app/module/activity/service/impl/ActWonderfulMomentServiceImpl.java @@ -0,0 +1,21 @@ +package com.budwk.app.module.activity.service.impl; + +import com.budwk.app.base.service.impl.BaseServiceImpl; +import com.budwk.app.module.activity.models.ActWonderfulMoment; +import com.budwk.app.module.activity.service.ActWonderfulMomentService; +import org.nutz.dao.Dao; +import org.nutz.ioc.loader.annotation.IocBean; + +/** + * @ClassName ActWonderfulMomentServiceImpl + * @Author JyuHsin + * @Date 2025/5/6 15:31 + * @Version 1.0 + * @Description TODO + */ +@IocBean(args = {"refer:dao"}) +public class ActWonderfulMomentServiceImpl extends BaseServiceImpl implements ActWonderfulMomentService { + public ActWonderfulMomentServiceImpl(Dao dao) { + super(dao); + } +} diff --git a/backend/src/main/resources/application.yaml b/backend/src/main/resources/application.yaml index 4ac4425..6a8d6bc 100644 --- a/backend/src/main/resources/application.yaml +++ b/backend/src/main/resources/application.yaml @@ -23,7 +23,7 @@ jetty: #结合ftp使用,或用nginx代理ftp路径 #staticPath: E:/project/NutzWk/upload #开发模式静态资源 - staticPathLocal: E:/project/company/hmc_gbhd/src/main/resources/static + staticPathLocal: D:/project/hmc_gbhd/backend/src/main/resources/static security: tokenName: token @@ -35,7 +35,7 @@ security: isShare: true redis: - host: 192.168.21.207 + host: 127.0.0.1 port: 6379 timeout: 2000 max_redir: 10 @@ -69,7 +69,7 @@ xsssql: beetl: RESOURCE: #本地路径,开发时设置本地路径,便于调试 - rootLocal: E:/project/company/hmc_gbhd/src/main/resources/views/ + rootLocal: D:/project/hmc_gbhd/backend/src/main/resources/views/ root: views/ DELIMITER_STATEMENT_START: '' diff --git a/backend/src/main/resources/static/components/plugins/imageUpload/index.vue b/backend/src/main/resources/static/components/plugins/imageUpload/index.vue index 343e919..006143a 100644 --- a/backend/src/main/resources/static/components/plugins/imageUpload/index.vue +++ b/backend/src/main/resources/static/components/plugins/imageUpload/index.vue @@ -12,10 +12,22 @@ :on-exceed="handleExceed" :file-list="fileList" > - + +
+ + + + + + + + + +
- + @@ -124,4 +136,4 @@ module.exports = { \ No newline at end of file + diff --git a/backend/src/main/resources/views/platform/activity/manage/addOrUpdate.js b/backend/src/main/resources/views/platform/activity/manage/addOrUpdate.js index 5e27579..6d4ff33 100644 --- a/backend/src/main/resources/views/platform/activity/manage/addOrUpdate.js +++ b/backend/src/main/resources/views/platform/activity/manage/addOrUpdate.js @@ -78,6 +78,9 @@ const addOrUpdate = { {{form.files}} + + +