From e6a823b93fa35de9fb9632419e5e3c97bcc5b76a Mon Sep 17 00:00:00 2001 From: panqihua <1029559041@qq.com> Date: Tue, 21 Apr 2020 20:56:37 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E4=B8=8A=E4=BC=A0=E7=94=A8?= =?UTF-8?q?=E6=88=B7=E5=A4=B4=E5=83=8F=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../pocket/api/android/UserController.java | 91 +++++++++++++------ .../pocket/entity/vo/android/UserHeadImg.java | 19 ++++ .../pocket/repository/android/TokenDao.java | 4 +- .../pocket/repository/android/UserDao.java | 41 ++++++++- src/main/resources/application.yaml | 5 + 5 files changed, 123 insertions(+), 37 deletions(-) create mode 100644 src/main/java/com/community/pocket/entity/vo/android/UserHeadImg.java diff --git a/src/main/java/com/community/pocket/api/android/UserController.java b/src/main/java/com/community/pocket/api/android/UserController.java index cafa8c9..ef3f242 100644 --- a/src/main/java/com/community/pocket/api/android/UserController.java +++ b/src/main/java/com/community/pocket/api/android/UserController.java @@ -4,9 +4,7 @@ import com.community.pocket.entity.po.android.Token; import com.community.pocket.entity.vo.Result; import com.community.pocket.entity.vo.android.*; import com.community.pocket.repository.EmailDao; -import com.community.pocket.repository.android.TokenDao; -import com.community.pocket.repository.android.UserDao; -import com.community.pocket.repository.android.VisitorPeopleDao; +import com.community.pocket.repository.android.*; import com.community.pocket.util.EmailService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; @@ -30,6 +28,9 @@ public class UserController { @Autowired private EmailService emailService; + @Autowired + private TokenService tokenService; + @Autowired private TokenDao tokenDao; @@ -111,39 +112,63 @@ public class UserController { } + @PostMapping("/uploadHeadImg") + public InfoResponse upload(UserHeadImg userHeadImg) { + return tokenService.checkToken(userHeadImg, new DoCheck() { + @Override + public InfoResponse ok(UserHeadImg userHeadImg) { + if (userDao.uploadImg(userHeadImg)) { + return new InfoResponse(Result.OK, InfoResponse.Msg.ok); + } else { + return new InfoResponse(Result.FAIL, InfoResponse.Msg.fail); + } + } + + @Override + public InfoResponse fail() { + return new InfoResponse(Result.FAIL, InfoResponse.Msg.fail, InfoResponse.Msg.token); + } + }); + } + /** * 用户登录 + * * @param username 用户 * @param password 密码 */ @PostMapping("/login") public LoginResponse login(String username, String password) { - if(userDao.login(username, password)){ - Token token=tokenDao.save(username); + if (userDao.login(username, password)) { + Token token = tokenDao.save(username); LoginResponse response; - if(token!=null) { - response=new LoginResponse(Result.OK, LoginResponse.Msg.ok,username); + if (token != null) { + response = new LoginResponse(Result.OK, LoginResponse.Msg.ok, username); response.setToken(token); - }else{ - response=new LoginResponse(Result.FAIL,LoginResponse.Msg.fail); + } else { + response = new LoginResponse(Result.FAIL, LoginResponse.Msg.fail); } return response; - }else{ - return new LoginResponse(Result.FAIL,LoginResponse.Msg.fail); + } else { + return new LoginResponse(Result.FAIL, LoginResponse.Msg.fail); } } @PostMapping("/login/token") - public LoginResponse check(String token){ - if(tokenDao.checkToken(token)){ - Token t=tokenDao.get(token); - if(t!=null){ - LoginResponse response= new LoginResponse(Result.OK, LoginResponse.Msg.ok,t.getUsername()); - response.setToken(t); + public LoginResponse check(Token token) { + return tokenService.checkToken(token, new DoCheck() { + @Override + public LoginResponse ok(Token token) { + LoginResponse response = new LoginResponse(Result.OK, LoginResponse.Msg.ok, token.getUsername()); + response.setToken(token); return response; } - } - return new LoginResponse(Result.FAIL, LoginResponse.Msg.fail); + + @Override + public LoginResponse fail() { + return new LoginResponse(Result.FAIL, LoginResponse.Msg.fail); + } + }); } //检索投诉人 @@ -163,19 +188,25 @@ public class UserController { //修改密码 @PostMapping("/my/info/modifyPwd") public InfoResponse modifyPwd(ModifyPwdForm modifyPwdForm) { - if(tokenDao.checkToken(modifyPwdForm.getToken())){ - if(userDao.login(modifyPwdForm.getUsername(),modifyPwdForm.getOldPassword())){ - if(userDao.modifyPwd(modifyPwdForm)){ - return new InfoResponse(Result.OK,InfoResponse.Msg.modify_pwd_ok); - }else{ - return new InfoResponse(Result.FAIL,InfoResponse.Msg.modify_pwd_fail); + return tokenService.checkToken(modifyPwdForm, new DoCheck() { + @Override + public InfoResponse ok(ModifyPwdForm modifyPwdForm) { + if (userDao.login(modifyPwdForm.getUsername(), modifyPwdForm.getOldPassword())) { + if (userDao.modifyPwd(modifyPwdForm)) { + return new InfoResponse(Result.OK, InfoResponse.Msg.modify_pwd_ok); + } else { + return new InfoResponse(Result.FAIL, InfoResponse.Msg.modify_pwd_fail); + } + } else { + return new InfoResponse(Result.FAIL, InfoResponse.Msg.modify_oldpwd_fail); } - }else{ - return new InfoResponse(Result.FAIL,InfoResponse.Msg.modify_oldpwd_fail); } - }else { - return new InfoResponse(Result.FAIL,InfoResponse.Msg.token); - } + + @Override + public InfoResponse fail() { + return new InfoResponse(Result.FAIL, InfoResponse.Msg.token); + } + }); } } diff --git a/src/main/java/com/community/pocket/entity/vo/android/UserHeadImg.java b/src/main/java/com/community/pocket/entity/vo/android/UserHeadImg.java new file mode 100644 index 0000000..0d5eb78 --- /dev/null +++ b/src/main/java/com/community/pocket/entity/vo/android/UserHeadImg.java @@ -0,0 +1,19 @@ +package com.community.pocket.entity.vo.android; + +import com.community.pocket.entity.po.android.Token; +import org.springframework.web.multipart.MultipartFile; + +/** + * 上传头像表单 + */ +public class UserHeadImg extends Token { + private MultipartFile file; + + public MultipartFile getFile() { + return file; + } + + public void setFile(MultipartFile file) { + this.file = file; + } +} diff --git a/src/main/java/com/community/pocket/repository/android/TokenDao.java b/src/main/java/com/community/pocket/repository/android/TokenDao.java index d3d28f3..157c164 100644 --- a/src/main/java/com/community/pocket/repository/android/TokenDao.java +++ b/src/main/java/com/community/pocket/repository/android/TokenDao.java @@ -58,8 +58,8 @@ public class TokenDao extends BaseDao { } //判断令牌是否存在 - public boolean checkToken(String token){ - return mongoTemplate.exists(new Query(Criteria.where("token").is(token).and("time").gt(System.currentTimeMillis())),entityClass()); + private boolean checkToken(String token) { + return mongoTemplate.exists(new Query(Criteria.where("token").is(token).and("time").gt(System.currentTimeMillis())), entityClass()); } public Token get(String token){ diff --git a/src/main/java/com/community/pocket/repository/android/UserDao.java b/src/main/java/com/community/pocket/repository/android/UserDao.java index 33e81d3..b3a7138 100644 --- a/src/main/java/com/community/pocket/repository/android/UserDao.java +++ b/src/main/java/com/community/pocket/repository/android/UserDao.java @@ -24,7 +24,10 @@ import org.springframework.data.mongodb.core.query.Update; import org.springframework.stereotype.Repository; import org.springframework.util.DigestUtils; import org.springframework.util.StringUtils; +import org.springframework.web.multipart.MultipartFile; +import java.io.File; +import java.io.IOException; import java.util.ArrayList; import java.util.List; import java.util.regex.Pattern; @@ -44,6 +47,12 @@ public class UserDao extends BaseDao { @Value("${register.credit-score}") private int creditScore; + @Value("${spring.resources.static-locations}") + private String imgPath; + + @Value("${spring.mvc.static-path-pattern}") + private String mvcPath; + //检查用户名是否已注册 public boolean hasUser(String username) { if (!StringUtils.isEmpty(username)) { @@ -183,12 +192,34 @@ public class UserDao extends BaseDao { save(myInfo); } + //上传头像 + public boolean uploadImg(UserHeadImg userHeadImg) { + MultipartFile file = userHeadImg.getFile(); + if (file != null) { + try { + String fileName = file.getOriginalFilename() == null ? System.currentTimeMillis() + ".png" : file.getOriginalFilename(); + File loadFile = new File(getClass().getResource("/").getFile() + imgPath.replace("classpath:/", ""), fileName); + if (!loadFile.exists() && !loadFile.mkdirs()) { + throw new RuntimeException("无法建立目录" + loadFile.getAbsolutePath()); + } + file.transferTo(loadFile); + return mongoTemplate.updateFirst(new Query(Criteria.where(LookupOperationUtil.idKey).is(userHeadImg.getUsername())), Update.update("headImg", mvcPath.replace("**", loadFile.getName())), entityClass()).wasAcknowledged(); + } catch (IOException e) { + e.printStackTrace(); + LOG.error(e.toString()); + return false; + } + } else { + return false; + } + } + //获取活跃用户 - public List rankUser(int num){ - List userHots=new ArrayList<>(); - List myInfos=mongoTemplate.find(new Query().with(Sort.by("creditScore").descending()).limit(num),entityClass()); - for(MyInfo info:myInfos){ - UserHot userHot=new UserHot(); + public List rankUser(int num) { + List userHots = new ArrayList<>(); + List myInfos = mongoTemplate.find(new Query().with(Sort.by("creditScore").descending()).limit(num), entityClass()); + for (MyInfo info : myInfos) { + UserHot userHot = new UserHot(); userHot.setUserName(info.getUsername()); userHot.setCreditScore(info.getCreditScore()); userHots.add(userHot); diff --git a/src/main/resources/application.yaml b/src/main/resources/application.yaml index bc0d42f..f214b7b 100644 --- a/src/main/resources/application.yaml +++ b/src/main/resources/application.yaml @@ -15,6 +15,11 @@ spring: #国际化配置 messages: basename: static/i18n/messages #相对路径 开头请勿添加斜杠 + #静态资源目录 + mvc: + static-path-pattern: /image/** + resources: + static-locations: classpath:/resources/static/image #邮箱配置 email: