boot-security/src/main/java/com/boot/security/server/controller/MailController.java

96 lines
3.0 KiB
Java
Raw Normal View History

2017-10-15 10:12:35 +00:00
package com.boot.security.server.controller;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
import org.apache.commons.lang3.StringUtils;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.zw.admin.server.annotation.LogAnnotation;
import com.zw.admin.server.dao.MailDao;
import com.zw.admin.server.model.Mail;
import com.zw.admin.server.model.MailTo;
import com.zw.admin.server.page.table.PageTableRequest;
import com.zw.admin.server.page.table.PageTableHandler;
import com.zw.admin.server.page.table.PageTableResponse;
import com.zw.admin.server.page.table.PageTableHandler.CountHandler;
import com.zw.admin.server.page.table.PageTableHandler.ListHandler;
import com.zw.admin.server.service.MailService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
@Api(tags = "邮件")
@RestController
@RequestMapping("/mails")
public class MailController {
@Autowired
private MailDao mailDao;
@Autowired
private MailService mailService;
@LogAnnotation
@PostMapping
@ApiOperation(value = "保存邮件")
@RequiresPermissions("mail:send")
public Mail save(@RequestBody Mail mail) {
String toUsers = mail.getToUsers().trim();
if (StringUtils.isBlank(toUsers)) {
throw new IllegalArgumentException("收件人不能为空");
}
toUsers = toUsers.replace(" ", "");
toUsers = toUsers.replace("", ";");
String[] strings = toUsers.split(";");
List<String> toUser = Arrays.asList(strings);
toUser = toUser.stream().filter(u -> !StringUtils.isBlank(u)).map(u -> u.trim()).collect(Collectors.toList());
mailService.save(mail, toUser);
return mail;
}
@GetMapping("/{id}")
@ApiOperation(value = "根据id获取邮件")
@RequiresPermissions("mail:all:query")
public Mail get(@PathVariable Long id) {
return mailDao.getById(id);
}
@GetMapping("/{id}/to")
@ApiOperation(value = "根据id获取邮件发送详情")
@RequiresPermissions("mail:all:query")
public List<MailTo> getMailTo(@PathVariable Long id) {
return mailDao.getToUsers(id);
}
@GetMapping
@ApiOperation(value = "邮件列表")
@RequiresPermissions("mail:all:query")
public PageTableResponse<Mail> list(PageTableRequest request) {
return PageTableHandler.<Mail> builder().countHandler(new CountHandler() {
@Override
public int count(PageTableRequest request) {
return mailDao.count(request.getParams());
}
}).listHandler(new ListHandler<Mail>() {
@Override
public List<Mail> list(PageTableRequest request) {
return mailDao.list(request.getParams(), request.getOffset(), request.getLimit());
}
}).build().handle(request);
}
}