licailing %!s(int64=4) %!d(string=hai) anos
pai
achega
00459228aa

+ 2 - 0
src/main/java/com/izouma/nineth/domain/AirDrop.java

@@ -49,4 +49,6 @@ public class AirDrop extends BaseEntity {
 
     @Column(columnDefinition = "TEXT")
     private String result;
+
+    private int projectId;
 }

+ 1 - 0
src/main/java/com/izouma/nineth/domain/Coupon.java

@@ -40,4 +40,5 @@ public class Coupon extends BaseEntity {
 
     private LocalDateTime expiration;
 
+    private int projectId;
 }

+ 2 - 0
src/main/java/com/izouma/nineth/domain/User.java

@@ -122,4 +122,6 @@ public class User extends BaseEntity implements Serializable {
     private String invitorPhone;
 
     private String inviteCode;
+
+    private int minterProjectId;
 }

+ 4 - 0
src/main/java/com/izouma/nineth/dto/UserRegister.java

@@ -42,4 +42,8 @@ public class UserRegister {
     private String invitorPhone;
 
     private String inviteCode;
+
+    private int minterProjectId;
+
+    private String intro;
 }

+ 1 - 0
src/main/vue/src/components/CreatedAtPicker.vue

@@ -9,6 +9,7 @@
         align="right"
         value-format="yyyy-MM-dd HH:mm:ss"
         :default-time="['00:00:00', '23:59:59']"
+        class="filter-item"
         @change="changeSelect"
     >
     </el-date-picker>

+ 33 - 13
src/main/vue/src/components/MinterFilter.vue

@@ -9,15 +9,10 @@
         :loading="searchingMinter"
         @change="changeSelect"
         :disabled="disabled"
+        class="filter-item"
         clearable
     >
-        <el-option
-            v-for="item in minters"
-            :key="item.id"
-            :label="item.nickname"
-            :value="item.id"
-            class="minter-item"
-        >
+        <el-option v-for="item in minters" :key="item.id" :label="item.nickname" :value="item.id" class="minter-item">
             <el-image :src="item.avatar" fit="cover" class="avatar"></el-image>
             <div class="content">
                 <div class="name">{{ item.nickname }}</div>
@@ -34,26 +29,34 @@ export default {
             default() {
                 return false;
             }
-        }
+        },
+        projectId: {}
     },
     data() {
         return {
             minters: [],
             minterId: null,
             searchingMinter: false,
-            selected: null
+            selected: null,
+            id: 0
         };
     },
     created() {
-        this.$http.post('/user/all', { size: 30, query: { hasRole: 'ROLE_MINTER' } }, { body: 'json' }).then(res => {
-            this.minters = res.content;
-        });
+        this.getData();
     },
     methods: {
         searchMinter(query) {
             this.searchingMinter = true;
             this.$http
-                .post('/user/all', { search: query, size: 30, query: { hasRole: 'ROLE_MINTER' } }, { body: 'json' })
+                .post(
+                    '/user/all',
+                    {
+                        search: query,
+                        size: 30,
+                        query: { hasRole: 'ROLE_MINTER', minterProjectId: this.id }
+                    },
+                    { body: 'json' }
+                )
                 .then(res => {
                     this.minters = res.content;
                     this.searchingMinter = false;
@@ -61,6 +64,17 @@ export default {
         },
         changeSelect(val) {
             this.$emit('input', val);
+        },
+        getData() {
+            this.$http
+                .post(
+                    '/user/all',
+                    { size: 30, query: { hasRole: 'ROLE_MINTER', minterProjectId: this.id } },
+                    { body: 'json' }
+                )
+                .then(res => {
+                    this.minters = res.content;
+                });
         }
     },
     watch: {
@@ -68,6 +82,12 @@ export default {
             if (this.minterId !== val) {
                 this.minterId = val;
             }
+        },
+        projectId(val) {
+            if (this.id !== val) {
+                this.id = val;
+                this.getData();
+            }
         }
     }
 };

+ 32 - 5
src/main/vue/src/components/MinterSelect.vue

@@ -33,6 +33,9 @@ export default {
             default() {
                 return false;
             }
+        },
+        projectId: {
+            default: 0
         }
     },
     data() {
@@ -40,13 +43,12 @@ export default {
             minters: [],
             minterId: null,
             searchingMinter: false,
-            selected: null
+            selected: null,
+            id: 0
         };
     },
     created() {
-        this.$http.post('/user/all', { size: 30, query: { hasRole: 'ROLE_MINTER' } }, { body: 'json' }).then(res => {
-            this.minters = res.content;
-        });
+        this.getData();
         if (this.value) {
             this.$http.get(`/user/get/${this.value}`).then(res => {
                 this.selected = res;
@@ -66,7 +68,15 @@ export default {
         searchMinter(query) {
             this.searchingMinter = true;
             this.$http
-                .post('/user/all', { search: query, size: 30, query: { hasRole: 'ROLE_MINTER' } }, { body: 'json' })
+                .post(
+                    '/user/all',
+                    {
+                        search: query,
+                        size: 30,
+                        query: { hasRole: 'ROLE_MINTER', minterProjectId: this.projectId }
+                    },
+                    { body: 'json' }
+                )
                 .then(res => {
                     this.minters = res.content;
                     this.searchingMinter = false;
@@ -78,6 +88,17 @@ export default {
                     this.selected = res;
                 });
             }
+        },
+        getData() {
+            this.$http
+                .post(
+                    '/user/all',
+                    { size: 30, query: { hasRole: 'ROLE_MINTER', minterProjectId: this.id } },
+                    { body: 'json' }
+                )
+                .then(res => {
+                    this.minters = res.content;
+                });
         }
     },
     watch: {
@@ -96,6 +117,12 @@ export default {
         },
         selected(val) {
             this.$emit('detail', val);
+        },
+        projectId(val) {
+            if (this.id !== val) {
+                this.id = val;
+                this.getData();
+            }
         }
     }
 };

+ 1 - 1
src/main/vue/src/views/ActivityList.vue

@@ -21,7 +21,7 @@
             </el-button>
         </page-title>
         <div class="filters-container">
-            <created-at-picker v-model="createdAt" @input="getData" name="创建" style="margin-right:10px"></created-at-picker>
+            <created-at-picker v-model="createdAt" @input="getData" name="创建"></created-at-picker>
             <el-input
                 placeholder="搜索..."
                 v-model="search"

+ 9 - 0
src/main/vue/src/views/AirDropEdit.vue

@@ -16,6 +16,13 @@
                     size="small"
                     style="max-width: 500px"
                 >
+                    <el-form-item label="项目" prop="projectId">
+                        <el-select v-model="formData.projectId">
+                            <el-option :value="0" label="第九空间"></el-option>
+                            <el-option :value="1" label="cosmos art"></el-option>
+                            <el-option :value="2" label="modern point"></el-option>
+                        </el-select>
+                    </el-form-item>
                     <el-form-item prop="name" label="空投名称">
                         <el-input v-model="formData.name"></el-input>
                     </el-form-item>
@@ -117,9 +124,11 @@ export default {
         return {
             saving: false,
             formData: {
+                projectId: this.$store.state.projectId,
                 couponLimited: false
             },
             rules: {
+                projectId: [{ required: true, message: '请选择项目' }],
                 name: [
                     {
                         required: true,

+ 1 - 1
src/main/vue/src/views/AirDropList.vue

@@ -15,7 +15,7 @@
             </el-button> -->
         </page-title>
         <div class="filters-container">
-            <created-at-picker v-model="createdAt" name="创建" @input="getData" style="margin-right: 10px"></created-at-picker>
+            <created-at-picker v-model="createdAt" name="创建" @input="getData"></created-at-picker>
             <el-input
                 placeholder="搜索..."
                 v-model="search"

+ 2 - 0
src/main/vue/src/views/BlindBoxEdit.vue

@@ -40,6 +40,7 @@
                             v-model="formData.minterId"
                             @detail="onMinterDetail"
                             :disabled="!canEdit"
+                            :projectId="formData.projectId"
                         ></minter-select>
                     </el-form-item>
                     <el-form-item prop="category" label="分类">
@@ -277,6 +278,7 @@ export default {
         return {
             saving: false,
             formData: {
+                projectId: this.$store.state.projectId,
                 onShelf: true,
                 salable: true,
                 properties: [],

+ 1 - 1
src/main/vue/src/views/BlindBoxList.vue

@@ -21,7 +21,7 @@
             </el-button> -->
         </page-title>
         <div class="filters-container">
-            <minter-filter v-model="minterId" @input="getData"></minter-filter>
+            <minter-filter v-model="minterId" @input="getData" :projectId="$store.state.projectId"></minter-filter>
             <el-input
                 placeholder="搜索..."
                 v-model="search"

+ 2 - 0
src/main/vue/src/views/CollectionEdit.vue

@@ -52,6 +52,7 @@
                             v-model="formData.minterId"
                             @detail="onMinterDetail"
                             :disabled="!canEdit"
+                            :projectId="formData.projectId"
                         ></minter-select>
                     </el-form-item>
                     <el-form-item prop="category" label="分类">
@@ -273,6 +274,7 @@ export default {
         return {
             saving: false,
             formData: {
+                projectId: this.$store.state.projectId,
                 onShelf: true,
                 salable: true,
                 properties: [],

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

@@ -21,8 +21,8 @@
             </el-button> -->
         </page-title>
         <div class="filters-container">
-            <created-at-picker v-model="createdAt" @input="getData" name="创建" style="margin-right:10px"></created-at-picker>
-            <minter-filter v-model="minterId" @input="getData"></minter-filter>
+            <created-at-picker v-model="createdAt" @input="getData" name="创建"></created-at-picker>
+            <minter-filter v-model="minterId" @input="getData" :projectId="$store.state.projectId"></minter-filter>
             <el-input
                 placeholder="搜索..."
                 v-model="search"

+ 10 - 1
src/main/vue/src/views/CouponEdit.vue

@@ -16,6 +16,13 @@
                     size="small"
                     style="max-width: 500px"
                 >
+                    <el-form-item label="项目" prop="projectId">
+                        <el-select v-model="formData.projectId">
+                            <el-option :value="0" label="第九空间"></el-option>
+                            <el-option :value="1" label="cosmos art"></el-option>
+                            <el-option :value="2" label="modern point"></el-option>
+                        </el-select>
+                    </el-form-item>
                     <el-form-item prop="name" label="名称">
                         <el-input v-model="formData.name"></el-input>
                     </el-form-item>
@@ -95,6 +102,7 @@ export default {
         return {
             saving: false,
             formData: {
+                projectId: this.$store.state.projectId,
                 limited: true,
                 needGas: true
             },
@@ -138,7 +146,8 @@ export default {
                         },
                         trigger: 'blur'
                     }
-                ]
+                ],
+                projectId: [{ required: true, message: '请选择项目' }]
             },
             collections: [],
             showCollectionDialog: false,

+ 1 - 1
src/main/vue/src/views/CouponList.vue

@@ -21,7 +21,7 @@
             </el-button> -->
         </page-title>
         <div class="filters-container">
-            <created-at-picker v-model="expiration" @input="getData" name="到期" style="margin-right: 10px"></created-at-picker>
+            <created-at-picker v-model="expiration" @input="getData" name="到期"></created-at-picker>
             <el-input
                 placeholder="搜索..."
                 v-model="search"

+ 10 - 1
src/main/vue/src/views/MinterEdit.vue

@@ -21,6 +21,13 @@
                     label-position="right"
                     style="max-width: 500px"
                 >
+                    <el-form-item label="项目" prop="minterProjectId">
+                        <el-select v-model="formData.minterProjectId">
+                            <el-option :value="0" label="第九空间"></el-option>
+                            <el-option :value="1" label="cosmos art"></el-option>
+                            <el-option :value="2" label="modern point"></el-option>
+                        </el-select>
+                    </el-form-item>
                     <el-form-item prop="avatar" label="头像">
                         <crop-upload v-model="formData.avatar"></crop-upload>
                     </el-form-item>
@@ -109,6 +116,7 @@ export default {
         return {
             saving: false,
             formData: {
+                minterProjectId: this.$store.state.projectId,
                 username:
                     '9th_' +
                     randomstring.generate({
@@ -139,7 +147,8 @@ export default {
                     }
                 ],
                 authorities: [{ required: true, message: '请选择角色', trigger: 'blur' }],
-                intro: [{ required: true, message: '请输入简介', trigger: 'blur' }]
+                intro: [{ required: true, message: '请输入简介', trigger: 'blur' }],
+                minterProjectId: [{ required: true, message: '请选择项目' }]
             },
             authorities: [
                 { name: 'ROLE_MINTER', description: '铸造者' },

+ 1 - 1
src/main/vue/src/views/MinterList.vue

@@ -81,7 +81,7 @@ export default {
     },
     methods: {
         beforeGetData() {
-            return { search: this.search, query: { hasRole: 'ROLE_MINTER' } };
+            return { search: this.search, query: { hasRole: 'ROLE_MINTER', minterProjectId: this.$store.state.projectId} };
         },
         toggleMultipleMode(multipleMode) {
             this.multipleMode = multipleMode;

+ 1 - 1
src/main/vue/src/views/OrderList.vue

@@ -29,7 +29,7 @@
                     :label="item.label"
                 ></el-option>
             </el-select>
-            <created-at-picker v-model="createdAt" @input="getData" name="下单" style="margin-right:10px"></created-at-picker>
+            <created-at-picker v-model="createdAt" @input="getData" name="下单"></created-at-picker>
             <el-input
                 placeholder="搜索..."
                 v-model="search"

+ 1 - 1
src/main/vue/src/views/UserList.vue

@@ -9,7 +9,7 @@
             </el-button>
         </page-title>
         <div class="filters-container">
-            <created-at-picker v-model="createdAt" @input="getData" name="注册" style="margin-right:10px"></created-at-picker>
+            <created-at-picker v-model="createdAt" @input="getData" name="注册"></created-at-picker>
             <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>