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.

171 lines
6.9 KiB

package com.community.pocket.api.web;
import com.community.pocket.entity.po.Manager;
import com.community.pocket.entity.po.ManagerToken;
import com.community.pocket.entity.vo.EmailTypeConfig;
import com.community.pocket.entity.vo.Result;
import com.community.pocket.entity.vo.web.*;
import com.community.pocket.repository.EmailDao;
import com.community.pocket.repository.ManagerDao;
import com.community.pocket.repository.ManagerTokenDao;
import com.community.pocket.util.EmailService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.DigestUtils;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.*;
import java.util.Calendar;
import java.util.Date;
@RestController
@RequestMapping("/api/manager")
//客户端跨域测试
@CrossOrigin("http://localhost:4200")
//管理员接口
public class ManagerController {
@Autowired
private ManagerDao managerDao;
//邮箱配置
@Autowired
private EmailTypeConfig emailTypeConfig;
//邮箱服务
@Autowired
private EmailService emailService;
@Autowired
private ManagerTokenDao managerTokenDao;
@Autowired
private EmailDao emailDao;
// 登陆
@PostMapping("login")
public LoginResponse login(@RequestBody ManagerLogin managerLogin) {
if (StringUtils.isEmpty(managerLogin.getManagerName())) {
return new LoginResponse(Result.FAIL, LoginResponse.Msg.manager);
} else if (StringUtils.isEmpty(managerLogin.getPassword())) {
return new LoginResponse(Result.FAIL, LoginResponse.Msg.password);
//校验账号密码
} else if (!managerDao.login(managerLogin)) {
return new LoginResponse(Result.FAIL, LoginResponse.Msg.fail);
} else {
// 验证通过生成令牌响应给服务端
ManagerToken managerToken = new ManagerToken();
Calendar c = Calendar.getInstance();
c.setTime(new Date());
managerToken.setCreateTime(c.getTimeInMillis());
// 令牌有效时间1天
c.add(Calendar.DAY_OF_MONTH, 1);
managerToken.setUseTime(c.getTimeInMillis());
// 生成token
managerToken.setToken(DigestUtils.md5DigestAsHex((managerToken.getCreateTime() + "" + managerToken.getUseTime() + "").getBytes()));
managerToken.setManagerName(managerLogin.getManagerName());
managerTokenDao.save(managerToken);
LoginResponse response = new LoginResponse(Result.OK, LoginResponse.Msg.ok);
response.setManagerToken(managerToken);
return response;
}
}
/**
* 获取邮箱类型
*/
@GetMapping("emailType")
public EmailTypeResponse getEmailType() {
EmailTypeResponse response = new EmailTypeResponse(Result.OK, EmailTypeResponse.Msg.ok);
response.setEmailTypeList(emailTypeConfig.getSupportType());
return response;
}
// 注册
@PostMapping("register")
public RegisterResponse register(@RequestBody ManagerRegister manager) {
if (StringUtils.isEmpty(manager.getManagerName())) {
return new RegisterResponse(Result.FAIL, RegisterResponse.Msg.manager);
} else if (StringUtils.isEmpty(manager.getPassword())) {
return new RegisterResponse(Result.FAIL, RegisterResponse.Msg.password);
} else if (StringUtils.isEmpty(manager.getConfirmPassword())) {
return new RegisterResponse(Result.FAIL, RegisterResponse.Msg.confirmPassword);
} else if (!manager.getPassword().equals(manager.getConfirmPassword())) {
return new RegisterResponse(Result.FAIL, RegisterResponse.Msg.passwordNotMatch);
} else if (StringUtils.isEmpty(manager.getMobile())) {
return new RegisterResponse(Result.FAIL, RegisterResponse.Msg.mobie);
} else if (StringUtils.isEmpty(manager.getEmail())) {
return new RegisterResponse(Result.FAIL, RegisterResponse.Msg.email);
} else if (managerDao.hasUser(manager.getManagerName())) {
return new RegisterResponse(Result.FAIL, RegisterResponse.Msg.username);
} else {
// 表单数据转换到管理员实体,调用dao层持久化到数据库
Manager m = new Manager();
m.setManagerName(manager.getManagerName());
m.setPassword(DigestUtils.md5DigestAsHex(manager.getPassword().getBytes()));
m.setMobile(manager.getMobile());
m.setEmail(manager.getEmail());
managerDao.save(m);
return new RegisterResponse(Result.OK, RegisterResponse.Msg.ok);
}
}
//注销
@PostMapping("logout")
public LogoutResponse logout(@RequestBody ManagerLogout managerLogout) {
if (StringUtils.isEmpty(managerLogout.getManagerName())) {
return new LogoutResponse(Result.FAIL, LogoutResponse.Msg.fail);
} else {
if (managerTokenDao.logout(managerLogout)) {
return new LogoutResponse(Result.OK, LogoutResponse.Msg.ok);
} else {
return new LogoutResponse(Result.FAIL, LogoutResponse.Msg.fail);
}
}
}
//检查账号邮箱
@PostMapping("reset/checkEmail")
public ResetpwdResponse checkUserWithEmail(@RequestBody ManagerResetPwd managerResetPwd) {
if (managerDao.checkUserWithEmail(managerResetPwd)) {
return new ResetpwdResponse(Result.OK, ResetpwdResponse.Msg.check_ok);
} else {
return new ResetpwdResponse(Result.FAIL, ResetpwdResponse.Msg.check_fail);
}
}
/**
* 发送邮件
*/
@PostMapping("reset/code")
public ResetpwdResponse sendEmail(@RequestBody ManagerResetPwd managerResetPwd) {
if (emailService.sendManagerCode(managerResetPwd)) {
return new ResetpwdResponse(Result.OK, ResetpwdResponse.Msg.send_code_ok);
} else {
return new ResetpwdResponse(Result.FAIL, ResetpwdResponse.Msg.send_code_fail);
}
}
/**
* 校验验证码
*/
@PostMapping("reset/checkCode")
public ResetpwdResponse validCode(@RequestBody ManagerResetPwd managerResetPwd) {
if (emailDao.checkCode(managerResetPwd.getEmail() + managerResetPwd.getEmailType(), managerResetPwd.getVerificationCode())) {
return new ResetpwdResponse(Result.OK, ResetpwdResponse.Msg.valid_code_ok);
} else {
return new ResetpwdResponse(Result.FAIL, ResetpwdResponse.Msg.valid_code_fail);
}
}
/**
* 重置密码
*/
@PostMapping("reset/resetPwd")
public ResetpwdResponse resetpwd(@RequestBody ManagerResetPwd managerResetPwd) {
if (managerDao.resetpwd(managerResetPwd)) {
return new ResetpwdResponse(Result.OK, ResetpwdResponse.Msg.resetpwd_ok);
} else {
return new ResetpwdResponse(Result.FAIL, ResetpwdResponse.Msg.resetpwd_fail);
}
}
}