Parcourir la source

微信公众号-图文素材-编辑

chao il y a 3 ans
Parent
commit
ab94ce16a7

+ 9 - 1
src/main/java/com/caimei365/manager/dao/WeChatDao.java

@@ -101,6 +101,10 @@ public interface WeChatDao {
      * 根据图文ID获取详情列表
      */
     List<WechatArticleDetail> getArticleDetailList(Integer articleId);
+    /**
+     * 根据图文ID获取详情Ids
+     */
+    List<Integer> getArticleDetailIds(Integer articleId);
     /**
      * 根据ID获取图文素材文章
      */
@@ -128,5 +132,9 @@ public interface WeChatDao {
     /**
      * 根据ID删除图文素材文章列表
      */
-    void deleteWechatArticleDetail(Integer articleId);
+    void deleteDetailByArticleId(Integer articleId);
+    /**
+     * 根据ID删除图文素材文章
+     */
+    void deleteWechatArticleDetail(Integer id);
 }

+ 11 - 3
src/main/java/com/caimei365/manager/service/wechat/impl/WechatArticleServiceImpl.java

@@ -69,8 +69,8 @@ public class WechatArticleServiceImpl implements WechatArticleService {
     @Override
     public ResponseJson<WechatArticle> getArticle(Integer id) {
         WechatArticle article = weChatDao.getWechatArticle(id);
-        List<WechatArticleDetail> articleList = weChatDao.getArticleDetailList(article.getId());
-        article.setDetailList(articleList);
+        List<WechatArticleDetail> detailList = weChatDao.getArticleDetailList(article.getId());
+        article.setDetailList(detailList);
         return ResponseJson.success(article);
     }
 
@@ -146,13 +146,21 @@ public class WechatArticleServiceImpl implements WechatArticleService {
             log.error("文章列表JSON数据解析异常try-catch:", e);
             return ResponseJson.error("文章列表JSON数据解析异常!", null);
         }
+        List<Integer> dbDetailIds = weChatDao.getArticleDetailIds(article.getId());
+        List<Integer> detailIds = new ArrayList<>();
         for (WechatArticleDetail detail : detailList) {
             if (null != detail.getId() && detail.getId() > 0) {
                 weChatDao.updateWechatArticleDetail(detail);
+                detailIds.add(detail.getId());
             } else {
                 weChatDao.insertWechatArticleDetail(detail);
             }
         }
+        for (Integer id : dbDetailIds) {
+            if (!detailIds.contains(id)){
+                weChatDao.deleteWechatArticleDetail(id);
+            }
+        }
         return null;
     }
 
@@ -186,7 +194,7 @@ public class WechatArticleServiceImpl implements WechatArticleService {
     @Override
     public ResponseJson<Void> deleteArticle(Integer id) {
         weChatDao.deleteWechatArticle(id);
-        weChatDao.deleteWechatArticleDetail(id);
+        weChatDao.deleteDetailByArticleId(id);
         return ResponseJson.success();
     }
 }

+ 7 - 1
src/main/resources/mapper/WeChatDao.xml

@@ -115,6 +115,9 @@
                IFNULL(a.update_date,a.create_date) AS updateTime
         FROM wechat_article a WHERE a.cm_wxarticleID = #{id}
     </select>
+    <select id="getArticleDetailIds" resultType="java.lang.Integer">
+        SELECT cm_wxarticledtlID FROM wechat_article_detail  WHERE cm_wxarticleID = #{articleId}
+    </select>
     <select id="getArticleDetailList" resultType="com.caimei365.manager.entity.wechat.WechatArticleDetail">
         SELECT a.cm_wxarticledtlID AS id,a.cm_wxarticleID AS articleId, a.title, a.linkurl AS linkUrl, a.picurl AS pictureUrl
         FROM wechat_article_detail a WHERE a.cm_wxarticleID = #{articleId}
@@ -142,7 +145,10 @@
     <delete id="deleteWechatArticle">
         DELETE FROM wechat_article WHERE cm_wxarticleID = #{id}
     </delete>
-    <delete id="deleteWechatArticleDetail">
+    <delete id="deleteDetailByArticleId">
         DELETE FROM wechat_article_detail WHERE cm_wxarticleID = #{articleId}
     </delete>
+    <delete id="deleteWechatArticleDetail">
+        DELETE FROM wechat_article_detail WHERE cm_wxarticledtlID = #{id}
+    </delete>
 </mapper>