chenxz vor 7 Jahren
Ursprung
Commit
57910cc9b1
23 geänderte Dateien mit 275 neuen und 102 gelöschten Zeilen
  1. 6 1
      mooctest-user-server/pom.xml
  2. 2 0
      mooctest-user-server/src/main/java/cn/iselab/mooctest/user/Application.java
  3. 82 0
      mooctest-user-server/src/main/java/cn/iselab/mooctest/user/constants/Converter.java
  4. 0 18
      mooctest-user-server/src/main/java/cn/iselab/mooctest/user/dao/UserDao.java
  5. 1 1
      mooctest-user-server/src/main/java/cn/iselab/mooctest/user/mapper/MedalDao.java
  6. 1 1
      mooctest-user-server/src/main/java/cn/iselab/mooctest/user/mapper/User2IntegralDao.java
  7. 1 1
      mooctest-user-server/src/main/java/cn/iselab/mooctest/user/mapper/User2MedalDao.java
  8. 1 2
      mooctest-user-server/src/main/java/cn/iselab/mooctest/user/mapper/UserIntegralDao.java
  9. 0 1
      mooctest-user-server/src/main/java/cn/iselab/mooctest/user/mapper/UserMapper.java
  10. 14 22
      mooctest-user-server/src/main/java/cn/iselab/mooctest/user/model/User.java
  11. 1 1
      mooctest-user-server/src/main/java/cn/iselab/mooctest/user/rpc/MedalRPC.java
  12. 16 14
      mooctest-user-server/src/main/java/cn/iselab/mooctest/user/rpc/UserRPC.java
  13. 9 0
      mooctest-user-server/src/main/java/cn/iselab/mooctest/user/service/UserService.java
  14. 2 5
      mooctest-user-server/src/main/java/cn/iselab/mooctest/user/service/impl/IntegralServiceImpl.java
  15. 2 4
      mooctest-user-server/src/main/java/cn/iselab/mooctest/user/service/impl/MedalServiceImpl.java
  16. 34 7
      mooctest-user-server/src/main/java/cn/iselab/mooctest/user/service/impl/UserServiceImpl.java
  17. 8 4
      mooctest-user-server/src/main/java/cn/iselab/mooctest/user/web/ctrl/UserController.java
  18. 8 0
      mooctest-user-server/src/main/java/cn/iselab/mooctest/user/web/logic/UserLogic.java
  19. 12 0
      mooctest-user-server/src/main/java/cn/iselab/mooctest/user/web/logic/impl/IntegralLogicImpl.java
  20. 59 5
      mooctest-user-server/src/main/java/cn/iselab/mooctest/user/web/logic/impl/UserLogicImpl.java
  21. 2 2
      mooctest-user-server/src/main/java/cn/iselab/mooctest/user/web/wrapper/UserWrapper.java
  22. 12 9
      mooctest-user-server/src/main/resources/application.yaml
  23. 2 4
      mooctest-user-server/src/test/java/cn/iselab/mooctest/user/service/impl/IntegralServiceImplTest.java

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

@@ -24,7 +24,12 @@
         <dependency>
             <groupId>cn.iselab.mooctest</groupId>
             <artifactId>user-dubbo-api</artifactId>
-            <version>1.0.10</version>
+            <version>1.0.17</version>
+        </dependency>
+        <dependency>
+            <groupId>org.mybatis.spring.boot</groupId>
+            <artifactId>mybatis-spring-boot-starter</artifactId>
+            <version>1.1.1</version>
         </dependency>
         <dependency>
             <groupId>cn.iselab.mooctest</groupId>

+ 2 - 0
mooctest-user-server/src/main/java/cn/iselab/mooctest/user/Application.java

@@ -1,5 +1,6 @@
 package cn.iselab.mooctest.user;
 
+import org.mybatis.spring.annotation.MapperScan;
 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.MessageSourceAutoConfiguration;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
@@ -95,6 +96,7 @@ import org.springframework.boot.autoconfigure.websocket.WebSocketAutoConfigurati
         WebSocketAutoConfiguration.class,
         XADataSourceAutoConfiguration.class,
 })
+@MapperScan("cn.iselab.mooctest.user.mapper")
 public class Application {
 
     public static void main(String[] args){

+ 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;
+    }
+
+}
+

+ 0 - 18
mooctest-user-server/src/main/java/cn/iselab/mooctest/user/dao/UserDao.java

@@ -1,18 +0,0 @@
-package cn.iselab.mooctest.user.dao;
-
-import cn.iselab.mooctest.user.model.User;
-import org.springframework.data.repository.CrudRepository;
-
-import javax.transaction.Transactional;
-
-/**
- * @author sean
- * @date 2018-03-04.
- */
-@Transactional
-public interface UserDao extends CrudRepository<User, Long>{
-
-    User findByEmail(String email);
-
-    User findByMobile(String mobile);
-}

+ 1 - 1
mooctest-user-server/src/main/java/cn/iselab/mooctest/user/dao/MedalDao.java → mooctest-user-server/src/main/java/cn/iselab/mooctest/user/mapper/MedalDao.java

@@ -1,4 +1,4 @@
-package cn.iselab.mooctest.user.dao;
+package cn.iselab.mooctest.user.mapper;
 
 import cn.iselab.mooctest.user.model.Medal;
 import org.springframework.data.jpa.repository.JpaSpecificationExecutor;

+ 1 - 1
mooctest-user-server/src/main/java/cn/iselab/mooctest/user/dao/User2IntegralDao.java → mooctest-user-server/src/main/java/cn/iselab/mooctest/user/mapper/User2IntegralDao.java

@@ -1,4 +1,4 @@
-package cn.iselab.mooctest.user.dao;
+package cn.iselab.mooctest.user.mapper;
 
 import cn.iselab.mooctest.user.model.User2Integral;
 import org.springframework.data.jpa.repository.JpaSpecificationExecutor;

+ 1 - 1
mooctest-user-server/src/main/java/cn/iselab/mooctest/user/dao/User2MedalDao.java → mooctest-user-server/src/main/java/cn/iselab/mooctest/user/mapper/User2MedalDao.java

@@ -1,4 +1,4 @@
-package cn.iselab.mooctest.user.dao;
+package cn.iselab.mooctest.user.mapper;
 
 import cn.iselab.mooctest.user.model.User2Medal;
 import org.springframework.data.jpa.repository.JpaSpecificationExecutor;

+ 1 - 2
mooctest-user-server/src/main/java/cn/iselab/mooctest/user/dao/UserIntegralDao.java → mooctest-user-server/src/main/java/cn/iselab/mooctest/user/mapper/UserIntegralDao.java

@@ -1,7 +1,6 @@
-package cn.iselab.mooctest.user.dao;
+package cn.iselab.mooctest.user.mapper;
 
 import cn.iselab.mooctest.user.model.UserIntegral;
-import org.springframework.data.jpa.domain.Specifications;
 import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
 import org.springframework.data.repository.CrudRepository;
 

+ 0 - 1
mooctest-user-server/src/main/java/cn/iselab/mooctest/user/mapper/UserMapper.java

@@ -2,7 +2,6 @@ package cn.iselab.mooctest.user.mapper;
 
 import cn.iselab.mooctest.user.model.User;
 import org.apache.ibatis.annotations.Insert;
-import org.apache.ibatis.annotations.Results;
 import org.apache.ibatis.annotations.Select;
 import org.apache.ibatis.annotations.Update;
 

+ 14 - 22
mooctest-user-server/src/main/java/cn/iselab/mooctest/user/model/User.java

@@ -1,52 +1,44 @@
 package cn.iselab.mooctest.user.model;
 
-import javax.persistence.*;
+import java.io.Serializable;
 import java.sql.Timestamp;
 
 /**
  * @author sean
  * @date 2018-03-02.
  */
-@Entity
-@Table(name = "user")
-public class User {
+public class User implements Serializable{
+
+    private static final long serialVersionUID = 1L;
 
-    @Id
-    @GeneratedValue
     private Long id;
 
-    @Column(name = "name")
     private String name;
 
-    @Column(name = "email")
     private String email;
 
-    @Column(name = "mobile")
     private String mobile;
 
-    @Column(name = "password")
     private String password;
 
-    @Column(name = "school")
     private String school;
 
-    @Column(name = "create_time")
     private Timestamp createTime = new Timestamp(System.currentTimeMillis());
 
-    @Column(name = "photo_url")
     private String photoUrl;
 
-    @Column(name = "province")
     private String province;
 
-    @Column(name = "city")
     private String city;
 
-    @Column(name = "manual_check_valid")
     private Boolean manualCheckValid;
 
-    @Column(name = "is_available")
-    private Boolean isAvailable;
+    /**
+     * -1 用户被删除
+     * 0  用户被禁用
+     * 1  用户解除禁用 可以正常使用
+     */
+    private Integer availability;
 
     public Long getId() {
         return id;
@@ -136,11 +128,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;
     }
 }

+ 1 - 1
mooctest-user-server/src/main/java/cn/iselab/mooctest/user/rpc/MedalRPC.java

@@ -57,7 +57,7 @@ public class MedalRPC implements MedalService{
     }
 
     /**
-     * save medal list
+     * get medal list
      * @param keyword
      * @return medalTO
      */

+ 16 - 14
mooctest-user-server/src/main/java/cn/iselab/mooctest/user/rpc/UserRPC.java

@@ -7,6 +7,8 @@ import com.alibaba.dubbo.config.annotation.Service;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
+import java.util.List;
+
 /**
  * @author sean
  * @date 2018-03-03.
@@ -48,18 +50,18 @@ public class UserRPC implements UserService {
         return userLogic.updateUser(userDTO);
     }
 
-//    @Override
-//    public UserDTO getUserByUsername(String s) {
-//        UserDTO userDTO = userLogic.getUserByEmail(s);
-//        if (userDTO != null) {
-//            return userDTO;
-//        } else {
-//            userDTO = userLogic.getUserByMobile(s);
-//            if (userDTO != null) {
-//                return userDTO;
-//            } else {
-//                throw new HttpBadRequestException("user not exist");
-//            }
-//        }
-//    }
+    @Override
+    public List<UserDTO> getUserByFuzzyName(UserDTO userDTO) {
+        return userLogic.getUserByFuzzyName(userDTO);
+    }
+
+    @Override
+    public List<UserDTO> getUserByFuzzyEmail(UserDTO userDTO) {
+        return userLogic.getUserByFuzzyEmail(userDTO);
+    }
+
+    @Override
+    public List<UserDTO> getUserByFuzzyNameOrEmail(UserDTO userDTO) {
+        return userLogic.getUserByFuzzyNameOrEmail(userDTO);
+    }
 }

+ 9 - 0
mooctest-user-server/src/main/java/cn/iselab/mooctest/user/service/UserService.java

@@ -1,7 +1,10 @@
 package cn.iselab.mooctest.user.service;
 
+
 import cn.iselab.mooctest.user.model.User;
 
+import java.util.List;
+
 /**
  * @author sean
  * @date 2018-03-03.
@@ -17,5 +20,11 @@ public interface UserService {
     User findById(Long userId);
 
     User update(User user);
+
+    List<User> findByFuzzyName(String name);
+
+    List<User> findByFuzzyEmail(String email);
+
+    List<User> findByFuzzyNameOrEmail(String keyword);
 }
 

+ 2 - 5
mooctest-user-server/src/main/java/cn/iselab/mooctest/user/service/impl/IntegralServiceImpl.java

@@ -1,14 +1,11 @@
 package cn.iselab.mooctest.user.service.impl;
 
-import cn.iselab.mooctest.user.dao.User2IntegralDao;
-import cn.iselab.mooctest.user.dao.UserIntegralDao;
+import cn.iselab.mooctest.user.mapper.User2IntegralDao;
+import cn.iselab.mooctest.user.mapper.UserIntegralDao;
 import cn.iselab.mooctest.user.model.User2Integral;
 import cn.iselab.mooctest.user.model.UserIntegral;
 import cn.iselab.mooctest.user.service.IntegralService;
-import org.apache.commons.lang.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.data.domain.Page;
-import org.springframework.data.domain.Pageable;
 import org.springframework.data.jpa.domain.Specification;
 import org.springframework.data.jpa.domain.Specifications;
 import org.springframework.stereotype.Service;

+ 2 - 4
mooctest-user-server/src/main/java/cn/iselab/mooctest/user/service/impl/MedalServiceImpl.java

@@ -1,14 +1,12 @@
 package cn.iselab.mooctest.user.service.impl;
 
-import cn.iselab.mooctest.user.dao.MedalDao;
-import cn.iselab.mooctest.user.dao.User2MedalDao;
+import cn.iselab.mooctest.user.mapper.MedalDao;
+import cn.iselab.mooctest.user.mapper.User2MedalDao;
 import cn.iselab.mooctest.user.model.Medal;
 import cn.iselab.mooctest.user.model.User2Medal;
 import cn.iselab.mooctest.user.service.MedalService;
 import org.apache.commons.lang.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.data.domain.Page;
-import org.springframework.data.domain.Pageable;
 import org.springframework.data.jpa.domain.Specification;
 import org.springframework.data.jpa.domain.Specifications;
 import org.springframework.stereotype.Service;

+ 34 - 7
mooctest-user-server/src/main/java/cn/iselab/mooctest/user/service/impl/UserServiceImpl.java

@@ -1,11 +1,13 @@
 package cn.iselab.mooctest.user.service.impl;
 
-import cn.iselab.mooctest.user.dao.UserDao;
+import cn.iselab.mooctest.user.mapper.UserMapper;
 import cn.iselab.mooctest.user.model.User;
 import cn.iselab.mooctest.user.service.UserService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.util.List;
+
 /**
  * @author sean
  * @date 2018-03-04.
@@ -14,30 +16,55 @@ import org.springframework.stereotype.Service;
 public class UserServiceImpl implements UserService {
 
     @Autowired
-    private UserDao userDao;
+    private UserMapper userMapper;
 
     @Override
     public User findByEmail(String email) {
-        return userDao.findByEmail(email);
+        return userMapper.findByEmail(email);
     }
 
     @Override
     public User findByMobile(String mobile) {
-        return userDao.findByMobile(mobile);
+        return userMapper.findByMobile(mobile);
     }
 
     @Override
     public User register(User user) {
-        return userDao.save(user);
+        String email = user.getEmail();
+        userMapper.insert(user);
+        user = userMapper.findByEmail(email);
+        return user;
     }
 
     @Override
     public User findById(Long userId) {
-        return userDao.findOne(userId);
+        return userMapper.findById(userId);
     }
 
     @Override
     public User update(User user) {
-        return userDao.save(user);
+        userMapper.updateAddress(user);
+        userMapper.updateAvailability(user);
+        userMapper.updateEmail(user);
+        userMapper.updateMobile(user);
+        userMapper.updatePassword(user);
+        userMapper.updatePhotoUrl(user);
+        userMapper.updateName(user);
+        return userMapper.findById(user.getId());
+    }
+
+    @Override
+    public List<User> findByFuzzyName(String name) {
+        return userMapper.findByFuzzyName(name);
+    }
+
+    @Override
+    public List<User> findByFuzzyEmail(String email) {
+        return userMapper.findByFuzzyEmail(email);
+    }
+
+    @Override
+    public List<User> findByFuzzyNameOrEmail(String keyword) {
+        return userMapper.findByFuzzyNameOrEmail(keyword);
     }
 }

+ 8 - 4
mooctest-user-server/src/main/java/cn/iselab/mooctest/user/web/ctrl/UserController.java

@@ -4,10 +4,7 @@ import cn.iselab.mooctest.rpc.user.data.UserDTO;
 import cn.iselab.mooctest.user.constants.UrlConstants;
 import cn.iselab.mooctest.user.web.logic.UserLogic;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestMethod;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
 
 /**
  * @author sean
@@ -28,4 +25,11 @@ public class UserController extends BaseController {
     public UserDTO getUserByEmail(@PathVariable("email") String email) {
         return userLogic.getUserByEmail(email);
     }
+
+    @RequestMapping(value = UrlConstants.API + "user", method = RequestMethod.POST)
+    public UserDTO save(@RequestBody UserDTO userDTO){
+        return userLogic.save(userDTO);
+    }
+
+
 }

+ 8 - 0
mooctest-user-server/src/main/java/cn/iselab/mooctest/user/web/logic/UserLogic.java

@@ -2,6 +2,8 @@ package cn.iselab.mooctest.user.web.logic;
 
 import cn.iselab.mooctest.rpc.user.data.UserDTO;
 
+import java.util.List;
+
 /**
  * @author sean
  * @date 2018-03-04.
@@ -19,4 +21,10 @@ public interface UserLogic {
     UserDTO save(UserDTO userDTO);
 
     UserDTO updateUser(UserDTO userDTO);
+
+    List<UserDTO> getUserByFuzzyName(UserDTO userDTO);
+
+    List<UserDTO> getUserByFuzzyEmail(UserDTO userDTO);
+
+    List<UserDTO> getUserByFuzzyNameOrEmail(UserDTO userDTO);
 }

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

@@ -42,6 +42,18 @@ public class IntegralLogicImpl extends BaseLogic implements IntegralLogic {
         User2Integral integral= integralCaughtWrapper.unwrap(dto);
         integral.setCreateTime(new Timestamp(System.currentTimeMillis()));
         integral=integralService.saveUser2Integral(integral);
+
+        UserIntegral userIntegral=integralService.findByUserId(dto.getUserId());
+        if(userIntegral!=null) {
+            userIntegral.setTotal(userIntegral.getTotal() + integral.getPoints());
+        }else {
+            UserIntegral integral1=new UserIntegral();
+            integral1.setUserId(dto.getUserId());
+            integral1.setTotal(integral.getPoints());
+            integral1.setCreateTime(new Timestamp(System.currentTimeMillis()));
+            integral1.setEnabled(true);
+            integralService.saveIntegral(integral1);
+        }
         return integralCaughtWrapper.wrap(integral);
     }
 

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

@@ -2,6 +2,8 @@ package cn.iselab.mooctest.user.web.logic.impl;
 
 import cn.iselab.mooctest.rpc.user.data.UserDTO;
 import cn.iselab.mooctest.user.model.User;
+import cn.iselab.mooctest.user.model.UserIntegral;
+import cn.iselab.mooctest.user.service.IntegralService;
 import cn.iselab.mooctest.user.service.UserService;
 import cn.iselab.mooctest.user.web.exception.HttpBadRequestException;
 import cn.iselab.mooctest.user.web.logic.BaseLogic;
@@ -10,6 +12,9 @@ import cn.iselab.mooctest.user.web.wrapper.UserWrapper;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.sql.Timestamp;
+import java.util.List;
+
 /**
  * @author sean
  * @date 2018-03-04.
@@ -23,13 +28,18 @@ public class UserLogicImpl extends BaseLogic implements UserLogic {
     @Autowired
     private UserWrapper userWrapper;
 
+    @Autowired
+    private IntegralService integralService;
+
     @Override
     public UserDTO getUserByEmail(String s) {
         User user = userService.findByEmail(s);
         if (user == null) {
             return null;
         }
-        return userWrapper.wrap(user);
+        UserDTO dto = userWrapper.wrap(user);
+        setIntegral(dto, user);
+        return dto;
     }
 
     @Override
@@ -38,7 +48,9 @@ public class UserLogicImpl extends BaseLogic implements UserLogic {
         if (user == null) {
             return null;
         }
-        return userWrapper.wrap(user);
+        UserDTO dto = userWrapper.wrap(user);
+        setIntegral(dto, user);
+        return dto;
     }
 
     @Override
@@ -47,13 +59,15 @@ public class UserLogicImpl extends BaseLogic implements UserLogic {
         if (user == null) {
             return null;
         }
-        return userWrapper.wrap(user);
+        UserDTO dto = userWrapper.wrap(user);
+        setIntegral(dto, user);
+        return dto;
     }
 
     @Override
     public Boolean checkPassword(UserDTO userDTO) {
         String password = userDTO.getPassword();
-        User user = new User();
+        User user;
         if (userDTO.getEmail().isEmpty() && userDTO.getMobile().isEmpty()) {
             throw new HttpBadRequestException("empty username");
         }
@@ -81,6 +95,46 @@ public class UserLogicImpl extends BaseLogic implements UserLogic {
     @Override
     public UserDTO updateUser(UserDTO userDTO) {
         User user = userWrapper.unwrap(userDTO);
-        return userWrapper.wrap(userService.update(user));
+        user = userService.update(user);
+        return userWrapper.wrap(user);
+    }
+
+    private void setIntegral(UserDTO dto, User user) {
+        UserIntegral integral = integralService.findByUserId(user.getId());
+        if (integral == null) {
+            UserIntegral integral1 = new UserIntegral();
+            integral1.setEnabled(true);
+            integral1.setTotal(0);
+            integral1.setUserId(user.getId());
+            integral1.setCreateTime(new Timestamp(System.currentTimeMillis()));
+            integralService.saveIntegral(integral1);
+            dto.setIntegral(integral1.getTotal());
+        } else {
+            dto.setIntegral(integral.getTotal());
+        }
+    }
+
+    @Override
+    public List<UserDTO> getUserByFuzzyName(UserDTO userDTO) {
+        List<User> users = userService.findByFuzzyName(userDTO.getName());
+        return userWrapper.wrap(users);
+    }
+
+    @Override
+    public List<UserDTO> getUserByFuzzyEmail(UserDTO userDTO) {
+        List<User> users = userService.findByFuzzyEmail(userDTO.getEmail());
+        return userWrapper.wrap(users);
+    }
+
+    @Override
+    public List<UserDTO> getUserByFuzzyNameOrEmail(UserDTO userDTO) {
+        String keyword = null;
+        if(userDTO.getName() != null) {
+            keyword = userDTO.getName();
+        } else if (userDTO.getEmail() != null) {
+            keyword = userDTO.getEmail();
+        }
+        List<User> userList = userService.findByFuzzyNameOrEmail(keyword);
+        return userWrapper.wrap(userList);
     }
 }

+ 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());

+ 12 - 9
mooctest-user-server/src/main/resources/application.yaml

@@ -26,9 +26,11 @@ spring:
 spring:
     profiles: dev
     datasource:
+        driverClassName: com.mysql.jdbc.Driver
         url: jdbc:mysql://127.0.0.1:3306/mooctest_user?useUnicode=yes&characterEncoding=UTF-8
         username: root
         password: zhangxin
+
     dubbo:
         application.name: user-service-provider
         registry.address: zookeeper://127.0.0.1:2181
@@ -43,13 +45,11 @@ spring:
 server:
     port: 8081
 
-
 mybatis:
     typeAliasesPackage: cn.iselab.mooctest.user.model
     configuration:
         map-underscore-to-camel-case: true
 
-
 logging.config: classpath:log4j2.yaml
 
 ---
@@ -57,21 +57,24 @@ logging.config: classpath:log4j2.yaml
 spring:
     profiles: test
     datasource:
-        url: jdbc:mysql://127.0.0.1:3306/mooctest_user # please modify manually
-        username: test-username # please modify manually
-        password: test-password # please modify manually
+        url: jdbc:mysql://101.37.175.111:3306/mooctest_user?useUnicode=yes&characterEncoding=UTF-8 # please modify manually
+        username: mooctest # please modify manually
+        password: secr3t! # please modify manually
 
     dubbo:
         application.name: user-service-provider
-        registry.address: zookeeper://127.0.0.1:2181
+        registry.address: zookeeper://101.37.175.111:2181
         protocol.name: dubbo
-        protocol.port: 20878
-        protocol.host: 127.0.0.1
+        protocol.port: 20900
+        protocol.host: 101.37.175.111
         scan: cn.iselab.mooctest.user.rpc
         monitor.protocal: registry
         provider.timeout: 120000
         provider.retries: 0
 
+server:
+    port: 8191
+
 logging.config: classpath:log4j2.test.yaml
 logging.access.directory: /home/share/log
 
@@ -98,7 +101,7 @@ spring:
         provider.retries: 0
 
 server:
-    port: 8088
+    port: 8191
 
 logging.config: classpath:log4j2.online.yaml
 logging.access.directory: /home/share/log

+ 2 - 4
mooctest-user-server/src/test/java/cn/iselab/mooctest/user/service/impl/IntegralServiceImplTest.java

@@ -1,15 +1,13 @@
 package cn.iselab.mooctest.user.service.impl;
 
-import cn.iselab.mooctest.user.dao.User2IntegralDao;
-import cn.iselab.mooctest.user.dao.UserIntegralDao;
+import cn.iselab.mooctest.user.mapper.User2IntegralDao;
+import cn.iselab.mooctest.user.mapper.UserIntegralDao;
 import cn.iselab.mooctest.user.service.IntegralService;
 import org.junit.Before;
 import org.junit.Test;
 import org.mockito.InjectMocks;
 import org.mockito.Mock;
 
-import static org.junit.Assert.*;
-
 /**
  * @Author ROKG
  * @Description