瀏覽代碼

MOD: user

zhangxin 7 年之前
父節點
當前提交
f7ec82c4f7

+ 1 - 1
mooctest-user-server/pom.xml

@@ -24,7 +24,7 @@
         <dependency>
             <groupId>cn.iselab.mooctest</groupId>
             <artifactId>user-dubbo-api</artifactId>
-            <version>1.0.12</version>
+            <version>1.0.13</version>
         </dependency>
         <dependency>
             <groupId>cn.iselab.mooctest</groupId>

+ 82 - 0
mooctest-user-server/src/main/java/cn/iselab/mooctest/user/constants/Converter.java

@@ -0,0 +1,82 @@
+package cn.iselab.mooctest.user.constants;
+
+import com.google.common.collect.Maps;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import org.springframework.cglib.beans.BeanCopier;
+
+import java.util.Map;
+
+public class Converter {
+
+    private static Map<CopierIdentity, BeanCopier> copierCache = Maps.newConcurrentMap();
+    private static PrimitiveConverter primitiveConverter = new PrimitiveConverter();
+
+    public static <T> T copy(T target, Object source) {
+        BeanCopier copier = getCopier(source.getClass(), target.getClass());
+        copier.copy(source, target, primitiveConverter);
+        return target;
+    }
+
+    public static <T> T convert(Class<T> targetClass, Object source) {
+        try {
+            T target = targetClass.newInstance();
+            BeanCopier copier = getCopier(source.getClass(), targetClass);
+            copier.copy(source, target, primitiveConverter);
+            return target;
+        } catch (InstantiationException | IllegalAccessException e) {
+            throw new RuntimeException(e);
+        }
+    }
+
+    private static BeanCopier getCopier(Class<?> source, Class<?> target) {
+        CopierIdentity identity = new CopierIdentity(source, target);
+        BeanCopier copier;
+        if (copierCache.containsKey(identity)) {
+            copier = copierCache.get(identity);
+        } else {
+            copier = BeanCopier.create(source, target, true);
+            copierCache.putIfAbsent(identity, copier);
+        }
+        return copier;
+    }
+
+    public static class PrimitiveConverter implements org.springframework.cglib.core.Converter {
+        @Override
+        @SuppressWarnings("unchecked")
+        public Object convert(Object value, Class target, Object context) {
+            if (value == null) return null;
+            if (target.equals(String.class)
+                    && !String.class.isAssignableFrom(value.getClass()))
+                return value.toString();
+            if (Number.class.isAssignableFrom(value.getClass())) {
+                Number num = (Number) value;
+                if (target.equals(int.class) || target.equals(Integer.class))
+                    return num.intValue();
+                else if (target.equals(long.class) || target.equals(Long.class))
+                    return num.longValue();
+                else if (target.equals(short.class) || target.equals(Short.class))
+                    return num.shortValue();
+                else if (target.equals(float.class) || target.equals(Float.class))
+                    return num.floatValue();
+                else if (target.equals(double.class) || target.equals(Double.class))
+                    return num.doubleValue();
+                else if (target.equals(byte.class) || target.equals(Byte.class))
+                    return num.byteValue();
+            } else if (target.isAssignableFrom(value.getClass()))
+                return value;
+            return null;
+        }
+    }
+
+    @AllArgsConstructor
+    @Data
+    @EqualsAndHashCode
+    private static class CopierIdentity {
+        private Class<?> source;
+        private Class<?> target;
+    }
+
+}
+

+ 3 - 1
mooctest-user-server/src/main/java/cn/iselab/mooctest/user/dao/UserDao.java

@@ -11,7 +11,9 @@ import javax.transaction.Transactional;
  * @date 2018-03-04.
  */
 @Transactional
-public interface UserDao extends CrudRepository<User, Long> , JpaSpecificationExecutor<User> {
+public interface UserDao extends CrudRepository<User, Long>, JpaSpecificationExecutor<User> {
+
+    User findById(Long id);
 
     User findByEmail(String email);
 

+ 11 - 6
mooctest-user-server/src/main/java/cn/iselab/mooctest/user/model/User.java

@@ -45,8 +45,13 @@ public class User {
     @Column(name = "manual_check_valid")
     private Boolean manualCheckValid;
 
-    @Column(name = "is_available")
-    private Boolean isAvailable;
+    /**
+     * -1 用户被删除
+     * 0  用户被禁用
+     * 1  用户解除禁用 可以正常使用
+     */
+    @Column(name = "availability")
+    private Integer availability;
 
     public Long getId() {
         return id;
@@ -136,11 +141,11 @@ public class User {
         this.manualCheckValid = manualCheckValid;
     }
 
-    public Boolean getAvailable() {
-        return isAvailable;
+    public Integer getAvailability() {
+        return availability;
     }
 
-    public void setAvailable(Boolean available) {
-        isAvailable = available;
+    public void setAvailability(Integer availability) {
+        this.availability = availability;
     }
 }

+ 6 - 0
mooctest-user-server/src/main/java/cn/iselab/mooctest/user/rpc/UserRPC.java

@@ -5,6 +5,8 @@ import cn.iselab.mooctest.rpc.user.data.UserDTO;
 import cn.iselab.mooctest.user.web.logic.UserLogic;
 import com.alibaba.dubbo.config.annotation.Service;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.Pageable;
 import org.springframework.stereotype.Component;
 
 import java.util.List;
@@ -56,4 +58,8 @@ public class UserRPC implements UserService {
         return  userLogic.findByCondition(condition);
     }
 
+    @Override
+    public Page<UserDTO> getUserPageByUserIds(List<Long> list, Pageable pageable) {
+        return null;
+    }
 }

+ 3 - 2
mooctest-user-server/src/main/java/cn/iselab/mooctest/user/service/impl/UserServiceImpl.java

@@ -43,7 +43,7 @@ public class UserServiceImpl implements UserService {
 
     @Override
     public User findById(Long userId) {
-        return userDao.findOne(userId);
+        return userDao.findById(userId);
     }
 
     @Override
@@ -52,10 +52,11 @@ public class UserServiceImpl implements UserService {
     }
 
     @Override
-    public List<User> findByCondition(Map<String,String> condition) {
+    public List<User> findByCondition(Map<String, String> condition) {
         Specification<User> where = Specifications.where(getUserWhereClause(condition));
         return userDao.findAll(where);
     }
+
     private Specification<User> getUserWhereClause(Map<String, String> condition) {
         return new Specification<User>() {
             @Override

+ 1 - 0
mooctest-user-server/src/main/java/cn/iselab/mooctest/user/web/logic/impl/UserLogicImpl.java

@@ -1,6 +1,7 @@
 package cn.iselab.mooctest.user.web.logic.impl;
 
 import cn.iselab.mooctest.rpc.user.data.UserDTO;
+import cn.iselab.mooctest.user.constants.Converter;
 import cn.iselab.mooctest.user.model.User;
 import cn.iselab.mooctest.user.service.UserService;
 import cn.iselab.mooctest.user.web.exception.HttpBadRequestException;

+ 2 - 2
mooctest-user-server/src/main/java/cn/iselab/mooctest/user/web/wrapper/UserWrapper.java

@@ -17,7 +17,7 @@ public class UserWrapper extends BaseWrapper<UserDTO, User> {
     public UserDTO wrap(User user) {
         UserDTO userDTO = new UserDTO();
 
-        userDTO.setAvailable(user.getAvailable());
+        userDTO.setAvailability(user.getAvailability());
         userDTO.setCity(user.getCity());
         userDTO.setCreateTime(user.getCreateTime().getTime());
         userDTO.setEmail(user.getEmail());
@@ -39,7 +39,7 @@ public class UserWrapper extends BaseWrapper<UserDTO, User> {
         user.setSchool(data.getSchool());
         user.setProvince(data.getProvince());
         user.setPhotoUrl(data.getPhotoUrl());
-        user.setAvailable(data.getAvailable());
+        user.setAvailability(data.getAvailability());
         user.setCity(data.getCity());
         user.setCreateTime(new Timestamp(data.getCreateTime()));
         user.setEmail(data.getEmail());