浏览代码

展厅审核

licailing 4 年之前
父节点
当前提交
77f0f0800b

+ 15 - 0
src/main/java/com/izouma/nineth/service/ShowroomService.java

@@ -6,6 +6,7 @@ import com.izouma.nineth.domain.Collection;
 import com.izouma.nineth.dto.PageQuery;
 import com.izouma.nineth.enums.AssetStatus;
 import com.izouma.nineth.enums.AuthStatus;
+import com.izouma.nineth.enums.CollectionStatus;
 import com.izouma.nineth.enums.CollectionType;
 import com.izouma.nineth.exception.BusinessException;
 import com.izouma.nineth.repo.*;
@@ -245,4 +246,18 @@ public class ShowroomService {
         return showroom;
     }
 
+    public void audit(Long id, AuthStatus status, String reason) {
+        Showroom showroom = showroomRepo.findById(id).orElseThrow(new BusinessException("无展厅"));
+        if (!"COMPANY".equals(showroom.getType())) {
+            // 非企业类型不需要审核
+            showroom.setStatus(null);
+            showroomRepo.save(showroom);
+            return;
+        }
+        showroom.setStatus(status);
+        showroom.setReason(reason);
+        showroomRepo.save(showroom);
+        cacheService.clearShowroom();
+    }
+
 }

+ 11 - 1
src/main/java/com/izouma/nineth/web/ShowroomController.java

@@ -6,6 +6,7 @@ import com.izouma.nineth.domain.ShowCollection;
 import com.izouma.nineth.domain.Showroom;
 import com.izouma.nineth.domain.User;
 import com.izouma.nineth.dto.PageQuery;
+import com.izouma.nineth.enums.AuthStatus;
 import com.izouma.nineth.exception.BusinessException;
 import com.izouma.nineth.repo.NewsLikeRepo;
 import com.izouma.nineth.repo.ShowCollectionRepo;
@@ -15,7 +16,6 @@ import com.izouma.nineth.utils.SecurityUtils;
 import com.izouma.nineth.utils.excel.ExcelUtils;
 import lombok.AllArgsConstructor;
 import org.apache.commons.lang3.ObjectUtils;
-import org.springframework.cache.annotation.Cacheable;
 import org.springframework.data.domain.Page;
 import org.springframework.web.bind.annotation.*;
 
@@ -114,5 +114,15 @@ public class ShowroomController extends BaseController {
     public void addShare(@PathVariable Long id) {
         showroomRepo.addShare(id, 1);
     }
+
+    @PostMapping("/pass")
+    public void pass(@RequestParam Long id) {
+        showroomService.audit(id, AuthStatus.SUCCESS, null);
+    }
+
+    @PostMapping("/deny")
+    public void deny(@RequestParam Long id, String reason) {
+        showroomService.audit(id, AuthStatus.FAIL, reason);
+    }
 }
 

+ 58 - 25
src/main/vue/src/views/ShowroomEdit.vue

@@ -11,41 +11,55 @@
                     :model="formData"
                     :rules="rules"
                     ref="form"
-                    label-width="130px"
+                    label-width="125px"
                     label-position="right"
                     size="small"
-                    style="max-width: 700px"
+                    style="max-width: 750px"
                 >
+                    <el-form-item prop="reason" label="拒绝理由" v-if="formData.reason">
+                        <el-input
+                            type="textarea"
+                            v-model="formData.reason"
+                            :rows="3"
+                            style="width: 500px"
+                            disabled
+                        ></el-input>
+                    </el-form-item>
+
                     <el-form-item prop="userId" label="用户ID">
-                        <el-input-number type="number" v-model="formData.userId"></el-input-number>
+                        <el-input-number
+                            type="number"
+                            v-model="formData.userId"
+                            style="width: 200px"
+                            disabled
+                        ></el-input-number>
                     </el-form-item>
                     <el-form-item prop="nickname" label="昵称">
-                        <el-input v-model="formData.nickname"></el-input>
+                        <el-input v-model="formData.nickname" style="width: 280px" disabled></el-input>
+                    </el-form-item>
+                    <el-form-item prop="maxCollection" label="最多可放藏品数量">
+                        <el-input-number
+                            type="number"
+                            v-model="formData.maxCollection"
+                            style="width: 280px"
+                            disabled
+                        ></el-input-number>
                     </el-form-item>
                     <el-form-item prop="pic" label="logo">
-                        <single-upload v-model="formData.pic"></single-upload>
+                        <single-upload v-model="formData.pic" :disabled="true"></single-upload>
                     </el-form-item>
                     <el-form-item prop="introduction" label="简介">
-                        <el-input type="textarea" v-model="formData.introduction"></el-input>
-                    </el-form-item>
-                    <!-- <el-form-item prop="likes" label="点赞">
-                        <el-input-number type="number" v-model="formData.likes"></el-input-number>
-                    </el-form-item> -->
-                    <el-form-item prop="maxCollection" label="最多可放藏品数量">
-                        <el-input-number type="number" v-model="formData.maxCollection"></el-input-number>
-                    </el-form-item>
-                    <el-form-item prop="headBg" label="头部背景">
-                        <single-upload v-model="formData.headBg"></single-upload>
+                        <el-input type="textarea" :rows="4" v-model="formData.introduction" disabled></el-input>
                     </el-form-item>
-                    <el-form-item prop="showroomBg" label="展厅背景">
-                        <single-upload v-model="formData.showroomBg"></single-upload>
+                    <el-form-item prop="headBg" label="背景">
+                        <el-image :src="formData.headBg" style="height: 170px"></el-image>
+                        <el-image :src="formData.showroomBg" style="height: 170px"></el-image>
                     </el-form-item>
-                    <el-form-item prop="publish" label="发布">
-                        <!-- <el-switch v-model="formData.publish"></el-switch> -->
+                    <!-- <el-form-item prop="publish" label="发布">
                         <el-radio v-model="formData.publish" :label="true">是</el-radio>
                         <el-radio v-model="formData.publish" :label="false">否</el-radio>
-                    </el-form-item>
-                    <el-form-item prop="status" label="状态">
+                    </el-form-item> -->
+                    <!-- <el-form-item prop="status" label="状态">
                         <el-select v-model="formData.status" clearable filterable placeholder="请选择">
                             <el-option
                                 v-for="item in statusOptions"
@@ -55,9 +69,21 @@
                             >
                             </el-option>
                         </el-select>
-                    </el-form-item>
-                    <el-form-item prop="reason" label="拒绝理由">
-                        <el-input type="textarea" v-model="formData.reason"></el-input>
+                    </el-form-item> -->
+                    <el-form-item prop="collections" label="藏品">
+                        <el-table :data="formData.collections">
+                            <el-table-column type="index" label="#"></el-table-column>
+                            <el-table-column prop="collectionId" label="ID" width="110">
+                                <template slot-scope="{ row }">
+                                    <el-link>{{ row.collectionId }}</el-link>
+                                </template>
+                            </el-table-column>
+                            <el-table-column prop="pic" label="图">
+                                <template slot-scope="{ row }">
+                                    <el-image style="width: 30px; height: 30px" :src="row.pic" fit="cover"></el-image>
+                                </template>
+                            </el-table-column>
+                        </el-table>
                     </el-form-item>
                     <el-form-item class="form-submit">
                         <el-button @click="onSave" :loading="saving" type="primary"> 保存 </el-button>
@@ -146,4 +172,11 @@ export default {
     }
 };
 </script>
-<style lang="less" scoped></style>
+<style lang="less" scoped>
+/deep/.el-input.is-disabled .el-input__inner {
+    color: #7c7e7e;
+}
+/deep/.el-textarea.is-disabled .el-textarea__inner {
+    color: #7c7e7e;
+}
+</style>

+ 59 - 7
src/main/vue/src/views/ShowroomList.vue

@@ -57,11 +57,11 @@
                 </template>
             </el-table-column>
             <el-table-column prop="introduction" label="简介"> </el-table-column>
-            <el-table-column prop="publish" label="发布">
+            <!-- <el-table-column prop="publish" label="发布">
                 <template slot-scope="{ row }">
                     <el-tag :type="row.publish ? 'success' : 'info'">{{ row.publish ? '是' : '否' }}</el-tag>
                 </template>
-            </el-table-column>
+            </el-table-column> -->
             <el-table-column prop="likes" label="点赞"> </el-table-column>
             <!-- <el-table-column prop="maxCollection" label="最多可放藏品数量"> </el-table-column> -->
             <!-- <el-table-column prop="headBg" label="头部背景">
@@ -85,11 +85,16 @@
                 </template>
             </el-table-column> -->
             <el-table-column prop="status" label="状态" :formatter="statusFormatter"> </el-table-column>
-            <!-- <el-table-column prop="reason" label="拒绝理由"> </el-table-column> -->
-            <el-table-column label="操作" align="center" fixed="right" width="150">
+            <el-table-column label="操作" align="center" fixed="right" width="210">
                 <template slot-scope="{ row }">
-                    <el-button @click="editRow(row)" type="primary" size="mini" plain>编辑</el-button>
+                    <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="pass(row)" type="success" size="mini" plain v-if="row.status === 'PENDING'">
+                        通过
+                    </el-button>
+                    <el-button @click="deny(row)" type="danger" size="mini" plain v-if="row.status === 'PENDING'">
+                        拒绝
+                    </el-button>
                 </template>
             </el-table-column>
         </el-table>
@@ -114,6 +119,18 @@
             >
             </el-pagination>
         </div>
+
+        <el-dialog :visible.sync="showReasonDialog" width="600px" title="拒绝理由">
+            <el-form ref="denyForm" :model="denyForm" label-position="right" label-width="60px" :rules="denyRules">
+                <el-form-item prop="reason" label="理由">
+                    <el-input type="textarea" :autosize="{ minRows: 3 }" v-model="denyForm.reason"></el-input>
+                </el-form-item>
+            </el-form>
+            <div slot="footer">
+                <el-button @click="showReasonDialog = false">取消</el-button>
+                <el-button type="primary" @click="saveReason">保存</el-button>
+            </div>
+        </el-dialog>
     </div>
 </template>
 <script>
@@ -134,7 +151,12 @@ export default {
                 { label: '认证中', value: 'PENDING' },
                 { label: '已认证', value: 'SUCCESS' },
                 { label: '失败', value: 'FAIL' }
-            ]
+            ],
+            showReasonDialog: false,
+            denyForm: {},
+            denyRules: {
+                reason: [{ required: true, message: '请填写理由' }]
+            }
         };
     },
     computed: {
@@ -151,7 +173,7 @@ export default {
             return '';
         },
         beforeGetData() {
-            return { search: this.search, query: { del: false } };
+            return { search: this.search, query: { del: false, type: 'COMPANY' } };
         },
         toggleMultipleMode(multipleMode) {
             this.multipleMode = multipleMode;
@@ -222,6 +244,36 @@ export default {
                         this.$message.error(e.error);
                     }
                 });
+        },
+        pass(row) {
+            this.$confirm('确定通过?')
+                .then(res => {
+                    return this.$http.post('/showroom/pass', { id: row.id });
+                })
+                .then(res => {
+                    this.$message.success('成功');
+                    this.getData();
+                })
+                .catch(e => {});
+        },
+        deny(row) {
+            this.showReasonDialog = true;
+            this.denyForm.id = row.id;
+        },
+        saveReason() {
+            this.$confirm('确定拒绝?')
+                .then(res => {
+                    return this.$http.post('/showroom/deny', {
+                        id: this.denyForm.id,
+                        reason: this.denyForm.reason
+                    });
+                })
+                .then(res => {
+                    this.$message.success('成功');
+                    this.showReasonDialog = false;
+                    this.getData();
+                })
+                .catch(e => {});
         }
     }
 };

+ 2 - 2
src/main/vue/src/views/company/CompanyRoomList.vue

@@ -38,11 +38,11 @@
                 </template>
             </el-table-column>
             <el-table-column prop="introduction" label="简介"> </el-table-column>
-            <el-table-column prop="publish" label="发布">
+            <!-- <el-table-column prop="publish" label="发布">
                 <template slot-scope="{ row }">
                     <el-tag :type="row.publish ? 'success' : 'info'">{{ row.publish ? '是' : '否' }}</el-tag>
                 </template>
-            </el-table-column>
+            </el-table-column> -->
             <el-table-column prop="likes" label="点赞"> </el-table-column>
             <el-table-column prop="status" label="状态" :formatter="statusFormatter"> </el-table-column>
             <el-table-column label="操作" align="center" fixed="right" width="150">