chenxz %!s(int64=7) %!d(string=hai) anos
pai
achega
2ae8879bb5

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

@@ -11,4 +11,6 @@ public class UrlConstants {
     public static final String API_INTEGRAL="/api/integral";
 
     public static final String API_MEDAL="/api/medal";
+
+    public static final String API="/api/";
 }

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

@@ -0,0 +1,18 @@
+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);
+}

+ 146 - 0
mooctest-user-server/src/main/java/cn/iselab/mooctest/user/model/User.java

@@ -0,0 +1,146 @@
+package cn.iselab.mooctest.user.model;
+
+import javax.persistence.*;
+import java.sql.Timestamp;
+
+/**
+ * @author sean
+ * @date 2018-03-02.
+ */
+@Entity
+@Table(name = "user")
+public class User {
+
+    @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;
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public String getEmail() {
+        return email;
+    }
+
+    public void setEmail(String email) {
+        this.email = email;
+    }
+
+    public String getMobile() {
+        return mobile;
+    }
+
+    public void setMobile(String mobile) {
+        this.mobile = mobile;
+    }
+
+    public String getPassword() {
+        return password;
+    }
+
+    public void setPassword(String password) {
+        this.password = password;
+    }
+
+    public String getSchool() {
+        return school;
+    }
+
+    public void setSchool(String school) {
+        this.school = school;
+    }
+
+    public Timestamp getCreateTime() {
+        return createTime;
+    }
+
+    public void setCreateTime(Timestamp createTime) {
+        this.createTime = createTime;
+    }
+
+    public String getPhotoUrl() {
+        return photoUrl;
+    }
+
+    public void setPhotoUrl(String photoUrl) {
+        this.photoUrl = photoUrl;
+    }
+
+    public String getProvince() {
+        return province;
+    }
+
+    public void setProvince(String province) {
+        this.province = province;
+    }
+
+    public String getCity() {
+        return city;
+    }
+
+    public void setCity(String city) {
+        this.city = city;
+    }
+
+    public Boolean getManualCheckValid() {
+        return manualCheckValid;
+    }
+
+    public void setManualCheckValid(Boolean manualCheckValid) {
+        this.manualCheckValid = manualCheckValid;
+    }
+
+    public Boolean getAvailable() {
+        return isAvailable;
+    }
+
+    public void setAvailable(Boolean available) {
+        isAvailable = available;
+    }
+}

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

@@ -31,7 +31,8 @@ public class MedalRPC implements MedalService{
      * @return medalTO
      */
     @Override
-    public MedalDTO saveMedal(MedalDTO dto){
+    public MedalDTO saveMedal(MedalDTO dto)
+    {
         return medalLogic.saveMedal(dto);
     }
 

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

@@ -0,0 +1,65 @@
+package cn.iselab.mooctest.user.rpc;
+
+import cn.iselab.mooctest.rpc.user.api.UserService;
+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.stereotype.Component;
+
+/**
+ * @author sean
+ * @date 2018-03-03.
+ */
+@Service(version = "1.0.0")
+@Component
+public class UserRPC implements UserService {
+
+    @Autowired
+    private UserLogic userLogic;
+
+    @Override
+    public UserDTO getUserByEmail(String s) {
+        return userLogic.getUserByEmail(s);
+    }
+
+    @Override
+    public UserDTO getUserByMobile(String s) {
+        return userLogic.getUserByMobile(s);
+    }
+
+    @Override
+    public UserDTO getUserById(Long userId) {
+        return userLogic.getUserById(userId);
+    }
+
+    @Override
+    public Boolean checkPassword(UserDTO userDTO) {
+        return userLogic.checkPassword(userDTO);
+    }
+
+    @Override
+    public UserDTO save(UserDTO userDTO) {
+        return userLogic.save(userDTO);
+    }
+
+    @Override
+    public UserDTO updateUser(UserDTO userDTO) {
+        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");
+//            }
+//        }
+//    }
+}

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

@@ -0,0 +1,21 @@
+package cn.iselab.mooctest.user.service;
+
+import cn.iselab.mooctest.user.model.User;
+
+/**
+ * @author sean
+ * @date 2018-03-03.
+ */
+public interface UserService {
+
+    User findByEmail(String email);
+
+    User findByMobile(String mobile);
+
+    User register(User user);
+
+    User findById(Long userId);
+
+    User update(User user);
+}
+

+ 43 - 0
mooctest-user-server/src/main/java/cn/iselab/mooctest/user/service/impl/UserServiceImpl.java

@@ -0,0 +1,43 @@
+package cn.iselab.mooctest.user.service.impl;
+
+import cn.iselab.mooctest.user.dao.UserDao;
+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;
+
+/**
+ * @author sean
+ * @date 2018-03-04.
+ */
+@Service
+public class UserServiceImpl implements UserService {
+
+    @Autowired
+    private UserDao userDao;
+
+    @Override
+    public User findByEmail(String email) {
+        return userDao.findByEmail(email);
+    }
+
+    @Override
+    public User findByMobile(String mobile) {
+        return userDao.findByMobile(mobile);
+    }
+
+    @Override
+    public User register(User user) {
+        return userDao.save(user);
+    }
+
+    @Override
+    public User findById(Long userId) {
+        return userDao.findOne(userId);
+    }
+
+    @Override
+    public User update(User user) {
+        return userDao.save(user);
+    }
+}

+ 31 - 0
mooctest-user-server/src/main/java/cn/iselab/mooctest/user/web/ctrl/UserController.java

@@ -0,0 +1,31 @@
+package cn.iselab.mooctest.user.web.ctrl;
+
+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;
+
+/**
+ * @author sean
+ * @date 2018-03-05.
+ */
+@RestController
+public class UserController extends BaseController {
+
+    @Autowired
+    private UserLogic userLogic;
+
+    @RequestMapping(value = UrlConstants.API + "user/{id:\\d+}", method = RequestMethod.GET)
+    public UserDTO getUserById(@PathVariable("id") Long id) {
+        return userLogic.getUserById(id);
+    }
+
+    @RequestMapping(value = UrlConstants.API + "userByEmail/{email}", method = RequestMethod.GET)
+    public UserDTO getUserByEmail(@PathVariable("email") String email) {
+        return userLogic.getUserByEmail(email);
+    }
+}

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

@@ -0,0 +1,22 @@
+package cn.iselab.mooctest.user.web.logic;
+
+import cn.iselab.mooctest.rpc.user.data.UserDTO;
+
+/**
+ * @author sean
+ * @date 2018-03-04.
+ */
+public interface UserLogic {
+
+    UserDTO getUserByEmail(String s);
+
+    UserDTO getUserByMobile(String s);
+
+    UserDTO getUserById(Long userId);
+
+    Boolean checkPassword(UserDTO userDTO);
+
+    UserDTO save(UserDTO userDTO);
+
+    UserDTO updateUser(UserDTO userDTO);
+}

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

@@ -0,0 +1,86 @@
+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.service.UserService;
+import cn.iselab.mooctest.user.web.exception.HttpBadRequestException;
+import cn.iselab.mooctest.user.web.logic.BaseLogic;
+import cn.iselab.mooctest.user.web.logic.UserLogic;
+import cn.iselab.mooctest.user.web.wrapper.UserWrapper;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+/**
+ * @author sean
+ * @date 2018-03-04.
+ */
+@Service
+public class UserLogicImpl extends BaseLogic implements UserLogic {
+
+    @Autowired
+    private UserService userService;
+
+    @Autowired
+    private UserWrapper userWrapper;
+
+    @Override
+    public UserDTO getUserByEmail(String s) {
+        User user = userService.findByEmail(s);
+        if (user == null) {
+            return null;
+        }
+        return userWrapper.wrap(user);
+    }
+
+    @Override
+    public UserDTO getUserByMobile(String s) {
+        User user = userService.findByMobile(s);
+        if (user == null) {
+            return null;
+        }
+        return userWrapper.wrap(user);
+    }
+
+    @Override
+    public UserDTO getUserById(Long userId) {
+        User user = userService.findById(userId);
+        if (user == null) {
+            return null;
+        }
+        return userWrapper.wrap(user);
+    }
+
+    @Override
+    public Boolean checkPassword(UserDTO userDTO) {
+        String password = userDTO.getPassword();
+        User user = new User();
+        if (userDTO.getEmail().isEmpty() && userDTO.getMobile().isEmpty()) {
+            throw new HttpBadRequestException("empty username");
+        }
+        if (!userDTO.getEmail().isEmpty()) {
+            user = userService.findByEmail(userDTO.getEmail());
+            if (user.getPassword().equals(password)) {
+                return true;
+            } else
+                return false;
+        } else {
+            user = userService.findByMobile(userDTO.getMobile());
+            if (user.getPassword().equals(password)) {
+                return true;
+            } else
+                return false;
+        }
+    }
+
+    @Override
+    public UserDTO save(UserDTO userDTO) {
+        User user = userWrapper.unwrap(userDTO);
+        return userWrapper.wrap(userService.register(user));
+    }
+
+    @Override
+    public UserDTO updateUser(UserDTO userDTO) {
+        User user = userWrapper.unwrap(userDTO);
+        return userWrapper.wrap(userService.update(user));
+    }
+}

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

@@ -0,0 +1,54 @@
+package cn.iselab.mooctest.user.web.wrapper;
+
+import cn.iselab.mooctest.rpc.user.data.UserDTO;
+import cn.iselab.mooctest.user.model.User;
+import org.springframework.stereotype.Service;
+
+import java.sql.Timestamp;
+
+/**
+ * @author sean
+ * @date 2018-03-04.
+ */
+@Service
+public class UserWrapper extends BaseWrapper<UserDTO, User> {
+
+    @Override
+    public UserDTO wrap(User user) {
+        UserDTO userDTO = new UserDTO();
+
+        userDTO.setAvailable(user.getAvailable());
+        userDTO.setCity(user.getCity());
+        userDTO.setCreateTime(user.getCreateTime().getTime());
+        userDTO.setEmail(user.getEmail());
+        userDTO.setId(user.getId());
+        userDTO.setManualCheckValid(user.getManualCheckValid());
+        userDTO.setMobile(user.getMobile());
+        userDTO.setName(user.getName());
+        userDTO.setPassword(user.getPassword());
+        userDTO.setPhotoUrl(user.getPhotoUrl());
+        userDTO.setProvince(user.getProvince());
+        userDTO.setSchool(user.getSchool());
+        return userDTO;
+    }
+
+    @Override
+    public User unwrap(UserDTO data) {
+        User user = new User();
+
+        user.setSchool(data.getSchool());
+        user.setProvince(data.getProvince());
+        user.setPhotoUrl(data.getPhotoUrl());
+        user.setAvailable(data.getAvailable());
+        user.setCity(data.getCity());
+        user.setCreateTime(new Timestamp(data.getCreateTime()));
+        user.setEmail(data.getEmail());
+        user.setId(data.getId());
+        user.setManualCheckValid(data.getManualCheckValid());
+        user.setMobile(data.getMobile());
+        user.setName(data.getName());
+        user.setPassword(data.getPassword());
+
+        return user;
+    }
+}

+ 3 - 2
mooctest-user-server/src/main/resources/application.yaml

@@ -28,16 +28,17 @@ spring:
     datasource:
         url: jdbc:mysql://127.0.0.1:3306/mooctest_user?useUnicode=yes&characterEncoding=UTF-8
         username: root
-        password: cxz6518
+        password: zhangxin
     dubbo:
         application.name: user-service-provider
         registry.address: zookeeper://118.178.131.206:2181
         protocol.name: dubbo
         protocol.port: 20900
+#        protocol.host: 127.0.0.1
         scan: cn.iselab.mooctest.user.rpc
         monitor.protocal: registry
         provider.timeout: 120000
-        provider.retries: 0
+#        provider.retries: 0
 
 server:
     port: 8081