zoujiajian 1 жил өмнө
parent
commit
51243add12

+ 4 - 0
netflix-dao/src/main/java/com/cyksj/mapper/mirrorshop/UserMirrorShopManageAdvertiseMapper.java

@@ -2,6 +2,9 @@ package com.cyksj.mapper.mirrorshop;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.cyksj.model.entity.UserMirrorShopManageAdvertise;
+import com.cyksj.model.views.UserMirrorShopAdvertiseFrontView;
+
+import java.util.List;
 
 /**
  * 项目名: yhlxj2
@@ -10,4 +13,5 @@ import com.cyksj.model.entity.UserMirrorShopManageAdvertise;
  * 创建时间:2024/10/24 11:53
  */
 public interface UserMirrorShopManageAdvertiseMapper extends BaseMapper<UserMirrorShopManageAdvertise> {
+	List<UserMirrorShopAdvertiseFrontView> getAdvertise(String customId);
 }

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

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

+ 4 - 3
netflix-dao/src/main/java/com/cyksj/model/entity/UserMirrorShopManageAdvertise.java

@@ -14,8 +14,9 @@ import lombok.Setter;
  */
 @Getter
 @Setter
-@SearchBean(tables = "user_mirror_shop_manage_advertise ua")
-public class UserMirrorShopManageAdvertise extends BaseEntity{
+@SearchBean(tables = "user_mirror_shop_manage_advertise ua",
+		where = ":uid:")
+public class UserMirrorShopManageAdvertise extends BaseEntity {
 	private Long goodsId;
 
 	/**
@@ -31,7 +32,7 @@ public class UserMirrorShopManageAdvertise extends BaseEntity{
 	private Boolean status;
 
 	@TableField(exist = false)
-	@DbField("select 1 from user_mirror_shop_user_advertise_review_record uar where uar.advertise_id = ua.id")
+	@DbField("select count(1) from user_mirror_shop_user_advertise_review_record uar where uar.advertise_id = ua.id")
 	private Boolean isNew;
 
 	/**

+ 20 - 0
netflix-dao/src/main/java/com/cyksj/model/entity/UserMirrorShopManageAdvertiseStatusRelate.java

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

+ 0 - 8
netflix-dao/src/main/java/com/cyksj/model/views/UserMirrorShopAdvertiseFrontView.java

@@ -1,7 +1,5 @@
 package com.cyksj.model.views;
 
-import com.ejlchina.searcher.bean.DbField;
-import com.ejlchina.searcher.bean.SearchBean;
 import lombok.Getter;
 import lombok.Setter;
 
@@ -13,23 +11,17 @@ import lombok.Setter;
  */
 @Getter
 @Setter
-@SearchBean(tables = "user_mirror_shop_manage_advertise uma inner join user_mirror_shop um on um.user_id = uma.user_id",
-		where = "uma.status is true",
-		orderBy = "uma.update_time desc")
 public class UserMirrorShopAdvertiseFrontView {
 	/**
 	 * 公告简介
 	 */
-	@DbField("uma.about")
 	private String about;
 
 	/**
 	 * 公告详情
 	 */
-	@DbField("uma.about")
 	private String detail;
 
 
-	@DbField("um.custom_id")
 	private String customId;
 }

+ 22 - 0
netflix-dao/src/main/resources/mapper/UserMirrorShopManageAdvertiseMapper.xml

@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+
+<mapper namespace="com.cyksj.mapper.mirrorshop.UserMirrorShopManageAdvertiseMapper">
+
+    <select id="getAdvertise" resultType="com.cyksj.model.views.UserMirrorShopAdvertiseFrontView">
+        select *
+        from (select uma.*
+              from user_mirror_shop_manage_advertise 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 user_mirror_shop_manage_advertise uma2
+                       inner join user_mirror_shop_manage_user_advertise_status_relate umr on umr.advertise_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
+        order by update_time desc
+    </select>
+</mapper>

+ 5 - 0
netflix-service/src/main/java/com/cyksj/service/mange/impl/RefreshCacheServiceImpl.java

@@ -75,6 +75,11 @@ public class RefreshCacheServiceImpl implements RefreshCacheService {
 
 	@Override
 	public void refreshUserMirrorShopAdvertiseCache(Long userId) {
+		if (userId == null) {
+			Set<String> keys = redisService.keys(RedisService.key.USER_MIRROR_SHOP_ADVERTISE_CACHE_KEY.getName() + "*");
+			redisService.del(keys.toArray(String[]::new));
+			return;
+		}
 		Optional.ofNullable(userMirrorShopMapper.selectOne(Wrappers.lambdaQuery(UserMirrorShop.class).eq(UserMirrorShop::getUserId, userId).last("limit 1")))
 				.ifPresent(um -> {
 					String key = RedisService.key.USER_MIRROR_SHOP_ADVERTISE_CACHE_KEY.getName() + um.getCustomId();

+ 7 - 0
netflix-web/src/main/java/com/cyksj/web/controller/manage/mirrorshop/UserMirrorShopAdvertiseController.java

@@ -3,6 +3,7 @@ package com.cyksj.web.controller.manage.mirrorshop;
 import com.cyksj.dto.Result;
 import com.cyksj.enums.GatewayResponse;
 import com.cyksj.model.entity.UserMirrorShopManageAdvertise;
+import com.cyksj.service.mange.RefreshCacheService;
 import com.cyksj.service.mirrorshop.UserMirrorShopAdvertiseService;
 import com.ejlchina.searcher.BeanSearcher;
 import com.ejlchina.searcher.SearchResult;
@@ -31,12 +32,15 @@ public class UserMirrorShopAdvertiseController {
 
 	private final HttpServletRequest request;
 
+	private final RefreshCacheService refreshCacheService;
+
 	/**
 	 * 店铺公告列表
 	 */
 	@GetMapping("/get")
 	public Result<SearchResult<UserMirrorShopManageAdvertise>> get() {
 		SearchResult<UserMirrorShopManageAdvertise> search = beanSearcher.search(UserMirrorShopManageAdvertise.class, MapUtils.flatBuilder(request.getParameterMap())
+				.field(UserMirrorShopManageAdvertise::getUserId, 0)
 				.orderBy(UserMirrorShopManageAdvertise::getUpdateTime).desc()
 				.build());
 		return GatewayResponse.SUCCESS.newBuilder().toResult(search);
@@ -59,6 +63,7 @@ public class UserMirrorShopAdvertiseController {
 	@PutMapping("/update")
 	public Result<String> update(@RequestBody UserMirrorShopManageAdvertise advertise) {
 		userMirrorShopAdvertiseService.saveOrUpdate(advertise);
+		refreshCacheService.refreshUserMirrorShopAdvertiseCache(null);
 		return GatewayResponse.SUCCESS.newBuilder().toResult();
 	}
 
@@ -71,6 +76,7 @@ public class UserMirrorShopAdvertiseController {
 		Optional.ofNullable(userMirrorShopAdvertiseService.getById(id))
 				.ifPresent(en -> {
 					en.setStatus(!en.getStatus());
+					refreshCacheService.refreshUserMirrorShopAdvertiseCache(null);
 					userMirrorShopAdvertiseService.updateById(en);
 				});
 		return GatewayResponse.SUCCESS.newBuilder().toResult();
@@ -82,6 +88,7 @@ public class UserMirrorShopAdvertiseController {
 	@PutMapping("/delete/{id}")
 	public Result<String> deleteById(@PathVariable Long id) {
 		userMirrorShopAdvertiseService.removeById(id);
+		refreshCacheService.refreshUserMirrorShopAdvertiseCache(null);
 		return GatewayResponse.SUCCESS.newBuilder().toResult();
 	}
 }

+ 40 - 8
netflix-web/src/main/java/com/cyksj/web/controller/manage/mirrorshop/manage/CmsUserMirrorAdvertiseController.java

@@ -4,12 +4,15 @@ 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.UserMirrorShopManageAdvertiseStatusRelateMapper;
 import com.cyksj.model.entity.UserMirrorShopManageAdvertise;
+import com.cyksj.model.entity.UserMirrorShopManageAdvertiseStatusRelate;
 import com.cyksj.service.mange.RefreshCacheService;
 import com.cyksj.service.mirrorshop.UserMirrorShopAdvertiseService;
 import com.cyksj.web.util.StpUserMirrorShopManageUser;
 import com.ejlchina.searcher.BeanSearcher;
 import com.ejlchina.searcher.SearchResult;
+import com.ejlchina.searcher.util.MapBuilder;
 import com.ejlchina.searcher.util.MapUtils;
 import lombok.RequiredArgsConstructor;
 import org.springframework.web.bind.annotation.*;
@@ -37,16 +40,28 @@ public class CmsUserMirrorAdvertiseController {
 
 	private RefreshCacheService refreshCacheService;
 
+	private UserMirrorShopManageAdvertiseStatusRelateMapper userMirrorShopManageAdvertiseStatusRelateMapper;
+
 	/**
 	 * 店铺公告列表
 	 */
 	@GetMapping("/get")
-	public Result<SearchResult<UserMirrorShopManageAdvertise>> get() {
+	public Result<SearchResult<UserMirrorShopManageAdvertise>> get(@RequestParam(defaultValue = "1") Boolean self) {
 		long userId = StpUserMirrorShopManageUser.getLoginIdAsLong();
-		SearchResult<UserMirrorShopManageAdvertise> search = beanSearcher.search(UserMirrorShopManageAdvertise.class, MapUtils.flatBuilder(request.getParameterMap())
-				.field(UserMirrorShopManageAdvertise::getUserId, userId)
-				.orderBy(UserMirrorShopManageAdvertise::getUpdateTime).desc()
-				.build());
+		MapBuilder builder = MapUtils.flatBuilder(request.getParameterMap());
+		if (self) {
+			builder.put("uid", String.format(String.format("ua.user_id in (0,%s)"), userId));
+		} else {
+			builder.field(UserMirrorShopManageAdvertise::getUserId, 0);
+		}
+		SearchResult<UserMirrorShopManageAdvertise> search = beanSearcher.search(UserMirrorShopManageAdvertise.class, builder.orderBy(UserMirrorShopManageAdvertise::getUpdateTime).desc().build());
+		search.getDataList().forEach(data -> {
+			if (data.getUserId() == 0) {
+				Optional.ofNullable(userMirrorShopManageAdvertiseStatusRelateMapper.selectOne(Wrappers.lambdaQuery(UserMirrorShopManageAdvertiseStatusRelate.class).eq(UserMirrorShopManageAdvertiseStatusRelate::getAdvertiseId, data.getId())
+						.eq(UserMirrorShopManageAdvertiseStatusRelate::getUserId, userId)
+						.last("limit 1"))).ifPresent(e -> data.setStatus(e.getStatus()));
+			}
+		});
 		return GatewayResponse.SUCCESS.newBuilder().toResult(search);
 	}
 
@@ -87,11 +102,28 @@ public class CmsUserMirrorAdvertiseController {
 		Long userId = StpUserMirrorShopManageUser.getLoginIdAsLong();
 		Optional.ofNullable(userMirrorShopAdvertiseService.getById(id))
 				.ifPresent(en -> {
-					if (!en.getUserId().equals(userId)) {
+					if (en.getUserId() != 0) {
 						return;
 					}
-					en.setStatus(!en.getStatus());
-					userMirrorShopAdvertiseService.updateById(en);
+					//官方公告
+					if (!en.getUserId().equals(userId)) {
+						UserMirrorShopManageAdvertiseStatusRelate userMirrorShopManageAdvertiseStatusRelate = Optional.ofNullable(userMirrorShopManageAdvertiseStatusRelateMapper.selectOne(Wrappers.lambdaQuery(UserMirrorShopManageAdvertiseStatusRelate.class)
+								.eq(UserMirrorShopManageAdvertiseStatusRelate::getUserId, userId)
+								.eq(UserMirrorShopManageAdvertiseStatusRelate::getAdvertiseId, id).last("limit 1"))).orElse(new UserMirrorShopManageAdvertiseStatusRelate());
+
+						userMirrorShopManageAdvertiseStatusRelate.setAdvertiseId(id);
+						userMirrorShopManageAdvertiseStatusRelate.setUserId(userId);
+						if (userMirrorShopManageAdvertiseStatusRelate.getId() == null) {
+							userMirrorShopManageAdvertiseStatusRelate.setStatus(!en.getStatus());
+							userMirrorShopManageAdvertiseStatusRelateMapper.insert(userMirrorShopManageAdvertiseStatusRelate);
+						} else {
+							userMirrorShopManageAdvertiseStatusRelate.setStatus(!userMirrorShopManageAdvertiseStatusRelate.getStatus());
+							userMirrorShopManageAdvertiseStatusRelateMapper.updateById(userMirrorShopManageAdvertiseStatusRelate);
+						}
+					} else {
+						en.setStatus(!en.getStatus());
+						userMirrorShopAdvertiseService.updateById(en);
+					}
 					refreshCacheService.refreshUserMirrorShopAdvertiseCache(userId);
 				});
 		return GatewayResponse.SUCCESS.newBuilder().toResult();

+ 4 - 1
netflix-web/src/main/java/com/cyksj/web/controller/mirrorshop/UserMirrorShopFrontController.java

@@ -5,6 +5,7 @@ import com.cyksj.config.zfb.BaseZfbConfig;
 import com.cyksj.config.zfb.ZfbProductCode;
 import com.cyksj.dto.Result;
 import com.cyksj.enums.GatewayResponse;
+import com.cyksj.mapper.mirrorshop.UserMirrorShopManageAdvertiseMapper;
 import com.cyksj.model.dto.AliPayParams;
 import com.cyksj.model.entity.UserMirrorShopFeeOrderDon;
 import com.cyksj.model.request.AlipayOrderDonReq;
@@ -47,6 +48,8 @@ public class UserMirrorShopFrontController {
 
 	private final RedisService redisService;
 
+	private final UserMirrorShopManageAdvertiseMapper userMirrorShopManageAdvertiseMapper;
+
 	/**
 	 * 镜像店铺主 个人信息
 	 */
@@ -65,7 +68,7 @@ public class UserMirrorShopFrontController {
 		Object value = redisService.get(key);
 		List<UserMirrorShopAdvertiseFrontView> userMirrorShopAdvertiseFrontViews;
 		if (value == null) {
-			userMirrorShopAdvertiseFrontViews = beanSearcher.searchList(UserMirrorShopAdvertiseFrontView.class, MapUtils.flatBuilder(request.getParameterMap()).field(UserMirrorShopAdvertiseFrontView::getCustomId, customId).build());
+			userMirrorShopAdvertiseFrontViews = userMirrorShopManageAdvertiseMapper.getAdvertise(customId);
 			redisService.set(key, userMirrorShopAdvertiseFrontViews, RedisService.key.USER_MIRROR_SHOP_ADVERTISE_CACHE_KEY.getTimeout());
 		} else {
 			userMirrorShopAdvertiseFrontViews = (List<UserMirrorShopAdvertiseFrontView>) value;