فهرست منبع

筛选名单列表

ouyang 3 سال پیش
والد
کامیت
1b36413821

+ 22 - 0
src/main/java/com/izouma/nineth/dto/SubscribeDto.java

@@ -0,0 +1,22 @@
+package com.izouma.nineth.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Data
+@Builder
+@AllArgsConstructor
+@NoArgsConstructor
+public class SubscribeDto {
+
+    private Long userId;
+
+    private String nickname;
+
+    private String phone;
+
+    private Long collectionId;
+}

+ 4 - 3
src/main/java/com/izouma/nineth/repo/SubscribeRepo.java

@@ -2,6 +2,7 @@ package com.izouma.nineth.repo;
 
 
 import com.izouma.nineth.domain.Subscribe;
+import com.izouma.nineth.dto.SubscribeDto;
 import org.springframework.data.jpa.repository.JpaRepository;
 import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
 import org.springframework.data.jpa.repository.Modifying;
@@ -17,13 +18,13 @@ public interface SubscribeRepo extends JpaRepository<Subscribe, Long>, JpaSpecif
     @Transactional
     void softDelete(Long id);
 
-//    @Query("select s.id, s.collectionId, s.userId, s.purchaseQualifications from Subscribe s where s.collectionId =?1")
     List<Subscribe> findAllByCollectionId(Long collectionId);
 
-//    @Query("select s.id, s.collectionId, s.userId, s.purchaseQualifications from Subscribe s where s.collectionId =?1 and s.userId = ?2")
     Subscribe findFirstByCollectionIdAndUserId(Long collectionId , Long userId);
 
-    Subscribe findAllByCollectionIdAndUserId(Long collectionId , Long userId);
+    @Query(value = "select new com.izouma.nineth.dto.SubscribeDto(s.userId,u.nickname,u.phone,s.collectionId) from Subscribe s left join User u on s.userId = u.id " +
+                    "where s.collectionId = ?1")
+    List<SubscribeDto> subscribeUser(Long collectionId);
 
 
     @Transactional

+ 10 - 0
src/main/java/com/izouma/nineth/service/SubscribeService.java

@@ -4,15 +4,21 @@ import cn.hutool.core.date.DateTime;
 import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.util.ObjectUtil;
 import com.izouma.nineth.domain.Collection;
+import com.izouma.nineth.domain.Invite;
 import com.izouma.nineth.domain.Subscribe;
+import com.izouma.nineth.dto.PageQuery;
+import com.izouma.nineth.dto.SubscribeDto;
 import com.izouma.nineth.exception.BusinessException;
 import com.izouma.nineth.repo.CollectionRepo;
 import com.izouma.nineth.repo.SubscribeRepo;
+import com.izouma.nineth.utils.JpaUtils;
 import lombok.AllArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
+import org.springframework.data.domain.Page;
 import org.springframework.stereotype.Service;
 
 import java.time.LocalDateTime;
+import java.util.List;
 
 
 @Service
@@ -39,4 +45,8 @@ public class SubscribeService {
         }
         subscribeRepo.save(record);
     }
+/*
+    public List<SubscribeDto> qualificationsFilterNameList(PageQuery pageQuery) {
+        List<SubscribeDto> subscribeDtoList = subscribeRepo.subscribeUser(Long.valueOf(pageQuery.getQuery().get("collectionId").toString()));
+    }*/
 }

+ 8 - 6
src/main/java/com/izouma/nineth/web/SubscribeController.java

@@ -2,6 +2,7 @@ package com.izouma.nineth.web;
 
 import com.izouma.nineth.domain.Collection;
 import com.izouma.nineth.domain.Subscribe;
+import com.izouma.nineth.dto.SubscribeDto;
 import com.izouma.nineth.repo.CollectionRepo;
 import com.izouma.nineth.repo.SubscribeRepo;
 import com.izouma.nineth.service.CollectionService;
@@ -10,6 +11,8 @@ import lombok.AllArgsConstructor;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.web.bind.annotation.*;
 
+import java.util.List;
+
 @RestController
 @RequestMapping("/subscribe")
 @AllArgsConstructor
@@ -20,18 +23,17 @@ public class SubscribeController {
     private SubscribeRepo subscribeRepo;
 
 
-    @PostMapping("/makeAnAppointment2")
-    public void makeAnAppointment2(@RequestBody Subscribe record) {
-        subscribeService.create(record);
-    }
-
     @GetMapping("/makeAnAppointment")
-    public void makeAnAppointment(Long collectionId,Long userId) {
+    public void makeAnAppointment(Long collectionId, Long userId) {
         Subscribe subscribe = new Subscribe();
         subscribe.setCollectionId(collectionId);
         subscribe.setUserId(userId);
         subscribeService.create(subscribe);
     }
 
+    @GetMapping("/qualificationsFilterNameList/{id}")
+    public List<SubscribeDto>  qualificationsFilterNameList(@PathVariable Long id){
+       return subscribeRepo.subscribeUser(id);
+    }
 
 }

+ 9 - 1
src/main/vue/src/router.js

@@ -147,6 +147,14 @@ const router = new Router({
                         title: '藏品管理编辑'
                     }
                 },
+                {
+                    path: '/SubscribeList',
+                    name: 'SubscribeList',
+                    component: () => import(/* webpackChunkName: "collectionEdit" */ '@/views/SubscribeList.vue'),
+                    meta: {
+                        title: '资格筛选查看'
+                    }
+                },
                 {
                     path: '/collectionList',
                     name: 'CollectionList',
@@ -619,4 +627,4 @@ router.beforeEach((to, from, next) => {
     }
 });
 
-export default router;
+export default router;

+ 10 - 2
src/main/vue/src/views/CollectionList.vue

@@ -100,10 +100,10 @@
                     <sortable-header :column="column" :current-sort="sort" @changeSort="changeSort"> </sortable-header>
                 </template>
             </el-table-column>
-            <el-table-column label="操作" align="center" fixed="right" width="150">
+            <el-table-column label="操作" align="center" fixed="right" width="250">
                 <template slot-scope="{ row }">
                     <el-button @click="editRow(row)" type="primary" size="mini" plain>查看</el-button>
-                    <!-- <el-button @click="deleteRow(row)" type="danger" size="mini" plain>删除</el-button> -->
+                     <el-button @click="getRow(row)" type="primary" size="mini" plain>查看筛选名单</el-button>
                 </template>
             </el-table-column>
         </el-table>
@@ -210,6 +210,14 @@ export default {
                 }
             });
         },
+        getRow(row) {
+            this.$router.push({
+                path: '/SubscribeList',
+                query: {
+                    id: row.id
+                }
+            });
+        },
         download() {
             this.downloading = true;
             this.$axios

+ 112 - 0
src/main/vue/src/views/SubscribeList.vue

@@ -0,0 +1,112 @@
+<template>
+    <div class="edit-view">
+<!--                <page-title>
+                    <el-button
+                        @click="download"
+                        icon="el-icon-upload2"
+                        :loading="downloading"
+                        :disabled="fetchingData"
+                        class="filter-item"
+                    >
+                        导出
+                    </el-button>
+                </page-title>
+                <div class="filters-container">
+                    <el-input
+                        placeholder="搜索..."
+                        v-model="search"
+                        clearable
+                        class="filter-item search"
+                        @keyup.enter.native="getData"
+                    >
+                        <el-button @click="getData" slot="append" icon="el-icon-search"></el-button>
+                    </el-input>
+                </div>-->
+
+        <el-table
+            :data="formData"
+            style="width: 100%">
+            <el-table-column prop="userId" label="用户ID"></el-table-column>
+            <el-table-column prop="nickname" label="姓名"></el-table-column>
+            <el-table-column prop="phone" label="手机"></el-table-column>
+        </el-table>
+    </div>
+</template>
+<script>
+import {mapState} from 'vuex';
+import pageableTable from '@/mixins/pageableTable';
+import VueQrcode from '@chenfengyuan/vue-qrcode';
+
+export default {
+    name: 'SubscribeList',
+    created() {
+        if (this.$route.query.id) {
+            this.$http
+                .get('subscribe/qualificationsFilterNameList/' + this.$route.query.id)
+                .then(res => {
+                    this.formData = res;
+                })
+                .catch(e => {
+                    console.log(e);
+                    this.$message.error(e.error);
+                });
+        }
+    },
+    data() {
+        return {
+            // multipleMode: false,
+            // search: '',
+            // downloading: false,
+            // showDialog: false,
+            formData: [],
+            /*            rules: {
+                            userId: "",
+                            nickname: "",
+                            phone: "",
+                        }*/
+        };
+    },
+    computed: {
+        /*        selection() {
+                    return this.$refs.table.selection.map(i => i.id);
+                }*/
+    },
+    methods: {
+        /*        beforeGetData() {
+                    return {search: this.search, query: {del: false}};
+                },*/
+        /*        toggleMultipleMode(multipleMode) {
+                    this.multipleMode = multipleMode;
+                    if (!multipleMode) {
+                        this.$refs.table.clearSelection();
+                    }
+                },*/
+        /*        download() {
+                    this.downloading = true;
+                    this.$axios
+                        .get('/invite/excel', {
+                            responseType: 'blob',
+                            params: {size: 10000}
+                        })
+                        .then(res => {
+                            console.log(res);
+                            this.downloading = false;
+                            const downloadUrl = window.URL.createObjectURL(new Blob([res.data]));
+                            const link = document.createElement('a');
+                            link.href = downloadUrl;
+                            link.setAttribute('download', res.headers['content-disposition'].split('filename=')[1]);
+                            document.body.appendChild(link);
+                            link.click();
+                            link.remove();
+                        })
+                        .catch(e => {
+                            console.log(e);
+                            this.downloading = false;
+                            this.$message.error(e.error);
+                        });
+                },*/
+    }
+};
+</script>
+<style lang="less" scoped>
+</style>