Browse Source

添加管理员更换记录记录后台操作

huxz 8 years ago
parent
commit
45f878357c

+ 27 - 5
sso-manage-console-web/src/components/accounts/appeals/AppealHome.vue

@@ -267,11 +267,26 @@
         </div>
       </div>
 
+      <div v-if="!canApprove">
+        <div>
+          <div class="row">
+            <div class="col-lg-6">
+              <div class="message-label">审核状态</div>
+              <div class="message-value" v-if="selectedAppeal.status === 2" style="color: #008000;">已通过</div>
+              <div class="message-value" v-if="selectedAppeal.status === 3" style="color: #FF0000;">未通过</div>
+            </div>
+          </div>
+        </div>
+      </div>
+
       <!-- 对话框尾部 -->
-      <span slot="footer" class="dialog-footer">
+      <span slot="footer" class="dialog-footer" v-if="canApprove">
         <el-button type="primary" @click="approveAppeal(selectedAppeal.id, true)">通过</el-button>
         <el-button @click="approveAppeal(selectedAppeal.id, false)">不通过</el-button>
       </span>
+      <span slot="footer" class="dialog-footer" v-if="!canApprove">
+        <el-button @click="isShowDialog = false">关闭</el-button>
+      </span>
     </el-dialog>
   </common-home>
 </template>
@@ -397,7 +412,8 @@
         searchKeys: searchKeys,
         isShowDialog: false,
         approveType: '',
-        selectedAppeal: {}
+        selectedAppeal: {},
+        canApprove: false
       }
     },
     computed: {
@@ -436,7 +452,7 @@
 
         this.fetchData()
       },
-      approveRequest (appeal) {
+      handleAppeal (appeal) {
         if (appeal.type !== 'resetPassword' && appeal.type !== 'validAccount' &&
           appeal.type !== 'changeAdmin') {
           this.$message.error(`不支持的申诉类型${appeal.type()}`)
@@ -449,12 +465,18 @@
         if (appeal.type === 'changeAdmin' && !this.selectedAppeal.admin) {
           this.selectedAppeal.admin = {}
         }
+      },
+      approveRequest (appeal) {
+        this.handleAppeal(appeal)
         this.isShowDialog = true
+        this.canApprove = true
 
         console.log(this.selectedAppeal)
       },
-      showDetail () {
-        this.$message.info('此功能暂未开通')
+      showDetail (appeal) {
+        this.handleAppeal(appeal)
+        this.isShowDialog = true
+        this.canApprove = false
       },
       approveAppeal (appealId, isPass) {
         const success = result => {

+ 2 - 2
sso-manage-console/src/main/java/com/uas/sso/sso/backend/ManageConsoleApplication.java

@@ -11,8 +11,8 @@ import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
  * @author huxz
  */
 @SpringBootApplication
-@EntityScan(basePackages = {"com.uas.sso.entity"})
-@EnableJpaRepositories(basePackages = {"com.uas.sso.dao"})
+@EntityScan(basePackages = {"com.uas.sso.entity", "com.uas.sso.sso.backend.entity"})
+@EnableJpaRepositories(basePackages = {"com.uas.sso.dao", "com.uas.sso.sso.backend.dao"})
 public class ManageConsoleApplication {
 
     public static void main(String[] args) {

+ 0 - 4
sso-manage-console/src/main/java/com/uas/sso/sso/backend/api/AppealBackendController.java

@@ -5,10 +5,6 @@ import com.uas.sso.sso.backend.service.AppealService;
 import com.uas.sso.sso.backend.support.ResultBean;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.domain.Pageable;
-import org.springframework.data.domain.Sort.Direction;
-import org.springframework.data.web.PageableDefault;
-import org.springframework.data.web.SortDefault;
-import org.springframework.data.web.SortDefault.SortDefaults;
 import org.springframework.http.MediaType;
 import org.springframework.web.bind.annotation.PathVariable;
 import org.springframework.web.bind.annotation.RequestMapping;

+ 17 - 0
sso-manage-console/src/main/java/com/uas/sso/sso/backend/dao/AdminChangeRecordDao.java

@@ -0,0 +1,17 @@
+package com.uas.sso.sso.backend.dao;
+
+import com.uas.sso.sso.backend.entity.AdminChangeRecord;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
+import org.springframework.stereotype.Repository;
+
+/**
+ * A repository stores enterprises admin change records.
+ *
+ * @author huxz
+ */
+@Repository
+public interface AdminChangeRecordDao extends JpaRepository<AdminChangeRecord, Long>,
+        JpaSpecificationExecutor<AdminChangeRecord> {
+
+}

+ 117 - 0
sso-manage-console/src/main/java/com/uas/sso/sso/backend/entity/AdminChangeRecord.java

@@ -0,0 +1,117 @@
+package com.uas.sso.sso.backend.entity;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.EnumType;
+import javax.persistence.Enumerated;
+import javax.persistence.GeneratedValue;
+import javax.persistence.Id;
+import javax.persistence.Table;
+
+/**
+ * Record logs when super admin changed enterprise' admin.
+ *
+ * @author huxz
+ */
+@Entity
+@Table(name = "sso$us_admin_change_record")
+public class AdminChangeRecord extends FlowBase {
+
+    @Id
+    @GeneratedValue
+    private Long id;
+
+    @Column(name = "space_uu")
+    private Long spaceUU;
+
+    /**
+     * 原管理员姓名
+     */
+    @Column(name = "admin_name_old", length = 50)
+    private String oldAdminName;
+
+    /**
+     * 原管理员手机
+     */
+    @Column(name = "admin_tel_old", length = 24)
+    private String oldAdminTel;
+
+    /**
+     * 新管理员姓名
+     */
+    @Column(name = "admin_name_new", length = 50)
+    private String newAdminName;
+
+    /**
+     * 新管理员手机
+     */
+    @Column(name = "admin_tel_new", length = 24)
+    private String newAdminTel;
+
+    /**
+     * 管理更换方式
+     */
+    @Column(name = "change_type")
+    @Enumerated(EnumType.STRING)
+    private AdminChangeType changeType;
+
+    public AdminChangeRecord() {
+        super();
+    }
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public Long getSpaceUU() {
+        return spaceUU;
+    }
+
+    public void setSpaceUU(Long spaceUU) {
+        this.spaceUU = spaceUU;
+    }
+
+    public String getOldAdminName() {
+        return oldAdminName;
+    }
+
+    public void setOldAdminName(String oldAdminName) {
+        this.oldAdminName = oldAdminName;
+    }
+
+    public String getOldAdminTel() {
+        return oldAdminTel;
+    }
+
+    public void setOldAdminTel(String oldAdminTel) {
+        this.oldAdminTel = oldAdminTel;
+    }
+
+    public String getNewAdminName() {
+        return newAdminName;
+    }
+
+    public void setNewAdminName(String newAdminName) {
+        this.newAdminName = newAdminName;
+    }
+
+    public String getNewAdminTel() {
+        return newAdminTel;
+    }
+
+    public void setNewAdminTel(String newAdminTel) {
+        this.newAdminTel = newAdminTel;
+    }
+
+    public AdminChangeType getChangeType() {
+        return changeType;
+    }
+
+    public void setChangeType(AdminChangeType changeType) {
+        this.changeType = changeType;
+    }
+}

+ 19 - 0
sso-manage-console/src/main/java/com/uas/sso/sso/backend/entity/AdminChangeType.java

@@ -0,0 +1,19 @@
+package com.uas.sso.sso.backend.entity;
+
+/**
+ * Enum class represents methods of changing admin.
+ *
+ * @author huxz
+ */
+public enum AdminChangeType {
+
+    /**
+     * 管理员操作
+     */
+    ADMIN_OPERATION,
+
+    /**
+     * 人工申诉
+     */
+    USER_APPEAL
+}

+ 98 - 0
sso-manage-console/src/main/java/com/uas/sso/sso/backend/entity/FlowBase.java

@@ -0,0 +1,98 @@
+package com.uas.sso.sso.backend.entity;
+
+import java.util.Date;
+import javax.persistence.Column;
+import javax.persistence.MappedSuperclass;
+
+/**
+ * Represent approval flow base info when user launched a request.
+ *
+ * @author huxz
+ */
+@MappedSuperclass
+public class FlowBase {
+
+    /**
+     * 审批流发起人姓名
+     */
+    @Column(name = "sponsor_name", length = 50)
+    private String sponsorName;
+
+    /**
+     * 审批发起人手机
+     */
+    @Column(name = "sponsor_tel", length = 24)
+    private String sponsorTel;
+
+    /**
+     * 发起日期
+     */
+    @Column(name = "launch_time")
+    private Date launchTime;
+
+    /**
+     * 审核人姓名
+     */
+    @Column(name = "auditor_name", length = 50)
+    private String auditorName;
+
+    /**
+     * 审核人手机
+     */
+    @Column(name = "auditor_tel", length = 24)
+    private String auditorTel;
+
+    /**
+     * 审核时间
+     */
+    @Column(name = "audit_time")
+    private Date auditTime;
+
+    public String getSponsorName() {
+        return sponsorName;
+    }
+
+    public void setSponsorName(String sponsorName) {
+        this.sponsorName = sponsorName;
+    }
+
+    public String getSponsorTel() {
+        return sponsorTel;
+    }
+
+    public void setSponsorTel(String sponsorTel) {
+        this.sponsorTel = sponsorTel;
+    }
+
+    public Date getLaunchTime() {
+        return launchTime;
+    }
+
+    public void setLaunchTime(Date launchTime) {
+        this.launchTime = launchTime;
+    }
+
+    public String getAuditorName() {
+        return auditorName;
+    }
+
+    public void setAuditorName(String auditorName) {
+        this.auditorName = auditorName;
+    }
+
+    public String getAuditorTel() {
+        return auditorTel;
+    }
+
+    public void setAuditorTel(String auditorTel) {
+        this.auditorTel = auditorTel;
+    }
+
+    public Date getAuditTime() {
+        return auditTime;
+    }
+
+    public void setAuditTime(Date auditTime) {
+        this.auditTime = auditTime;
+    }
+}

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

@@ -6,12 +6,16 @@ import com.uas.sso.dao.UserspaceDao;
 import com.uas.sso.entity.Appeal;
 import com.uas.sso.entity.User;
 import com.uas.sso.entity.Userspace;
+import com.uas.sso.sso.backend.dao.AdminChangeRecordDao;
+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.AppealService;
 import com.uas.sso.sso.backend.util.JacksonUtils;
 import java.sql.Timestamp;
 import java.util.ArrayList;
 import java.util.Collections;
+import java.util.Date;
 import java.util.List;
 import java.util.Map;
 import javax.persistence.criteria.CriteriaBuilder;
@@ -53,12 +57,15 @@ public class AppealServiceImpl implements AppealService {
 
     private final UserspaceDao spaceDao;
 
+    private final AdminChangeRecordDao recordDao;
+
     @Autowired
     public AppealServiceImpl(AppealDao appealDao, UserDao userDao,
-            UserspaceDao spaceDao) {
+            UserspaceDao spaceDao, AdminChangeRecordDao recordDao) {
         this.appealDao = appealDao;
         this.userDao = userDao;
         this.spaceDao = spaceDao;
+        this.recordDao = recordDao;
     }
 
     @Override
@@ -153,6 +160,26 @@ public class AppealServiceImpl implements AppealService {
                         String.format("拥有手机号[%s]的用户不存在", appeal.getMobile()));
             }
 
+            // 记录管理员更换记录
+            AdminChangeRecord record = new AdminChangeRecord();
+            record.setSpaceUU(spaceUU);
+
+            User oldAdmin = space.getAdmin();
+            record.setSponsorName(appeal.getContactName());
+            record.setSponsorTel(appeal.getContactTel());
+            record.setLaunchTime(new Date());
+            record.setOldAdminName(oldAdmin.getVipName());
+            record.setOldAdminTel(oldAdmin.getMobile());
+
+            record.setAuditorName("系统管理员");
+            record.setAuditorTel("123456789");
+            record.setAuditTime(new Date());
+            record.setNewAdminName(user.getVipName());
+            record.setNewAdminTel(user.getMobile());
+
+            record.setChangeType(AdminChangeType.USER_APPEAL);
+            recordDao.save(record);
+
             space.setAdmin(user);
             space.setAdminUU(user.getUserUU());
             // 更新企业信息

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

@@ -9,7 +9,10 @@ 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.dao.AdminChangeRecordDao;
 import com.uas.sso.sso.backend.dto.UpdateSpaceInfo;
+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 java.text.SimpleDateFormat;
@@ -49,13 +52,17 @@ public class UserSpaceServiceImpl implements UserSpaceService {
 
     private final UserspaceValidDao spaceValidDao;
 
+    private final AdminChangeRecordDao recordDao;
+
     @Autowired
     public UserSpaceServiceImpl(UserspaceDao userspaceDao, UserDao userDao,
-            AppDao appDao, UserspaceValidDao spaceValidDao) {
+            AppDao appDao, UserspaceValidDao spaceValidDao,
+            AdminChangeRecordDao recordDao) {
         this.userspaceDao = userspaceDao;
         this.userDao = userDao;
         this.appDao = appDao;
         this.spaceValidDao = spaceValidDao;
+        this.recordDao = recordDao;
     }
 
     @Override
@@ -150,6 +157,28 @@ public class UserSpaceServiceImpl implements UserSpaceService {
             throw new ValidationFailedException("企业管理员必须是当前企业用户");
         }
 
+        // 记录管理员更换记录
+        AdminChangeRecord record = new AdminChangeRecord();
+        record.setSpaceUU(spaceUu);
+
+        User oldAdmin = space.getAdmin();
+        record.setSponsorName("系统管理员");
+        record.setSponsorTel("123456789");
+        if (oldAdmin != null) {
+            record.setOldAdminName(oldAdmin.getVipName());
+            record.setOldAdminTel(oldAdmin.getMobile());
+        }
+        record.setLaunchTime(new Date());
+
+        record.setAuditorName("系统管理员");
+        record.setAuditorTel("123456789");
+        record.setAuditTime(new Date());
+        record.setNewAdminName(admin.getVipName());
+        record.setNewAdminTel(admin.getMobile());
+
+        record.setChangeType(AdminChangeType.ADMIN_OPERATION);
+        recordDao.save(record);
+
         // 更新管理员信息
         space.setAdminUU(userUU);
         space.setAdmin(admin);