Browse Source

添加获取当前用户接口,同时对用户信息进行同步

xuexiaobo 6 years ago
parent
commit
bacafda653

+ 1 - 1
core/src/main/java/com/mooctest/crowd/domain/model/UserPO.java

@@ -14,8 +14,8 @@ import java.sql.Timestamp;
 @Entity
 public class UserPO {
 
+//    @GeneratedValue(strategy = GenerationType.IDENTITY)
     @Id
-    @GeneratedValue(strategy = GenerationType.IDENTITY)
     @Column(name = "U_ID")
     private Long id;
 

+ 2 - 0
site/src/main/java/com/mooctest/crowd/site/anticorruption/UserAntiCorruption.java

@@ -9,4 +9,6 @@ import com.mooctest.crowd.domain.domainobject.User;
  */
 public interface UserAntiCorruption {
     User register(String name, String mobile, String password);
+
+    User getUserInfo(Long userId);
 }

+ 29 - 0
site/src/main/java/com/mooctest/crowd/site/anticorruption/impl/UserAntiCorruptionImpl.java

@@ -1,12 +1,15 @@
 package com.mooctest.crowd.site.anticorruption.impl;
 
 import com.alibaba.fastjson.JSONObject;
+import com.mooctest.crowd.domain.domainobject.Role;
 import com.mooctest.crowd.domain.domainobject.User;
+import com.mooctest.crowd.domain.exception.UserNotExistException;
 import com.mooctest.crowd.domain.factory.UserFactory;
 import com.mooctest.crowd.domain.repository.UserRepo;
 import com.mooctest.crowd.site.anticorruption.UserAntiCorruption;
 import com.mooctest.crowd.site.anticorruption.impl.data.UserInfo;
 import com.mooctest.crowd.site.util.EncryptionUtil;
+import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.http.HttpEntity;
@@ -16,7 +19,9 @@ import org.springframework.http.MediaType;
 import org.springframework.stereotype.Component;
 import org.springframework.web.client.RestTemplate;
 
+import java.util.ArrayList;
 import java.util.HashMap;
+import java.util.List;
 import java.util.Map;
 
 /**
@@ -24,6 +29,7 @@ import java.util.Map;
  * @Email: 171256175@qq.com
  * @date 2019-08-08 23:40
  */
+@Slf4j
 @Component
 public class UserAntiCorruptionImpl implements UserAntiCorruption {
     @Autowired
@@ -56,4 +62,27 @@ public class UserAntiCorruptionImpl implements UserAntiCorruption {
         user.setPassword(userInfo.getPassword());
         return user;
     }
+
+    @Override
+    public User getUserInfo(Long userId) {
+        UserInfo userInfo = restTemplate.getForEntity(userServiceUrl+"/api/user/"+userId, UserInfo.class).getBody();
+        if (userInfo == null)
+            throw new UserNotExistException();
+        log.info("userInfo: " + userInfo.toString());
+        try{
+            //将用户中心的用户中心的用户数据对本系统内同步
+            User newUser = userInfo.toUser();
+            User oldUser = userRepo.getByID(userId);
+            newUser.setRoleList(oldUser.getRoleList());
+            newUser.setGender(oldUser.getGender());
+            userRepo.saveUser(newUser);
+        }catch (UserNotExistException e){   //本站不存在该用户,是未同步信息的新用户,初始化角色
+            User user = userInfo.toUser();
+            List<Role> roles = new ArrayList<>();
+            roles.add(userRepo.getRole("generalUser"));
+            user.setRoleList(roles);
+            userRepo.saveUser(user);
+        }
+        return userRepo.getByID(userId);
+    }
 }

+ 20 - 0
site/src/main/java/com/mooctest/crowd/site/anticorruption/impl/data/UserInfo.java

@@ -1,7 +1,11 @@
 package com.mooctest.crowd.site.anticorruption.impl.data;
 
+import com.mooctest.crowd.domain.domainobject.User;
+import com.mooctest.crowd.domain.factory.UserFactory;
 import lombok.Data;
 
+import java.sql.Timestamp;
+
 /**
  * @author: Diors.Po
  * @Email: 171256175@qq.com
@@ -22,4 +26,20 @@ public class UserInfo {
     private Boolean manualCheckValid;
     private Integer availability;
     private Long integral;
+
+    public User toUser(){
+        User user = UserFactory.createUser();
+        user.setId(this.id);
+        user.setName(name);
+        user.setUserName(name);
+        user.setMobile(mobile);
+        user.setPassword(password);
+        user.setCity(city);
+        user.setProvince(province);
+        user.setPhotoUrl(photoUrl);
+        user.setCreateTime(new Timestamp(createTime));
+        user.setIsAvailable(availability);
+        user.setIsDeleted(0);
+        return user;
+    }
 }

+ 0 - 1
site/src/main/java/com/mooctest/crowd/site/controller/AgencyController.java

@@ -6,7 +6,6 @@ import com.mooctest.crowd.site.data.dto.UserDTO;
 import com.mooctest.crowd.site.service.AgencyService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
-
 /**
  * @author: Diors.Po
  * @Email: 171256175@qq.com

+ 1 - 1
site/src/main/java/com/mooctest/crowd/site/controller/CommonController.java

@@ -1 +1 @@
-package com.mooctest.crowd.site.controller;

import com.mooctest.crowd.site.data.dto.IndexDTO;
import com.mooctest.crowd.site.data.dto.MyCrowdDTO;
import com.mooctest.crowd.site.service.CommonService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

/**
 * @Author: xuexb
 * @Date: 2019.7.22 16:51
 */
@RestController
@RequestMapping("/api/common")
public class CommonController {

    @Autowired
    private CommonService commonService;

    @RequestMapping(value = "/index", method = RequestMethod.GET)
    public IndexDTO index(){
        return commonService.getIndexInfo();
    }

    @RequestMapping(value = "/mycrowd/{userId}", method = RequestMethod.GET)
    public MyCrowdDTO mycrowd(@PathVariable("userId") Long userId){
       return commonService.getPersonCrowd(userId);
    }

    @RequestMapping(value = "/hello", method = RequestMethod.GET)
    public String hello() {
        return "Hello, Spring Boot!";
    }
}
+package com.mooctest.crowd.site.controller;

import com.mooctest.crowd.domain.domainobject.User;
import com.mooctest.crowd.domain.exception.UnauthorizedException;
import com.mooctest.crowd.site.anticorruption.UserAntiCorruption;
import com.mooctest.crowd.site.data.dto.IndexDTO;
import com.mooctest.crowd.site.data.dto.MyCrowdDTO;
import com.mooctest.crowd.site.data.dto.UserDTO;
import com.mooctest.crowd.site.mediator.ViewMediator;
import com.mooctest.crowd.site.service.CommonService;
import com.mooctest.crowd.site.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import javax.servlet.http.HttpServletRequest;

/**
 * @Author: xuexb
 * @Date: 2019.7.22 16:51
 */
@RestController
@RequestMapping("/api/common")
public class CommonController {

    @Autowired
    private CommonService commonService;

    @Autowired
    private ViewMediator mediator;

    @Autowired
    private UserAntiCorruption userAnti;

    @RequestMapping(value = "/index", method = RequestMethod.GET)
    public IndexDTO index(){
        return commonService.getIndexInfo();
    }

    @RequestMapping(value = "/mycrowd/{userId}", method = RequestMethod.GET)
    public MyCrowdDTO mycrowd(@PathVariable("userId") Long userId){
       return commonService.getPersonCrowd(userId);
    }

    @RequestMapping(value = "/hello", method = RequestMethod.GET)
    public String hello() {
        return "Hello, Spring Boot!";
    }

    @RequestMapping(value = "/currentUser", method = RequestMethod.GET)
    public UserDTO getCurrentUser(HttpServletRequest request){
        if (request.getSession().getAttribute("userId") == null)
            throw new UnauthorizedException();
        Long userId = Long.parseLong((String)request.getSession().getAttribute("userId"));
        User user = userAnti.getUserInfo(userId);
        return mediator.renderUser(user);
    }
}

+ 2 - 1
site/src/main/java/com/mooctest/crowd/site/mediator/impl/WebMediatorImpl.java

@@ -175,7 +175,8 @@ public class WebMediatorImpl implements ViewMediator {
     public UserDTO renderUser(User user) {
         UserDTO userDTO = new UserDTO();
         userDTO.setUserVO(new UserVO(user));
-        userDTO.setAgencyVO(new AgencyVO(user.getEvaluationAgency()));
+        if (user.getEvaluationAgency() != null)
+            userDTO.setAgencyVO(new AgencyVO(user.getEvaluationAgency()));
         return userDTO;
     }
 }