Prechádzať zdrojové kódy

Merge remote-tracking branch 'origin/master'

zoujiajian 2 rokov pred
rodič
commit
f34826c09a
20 zmenil súbory, kde vykonal 160 pridanie a 42 odobranie
  1. 1 1
      netflix-common/src/main/java/com/cyksj/xxljob/XxlJobUtil.java
  2. 0 13
      netflix-dao/src/main/java/com/cyksj/mapper/ChatGptPwdViewRecordMapper.java
  3. 13 0
      netflix-dao/src/main/java/com/cyksj/mapper/TicketPwdViewRecordMapper.java
  4. 3 2
      netflix-dao/src/main/java/com/cyksj/mapper/corp/CorpUserFollowRelationMapper.java
  5. 13 0
      netflix-dao/src/main/java/com/cyksj/model/entity/CorpMsgBulkTask.java
  6. 6 2
      netflix-dao/src/main/java/com/cyksj/model/entity/TicketPwdViewRecord.java
  7. 5 0
      netflix-dao/src/main/java/com/cyksj/model/manage/request/ReqGoodsSkuSpec.java
  8. 3 0
      netflix-dao/src/main/java/com/cyksj/model/manage/views/GroupsRelationView.java
  9. 51 0
      netflix-dao/src/main/java/com/cyksj/model/views/TicketPwdViewRecordView.java
  10. 12 0
      netflix-dao/src/main/resources/mapper/CorpUserFollowRelationMapper.xml
  11. 1 1
      netflix-dao/src/main/resources/mapper/GroupRelationMapper.xml
  12. 1 1
      netflix-dao/src/main/resources/mapper/UserDistributeMapper.xml
  13. 4 2
      netflix-service/src/main/java/com/cyksj/service/corp/impl/CorpMsgBulkTaskServiceImpl.java
  14. 1 3
      netflix-service/src/main/java/com/cyksj/service/distribute/impl/DistributeServiceImpl.java
  15. 1 1
      netflix-service/src/main/java/com/cyksj/service/relation/GroupRelationFrontService.java
  16. 7 2
      netflix-service/src/main/java/com/cyksj/service/relation/impl/GroupRelationFrontServiceImpl.java
  17. 8 5
      netflix-web/src/main/java/com/cyksj/web/controller/group/GroupRelationController.java
  18. 11 0
      netflix-web/src/main/java/com/cyksj/web/controller/manage/account/CmsAccountController.java
  19. 15 8
      netflix-web/src/main/java/com/cyksj/web/controller/manage/distribute/DistributeController.java
  20. 4 1
      netflix-web/src/main/java/com/cyksj/web/controller/manage/goods/CmsGoodsDonSkuController.java

+ 1 - 1
netflix-common/src/main/java/com/cyksj/xxljob/XxlJobUtil.java

@@ -26,7 +26,7 @@ import java.util.List;
  */
 public class XxlJobUtil {
 
-	private final static String BASE_URL = "http://app7.liuliangbang.vip:9099/xxl-job-admin";
+	private final static String BASE_URL = "http://app7.yicanggongyi.com:9099/xxl-job-admin";
 
 	private static String cookie = "";
 

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

@@ -1,13 +0,0 @@
-package com.cyksj.mapper;
-
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import com.cyksj.model.entity.ChatGptPwdViewRecord;
-
-/*
- *项目名: netflix
- *文件名: ChatGptPwdViewRecordMapper
- *创建者: JavaZou
- *创建时间:2023/5/17 16:15
- */
-public interface ChatGptPwdViewRecordMapper extends BaseMapper<ChatGptPwdViewRecord> {
-}

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

@@ -0,0 +1,13 @@
+package com.cyksj.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.cyksj.model.entity.TicketPwdViewRecord;
+
+/*
+ *项目名: netflix
+ *文件名: TicketPwdViewRecordMapper
+ *创建者: JavaZou
+ *创建时间:2023/5/17 16:15
+ */
+public interface TicketPwdViewRecordMapper extends BaseMapper<TicketPwdViewRecord> {
+}

+ 3 - 2
netflix-dao/src/main/java/com/cyksj/mapper/corp/CorpUserFollowRelationMapper.java

@@ -5,6 +5,7 @@ import com.cyksj.model.dto.CorpUserFollowRelationDto;
 import com.cyksj.model.entity.CorpUserFollowRelation;
 import org.apache.ibatis.annotations.Param;
 
+import java.util.Date;
 import java.util.List;
 
 /**
@@ -15,9 +16,9 @@ public interface CorpUserFollowRelationMapper extends BaseMapper<CorpUserFollowR
 
 	String selectCorpCustomers(@Param("unionid") String unionid, @Param("wxCorpId") Long wxCorpId);
 
-	List<CorpUserFollowRelationDto> selectCorpUserFollowRelationByTagIds(@Param("list") List<String> tagIds, @Param("wxCorpId") Long wxCorpId, @Param("followIds") List<String> followIds, @Param("userScope") Integer userScope, @Param("consumerScope") Integer consumerScope);
+	List<CorpUserFollowRelationDto> selectCorpUserFollowRelationByTagIds(@Param("list") List<String> tagIds, @Param("wxCorpId") Long wxCorpId, @Param("followIds") List<String> followIds, @Param("userScope") Integer userScope, @Param("consumerScope") Integer consumerScope, @Param("joinStartTime") Date joinStartTime, @Param("joinEndTime") Date joinEndTime);
 
 	List<CorpUserFollowRelationDto> selectCorpUserFollowRelation(@Param("wxCorpId") Long wxCorpId, @Param("followIds") List<String> service_follow_ids);
 
-	List<CorpUserFollowRelationDto> selectCorpUserNotUnderTagIds(@Param("list") List<String> tagIds, @Param("wxCorpId") Long wxCorpId, @Param("followIds") List<String> followIds, @Param("userScope") Integer userScope, @Param("consumerScope") Integer consumerScope);
+	List<CorpUserFollowRelationDto> selectCorpUserNotUnderTagIds(@Param("list") List<String> tagIds, @Param("wxCorpId") Long wxCorpId, @Param("followIds") List<String> followIds, @Param("userScope") Integer userScope, @Param("consumerScope") Integer consumerScope, @Param("joinStartTime") Date joinStartTime, @Param("joinEndTime") Date joinEndTime);
 }

+ 13 - 0
netflix-dao/src/main/java/com/cyksj/model/entity/CorpMsgBulkTask.java

@@ -148,6 +148,19 @@ public class CorpMsgBulkTask implements Serializable {
 	 */
 	private Integer consumerScope;
 
+
+	/**
+	 * 用户添加客服起始时间
+	 */
+	@TableField(updateStrategy = FieldStrategy.IGNORED)
+	private Date joinStartTime;
+
+	/**
+	 * 用户添加客服结束时间
+	 */
+	@TableField(updateStrategy = FieldStrategy.IGNORED)
+	private Date joinEndTime;
+
 	private Boolean deleted;
 
 	/**

+ 6 - 2
netflix-dao/src/main/java/com/cyksj/model/entity/ChatGptPwdViewRecord.java → netflix-dao/src/main/java/com/cyksj/model/entity/TicketPwdViewRecord.java

@@ -5,17 +5,21 @@ import lombok.Setter;
 
 /*
  *项目名: netflix
- *文件名: ChatGptPwdViewRecord
+ *文件名: TicketPwdViewRecord
  *创建者: JavaZou
  *创建时间:2023/5/17 16:07
  */
 @Getter
 @Setter
-public class ChatGptPwdViewRecord extends BaseEntity{
+public class TicketPwdViewRecord extends BaseEntity{
 	private Long userId;
 
 	private Long relationId;
 
+	private String account;
+
+	private String password;
+
 	private Long skuId;
 
 	private String operateLocation;

+ 5 - 0
netflix-dao/src/main/java/com/cyksj/model/manage/request/ReqGoodsSkuSpec.java

@@ -26,6 +26,11 @@ public class ReqGoodsSkuSpec {
 
         private BigDecimal price;
 
+        /**
+         * 预览图
+         */
+        private String previewImgs;
+
         private String benefitsList;
     }
 }

+ 3 - 0
netflix-dao/src/main/java/com/cyksj/model/manage/views/GroupsRelationView.java

@@ -50,6 +50,9 @@ public class GroupsRelationView {
     @DbField("if(a.api_secret='',false,true)")
     private Boolean isVerify;
 
+    @DbField("gr.verify_code")
+    private String verifyCode;
+
     @DbField("g.id")
     private Long goodsId;
 

+ 51 - 0
netflix-dao/src/main/java/com/cyksj/model/views/TicketPwdViewRecordView.java

@@ -0,0 +1,51 @@
+package com.cyksj.model.views;
+
+import com.ejlchina.searcher.bean.DbField;
+import com.ejlchina.searcher.bean.SearchBean;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.Date;
+
+/**
+ * 项目名: yhlxj
+ * 文件名: TicketPwdViewRecordView
+ * 创建者: JavaZou
+ * 创建时间:2024/1/23 13:54
+ */
+@Getter
+@Setter
+@SearchBean(tables = "(select * from ticket_pwd_view_record where account is not null) tpr left join goods_don_sku sku on sku.id = tpr.sku_id" +
+		" left join goods_don g on g.id = sku.goods_id" +
+		" left join user u on u.id = tpr.user_id")
+public class TicketPwdViewRecordView {
+	@DbField("tpr.id")
+	private Long id;
+
+	@DbField("u.id")
+	private Long userId;
+
+	@DbField("u.nickname")
+	private String nickname;
+
+	@DbField("tpr.account")
+	private String account;
+
+	@DbField("tpr.password")
+	private String password;
+
+	@DbField("g.id")
+	private Long goodsId;
+
+	@DbField("g.title")
+	private String title;
+
+	@DbField("sku.id")
+	private Long skuId;
+
+	@DbField("sku.spec_val")
+	private String specVal;
+
+	@DbField("tpr.created_time")
+	private Date createdTime;
+}

+ 12 - 0
netflix-dao/src/main/resources/mapper/CorpUserFollowRelationMapper.xml

@@ -26,6 +26,12 @@
         left join `corp_user_auth` ca on ca.external_userid = cufr.corp_user_id
         left join `corp_user` cu on cu.id = ca.corp_user_id
         where cufr.wx_corp_id = #{wxCorpId}
+        <if test="joinStartTime != null">
+            and cu.created_time >= #{joinStartTime}
+        </if>
+        <if test="joinEndTime != null">
+            and cu.created_time &lt; #{joinEndTime}
+        </if>
         <choose>
             <when test="userScope == 2">
                 and cu.user_id != 0
@@ -78,6 +84,12 @@
         any_value(cu.user_id) as user_id
         from corp_user cu inner join corp_user_auth ca on ca.corp_user_id = cu.id
         and ca.wx_corp_id = #{wxCorpId}
+        <if test="joinStartTime != null">
+            and cu.created_time >= #{joinStartTime}
+        </if>
+        <if test="joinEndTime != null">
+            and cu.created_time &lt; #{joinEndTime}
+        </if>
         <choose>
             <when test="userScope == 2">
                 and cu.user_id != 0

+ 1 - 1
netflix-dao/src/main/resources/mapper/GroupRelationMapper.xml

@@ -99,7 +99,7 @@
     <select id="selectViewPwdCount" resultType="java.lang.Integer">
         select count(distinct relation_id)
         from (select id, user_id from `groups_relation` where groups_id = #{groupsId} and `status` = 'validity') s
-                 inner join chat_gpt_pwd_view_record cr on cr.relation_id = s.id and s.user_id = cr.user_id
+                 inner join ticket_pwd_view_record cr on cr.relation_id = s.id and s.user_id = cr.user_id
     </select>
 
     <select id="selectRandomOneRelationByGroupsId" resultType="com.cyksj.model.entity.GroupsRelation">

+ 1 - 1
netflix-dao/src/main/resources/mapper/UserDistributeMapper.xml

@@ -80,7 +80,7 @@
             </if>
             limit 1
         </where>
-        )u inner join user_distribute ud on ud.user_id = u.id and ud.deleted is true
+        )u inner join user_distribute ud on ud.user_id = u.id and ud.deleted is true limit 1
     </select>
 
     <select id="getDistributeGoodsRateByUidAndGid" resultType="java.lang.Integer">

+ 4 - 2
netflix-service/src/main/java/com/cyksj/service/corp/impl/CorpMsgBulkTaskServiceImpl.java

@@ -263,14 +263,16 @@ public class CorpMsgBulkTaskServiceImpl extends ServiceImpl<CorpMsgBulkTaskMappe
 		Integer sendScope = corpMsgBulkTask.getSendScope();
 
 		Integer consumerScope = corpMsgBulkTask.getConsumerScope();
+		Date joinStartTime = corpMsgBulkTask.getJoinStartTime();
+		Date joinEndTime = corpMsgBulkTask.getJoinEndTime();
 
 		List<CorpUserFollowRelationDto> corpUserFollowRelations = null;
 		//全部用户
 		if (sendScope == 1) {
 			//此时tagIds是 需要过滤的用户标签
-			corpUserFollowRelations = corpUserFollowRelationMapper.selectCorpUserNotUnderTagIds(tagIds, wxCorpApp.getId(), service_follow_ids, userScope, consumerScope);
+			corpUserFollowRelations = corpUserFollowRelationMapper.selectCorpUserNotUnderTagIds(tagIds, wxCorpApp.getId(), service_follow_ids, userScope, consumerScope, joinStartTime, joinEndTime);
 		} else {
-			corpUserFollowRelations = corpUserFollowRelationMapper.selectCorpUserFollowRelationByTagIds(tagIds, wxCorpApp.getId(), service_follow_ids, userScope, consumerScope);
+			corpUserFollowRelations = corpUserFollowRelationMapper.selectCorpUserFollowRelationByTagIds(tagIds, wxCorpApp.getId(), service_follow_ids, userScope, consumerScope, joinStartTime, joinEndTime);
 		}
 		//将成员与客户相同关联聚合
 		Map<String, List<CorpUserFollowRelationDto>> userRelationMap = corpUserFollowRelations.stream().collect(Collectors.groupingBy(CorpUserFollowRelationDto::getFollowId));

+ 1 - 3
netflix-service/src/main/java/com/cyksj/service/distribute/impl/DistributeServiceImpl.java

@@ -77,7 +77,7 @@ public class DistributeServiceImpl implements DistributeService {
 	@Override
 	@Transactional(rollbackFor = Throwable.class)
 	public void insertDistribute(UserDistributeReq userDistributeReq) {
-		if (!redisService.setNx(RedisService.key.USER_DISTRIBUTE_ADD_KEY.getNameFormat(userDistributeReq.getUserId()), userDistributeReq.getUserId(), 60l)) {
+		if (!redisService.setNx(RedisService.key.USER_DISTRIBUTE_ADD_KEY.getNameFormat(userDistributeReq.getUserId()), userDistributeReq.getUserId(), 2 * 60l)) {
 			throw BusinessRuntimeException.getInstance("请勿重复点击");
 		}
 		UserDistribute exists = userDistributeMapper.selectOne(Wrappers.lambdaQuery(UserDistribute.class).eq(UserDistribute::getUserId, userDistributeReq.getUserId()).eq(UserDistribute::getDeleted, true).last("limit 1"));
@@ -149,8 +149,6 @@ public class DistributeServiceImpl implements DistributeService {
 		//渠道目标额配置
 		List<UserDistributeTargetAlert> targets = userDistributeReq.getTargets();
 		handlerDistributeTargetAlert(userDistribute.getId(), targets);
-
-		redisService.del(RedisService.key.USER_DISTRIBUTE_ADD_KEY.getNameFormat(userDistributeReq.getUserId()));
 	}
 
 	@Override

+ 1 - 1
netflix-service/src/main/java/com/cyksj/service/relation/GroupRelationFrontService.java

@@ -49,5 +49,5 @@ public interface GroupRelationFrontService {
 
 	void setGroupsTripsParkingTimeEmpty(GoodsDonSku sku, Long relationId);
 
-	Integer getUserCodeNumBySkuId(Long userId, Long skuId);
+	Integer getUserCodeNumBySkuId(Long userId, Long skuId, Boolean isHasVerifyCode);
 }

+ 7 - 2
netflix-service/src/main/java/com/cyksj/service/relation/impl/GroupRelationFrontServiceImpl.java

@@ -216,7 +216,8 @@ public class GroupRelationFrontServiceImpl implements GroupRelationFrontService
 			}
 			//查看双重验证码
 			if (StrUtil.isNotEmpty(ticket.getApiSecret())) {
-				Integer codeNum = getUserCodeNumBySkuId(ticket.getUserId(), ticket.getSkuId());
+				Boolean isHasVerifyCode = StrUtil.isNotBlank(ticket.getVerifyCode()) ? true : false;
+				Integer codeNum = getUserCodeNumBySkuId(ticket.getUserId(), ticket.getSkuId(), isHasVerifyCode);
 				ticket.setCodeNum(codeNum);
 			}
 		});
@@ -576,7 +577,7 @@ public class GroupRelationFrontServiceImpl implements GroupRelationFrontService
 	}
 
 	@Override
-	public Integer getUserCodeNumBySkuId(Long userId, Long skuId) {
+	public Integer getUserCodeNumBySkuId(Long userId, Long skuId, Boolean isHasVerifyCode) {
 		//查看双重验证码
 		UserFuncProperty userFuncProperty = userFuncPropertyMapper.selectOne(Wrappers.lambdaQuery(UserFuncProperty.class).eq(UserFuncProperty::getUserId, userId).last("limit 1"));
 		//默认0次
@@ -586,6 +587,10 @@ public class GroupRelationFrontServiceImpl implements GroupRelationFrontService
 		if (sku.getCodeNum() > 0) {
 			num = sku.getCodeNum();
 		}
+		//有安全码并客服未设置对应用户可查看次数 置为0
+		if (isHasVerifyCode && userFuncProperty == null) {
+			num = 0;
+		}
 		if (userFuncProperty != null) num = userFuncProperty.getVerifyCheckNum();
 		return num;
 	}

+ 8 - 5
netflix-web/src/main/java/com/cyksj/web/controller/group/GroupRelationController.java

@@ -82,7 +82,7 @@ public class GroupRelationController {
 
     private final UserBindRelationService userBindRelationService;
 
-    private final ChatGptPwdViewRecordMapper chatGptPwdViewRecordMapper;
+    private final TicketPwdViewRecordMapper ticketPwdViewRecordMapper;
 
     private final HttpServletRequest request;
 
@@ -210,13 +210,15 @@ public class GroupRelationController {
         }
         if (groupsRelationView.getAccountId() == null) throw BusinessRuntimeException.getInstance("该车队未配置账号");
         if (groupRelationFrontService == null) throw BusinessRuntimeException.getInstance("车票已不存在");
-        ChatGptPwdViewRecord viewRecord = new ChatGptPwdViewRecord();
+        TicketPwdViewRecord viewRecord = new TicketPwdViewRecord();
         viewRecord.setUserId(userId);
         viewRecord.setRelationId(relationId);
         viewRecord.setSkuId(groupsRelationView.getSkuId());
         viewRecord.setOperateLocation(StringUtil.getRealAddressByIP(ServletUtil.getClientIP(request)));
-        chatGptPwdViewRecordMapper.insert(viewRecord);
-        if (StrUtil.isEmpty(groupsRelationView.getApiSecret())) {
+        viewRecord.setAccount(groupsRelationView.getTripsAccount());
+        viewRecord.setPassword(groupsRelationView.getTripsPassword());
+        ticketPwdViewRecordMapper.insert(viewRecord);
+        if (groupsRelationView.getGoodsId() == 18 && StrUtil.isEmpty(groupsRelationView.getApiSecret())) {
             THREAD_POOL.execute(() -> {
                 //车队所有人查看密码
                 Integer num = groupsRelationView.getGtNum();
@@ -263,7 +265,8 @@ public class GroupRelationController {
                 .eq(DoubleVerifyClickRecord::getAccountId, groupsRelationView.getAccountId())
                 .between(DoubleVerifyClickRecord::getCreatedTime, DateUtil.beginOfMonth(now), DateUtil.endOfMonth(now)));
         //获取双重验证码
-        Integer num = groupRelationFrontService.getUserCodeNumBySkuId(userId, groupsRelationView.getSkuId());
+        Boolean isHasVerifyCode = StrUtil.isNotBlank(groupsRelationView.getVerifyCode()) ? true : false;
+        Integer num = groupRelationFrontService.getUserCodeNumBySkuId(userId, groupsRelationView.getSkuId(), isHasVerifyCode);
         if (count >= num) throw BusinessRuntimeException.getInstance("获取双重验证码次数上限");
         //一分钟内 只能一人获取
         boolean b = redisService.setNx(RedisService.key.DOUBLE_VERIFY_CODE_VIEW_MINUTES_KEY.getEnvName() + groupsRelationView.getTripsAccount(), relationId, RedisService.key.DOUBLE_VERIFY_CODE_VIEW_MINUTES_KEY.getTimeout());

+ 11 - 0
netflix-web/src/main/java/com/cyksj/web/controller/manage/account/CmsAccountController.java

@@ -943,6 +943,17 @@ public class CmsAccountController {
 		return GatewayResponse.SUCCESS.newBuilder().toResult(search);
 	}
 
+	/**
+	 * 用户车看车票账号密码 记录列表
+	 */
+	@GetMapping("/get/ticket/pwd/view")
+	public Result<SearchResult<TicketPwdViewRecordView>> getTicketPwdView() {
+		SearchResult<TicketPwdViewRecordView> search = beanSearcher.search(TicketPwdViewRecordView.class, MapUtils.flatBuilder(request.getParameterMap())
+				.orderBy(TicketPwdViewRecordView::getId).desc()
+				.build());
+		return GatewayResponse.SUCCESS.newBuilder().toResult(search);
+	}
+
 	/**
 	 * MidJourney、ChatGPT年付 ChatGpt独立月付未续费列表
 	 */

+ 15 - 8
netflix-web/src/main/java/com/cyksj/web/controller/manage/distribute/DistributeController.java

@@ -127,14 +127,21 @@ public class DistributeController {
 	@Log(module = "分销管理/增加推广者", businessType = BusinessType.POST, isSaveRequestData = true)
 	@Transactional(rollbackFor = Throwable.class)
 	public Result<String> saveDistributes(@RequestBody @NotNull UserDistributeReq userDistributeReq) {
-		distributeService.insertDistribute(userDistributeReq);
-		Long businessId = userDistributeReq.getBusinessId();
-		//保存商务人员提成比例
-		userBusinessRateService.saveBusinessRate(businessId);
-		//清除 之前有普通推广专属码
-		couponDistributePopularizeMapper.delete(Wrappers.lambdaQuery(CouponDistributePopularize.class)
-				.eq(CouponDistributePopularize::getUserId, userDistributeReq.getUserId())
-				.eq(CouponDistributePopularize::getIsGeneral, true));
+		try {
+			distributeService.insertDistribute(userDistributeReq);
+			Long businessId = userDistributeReq.getBusinessId();
+			//保存商务人员提成比例
+			userBusinessRateService.saveBusinessRate(businessId);
+			//清除 之前有普通推广专属码
+			couponDistributePopularizeMapper.delete(Wrappers.lambdaQuery(CouponDistributePopularize.class)
+					.eq(CouponDistributePopularize::getUserId, userDistributeReq.getUserId())
+					.eq(CouponDistributePopularize::getIsGeneral, true));
+		} finally {
+			String cacheKey = RedisService.key.USER_DISTRIBUTE_ADD_KEY.getNameFormat(userDistributeReq.getUserId());
+			if (redisService.hasKey(cacheKey)) {
+				redisService.del(cacheKey);
+			}
+		}
 		return GatewayResponse.SUCCESS.newBuilder().toResult("添加成功");
 	}
 

+ 4 - 1
netflix-web/src/main/java/com/cyksj/web/controller/manage/goods/CmsGoodsDonSkuController.java

@@ -66,7 +66,8 @@ public class CmsGoodsDonSkuController {
     @Log(module = "平台管理/新增商品sku&spec", businessType = BusinessType.POST, isSaveRequestData = true)
     public Result<String> skuInsert(@Validated @RequestBody ReqGoodsSkuInsert insert) throws Exception{
         goodsDonSpecService.insertOrUpdateSkuSpec(insert, false);
-
+        Set<String> keys = redisService.keys(RedisService.key.YH_HOME_PAGHE_CACHE.getEnvName() + "*");
+        redisService.del(keys.toArray(String[]::new));
         return GatewayResponse.SUCCESS.newBuilder().toResult();
     }
 
@@ -76,6 +77,8 @@ public class CmsGoodsDonSkuController {
     @PutMapping("/update/spec")
     public Result<String> updateGoodsSpec(@Validated @RequestBody ReqGoodsSkuInsert insert) throws Exception {
         goodsDonSpecService.insertOrUpdateSkuSpec(insert, true);
+        Set<String> keys = redisService.keys(RedisService.key.YH_HOME_PAGHE_CACHE.getEnvName() + "*");
+        redisService.del(keys.toArray(String[]::new));
         return GatewayResponse.SUCCESS.newBuilder().toResult();
     }