Parcourir la source

erp更新企业信息接口

wangmh il y a 7 ans
Parent
commit
fad16b9033

+ 2 - 5
sso-server/src/main/java/com/uas/sso/controller/ChangeAdminController.java

@@ -1,7 +1,6 @@
 package com.uas.sso.controller;
 
 import com.alibaba.fastjson.JSON;
-import com.uas.sso.core.Const;
 import com.uas.sso.core.Status;
 import com.uas.sso.entity.*;
 import com.uas.sso.service.ChangeAdminService;
@@ -18,8 +17,6 @@ import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
-import static org.apache.coyote.http11.Constants.a;
-
 /**
  * @author wangmh
  * @create 2018-01-15 10:24
@@ -266,7 +263,7 @@ public class ChangeAdminController extends BaseController {
      * @return
      */
     @RequestMapping(method = RequestMethod.POST)
-    public ModelMap changeAdmin(String mobile, @RequestParam String token, String code, String newAdminName,
+    public ModelMap changeAdmin(@RequestParam(defaultValue = "sso") String appId, String mobile, @RequestParam String token, String code, String newAdminName,
                                      @RequestParam String codeToken, String changeReason, String contactTel) {
 
         // 校验第一步返回的token
@@ -308,7 +305,7 @@ public class ChangeAdminController extends BaseController {
         User beforeAdmin = userService.findOne(userspace.getAdminUU());
 
         // 更换管理员
-        userspaceService.changeAdmin(userspace, afterAdmin);
+        userspaceService.changeAdmin(appId, userspace, afterAdmin);
 
         // 更换管理员记录
         ChangeAdmin changeAdmin = new ChangeAdmin();

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

@@ -210,6 +210,7 @@ public class User implements Serializable {
     /**
      * 密保问题
      */
+    @com.fasterxml.jackson.annotation.JsonIgnore
     @OneToMany(fetch = FetchType.LAZY, cascade = {CascadeType.ALL})
     @JoinColumn(name = "useruu", nullable = false)
     private List<UserQuestion> questions;
@@ -494,6 +495,22 @@ public class User implements Serializable {
         this.userSpaces = userSpaces;
     }
 
+    @Override
+    public boolean equals(Object o) {
+        if (this == o) return true;
+        if (o == null || getClass() != o.getClass()) return false;
+
+        User user = (User) o;
+
+        return userUU.equals(user.userUU);
+
+    }
+
+    @Override
+    public int hashCode() {
+        return userUU.hashCode();
+    }
+
     public UserView toView() {
         UserView userView = new UserView();
         userView.setUserUU(this.getUserUU());

+ 51 - 0
sso-server/src/main/java/com/uas/sso/erp/controller/ErpBaseController.java

@@ -0,0 +1,51 @@
+package com.uas.sso.erp.controller;
+
+import com.uas.sso.controller.BaseController;
+import com.uas.sso.exception.VisibleError;
+import com.uas.sso.util.encry.HmacUtils;
+import org.springframework.util.StringUtils;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * @author wangmh
+ * @create 2018-04-27 8:55
+ * @desc 接口基类(erp接口)
+ **/
+public class ErpBaseController extends BaseController {
+
+    private final static String SIGNATURE_PARAM = "_signature";
+
+    private final static String TIMESTAMP_PARAM = "_timestamp";
+
+    /**
+     * 用于校验erp请求
+     * 之后可能把其他的erp接口移到这个基类的子类下
+     * @param accessSecret
+     */
+    @Override
+    public void checkRequest(String accessSecret) {
+        // 获取参数
+        String signature = request.getParameter(SIGNATURE_PARAM);
+        if (StringUtils.isEmpty(request.getParameter(TIMESTAMP_PARAM))) {
+            throw new VisibleError("参数错误");
+        }
+        Long timestamp = Long.valueOf(request.getParameter(TIMESTAMP_PARAM));
+
+        if (StringUtils.isEmpty(accessSecret)) {
+            throw new VisibleError("接口未授权");
+        }
+
+        // 请求时间不小于当前时间10秒,单位毫秒
+//        if (System.currentTimeMillis() - timestamp > EXPIRE_IN || System.currentTimeMillis() < timestamp) {
+//            throw new VisibleError("请求超时");
+//        }
+
+        // 判断加密信息是否有误
+        String urlMessage = getFrontUrl() + request.getRequestURI() + "?"
+                + request.getQueryString().substring(0, request.getQueryString().indexOf("_signature") - 1);
+        if (!signature.equals(HmacUtils.encode(urlMessage, accessSecret))) {
+            throw new VisibleError("密钥错误");
+        }
+    }
+
+}

+ 115 - 0
sso-server/src/main/java/com/uas/sso/erp/controller/ErpUserSpaceManageController.java

@@ -0,0 +1,115 @@
+package com.uas.sso.erp.controller;
+
+import com.alibaba.fastjson.JSON;
+import com.uas.sso.entity.User;
+import com.uas.sso.entity.Userspace;
+import com.uas.sso.service.UserService;
+import com.uas.sso.service.UserspaceService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.ui.ModelMap;
+import org.springframework.util.StringUtils;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.io.UnsupportedEncodingException;
+import java.net.URLDecoder;
+import java.util.UUID;
+
+/**
+ * @author wangmh
+ * @create 2018-04-27 8:54
+ * @desc 企业管理接口(erp接口)
+ **/
+@RestController
+@RequestMapping("/api/userspace/erp")
+public class ErpUserSpaceManageController extends ErpBaseController {
+
+    @Autowired
+    private UserspaceService userspaceService;
+
+    @Autowired
+    private UserService userService;
+
+    private final String appId = "uas";
+
+    /**
+     * 更新erp企业信息接口
+     * @param data 企业信息json字符串
+     */
+    @RequestMapping(value = "/updateSpace", method = RequestMethod.POST)
+    public ModelMap updateSpace(@RequestParam String data) throws UnsupportedEncodingException {
+        Userspace userspace = JSON.parseObject(URLDecoder.decode(data, "UTF-8"), Userspace.class);
+        User admin = userspace.getAdmin();
+        // 先把企业名称、邮箱、管理员名称解码
+        userspace.setSpaceName(URLDecoder.decode(userspace.getSpaceName(), "UTF-8"));
+
+        Userspace oldSpace = null;
+        // 根据uu号查询企业
+        if (userspace.getSpaceUU() != null) {
+            oldSpace = userspaceService.findOne(userspace.getSpaceUU());
+        }
+
+        // 根据uu号找到了企业信息,则需要校验秘钥
+        if (oldSpace != null) {
+            checkRequest(oldSpace.getAccessSecret());
+            oldSpace.setSpaceName(userspace.getSpaceName());
+            oldSpace.setBusinessCode(userspace.getBusinessCode());
+        }
+
+        // 如果uu号找不到,再根据企业名称和营业执照号查询
+        if (oldSpace == null && !StringUtils.isEmpty(userspace.getSpaceName())) {
+            oldSpace = userspaceService.findBySpaceName(userspace.getSpaceName());
+            if (oldSpace != null && !StringUtils.isEmpty(userspace.getBusinessCode()) && !userspace.getBusinessCode().equals(oldSpace.getBusinessCode())) {
+                return error("企业名称(" + userspace.getSpaceName() + ")已被注册,营业执照号为:" + oldSpace.getBusinessCode());
+            }
+        }
+        if (oldSpace == null && !StringUtils.isEmpty(userspace.getBusinessCode())) {
+            oldSpace = userspaceService.findByBusinessCode(userspace.getBusinessCode());
+            if (oldSpace != null && !StringUtils.isEmpty(userspace.getSpaceName()) && !userspace.getSpaceName().equals(oldSpace.getSpaceName())) {
+                return error("营业执照号(" + userspace.getBusinessCode() + ")已被注册,企业名称为:" + oldSpace.getSpaceName());
+            }
+        }
+
+        if (oldSpace == null) {
+            return error("该企业未被注册,请到优软云进行注册之后再操作");
+        }
+
+        if (admin.getUserUU() == null) {
+            // uu号不存在,则更加手机号查询,用不不存在则注册
+            if (StringUtils.isEmpty(admin.getMobile())) {
+                return error("管理员手机号不能为空");
+            }
+            checkMobile(admin.getMobile(), null);
+            User oldAdmin = userService.findByMobile(admin.getMobile());
+            if (oldAdmin == null) {
+                admin = userService.register(admin);
+            } else {
+                admin = oldAdmin;
+            }
+
+        }
+
+        // 如果管理员的uu号和传过来的 管理员不一致,则更换
+        if (!admin.getUserUU().equals(oldSpace.getAdminUU())) {
+            userspaceService.changeAdmin(appId, oldSpace, admin);
+        }
+
+        Userspace newSpace = oldSpace;
+        newSpace.setWebsite(userspace.getWebsite());
+        if (StringUtils.isEmpty(newSpace.getAccessSecret())) {
+            newSpace.setAccessSecret(UUID.randomUUID().toString().replaceAll("\\-", ""));
+        }
+
+        newSpace = userspaceService.save(newSpace);
+
+        // 返回用户信息
+        ModelMap returnData = new ModelMap();
+        returnData.put("spaceUU", newSpace.getSpaceUU());
+        returnData.put("businessCode", newSpace.getBusinessCode());
+        returnData.put("accessSecret", newSpace.getAccessSecret());
+        returnData.put("adminUU", newSpace.getAdminUU());
+        return success(returnData);
+    }
+}

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

@@ -149,10 +149,11 @@ public interface UserspaceService {
 
     /**
      * 更换管理员
+     * @param appId
      * @param space
      * @param afterAdmin
      */
-    void changeAdmin(Userspace space, User afterAdmin);
+    void changeAdmin(String appId, Userspace space, User afterAdmin);
 
     /**
      * 根据关键字查询企业信息

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

@@ -332,7 +332,7 @@ public class UserspaceServiceImpl implements UserspaceService {
     }
 
     @Override
-    public void changeAdmin(Userspace space, User afterAdmin) {
+    public void changeAdmin(String appId, Userspace space, User afterAdmin) {
         space.setAdminUU(afterAdmin.getUserUU());
         space.setAdmin(afterAdmin);
         if (!space.getUsers().contains(afterAdmin)) {
@@ -340,7 +340,7 @@ public class UserspaceServiceImpl implements UserspaceService {
         }
         space = userspaceDao.save(space);
 
-        syncUserSpaceInfo(space.toView(), "更换管理员");
+        syncUserSpaceInfo(space.toView(), "从应用:" + appId + "更换管理员");
     }
 
     @Override