Переглянути джерело

update home post image url and link

fengchang 1 рік тому
батько
коміт
5c5fd4e649

+ 20 - 0
hichina-admin-backend/src/main/java/com/hichina/admin/hichinaadminbackend/controller/PageContentAdminController.java

@@ -1,11 +1,14 @@
 package com.hichina.admin.hichinaadminbackend.controller;
 
 import com.hichina.admin.hichinaadminbackend.model.DTO.HichinaResponse;
+import com.hichina.admin.hichinaadminbackend.model.DTO.HomePostImageRequest;
 import com.hichina.admin.hichinaadminbackend.model.mongo.BlogSlideImage;
 import com.hichina.admin.hichinaadminbackend.model.mongo.GuidebookIntroSlideImage;
+import com.hichina.admin.hichinaadminbackend.model.mongo.HomePostImage;
 import com.hichina.admin.hichinaadminbackend.model.mongo.HomeSlideImage;
 import com.hichina.admin.hichinaadminbackend.repository.BlogSlideImageRepository;
 import com.hichina.admin.hichinaadminbackend.repository.GuidebookIntroSlideImageRepository;
+import com.hichina.admin.hichinaadminbackend.repository.HomePostImageRepository;
 import com.hichina.admin.hichinaadminbackend.repository.HomeSlideImageRepository;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
@@ -24,6 +27,23 @@ public class PageContentAdminController {
     @Autowired
     private BlogSlideImageRepository blogSlideImageRepository;
 
+    @Autowired
+    private HomePostImageRepository homePostImageRepository;
+
+    @PostMapping("/homepostimage")
+    public HichinaResponse setHomePostImage(@RequestBody HomePostImageRequest request){
+        HichinaResponse ret = new HichinaResponse();
+        homePostImageRepository.deleteAll();
+        HomePostImage homePostImage = new HomePostImage();
+        homePostImage.setPostImageUrl(request.getPostImageUrl());
+        homePostImage.setPostLink(request.getPostLink());
+        homePostImageRepository.insert(homePostImage);
+        ret.setOk(true);
+        ret.setMessage("Succeed update home post Image");
+
+        return ret;
+    }
+
     @PostMapping("/guidebookintrosliders")
     public HichinaResponse setGuidebookIntroSliders(@RequestBody List<GuidebookIntroSlideImage> sliders){
         guidebookIntroSlideImageRepository.deleteAll();

+ 11 - 0
hichina-admin-backend/src/main/java/com/hichina/admin/hichinaadminbackend/model/DTO/HomePostImageRequest.java

@@ -0,0 +1,11 @@
+package com.hichina.admin.hichinaadminbackend.model.DTO;
+
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Data
+@NoArgsConstructor
+public class HomePostImageRequest {
+    private String postLink;
+    private String postImageUrl;
+}

+ 15 - 0
hichina-admin-backend/src/main/java/com/hichina/admin/hichinaadminbackend/model/mongo/HomePostImage.java

@@ -0,0 +1,15 @@
+package com.hichina.admin.hichinaadminbackend.model.mongo;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import org.springframework.data.mongodb.core.mapping.Document;
+
+@Document("HomePostImage")
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+public class HomePostImage {
+    private String postLink;
+    private String postImageUrl;
+}

+ 7 - 0
hichina-admin-backend/src/main/java/com/hichina/admin/hichinaadminbackend/repository/HomePostImageRepository.java

@@ -0,0 +1,7 @@
+package com.hichina.admin.hichinaadminbackend.repository;
+
+import com.hichina.admin.hichinaadminbackend.model.mongo.HomePostImage;
+import org.springframework.data.mongodb.repository.MongoRepository;
+
+public interface HomePostImageRepository extends MongoRepository<HomePostImage, String> {
+}

+ 8 - 0
hichina-admin-front/src/layouts/MainLayout.vue

@@ -166,6 +166,14 @@
               <q-item-label>攻略页轮播图</q-item-label>
             </q-item-section>
           </q-item>
+          <q-item clickable target="_blank" @click="goPage('/home-post')">
+            <q-item-section avatar>
+              <q-icon :name="'image'" />
+            </q-item-section>
+            <q-item-section>
+              <q-item-label>首页海报位</q-item-label>
+            </q-item-section>
+          </q-item>
           <q-item clickable target="_blank" @click="goPage('/bloghome')">
             <q-item-section avatar>
               <q-icon :name="'image'" />

+ 79 - 0
hichina-admin-front/src/pages/HomePostPage.vue

@@ -0,0 +1,79 @@
+<template>
+  <q-page padding>
+    <q-btn
+      color="primary"
+      style="margin-left: 40px"
+      label="提交"
+      @click="submitPost"
+    ></q-btn>
+    <div
+      class="row justify-left"
+      style="margin-top: 50px; border-style: dotted"
+    >
+      <q-input
+        label="海报图url"
+        v-model="postImageUrl"
+        class="col-12"
+        placeholder="例:http://photoprism.hichinatravel.com/api/v1/t/a33b041a545ac346c67627708086dcca7e33c94f/3exfuda9/fit_2048"
+      ></q-input>
+
+      <q-input class="col-12" label="指向链接" v-model="postLink"></q-input>
+      <label>图片预览:</label>
+      <img style="height: 220px; width: 780px" :src="postImageUrl" />
+    </div>
+  </q-page>
+</template>
+
+<script>
+import { api } from "boot/axios";
+import { useQuasar } from "quasar";
+export default {
+  name: "HomePostPage",
+  setup() {
+    const $q = useQuasar();
+
+    return {
+      onRowClick: (row) => alert(`${row.name} clicked`),
+      showNotifyMessageFail(msg) {
+        $q.notify({
+          message: msg,
+          color: "red",
+          position: "top-right",
+        });
+      },
+      showNotifyMessageSucceed(msg) {
+        $q.notify({
+          message: msg,
+          color: "green",
+          position: "top-right",
+        });
+      },
+    };
+  },
+  methods: {
+    submitPost() {
+      var params = {};
+      params.postImageUrl = this.postImageUrl;
+      params.postLink = this.postLink;
+      api
+        .post("/api/v1/pagecontent/homepostimage", params)
+        .then((response) => {
+          if (response.data.ok === true) {
+            this.showNotifyMessageSucceed(response.data.message);
+          } else {
+            this.showNotifyMessageFail(response.data.message);
+          }
+        })
+        .catch((e) => {
+          this.showNotifyMessageFail(e.toString());
+        });
+    },
+  },
+  data() {
+    return {
+      postImageUrl: "",
+      postLink: "",
+    };
+  },
+};
+</script>

+ 10 - 0
hichina-admin-front/src/router/routes.js

@@ -90,6 +90,16 @@ const routes = [
       },
     ],
   },
+  {
+    path: "/home-post",
+    component: () => import("layouts/MainLayout.vue"),
+    children: [
+      {
+        path: "",
+        component: () => import("pages/HomePostPage.vue"),
+      },
+    ],
+  },
   {
     path: "/guidebook-intro",
     component: () => import("layouts/MainLayout.vue"),

+ 23 - 0
hichina-main-back/src/main/java/com/hichina/main/back/hichinamainback/controller/PageContentAdminController.java

@@ -5,9 +5,11 @@ import com.hichina.main.back.hichinamainback.config.EnableHichinaAutoLog;
 import com.hichina.main.back.hichinamainback.model.DTO.HichinaResponse;
 import com.hichina.main.back.hichinamainback.model.mongo.BlogSlideImage;
 import com.hichina.main.back.hichinamainback.model.mongo.GuidebookIntroSlideImage;
+import com.hichina.main.back.hichinamainback.model.mongo.HomePostImage;
 import com.hichina.main.back.hichinamainback.repository.BlogSlideImageRepository;
 import com.hichina.main.back.hichinamainback.repository.GuidebookIntroSlideImageRepository;
 import com.hichina.main.back.hichinamainback.model.mongo.HomeSlideImage;
+import com.hichina.main.back.hichinamainback.repository.HomePostImageRepository;
 import com.hichina.main.back.hichinamainback.repository.HomeSlideImageRepository;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
@@ -26,6 +28,27 @@ public class PageContentAdminController {
     @Autowired
     private BlogSlideImageRepository blogSlideImageRepository;
 
+    @Autowired
+    private HomePostImageRepository homePostImageRepository;
+
+    @GetMapping("/homepost")
+    @EnableHichinaAutoLog(description = "Get home post")
+    public HichinaResponse getHomePost(){
+        HichinaResponse ret = new HichinaResponse();
+        List<HomePostImage> postImages = homePostImageRepository.findAll();
+        if(postImages.isEmpty()){
+            ret.setOk(false);
+            ret.setMessage("Cannot get home post");
+            return ret;
+        }else{
+            HomePostImage data = postImages.get(0);
+            ret.setData(data);
+            ret.setOk(true);
+            ret.setMessage("Succeed getting home post");
+            return ret;
+        }
+    }
+
     @GetMapping("/homesliders")
     @EnableHichinaAutoLog(description = "Get home slider")
     public HichinaResponse getAllHomeSliders(){

+ 15 - 0
hichina-main-back/src/main/java/com/hichina/main/back/hichinamainback/model/mongo/HomePostImage.java

@@ -0,0 +1,15 @@
+package com.hichina.main.back.hichinamainback.model.mongo;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import org.springframework.data.mongodb.core.mapping.Document;
+
+@Document("HomePostImage")
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+public class HomePostImage {
+    private String postLink;
+    private String postImageUrl;
+}

+ 7 - 0
hichina-main-back/src/main/java/com/hichina/main/back/hichinamainback/repository/HomePostImageRepository.java

@@ -0,0 +1,7 @@
+package com.hichina.main.back.hichinamainback.repository;
+
+import com.hichina.main.back.hichinamainback.model.mongo.HomePostImage;
+import org.springframework.data.mongodb.repository.MongoRepository;
+
+public interface HomePostImageRepository extends MongoRepository<HomePostImage, String> {
+}

+ 0 - 2
hichina-main-front/src/views/blog/index.vue

@@ -92,8 +92,6 @@
     params.query="";
     params.page = currentPage.value;
     AXIOS.get("/api/public/blog/list", {params: params}).then(function (response) {
-      console.log("blog list:")
-      console.log(response.data)
       bloglist.value = response.data.data.data
       totalBlogCount.value = response.data.data.total;
 

+ 17 - 3
hichina-main-front/src/views/home/index.vue

@@ -47,7 +47,7 @@
         <p class="info">What's New this Week?</p>
       </div>
 
-      <v-lazy-image src="https://photoprism.hichinatravel.com/api/v1/t/d76cacc7070ef1b96516c5f82cbb6f277df9fc4e/32mcf2k4/fit_2048" alt="" />
+      <v-lazy-image style="cursor: pointer;" @click="goToBlog(homePostLink)" :src="homePostImageUrl" alt="" />
     </div>
 
     <div class="item-title pd-20 flex-between mt-36">
@@ -106,6 +106,9 @@
   const globalUnifiedItemList = ref([])
   const unifiedItemList = ref([])
 
+  const homePostLink = ref("")
+  const homePostImageUrl = ref("")
+
   function loadMore(){
     currentPage.value+=1
     var maxPage = totalBlogCount.value/blogPageSizePage.value
@@ -132,8 +135,6 @@
     console.log("loading page: "+currentPage.value)
     params.page = currentPage.value;
     AXIOS.get("/api/public/blog/list", {params: params}).then(function (response) {
-      console.log("blog list:")
-      console.log(response.data)
       if(totalBlogCount.value==-1){
         totalBlogCount.value = response.data.data.total
       }
@@ -212,6 +213,17 @@
     })
   }
 
+  function loadHomePost(){
+    AXIOS.get('/api/public/pagecontent/homepost').then(response=>{
+      console.log("loaded home post: ")
+       console.log(response.data.data)
+       homePostLink.value = response.data.data.postLink;
+       homePostImageUrl.value = response.data.data.postImageUrl;
+    }).catch(e=>{
+      console.log(e)
+    })
+  }
+
   function loadRand6Destinations(){
     AXIOS.get('/api/public/destination/rand6').then(response=>{
       randDestinations.value = response.data.data
@@ -224,6 +236,8 @@
     // load slider
     loadHomeSliders()
 
+    loadHomePost()
+
     // load destination
     loadRand6Destinations()
   })