zoujiajian 1 년 전
부모
커밋
5319cf180d

+ 13 - 0
netflix-dao/src/main/java/com/cyksj/mapper/mirrorshop/MirrorNoticeUserReviewRecordMapper.java

@@ -0,0 +1,13 @@
+package com.cyksj.mapper.mirrorshop;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.cyksj.model.entity.MirrorNoticeUserReviewRecord;
+
+/**
+ * 项目名: yhlxj
+ * 文件名: MirrorNoticeUserReviewRecordMapper
+ * 创建者: JavaZou
+ * 创建时间:2024/11/8 15:55
+ */
+public interface MirrorNoticeUserReviewRecordMapper extends BaseMapper<MirrorNoticeUserReviewRecord> {
+}

+ 1 - 1
netflix-dao/src/main/java/com/cyksj/model/entity/MirrorNotice.java

@@ -42,6 +42,6 @@ public class MirrorNotice extends BaseEntity implements Serializable {
     private Long userId;
 
     @TableField(exist = false)
-    @DbField("select count(1) from mirror_notice_user_review_record myr where myr.notice_id = mn.id")
+    @DbField("select count(1) from mirror_notice_user_review_record myr where myr.notice_id = mn.id :ruid:")
     private Boolean isNew;
 }

+ 18 - 0
netflix-dao/src/main/java/com/cyksj/model/entity/MirrorNoticeUserReviewRecord.java

@@ -0,0 +1,18 @@
+package com.cyksj.model.entity;
+
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * 项目名: yhlxj
+ * 文件名: MirrorNoticeUserReviewRecord
+ * 创建者: JavaZou
+ * 创建时间:2024/11/8 15:54
+ */
+@Getter
+@Setter
+public class MirrorNoticeUserReviewRecord extends BaseEntity{
+	private Long userId;
+
+	private Long noticeId;
+}

+ 30 - 0
netflix-web/src/main/java/com/cyksj/web/controller/manage/mirrorshop/manage/CmsUserMirrorAdvertiseController.java

@@ -4,8 +4,10 @@ import cn.hutool.core.util.ObjectUtil;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.cyksj.dto.Result;
 import com.cyksj.enums.GatewayResponse;
+import com.cyksj.mapper.mirrorshop.MirrorNoticeUserReviewRecordMapper;
 import com.cyksj.mapper.mirrorshop.MirrorNoticeUserStatusRelateMapper;
 import com.cyksj.model.entity.MirrorNotice;
+import com.cyksj.model.entity.MirrorNoticeUserReviewRecord;
 import com.cyksj.model.entity.MirrorNoticeUserStatusRelate;
 import com.cyksj.service.mange.RefreshCacheService;
 import com.cyksj.service.sys.MirrorNoticeService;
@@ -15,6 +17,7 @@ import com.ejlchina.searcher.SearchResult;
 import com.ejlchina.searcher.util.MapBuilder;
 import com.ejlchina.searcher.util.MapUtils;
 import lombok.RequiredArgsConstructor;
+import org.springframework.dao.DuplicateKeyException;
 import org.springframework.web.bind.annotation.*;
 
 import javax.servlet.http.HttpServletRequest;
@@ -42,6 +45,8 @@ public class CmsUserMirrorAdvertiseController {
 
 	private final MirrorNoticeUserStatusRelateMapper MirrorNoticeUserStatusRelateMapper;
 
+	private final MirrorNoticeUserReviewRecordMapper mirrorNoticeUserReviewRecordMapper;
+
 	/**
 	 * 店铺公告列表
 	 */
@@ -54,6 +59,7 @@ public class CmsUserMirrorAdvertiseController {
 		} else {
 			builder.field(MirrorNotice::getUserId, 0);
 		}
+		builder.put("ruid", String.format(String.format(" and user_id = %s"), userId));
 		SearchResult<MirrorNotice> search = beanSearcher.search(MirrorNotice.class, builder.orderBy(MirrorNotice::getUpdateTime).desc().build());
 		search.getDataList().forEach(data -> {
 			if (data.getUserId() == 0) {
@@ -141,4 +147,28 @@ public class CmsUserMirrorAdvertiseController {
 		refreshCacheService.refreshUserMirrorShopAdvertiseCache(userId);
 		return GatewayResponse.SUCCESS.newBuilder().toResult();
 	}
+
+	/**
+	 * 标记公告已读
+	 */
+	@PostMapping("/mark/{id}")
+	public Result<String> markNotice(@PathVariable Long id) {
+		Long userId = StpUserMirrorShopManageUser.getLoginIdAsLong();
+		MirrorNotice byId = mirrorNoticeService.getById(id);
+		MirrorNoticeUserReviewRecord mirrorNoticeUserReviewRecord = Optional.ofNullable(mirrorNoticeUserReviewRecordMapper.selectOne(Wrappers.lambdaQuery(MirrorNoticeUserReviewRecord.class)
+				.eq(MirrorNoticeUserReviewRecord::getNoticeId, id)
+				.eq(MirrorNoticeUserReviewRecord::getUserId, userId)
+				.last("limit 1"))).orElse(new MirrorNoticeUserReviewRecord());
+
+		try {
+			if (mirrorNoticeUserReviewRecord.getId() == null) {
+				mirrorNoticeUserReviewRecord.setNoticeId(id);
+				mirrorNoticeUserReviewRecord.setUserId(userId);
+				mirrorNoticeUserReviewRecordMapper.insert(mirrorNoticeUserReviewRecord);
+			}
+		} catch (DuplicateKeyException e) {
+
+		}
+		return GatewayResponse.SUCCESS.newBuilder().toResult();
+	}
 }