Parcourir la source

用户白名单筛选

licailing il y a 4 ans
Parent
commit
bc8743ef5d

+ 9 - 0
src/main/java/com/izouma/nineth/service/UserService.java

@@ -108,6 +108,15 @@ public class UserService {
                 String roleName = (String) pageQuery.getQuery().get("hasRole");
                 and.add(criteriaBuilder.isMember(Authority.get(AuthorityName.valueOf(roleName)), root.get("authorities")));
             }
+
+            if (pageQuery.getQuery().containsKey("vip")) {
+                boolean vip = (boolean) pageQuery.getQuery().get("vip");
+                if (vip) {
+                    and.add(criteriaBuilder.greaterThan(root.get("vipPurchase"), 0));
+                } else {
+                    and.add(criteriaBuilder.lessThanOrEqualTo(root.get("vipPurchase"), 0));
+                }
+            }
             return criteriaBuilder.and(and.toArray(new Predicate[0]));
         });
         return userRepo.findAll(specification, JpaUtils.toPageRequest(pageQuery));

+ 13 - 3
src/main/vue/src/views/UserList.vue

@@ -10,6 +10,10 @@
         </page-title>
         <div class="filters-container" @keyup.enter="getData">
             <created-at-picker v-model="createdAt" @input="getData" name="注册" class="filter-item"></created-at-picker>
+            <el-select placeholder="白名单筛选" v-model="vip" clearable filterable @change="getData">
+                <el-option label="白名单用户" :value="true"></el-option>
+                <el-option label="普通用户" :value="false"></el-option>
+            </el-select>
             <el-input placeholder="搜索..." v-model="search" clearable class="filter-item search">
                 <el-button @click="getData" slot="append" icon="el-icon-search"> </el-button>
             </el-input>
@@ -84,7 +88,8 @@ export default {
             search: '',
             url: '/user/all',
             downloading: false,
-            createdAt: ''
+            createdAt: '',
+            vip: ''
         };
     },
     computed: {
@@ -95,7 +100,12 @@ export default {
     },
     methods: {
         beforeGetData() {
-            return { search: this.search, query: { createdAt: this.createdAt } };
+            // return { search: this.search, query: { createdAt: this.createdAt, vip: this.vip } };
+            let data = { query: {} };
+            if (this.search) data.search = this.search;
+            if (this.createdAt) data.query.createdAt = this.createdAt;
+            if (this.vip !== '') data.query.vip = this.vip;
+            return data;
         },
         afterGetData(res) {
             // let i = this.tableData.findIndex(i => i.username === 'root');
@@ -173,7 +183,7 @@ export default {
                     .then(res => {
                         let el = document.createElement('div');
                         new ClipboardJS(el, {
-                            text: function(trigger) {
+                            text: function (trigger) {
                                 return res;
                             }
                         });