Browse Source

实现企业认证审核操作

huxz 7 years ago
parent
commit
7a7206ebcb

+ 0 - 4
sso-manage-console-web/src/components/accounts/enterprises/EnterpriseAdmin.vue

@@ -24,10 +24,6 @@
         </el-select>
         <div class="input-group search-group" style="width: 242px;margin-left: 5px;">
           <el-input placeholder="请输入内容" v-model="keyword"></el-input>
-          <!--<el-autocomplete
-            v-model="keyword"
-            placeholder="请输入内容">
-          </el-autocomplete>-->
           <span class="input-group-btn">
             <button class="btn btn-default btn-search" type="button" @click="searchAndSelectAdmin">搜索</button>
           </span>

+ 129 - 2
sso-manage-console-web/src/components/accounts/enterprises/EnterpriseAuth.vue

@@ -1,14 +1,35 @@
 <template>
   <div>
     <message-list :messages="messages">
-      <button class="btn btn-default btn-auth" slot="action">认证通过</button>
-      <button class="btn btn-default" slot="action">不通过</button>
+      <button class="btn btn-default btn-auth" slot="action" @click="passAuth">认证通过</button>
+      <button class="btn btn-default" slot="action" @click="failAuth">不通过</button>
     </message-list>
+
+    <!-- 更换管理员对话框 -->
+    <el-dialog
+      title="未通过原因"
+      :visible.sync="isShowReasonDialog"
+      width="450px"
+      :show-close="true"
+      :append-to-body="true">
+      <!-- 对话框内容 -->
+      <!-- 用户信息展示 -->
+      <div class="input-fail-pass-reason">
+        <textarea class="form-control" rows="4" placeholder="请输入未通过原因" v-model="reason"></textarea>
+      </div>
+      <!-- 对话框尾部 -->
+      <span slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="submitFailReason">确 定</el-button>
+        <el-button @click="isShowReasonDialog = false">取 消</el-button>
+      </span>
+    </el-dialog>
   </div>
 </template>
 
 <script>
+  import axios from '@/assets/js/axios'
   import MessageList from './common/MessageList'
+  import * as types from '@/store/mutation-types'
 
   export default {
     name: 'enterprise-auth',
@@ -17,11 +38,61 @@
     },
     data () {
       return {
+        isShowReasonDialog: false,
+        reason: ''
       }
     },
     computed: {
       messages () {
         return this.$store.getters.enAuthInfo
+      },
+      enterprise () {
+        return this.$store.state.enterprises.savedEnterprise
+      }
+    },
+    methods: {
+      showErrorMessage (error) {
+        this.$message.error(error)
+      },
+      passAuth () {
+        const success = userSpace => {
+          this.$store.commit(types.CHOOSE_ENTERPRISE, userSpace)
+
+          this.$message.success('保存成功')
+        }
+
+        this.saveAuthInfo(true, null, success, this.showErrorMessage)
+      },
+      failAuth () {
+        this.reason = ''
+
+        this.isShowReasonDialog = true
+      },
+      submitFailReason () {
+        if (!this.reason) {
+          this.$message.error('不通过原因不能为空')
+          return 0
+        }
+
+        const success = userSpace => {
+          this.$store.commit(types.CHOOSE_ENTERPRISE, userSpace)
+
+          this.$message.success('保存成功')
+          this.isShowReasonDialog = false
+        }
+
+        this.saveAuthInfo(false, this.reason, success, this.showErrorMessage)
+      },
+      saveAuthInfo (isPass, reason, success, error) {
+        const spaceUU = this.enterprise.spaceUU
+        const params = { isPass }
+        if (!isPass) {
+          params.reason = reason
+        }
+
+        return axios.put(`/api/user/space/${spaceUU}/authEnterpriseInfo`, {}, { params })
+          .then(success)
+          .catch(error)
       }
     }
   }
@@ -41,4 +112,60 @@
     content: 'ABV';
     color: black;
   }
+  .el-dialog {
+    border-radius: 5px;
+  }
+  .el-dialog__header {
+    padding: 14px 20px;
+    height: 44px;
+    line-height: 16px;
+    border: 1px none #D2D2D2;
+    border-bottom-style: solid;
+  }
+  .el-dialog__header .el-dialog__title {
+    color: #000000;
+    font-size: 16px;
+    font-weight: normal;
+    font-family: "SimHei", sans-serif;
+  }
+  .el-dialog__body {
+    padding: 22px 0 22px 40px;
+  }
+  .input-fail-pass-reason {
+    margin: 0 30px 30px -10px;
+    width: 400px;
+  }
+  .input-fail-pass-reason textarea {
+    width: 400px;
+    resize: none;
+  }
+  .el-select .el-input__inner {
+    border-radius: 0;
+    width: 128px;
+    height: 32px;
+  }
+  .search-group .el-input__inner {
+    width: 186px;
+    height: 30px;
+    border-radius: 0;
+    border: none;
+  }
+  .el-dialog__footer {
+    text-align: center;
+  }
+  .el-dialog__footer .el-button {
+    width: 180px;
+    height: 30px;
+    border-radius: 15px;
+    line-height: 14px;
+    padding: 8px 0;
+
+    background: none;
+
+    color: #656565;
+  }
+  .el-dialog__footer .el-button--primary {
+    background-color: #4E8EFC;
+    color: #FFFFFF;
+  }
 </style>

+ 4 - 2
sso-manage-console-web/src/components/accounts/enterprises/EnterpriseBasicInfo.vue

@@ -66,6 +66,7 @@
 <script>
   import _ from 'lodash'
   import axios from '@/assets/js/axios'
+  import * as types from '@/store/mutation-types'
 
   export default {
     name: 'enterprise-basic-info',
@@ -88,10 +89,11 @@
           ]
         )
 
-        const success = () => {
+        const success = userSpace => {
           this.isChange = false
+          this.$store.commit(types.CHOOSE_ENTERPRISE, userSpace)
+
           this.$message.success('保存成功')
-          this.$router.go(-1)
         }
         const error = error => {
           this.$message.error(error)

+ 28 - 3
sso-manage-console/src/main/java/com/uas/sso/sso/backend/service/impl/UserSpaceServiceImpl.java

@@ -4,14 +4,18 @@ import com.uas.sso.core.Status;
 import com.uas.sso.dao.AppDao;
 import com.uas.sso.dao.UserDao;
 import com.uas.sso.dao.UserspaceDao;
+import com.uas.sso.dao.UserspaceValidDao;
 import com.uas.sso.entity.App;
 import com.uas.sso.entity.User;
 import com.uas.sso.entity.Userspace;
+import com.uas.sso.entity.UserspaceValid;
 import com.uas.sso.sso.backend.dto.UpdateSpaceInfo;
 import com.uas.sso.sso.backend.exceptions.ValidationFailedException;
 import com.uas.sso.sso.backend.service.UserSpaceService;
+import java.text.SimpleDateFormat;
 import java.util.ArrayList;
 import java.util.Collections;
+import java.util.Date;
 import java.util.List;
 import javax.persistence.criteria.CriteriaBuilder;
 import javax.persistence.criteria.CriteriaQuery;
@@ -41,12 +45,15 @@ public class UserSpaceServiceImpl implements UserSpaceService {
 
     private final AppDao appDao;
 
+    private final UserspaceValidDao spaceValidDao;
+
     @Autowired
     public UserSpaceServiceImpl(UserspaceDao userspaceDao, UserDao userDao,
-            AppDao appDao) {
+            AppDao appDao, UserspaceValidDao spaceValidDao) {
         this.userspaceDao = userspaceDao;
         this.userDao = userDao;
         this.appDao = appDao;
+        this.spaceValidDao = spaceValidDao;
     }
 
     @Override
@@ -146,6 +153,7 @@ public class UserSpaceServiceImpl implements UserSpaceService {
     }
 
     @Override
+    @Transactional(rollbackFor = RuntimeException.class)
     public Userspace authEnterpriseInfo(@NotNull Long spaceUu, @NotNull Boolean isPass,
             String reason) {
         Userspace space = assertSpaceExist(spaceUu);
@@ -156,8 +164,25 @@ public class UserSpaceServiceImpl implements UserSpaceService {
             space.setValidCode((short) Status.NOT_PASSED.getCode());
         }
 
-        // TODO 业务不清楚
-        return space;
+        // 更新企业认证日志信息
+        List<UserspaceValid> validList = spaceValidDao.findBySpaceUUAndValidCode(spaceUu, (short) 1);
+        if (CollectionUtils.isEmpty(validList)) {
+            throw new ValidationFailedException("当前企业没有发起认证申请");
+        }
+
+        for (UserspaceValid valid : validList) {
+            valid.setAuditor("系统管理员");
+
+            SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+            valid.setValidDate(dateFormat.format(new Date()));
+            valid.setValidCode(space.getValidCode());
+            if (!isPass) {
+                valid.setInvalidReason(reason);
+            }
+        }
+        spaceValidDao.save(validList);
+
+        return userspaceDao.save(space);
     }
 
     @Override

+ 12 - 1
sso-server/src/main/java/com/uas/sso/dao/UserspaceValidDao.java

@@ -1,6 +1,7 @@
 package com.uas.sso.dao;
 
 import com.uas.sso.entity.UserspaceValid;
+import java.util.List;
 import org.springframework.data.jpa.repository.JpaRepository;
 import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
 
@@ -9,5 +10,15 @@ import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
  * @create 2018-01-17 17:50
  * @desc
  **/
-public interface UserspaceValidDao extends JpaRepository<UserspaceValid, Long>, JpaSpecificationExecutor<UserspaceValid> {
+public interface UserspaceValidDao extends JpaRepository<UserspaceValid, Long>,
+        JpaSpecificationExecutor<UserspaceValid> {
+
+    /**
+     * 查询某个企业的某各状态的企业认证日志信息
+     *
+     * @param spaceUU   企业UU
+     * @param validCode 企业认证状态
+     * @return  企业认证日志列表
+     */
+    List<UserspaceValid> findBySpaceUUAndValidCode(Long spaceUU, Short validCode);
 }