zoujiajian пре 1 година
родитељ
комит
dec2233157

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

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

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

@@ -36,12 +36,11 @@ public class MirrorNotice extends BaseEntity implements Serializable {
      */
     private Boolean status;
 
-    /**
-     * 所属镜像店铺用户id
-     */
-    private Long userId;
-
     @TableField(exist = false)
     @DbField("select count(1) from mirror_notice_user_review_record myr where myr.notice_id = mn.id :ruid:")
     private Boolean isRead;
+
+    @TableField(exist = false)
+    @DbField("select count(1) from mirror_notice_user mnu where myr.notice_id = mn.id :ruid:")
+    private Boolean sync;
 }

+ 42 - 0
netflix-dao/src/main/java/com/cyksj/model/entity/MirrorNoticeUser.java

@@ -0,0 +1,42 @@
+package com.cyksj.model.entity;
+
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * 项目名: yhlxj
+ * 文件名: MirrorNoticeUser
+ * 创建者: JavaZou
+ * 创建时间:2024/11/8 17:48
+ */
+@Getter
+@Setter
+public class MirrorNoticeUser extends BaseEntity {
+
+	private Long noticeId;
+
+	/**
+	 * 平台 MJ GPT
+	 */
+	private String platform;
+
+	/**
+	 * 标题
+	 */
+	private String title;
+
+	/**
+	 * 富文本
+	 */
+	private String text;
+
+	/**
+	 * 状态
+	 */
+	private Boolean status;
+
+	/**
+	 * 所属镜像店铺用户id
+	 */
+	private Long userId;
+}

+ 5 - 13
netflix-dao/src/main/resources/mapper/UserMirrorShopManageAdvertiseMapper.xml

@@ -4,19 +4,11 @@
 <mapper namespace="com.cyksj.mapper.mirrorshop.UserMirrorShopManageAdvertiseMapper">
 
     <select id="getAdvertise" resultType="com.cyksj.model.views.UserMirrorShopAdvertiseFrontView">
-        select *
-        from (select uma.*
-              from mirror_notice uma
-                       inner join user_mirror_shop um on um.user_id = uma.user_id
-              where uma.status is true
-                and um.custom_id = #{customId}
-              union all
-              select uma2.*
-              from mirror_notice uma2
-                       inner join mirror_notice_user_status_relate umr on umr.notice_id = uma2.id
-                       inner join user_mirror_shop um on um.user_id = umr.user_id
-              where umr.status is true
-                and um.custom_id = #{customId}) s
+        select mur.*
+        from mirror_notice_user mur
+                 inner join user_mirror_shop um on um.user_id = mur.user_id
+        where umr.status is true
+          and um.custom_id = #{customId}
         order by update_time desc
     </select>
 </mapper>

+ 48 - 49
netflix-web/src/main/java/com/cyksj/web/controller/manage/mirrorshop/manage/CmsUserMirrorAdvertiseController.java

@@ -4,13 +4,13 @@ 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.MirrorNoticeMapper;
+import com.cyksj.mapper.mirrorshop.MirrorNoticeUserMapper;
 import com.cyksj.mapper.mirrorshop.MirrorNoticeUserReviewRecordMapper;
-import com.cyksj.mapper.mirrorshop.MirrorNoticeUserStatusRelateMapper;
 import com.cyksj.model.entity.MirrorNotice;
+import com.cyksj.model.entity.MirrorNoticeUser;
 import com.cyksj.model.entity.MirrorNoticeUserReviewRecord;
-import com.cyksj.model.entity.MirrorNoticeUserStatusRelate;
 import com.cyksj.service.mange.RefreshCacheService;
-import com.cyksj.service.sys.MirrorNoticeService;
 import com.cyksj.web.util.StpUserMirrorShopManageUser;
 import com.ejlchina.searcher.BeanSearcher;
 import com.ejlchina.searcher.SearchResult;
@@ -21,6 +21,7 @@ import org.springframework.dao.DuplicateKeyException;
 import org.springframework.web.bind.annotation.*;
 
 import javax.servlet.http.HttpServletRequest;
+import java.util.List;
 import java.util.Optional;
 
 /**
@@ -39,11 +40,11 @@ public class CmsUserMirrorAdvertiseController {
 
 	private final HttpServletRequest request;
 
-	private final MirrorNoticeService mirrorNoticeService;
+	private final MirrorNoticeUserMapper noticeUserMapper;
 
 	private final RefreshCacheService refreshCacheService;
 
-	private final MirrorNoticeUserStatusRelateMapper MirrorNoticeUserStatusRelateMapper;
+	private final MirrorNoticeMapper mirrorNoticeMapper;
 
 	private final MirrorNoticeUserReviewRecordMapper mirrorNoticeUserReviewRecordMapper;
 
@@ -51,23 +52,15 @@ public class CmsUserMirrorAdvertiseController {
 	 * 店铺公告列表
 	 */
 	@GetMapping("/get")
-	public Result<SearchResult<MirrorNotice>> get(@RequestParam(defaultValue = "1") Boolean self) {
+	public Result<SearchResult> get(@RequestParam(defaultValue = "1") Boolean self) {
 		long userId = StpUserMirrorShopManageUser.getLoginIdAsLong();
 		MapBuilder builder = MapUtils.flatBuilder(request.getParameterMap());
-		if (self) {
-			builder.put("uid", String.format("ua.user_id in (0,%s)", userId));
-		} else {
-			builder.field(MirrorNotice::getUserId, 0);
+		if (true) {
+			SearchResult<MirrorNoticeUser> search = beanSearcher.search(MirrorNoticeUser.class, builder.field(MirrorNoticeUser::getUserId, userId).orderBy(MirrorNoticeUser::getUpdateTime).desc().build());
+			return GatewayResponse.SUCCESS.newBuilder().toResult(search);
 		}
 		builder.put("ruid", String.format(" and myr.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) {
-				Optional.ofNullable(MirrorNoticeUserStatusRelateMapper.selectOne(Wrappers.lambdaQuery(MirrorNoticeUserStatusRelate.class).eq(MirrorNoticeUserStatusRelate::getNoticeId, data.getId())
-						.eq(MirrorNoticeUserStatusRelate::getUserId, userId)
-						.last("limit 1"))).ifPresent(e -> data.setStatus(e.getStatus()));
-			}
-		});
 		return GatewayResponse.SUCCESS.newBuilder().toResult(search);
 	}
 
@@ -76,10 +69,10 @@ public class CmsUserMirrorAdvertiseController {
 	 * 新增店铺公告
 	 */
 	@PostMapping("/post")
-	public Result<String> post(@RequestBody MirrorNotice notice) {
+	public Result<String> post(@RequestBody MirrorNoticeUser notice) {
 		long userId = StpUserMirrorShopManageUser.getLoginIdAsLong();
 		notice.setUserId(userId);
-		mirrorNoticeService.saveOrUpdate(notice);
+		noticeUserMapper.insert(notice);
 		return GatewayResponse.SUCCESS.newBuilder().toResult();
 	}
 
@@ -88,13 +81,13 @@ public class CmsUserMirrorAdvertiseController {
 	 * 编辑店铺公告
 	 */
 	@PutMapping("/update")
-	public Result<String> update(@RequestBody MirrorNotice notice) {
+	public Result<String> update(@RequestBody MirrorNoticeUser notice) {
 		Long userId = StpUserMirrorShopManageUser.getLoginIdAsLong();
-		MirrorNotice byId = mirrorNoticeService.getById(notice.getId());
+		MirrorNoticeUser byId = noticeUserMapper.selectById(notice.getId());
 		if (byId == null || !ObjectUtil.equal(userId, byId.getUserId())) {
 			return GatewayResponse.SUCCESS.newBuilder().toResult();
 		}
-		mirrorNoticeService.saveOrUpdate(notice);
+		noticeUserMapper.updateById(notice);
 		refreshCacheService.refreshUserMirrorShopAdvertiseCache(userId);
 		return GatewayResponse.SUCCESS.newBuilder().toResult();
 	}
@@ -106,30 +99,10 @@ public class CmsUserMirrorAdvertiseController {
 	@PutMapping("/update/status/{id}")
 	public Result<String> updateStatusById(@PathVariable Long id) {
 		Long userId = StpUserMirrorShopManageUser.getLoginIdAsLong();
-		Optional.ofNullable(mirrorNoticeService.getById(id))
+		Optional.ofNullable(noticeUserMapper.selectById(id))
 				.ifPresent(en -> {
-					if (en.getUserId() != 0) {
-						return;
-					}
-					//官方公告
-					if (!en.getUserId().equals(userId)) {
-						MirrorNoticeUserStatusRelate mirrorNoticeUserStatusRelate = Optional.ofNullable(MirrorNoticeUserStatusRelateMapper.selectOne(Wrappers.lambdaQuery(MirrorNoticeUserStatusRelate.class)
-								.eq(MirrorNoticeUserStatusRelate::getUserId, userId)
-								.eq(MirrorNoticeUserStatusRelate::getNoticeId, id).last("limit 1"))).orElse(new MirrorNoticeUserStatusRelate());
-
-						mirrorNoticeUserStatusRelate.setNoticeId(id);
-						mirrorNoticeUserStatusRelate.setUserId(userId);
-						if (mirrorNoticeUserStatusRelate.getId() == null) {
-							mirrorNoticeUserStatusRelate.setStatus(!en.getStatus());
-							MirrorNoticeUserStatusRelateMapper.insert(mirrorNoticeUserStatusRelate);
-						} else {
-							mirrorNoticeUserStatusRelate.setStatus(!mirrorNoticeUserStatusRelate.getStatus());
-							MirrorNoticeUserStatusRelateMapper.updateById(mirrorNoticeUserStatusRelate);
-						}
-					} else {
-						en.setStatus(!en.getStatus());
-						mirrorNoticeService.updateById(en);
-					}
+					en.setStatus(!en.getStatus());
+					noticeUserMapper.updateById(en);
 					refreshCacheService.refreshUserMirrorShopAdvertiseCache(userId);
 				});
 		return GatewayResponse.SUCCESS.newBuilder().toResult();
@@ -141,9 +114,9 @@ public class CmsUserMirrorAdvertiseController {
 	@PutMapping("/delete/{id}")
 	public Result<String> deleteById(@PathVariable Long id) {
 		Long userId = StpUserMirrorShopManageUser.getLoginIdAsLong();
-		mirrorNoticeService.remove(Wrappers.lambdaQuery(MirrorNotice.class)
-				.eq(MirrorNotice::getId, id)
-				.eq(MirrorNotice::getUserId, userId));
+		noticeUserMapper.delete(Wrappers.lambdaQuery(MirrorNoticeUser.class)
+				.eq(MirrorNoticeUser::getId, id)
+				.eq(MirrorNoticeUser::getUserId, userId));
 		refreshCacheService.refreshUserMirrorShopAdvertiseCache(userId);
 		return GatewayResponse.SUCCESS.newBuilder().toResult();
 	}
@@ -154,7 +127,6 @@ public class CmsUserMirrorAdvertiseController {
 	@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)
@@ -171,4 +143,31 @@ public class CmsUserMirrorAdvertiseController {
 		}
 		return GatewayResponse.SUCCESS.newBuilder().toResult();
 	}
+
+	/**
+	 * 批量同步银河后台公告
+	 */
+	@PostMapping("/sync/background/notice")
+	public Result<String> syncBackgroundNotice(@RequestBody List<Long> ids) {
+		Long userId = StpUserMirrorShopManageUser.getLoginIdAsLong();
+		mirrorNoticeMapper.selectBatchIds(ids).forEach(backNotice -> {
+			MirrorNoticeUser mirrorNoticeUser = noticeUserMapper.selectOne(Wrappers.lambdaQuery(MirrorNoticeUser.class)
+					.eq(MirrorNoticeUser::getNoticeId, backNotice.getId())
+					.eq(MirrorNoticeUser::getUserId, userId)
+					.last("limit 1"));
+			if (mirrorNoticeUser == null) {
+				try {
+					mirrorNoticeUser = new MirrorNoticeUser();
+					mirrorNoticeUser.setNoticeId(backNotice.getId());
+					mirrorNoticeUser.setPlatform(backNotice.getPlatform());
+					mirrorNoticeUser.setTitle(backNotice.getTitle());
+					mirrorNoticeUser.setText(backNotice.getText());
+					noticeUserMapper.insert(mirrorNoticeUser);
+				} catch (DuplicateKeyException e) {
+
+				}
+			}
+		});
+		return GatewayResponse.SUCCESS.newBuilder().toResult();
+	}
 }