Browse Source

修改账户中心后台管理企业认证逻辑

huxz 7 years ago
parent
commit
373789e92b

+ 41 - 4
sso-manage-console-web/src/components/accounts/enterprises/EnterpriseAuth.vue

@@ -1,9 +1,12 @@
 <template>
   <div>
-    <message-list :messages="messages">
+    <message-list :messages="messages" v-if="spaceValid && spaceValid.validCode">
       <button class="btn btn-default btn-auth" slot="action" @click="passAuth">认证通过</button>
       <button class="btn btn-default" slot="action" @click="failAuth">不通过</button>
     </message-list>
+    <div v-if="!spaceValid || !spaceValid.validCode" style="text-align: center; padding: 15px; font-size: 18px;">
+      暂无企业认证信息
+    </div>
 
     <!-- 更换管理员对话框 -->
     <el-dialog
@@ -27,6 +30,7 @@
 </template>
 
 <script>
+  import _ from 'lodash'
   import axios from '@/assets/js/axios'
   import MessageList from './common/MessageList'
   import * as types from '@/store/mutation-types'
@@ -39,12 +43,21 @@
     data () {
       return {
         isShowReasonDialog: false,
-        reason: ''
+        reason: '',
+        spaceValid: {}
       }
     },
     computed: {
       messages () {
-        return this.$store.getters.enAuthInfo
+        const enterprise = this.spaceValid || {}
+        const messages = []
+
+        messages.push({ label: '企业名称', value: enterprise.spaceName || '' })
+        messages.push({ label: '法定代表人', value: enterprise.corporation || '' })
+        messages.push({ label: '营业执照号', value: enterprise.businessCode || '' })
+        messages.push({ label: '营业执照附件', value: enterprise.businessCodeImage || '', isLink: true })
+        messages.push({ label: '企业地址', value: enterprise.regAddress || '' })
+        return messages
       },
       enterprise () {
         return this.$store.state.enterprises.savedEnterprise
@@ -59,6 +72,7 @@
           this.$store.commit(types.CHOOSE_ENTERPRISE, userSpace)
 
           this.$message.success('保存成功')
+          this.$router.push({ path: '/accounts/enterprise/basic' })
         }
 
         this.saveAuthInfo(true, null, success, this.showErrorMessage)
@@ -79,21 +93,44 @@
 
           this.$message.success('保存成功')
           this.isShowReasonDialog = false
+          this.$router.push({ path: '/accounts/enterprise/basic' })
         }
 
         this.saveAuthInfo(false, this.reason, success, this.showErrorMessage)
       },
       saveAuthInfo (isPass, reason, success, error) {
+        console.log('Space Valid', this.spaceValid)
+        const validId = this.spaceValid.id
         const spaceUU = this.enterprise.spaceUU
-        const params = { isPass }
+        const params = { isPass, validId }
         if (!isPass) {
           params.reason = reason
         }
 
+        console.log('Auth params', params)
         return axios.put(`/api/user/space/${spaceUU}/authEnterpriseInfo`, {}, { params })
           .then(success)
           .catch(error)
       }
+    },
+    mounted () {
+      const params = { spaceUU: this.enterprise.spaceUU }
+      axios.get('/api/user/space//loadSpaceValid', { params })
+        .then(response => {
+          if (response && response.validCode === 1) {
+            const userSpace = response
+            const submitInfo = JSON.parse(userSpace.submitInfo)
+            this.spaceValid = _.defaultsDeep({}, userSpace, submitInfo)
+
+            console.log('response', this.spaceValid)
+          } else {
+            this.spaceValid = {}
+          }
+        })
+        .catch(error => {
+          console.log(error)
+          this.spaceValid = {}
+        })
     }
   }
 </script>

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

@@ -32,7 +32,7 @@
         </el-input>
       </el-form-item>
       <el-form-item label="企业地址">
-        <el-input v-model="enterpriseInfo.companyAddress" :readonly="false">
+        <el-input v-model="enterpriseInfo.companyAddress || enterpriseInfo.regAddress" :readonly="false">
           <i class="el-input__icon" slot="prefix" style="line-height: 16px;margin-left: 10px;">
             <img src="/static/images/loc.png" alt="Location">
           </i>

+ 5 - 1
sso-manage-console-web/src/components/accounts/enterprises/common/MessageList.vue

@@ -2,9 +2,13 @@
   <div class="message-panel">
     <div class="row" v-for="message in messages">
       <div class="message-label">{{ message.label }}</div>
-      <div class="message-value" :class="message.suffixClass">
+      <div class="message-value" :class="message.suffixClass" v-if="!message.isLink">
         <span @click="message.action()">{{ message.value }}</span>
         <span v-if="message.suffixClass"></span>
+        <span v-if="message.isLink"></span>
+      </div>
+      <div class="message-value" v-if="message.isLink">
+        <a :href="message.value" target="_blank">附件</a>
       </div>
     </div>
     <div class="row message-action">

+ 10 - 2
sso-manage-console/src/main/java/com/uas/sso/sso/backend/api/UserSpaceManageController.java

@@ -1,6 +1,7 @@
 package com.uas.sso.sso.backend.api;
 
 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.service.UserSpaceService;
 import com.uas.sso.sso.backend.support.ResultBean;
@@ -66,9 +67,9 @@ public class UserSpaceManageController {
     @RequestMapping(method = RequestMethod.PUT, path = "/{spaceUU}/authEnterpriseInfo",
             produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
     public ResultBean<Userspace> authEnterpriseInfo(@PathVariable("spaceUU") Long spaceUu,
-            Boolean isPass, @RequestParam(required = false) String reason) {
+            Long validId, Boolean isPass, @RequestParam(required = false) String reason) {
 
-        return new ResultBean<>(spaceService.authEnterpriseInfo(spaceUu, isPass, reason));
+        return new ResultBean<>(spaceService.authEnterpriseInfo(spaceUu, validId, isPass, reason));
     }
 
     @RequestMapping(method = RequestMethod.PUT, path = "/{spaceUU}/addUserToSpace",
@@ -84,4 +85,11 @@ public class UserSpaceManageController {
 
         return new ResultBean<>(spaceService.bindAppWithSpace(spaceUu, appUid));
     }
+
+    @RequestMapping(method = RequestMethod.GET, path = "//loadSpaceValid",
+            produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
+    public ResultBean<UserspaceValid> loadSpaceValid(Long spaceUU) {
+
+        return new ResultBean<>(spaceService.loadSpaceValid(spaceUU));
+    }
 }

+ 10 - 1
sso-manage-console/src/main/java/com/uas/sso/sso/backend/service/UserSpaceService.java

@@ -1,6 +1,7 @@
 package com.uas.sso.sso.backend.service;
 
 import com.uas.sso.entity.Userspace;
+import com.uas.sso.entity.UserspaceValid;
 import com.uas.sso.sso.backend.dto.UpdateSpaceInfo;
 import javax.validation.constraints.NotNull;
 import org.springframework.data.domain.Page;
@@ -29,9 +30,17 @@ public interface UserSpaceService {
 
     Userspace changeAdmin(@NotNull Long spaceUu, @NotNull Long userUU);
 
-    Userspace authEnterpriseInfo(@NotNull Long spaceUu, @NotNull Boolean isPass, String reason);
+    Userspace authEnterpriseInfo(@NotNull Long spaceUu, Long validId, @NotNull Boolean isPass, String reason);
 
     void addUserToSpace(Long spaceUu, Long userUu);
 
     Userspace bindAppWithSpace(Long spaceUu, String appUid);
+
+    /**
+     * 获取企业的认证信息
+     *
+     * @param spaceUU   企业UU
+     * @return  企业认证信息
+     */
+    UserspaceValid loadSpaceValid(Long spaceUU);
 }

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

@@ -7,7 +7,6 @@ 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.UserAccount;
 import com.uas.sso.entity.Userspace;
 import com.uas.sso.entity.UserspaceValid;
 import com.uas.sso.sso.backend.dao.AdminChangeRecordDao;
@@ -16,7 +15,7 @@ import com.uas.sso.sso.backend.entity.AdminChangeRecord;
 import com.uas.sso.sso.backend.entity.AdminChangeType;
 import com.uas.sso.sso.backend.exceptions.ValidationFailedException;
 import com.uas.sso.sso.backend.service.UserSpaceService;
-import com.uas.sso.support.SystemSession;
+import com.uas.sso.sso.backend.util.JacksonUtils;
 import java.text.SimpleDateFormat;
 import java.util.ArrayList;
 import java.util.Collections;
@@ -32,9 +31,12 @@ import org.hibernate.jpa.criteria.OrderImpl;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.domain.Page;
 import org.springframework.data.domain.Pageable;
+import org.springframework.data.domain.Sort;
+import org.springframework.data.domain.Sort.Direction;
 import org.springframework.data.jpa.domain.Specification;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
+import org.springframework.util.Assert;
 import org.springframework.util.CollectionUtils;
 import org.springframework.util.StringUtils;
 
@@ -198,36 +200,44 @@ public class UserSpaceServiceImpl implements UserSpaceService {
 
     @Override
     @Transactional(rollbackFor = RuntimeException.class)
-    public Userspace authEnterpriseInfo(@NotNull Long spaceUu, @NotNull Boolean isPass,
+    public Userspace authEnterpriseInfo(@NotNull Long spaceUu, @NotNull Long validId, @NotNull Boolean isPass,
             String reason) {
         Userspace space = assertSpaceExist(spaceUu);
-        // UserAccount account = SystemSession.getUserAccount();
-
-        if (isPass) {
-            space.setValidCode((short) Status.AUTHENTICATED.getCode());
-        } else {
-            space.setValidCode((short) Status.NOT_PASSED.getCode());
-        }
-
-        // 更新企业认证日志信息
-        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);
-            }
+        UserspaceValid spaceValid = spaceValidDao.findOne(validId);
+        Assert.notNull(spaceValid, "企业认证信息不能为空");
+        Assert.isTrue(spaceValid.getValidCode() == 1, "企业认证必须为待认证状态");
+
+        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+        String authDate = dateFormat.format(new Date());
+
+        spaceValid.setValidCode(isPass ? (short) Status.AUTHENTICATED.getCode() : (short) Status.NOT_PASSED.getCode());
+        spaceValid.setValidDate(authDate);
+
+        // When admin disapproves, only handle space valid info.
+        if (!isPass) {
+            Assert.hasText(reason, "企业认证不通过时,不通过原因不能为空");
+            spaceValid.setInvalidReason(reason);
+            spaceValidDao.save(spaceValid);
+            return space;
         }
-        spaceValidDao.save(validList);
 
-        return userspaceDao.save(space);
+        // Handle space valid and space info.
+        Userspace newSpace = JacksonUtils.fromJson(spaceValid.getSubmitInfo(), Userspace.class);
+        Assert.notNull(newSpace, "企业认证的企业信息不能为空");
+
+        space.setSpaceName(newSpace.getSpaceName());
+        space.setBusinessCode(newSpace.getBusinessCode());
+        space.setBusinessCodeImage(newSpace.getBusinessCodeImage());
+        space.setCorporation(newSpace.getCorporation());
+        space.setRegProvince(newSpace.getRegProvince());
+        space.setRegCity(newSpace.getRegCity());
+        space.setRegDistrict(newSpace.getRegDistrict());
+        space.setRegStreet(newSpace.getRegStreet());
+        space.setRegAddress(newSpace.getRegAddress());
+        userspaceDao.save(space);
+
+        spaceValidDao.save(spaceValid);
+        return space;
     }
 
     @Override
@@ -268,6 +278,14 @@ public class UserSpaceServiceImpl implements UserSpaceService {
         return space;
     }
 
+    @Override
+    public UserspaceValid loadSpaceValid(Long spaceUU) {
+        Sort sort = new Sort(Direction.DESC, "submitDate");
+
+        List<UserspaceValid> validList = spaceValidDao.findBySpaceUUAndValidCode(spaceUU, (short) 1, sort);
+        return CollectionUtils.isEmpty(validList) ? null : validList.get(0);
+    }
+
     /**
      * 业务逻辑校验-企业UU对应企业是否存在
      *

+ 3 - 0
sso-server/src/main/java/com/uas/sso/dao/UserspaceValidDao.java

@@ -2,6 +2,7 @@ package com.uas.sso.dao;
 
 import com.uas.sso.entity.UserspaceValid;
 import java.util.List;
+import org.springframework.data.domain.Sort;
 import org.springframework.data.jpa.repository.JpaRepository;
 import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
 
@@ -21,4 +22,6 @@ public interface UserspaceValidDao extends JpaRepository<UserspaceValid, Long>,
      * @return  企业认证日志列表
      */
     List<UserspaceValid> findBySpaceUUAndValidCode(Long spaceUU, Short validCode);
+
+    List<UserspaceValid> findBySpaceUUAndValidCode(Long spaceUU, Short validCode, Sort sort);
 }

+ 8 - 0
sso-server/src/main/java/com/uas/sso/entity/UserspaceValid.java

@@ -86,6 +86,14 @@ public class UserspaceValid implements Serializable {
         this.setSubmitterUU(submitter.getUserUU());
     }
 
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
     public Timestamp getSubmitDate() {
         return submitDate;
     }