Browse Source

y用户修改信息bug修改

wangmh 7 years ago
parent
commit
ba51c243e1

+ 22 - 8
sso-server/src/main/java/com/uas/sso/controller/ResetPasswordController.java

@@ -138,6 +138,7 @@ public class ResetPasswordController extends BaseController {
     private String setToken(Long userUU) {
 
         Token token = new Token(userUU, EXPIRES);
+        tokenService.save(token);
         return token.getId();
     }
 
@@ -156,7 +157,7 @@ public class ResetPasswordController extends BaseController {
 
         // 校验密码
         String encryPwd = userService.getEncryPassword(Const.ENCRY_FORMAT, password, user.getSalt());
-        if (!encryPwd.equals(password)) {
+        if (!encryPwd.equals(user.getPassword())) {
             return error("密码错误");
         }
 
@@ -205,7 +206,7 @@ public class ResetPasswordController extends BaseController {
 
         // 校验token是否正确
         String sessionToken = (String) request.getSession().getAttribute("token");
-        if (StringUtils.isEmpty(sessionToken) || sessionToken.equals(token)) {
+        if (StringUtils.isEmpty(sessionToken) || !sessionToken.equals(token)) {
             return error("请重新获取验证码");
         }
         if (StringUtils.isEmpty(code)) {
@@ -236,11 +237,12 @@ public class ResetPasswordController extends BaseController {
 
         // 设置发送邮件信息
         int expires = 24*60*60;
-        Token token = new Token("user", expires);
+        Token token = new Token(user.getUserUU(), expires);
+        tokenService.save(token);
         ModelMap data = new ModelMap();
         data.put("vipName", user.getVipName());
         // TODO 邮件认证地址
-        data.put("url", "http://192.168.253.66:8081/sso/resetPwd/check/question?token="+token);
+        data.put("url", "http://192.168.253.118:3001/reset/passwordResetValidQuestion?token="+token.getId());
 
         // 发送邮件
         String email = user.getEmail();
@@ -276,10 +278,10 @@ public class ResetPasswordController extends BaseController {
         if (user == null) {
             return error("认证信息错误,清刷新重试!");
         }
-        tokenService.delete(token);
 
         // 返回用户密保,token
         existToken = new Token(user, EXPIRES);
+        tokenService.save(existToken);
         ModelMap data = new ModelMap();
         data.put("token",existToken.getId());
         data.put("questions", user.getQuestions());
@@ -292,7 +294,8 @@ public class ResetPasswordController extends BaseController {
      * @return
      */
     @RequestMapping(value = "/check/question", method = RequestMethod.POST)
-    public ModelMap checkByQuestion(@RequestParam String token, List<Map<String, Object>> answers) {
+    public ModelMap checkByQuestion(@RequestParam String token, String answers, @RequestParam String pageToken) {
+        List<Map> jsonAnswer = JSON.parseArray(answers, Map.class);
         // 校验token是否正确
         if (StringUtils.isEmpty(token)) {
             return error("请刷新重试");
@@ -304,21 +307,24 @@ public class ResetPasswordController extends BaseController {
 
         // 校验密保答案
         User user = (User) expireToken.getBind();
+        user = userService.findOne(user.getUserUU());
         List<UserQuestion> questions = user.getQuestions();
         Map<Long, String> userAnswer = new HashMap<>(questions.size());
         for (UserQuestion question : questions) {
             userAnswer.put(question.getId(), question.getAnswer());
         }
-        for (Map<String, Object> answer : answers) {
-            if (!answer.get("answer").equals(userAnswer.get(answer.get("id")))){
+        for (Map<String, Object> answer : jsonAnswer) {
+            if (!answer.get("answer").equals(userAnswer.get(Long.valueOf(answer.get("id").toString())))){
                 return error("答案错误");
             }
         }
 
         tokenService.delete(token);
+        tokenService.delete(pageToken);
 
         // 返回token
         expireToken = new Token(user, EXPIRES);
+        tokenService.save(expireToken);
         ModelMap data = new ModelMap();
         data.put("token", expireToken.getId());
         return success(data);
@@ -359,4 +365,12 @@ public class ResetPasswordController extends BaseController {
         tokenService.delete(token);
         return success();
     }
+
+    @RequestMapping(value = "/checkCode" ,method = RequestMethod.POST)
+    public ModelMap checkCode(String code, @RequestParam String token, String mobile) {
+        // 校验手机号验证码
+        checkMobileCode(token, mobile, code);
+
+        return success();
+    }
 }

+ 4 - 1
sso-server/src/main/java/com/uas/sso/controller/UpdateUserController.java

@@ -359,10 +359,13 @@ public class UpdateUserController extends BaseController {
             return error("请求超时");
         }
         Token existToken = tokenService.findOne(token);
+        if (existToken == null) {
+            return error("请求超时");
+        }
+        tokenService.delete(token);
         // 拿出userUU,并删除token
         if (existToken.getBind() == null || !(existToken.getBind() instanceof Long)) {
             // token错误,跳转到失败页面
-            tokenService.delete(token);
             return error("请求错误");
         }
         Long userUU = (Long) existToken.getBind();

+ 1 - 1
sso-server/src/main/java/com/uas/sso/core/Type.java

@@ -31,7 +31,7 @@ public enum Type {
     /**
      * 修改用户密保
      */
-    UPDATE_QUESTION("question"),
+    UPDATE_QUESTION("QUESTION"),
 
     /**
      * 修改类型为注册

+ 25 - 0
sso-server/src/main/java/com/uas/sso/dao/UserQuestionDao.java

@@ -0,0 +1,25 @@
+package com.uas.sso.dao;
+
+import com.uas.sso.entity.UserQuestion;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
+import org.springframework.data.jpa.repository.Query;
+import org.springframework.data.repository.query.Param;
+
+import java.util.List;
+
+/**
+ * @author wangmh
+ * @create 2018-01-27 13:47
+ * @desc
+ **/
+public interface UserQuestionDao extends JpaRepository<UserQuestion, Long>, JpaSpecificationExecutor<UserQuestion> {
+    /**
+     * 根据uu号删除用户密保
+     * @param userUU 用户uu号
+     */
+    @Query("delete from UserQuestion t where t.userUU=:userUU")
+    void deleteByUserUU(@Param("userUU") Long userUU);
+
+    List<UserQuestion> findByUserUU(long userUU);
+}

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

@@ -199,6 +199,9 @@ public class User implements Serializable {
     @JoinColumn(name = "useruu", nullable = false)
     private List<UserQuestion> questions;
 
+    /**
+     * 所在企业
+     */
     @com.fasterxml.jackson.annotation.JsonIgnore
     @ManyToMany(mappedBy = "users")
     private Set<Userspace> userSpaces = new HashSet<>();

+ 39 - 0
sso-server/src/main/java/com/uas/sso/entity/UserQuestion.java

@@ -1,5 +1,8 @@
 package com.uas.sso.entity;
 
+import com.alibaba.fastjson.annotation.JSONField;
+import org.codehaus.jackson.annotate.JsonIgnore;
+
 import javax.persistence.*;
 import java.io.Serializable;
 
@@ -31,6 +34,13 @@ public class UserQuestion implements Serializable {
     @Column(name = "useruu", insertable=false, updatable=false)
     private Long userUU;
 
+    /**
+     * 用户uu号
+     */
+    @ManyToOne(cascade = {CascadeType.REFRESH}, fetch = FetchType.LAZY)
+    @JoinColumn(name="useruu")
+    private User user;
+
     /**
      * 密保问题
      */
@@ -65,6 +75,16 @@ public class UserQuestion implements Serializable {
         this.userUU = userUU;
     }
 
+    @JsonIgnore
+    @JSONField(serialize = false)
+    public User getUser() {
+        return user;
+    }
+
+    public void setUser(User user) {
+        this.user = user;
+    }
+
     public String getQuestion() {
         return question;
     }
@@ -88,4 +108,23 @@ public class UserQuestion implements Serializable {
     public void setSort(String sort) {
         this.sort = sort;
     }
+
+    @Override
+    public boolean equals(Object o) {
+        if (this == o) return true;
+        if (o == null || getClass() != o.getClass()) return false;
+
+        UserQuestion question = (UserQuestion) o;
+
+        if (!userUU.equals(question.userUU)) return false;
+        return sort.equals(question.sort);
+
+    }
+
+    @Override
+    public int hashCode() {
+        int result = userUU.hashCode();
+        result = 31 * result + sort.hashCode();
+        return result;
+    }
 }

+ 9 - 0
sso-server/src/main/java/com/uas/sso/entity/UserSpaceLog.java

@@ -0,0 +1,9 @@
+package com.uas.sso.entity;
+
+/**
+ * @author wangmh
+ * @create 2018-01-26 16:22
+ * @desc 企业信息修改日志
+ **/
+public class UserSpaceLog {
+}

+ 1 - 1
sso-server/src/main/java/com/uas/sso/entity/Userspace.java

@@ -193,7 +193,7 @@ public class Userspace implements Serializable {
     /**
      * 企业开通的应用
      */
-    @ManyToMany(fetch = FetchType.EAGER)
+    @ManyToMany(fetch = FetchType.LAZY)
     @JoinTable(name = "sso$app_userspace",
             joinColumns = {@JoinColumn(name="space_uu", referencedColumnName="spaceuu")},
             inverseJoinColumns = {@JoinColumn(name="app_uid", referencedColumnName="uid_")})

+ 4 - 0
sso-server/src/main/java/com/uas/sso/logging/UserBufferedLogger.java

@@ -25,4 +25,8 @@ public class UserBufferedLogger extends Logger<UserLog> {
     public void info(User user, String type) {
         log(new UserLog(user, Level.INFO.getValue(), type));
     }
+
+    public void info(User user, String type, String otherMsg) {
+        log(new UserLog(user, Level.INFO.getValue(), type, otherMsg));
+    }
 }

+ 27 - 0
sso-server/src/main/java/com/uas/sso/service/UserQuestionService.java

@@ -0,0 +1,27 @@
+package com.uas.sso.service;
+
+import com.uas.sso.entity.UserQuestion;
+
+import java.util.List;
+
+/**
+ * @author wangmh
+ * @create 2018-01-27 13:46
+ * @desc
+ **/
+public interface UserQuestionService {
+
+    /**
+     * 删除密保问题
+     * @param questions 密保问题
+     */
+    void delete(Iterable<UserQuestion> questions);
+
+    /**
+     * 删除密保问题
+     * @param userUU 用户uu号
+     */
+    void deleteByUserUU(Long userUU);
+
+    List<UserQuestion> findByUserUU(long userUU);
+}

+ 37 - 0
sso-server/src/main/java/com/uas/sso/service/impl/UserQuestionServiceImpl.java

@@ -0,0 +1,37 @@
+package com.uas.sso.service.impl;
+
+import com.uas.sso.dao.UserQuestionDao;
+import com.uas.sso.entity.UserQuestion;
+import com.uas.sso.service.UserQuestionService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.List;
+
+/**
+ * @author wangmh
+ * @create 2018-01-27 13:46
+ * @desc
+ **/
+@Service
+public class UserQuestionServiceImpl implements UserQuestionService {
+
+    @Autowired
+    private UserQuestionDao userQuestionDao;
+
+    @Override
+    public void delete(Iterable<UserQuestion> questions) {
+        userQuestionDao.delete(questions);
+    }
+
+    @Override
+    public void deleteByUserUU(Long userUU) {
+        userQuestionDao.deleteByUserUU(userUU);
+    }
+
+    @Override
+    public List<UserQuestion> findByUserUU(long userUU) {
+        return userQuestionDao.findByUserUU(userUU);
+    }
+}