Browse Source

接口添加

wangmh 7 years ago
parent
commit
78968b0237

+ 13 - 0
sso-common/src/main/java/com/uas/sso/entity/UserSpaceView.java

@@ -35,6 +35,11 @@ public class UserSpaceView {
      */
     private UserView admin;
 
+    /**
+     * 管理员uu号
+     */
+    private Long adminUU;
+
     /**
      * 营业执照号
      */
@@ -115,6 +120,14 @@ public class UserSpaceView {
         this.admin = admin;
     }
 
+    public Long getAdminUU() {
+        return adminUU;
+    }
+
+    public void setAdminUU(Long adminUU) {
+        this.adminUU = adminUU;
+    }
+
     public String getBusinessCode() {
         return businessCode;
     }

+ 89 - 4
sso-common/src/main/java/com/uas/sso/util/AccountUtils.java

@@ -5,13 +5,13 @@ import com.alibaba.fastjson.JSONObject;
 import com.alibaba.fastjson.TypeReference;
 import com.uas.sso.AccountConfig;
 import com.uas.sso.ResultWrap;
+import com.uas.sso.SSOHelper;
 import com.uas.sso.common.util.HttpUtil;
 import com.uas.sso.entity.*;
 import com.uas.sso.support.Page;
 import org.springframework.ui.ModelMap;
 import org.springframework.util.StringUtils;
 
-import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
 
@@ -102,7 +102,7 @@ public class AccountUtils {
     }
 
     /**
-     * 用户绑定企业
+     * 企业添加已注册用户
      * @param userUU 用户uu号
      * @param spaceUU 企业uu号
      * @throws Exception
@@ -126,12 +126,97 @@ public class AccountUtils {
         }
     }
 
+    /**
+     * 企业添加未注册用户
+     * @param spaceUU
+     * @param user
+     * @throws Exception
+     */
+    public static void addUser(Long spaceUU, UserView user) throws Exception {
+        String saveUrl = AccountConfig.getUserSaveUrl();
+        if (!StringUtils.isEmpty(saveUrl)) {
+            JSONObject formData = JSON.parseObject(JSON.toJSONString(user));
+            formData.put("_operate", "add");
+            formData.put("spaceUU", spaceUU);
+            HttpUtil.ResponseWrap res = HttpUtil.doPost(saveUrl, formData);
+            if (!res.isSuccess()) {
+                throw new Exception(res.getContent());
+            } else {
+                ResultWrap result = JSON.parseObject(res.getContent(), ResultWrap.class);
+                if (!result.isSuccess()) {
+                    throw new Exception(result.getErrMsg());
+                }
+            }
+        }
+    }
+
+    /**
+     * 修改用户信息
+     *
+     * @param user
+     * @return
+     * @throws Exception
+     */
+    public static List<UserView> saveUser(UserView user, Object spaceDialectUID) throws Exception {
+        String saveUrl = AccountConfig.getUserSaveUrl();
+        String appId = SSOHelper.getSSOService().getConfig().getAppName();
+        if (!StringUtils.isEmpty(saveUrl)) {
+            JSONObject formData = new JSONObject();
+            if (user != null) {
+                formData = JSON.parseObject(JSON.toJSONString(user));
+            }
+
+//            HttpUtil.ResponseWrap res = HttpUtil.doPost(saveUrl, formData);
+//            if (!res.isSuccess()) {
+//                throw new Exception(res.getContent());
+//            } else {
+//                ResultWrap result = JSON.parseObject(res.getContent(), ResultWrap.class);
+//                if (result.isError()) {
+//                    throw new Exception(result.getErrMsg());
+//                } else {
+//                    return JSON.parseArray(JSON.toJSONString(result.getContent()), UserView.class);
+//                }
+//            }
+        }
+        return null;
+    }
+
+
+    /**
+     * 根据企业名查询企业详情
+     *
+     * @author wangmh
+     * @date 2018/1/13 10:13
+     * @param name 企业名
+     * @return 企业详情
+     * @throws Exception
+     */
+    public static UserSpaceDetail findByName(String name) throws Exception {
+        String url = AccountConfig.getSpaceSaveUrl();
+        if (!StringUtils.isEmpty(url)) {
+            url = url + "/detail/info";
+            HttpUtil.ResponseWrap res = HttpUtil.doGet(url,
+                    new ModelMap("name", name));
+            if (!res.isSuccess()) {
+                throw new Exception(res.getContent());
+            } else {
+                ResultWrap result = JSON.parseObject(res.getContent(), ResultWrap.class);
+                if (!result.isSuccess()) {
+                    throw new Exception(result.getErrMsg());
+                } else if (result.getContent() != null){
+                    return JSON.parseObject(result.getContent().toString(), UserSpaceDetail.class);
+                }
+            }
+        }
+        return null;
+    }
+
     /**
      * 根据营业执照号获得企业信息
      * @param businessCode 营业执照号
      * @return
      */
-    public UserSpaceView findByBusinessCode(String businessCode) throws Exception {
+    public static UserSpaceView findByBusinessCode(String businessCode) throws Exception {
         String saveUrl = AccountConfig.getSpaceSaveUrl();
         if (!StringUtils.isEmpty(saveUrl)) {
             ModelMap formData = new ModelMap();
@@ -157,7 +242,7 @@ public class AccountUtils {
      * @param spaceName 企业名
      * @return
      */
-    public UserSpaceView findBySpaceName(String spaceName) throws Exception {
+    public static UserSpaceView findBySpaceName(String spaceName) throws Exception {
         String saveUrl = AccountConfig.getSpaceSaveUrl();
         if (!StringUtils.isEmpty(saveUrl)) {
             ModelMap formData = new ModelMap();

+ 30 - 4
sso-server/src/main/java/com/uas/sso/controller/PartnershipManagerController.java

@@ -1,16 +1,18 @@
 package com.uas.sso.controller;
 
+import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
+import com.alibaba.fastjson.TypeReference;
+import com.uas.sso.ResultWrap;
+import com.uas.sso.common.util.HttpUtil;
 import com.uas.sso.entity.InvitationRecord;
 import com.uas.sso.entity.PartnershipRecord;
 import com.uas.sso.entity.RequestStatus;
-import com.uas.sso.entity.UserSpaceView;
 import com.uas.sso.exception.VisibleError;
 import com.uas.sso.service.PartnershipService;
 import com.uas.sso.service.UserspaceService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.domain.Page;
-import org.springframework.stereotype.Controller;
 import org.springframework.ui.ModelMap;
 import org.springframework.web.bind.annotation.*;
 
@@ -18,13 +20,13 @@ import java.util.List;
 
 /**
  * 为平台和ERP用户提供公共接口查询当前企业的合作伙伴
- * 
+ *
  * @author hejq
  * @time 创建时间:2017年1月17日
  */
 @RestController
 @RequestMapping(value = "/api/partners")
-public class PartnershipManagerController {
+public class PartnershipManagerController extends BaseController {
 
 	@Autowired
 	private PartnershipService partnershipService;
@@ -182,4 +184,28 @@ public class PartnershipManagerController {
 		InvitationRecord record = JSONObject.parseObject(jsonStr, InvitationRecord.class);
 		partnershipService.invite(record);
 	}
+
+	@RequestMapping("/addAll")
+    public ModelMap addPartnership() {
+        String url = "http://192.168.253.66:8080/api/partners";
+        try {
+            ModelMap data = new ModelMap("_operate", "getAllRequest");
+            data.put("pageNumber", 1);
+            data.put("pageSize", 20);
+            HttpUtil.ResponseWrap responseWrap = HttpUtil.doGet(url, data);
+            if (responseWrap.isSuccess()) {
+                com.uas.account.support.Page<PartnershipRecord> page = JSON.parseObject(responseWrap.getContent(), new TypeReference<com.uas.account.support.Page<PartnershipRecord>>() {});
+                List<PartnershipRecord> partnershipRecords = page.getContent();
+                for (int i = 0; i < partnershipRecords.size(); i++) {
+                    PartnershipRecord partnershipRecord = partnershipRecords.get(i);
+                    partnershipRecord.setVendSpaceUU(userSpaceService.findByBusinessCode(partnershipRecord.getVendBusinessCode()).getSpaceUU());
+                    partnershipRecord.setVendSpaceUU(userSpaceService.findByBusinessCode(partnershipRecord.getCustBusinessCode()).getSpaceUU());
+                    partnershipService.save(partnershipRecord);
+                }
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return success();
+    }
 }

+ 226 - 39
sso-server/src/main/java/com/uas/sso/controller/UserManagerController.java

@@ -1,12 +1,17 @@
 package com.uas.sso.controller;
 
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
 import com.uas.account.entity.UserDetail;
+import com.uas.account.exception.AccountException;
 import com.uas.account.support.Page;
 import com.uas.account.util.AccountUtils;
+import com.uas.sso.common.util.HttpUtil;
 import com.uas.sso.core.Const;
 import com.uas.sso.core.Status;
 import com.uas.sso.entity.User;
 import com.uas.sso.entity.UserRecord;
+import com.uas.sso.entity.UserView;
 import com.uas.sso.entity.Userspace;
 import com.uas.sso.service.ApplyUserSpaceService;
 import com.uas.sso.service.UserService;
@@ -16,10 +21,17 @@ import org.springframework.ui.ModelMap;
 import org.springframework.util.StringUtils;
 import org.springframework.web.bind.annotation.*;
 
+import java.io.File;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.io.PrintWriter;
 import java.sql.Timestamp;
+import java.util.ArrayList;
 import java.util.List;
 import java.util.Set;
 
+import static org.springframework.data.jpa.domain.AbstractPersistable_.id;
+
 /**
  * 用户信息管理controller
  *
@@ -39,6 +51,26 @@ public class UserManagerController extends BaseController {
     @Autowired
     private ApplyUserSpaceService applyUserSpaceService;
 
+    /**
+     * 用户信息新增、修改
+     *
+     * @param userView
+     * @return
+     */
+    @RequestMapping(method = RequestMethod.POST)
+    @ResponseBody
+    public ModelMap apiSave(@RequestBody UserView userView, String appId) {
+        if (userView == null || appId == null) {
+            throw new AccountException("参数错误");
+        }
+        User user = new User();
+        if (userView.getUserUU() != null) {
+             user = userService.findOne(userView.getUserUU());
+        }
+
+        return success(userService.save(user));
+    }
+
     /**
      * 校验手机号是否被注册
      *
@@ -80,13 +112,13 @@ public class UserManagerController extends BaseController {
      * 根据企业uu号查询企业下所有用户信息
      * @author wangmh
      * @date 2018/1/26 14:43
-     * @param page 当前页数 (0开始)
+     * @param page 当前页数
      * @param size 每页大小
      * @param spaceUU 企业uu号
      * @return org.springframework.data.domain.Page, content 为用户信息集合
      */
     @RequestMapping(value = "/find/member", method = RequestMethod.GET)
-    public ModelMap findMember(@RequestParam(defaultValue = "0") int page, @RequestParam(defaultValue = "20") int size, Long spaceUU) {
+    public ModelMap findMember(@RequestParam(defaultValue = "1") int page, @RequestParam(defaultValue = "20") int size, Long spaceUU) {
         return success(userService.findMemberBySpaceUU(page, size, spaceUU));
     }
 
@@ -120,12 +152,12 @@ public class UserManagerController extends BaseController {
     /**
      * 根据用户uu号查询分页查询申请信息
      * @param userUU 用户uu号
-     * @param page 当前页(从0开始),默认值为0
+     * @param page 当前页,默认值为1
      * @param size 每页大小,默认值为20
      * @return org.springframework.data.domain.Page,content为ApplyUserSpace集合
      */
     @RequestMapping(value = "/apply/info", method = RequestMethod.GET)
-    public ModelMap findApplyInfo(Long userUU, @RequestParam(defaultValue = "0") int page, @RequestParam(defaultValue = "20") int size) {
+    public ModelMap findApplyInfo(Long userUU, @RequestParam(defaultValue = "1") int page, @RequestParam(defaultValue = "20") int size) {
         return success(applyUserSpaceService.findApplyByUserUU(userUU, page, size));
     }
 
@@ -144,6 +176,42 @@ public class UserManagerController extends BaseController {
         return success();
     }
 
+    /**
+     * 企业添加已注册用户
+     * @param userUU 企业uu号
+     * @param spaceUU 企业uu号
+     * @return
+     */
+    @RequestMapping(params = "_operate=bind", method = RequestMethod.POST)
+    public ModelMap addUser(Long userUU, Long spaceUU) {
+        if (StringUtils.isEmpty(userUU) || StringUtils.isEmpty(spaceUU)) {
+            return error("参数错误");
+        }
+        userService.bindUserspace(userUU, spaceUU);
+        return success();
+    }
+
+    /**
+     * 企业添加已注册用户
+     * @param user 用户信息
+     * @param spaceUU 企业uu号
+     * @return
+     */
+    @RequestMapping(params = "_operate=add", method = RequestMethod.POST)
+    public ModelMap addUser(User user, Long spaceUU) {
+        // 参数判断
+        if (user == null || user.getUserUU() != null || spaceUU == null) {
+            return error("参数错误");
+        }
+
+        // 注册新用户,无密码则使用默认密码
+        if (StringUtils.isEmpty(user.getPassword())) {
+            user.setPassword("111111");
+        }
+        userService.register(user);
+        return success();
+    }
+
     /**
      * 接口调用验证密码登录
      *
@@ -179,48 +247,167 @@ public class UserManagerController extends BaseController {
      * @return
      */
     @RequestMapping(value = "/sync", method = RequestMethod.GET)
-    public ModelMap sync() {
-        try {
-            Page<UserDetail> pUsers = AccountUtils.findAllUserDetail(null, null, 1, 20);
+    public ModelMap sync(@RequestParam(defaultValue = "1") int pageNumber, @RequestParam(defaultValue = "20") int pageSize, @RequestParam(defaultValue = "true") boolean isAll) {
+        Page<UserDetail> pUsers = null;
+        List<String> repeatMobile = new ArrayList<>();
+        do {
+            // 获取数据
+            try {
+                pUsers = AccountUtils.findAllUserDetail(null, null, pageNumber++, pageSize);
+            } catch (Exception e) {
+                writerToFile("pageNumber" + (pageNumber-1), null, e.getMessage());
+            }
+            int i = 1;
+            String lastMobile = null;
+            System.out.println("------------ start pageNumber:"+(pageNumber-1)+"pageSize"+pageSize+"-------------");
             for (UserDetail detail : pUsers.getContent()) {
-                User user = new User();
-                UserRecord userRecord = new UserRecord();
-                user.setMobile(detail.getMobile().trim());
-                user.setMobileValidCode((short) Status.AUTHENTICATED.getCode());
-                user.setEmail(detail.getEmail().trim());
-
-                user.setRegisterDate(new Timestamp(System.currentTimeMillis()));
-                user.setVipName(detail.getName());
-                user.setUserRecord(userRecord);
-                userRecord.setLastLoginTime(new Timestamp(detail.getLastLoginTime()));
-                userRecord.setUser(user);
-                List<com.uas.account.entity.User> userInfos = AccountUtils.getUserInfoByUid(detail.getMobile());
-                boolean updateB2b = false;
-                for (com.uas.account.entity.User userInfo : userInfos) {
-                    // 设置密码、盐值、uu号
-                    if (userInfo.getAppId().equals("b2b")) {
-                        if (updateB2b) {
-                            continue;
-                        }
-                        if (!StringUtils.isEmpty(userInfo.getDialectUID()) && !StringUtils.isEmpty(userInfo.getSalt()) && !StringUtils.isEmpty(userInfo.getPassword())) {
-                            user.setUserUU(Long.parseLong(userInfo.getDialectUID()));
-                            user.setPassword(userInfo.getPassword());
-                            user.setSalt(userInfo.getSalt());
-                            updateB2b = true;
-                        }
-                    }
-                    // 设置imId
-                    if (StringUtils.isEmpty(user.getImId()) && userInfo.getAppId().equals("im")) {
-                        user.setImId(userInfo.getDialectUID());
-                        continue;
+                try {
+                    // 将数据保存
+                    if (lastMobile != null && lastMobile.equals(detail.getMobile())) {
+                        repeatMobile.add(lastMobile);
                     }
+                    saveUser(detail);
+                    lastMobile = detail.getMobile();
+                    System.out.println(((pageNumber - 2) * pageSize + i++) + "\t" + detail.getMobile() + "\t" + detail.getName());
+                } catch (Exception e) {
+                    writerToFile("pageNumber:"+(pageNumber-1)+"pageSize"+pageSize, detail.getMobile(), e.getMessage());
                 }
+            }
+            System.out.println("------------ end pageNumber:"+(pageNumber-1)+"pageSize"+pageSize+"-------------");
+        } while (isAll && (pUsers == null || !pUsers.isLast()));
+        updateEmailUnique();
+        return success(repeatMobile);
+    }
+
+    private void updateEmailUnique() {
+        List<String> emails = userService.findRepeatEmail();
+        for (String email : emails) {
+            List<User> users = userService.findByEmail(email);
+            for (int i = 0; i<users.size(); i++) {
+                User user = users.get(i);
+                user.setEmail(email + Const.REPEAT_SEPARATOR + (i + 1));
+                user.setEmailValidCode((short) Status.NOT_APPLYING.getCode());
                 userService.save(user);
-                
+            }
+        }
+    }
+
+    public void saveUser(UserDetail detail) throws Exception {
+        User user = new User();
+
+        // 手机号判空,正则判断
+        if (StringUtils.isEmpty(detail.getMobile())) {
+            user.setMobile("mobile" + System.currentTimeMillis());
+            user.setMobileValidCode((short) Status.NOT_APPLYING.getCode());
+        } else {
+            user.setMobile(detail.getMobile().trim());
+            user.setMobileValidCode(user.getMobile().matches(Const.REGEXP_MOBILE_CONTINENT) ? (short) Status.AUTHENTICATED.getCode() : (short) Status.NOT_APPLYING.getCode());
+        }
+
+        // 邮箱判空,正则判断
+        if (StringUtils.isEmpty(detail.getEmail())) {
+            user.setEmail(null);
+            user.setEmailValidCode((short) Status.NOT_APPLYING.getCode());
+        } else {
+            user.setEmail(detail.getEmail().trim());
+            user.setEmailValidCode(user.getEmail().matches(Const.REGEXP_MOBILE_CONTINENT) ? (short) Status.AUTHENTICATED.getCode() : (short) Status.NOT_APPLYING.getCode());
+        }
+
+        // 身份认证状态未申请
+        user.setIdentityValidCode((short) Status.NOT_APPLYING.getCode());
+
+        // 注册时间,现在时间
+        user.setRegisterDate(new Timestamp(System.currentTimeMillis()));
+
+        // 无用户名则为用户加时间戳
+        user.setVipName(StringUtils.isEmpty(detail.getName()) ? "用户"+System.currentTimeMillis() : detail.getName().trim());
+
+        // 获取密码,uu号,颜值,IMID
+        List<com.uas.account.entity.User> userInfos = AccountUtils.getUserInfoByUid(detail.getMobile());
+        boolean updateB2b = false;
+        for (com.uas.account.entity.User userInfo : userInfos) {
+            // 设置密码、盐值、uu号
+            if (userInfo.getAppId().equals("b2b")) {
+                // 判断是否修改过有关b2b的数据
+                if (updateB2b) {
+                    continue;
+                }
+
+                // 用户uu号,盐值,密码都不为空则认为是正确的数据
+                if (!StringUtils.isEmpty(userInfo.getDialectUID()) && !StringUtils.isEmpty(userInfo.getSalt()) && !StringUtils.isEmpty(userInfo.getPassword())) {
+                    user.setUserUU(Long.parseLong(userInfo.getDialectUID()));
+                    user.setPassword(userInfo.getPassword());
+                    user.setSalt(userInfo.getSalt());
+                    updateB2b = true;
+                }
+            }
+            // 设置imId
+            if (StringUtils.isEmpty(user.getImId()) && userInfo.getAppId().equals("im")) {
+                user.setImId(userInfo.getDialectUID());
+                continue;
+            }
+        }
+
+        // 没有uu号先记录,而外处理,不能自动生成
+        if (StringUtils.isEmpty(user.getUserUU())) {
+            // 去b2b 获取,手机号为自动生成的则用邮箱
+            Long userUU = getUserUUFromB2B(user.getMobile().startsWith("mobile") ? user.getEmail() : user.getMobile());
+            user.setUserUU(userUU);
+        }
+
+        // 密码为空处理
+        if (StringUtils.isEmpty(user.getPassword())) {
+            user.setPassword(userService.getEncryPassword(Const.ENCRY_FORMAT, "111111", user.getSalt()));
+        }
+        userService.save(user);
+
+        UserRecord userRecord = new UserRecord();
+        userRecord.setLastLoginTime(StringUtils.isEmpty(detail.getLastLoginTime()) ? null : new Timestamp(detail.getLastLoginTime()));
+        userRecord.setUserUU(user.getUserUU());
+        userService.save(userRecord);
+    }
+
+    private Long getUserUUFromB2B(String keyword) {
+        String url = "http://192.168.253.66:8090/platform-b2b";
+        url = url + "/searchUser";
+        Long userUU = null;
+        try {
+            HttpUtil.ResponseWrap responseWrap = HttpUtil.doGet(url, new ModelMap("keyWord", keyword));
+            if (responseWrap.isSuccess()) {
+                JSONObject userInfo = JSON.parseObject(responseWrap.getContent());
+                userUU = (Long) userInfo.get("userUU");
             }
         } catch (Exception e) {
             e.printStackTrace();
+            writerToFile(keyword, "获取"+keyword+"uu号", e.getMessage());
+        }
+        return userUU;
+    }
+
+
+    /**
+     * 写入日志
+     * @param mobile 用户手机号
+     * @param message 错误信息
+     */
+    private void writerToFile(String id, String mobile, String message) {
+        FileWriter fw = null;
+        try {
+            //如果文件存在,则追加内容;如果文件不存在,则创建文件
+            File f=new File("logs/user.log");
+            fw = new FileWriter(f, true);
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+        PrintWriter pw = new PrintWriter(fw);
+        pw.println(id + "\t" + mobile + "\t" + message);
+        pw.flush();
+        try {
+            fw.flush();
+            pw.close();
+            fw.close();
+        } catch (IOException e) {
+            e.printStackTrace();
         }
-        return null;
     }
 }

+ 284 - 7
sso-server/src/main/java/com/uas/sso/controller/UserspaceManagerController.java

@@ -2,11 +2,25 @@ package com.uas.sso.controller;
 
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
+import com.alibaba.fastjson.TypeReference;
+import com.uas.account.ResultWrap;
 import com.uas.account.entity.AppCreateInfo;
+import com.uas.account.entity.UserSpace;
+import com.uas.account.entity.UserSpaceDetail;
+import com.uas.account.support.Page;
+import com.uas.account.util.AccountUtils;
+import com.uas.sso.AuthToken;
+import com.uas.sso.SSOConfig;
+import com.uas.sso.SSOHelper;
+import com.uas.sso.common.util.HttpUtil;
+import com.uas.sso.core.Const;
+import com.uas.sso.core.Status;
 import com.uas.sso.entity.App;
 import com.uas.sso.entity.User;
 import com.uas.sso.entity.Userspace;
+import com.uas.sso.service.AppService;
 import com.uas.sso.service.ApplyUserSpaceService;
+import com.uas.sso.service.UserService;
 import com.uas.sso.service.UserspaceService;
 import com.uas.sso.util.FastjsonUtils;
 import com.uas.sso.util.FileUrl;
@@ -18,9 +32,14 @@ import org.springframework.util.StringUtils;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.multipart.MultipartFile;
 
-import java.io.UnsupportedEncodingException;
-import java.util.Arrays;
-import java.util.List;
+import java.io.*;
+import java.net.CookieHandler;
+import java.net.CookieManager;
+import java.net.CookiePolicy;
+import java.sql.Timestamp;
+import java.util.*;
+
+import static com.alibaba.fastjson.JSON.parseObject;
 
 /**
  * 企业信息管理controller
@@ -35,6 +54,12 @@ public class UserspaceManagerController extends BaseController {
     @Autowired
     private UserspaceService userspaceService;
 
+    @Autowired
+    private UserService userService;
+
+    @Autowired
+    private AppService appService;
+
     @Autowired
     private ApplyUserSpaceService applyUserSpaceService;
 
@@ -77,7 +102,7 @@ public class UserspaceManagerController extends BaseController {
 
     /**
      * 校验营业执照号是否被认证
-     * 
+     *
      * @author wangmh
      * @date 2018/1/11 10:35
      * @param businessCode 营业执照号
@@ -287,10 +312,10 @@ public class UserspaceManagerController extends BaseController {
 
         // 获取接收到的信息
         List<User> users = JSON.parseArray(userInfos, User.class);
-        Userspace userspace = JSONObject.parseObject(detail, Userspace.class);
+        Userspace userspace = parseObject(detail, Userspace.class);
 
         // 企业注册
-        userspace = userspaceService.register(userspace, userspace.getAdmin());
+        userspace = userspaceService.register(userspace);
 
         // 将用户绑定绑定到注册企业
         userspaceService.addUser(userspace, users);
@@ -323,9 +348,261 @@ public class UserspaceManagerController extends BaseController {
      * @return keys:{listdata:数据}
      */
     @RequestMapping(value = "/userSpaceDetail/keyword", method = RequestMethod.GET)
-    @ResponseBody
     public ModelMap getUserSpaceDetailByKeyword(String keyword, @RequestParam(defaultValue = "1") Integer pageNumber, @RequestParam(defaultValue = "30") Integer pageSize) {
         return StringUtils.isEmpty(keyword) ? new ModelMap("listdata", "请先输入企业名称")
                 : new ModelMap("listdata", userspaceService.findByKeyword(keyword, pageNumber, pageSize).getContent());
     }
+
+    /**
+     * 同步旧企业数据到账户中心
+     * @param spaceUU 企业uu号,为空则同步所有
+     * @return
+     */
+    @RequestMapping("/saveOldUserSpaces/{spaceUU}")
+    public ModelMap syncOldUserSpaces(@PathVariable Long spaceUU, @RequestParam(defaultValue = "1") int pageNumber,
+                                      @RequestParam(defaultValue = "20")int pageSize) {
+        // 由于旧数据问题,记录重复的企业名称和营业执照号
+        Map<String, Integer> repeatSpaceName = new HashMap<>();
+        Map<String, Integer> repeatBusinessCode = new HashMap<>();
+
+        Userspace userspace;
+        Page<UserSpaceDetail> page = null;
+        // 循环分页请求,如果是最后一页则退出循环
+        while (page == null || !page.isLast()) {
+            // 获取分页信息
+            page = getUserSpace(pageNumber++, pageSize);
+
+            // 循环遍历企业信息并保存
+            int i = 1;
+            for (UserSpaceDetail detail : page.getContent()) {
+                try {
+                    userspace = saveUserspace(detail);
+                    System.out.println(page.getNumber() + "\t" + page.getSize() + "\t" + i++ + "\t" + userspace.getSpaceName() + "\t" + userspace.getBusinessCode());
+                } catch (Exception e) {
+                    writerToFile(page.getNumber() + "\t" + page.getSize() + "\t" + i++ + "\t" + detail.getName() + "\t" + detail.getBusinessCode(), e.getMessage());
+                }
+            }
+            spaceNameUnique();
+        }
+        return success();
+    }
+
+    private Userspace saveUserspace(UserSpaceDetail detail) throws Exception {
+        Userspace userspace;
+        userspace = new Userspace();
+        // 设置企业秘钥
+        userspace.setAccessSecret(getAccessSecret(detail.getBusinessCode()));
+        // 设置管理员uu号
+        User user = userService.findByMobile(detail.getAdminTel());
+        userspace.setAdminUU(user == null ? null : user.getUserUU());
+        userspace.setBusinessCode(detail.getBusinessCode());
+        userspace.setBusinessCodeImage(detail.getBusinessCodeImage());
+        userspace.setCorporation(detail.getCorporation());
+        userspace.setDomain(detail.getDomain());
+        userspace.setLogoImage(detail.getLogoImage());
+        userspace.setProfession(detail.getProfession());
+        userspace.setRegAddress(detail.getAddress());
+        userspace.setRegCity(detail.getCity());
+        userspace.setRegDistrict(detail.getDistrict());
+        userspace.setRegProvince(detail.getProvince());
+        userspace.setRegStreet(detail.getStreet());
+        userspace.setRegisterDate(detail.getRegisterDate() == null ? null : new Timestamp(detail.getRegisterDate()));
+        userspace.setSpaceName(detail.getName());
+        // 设置企业uu号
+        userspace.setSpaceUU(getSpaceUU(detail.getBusinessCode()));
+        userspace.setTags(detail.getTags());
+        userspace.setTelephone(detail.getTel());
+        userspace.setValidCode((short) Status.AUTHENTICATED.getCode());
+        if (userspace.getSpaceUU() == null) {
+            throw new Exception("无uu号");
+        }
+
+        // 设置企业用户
+        addUsersByBusinessCode(userspace);
+
+        // 设置默认应用
+        addDefaultApp(userspace);
+        userspaceService.save(userspace);
+        return userspace;
+    }
+
+    private void addDefaultApp(Userspace userspace) throws Exception {
+        if (userspace.getApps() == null) {
+            userspace.setApps(new ArrayList<App>());
+        }
+        String url = "http://192.168.253.66:8080/api/userspace";
+        url = url + "/" + userspace.getBusinessCode();
+        HttpUtil.ResponseWrap res = HttpUtil.doGet(url);
+        if (!res.isSuccess()) {
+            throw new Exception(res.getContent());
+        } else {
+            ResultWrap result = JSON.parseObject(res.getContent(), ResultWrap.class);
+            if (!result.isSuccess()) {
+                throw new Exception(result.getErrMsg());
+            } else if (result.getContent() != null){
+                List<UserSpace> userSpaceList = JSON.parseArray(result.getContent().toString(), UserSpace.class);
+                for (int i=0; i<userSpaceList.size(); i++) {
+                    App app = appService.findOne(userSpaceList.get(i).getAppId());
+                    if (app != null && !userspace.getApps().contains(app)) {
+                        userspace.getApps().add(app);
+                    }
+                }
+                App app = appService.findOne("sso");
+                if (!userspace.getApps().contains(app)) {
+                    userspace.getApps().add(app);
+                }
+            }
+        }
+    }
+
+    private void addUsersByBusinessCode(Userspace userspace) throws Exception {
+        if (userspace.getUsers() == null) {
+            userspace.setUsers(new ArrayList<User>());
+        }
+        int pageNumber = 1;
+        int pageSize = 20;
+        Page<com.uas.account.entity.User> page;
+        String url = "http://192.168.253.66:8080/api/user";
+        url = url + "/findByBusinessCode";
+        do {
+            ModelMap data = new ModelMap();
+            data.put("businessCode", userspace.getBusinessCode());
+            data.put("appId", "b2b");
+            data.put("pageNumber", pageNumber++);
+            data.put("pageSize", pageSize);
+            HttpUtil.ResponseWrap res = HttpUtil.doGet(url, data);
+            if (!res.isSuccess()) {
+                throw new Exception(res.getContent());
+            } else {
+                page = JSON.parseObject(res.getContent(), new TypeReference<Page<com.uas.account.entity.User>>() {});
+                List<com.uas.account.entity.User> users = page.getContent();
+                for (int i = 0; i < users.size(); i++) {
+                    User user = users.get(i).getDialectUID() == null ? userService.findByMobile(users.get(i).getUid()) : userService.findOne(Long.valueOf(users.get(i).getDialectUID()));
+                    if (user != null && !userspace.getUsers().contains(user)) {
+                        userspace.getUsers().add(user);
+                    }
+                }
+            }
+        } while (page == null || !page.isLast());
+    }
+
+    private Long getSpaceUU(String businessCode) throws Exception {
+        if (StringUtils.isEmpty(businessCode)) {
+            return null;
+        }
+
+        String url = "http://192.168.253.66:8080/api/userspace/info";
+        url = url + "/" + businessCode;
+        HttpUtil.ResponseWrap res = null;
+        res = HttpUtil.doGet(url);
+        if(res.isSuccess() && !StringUtils.isEmpty(res.getContent())) {
+            JSONObject jsonObject = JSON.parseObject(res.getContent());
+            if (jsonObject.containsKey("dialectUID")) {
+                return Long.valueOf(jsonObject.get("dialectUID").toString());
+            }
+        }
+        return null;
+    }
+
+    public Page<UserSpaceDetail> getUserSpace(@RequestParam(defaultValue = "1") int pageNumber, @RequestParam(defaultValue = "20") int pageSize) {
+        Page<UserSpaceDetail> page = null;
+        String url = "http://192.168.253.66:8080/api/partners";
+        if(!StringUtils.isEmpty(url)) {
+            HttpUtil.ResponseWrap res = null;
+            try {
+                ModelMap data = new ModelMap("_operate", "getUserSpaces");
+                data.put("pageNumber", Integer.valueOf(pageNumber));
+                data.put("pageSize", Integer.valueOf(pageSize));
+                res = HttpUtil.doGet(url, data);
+                if(res.isSuccess()) {
+                    return (Page) parseObject(res.getContent(), new TypeReference<Page<UserSpaceDetail>>() {});
+                }
+            } catch (Exception e) {
+                e.printStackTrace();
+            }
+        }
+        return page;
+    }
+
+    /**
+     * 从b2b获取erp企业秘钥
+     * @return
+     */
+    @RequestMapping(value = "/saveAccessSecret/{businessCode}")
+    public ModelMap saveAccessSecret(@PathVariable String businessCode) {
+        if (!StringUtils.isEmpty(businessCode)) {
+            getAccessSecret(businessCode);
+        }
+        return success();
+    }
+
+    /**
+     * 从b2b获取密钥
+     * @param businessCode 营业执照号
+     * @return
+     */
+    public String getAccessSecret(String businessCode) {
+        String url = "http://192.168.253.66:8090/platform-b2b";
+        url = url + "/account/enterprise/info/" + businessCode;
+        String accessSecret = null;
+        try {
+            HttpUtil.ResponseWrap responseWrap = HttpUtil.doGet(url);
+            if (responseWrap.isSuccess()) {
+                JSONObject enterprise = parseObject(responseWrap.getContent());
+                accessSecret = (String) enterprise.get("accessSecret");
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return accessSecret;
+    }
+
+    /**
+     * 写入日志
+     * @param businessCode 营业执照号
+     * @param accessSecret 密钥
+     */
+    private void writerToFile(String businessCode, String accessSecret) {
+        FileWriter fw = null;
+        try {
+            //如果文件存在,则追加内容;如果文件不存在,则创建文件
+            File f=new File("logs/userspace.log");
+            fw = new FileWriter(f, true);
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+        PrintWriter pw = new PrintWriter(fw);
+        pw.println(businessCode + "\t" + accessSecret);
+        pw.flush();
+        try {
+            fw.flush();
+            pw.close();
+            fw.close();
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+    }
+
+    @RequestMapping("/spaceName/unique")
+    public ModelMap spaceNameUnique() {
+        List<String> repeatName = userspaceService.findRepeatName();
+        for (String name : repeatName) {
+            List<Userspace> userspaces = userspaceService.findAllBySpaceName(name);
+            for (int i=0; i<userspaces.size(); i++) {
+                Userspace userspace = userspaces.get(i);
+                userspace.setSpaceName(userspace.getSpaceName() + Const.REPEAT_SEPARATOR + (i + 1));
+                userspaceService.save(userspace);
+            }
+        }
+        return success();
+    }
+
+    /**
+     * 从其他应用注册企业信息
+     * @param userspace 企业信息
+     */
+    @RequestMapping(value = "/register/other", method = RequestMethod.POST)
+    public void registerFromOther(Userspace userspace) {
+        userspaceService.register(userspace);
+    }
 }

+ 2 - 1
sso-server/src/main/java/com/uas/sso/controller/UserspaceRegisterController.java

@@ -140,7 +140,8 @@ public class UserspaceRegisterController extends BaseController {
         }
 
         // 企业注册
-        userspace = userspaceService.register(userspace, admin);
+        userspace.setAdmin(admin);
+        userspace = userspaceService.register(userspace);
 
         // 添加日志
         registerLogger.info(Type.REGISTER_USERSPACE.getValue(), Step.SECOND.getValue(), "企业注册", userspace, appId);

+ 5 - 0
sso-server/src/main/java/com/uas/sso/core/Const.java

@@ -8,6 +8,11 @@ package com.uas.sso.core;
  */
 public class Const {
 
+    /**
+     * 重复分隔符
+     */
+    public static final String REPEAT_SEPARATOR = "#";
+
     /**
      * 邮箱正则
      */

+ 14 - 0
sso-server/src/main/java/com/uas/sso/dao/UserDao.java

@@ -83,4 +83,18 @@ public interface UserDao extends JpaRepository<User, Long>, JpaSpecificationExec
      * @return
      */
     User findByIdCard(String idCard);
+
+    /**
+     * 查询重复邮箱
+     * @return
+     */
+    @Query("select t.email from User t where t.email is not null group by email having count(t) > 1")
+    List<String> findRepeatEmail();
+
+    /**
+     * 根据邮箱查询用户信息
+     * @param email 邮箱
+     * @return
+     */
+    List<User> findByEmail(String email);
 }

+ 10 - 0
sso-server/src/main/java/com/uas/sso/dao/UserspaceDao.java

@@ -89,4 +89,14 @@ public interface UserspaceDao extends JpaRepository<Userspace, Long>, JpaSpecifi
     @QueryHints({ @QueryHint(name = "org.hibernate.cacheable", value = "true") })
     @Query(value = "select new com.uas.sso.entity.UserSpaceDetailInfo(t.spaceName, t.regAddress, t.admin.vipName, t.admin.mobile, t.admin.imId, t.admin.email) from Userspace t where UPPER(t.spaceName) like CONCAT('%',UPPER(:keyword),'%')")
     Page<UserSpaceDetailInfo> findInfoByPageInfo(@Param("keyword") String keyword, Pageable pageable);
+
+    /**
+     * 获取重复的企业名称
+     * @return
+     */
+    @Query(value = "select t.spaceName from Userspace t where t.spaceName is not null group by t.spaceName having count(t) > 1")
+    List<String> findRepeatName();
+
+    @Query(value = "select t from Userspace t where t.spaceName = :name")
+    List<Userspace> findAllBySpaceName(@Param("name") String name);
 }

+ 217 - 176
sso-server/src/main/java/com/uas/sso/entity/PartnershipRecord.java

@@ -1,13 +1,14 @@
 package com.uas.sso.entity;
 
+import com.alibaba.fastjson.annotation.JSONField;
+
 import javax.persistence.*;
 import java.io.Serializable;
 import java.sql.Timestamp;
-import java.util.Date;
 
 /**
  * 合作关系申请的记录
- * 
+ *
  * @author wangmh
  * @time 创建时间:2017年1月10日
  */
@@ -16,7 +17,7 @@ import java.util.Date;
 public class PartnershipRecord implements Serializable {
 
 	/**
-	 * 
+	 *
 	 */
 	private static final long serialVersionUID = 1L;
 
@@ -201,26 +202,32 @@ public class PartnershipRecord implements Serializable {
 		this.custUserTel = custUserSpace.getAdmin().getMobile();
 	}
 
+    @JSONField(name="id")
 	public Long getId() {
 		return id;
 	}
 
+    @JSONField(name="id")
 	public void setId(Long id) {
 		this.id = id;
 	}
 
+    @JSONField(name="appId")
 	public String getAppId() {
 		return appId;
 	}
 
+    @JSONField(name="appId")
 	public void setAppId(String appId) {
 		this.appId = appId;
 	}
 
+    @JSONField(name="requestDate")
 	public Timestamp getRequestDate() {
 		return requestDate;
 	}
 
+    @JSONField(name="requestDate")
 	public void setRequestDate(Timestamp requestDate) {
 		this.requestDate = requestDate;
 	}
@@ -237,179 +244,213 @@ public class PartnershipRecord implements Serializable {
 		return custSpace;
 	}
 
-	public void setCustSpace(Userspace custSpace) {
-		this.custSpace = custSpace;
-	}
-
-	public String getCustSpaceName() {
-		return custSpaceName;
-	}
-
-	public void setCustSpaceName(String custSpaceName) {
-		this.custSpaceName = custSpaceName;
-	}
-
-	public String getCustUserName() {
-		return custUserName;
-	}
-
-	public void setCustUserName(String custUserName) {
-		this.custUserName = custUserName;
-	}
-
-	public User getCustUser() {
-		return custUser;
-	}
-
-	public void setCustUser(User custUser) {
-		this.custUser = custUser;
-	}
-
-	public String getCustUserTel() {
-		return custUserTel;
-	}
-
-	public void setCustUserTel(String custUserTel) {
-		this.custUserTel = custUserTel;
-	}
-
-	public String getVendSpaceName() {
-		return vendSpaceName;
-	}
-
-	public void setVendSpaceName(String vendSpaceName) {
-		this.vendSpaceName = vendSpaceName;
-	}
-
-	public Long getVendSpaceUU() {
-		return vendSpaceUU;
-	}
-
-	public void setVendSpaceUU(Long vendSpaceUU) {
-		this.vendSpaceUU = vendSpaceUU;
-	}
-
-	public Userspace getVendSpace() {
-		return vendSpace;
-	}
-
-	public void setVendSpace(Userspace vendSpace) {
-		this.vendSpace = vendSpace;
-	}
-
-	public String getVendUserName() {
-		return vendUserName;
-	}
-
-	public void setVendUserName(String vendUserName) {
-		this.vendUserName = vendUserName;
-	}
-
-	public String getVendUserTel() {
-		return vendUserTel;
-	}
-
-	public void setVendUserTel(String vendUserTel) {
-		this.vendUserTel = vendUserTel;
-	}
-
-	public String getVendUserEmail() {
-		return vendUserEmail;
-	}
-
-	public void setVendUserEmail(String vendUserEmail) {
-		this.vendUserEmail = vendUserEmail;
-	}
-
-	public Long getVendUserUU() {
-		return vendUserUU;
-	}
-
-	public void setVendUserUU(Long vendUserUU) {
-		this.vendUserUU = vendUserUU;
-	}
-
-	public User getVendUser() {
-		return vendUser;
-	}
-
-	public void setVendUser(User vendUser) {
-		this.vendUser = vendUser;
-	}
-
-	public Timestamp getOperateDate() {
-		return operateDate;
-	}
-
-	public void setOperateDate(Timestamp operateDate) {
-		this.operateDate = operateDate;
-	}
-
-	public Integer getStatusCode() {
-		return statusCode;
-	}
-
-	public void setStatusCode(Integer statusCode) {
-		this.statusCode = statusCode;
-	}
-
-	public String getStatus() {
-		return status;
-	}
-
-	public void setStatus(String status) {
-		this.status = status;
-	}
-
-	public String getReason() {
-		return reason;
-	}
-
-	public void setReason(String reason) {
-		this.reason = reason;
-	}
-
-	public String getMethod() {
-		return method;
-	}
-
-	public void setMethod(String method) {
-		this.method = method;
-	}
-
-	public String getCustBusinessCode() {
-		return custBusinessCode;
-	}
-
-	public void setCustBusinessCode(String custBusinessCode) {
-		this.custBusinessCode = custBusinessCode;
-	}
-
-	public Long getCustUserUU() {
-		return custUserUU;
-	}
-
-	public void setCustUserUU(Long custUserUU) {
-		this.custUserUU = custUserUU;
-	}
-
-	public String getCustUserEmail() {
-		return custUserEmail;
-	}
-
-	public void setCustUserEmail(String custUserEmail) {
-		this.custUserEmail = custUserEmail;
-	}
-
-	public String getVendBusinessCode() {
-		return vendBusinessCode;
-	}
-
-	public void setVendBusinessCode(String vendBusinessCode) {
-		this.vendBusinessCode = vendBusinessCode;
-	}
-
-	public RequestStatus toRequestStatus() {
+    public void setCustSpace(Userspace custSpace) {
+        this.custSpace = custSpace;
+    }
+
+    @JSONField(name="custName")
+    public String getCustSpaceName() {
+        return custSpaceName;
+    }
+
+    @JSONField(name="custName")
+    public void setCustSpaceName(String custSpaceName) {
+        this.custSpaceName = custSpaceName;
+    }
+
+    @JSONField(name="custUID")
+    public String getCustBusinessCode() {
+        return custBusinessCode;
+    }
+
+    @JSONField(name="custUID")
+    public void setCustBusinessCode(String custBusinessCode) {
+        this.custBusinessCode = custBusinessCode;
+    }
+
+    @JSONField(name="custUserCode")
+    public Long getCustUserUU() {
+        return custUserUU;
+    }
+
+    @JSONField(name="custUserCode")
+    public void setCustUserUU(Long custUserUU) {
+        this.custUserUU = custUserUU;
+    }
+
+    public User getCustUser() {
+        return custUser;
+    }
+
+    public void setCustUser(User custUser) {
+        this.custUser = custUser;
+    }
+
+    @JSONField(name="custUserName")
+    public String getCustUserName() {
+        return custUserName;
+    }
+
+    @JSONField(name="custUserName")
+    public void setCustUserName(String custUserName) {
+        this.custUserName = custUserName;
+    }
+
+    @JSONField(name="custUserTel")
+    public String getCustUserTel() {
+        return custUserTel;
+    }
+
+    @JSONField(name="custUserTel")
+    public void setCustUserTel(String custUserTel) {
+        this.custUserTel = custUserTel;
+    }
+
+    @JSONField(name="custUserEmail")
+    public String getCustUserEmail() {
+        return custUserEmail;
+    }
+
+    @JSONField(name="custUserEmail")
+    public void setCustUserEmail(String custUserEmail) {
+        this.custUserEmail = custUserEmail;
+    }
+
+    public Long getVendSpaceUU() {
+        return vendSpaceUU;
+    }
+
+    public void setVendSpaceUU(Long vendSpaceUU) {
+        this.vendSpaceUU = vendSpaceUU;
+    }
+
+    public Userspace getVendSpace() {
+        return vendSpace;
+    }
+
+    public void setVendSpace(Userspace vendSpace) {
+        this.vendSpace = vendSpace;
+    }
+
+    @JSONField(name="vendName")
+    public String getVendSpaceName() {
+        return vendSpaceName;
+    }
+
+    @JSONField(name="vendName")
+    public void setVendSpaceName(String vendSpaceName) {
+        this.vendSpaceName = vendSpaceName;
+    }
+
+    @JSONField(name="vendUID")
+    public String getVendBusinessCode() {
+        return vendBusinessCode;
+    }
+
+    @JSONField(name="vendUID")
+    public void setVendBusinessCode(String vendBusinessCode) {
+        this.vendBusinessCode = vendBusinessCode;
+    }
+
+    @JSONField(name="vendUserCode")
+    public Long getVendUserUU() {
+        return vendUserUU;
+    }
+
+    @JSONField(name="vendUserCode")
+    public void setVendUserUU(Long vendUserUU) {
+        this.vendUserUU = vendUserUU;
+    }
+
+    public User getVendUser() {
+        return vendUser;
+    }
+
+    public void setVendUser(User vendUser) {
+        this.vendUser = vendUser;
+    }
+
+    @JSONField(name="vendUserName")
+    public String getVendUserName() {
+        return vendUserName;
+    }
+
+    @JSONField(name="vendUserName")
+    public void setVendUserName(String vendUserName) {
+        this.vendUserName = vendUserName;
+    }
+
+    @JSONField(name="vendUserTel")
+    public String getVendUserTel() {
+        return vendUserTel;
+    }
+
+    @JSONField(name="vendUserTel")
+    public void setVendUserTel(String vendUserTel) {
+        this.vendUserTel = vendUserTel;
+    }
+
+    @JSONField(name="vendUserEmail")
+    public String getVendUserEmail() {
+        return vendUserEmail;
+    }
+
+    @JSONField(name="vendUserEmail")
+    public void setVendUserEmail(String vendUserEmail) {
+        this.vendUserEmail = vendUserEmail;
+    }
+
+    @JSONField(name="operateDate")
+    public Timestamp getOperateDate() {
+        return operateDate;
+    }
+
+    @JSONField(name="operateDate")
+    public void setOperateDate(Timestamp operateDate) {
+        this.operateDate = operateDate;
+    }
+
+    @JSONField(name="statusCode")
+    public Integer getStatusCode() {
+        return statusCode;
+    }
+
+    @JSONField(name="statusCode")
+    public void setStatusCode(Integer statusCode) {
+        this.statusCode = statusCode;
+    }
+
+    @JSONField(name="status")
+    public String getStatus() {
+        return status;
+    }
+
+    @JSONField(name="status")
+    public void setStatus(String status) {
+        this.status = status;
+    }
+
+    @JSONField(name="reason")
+    public String getReason() {
+        return reason;
+    }
+
+    @JSONField(name="reason")
+    public void setReason(String reason) {
+        this.reason = reason;
+    }
+
+    @JSONField(name="method")
+    public String getMethod() {
+        return method;
+    }
+
+    @JSONField(name="method")
+    public void setMethod(String method) {
+        this.method = method;
+    }
+
+    public RequestStatus toRequestStatus() {
 		RequestStatus request = new RequestStatus();
 		request.setCustBusinessCode(this.getCustSpace().getBusinessCode());
 		request.setCustUU(this.getCustSpace().getSpaceUU());

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

@@ -294,7 +294,7 @@ public class User implements Serializable {
     }
 
     public String getEmail() {
-        if (email.contains(Const.REPEAT_SEPARATOR)) {
+        if (email != null && email.contains(Const.REPEAT_SEPARATOR)) {
             return email.substring(0, email.indexOf(Const.REPEAT_SEPARATOR));
         }
         return email;

+ 6 - 0
sso-server/src/main/java/com/uas/sso/service/PartnershipService.java

@@ -234,4 +234,10 @@ public interface PartnershipService {
 	 */
 	public void invite(InvitationRecord record);
 
+    /**
+     * 保存和做伙伴记录
+     * @param partnershipRecord 合作伙伴
+     * @return
+     */
+    PartnershipRecord save(PartnershipRecord partnershipRecord);
 }

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

@@ -208,4 +208,17 @@ public interface UserService {
      * @param questions
      */
     void setQuestion(Long userUU, List<UserQuestion> questions);
+
+    /**
+     * 查询重复的邮箱
+     * @return 邮箱
+     */
+    List<String> findRepeatEmail();
+
+    /**
+     * 根据邮箱查询用户信息
+     * @param email 邮箱
+     * @return
+     */
+    List<User> findByEmail(String email);
 }

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

@@ -21,10 +21,9 @@ public interface UserspaceService {
     /**
      * 企业注册,并开通默认应用
      * @param userspace 企业信息
-     * @param admin 管理员信息
      * @return 注册后的企业信息
      */
-    Userspace register(Userspace userspace, User admin);
+    Userspace register(Userspace userspace);
 
     /**
      * 校验企业名称
@@ -144,4 +143,19 @@ public interface UserspaceService {
      * @return
      */
     Page<UserSpaceDetailInfo> findByKeyword(String keyword, int page, int size);
+
+    /**
+     * 保存企业信息
+     * @param userspace 企业信息
+     * @return
+     */
+    Userspace save(Userspace userspace);
+
+    /**
+     * 查找出重复的企业名称
+     * @return
+     */
+    List<String> findRepeatName();
+
+    List<Userspace> findAllBySpaceName(String name);
 }

+ 5 - 1
sso-server/src/main/java/com/uas/sso/service/impl/PartnershipServiceImpl.java

@@ -367,7 +367,7 @@ public class PartnershipServiceImpl implements PartnershipService {
 				keyCustPredicates.add(cb.like(root.join("custSpace", JoinType.INNER).get("admin").get("vipName").as(String.class), "%" + keyword + "%"));
 				keyCustPredicates.add(cb.like(root.join("custSpace", JoinType.INNER).get("admin").get("mobile").as(String.class), "%" + keyword + "%"));
 				keyCustPredicates.add(cb.like(root.join("custSpace", JoinType.INNER).get("admin").get("email").as(String.class), "%" + keyword + "%"));
-				
+
 				// 接收人模糊查询条件
 				List<Predicate> keyVendPredicates = new ArrayList<Predicate>();
 				keyVendPredicates.add(cb.like(root.join("vendSpace", JoinType.INNER).get("spaceName").as(String.class), "%" + keyword + "%"));
@@ -576,4 +576,8 @@ public class PartnershipServiceImpl implements PartnershipService {
 //		partnershipRecordDao.saveInvitation(record);
 	}
 
+    @Override
+    public PartnershipRecord save(PartnershipRecord partnershipRecord) {
+        return partnershipRecordDao.save(partnershipRecord);
+    }
 }

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

@@ -117,6 +117,7 @@ public class UserServiceImpl implements UserService {
         user.setPassword(getEncryPassword(Const.ENCRY_FORMAT, user.getPassword(), user.getSalt()));
         user.setUserRecord(new UserRecord());
         user.getUserRecord().setUser(user);
+        user.getUserRecord().setUserUU(user.getUserUU());
 
         userDao.save(user);
         userLog.info(user, Type.UPDATE_REGISTER.getValue());
@@ -146,7 +147,8 @@ public class UserServiceImpl implements UserService {
     @Override
     public User save(User user) {
         user = userDao.save(user);
-        syncUserInfo(user.toView(), "修改用户信息");
+        /// 数据同步,先注释
+//        syncUserInfo(user.toView(), "修改用户信息");
         return user;
     }
 
@@ -331,7 +333,7 @@ public class UserServiceImpl implements UserService {
     }
 
     @Override
-    public Page<User> findMemberBySpaceUU(int page, int size, Long spaceUU) {
+    public Page<User> findMemberBySpaceUU(int page, int size, final Long spaceUU) {
         Pageable pageable = PageInfo.pageRequest(new PageRequest(page, size));
         Page<User> pUsers = userDao.findAll(new Specification<User>() {
             @Override
@@ -406,6 +408,16 @@ public class UserServiceImpl implements UserService {
         userLog.info(user, Type.UPDATE_QUESTION.getValue(), JSON.toJSONString(user.getQuestions()));
     }
 
+    @Override
+    public List<String> findRepeatEmail() {
+        return userDao.findRepeatEmail();
+    }
+
+    @Override
+    public List<User> findByEmail(String email) {
+        return userDao.findByEmail(email);
+    }
+
     /**
      * 同步用户信息到各个应用
      * @param userUU 用户uu号

+ 32 - 10
sso-server/src/main/java/com/uas/sso/service/impl/UserspaceServiceImpl.java

@@ -58,7 +58,12 @@ public class UserspaceServiceImpl implements UserspaceService {
     public static final Long SPACE_INIT_UU = 10000000L;
 
     @Override
-    public Userspace register(Userspace userspace, User admin) {
+    public Userspace register(Userspace userspace) {
+        User admin = userspace.getAdmin();
+        if (admin == null) {
+            throw new VisibleError("管理员不能为空");
+        }
+
         // 校验企业名是否重复
         checkSpaceName(userspace.getSpaceName());
 
@@ -75,16 +80,18 @@ public class UserspaceServiceImpl implements UserspaceService {
         userspace.setSpaceUU(StringUtils.isEmpty(maxUU) ? SPACE_INIT_UU : (maxUU + 1));
 
         // 设置管理员信息
-        User oldUser = userService.findByMobile(admin.getMobile());
-        if (oldUser == null) {
-            admin = userService.register(admin);
-        } else {
-            admin = userService.save(admin);
-        }
+        if (StringUtils.isEmpty(admin.getUserUU())) {
+            User oldUser = userService.findByMobile(admin.getMobile());
+            if (oldUser == null) {
+                admin = userService.register(admin);
+            } else {
+                admin = userService.save(admin);
+            }
 
-        // 给企业设置管理员
-        userspace.setAdmin(admin);
-        userspace.setAdminUU(admin.getUserUU());
+            // 给企业设置管理员
+            userspace.setAdmin(admin);
+            userspace.setAdminUU(admin.getUserUU());
+        }
 
         // 将管理员设置在企业下
         List<User> users = new ArrayList<>();
@@ -315,4 +322,19 @@ public class UserspaceServiceImpl implements UserspaceService {
         Page<UserSpaceDetailInfo> page = userspaceDao.findInfoByPageInfo(keyword, pageable);
         return new PageInfo<>(page.getContent(), pageable, page.getTotalElements());
     }
+
+    @Override
+    public Userspace save(Userspace userspace) {
+        return userspaceDao.save(userspace);
+    }
+
+    @Override
+    public List<String> findRepeatName() {
+        return userspaceDao.findRepeatName();
+    }
+
+    @Override
+    public List<Userspace> findAllBySpaceName(String name) {
+        return userspaceDao.findAllBySpaceName(name);
+    }
 }