This commit is contained in:
APLS 2020-12-13 21:13:08 +08:00
parent 3f7505c16d
commit 1cf4593fed
6 changed files with 75 additions and 28 deletions

View File

@ -3,6 +3,8 @@ package io.qyi.e5.outlook.controller;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import io.qyi.e5.bean.result.Result;
import io.qyi.e5.bean.result.ResultEnum;
import io.qyi.e5.config.ResultVO;
import io.qyi.e5.config.exception.APIException;
import io.qyi.e5.config.security.UsernamePasswordAuthenticationToken;
import io.qyi.e5.outlook.entity.Outlook;
import io.qyi.e5.outlook.service.IOutlookService;
@ -49,7 +51,7 @@ public class AuthController {
@RequestMapping("/receive")
public Result Receive(String code, String state, String session_state) throws Exception {
if (!redisUtil.hasKey(states + state)) {
return ResultUtil.error(-1, "state已过期请到用户中心重新授权!");
throw new APIException("state已过期请到用户中心重新授权!");
}
/*这里不应该查询在进行授权时因该把基础数据丢到redis*/
QueryWrapper<Outlook> outlookQueryWrapper = new QueryWrapper<>();
@ -58,13 +60,13 @@ public class AuthController {
/*删除redis中的此键*/
redisUtil.del(states + state);
if (outlook == null) {
return ResultUtil.error(-2, "没有查询到此用户,请检查是否在系统中注册!");
throw new APIException("没有查询到此用户,请检查是否在系统中注册!");
}
System.out.println(outlook);
boolean authorization_code = outlookService.getTokenAndSave(code, outlook.getClientId(), outlook.getClientSecret(), "https://e5.qyi.io/outlook/auth2/receive"
, "authorization_code");
if (!authorization_code) {
return ResultUtil.error(-3, "clientId 或 clientSecret 填写错误!授权失败!");
throw new APIException("clientId 或 clientSecret 填写错误!授权失败!");
}
/*添加此用户进消息队列*/
Task.sendTaskOutlookMQ(outlook.getGithubId());
@ -72,16 +74,17 @@ public class AuthController {
}
@RequestMapping("/getAuthorizeUrl")
public Result getAuthorizeUrl() {
public Result getAuthorizeUrl(int id) {
// 查询此用户的github_id与
QueryWrapper<Outlook> outlookQueryWrapper = new QueryWrapper<>();
UsernamePasswordAuthenticationToken authentication = (UsernamePasswordAuthenticationToken) SecurityContextHolder.getContext().getAuthentication();
outlookQueryWrapper.eq("github_id", authentication.getGithub_id());
outlookQueryWrapper.eq("id", id);
Outlook outlook = outlookService.getOne(outlookQueryWrapper);
if (outlook != null) {
if (outlook.getClientId().length() < 1 || outlook.getClientSecret().length() < 1) {
return ResultUtil.error(ResultEnum.NO_DATA_FOUND);
throw new APIException("没有设置key你授权啥呢!!!");
}
// 生成随机uuid标识用户
String state = EncryptUtil.getInstance().SHA1Hex(UUID.randomUUID().toString());
@ -89,7 +92,8 @@ public class AuthController {
String url = String.format(authorizeUrl, outlook.getClientId(), "https://e5.qyi.io/outlook/auth2/receive", state);
return ResultUtil.success(url);
} else {
return ResultUtil.error(ResultEnum.NO_DATA_FOUND);
throw new APIException("没有此记录");
}
}

View File

@ -134,6 +134,27 @@ public class OutlookController {
});
return ResultUtil.success(vo);
}
/**
* 设置状态暂停状态
* @title setPause
* @description
* @author 落叶随风
* @param: id outlook id
* @updateTime 2020/12/13 19:24
* @return: io.qyi.e5.bean.result.Result
* @throws
*/
@GetMapping("/setPause")
public Result setPause(@RequestParam int id) {
UsernamePasswordAuthenticationToken authentication = (UsernamePasswordAuthenticationToken) SecurityContextHolder.getContext().getAuthentication();
outlookService.setPause(authentication.getGithub_id(),id);
return ResultUtil.success();
}
@GetMapping("/setStart")
public Result setStart(@RequestParam int id) {
UsernamePasswordAuthenticationToken authentication = (UsernamePasswordAuthenticationToken) SecurityContextHolder.getContext().getAuthentication();
outlookService.setStart(authentication.getGithub_id(),id);
return ResultUtil.success();
}
}

View File

@ -30,4 +30,8 @@ public interface IOutlookService extends IService<Outlook> {
int deleteInfo(int github_id);
List<Outlook> getOutlooklist(int github_id);
void setPause(int github_id, int outlookId);
void setStart(int github_id, int outlookId);
}

View File

@ -117,7 +117,8 @@ public class OutlookServiceImpl extends ServiceImpl<OutlookMapper, Outlook> impl
outlook1.setClientId(client_id);
outlook1.setClientSecret(client_secret);
outlook1.setStep(1)
.setStatus(8);;
.setStatus(8);
;
if (baseMapper.update(outlook1, queryWrapper) != 1) {
throw new APIException("更新记录失败!");
}
@ -302,5 +303,30 @@ public class OutlookServiceImpl extends ServiceImpl<OutlookMapper, Outlook> impl
List<Outlook> outlooks = baseMapper.selectList(qw);
return outlooks;
}
@Override
public void setPause(int github_id, int outlookId) {
UpdateWrapper<Outlook> up = new UpdateWrapper<>();
up.eq("github_id", github_id).eq("id", outlookId);
Outlook outlook = baseMapper.selectOne(up);
if (outlook == null) {
throw new APIException("查无此记录!");
}
/*只允许运行状态的应用设置暂停*/
if (outlook.getStatus() != 2) {
throw new APIException("只允许 运行状态 的应用设置暂停!");
}
if (baseMapper.update(new Outlook().setStatus(2), up) != 1) {
throw new APIException("更新失败!");
}
}
@Override
public void setStart(int github_id, int outlookId) {
UpdateWrapper<Outlook> up = new UpdateWrapper<>();
up.eq("github_id", github_id).eq("id", outlookId);
if (baseMapper.update(new Outlook().setStatus(6), up) != 1) {
throw new APIException("更新失败!");
}
}
}

View File

@ -2,14 +2,13 @@ package io.qyi.e5.outlook_log.controller;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.google.gson.Gson;
import io.qyi.e5.bean.result.Result;
import io.qyi.e5.config.security.UsernamePasswordAuthenticationToken;
import io.qyi.e5.outlook.entity.Outlook;
import io.qyi.e5.outlook.service.IOutlookService;
import io.qyi.e5.outlook_log.bena.LogVo;
import io.qyi.e5.outlook_log.entity.OutlookLog;
import io.qyi.e5.outlook_log.service.IOutlookLogService;
import org.apache.commons.lang.time.DateUtils;
import io.qyi.e5.util.ResultUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.BeanUtils;
@ -17,9 +16,9 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import java.util.Iterator;
@ -53,12 +52,12 @@ public class OutlookLogController {
@GetMapping("/findLog")
@ResponseBody
public String findLog(){
public Result findLog(@RequestParam int outlookId){
UsernamePasswordAuthenticationToken authentication = (UsernamePasswordAuthenticationToken) SecurityContextHolder.getContext().getAuthentication();
int github_id = authentication.getGithub_id();
QueryWrapper<OutlookLog> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("github_id", github_id).orderByDesc("call_time");
queryWrapper.eq("github_id", github_id).eq("outlook_id", outlookId).orderByAsc("call_time");
List<OutlookLog> list = outlookLogService.list(queryWrapper);
Iterator<OutlookLog> iterator = list.iterator();
List<LogVo> logVo = new LinkedList<>();
@ -68,19 +67,7 @@ public class OutlookLogController {
BeanUtils.copyProperties(next,vo);
logVo.add(vo);
}
Gson gson = new Gson();
return gson.toJson(logVo);
}
@GetMapping("/exec111111")
public void s() throws Exception {
List<Outlook> list = outlookService.findAll();
logger.info(String.valueOf(list.size()));
for (Outlook outlook :list) {
logger.info(outlook.toString());
outlookService.getMailList(outlook);
}
return ResultUtil.success(logVo);
}
}

View File

@ -30,6 +30,11 @@ public class OutlookLog implements Serializable {
*/
private Integer githubId;
/**
* outlook_id
*/
private Integer outlookId;
/**
* 调用时间
*/