| | |
| | | * @param response |
| | | * @return |
| | | */ |
| | | @GetMapping("/eEmailExists.do") |
| | | public AllBackMsg eEmailExists(String email, HttpServletRequest request, HttpServletResponse response) { |
| | | AllBackMsg msg = new AllBackMsg(); |
| | | |
| | | try { |
| | | HttpSession session = request.getSession(); |
| | | String userCode = (String) session.getAttribute(SessionKey.USERCODE); |
| | | if (StringUtils.isBlank(userCode)) { |
| | | msg.setFail("登录用户已过期,请检查"); |
| | | return msg; |
| | | } |
| | | if (StringUtils.isBlank(email)) { |
| | | msg.setFail("邮箱不能为空"); |
| | | return msg; |
| | | } |
| | | DataSourceEntity dataSource = MultiDataSource.getDataSourceMap(request);//获取数据源 |
| | | SpObserver.setDBtoInstance("_" + dataSource.getDbId()); |
| | | //根据当前用户查询绑定的邮箱信息 |
| | | T482102Entity emailEntity = mailAccountIfc.getAccountInfo(userCode, email);//返回邮箱的账号信息 |
| | | Map<String, Object> map = new HashMap<>(); |
| | | if (emailEntity == null || StringUtils.isBlank(emailEntity.getEmail())) { |
| | | map.put("code", 0); |
| | | map.put("msg", "该邮箱未绑定"); |
| | | } else { |
| | | map.put("code", -1); |
| | | map.put("msg", "该邮箱已绑定"); |
| | | } |
| | | msg.setSuccess("执行成功", map); |
| | | } catch (MessagingException e) { |
| | | msg.setFail(e.getCause() != null ? e.getCause().getMessage() : e.getMessage()); |
| | | } catch (Exception e) { |
| | | msg.setFail(e.getCause() != null ? e.getCause().getMessage() : e.getMessage()); |
| | | } finally { |
| | | SpObserver.setDBtoInstance(); |
| | | } |
| | | return msg; |
| | | } |
| | | |
| | | /** |
| | | * 检测绑定是否有效 |
| | | * |
| | | * @param email |
| | | * @param request |
| | | * @param response |
| | | * @return |
| | | */ |
| | | @GetMapping("/isEmailValid.do") |
| | | public AllBackMsg isEmailValid(String email, HttpServletRequest request, HttpServletResponse response) { |
| | | AllBackMsg msg = new AllBackMsg(); |
| | |
| | | package com.yc.crm.mail.action; |
| | | |
| | | import com.yc.crm.mail.entity.FolderEntity; |
| | | import com.yc.crm.mail.entity.T482107Entity; |
| | | import com.yc.crm.mail.service.MailFolderIfc; |
| | | import com.yc.crm.mail.util.AllBackMsg; |
| | |
| | | import javax.servlet.http.HttpServletRequest; |
| | | import javax.servlet.http.HttpServletResponse; |
| | | import javax.servlet.http.HttpSession; |
| | | import java.util.ArrayList; |
| | | import java.util.List; |
| | | import java.util.stream.Collectors; |
| | | |
| | | /** |
| | | * @BelongsProject: eCoWorksV3 |
| | |
| | | return msg; |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 修改邮件文件夹 |
| | | * |
| | |
| | | public AllBackMsg updateFolder(@RequestBody T482107Entity folder, HttpServletRequest request, HttpServletResponse response) { |
| | | AllBackMsg msg = new AllBackMsg(); |
| | | try { |
| | | if (folder.getFolderId() == 0) { |
| | | if (folder.getFolderId().equals(0)) { |
| | | msg.setFail("缺少文本夹ID值,请检查"); |
| | | return msg; |
| | | } |
| | |
| | | public AllBackMsg deleteFolder(@RequestParam(defaultValue = "0") Integer folderId, HttpServletRequest request, HttpServletResponse response) { |
| | | AllBackMsg msg = new AllBackMsg(); |
| | | try { |
| | | if (folderId == 0) { |
| | | if (folderId.equals(0)) { |
| | | msg.setFail("邮件文件夹编号ID获取不到"); |
| | | return msg; |
| | | } |
| | |
| | | SpObserver.setDBtoInstance("_" + dataSource.getDbId()); |
| | | List<T482107Entity> t482107Entities = mailFolderIfc.getMailFolder(userCode, search); |
| | | if (t482107Entities.size() > 0) { |
| | | msg.setSuccess("执行成功", t482107Entities); |
| | | msg.setSuccess("执行成功", getFolderList(t482107Entities, "")); |
| | | } |
| | | } catch (Exception e) { |
| | | msg.setFail(e.getCause() != null ? e.getCause().getMessage() : e.getMessage()); |
| | |
| | | } |
| | | return msg; |
| | | } |
| | | |
| | | /** |
| | | * 文件夹树结构 |
| | | * |
| | | * @param t482107 |
| | | * @param rowId |
| | | * @return |
| | | */ |
| | | public static List<FolderEntity> getFolderList(List<T482107Entity> t482107, String rowId) { |
| | | List<FolderEntity> folder = new ArrayList<>(); |
| | | try { |
| | | for (T482107Entity t : t482107) { |
| | | if (folder.stream().filter(f -> f.getParentRowId().equals(rowId)).count() == 0) { |
| | | List<T482107Entity> fo = t482107.stream().filter(o -> o.getParentRowId().equals(rowId)).collect(Collectors.toList()); |
| | | if (fo.size() > 0) { |
| | | for (T482107Entity y : fo) { |
| | | FolderEntity folderEntity = new FolderEntity(); |
| | | folderEntity.setFolderId(y.getFolderId()); |
| | | folderEntity.setFolderName(y.getFolderName()); |
| | | folderEntity.setRowId(y.getRowId()); |
| | | folderEntity.setParentRowId(y.getParentRowId()); |
| | | folderEntity.setTreeControl(y.getTreeControl()); |
| | | folderEntity.setList(getFolderList(fo, y.getRowId())); |
| | | folder.add(folderEntity); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | return folder; |
| | | } catch (Exception e) { |
| | | throw e; |
| | | } |
| | | } |
| | | } |
New file |
| | |
| | | package com.yc.crm.mail.entity; |
| | | |
| | | import lombok.Data; |
| | | |
| | | import java.util.List; |
| | | |
| | | /** |
| | | * @BelongsProject: eCoWorksV3 |
| | | * @BelongsPackage: com.yc.crm.mail.entity |
| | | * @author: xinyb |
| | | * @CreateTime: 2024-09-21 14:36 |
| | | * @Description: |
| | | */ |
| | | @Data |
| | | public class FolderEntity { |
| | | private String folderName; |
| | | private Integer folderId; |
| | | private String rowId; |
| | | private String treeControl;//控件名 |
| | | private String parentRowId; |
| | | private List<FolderEntity> list; |
| | | |
| | | } |
| | |
| | | private Integer mailType;// [note: '0:草稿箱1:收件箱2:发件箱'] |
| | | private String senderName;//发送人名称 |
| | | private String sender;// [note:'发送人'] |
| | | private String senderTime;//发送时间 |
| | | private List<String> receiver = new ArrayList<>();// [note:'接收人'] |
| | | private String receivingTime;//收件时间 |
| | | private Integer folderId = 0;// [note:'文件夹id'] |
| | | private Integer deleteFlag = 0; //[note:'是否已删除'] |
| | | private Integer readFlag = 0;// [note:'是否已读'] |
| | |
| | | public List<T482107Entity> getMailFolder(String userCode, String search) { |
| | | String sql = "set nocount on\n"; |
| | | try { |
| | | sql += "select companyId,companyName,folder_id,folder_name,userCode,userName,sort_id,create_time,update_time,rowId,treeControl,parentRowId " + |
| | | "from t482107 where userCode=" + GridUtils.prossSqlParm(userCode); |
| | | sql += "select companyId,companyName,folder_id,folder_name,userCode,userName,sort_id,create_time,update_time," + |
| | | "isnull(rowId,'') as rowId,treeControl," + |
| | | "isnull(parentRowId,'') as parentRowId from t482107 where userCode=" + GridUtils.prossSqlParm(userCode); |
| | | if (StringUtils.isNotBlank(search)) { |
| | | sql += " and folder_name like '%" + search + "%'"; |
| | | } |
| | |
| | | sql += "declare @docCode varchar(50) ,@unid varchar(50),@fieldId varchar(100),@originalFileName varchar(100)," + |
| | | "@physicalFile varchar(50),@OriginalPicture varbinary(max) \n"; |
| | | sql += "exec sp_newdoccode 482101," + GridUtils.prossSqlParm(m.getUserCode()) + ",@docCode output \n"; |
| | | sql += "insert into t482101H(companyId,companyName,formId,docCode,docdate,PeriodID,postCode,postname,mailType,senderName,sender,receiver," + |
| | | sql += "insert into t482101H(companyId,companyName,formId,docCode,docdate,PeriodID,postCode,postname,mailType,senderName,sender,sender_time,receiver,receiving_time," + |
| | | "cc,bcc,subject,userCode,userName,content,plain_text,messageId,read_flag,delete_flag,create_time,update_time," +//receive_time |
| | | "attach_flag,attachment_list) values "; |
| | | sql += "(" + GridUtils.prossSqlParm(m.getCompanyId()) + "," + GridUtils.prossSqlParm(m.getCompanyName()) + ",482101," + |
| | | "@docCode,convert(varchar(10),getdate(),120),convert(varchar(7),getdate(),120)," |
| | | + GridUtils.prossSqlParm(m.getUserCode()) + "," + GridUtils.prossSqlParm(m.getUserName()) + "," + |
| | | +m.getMailType() + "," + GridUtils.prossSqlParm(m.getSenderName()) + "," + GridUtils.prossSqlParm(m.getSender()) + "," + |
| | | GridUtils.prossSqlParm(StringUtils.join(m.getReceiver(), ",")) + "," + GridUtils.prossSqlParm(StringUtils.join(m.getCc(), ",")) + "," + |
| | | +m.getMailType() + "," + GridUtils.prossSqlParm(m.getSenderName()) + "," + GridUtils.prossSqlParm(m.getSender()) + "," + GridUtils.prossSqlParm(m.getSenderTime()) + "," + |
| | | GridUtils.prossSqlParm(StringUtils.join(m.getReceiver(), ",")) + "," + GridUtils.prossSqlParm(m.getReceivingTime()) + "," + GridUtils.prossSqlParm(StringUtils.join(m.getCc(), ",")) + "," + |
| | | GridUtils.prossSqlParm(StringUtils.join(m.getBcc(), ",")) + "," + |
| | | GridUtils.prossSqlParm(m.getSubject()) + "," + GridUtils.prossSqlParm(m.getUserCode()) + "," + GridUtils.prossSqlParm(m.getUserName()) + "," + |
| | | GridUtils.prossSqlParm(m.getContent()) + "," + GridUtils.prossSqlParm(m.getPlainText()) + "," + GridUtils.prossSqlParm(m.getMessageId()) + "," + |
| | |
| | | "@physicalFile varchar(50),@OriginalPicture varbinary(max) \n"; |
| | | for (t482101HEntity m : mail) {//遍历内容 |
| | | sql += "exec sp_newdoccode 482101," + GridUtils.prossSqlParm(m.getUserCode()) + ",@docCode output \n"; |
| | | sql += "insert into t482101H(companyId,companyName,formId,docCode,docdate,PeriodID,postCode,postname,mailType,senderName,sender,receiver," + |
| | | sql += "insert into t482101H(companyId,companyName,formId,docCode,docdate,PeriodID,postCode,postname,mailType,senderName,sender,sender_time,receiver,receiving_time," + |
| | | "cc,bcc,subject,userCode,userName,content,plain_text,messageId,read_flag,delete_flag,create_time,update_time," + |
| | | "attach_flag,attachment_list) values "; |
| | | sql += "(" + GridUtils.prossSqlParm(m.getCompanyId()) + "," + GridUtils.prossSqlParm(m.getCompanyName()) + ",482101," + |
| | | "@docCode,convert(varchar(10),getdate(),120),convert(varchar(7),getdate(),120)," |
| | | + GridUtils.prossSqlParm(m.getUserCode()) + "," + GridUtils.prossSqlParm(m.getUserName()) + "," + |
| | | +m.getMailType() + "," + GridUtils.prossSqlParm(m.getSenderName()) + "," + GridUtils.prossSqlParm(m.getSender()) + "," + |
| | | GridUtils.prossSqlParm(StringUtils.join(m.getReceiver(), ",")) + "," + GridUtils.prossSqlParm(StringUtils.join(m.getCc(), ",")) + "," + |
| | | +m.getMailType() + "," + GridUtils.prossSqlParm(m.getSenderName()) + "," + GridUtils.prossSqlParm(m.getSender()) + "," + GridUtils.prossSqlParm(m.getSenderTime()) + "," + |
| | | GridUtils.prossSqlParm(StringUtils.join(m.getReceiver(), ",")) + "," + GridUtils.prossSqlParm(m.getReceivingTime()) + "," + GridUtils.prossSqlParm(StringUtils.join(m.getCc(), ",")) + "," + |
| | | GridUtils.prossSqlParm(StringUtils.join(m.getBcc(), ",")) + "," + |
| | | GridUtils.prossSqlParm(m.getSubject()) + "," + GridUtils.prossSqlParm(m.getUserCode()) + "," + GridUtils.prossSqlParm(m.getUserName()) + "," + |
| | | GridUtils.prossSqlParm(m.getContent()) + "," + GridUtils.prossSqlParm(m.getPlainText()) + "," + GridUtils.prossSqlParm(m.getMessageId()) + "," + |
| | |
| | | startTime = endTime; |
| | | endTime = LocalDate.now(); |
| | | } |
| | | SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); |
| | | Date nowTime = new Date(); |
| | | for (int i = 0; i < messages.length; i++) { |
| | | m = messages[i]; |
| | | Date time = m.getReceivedDate(); |
| | | if (time == null) { |
| | | Date deliveryTime = m.getReceivedDate();//收件时间 |
| | | Date senderTime = m.getSentDate();//发件时间 |
| | | if (deliveryTime == null) { |
| | | continue; |
| | | } |
| | | LocalDate sendDate = time.toInstant().atZone(ZoneId.systemDefault()).toLocalDate(); |
| | | if (senderTime == null) { |
| | | senderTime = senderTime; |
| | | } |
| | | LocalDate sendDate = deliveryTime.toInstant().atZone(ZoneId.systemDefault()).toLocalDate(); |
| | | if ((sendDate.isAfter(startTime) || sendDate.isEqual(startTime)) && |
| | | (sendDate.isBefore(endTime) || sendDate.isEqual(endTime))) {//时间段获取邮件 |
| | | t482101HEntity mail = new t482101HEntity(); |
| | |
| | | if (messageIdList != null && messageIdList.contains(messageId)) {//存在就不组装 |
| | | continue; |
| | | } |
| | | |
| | | mail.setSenderTime(sdf.format(senderTime));//发件时间 |
| | | mail.setReceivingTime(sdf.format(deliveryTime));//收件时间 |
| | | mail.setMessageId(messageId);//获取邮件唯一ID |
| | | mail.setMailType(1);//收件 |
| | | if (m.isSet(Flags.Flag.SEEN)) {//邮件已标记为已读 |