You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

212 lines
7.4 KiB

package com.community.pocket.api.android;
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.*;
import com.community.pocket.util.EmailService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
/**
* 用户接口
*/
@RestController
public class UserController {
@Autowired
private UserDao userDao;
@Autowired
private EmailDao emailDao;
@Autowired
private EmailService emailService;
@Autowired
private TokenService tokenService;
@Autowired
private TokenDao tokenDao;
@Autowired
private VisitorPeopleDao visitorPeopleDao;
/**
* 用户注册
*
* @param userRegister 注册表单信息
*/
@PostMapping("/register")
public RegisterResponse register(UserRegister userRegister) {
if (userDao.hasUser(userRegister.getUsername())) {
return new RegisterResponse(Result.FAIL, RegisterResponse.Msg.name, userRegister.getUsername());
} else if (userDao.hasMobie(userRegister.getMobie())) {
return new RegisterResponse(Result.FAIL, RegisterResponse.Msg.mobie, userRegister.getMobie());
} else if (userDao.hasEmail(userRegister.getEmail())) {
return new RegisterResponse(Result.FAIL, RegisterResponse.Msg.email, userRegister.getEmail());
} else {
//保存注册信息
userDao.save(userRegister);
//保存默认预约配置信息
visitorPeopleDao.save(userRegister);
return new RegisterResponse(Result.OK, RegisterResponse.Msg.ok);
}
}
/**
* 检查用户邮箱
*/
@PostMapping("/resetpwd/checkUser")
public ResetPwdResponse checkUser(UserResetPwd userResetPwd){
if(userDao.hasUseWithEmail(userResetPwd.getUsername(),userResetPwd.getEmail())){
return new ResetPwdResponse(Result.OK,ResetPwdResponse.Msg.step1_ok);
}else{
return new ResetPwdResponse(Result.FAIL,ResetPwdResponse.Msg.step1_fail);
}
}
/**
* 发送重置密码验证码
*/
@PostMapping("/resetpwd/sendCode")
public ResetPwdResponse sendCode(UserResetPwd userResetPwd) {
if(emailService.sendUserCode(userResetPwd.getEmail())){
return new ResetPwdResponse(Result.OK,ResetPwdResponse.Msg.step2_ok);
}else{
return new ResetPwdResponse(Result.FAIL,ResetPwdResponse.Msg.step2_fail);
}
}
/**
* 检查验证码
*/
@PostMapping("/resetpwd/checkCode")
public ResetPwdResponse checkCode(UserResetPwd userResetPwd) {
if(emailDao.checkCode(userResetPwd.getEmail(),userResetPwd.getCode())){
return new ResetPwdResponse(Result.OK, ResetPwdResponse.Msg.step2_valid_ok);
}else{
return new ResetPwdResponse(Result.FAIL, ResetPwdResponse.Msg.step2_valid_fail);
}
}
/**
* 重置密码
*/
@PostMapping("/resetpwd/resetPwd")
public ResetPwdResponse resetPwd(UserResetPwd userResetPwd) {
if (userDao.isNotDiffPwd(userResetPwd)) {
return new ResetPwdResponse(Result.FAIL, ResetPwdResponse.Msg.step3_diff_password);
} else {
if (userDao.resetPwd(userResetPwd)) {
return new ResetPwdResponse(Result.OK, ResetPwdResponse.Msg.step3_ok);
} else {
return new ResetPwdResponse(Result.FAIL, ResetPwdResponse.Msg.step3_fail);
}
}
}
@PostMapping("/uploadHeadImg")
public InfoResponse upload(UserHeadImg userHeadImg) {
return tokenService.checkToken(userHeadImg, new DoCheck<InfoResponse, UserHeadImg>() {
@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);
LoginResponse response;
if (token != null) {
response = new LoginResponse(Result.OK, LoginResponse.Msg.ok, username);
response.setToken(token);
} else {
response = new LoginResponse(Result.FAIL, LoginResponse.Msg.fail);
}
return response;
} else {
return new LoginResponse(Result.FAIL, LoginResponse.Msg.fail);
}
}
@PostMapping("/login/token")
public LoginResponse check(Token token) {
return tokenService.checkToken(token, new DoCheck<LoginResponse, Token>() {
@Override
public LoginResponse ok(Token token) {
LoginResponse response = new LoginResponse(Result.OK, LoginResponse.Msg.ok, token.getUsername());
response.setToken(token);
return response;
}
@Override
public LoginResponse fail() {
return new LoginResponse(Result.FAIL, LoginResponse.Msg.fail);
}
});
}
//检索投诉人
@GetMapping("/query/user")
public QueryUserResponse searchPeople(QueryUserForm userForm) {
QueryUserResponse queryUserResponse;
List<String> peopleList = userDao.queryUser(userForm);
if (peopleList.isEmpty()) {
queryUserResponse = new QueryUserResponse(Result.OK, QueryUserResponse.Msg.ok_empty);
} else {
queryUserResponse = new QueryUserResponse(Result.OK, QueryUserResponse.Msg.ok);
}
queryUserResponse.setPeopleList(peopleList);
return queryUserResponse;
}
//修改密码
@PostMapping("/my/info/modifyPwd")
public InfoResponse modifyPwd(ModifyPwdForm modifyPwdForm) {
return tokenService.checkToken(modifyPwdForm, new DoCheck<InfoResponse, ModifyPwdForm>() {
@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);
}
}
@Override
public InfoResponse fail() {
return new InfoResponse(Result.FAIL, InfoResponse.Msg.token);
}
});
}
}