xinyb
2024-09-21 53241c9e1a7e4cbb7383b77919a86bba9c1a91e7
CRM邮箱配置和文件夹
1个文件已添加
6个文件已修改
145 ■■■■■ 已修改文件
src/com/yc/crm/mail/action/MailAccount.java 46 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/com/yc/crm/mail/action/MailFolder.java 43 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/com/yc/crm/mail/entity/FolderEntity.java 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/com/yc/crm/mail/entity/t482101HEntity.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/com/yc/crm/mail/service/MailFolderImpl.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/com/yc/crm/mail/service/MailImpl.java 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/com/yc/crm/mail/service/MailServiceImpl.java 14 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/com/yc/crm/mail/action/MailAccount.java
@@ -418,6 +418,52 @@
     * @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();
src/com/yc/crm/mail/action/MailFolder.java
@@ -1,5 +1,6 @@
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;
@@ -14,7 +15,9 @@
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
@@ -64,6 +67,7 @@
        return msg;
    }
    /**
     * 修改邮件文件夹
     *
@@ -76,7 +80,7 @@
    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;
            }
@@ -111,7 +115,7 @@
    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;
            }
@@ -155,7 +159,7 @@
            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());
@@ -164,4 +168,37 @@
        }
        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;
        }
    }
}
src/com/yc/crm/mail/entity/FolderEntity.java
New file
@@ -0,0 +1,23 @@
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;
}
src/com/yc/crm/mail/entity/t482101HEntity.java
@@ -21,7 +21,9 @@
    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:'是否已读']
src/com/yc/crm/mail/service/MailFolderImpl.java
@@ -66,8 +66,9 @@
    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 + "%'";
            }
src/com/yc/crm/mail/service/MailImpl.java
@@ -41,14 +41,14 @@
                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()) + "," +
@@ -77,14 +77,14 @@
                    "@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()) + "," +
src/com/yc/crm/mail/service/MailServiceImpl.java
@@ -285,14 +285,19 @@
                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();
@@ -300,6 +305,9 @@
                    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)) {//邮件已标记为已读