27 changed files with 481 additions and 17 deletions
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -0,0 +1,19 @@
|
||||
package com.biutag.outeradmin.config; |
||||
|
||||
import com.baomidou.mybatisplus.annotation.DbType; |
||||
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor; |
||||
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor; |
||||
import org.mybatis.spring.annotation.MapperScan; |
||||
import org.springframework.context.annotation.Bean; |
||||
import org.springframework.context.annotation.Configuration; |
||||
|
||||
@Configuration |
||||
@MapperScan("com.biutag.outeradmin.mapper") |
||||
public class MyBatisPlusConfig { |
||||
@Bean |
||||
public MybatisPlusInterceptor mybatisPlusInterceptor() { |
||||
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor(); |
||||
interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.POSTGRE_SQL)); |
||||
return interceptor; |
||||
} |
||||
} |
||||
@ -0,0 +1,129 @@
|
||||
package com.biutag.outeradmin.controller; |
||||
|
||||
import com.alibaba.fastjson2.JSON; |
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
||||
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; |
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
||||
import com.biutag.outeradmin.entity.*; |
||||
import com.biutag.outeradmin.mapper.MailMapper; |
||||
import com.biutag.outeradmin.service.MailService; |
||||
import com.biutag.outeradmin.util.DesensitizedUtil; |
||||
import com.biutag.outeradmin.util.ExcelUtil; |
||||
import com.biutag.util.StringUtils; |
||||
import jakarta.servlet.http.HttpServletResponse; |
||||
import lombok.RequiredArgsConstructor; |
||||
import org.springframework.web.bind.annotation.*; |
||||
|
||||
|
||||
import java.io.IOException; |
||||
import java.util.List; |
||||
|
||||
@RequiredArgsConstructor |
||||
@RequestMapping("/mailbox") |
||||
@RestController |
||||
public class MailController { |
||||
private final MailService mailService; |
||||
private final MailMapper mailMapper; |
||||
|
||||
/** |
||||
* 查询所有信件 |
||||
* |
||||
* @return 信件列表json |
||||
*/ |
||||
@RequestMapping("/list") |
||||
public MailPageInfo list(@RequestBody String req) { |
||||
PageSet pageSet = JSON.parseObject(req, PageSet.class); |
||||
Page<Mail> page = new Page<>(pageSet.getCurrentPage(), pageSet.getPageSize()); |
||||
List<Mail> mailPage = mailMapper.selectPage(page, null).getRecords(); |
||||
for (Mail mail : mailPage) { |
||||
mail.setContactIdCard(DesensitizedUtil.encryptIDCard(mail.getContactIdCard())); |
||||
mail.setContactPhone(DesensitizedUtil.encryptPhone(mail.getContactPhone())); |
||||
} |
||||
pageSet.setTotalSize((int) page.getTotal()); |
||||
MailPageInfo result = new MailPageInfo(); |
||||
result.setMails(mailPage); |
||||
result.setPageSet(pageSet); |
||||
return result; |
||||
} |
||||
|
||||
/** |
||||
* 查询指定信件 |
||||
* |
||||
* @param form 前端信件表单数据 |
||||
* @return 指定信件json |
||||
*/ |
||||
@RequestMapping("/list-submit") |
||||
public MailPageInfo siftList(@RequestBody String form) { |
||||
//todo 这里根据表单数据查询数据库,记得删掉
|
||||
System.out.println(form); |
||||
FormPage formPage = JSON.parseObject(form, FormPage.class); |
||||
QueryWrapper<Mail> queryWrapper = new QueryWrapper<>(); |
||||
if(formPage != null && formPage.getFormData()!= null && formPage.getPageData()!= null){ |
||||
FormData formData = formPage.getFormData(); |
||||
|
||||
queryWrapper.lambda().like(StringUtils.isNotEmpty(formData.getContactName()), Mail::getContactName, formData.getContactName()) |
||||
.like(StringUtils.isNotEmpty(formData.getContactPhone()), Mail::getContactPhone, formData.getContactPhone()) |
||||
.like(StringUtils.isNotEmpty(formData.getContactIdCard()), Mail::getContactIdCard, formData.getContactIdCard()) |
||||
.like(StringUtils.isNotEmpty(formData.getId()), Mail::getId, formData.getId()) |
||||
.like(StringUtils.isNotEmpty(formData.getContent()), Mail::getContent, formData.getContent()); |
||||
if (CollectionUtils.isNotEmpty(formData.getDate()) && formData.getDate().size() == 2) { |
||||
queryWrapper.lambda().between(Mail::getCreateTime, formData.getDate().get(0), formData.getDate().get(1)); |
||||
} |
||||
} |
||||
PageSet pageSet = formPage.getPageData(); |
||||
|
||||
Page<Mail> page = new Page<>(pageSet.getCurrentPage(), pageSet.getPageSize()); |
||||
List<Mail> mailPage = mailMapper.selectPage(page, queryWrapper).getRecords(); |
||||
for (Mail mail : mailPage) { |
||||
mail.setContactIdCard(DesensitizedUtil.encryptIDCard(mail.getContactIdCard())); |
||||
mail.setContactPhone(DesensitizedUtil.encryptPhone(mail.getContactPhone())); |
||||
} |
||||
pageSet.setTotalSize((int) page.getTotal()); |
||||
MailPageInfo result = new MailPageInfo(); |
||||
result.setMails(mailPage); |
||||
result.setPageSet(pageSet); |
||||
|
||||
return result; |
||||
} |
||||
|
||||
/** |
||||
* 查询指定信件详情 |
||||
* |
||||
* @param id 信件ID |
||||
* @return 指定信件详情json |
||||
*/ |
||||
@RequestMapping("/detail") |
||||
public String detail(@RequestBody String id) { |
||||
MailID mailID = JSON.parseObject(id, MailID.class); |
||||
//TODO 这里根据ID查询数据库,记得删掉
|
||||
System.out.println(mailID.getID()); |
||||
Mail mail = mailService.getById(mailID.getID()); |
||||
mail.setContactIdCard(DesensitizedUtil.encryptIDCard(mail.getContactIdCard())); |
||||
mail.setContactPhone(DesensitizedUtil.encryptPhone(mail.getContactPhone())); |
||||
return JSON.toJSONString(mail); |
||||
} |
||||
|
||||
@RequestMapping("/exportexcel") |
||||
public void exportexcel(HttpServletResponse response,@RequestBody String form) throws IOException { |
||||
FormPage formPage = JSON.parseObject(form, FormPage.class); |
||||
QueryWrapper<Mail> queryWrapper = new QueryWrapper<>(); |
||||
if(formPage != null && formPage.getFormData()!= null && formPage.getPageData()!= null){ |
||||
FormData formData = formPage.getFormData(); |
||||
queryWrapper.lambda().like(StringUtils.isNotEmpty(formData.getContactName()), Mail::getContactName, formData.getContactName()) |
||||
.like(StringUtils.isNotEmpty(formData.getContactPhone()), Mail::getContactPhone, formData.getContactPhone()) |
||||
.like(StringUtils.isNotEmpty(formData.getContactIdCard()), Mail::getContactIdCard, formData.getContactIdCard()) |
||||
.like(StringUtils.isNotEmpty(formData.getId()), Mail::getId, formData.getId()) |
||||
.like(StringUtils.isNotEmpty(formData.getContent()), Mail::getContent, formData.getContent()); |
||||
if (CollectionUtils.isNotEmpty(formData.getDate()) && formData.getDate().size() == 2) { |
||||
queryWrapper.lambda().between(Mail::getCreateTime, formData.getDate().get(0), formData.getDate().get(1)); |
||||
} |
||||
} |
||||
|
||||
List<Mail> mailPage = mailMapper.selectList( queryWrapper); |
||||
for (Mail mail : mailPage) { |
||||
mail.setContactIdCard(DesensitizedUtil.encryptIDCard(mail.getContactIdCard())); |
||||
mail.setContactPhone(DesensitizedUtil.encryptPhone(mail.getContactPhone())); |
||||
} |
||||
ExcelUtil.exportExcel(response, mailPage); |
||||
} |
||||
} |
||||
@ -0,0 +1,74 @@
|
||||
package com.biutag.outeradmin.domain; |
||||
|
||||
import lombok.AllArgsConstructor; |
||||
import lombok.Builder; |
||||
import lombok.Data; |
||||
import lombok.NoArgsConstructor; |
||||
|
||||
import java.util.Date; |
||||
@Data |
||||
@Builder |
||||
@NoArgsConstructor |
||||
@AllArgsConstructor |
||||
public class MailDto { |
||||
|
||||
/** |
||||
* 联系人姓名 |
||||
*/ |
||||
private String contactName; |
||||
|
||||
/** |
||||
* 联系人性别 |
||||
*/ |
||||
private String contactSex; |
||||
|
||||
/** |
||||
* 联系人身份证号码 |
||||
*/ |
||||
private String contactIdCard; |
||||
|
||||
/** |
||||
* 联系人手机号码 |
||||
*/ |
||||
private String contactPhone; |
||||
|
||||
/** |
||||
* 案件编号 |
||||
*/ |
||||
private String caseNumber; |
||||
|
||||
/** |
||||
* 内容 |
||||
*/ |
||||
private String content; |
||||
|
||||
/** |
||||
* 附件 |
||||
*/ |
||||
private String attachments; |
||||
|
||||
/** |
||||
* 用户ID |
||||
*/ |
||||
private Integer userId; |
||||
|
||||
/** |
||||
* 创建时间 |
||||
*/ |
||||
private Date createTime; |
||||
|
||||
/** |
||||
* 更新时间 |
||||
*/ |
||||
private Date updateTime; |
||||
|
||||
// /**
|
||||
// * 评价
|
||||
// */
|
||||
// private String evaluate;
|
||||
|
||||
/** |
||||
* 是否满意 |
||||
*/ |
||||
private String satisfaction; |
||||
} |
||||
@ -0,0 +1,16 @@
|
||||
package com.biutag.outeradmin.entity; |
||||
|
||||
import lombok.Data; |
||||
|
||||
import java.util.List; |
||||
|
||||
@Data |
||||
public class FormData { |
||||
private List<String> date; |
||||
private String contactName; |
||||
private String contactPhone; |
||||
private String contactIdCard; |
||||
private String id; |
||||
private String content; |
||||
private String evaluate; |
||||
} |
||||
@ -0,0 +1,10 @@
|
||||
package com.biutag.outeradmin.entity; |
||||
|
||||
import lombok.Data; |
||||
|
||||
@Data |
||||
public class FormPage { |
||||
private FormData formData; |
||||
private PageSet pageData; |
||||
|
||||
} |
||||
@ -0,0 +1,75 @@
|
||||
package com.biutag.outeradmin.entity; |
||||
|
||||
import com.baomidou.mybatisplus.annotation.IdType; |
||||
import com.baomidou.mybatisplus.annotation.TableId; |
||||
import com.baomidou.mybatisplus.annotation.TableName; |
||||
import lombok.Data; |
||||
|
||||
import java.util.Date; |
||||
|
||||
@Data |
||||
@TableName("mail") |
||||
public class Mail { |
||||
@TableId |
||||
private String id; |
||||
|
||||
/** |
||||
* 联系人姓名 |
||||
*/ |
||||
private String contactName; |
||||
|
||||
/** |
||||
* 联系人性别 |
||||
*/ |
||||
private String contactSex; |
||||
|
||||
/** |
||||
* 联系人身份证号码 |
||||
*/ |
||||
private String contactIdCard; |
||||
|
||||
/** |
||||
* 联系人手机号码 |
||||
*/ |
||||
private String contactPhone; |
||||
|
||||
/** |
||||
* 案件编号 |
||||
*/ |
||||
private String caseNumber; |
||||
|
||||
/** |
||||
* 内容 |
||||
*/ |
||||
private String content; |
||||
|
||||
/** |
||||
* 附件 |
||||
*/ |
||||
private String attachments; |
||||
|
||||
/** |
||||
* 用户ID |
||||
*/ |
||||
private Integer userId; |
||||
|
||||
/** |
||||
* 创建时间 |
||||
*/ |
||||
private Date createTime; |
||||
|
||||
/** |
||||
* 更新时间 |
||||
*/ |
||||
private Date updateTime; |
||||
|
||||
// /**
|
||||
// * 评价
|
||||
// */
|
||||
// private String evaluate;
|
||||
|
||||
/** |
||||
* 是否满意 |
||||
*/ |
||||
private String satisfaction; |
||||
} |
||||
@ -0,0 +1,8 @@
|
||||
package com.biutag.outeradmin.entity; |
||||
|
||||
import lombok.Data; |
||||
|
||||
@Data |
||||
public class MailID { |
||||
private String ID; |
||||
} |
||||
@ -0,0 +1,11 @@
|
||||
package com.biutag.outeradmin.entity; |
||||
|
||||
import lombok.Data; |
||||
|
||||
import java.util.List; |
||||
|
||||
@Data |
||||
public class MailPageInfo { |
||||
private List<Mail> mails; |
||||
private PageSet pageSet; |
||||
} |
||||
@ -0,0 +1,10 @@
|
||||
package com.biutag.outeradmin.entity; |
||||
|
||||
import lombok.Data; |
||||
|
||||
@Data |
||||
public class PageSet { |
||||
private int currentPage; |
||||
private int pageSize; |
||||
private int totalSize; |
||||
} |
||||
@ -0,0 +1,9 @@
|
||||
package com.biutag.outeradmin.mapper; |
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
||||
import com.biutag.outeradmin.entity.Mail; |
||||
import org.apache.ibatis.annotations.Mapper; |
||||
|
||||
@Mapper |
||||
public interface MailMapper extends BaseMapper<Mail> { |
||||
} |
||||
@ -0,0 +1,10 @@
|
||||
package com.biutag.outeradmin.service; |
||||
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
||||
import com.biutag.outeradmin.entity.Mail; |
||||
import com.biutag.outeradmin.mapper.MailMapper; |
||||
import org.springframework.stereotype.Service; |
||||
|
||||
@Service |
||||
public class MailService extends ServiceImpl<MailMapper, Mail> { |
||||
} |
||||
@ -0,0 +1,23 @@
|
||||
package com.biutag.outeradmin.util; |
||||
|
||||
import com.biutag.util.StringUtils; |
||||
|
||||
public class DesensitizedUtil { |
||||
public static String encryptIDCard(String idCard) { |
||||
if (StringUtils.isNotBlank(idCard)) { |
||||
if (idCard.length() == 15) { |
||||
idCard = idCard.replaceAll("(\\w{6})\\w*(\\w{4})", "$1******$2"); |
||||
} |
||||
if (idCard.length() == 18) { |
||||
idCard = idCard.replaceAll("(\\w{6})\\w*(\\w{4})", "$1*********$2"); |
||||
} |
||||
} |
||||
return idCard; |
||||
} |
||||
public static String encryptPhone(String phone) { |
||||
if (StringUtils.isNotBlank(phone)) { |
||||
phone = phone.replaceAll("(\\d{3})\\d{4}(\\d{4})", "$1****$2"); |
||||
} |
||||
return phone; |
||||
} |
||||
} |
||||
@ -0,0 +1,76 @@
|
||||
package com.biutag.outeradmin.util; |
||||
|
||||
|
||||
|
||||
|
||||
import com.alibaba.excel.EasyExcel; |
||||
|
||||
import com.alibaba.excel.ExcelWriter; |
||||
import com.alibaba.excel.write.metadata.WriteSheet; |
||||
import com.alibaba.excel.write.metadata.fill.FillConfig; |
||||
import com.alibaba.excel.write.metadata.fill.FillWrapper; |
||||
import com.biutag.outeradmin.entity.Mail; |
||||
import jakarta.servlet.http.HttpServletResponse; |
||||
import org.springframework.core.io.ClassPathResource; |
||||
import org.springframework.core.io.Resource; |
||||
|
||||
|
||||
import java.io.IOException; |
||||
import java.io.InputStream; |
||||
|
||||
import java.text.SimpleDateFormat; |
||||
import java.util.*; |
||||
|
||||
|
||||
public class ExcelUtil { |
||||
public static void exportExcel(HttpServletResponse response,List<Mail> mailPage) throws IOException { |
||||
// 模板文件
|
||||
// String templateFile = "/excelmodel.xlsx";
|
||||
Resource resource = new ClassPathResource("excelmodel.xlsx"); |
||||
InputStream is = resource.getInputStream(); |
||||
// long date = new Date().getTime();
|
||||
Calendar calendar = Calendar.getInstance(); |
||||
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); |
||||
System.out.println(formatter.format(calendar.getTime())); |
||||
String name = formatter.format(calendar.getTime())+".xlsx"; |
||||
String fileName = new String(name.getBytes()); |
||||
response.setContentType("application/octet-stream"); |
||||
response.setCharacterEncoding("utf8"); |
||||
response.setHeader("Content-disposition", "attachment;filename=" + fileName); |
||||
// 根据模板文件生成目标文件
|
||||
ExcelWriter excelWriter = EasyExcel |
||||
.write(response.getOutputStream(), Mail.class) |
||||
.withTemplate(is) |
||||
// 单独设置单元格格式
|
||||
// .registerWriteHandler(new CellStyleHandler())
|
||||
.build(); |
||||
WriteSheet writeSheet = EasyExcel.writerSheet().build(); |
||||
// 每次都会重新生成新的一行,而不是使用下面的空行
|
||||
FillConfig fillConfig = FillConfig.builder().forceNewRow(Boolean.TRUE).build(); |
||||
// 第一种占位符替换
|
||||
// Map<String, Object> map = new HashMap<String, Object>();
|
||||
// map.put("reportDate", reportDate);
|
||||
// excelWriter.fill(map, writeSheet);
|
||||
// 第二种占位符替换,这里定义了 hisData
|
||||
System.out.println(mailPage); |
||||
excelWriter.fill(new FillWrapper("mailPage",mailPage),fillConfig, writeSheet); |
||||
excelWriter.finish(); |
||||
} |
||||
|
||||
//
|
||||
// private static List<MailDto> mailData(){
|
||||
// List<MailDto> resList = new ArrayList<>();
|
||||
// MailDto mailData = MailDto.builder()
|
||||
// .contactName("today")
|
||||
// .contactIdCard("34.211")
|
||||
// .contactPhone("1.222")
|
||||
// .caseNumber("34.211")
|
||||
// .createTime(new Date())
|
||||
// .build();
|
||||
// resList.add(mailData);
|
||||
// return resList;
|
||||
// }
|
||||
|
||||
|
||||
|
||||
} |
||||
Binary file not shown.
Loading…
Reference in new issue