Bläddra i källkod

认证申请bug修改
添加云中心接口

wangmh 7 år sedan
förälder
incheckning
f2e6bc7536

+ 2 - 0
sso-server/build.gradle

@@ -42,6 +42,8 @@ dependencies {
     compile("org.apache.httpcomponents:httpmime:4.4")
     compile("org.apache.httpcomponents:httpcore:4.4.5")
     compile("org.apache.httpcomponents:httpclient:4.4")
+    compile("org.codehaus.jackson:jackson-core-asl:1.9.13")
+    compile("org.codehaus.jackson:jackson-mapper-asl:1.9.13")
 
     testCompile("org.springframework.boot:spring-boot-starter-test")
 }

+ 13 - 0
sso-server/src/main/java/com/uas/sso/controller/UserspaceManageController.java

@@ -1,6 +1,7 @@
 package com.uas.sso.controller;
 
 import com.alibaba.fastjson.JSONObject;
+import com.uas.sso.service.ApplyUserSpaceService;
 import com.uas.sso.service.UserspaceService;
 import com.uas.sso.util.FastjsonUtils;
 import com.uas.sso.util.FileUrl;
@@ -25,6 +26,9 @@ public class UserspaceManageController extends BaseController {
     @Autowired
     private UserspaceService userspaceService;
 
+    @Autowired
+    private ApplyUserSpaceService applyUserSpaceService;
+
     /**
      * 校验企业名称
      *
@@ -94,4 +98,13 @@ public class UserspaceManageController extends BaseController {
         return error("上传失败");
     }
 
+    /**
+     * 统计申请已审批和未审批数量
+     * @param spaceUU 企业uu号
+     * @return
+     */
+    @RequestMapping(value = "/apply/count", method = RequestMethod.GET)
+    public ModelMap applyCount(Long spaceUU) {
+        return success(applyUserSpaceService.applyCount(spaceUU));
+    }
 }

+ 13 - 5
sso-server/src/main/java/com/uas/sso/controller/ValidController.java

@@ -46,26 +46,29 @@ public class ValidController extends BaseController {
      */
     @RequestMapping(value = "/userspace/submit")
     public ModelMap submitSpaceInfo(Userspace userspace) throws Exception {
+        // 获取认证的企业和申请者
+        UserAccount loginUser = SystemSession.getUserAccount();
+        Userspace validSpace = userspaceService.findOne(loginUser.getSpaceUU());
+        User submitter = userService.findOne(loginUser.getUserUU());
+
         // 获取参数
         String spaceName = userspace.getSpaceName();
         String businessCode = userspace.getBusinessCode();
+        String businessCodeImage = userspace.getBusinessCodeImage();
         String corporation = userspace.getCorporation();
         String regAddress = userspace.getRegAddress();
 
-        // 获取申请者
-        UserAccount loginUser = SystemSession.getUserAccount();
-        User submitter = userService.findOne(loginUser.getUserUU());
-
         // 参数空校验
         Map<String, String> params = new HashMap<>(4);
         params.put("企业名", spaceName);
         params.put("营业执照号", businessCode);
         params.put("法定代表人", corporation);
         params.put("注册地址", regAddress);
+        params.put("营业执照", businessCodeImage);
         ParameterUtils.checkEmptyParameter(params);
 
         // 将企业添加到待认证
-        userspaceService.submitValidInfo(userspace, submitter);
+        userspaceService.submitValidInfo(validSpace, userspace, submitter);
 
         return success();
     }
@@ -82,6 +85,10 @@ public class ValidController extends BaseController {
      */
     @RequestMapping(value = "/user/identity/submit")
     public ModelMap submitUserIdentityInfo(String realName, String idCard) throws Exception {
+        // 获取认证的企业和申请者
+        UserAccount loginUser = SystemSession.getUserAccount();
+        User submitter = userService.findOne(loginUser.getUserUU());
+
         // 参数空校验
         Map<String, String> params = new HashMap<>(2);
         params.put("真实姓名", realName);
@@ -92,6 +99,7 @@ public class ValidController extends BaseController {
         User user = new User();
         user.setRealName(realName);
         user.setIdCard(idCard);
+        user.setUserUU(submitter.getUserUU());
         userService.submitIdValidInfo(user);
 
         return success();

+ 135 - 0
sso-server/src/main/java/com/uas/sso/controller/YunCenterController.java

@@ -0,0 +1,135 @@
+package com.uas.sso.controller;
+
+import org.springframework.data.domain.Page;
+import com.uas.sso.core.Const;
+import com.uas.sso.entity.User;
+import com.uas.sso.entity.UserAccount;
+import com.uas.sso.entity.Userspace;
+import com.uas.sso.exception.VisibleError;
+import com.uas.sso.service.ApplyUserSpaceService;
+import com.uas.sso.service.UserAccountService;
+import com.uas.sso.service.UserService;
+import com.uas.sso.service.UserspaceService;
+import com.uas.sso.support.SystemSession;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.ui.ModelMap;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.Date;
+
+/**
+ * @author wangmh
+ * @create 2018-01-13 19:39
+ * @desc 云中心Controller
+ **/
+@RestController
+@RequestMapping("/sso/center")
+public class YunCenterController extends BaseController {
+
+    @Autowired
+    private ApplyUserSpaceService applyUserSpaceService;
+
+    @Autowired
+    private UserService userService;
+
+    @Autowired
+    private UserspaceService userspaceService;
+
+    @Autowired
+    private UserAccountService userAccountService;
+
+    @RequestMapping(value = "/user/info", method = RequestMethod.GET)
+    public ModelMap findUserInfo() {
+        UserAccount userAccount = SystemSession.getUserAccount();
+        if (userAccount == null) {
+            return error("未登录");
+        }
+
+        ModelMap data = new ModelMap();
+        data.put("user", userAccount);
+        if (userAccount.getSpaceUU() != null) {
+            Userspace userspace = userspaceService.findOne(userAccount.getSpaceUU());
+            data.put("userspace", userspace);
+        }
+        return success(data);
+    }
+
+    /**
+     * 根据营业执照号分页查询申请信息
+     * @param page 页数
+     * @param size 每页个数
+     * @return
+     */
+    @RequestMapping(value = "/apply/info", method = RequestMethod.GET)
+    @ResponseBody
+    public ModelMap findApplyAll(@RequestParam(defaultValue = "0") int page, @RequestParam(defaultValue = "20") int size) {
+        UserAccount userAccount = SystemSession.getUserAccount();
+        if (userAccount.getSpaceUU() == null) {
+            return error(Const.SPACEUU_PERSONAL+"", "个人账号");
+        }
+
+        return success(applyUserSpaceService.findApplyAll(page, size, userAccount.getSpaceUU()));
+    }
+
+    /**
+     * 分页查询当前企业的所有人员
+     * @param pageNumber 页号
+     * @param pageSize 每页大小
+     * @return
+     */
+    @RequestMapping(value = "/member/info", method = RequestMethod.GET)
+    @ResponseBody
+    public ModelMap findMemberAll(@RequestParam(defaultValue = "0") int pageNumber, @RequestParam(defaultValue = "20") int pageSize) {
+        UserAccount userAccount = getLoginUser();
+        if (userAccount.getSpaceUU() == null) {
+            return error(Const.SPACEUU_PERSONAL+"", "个人账号");
+        }
+
+        Page<User> pUser = userService.findMemberBySpaceUU(pageNumber, pageSize, userAccount.getSpaceUU());
+        return success(pUser);
+    }
+
+    /**
+     * 同意申请
+     * @param userUU 用户uu号
+     * @return
+     */
+    @RequestMapping(value = "/agree/apply", method = RequestMethod.GET)
+    @ResponseBody
+    public ModelMap agreeApply(Long userUU, Long id) {
+        // 获取登录用户
+        UserAccount userAccount = getLoginUser();
+        if (userAccount.getSpaceUU() == null) {
+            return error(Const.SPACEUU_PERSONAL+"", "个人账号");
+        }
+
+        // 同意申请操作
+        applyUserSpaceService.agreeApply(userUU, id);
+        return success();
+    }
+
+    /**
+     * 拒绝申请
+     * @param applyUserUU 申请者uu号
+     * @return
+     */
+    @RequestMapping(value = "/disagree/apply", method = RequestMethod.POST)
+    @ResponseBody
+    public ModelMap disagreeApply(Long applyUserUU, Long id) {
+        UserAccount userAccount = getLoginUser();
+        if (userAccount.getSpaceUU() == null) {
+            return error(String.valueOf(Const.SPACEUU_PERSONAL), "个人账号");
+        }
+        applyUserSpaceService.disagreeApply(applyUserUU, id);
+        return success();
+    }
+
+    private UserAccount getLoginUser() {
+        UserAccount userAccount = SystemSession.getUserAccount();
+        if (userAccount == null) {
+            throw new VisibleError("未登录");
+        }
+
+        return userAccount;
+    }
+}

+ 13 - 1
sso-server/src/main/java/com/uas/sso/core/Status.java

@@ -11,7 +11,19 @@ public enum Status {
     NOT_APPLYING(0, "未申请"),
     TO_BE_CERTIFIED(1, "待认证"),
     AUTHENTICATED(2, "已认证"),
-    NOT_PASSED(3, "未通过");
+    NOT_PASSED(3, "未通过"),
+    /**
+     * {@code 311 申请中}
+     */
+    UNAUDIT(311, "申请中"),
+    /**
+     * {@code 316 已同意}
+     */
+    AGREE(316, "已同意"),
+    /**
+     * {@code 317 已拒绝}
+     */
+    DISAGREE(317, "已拒绝");
 
     /**
      * 代码

+ 43 - 0
sso-server/src/main/java/com/uas/sso/dao/ApplyUserSpaceDao.java

@@ -0,0 +1,43 @@
+package com.uas.sso.dao;
+
+import com.uas.sso.entity.ApplyUserSpace;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
+import org.springframework.data.jpa.repository.Query;
+import org.springframework.data.repository.query.Param;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @author wangmh
+ * @create 2018-01-12 16:21
+ * @desc
+ **/
+public interface ApplyUserSpaceDao extends JpaRepository<ApplyUserSpace, Long>, JpaSpecificationExecutor<ApplyUserSpace> {
+
+    /**
+     * 根据用户uu号和企业uu号查询申请信息
+     * @param userUU 用户uu号
+     * @param spaceUU 企业uu号
+     * @return
+     */
+    List<ApplyUserSpace> findByUserUUAndSpaceUU(Long userUU, Long spaceUU);
+
+    /**
+     * 根据用户uu和企业uu查询申请信息
+     * @param userUU 用户uu号
+     * @param spaceUU 企业uu号
+     * @param code 申请状态
+     * @return
+     */
+    List<ApplyUserSpace> findByUserUUAndSpaceUUAndStatus(Long userUU, Long spaceUU, int code);
+
+    /**
+     * 统计用户申请所有状态数量
+     * @param spaceUU 企业uu号
+     * @return
+     */
+    @Query("select t.status as status, count(t) as count from ApplyUserSpace t where t.spaceUU=:spaceUU group by t.status")
+    List<Map<String,Object>> applyCountByStatus(@Param("spaceUU") Long spaceUU);
+}

+ 119 - 0
sso-server/src/main/java/com/uas/sso/entity/ApplyUserSpace.java

@@ -0,0 +1,119 @@
+package com.uas.sso.entity;
+
+import com.uas.sso.core.Status;
+
+import javax.persistence.*;
+import java.io.Serializable;
+import java.sql.Timestamp;
+
+/**
+ * @author wangmh
+ * @create 2018-01-12 16:12
+ * @desc 用户绑定企业
+ **/
+@Entity
+@Table(name = "sso$apply$userspace")
+public class ApplyUserSpace implements Serializable {
+
+    /**
+     *
+     */
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键
+     */
+    @Id
+    @Column(name = "_id")
+    @SequenceGenerator(name="sso$apply$userspace_gen", sequenceName="sso$apply$userspace_seq", allocationSize=1)
+    @GeneratedValue(strategy=GenerationType.IDENTITY, generator="sso$apply$userspace_gen")
+    private Long id;
+
+    /**
+     * 用户uu号
+     */
+    @Column(name="useruu")
+    private Long userUU;
+
+    /**
+     * 企业uu号
+     */
+    @Column(name="spaceuu")
+    private Long spaceUU;
+
+    /**
+     * 申请状态
+     */
+    @Column(name="status")
+    private int status;
+
+    /**
+     * 申请时间
+     */
+    @Column(name = "submit_date")
+    private Timestamp submitDate;
+
+    /**
+     * 处理时间
+     */
+    private Timestamp processTime;
+
+    public ApplyUserSpace() {
+    }
+
+    public ApplyUserSpace(User user, Userspace userspace) {
+        this.userUU = user.getUserUU();
+        this.spaceUU = userspace.getSpaceUU();
+        this.status = Status.TO_BE_CERTIFIED.getCode();
+        this.submitDate = new Timestamp(System.currentTimeMillis());
+    }
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public Long getUserUU() {
+        return userUU;
+    }
+
+    public void setUserUU(Long userUU) {
+        this.userUU = userUU;
+    }
+
+
+    public Long getSpaceUU() {
+        return spaceUU;
+    }
+
+    public void setSpaceUU(Long spaceUU) {
+        this.spaceUU = spaceUU;
+    }
+
+    public int getStatus() {
+        return status;
+    }
+
+    public void setStatus(int status) {
+        this.status = status;
+    }
+
+    public Timestamp getSubmitDate() {
+        return submitDate;
+    }
+
+    public void setSubmitDate(Timestamp submitDate) {
+        this.submitDate = submitDate;
+    }
+
+    public Timestamp getProcessTime() {
+        return processTime;
+    }
+
+    public void setProcessTime(Timestamp processTime) {
+        this.processTime = processTime;
+    }
+}

+ 10 - 0
sso-server/src/main/java/com/uas/sso/entity/User.java

@@ -1,5 +1,9 @@
 package com.uas.sso.entity;
 
+
+import com.alibaba.fastjson.annotation.JSONField;
+import org.codehaus.jackson.annotate.JsonIgnore;
+
 import javax.persistence.*;
 import java.io.Serializable;
 import java.sql.Timestamp;
@@ -391,6 +395,8 @@ public class User implements Serializable {
         this.lock = lock;
     }
 
+    @JsonIgnore
+    @JSONField(serialize = false)
     public UserRecord getUserRecord() {
         return userRecord;
     }
@@ -399,6 +405,8 @@ public class User implements Serializable {
         this.userRecord = userRecord;
     }
 
+    @JsonIgnore
+    @JSONField(serialize = false)
     public List<UserQuestion> getQuestions() {
         return questions;
     }
@@ -407,6 +415,8 @@ public class User implements Serializable {
         this.questions = questions;
     }
 
+    @JsonIgnore
+    @JSONField(serialize = false)
     public List<Userspace> getUserspaces() {
         return userspaces;
     }

+ 6 - 6
sso-server/src/main/java/com/uas/sso/entity/UserValid.java

@@ -54,19 +54,19 @@ public class UserValid implements Serializable {
     /**
      * 审核人
      */
-    @Column(name = "auditor", nullable = false)
+    @Column(name = "auditor")
     private String auditor;
 
     /**
      * 审核日期
      */
-    @Column(name = "valid_date", nullable = false)
-    private String validDate;
+    @Column(name = "valid_date")
+    private Timestamp validDate;
 
     /**
      * 审核不通过原因
      */
-    @Column(name = "invalid_reason", nullable = false, length = 1000)
+    @Column(name = "invalid_reason", length = 1000)
     private String invalidReason;
 
     public UserValid() {
@@ -120,11 +120,11 @@ public class UserValid implements Serializable {
         this.auditor = auditor;
     }
 
-    public String getValidDate() {
+    public Timestamp getValidDate() {
         return validDate;
     }
 
-    public void setValidDate(String validDate) {
+    public void setValidDate(Timestamp validDate) {
         this.validDate = validDate;
     }
 

+ 5 - 0
sso-server/src/main/java/com/uas/sso/entity/Userspace.java

@@ -1,5 +1,8 @@
 package com.uas.sso.entity;
 
+import com.alibaba.fastjson.annotation.JSONField;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+
 import javax.persistence.*;
 import java.io.Serializable;
 import java.sql.Timestamp;
@@ -411,6 +414,8 @@ public class Userspace implements Serializable {
         this.domain = domain;
     }
 
+    @JsonIgnore
+    @JSONField(serialize = false)
     public List<User> getUsers() {
         return users;
     }

+ 63 - 0
sso-server/src/main/java/com/uas/sso/service/ApplyUserSpaceService.java

@@ -0,0 +1,63 @@
+package com.uas.sso.service;
+
+import org.springframework.data.domain.Page;
+import com.uas.sso.entity.ApplyUserSpace;
+
+import java.util.Map;
+
+/**
+ * @author wangmh
+ * @create 2018-01-12 16:18
+ * @desc
+ **/
+public interface ApplyUserSpaceService {
+
+    /**
+     * 用户申请绑定企业
+     *
+     * @param mobile 手机号
+     * @param spaceName 企业名称
+     * @param businessCode 企业营业执照号
+     */
+    void applyBindUserSpace(String mobile, String spaceName, String businessCode);
+
+    /**
+     * 根据企业营业执照号找到申请企业的申请
+     * @param pageNumber 页号
+     * @param pageSize 每页个数
+     * @param spaceUU 企业uu号
+     * @return
+     */
+    Page<ApplyUserSpace> findApplyAll(Integer pageNumber, Integer pageSize, Long spaceUU);
+
+    /**
+     * 根据企业营业执照号查询当前企业的审批数量
+     * @param spaceUU 企业uu号
+     * @return
+     */
+    Map<String, Integer> applyCount(Long spaceUU);
+
+    /**
+     * 根据手机号分页查询申请记录
+     * @param pageNumber 页数
+     * @param pageSize 每页个数
+     * @param userUU 用户uu号
+     * @return
+     */
+    Page<ApplyUserSpace> findUserApply(Integer pageNumber, Integer pageSize, Long userUU);
+
+    /**
+     * 同意申请
+     * @param userUU 用户UU号
+     * @param id 申请id
+     */
+    void agreeApply(Long userUU, Long id);
+
+    /**
+     * 不同意申请
+     * @param userUU 用户uu号
+     * @param id 申请id
+     */
+    void disagreeApply(Long userUU, Long id);
+
+}

+ 17 - 0
sso-server/src/main/java/com/uas/sso/service/UserService.java

@@ -2,6 +2,7 @@ package com.uas.sso.service;
 
 import com.uas.sso.entity.User;
 import com.uas.sso.entity.UserRecord;
+import org.springframework.data.domain.Page;
 
 /**
  * 用户信息service
@@ -174,4 +175,20 @@ public interface UserService {
      * @param newEmail 新邮箱
      */
     void updateEmail(Long userUU, String newEmail);
+
+    /**
+     * 根据企业uu号查找企业uu
+     * @param page 页数
+     * @param size 大小
+     * @param spaceUU 企业uu号
+     * @return
+     */
+    Page<User> findMemberBySpaceUU(int page, int size, Long spaceUU);
+
+    /**
+     * 用户绑定企业
+     * @param userUU 用户uu号
+     * @param spaceUU 绑定的企业uu号
+     */
+    void bindUserspace(Long userUU, Long spaceUU);
 }

+ 1 - 2
sso-server/src/main/java/com/uas/sso/service/UserValidService.java

@@ -12,7 +12,6 @@ public interface UserValidService {
     /**
      * 用户提交审核
      * @param user 用户提交的信息
-     * @param submitterUU 提交信息的用户uu号
      */
-    void submitValid(User user, Long submitterUU);
+    void submitValid(User user);
 }

+ 4 - 2
sso-server/src/main/java/com/uas/sso/service/UserspaceService.java

@@ -2,6 +2,7 @@ package com.uas.sso.service;
 
 import com.uas.sso.entity.User;
 import com.uas.sso.entity.Userspace;
+import org.springframework.data.domain.Page;
 
 /**
  * 企业service
@@ -62,10 +63,11 @@ public interface UserspaceService {
      *
      * @author wangmh
      * @date 2018/1/11 14:23
-     * @param userspace 企业信息
+     * @param validSpace 认证企业
+     * @param userspace 认证企业提交的信息(不是企业完整的信息)
      * @param submitter 申请人
      */
-    void submitValidInfo(Userspace userspace, User submitter);
+    void submitValidInfo(Userspace validSpace, Userspace userspace, User submitter);
 
     /**
      * 根据企业uu号查找企业信息

+ 177 - 0
sso-server/src/main/java/com/uas/sso/service/impl/ApplyUserSpaceServiceImpl.java

@@ -0,0 +1,177 @@
+package com.uas.sso.service.impl;
+
+import com.uas.sso.support.SystemSession;
+import org.springframework.data.domain.Page;
+import com.uas.sso.core.Status;
+import com.uas.sso.dao.ApplyUserSpaceDao;
+import com.uas.sso.dao.UserDao;
+import com.uas.sso.dao.UserspaceDao;
+import com.uas.sso.entity.*;
+import com.uas.sso.exception.VisibleError;
+import com.uas.sso.service.AppService;
+import com.uas.sso.service.ApplyUserSpaceService;
+import com.uas.sso.service.UserService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.domain.PageRequest;
+import org.springframework.data.domain.Pageable;
+import org.springframework.data.jpa.domain.Specification;
+import org.springframework.stereotype.Service;
+import org.springframework.util.CollectionUtils;
+
+import javax.persistence.criteria.CriteriaBuilder;
+import javax.persistence.criteria.CriteriaQuery;
+import javax.persistence.criteria.Predicate;
+import javax.persistence.criteria.Root;
+import java.sql.Timestamp;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+
+/**
+ * @author wangmh
+ * @create 2018-01-12 16:19
+ * @desc
+ **/
+@Service
+public class ApplyUserSpaceServiceImpl implements ApplyUserSpaceService {
+
+    @Autowired
+    private ApplyUserSpaceDao applyUserSpaceDao;
+
+    @Autowired
+    private UserDao userDao;
+
+    @Autowired
+    private UserspaceDao userspaceDao;
+
+    @Autowired
+    private UserService userService;
+
+    @Autowired
+    private AppService appService;
+
+    @Override
+    public void applyBindUserSpace(String mobile, String spaceName, String businessCode) {
+        // 找到用户信息
+        User user = userDao.findByMobile(mobile);
+        if (user == null) {
+            throw new VisibleError("手机号未注册");
+        }
+
+        // 找到企业信息
+        Userspace userspace = userspaceDao.findBySpaceName(spaceName);
+        if (userspace == null) {
+            throw new VisibleError("该企业未注册");
+        }
+
+        // 判断用户是否在该企业
+        for (Userspace us : user.getUserspaces()) {
+            if (us.getSpaceUU().equals(userspace.getSpaceUU())) {
+                throw new VisibleError("你已在该企业");
+            }
+        }
+
+        // 判断是否已申请
+        List<ApplyUserSpace> applyUserSpaces = applyUserSpaceDao.findByUserUUAndSpaceUUAndStatus(user.getUserUU(), userspace.getSpaceUU(), Status.UNAUDIT.getCode());
+        if (!CollectionUtils.isEmpty(applyUserSpaces)) {
+            throw new VisibleError("你已申请该企业,请耐心等待管理员审核");
+        }
+
+        // 添加绑定状态
+        ApplyUserSpace applyUserSpace = new ApplyUserSpace(user, userspace);
+        applyUserSpaceDao.save(applyUserSpace);
+    }
+
+    @Override
+    public Page<ApplyUserSpace> findApplyAll(Integer pageNumber, Integer pageSize, Long spaceUU) {
+        Pageable pageable = new PageRequest(pageNumber, pageSize);
+        Page<ApplyUserSpace> page = applyUserSpaceDao.findAll(new Specification<ApplyUserSpace>() {
+            @Override
+            public Predicate toPredicate(Root<ApplyUserSpace> root,
+                                         CriteriaQuery<?> query, CriteriaBuilder cb) {
+                List<Predicate> list = new ArrayList<>();
+                list.add(cb.equal(root.get("spaceUU").as(Long.class), spaceUU));
+                Predicate[] predicates = new Predicate[list.size()];
+                predicates = list.toArray(predicates);
+                return cb.and(predicates);
+            }
+        }, pageable);
+
+        return page;
+    }
+
+    @Override
+    public Map<String, Integer> applyCount(Long spaceUU) {
+        List<Map<String, Object>> list = applyUserSpaceDao.applyCountByStatus(spaceUU);
+        Map<String, Integer> data = new HashMap<>(list.size());
+        for (Map<String, Object> map : list) {
+            data.put(String.valueOf(map.get("status")), Integer.valueOf(map.get("count").toString()));
+        }
+        return data;
+    }
+
+    @Override
+    public Page<ApplyUserSpace> findUserApply(Integer pageNumber, Integer pageSize, Long userUU) {
+        Pageable pageable = new PageRequest(pageNumber, pageSize);
+        return applyUserSpaceDao.findAll(new Specification<ApplyUserSpace>() {
+            @Override
+            public Predicate toPredicate(Root<ApplyUserSpace> root,
+                                         CriteriaQuery<?> query, CriteriaBuilder cb) {
+                List<Predicate> list = new ArrayList<>();
+                list.add(cb.equal(root.get("userUU").as(String.class), userUU));
+                Predicate[] predicates = new Predicate[list.size()];
+                predicates = list.toArray(predicates);
+                return cb.and(predicates);
+            }
+        }, pageable);
+    }
+
+    @Override
+    public void agreeApply(Long userUU, Long id) {
+        // 判断当前用户是否为管理员
+        UserAccount loginUser = SystemSession.getUserAccount();
+        Userspace userspace = userspaceDao.findOne(loginUser.getSpaceUU());
+        if (loginUser.getSpaceUU().equals(userspace.getAdminUU())) {
+            throw new VisibleError("不是管理员,不允许操作");
+        }
+
+        // 找到申请信息
+        ApplyUserSpace applyUserSpace = applyUserSpaceDao.findOne(id);
+        if (!userUU.equals(applyUserSpace.getUserUU())) {
+            // 简单的校验下参数
+            throw new VisibleError("参数错误");
+        }
+
+        // 修改状态
+        applyUserSpace.setStatus(Status.AGREE.getCode());
+        applyUserSpace.setProcessTime(new Timestamp(System.currentTimeMillis()));
+        applyUserSpaceDao.save(applyUserSpace);
+
+        // 将用户添加到企业
+        userService.bindUserspace(userUU, loginUser.getSpaceUU());
+    }
+
+    @Override
+    public void disagreeApply(Long userUU, Long id) {
+        // 判断当前用户是否为管理员
+        UserAccount loginUser = SystemSession.getUserAccount();
+        Userspace userspace = userspaceDao.findOne(loginUser.getSpaceUU());
+        if (loginUser.getSpaceUU().equals(userspace.getAdminUU())) {
+            throw new VisibleError("不是管理员,不允许操作");
+        }
+
+        // 找到申请信息
+        ApplyUserSpace applyUserSpace = applyUserSpaceDao.findOne(id);
+        if (!userUU.equals(applyUserSpace.getUserUU())) {
+            // 简单的校验下参数
+            throw new VisibleError("参数错误");
+        }
+
+        // 修改状态
+        applyUserSpace.setStatus(Status.DISAGREE.getCode());
+        applyUserSpace.setProcessTime(new Timestamp(System.currentTimeMillis()));
+        applyUserSpaceDao.save(applyUserSpace);
+    }
+}

+ 41 - 20
sso-server/src/main/java/com/uas/sso/service/impl/UserServiceImpl.java

@@ -18,22 +18,23 @@ import com.uas.sso.logging.UserBufferedLogger;
 import com.uas.sso.service.AppService;
 import com.uas.sso.service.UserService;
 import com.uas.sso.service.UserValidService;
-import com.uas.sso.support.SystemSession;
+import com.uas.sso.service.UserspaceService;
 import com.uas.sso.util.AccountTypeUtils;
-import com.uas.sso.util.BeanUtil;
 import com.uas.sso.util.ExecuteUtils;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.PageRequest;
+import org.springframework.data.domain.Pageable;
+import org.springframework.data.jpa.domain.Specification;
 import org.springframework.stereotype.Service;
 import org.springframework.util.CollectionUtils;
 import org.springframework.util.StringUtils;
 
 import com.uas.sso.exception.AccountException;
 
-import javax.persistence.EntityManager;
-import javax.persistence.PersistenceContext;
-import javax.persistence.TypedQuery;
+import javax.persistence.criteria.*;
 import java.sql.Timestamp;
-import java.util.Arrays;
+import java.util.ArrayList;
 import java.util.List;
 
 /**
@@ -54,6 +55,9 @@ public class UserServiceImpl implements UserService {
     @Autowired
     private UserValidService userValidService;
 
+    @Autowired
+    private UserspaceService userspaceService;
+
     @Autowired
     private AppService appService;
 
@@ -276,21 +280,8 @@ public class UserServiceImpl implements UserService {
             throw new VisibleError("该身份证号已被认证,请确认");
         }
 
-        // 根据登录信息找到用户
-        UserAccount userAccount = SystemSession.getUserAccount();
-        User oldUser = userDao.findOne(userAccount.getUserUU());
-
-        // 将数据拷贝到原用户中
-        BeanUtil.copyProperties(user, oldUser, true);
-
-        // 设置用户真实身份未待认证状态
-        oldUser.setIdentityValidCode((short) Status.TO_BE_CERTIFIED.getCode());
-
-        // 保存用户信息
-        userDao.save(oldUser);
-
         // 保存日志
-        userValidService.submitValid(user, oldUser.getUserUU());
+        userValidService.submitValid(user);
     }
 
     @Override
@@ -337,6 +328,36 @@ public class UserServiceImpl implements UserService {
         syncUserInfo(user.getUserUU());
     }
 
+    @Override
+    public Page<User> findMemberBySpaceUU(int page, int size, Long spaceUU) {
+        Pageable pageable = new PageRequest(page, size);
+        Page<User> pUsers = userDao.findAll(new Specification<User>() {
+            @Override
+            public Predicate toPredicate(Root<User> root, CriteriaQuery<?> query, CriteriaBuilder cb) {
+                List<Predicate> list = new ArrayList<>();
+                list.add(cb.equal(root.join("userspaces", JoinType.INNER).get("spaceUU").as(Long.class), spaceUU));
+                Predicate[] predicates = new Predicate[list.size()];
+                predicates = list.toArray(predicates);
+                return cb.and(predicates);
+            }
+        }, pageable);
+        return pUsers;
+    }
+
+    @Override
+    public void bindUserspace(Long userUU, Long spaceUU) {
+        // 找到用户和企业
+        User user = findOne(userUU);
+        Userspace userspace = userspaceService.findOne(spaceUU);
+
+        // 将企业添加到用户列表上
+        List<Userspace> userspaces = user.getUserspaces();
+        userspaces.add(userspace);
+
+        // 保存
+        userDao.save(user);
+    }
+
     /**
      * 同步用户信息到各个应用
      * @param userUU 用户uu号

+ 2 - 2
sso-server/src/main/java/com/uas/sso/service/impl/UserValidServiceImpl.java

@@ -23,13 +23,13 @@ public class UserValidServiceImpl implements UserValidService {
     private UserValidDao userValidDao;
 
     @Override
-    public void submitValid(User user, Long submitterUU) {
+    public void submitValid(User user) {
         // 初始化提交日志
         UserValid userValid = new UserValid();
         userValid.setSubmitDate(new Timestamp(System.currentTimeMillis()));
         userValid.setValidCode((short) Status.TO_BE_CERTIFIED.getCode());
         userValid.setSubmitInfo(JSON.toJSONString(user));
-        userValid.setSubmitterUU(submitterUU);
+        userValid.setSubmitterUU(user.getUserUU());
 
         // 保存提交日志
         userValidDao.save(userValid);

+ 3 - 14
sso-server/src/main/java/com/uas/sso/service/impl/UserspaceServiceImpl.java

@@ -160,7 +160,7 @@ public class UserspaceServiceImpl implements UserspaceService {
     }
 
     @Override
-    public void submitValidInfo(Userspace userspace, User submitter) {
+    public void submitValidInfo(Userspace validSpace, Userspace userspace, User submitter) {
         // 校验企业名和营业执照是否被认证
         boolean isValid = spaceNameIsValid(userspace.getSpaceName());
         if (isValid) {
@@ -171,20 +171,9 @@ public class UserspaceServiceImpl implements UserspaceService {
             throw new VisibleError("该企业营业执照号已被认证,请确认");
         }
 
-        // 根据企业名找到原企业信息
-        Userspace oldUserspace = userspaceDao.findBySpaceName(userspace.getSpaceName());
-
-        // 将数据拷贝到原企业中
-        BeanUtil.copyProperties(userspace, oldUserspace, true);
-
-        // 设置企业未待认证状态
-        oldUserspace.setValidCode((short) Status.TO_BE_CERTIFIED.getCode());
-
-        // 保存企业信息
-        userspaceDao.save(oldUserspace);
-
         // 添加提交申请日志
-        userspaceValidService.submitValid(oldUserspace, submitter);
+        userspace.setSpaceUU(validSpace.getSpaceUU());
+        userspaceValidService.submitValid(userspace, submitter);
     }
 
     @Override