提交 | 用户 | age
|
385e2d
|
1 |
package com.yc.crm.mail.service; |
X |
2 |
|
|
3 |
import com.yc.action.grid.GridUtils; |
b7ef4b
|
4 |
import com.yc.crm.base.entity.T482115Entity; |
658898
|
5 |
import com.yc.crm.mail.action.MailFolder; |
b7ef4b
|
6 |
import com.yc.crm.mail.action.MailTag; |
7caeae
|
7 |
import com.yc.crm.mail.entity.*; |
385e2d
|
8 |
import com.yc.entity.AttachmentConfig; |
X |
9 |
import com.yc.sdk.shopping.service.imagedata.ShoppingImageDataIfc; |
7caeae
|
10 |
import com.yc.sdk.weixincp.util.UploadFiles; |
385e2d
|
11 |
import com.yc.service.BaseService; |
X |
12 |
import org.apache.commons.lang3.StringUtils; |
|
13 |
import org.springframework.beans.factory.annotation.Autowired; |
|
14 |
import org.springframework.jdbc.core.BeanPropertyRowMapper; |
|
15 |
import org.springframework.stereotype.Service; |
048b74
|
16 |
import org.springframework.transaction.annotation.Transactional; |
385e2d
|
17 |
|
7caeae
|
18 |
import java.util.ArrayList; |
X |
19 |
import java.util.List; |
f5cc47
|
20 |
import java.util.stream.Collectors; |
385e2d
|
21 |
|
X |
22 |
/** |
|
23 |
* @BelongsProject: eCoWorksV3 |
|
24 |
* @BelongsPackage: com.yc.crm.mail.service |
|
25 |
* @author: xinyb |
|
26 |
* @CreateTime: 2024-08-06 09:57 |
|
27 |
* @Description: |
|
28 |
*/ |
|
29 |
@Service |
|
30 |
public class MailImpl extends BaseService implements MailIfc { |
|
31 |
@Autowired |
|
32 |
MailAccountIfc emailAccountIfc; |
|
33 |
@Autowired |
|
34 |
ShoppingImageDataIfc imgData; |
658898
|
35 |
@Autowired |
X |
36 |
MailTagIfc mailTagIfc; |
|
37 |
@Autowired |
|
38 |
MailFolderIfc mailFolderIfc; |
385e2d
|
39 |
|
X |
40 |
final static String shoppingImageServer = AttachmentConfig.get("attachment.server"); |
ad7c8d
|
41 |
|
048b74
|
42 |
@Transactional(rollbackFor = Exception.class) |
385e2d
|
43 |
@Override |
X |
44 |
public t482101HEntity saveReceivingMail(t482101HEntity m) { |
|
45 |
String sql = "set nocount on\n"; |
|
46 |
try { |
3c2c1b
|
47 |
if (StringUtils.isBlank(m.getDocCode())) { |
7cf738
|
48 |
sql += "declare @docCode varchar(50) ,@unid varchar(50),@fieldId varchar(100),@originalFileName varchar(100)," + |
X |
49 |
"@physicalFile varchar(50),@OriginalPicture varbinary(max) \n"; |
385e2d
|
50 |
sql += "exec sp_newdoccode 482101," + GridUtils.prossSqlParm(m.getUserCode()) + ",@docCode output \n"; |
53241c
|
51 |
sql += "insert into t482101H(companyId,companyName,formId,docCode,docdate,PeriodID,postCode,postname,mailType,senderName,sender,sender_time,receiver,receiving_time," + |
57c8bf
|
52 |
"cc,bcc,subject,userCode,userName,content,plain_text,messageId,read_flag,delete_flag,create_time,update_time," +//receive_time |
d8f4b9
|
53 |
"attach_flag,attachment_list) values "; |
385e2d
|
54 |
sql += "(" + GridUtils.prossSqlParm(m.getCompanyId()) + "," + GridUtils.prossSqlParm(m.getCompanyName()) + ",482101," + |
X |
55 |
"@docCode,convert(varchar(10),getdate(),120),convert(varchar(7),getdate(),120)," |
|
56 |
+ GridUtils.prossSqlParm(m.getUserCode()) + "," + GridUtils.prossSqlParm(m.getUserName()) + "," + |
53241c
|
57 |
+m.getMailType() + "," + GridUtils.prossSqlParm(m.getSenderName()) + "," + GridUtils.prossSqlParm(m.getSender()) + "," + GridUtils.prossSqlParm(m.getSenderTime()) + "," + |
X |
58 |
GridUtils.prossSqlParm(StringUtils.join(m.getReceiver(), ",")) + "," + GridUtils.prossSqlParm(m.getReceivingTime()) + "," + GridUtils.prossSqlParm(StringUtils.join(m.getCc(), ",")) + "," + |
f4c162
|
59 |
GridUtils.prossSqlParm(StringUtils.join(m.getBcc(), ",")) + "," + |
385e2d
|
60 |
GridUtils.prossSqlParm(m.getSubject()) + "," + GridUtils.prossSqlParm(m.getUserCode()) + "," + GridUtils.prossSqlParm(m.getUserName()) + "," + |
7caeae
|
61 |
GridUtils.prossSqlParm(m.getContent()) + "," + GridUtils.prossSqlParm(m.getPlainText()) + "," + GridUtils.prossSqlParm(m.getMessageId()) + "," + |
57c8bf
|
62 |
m.getReadFlag() + "," + m.getDeleteFlag() + ",getdate(),getdate()," + m.getAttachFlag() + "," + GridUtils.prossSqlParm(m.getAttachmentList()) + ") \n" + |
7caeae
|
63 |
mailFileSql(m.getMailFile()); |
385e2d
|
64 |
sql += "select @docCode as docCode"; |
X |
65 |
String docCode = jdbcTemplate.queryForObject(sql, String.class); |
|
66 |
if (StringUtils.isNotBlank(docCode)) { |
|
67 |
m.setDocCode(docCode); |
|
68 |
} |
3c2c1b
|
69 |
} else { |
385e2d
|
70 |
updateReceivingMail(m);//修改 |
X |
71 |
} |
|
72 |
return m; |
|
73 |
} catch (Exception e) { |
|
74 |
throw e; |
|
75 |
} |
|
76 |
} |
ad7c8d
|
77 |
|
048b74
|
78 |
@Transactional(rollbackFor = Exception.class) |
385e2d
|
79 |
@Override |
18553a
|
80 |
public String saveReceivingMailList(List<t482101HEntity> mail) { |
385e2d
|
81 |
String sql = "set nocount on\n"; |
X |
82 |
try { |
18553a
|
83 |
sql += "declare @docCode varchar(50) ,@unid varchar(50),@fieldId varchar(100),@originalFileName varchar(100),@docCodeList varchar(3000)=''," + |
7cf738
|
84 |
"@physicalFile varchar(50),@OriginalPicture varbinary(max) \n"; |
385e2d
|
85 |
for (t482101HEntity m : mail) {//遍历内容 |
X |
86 |
sql += "exec sp_newdoccode 482101," + GridUtils.prossSqlParm(m.getUserCode()) + ",@docCode output \n"; |
18553a
|
87 |
sql += " select @docCodeList=@docCodeList+@docCode+';'\n" +//返回单号 |
F |
88 |
"insert into t482101H(companyId,companyName,formId,docCode,docdate,PeriodID,postCode,postname,mailType,senderName,sender,sender_time,receiver,receiving_time," + |
57c8bf
|
89 |
"cc,bcc,subject,userCode,userName,content,plain_text,messageId,read_flag,delete_flag,create_time,update_time," + |
d8f4b9
|
90 |
"attach_flag,attachment_list) values "; |
385e2d
|
91 |
sql += "(" + GridUtils.prossSqlParm(m.getCompanyId()) + "," + GridUtils.prossSqlParm(m.getCompanyName()) + ",482101," + |
X |
92 |
"@docCode,convert(varchar(10),getdate(),120),convert(varchar(7),getdate(),120)," |
|
93 |
+ GridUtils.prossSqlParm(m.getUserCode()) + "," + GridUtils.prossSqlParm(m.getUserName()) + "," + |
53241c
|
94 |
+m.getMailType() + "," + GridUtils.prossSqlParm(m.getSenderName()) + "," + GridUtils.prossSqlParm(m.getSender()) + "," + GridUtils.prossSqlParm(m.getSenderTime()) + "," + |
X |
95 |
GridUtils.prossSqlParm(StringUtils.join(m.getReceiver(), ",")) + "," + GridUtils.prossSqlParm(m.getReceivingTime()) + "," + GridUtils.prossSqlParm(StringUtils.join(m.getCc(), ",")) + "," + |
f4c162
|
96 |
GridUtils.prossSqlParm(StringUtils.join(m.getBcc(), ",")) + "," + |
385e2d
|
97 |
GridUtils.prossSqlParm(m.getSubject()) + "," + GridUtils.prossSqlParm(m.getUserCode()) + "," + GridUtils.prossSqlParm(m.getUserName()) + "," + |
7caeae
|
98 |
GridUtils.prossSqlParm(m.getContent()) + "," + GridUtils.prossSqlParm(m.getPlainText()) + "," + GridUtils.prossSqlParm(m.getMessageId()) + "," + |
57c8bf
|
99 |
m.getReadFlag() + "," + m.getDeleteFlag() + ",getdate(),getdate()," + m.getAttachFlag() + "," + GridUtils.prossSqlParm(m.getAttachmentList()) + ") \n" + |
7caeae
|
100 |
mailFileSql(m.getMailFile()); |
385e2d
|
101 |
} |
b7ef4b
|
102 |
return jdbcTemplate.queryForObject(sql + "\n select @docCodeList", String.class); |
385e2d
|
103 |
} catch (Exception e) { |
X |
104 |
throw e; |
7caeae
|
105 |
} |
X |
106 |
} |
|
107 |
|
|
108 |
/** |
|
109 |
* 邮件附件的处理 |
|
110 |
* |
|
111 |
* @param mailFile |
|
112 |
* @return |
|
113 |
*/ |
|
114 |
private String mailFileSql(MailFileEntity mailFile) { |
|
115 |
if (mailFile == null) {//附件保存 |
|
116 |
return ""; |
|
117 |
} |
|
118 |
String sql = ""; |
|
119 |
String originalFileName = ""; |
|
120 |
String fileType = ""; |
|
121 |
try { |
|
122 |
for (MailFileEntity.MailBodyPart file : mailFile.getPart()) { |
|
123 |
originalFileName = file.getFileName(); |
|
124 |
fileType = file.getFileType(); |
|
125 |
sql += "select @unid=" + GridUtils.prossSqlParm(mailFile.getUnId()) + "\n" + |
7cf738
|
126 |
",@fieldId=" + GridUtils.prossSqlParm(file.getFieldId()) + "\n" + |
7caeae
|
127 |
",@originalFileName=" + GridUtils.prossSqlParm(originalFileName) + "\n" + |
7cf738
|
128 |
",@physicalFile=" + GridUtils.prossSqlParm(file.getPhysicalFile()) + "\n" + |
7caeae
|
129 |
",@OriginalPicture=" + UploadFiles.byteToHexString(file.getByteFile()) + "\n"; |
X |
130 |
sql += "insert into _sys_Attachment(unId,formId,docCode,fieldId,physicalFile,originalFileName,FileSize,fileType,UploadTime,LastUpdateTime,OriginalPicture) values "; |
7cf738
|
131 |
sql += " (@unid,482101,@docCode,@fieldId,@physicalFile,@originalFileName," + file.getFileSize() + "," + GridUtils.prossSqlParm(fileType) + ",getdate(),getdate(),@OriginalPicture) \n"; |
7caeae
|
132 |
} |
X |
133 |
return sql; |
|
134 |
} catch (Exception e) { |
|
135 |
return ""; |
385e2d
|
136 |
} |
X |
137 |
} |
ad7c8d
|
138 |
|
048b74
|
139 |
@Transactional(rollbackFor = Exception.class) |
385e2d
|
140 |
@Override |
X |
141 |
public Integer updateReceivingMail(t482101HEntity mail) { |
|
142 |
String sql = "set nocount on\n"; |
|
143 |
try { |
f4c162
|
144 |
sql += "update t482101H set sender=" + GridUtils.prossSqlParm(mail.getSender()) + ",receiver=" + GridUtils.prossSqlParm(StringUtils.join(mail.getReceiver(), ",")) + "," + |
X |
145 |
"cc=" + GridUtils.prossSqlParm(StringUtils.join(mail.getCc(), ",")) + ",bcc=" + GridUtils.prossSqlParm(StringUtils.join(mail.getBcc(), ",")) + ",subject=" + GridUtils.prossSqlParm(mail.getSubject()) + "," + |
7caeae
|
146 |
"content=" + GridUtils.prossSqlParm(mail.getContent()) + ",attachment_list=" + GridUtils.prossSqlParm(mail.getAttachmentList()) + ",mailType=" + mail.getMailType() + "," + |
f4c162
|
147 |
"update_time=getdate() \n"; |
5b1a4a
|
148 |
sql += " where docCode=" + GridUtils.prossSqlParm(mail.getDocCode()) + "\n"; |
428443
|
149 |
sql += "select @@ROWCOUNT"; |
X |
150 |
return jdbcTemplate.queryForObject(sql, Integer.class); |
f4c162
|
151 |
} catch (Exception e) { |
X |
152 |
throw e; |
|
153 |
} |
|
154 |
} |
ad7c8d
|
155 |
|
048b74
|
156 |
@Transactional(rollbackFor = Exception.class) |
f4c162
|
157 |
@Override |
X |
158 |
public Integer updateDeleteFlag(String userCode, String docCode) { |
|
159 |
String sql = "set nocount on\n"; |
|
160 |
try { |
|
161 |
sql += "declare @docCode varchar(200) ='" + docCode + "' \n"; |
73c845
|
162 |
sql += "update t482101H set delete_flag=1 where userCode =" + GridUtils.prossSqlParm(userCode) + |
f4c162
|
163 |
" and docCode in (select list from GetInStr(@docCode))\n";//标记删除 |
5b1a4a
|
164 |
sql += " select @@ROWCOUNT"; |
428443
|
165 |
return jdbcTemplate.queryForObject(sql, Integer.class); |
385e2d
|
166 |
} catch (Exception e) { |
X |
167 |
throw e; |
|
168 |
} |
|
169 |
} |
ad7c8d
|
170 |
|
048b74
|
171 |
@Transactional(rollbackFor = Exception.class) |
385e2d
|
172 |
@Override |
5b1a4a
|
173 |
public Integer deleteEmail(String userCode, String docCode) { |
385e2d
|
174 |
String sql = "set nocount on\n"; |
X |
175 |
try { |
f4c162
|
176 |
sql += "declare @docCode varchar(200) ='" + docCode + "' \n"; |
73c845
|
177 |
sql += "update t482101H set delete_flag=1 where userCode =" + GridUtils.prossSqlParm(userCode) + |
f4c162
|
178 |
" and docCode in (select list from GetInStr(@docCode))\n";//标记删除 |
5b1a4a
|
179 |
sql += " select @@ROWCOUNT"; |
428443
|
180 |
return jdbcTemplate.queryForObject(sql, Integer.class); |
f5cc47
|
181 |
} catch (Exception e) { |
X |
182 |
throw e; |
|
183 |
} |
|
184 |
} |
|
185 |
|
|
186 |
@Override |
5b1a4a
|
187 |
public Integer deleteEmail(String messageId) { |
f5cc47
|
188 |
String sql = "set nocount on\n"; |
X |
189 |
try { |
f4c162
|
190 |
sql += "declare @messageId varchar(200) ='" + messageId + "' \n"; |
b7ef4b
|
191 |
sql += " delete t482101H where messageId in (select list from GetInStr(@messageId))\n";//删除 |
5b1a4a
|
192 |
sql += " select @@ROWCOUNT"; |
428443
|
193 |
return jdbcTemplate.queryForObject(sql, Integer.class); |
385e2d
|
194 |
} catch (Exception e) { |
X |
195 |
throw e; |
|
196 |
} |
|
197 |
} |
|
198 |
|
|
199 |
@Override |
f4c162
|
200 |
public t482101HEntity getReceivingMailInfo(String docCode) { |
385e2d
|
201 |
String sql = "set nocount on\n"; |
X |
202 |
try { |
ad7c8d
|
203 |
sql += "select top 1 DocCode,companyId,companyName,senderName,senderName,sender,receiver,mailType,subject,content,plain_text,file_unid as fileUNID,messageId," + |
5b1a4a
|
204 |
"read_flag,delete_flag,attach_flag,urgent_flag,receipt_flag,track_flag,userCode,userName,create_time,update_time," + |
658898
|
205 |
"send_status,receive_time,sign_id,attachment_list,remark,remark,sender_time,receiving_time," + |
ad7c8d
|
206 |
"(case when (isnull(handle_time,'') <> '' and isnull(handle_time,'') < getdate()) then 1 else 0 end) as handle,handle_time," + |
X |
207 |
"DocVersion from t482101H " + |
f4c162
|
208 |
"where docCode=" + GridUtils.prossSqlParm(docCode); |
385e2d
|
209 |
return jdbcTemplate.query(sql, new BeanPropertyRowMapper<>(t482101HEntity.class)).get(0); |
X |
210 |
} catch (Exception e) { |
|
211 |
throw e; |
|
212 |
} |
|
213 |
} |
|
214 |
|
|
215 |
@Override |
195685
|
216 |
public List<t482101HList> getReceivingMailList(String email, Integer mailType, boolean isNoRead, String userCode, Integer page, Integer limit) { |
385e2d
|
217 |
String sql = "set nocount on\n"; |
X |
218 |
try { |
ad7c8d
|
219 |
sql += "select companyId,companyName,mailType,DocCode,senderName,sender,receiver,subject,plain_text," + |
658898
|
220 |
"receive_time,update_time,create_time,senderName,sender,userCode,userName,folder_id,delete_Flag,attachment_list," + |
7cf738
|
221 |
"read_Flag,(case when (isnull(handle_time,'') <> '' and isnull(handle_time,'') < getdate()) then 1 else 0 end) as handle," + |
658898
|
222 |
"handle_time,sender_time,receiving_time from t482101H "; |
5b1a4a
|
223 |
sql += " where userCode=" + GridUtils.prossSqlParm(userCode); |
73c845
|
224 |
sql += " and isnull(delete_Flag,0) = 0 ";//未删除的 |
5b1a4a
|
225 |
sql += " and mailType=" + mailType;//0:草稿箱 1:收件箱 2:发件箱 |
X |
226 |
if (StringUtils.isNotBlank(email)) { |
|
227 |
if (mailType == 1) { |
|
228 |
sql += " and receiver like '%" + email + "%'"; |
|
229 |
} else if (mailType == 2) { |
|
230 |
sql += " and sender =" + GridUtils.prossSqlParm(email); |
|
231 |
} |
7cf738
|
232 |
} |
X |
233 |
if (isNoRead) {//0表示未读,1表示已读 |
|
234 |
sql += " and isnull(read_flag,0) = 0"; |
385e2d
|
235 |
} |
195685
|
236 |
sql += " order by docCode asc \n"; |
X |
237 |
sql += " OFFSET (" + page + " - 1) * " + limit + " ROWS FETCH NEXT " + limit + " ROWS ONLY"; |
d8f4b9
|
238 |
return jdbcTemplate.query(sql, new BeanPropertyRowMapper<>(t482101HList.class)); |
X |
239 |
} catch (Exception e) { |
|
240 |
throw e; |
|
241 |
} |
|
242 |
} |
|
243 |
|
|
244 |
@Override |
195685
|
245 |
public List<t482101HList> getHandleMailList(String email, String userCode, Integer page, Integer limit) { |
57c8bf
|
246 |
String sql = "set nocount on\n"; |
X |
247 |
try { |
|
248 |
sql += "select companyId,companyName,mailType,DocCode,senderName,sender,receiver,subject,plain_text," + |
|
249 |
"receive_time,update_time,create_time,senderName,sender,userCode,userName,folder_id,delete_Flag, " + |
|
250 |
"read_Flag,(case when (isnull(handle_time,'') <> '' and isnull(handle_time,'') < getdate()) then 1 else 0 end) as handle," + |
658898
|
251 |
"handle_time,sender_time,receiving_time from t482101H "; |
57c8bf
|
252 |
sql += " where isnull(handle_time,'') <> '' and isnull(handle_time,'') < getdate()"; |
X |
253 |
sql += " and userCode=" + GridUtils.prossSqlParm(userCode) + " and receiver like '%" + email + "%'"; |
195685
|
254 |
sql += " order by docCode asc \n"; |
X |
255 |
sql += " OFFSET (" + page + " - 1) * " + limit + " ROWS FETCH NEXT " + limit + " ROWS ONLY"; |
57c8bf
|
256 |
return jdbcTemplate.query(sql, new BeanPropertyRowMapper<>(t482101HList.class)); |
X |
257 |
} catch (Exception e) { |
|
258 |
throw e; |
|
259 |
} |
|
260 |
} |
|
261 |
|
|
262 |
@Override |
aad276
|
263 |
public List<t482101HList> getFolderMailList(String type, String userCode, Integer page, Integer limit) throws Exception { |
X |
264 |
String sql = "set nocount on\n"; |
|
265 |
try { |
|
266 |
String[] id = type.split("_"); |
|
267 |
if (id.length != 2) { |
|
268 |
throw new Exception("邮件类型Id格式不正确"); |
|
269 |
} |
|
270 |
sql += "select companyId,companyName,mailType,DocCode,senderName,sender,receiver,subject,plain_text," + |
|
271 |
"receive_time,update_time,create_time,senderName,sender,userCode,userName,folder_id,delete_Flag, " + |
|
272 |
"read_Flag,(case when (isnull(handle_time,'') <> '' and isnull(handle_time,'') < getdate()) then 1 else 0 end) as handle," + |
|
273 |
"handle_time,sender_time,receiving_time from t482101H "; |
|
274 |
sql += " where userCode=" + GridUtils.prossSqlParm(userCode) + " \n"; |
|
275 |
if (id[0].equals("folder")) {//是文件夹 |
|
276 |
sql += " and folder_id=" + id[1] + " \n"; |
|
277 |
} else if (id[0].equals("tag")) {//是标签 |
|
278 |
sql += " and tag_list like '%," + id[1] + ",%'"; |
|
279 |
} |
|
280 |
sql += " order by docCode asc \n"; |
|
281 |
sql += " OFFSET (" + page + " - 1) * " + limit + " ROWS FETCH NEXT " + limit + " ROWS ONLY"; |
|
282 |
return jdbcTemplate.query(sql, new BeanPropertyRowMapper<>(t482101HList.class)); |
|
283 |
} catch (Exception e) { |
|
284 |
throw e; |
|
285 |
} |
|
286 |
} |
|
287 |
|
|
288 |
@Override |
d8f4b9
|
289 |
public List<t482101HList> getUserMailList(String userCode) { |
X |
290 |
String sql = " set nocount on \n"; |
|
291 |
try { |
7cf738
|
292 |
sql = "select a.DocCode,isnull(a.mailType,0) as mailType,isnull(a.read_flag,0) as read_flag,a.sender,a.receiver, " + |
X |
293 |
"(case when (isnull(handle_time,'') <> '' and isnull(handle_time,'') < getdate()) then 1 else 0 end) as handle " + |
|
294 |
" from t482101H a where a.userCode=" + GridUtils.prossSqlParm(userCode) + " order by a.mailType"; |
428443
|
295 |
return jdbcTemplate.query(sql, new BeanPropertyRowMapper<>(t482101HList.class)); |
385e2d
|
296 |
} catch (Exception e) { |
X |
297 |
throw e; |
|
298 |
} |
|
299 |
} |
|
300 |
|
048b74
|
301 |
@Transactional(rollbackFor = Exception.class) |
385e2d
|
302 |
@Override |
X |
303 |
public Integer updateMailDrafts(t482101HEntity mail) { |
|
304 |
String sql = "set nocount on\n"; |
|
305 |
try { |
f4c162
|
306 |
sql += "update t482101H set sender=" + GridUtils.prossSqlParm(mail.getSender()) + ",receiver=" + GridUtils.prossSqlParm(StringUtils.join(mail.getReceiver(), ",")) + "," + |
f6ae0b
|
307 |
"cc=" + GridUtils.prossSqlParm(StringUtils.join(mail.getCc(), ",")) + ",bcc=" + GridUtils.prossSqlParm(StringUtils.join(mail.getBcc(), ",")) + "," + |
X |
308 |
"subject=" + GridUtils.prossSqlParm(mail.getSubject()) + ",messageId=" + GridUtils.prossSqlParm(mail.getMessageId()) + "," + |
7caeae
|
309 |
"content=" + GridUtils.prossSqlParm(mail.getContent()) + ",attachment_list=" + GridUtils.prossSqlParm(mail.getAttachmentList()) + ",mailType=" + mail.getMailType() + "," + |
6a63e2
|
310 |
"update_time=getdate() \n"; |
385e2d
|
311 |
sql += " where docCode=" + GridUtils.prossSqlParm(mail.getDocCode()); |
5b1a4a
|
312 |
sql += " select @@ROWCOUNT"; |
7caeae
|
313 |
return jdbcTemplate.queryForObject(sql, Integer.class); |
X |
314 |
} catch (Exception e) { |
|
315 |
throw e; |
|
316 |
} |
3c2c1b
|
317 |
} |
f5cc47
|
318 |
|
X |
319 |
@Override |
|
320 |
public List<String> getMessageIdList(String receiver) { |
|
321 |
List<String> messageId = null; |
|
322 |
String sql = " set nocount on \n"; |
|
323 |
try { |
|
324 |
sql += "select messageId from t482101H where receiver='" + receiver + "'"; |
|
325 |
List<t482101HEntity> message = jdbcTemplate.query(sql, new BeanPropertyRowMapper<>(t482101HEntity.class)); |
|
326 |
if (message != null && message.size() > 0) { |
|
327 |
messageId = new ArrayList<>(); |
|
328 |
messageId = message.stream().map(t482101HEntity::getMessageId).distinct().collect(Collectors.toList());//去重 |
|
329 |
} |
|
330 |
return messageId; |
|
331 |
} catch (Exception e) { |
|
332 |
throw e; |
|
333 |
} |
|
334 |
} |
57c8bf
|
335 |
|
048b74
|
336 |
@Transactional(rollbackFor = Exception.class) |
f4c162
|
337 |
@Override |
7cf738
|
338 |
public void updateRead(String docCode, boolean status) { |
f4c162
|
339 |
String sql = " set nocount on \n"; |
X |
340 |
try { |
5b1a4a
|
341 |
sql += "declare @docCode varchar(200) ='" + docCode + "' \n"; |
7cf738
|
342 |
sql += "update t482101H set read_flag=" + (status ? 1 : 0) + " where docCode in (select list from GetInStr(@docCode))\n"; |
aad276
|
343 |
sql += "select @@ROWCOUNT"; |
X |
344 |
jdbcTemplate.queryForObject(sql, Integer.class); |
|
345 |
} catch (Exception e) { |
|
346 |
throw e; |
|
347 |
} |
|
348 |
} |
|
349 |
|
|
350 |
@Override |
|
351 |
public void updateMailType(String docCode, Integer folderId, String tagId) { |
|
352 |
String sql = " set nocount on \n"; |
|
353 |
try { |
|
354 |
boolean bol = false; |
|
355 |
sql += "declare @docCode varchar(200) ='" + docCode + "' \n"; |
|
356 |
sql += "update t482101H set \n"; |
|
357 |
if (!folderId.equals(0)) { |
|
358 |
sql += " folder_id=" + folderId + "\n"; |
|
359 |
bol = true; |
|
360 |
} |
|
361 |
if (StringUtils.isNotBlank(tagId)) { |
|
362 |
sql += (bol ? "," : "") + " tag_list='," + tagId + ",' \n"; |
|
363 |
} |
|
364 |
sql += " where docCode in (select list from GetInStr(@docCode))\n"; |
f4c162
|
365 |
sql += "select @@ROWCOUNT"; |
X |
366 |
jdbcTemplate.queryForObject(sql, Integer.class); |
|
367 |
} catch (Exception e) { |
|
368 |
throw e; |
|
369 |
} |
|
370 |
} |
d8f4b9
|
371 |
|
X |
372 |
@Override |
|
373 |
public List<MailModuleEntity> getMailModuleList(String userCode) { |
|
374 |
List<MailModuleEntity> module = MailModuleEntity.setMailInitial(); |
|
375 |
try { |
877259
|
376 |
List<T482102Entity> account = emailAccountIfc.getAccount(userCode);//获取这个账号绑定的邮箱 |
d8f4b9
|
377 |
List<t482101HList> userMail = getUserMailList(userCode); |
X |
378 |
for (MailModuleEntity m : module) { |
|
379 |
List<t482101HList> mailTypeList = null; |
|
380 |
int mailType = m.getMailType();//类型 |
|
381 |
switch (mailType) { |
|
382 |
case 0://草稿箱 |
|
383 |
case 1://收件箱 |
|
384 |
case 2://发件箱 |
|
385 |
if (mailType == 0) { |
877259
|
386 |
m.setChildren(new ArrayList<>()); |
d8f4b9
|
387 |
if (userMail.size() > 0) { |
X |
388 |
m.setTotal((int) userMail.stream().filter(s -> s.getMailType().equals(mailType)).count()); |
|
389 |
} |
|
390 |
} else { |
|
391 |
List<MailModuleEntity.MailCode> codeList = new ArrayList<>(); |
|
392 |
MailModuleEntity.MailCode code = new MailModuleEntity.MailCode(); |
877259
|
393 |
code.setKey(mailType == 1 ? "InboxPage1" : "IndexPage1"); |
d8f4b9
|
394 |
code.setMailType(mailType); |
X |
395 |
code.setMailName(mailType == 1 ? "全部收件" : "全部发件"); |
|
396 |
codeList.add(code); |
|
397 |
if (account.size() == 0) {//没有直接跳过 |
877259
|
398 |
m.setChildren(codeList); |
d8f4b9
|
399 |
continue; |
X |
400 |
} |
|
401 |
int allCount = 0; |
|
402 |
int count = 0; |
7caeae
|
403 |
for (T482102Entity a : account) { |
d8f4b9
|
404 |
MailModuleEntity.MailCode nextCode = new MailModuleEntity.MailCode(); |
6a63e2
|
405 |
String eMail = (mailType == 1 ? a.getReceiveEmail() : a.getSmtpEmail());//获取邮箱账号 |
7caeae
|
406 |
nextCode.setKey(mailType == 1 ? "receiver" : "sender"); |
6a63e2
|
407 |
nextCode.setMailName(eMail); |
d8f4b9
|
408 |
nextCode.setMailType(m.getMailType()); |
7cf738
|
409 |
// if (userMail.size() > 0) { |
X |
410 |
// count = (mailType == 1 ? (int) userMail.stream().filter(s -> s.getMailType().equals(mailType) && s.getReceiver().contains(eMail)).count() : |
|
411 |
// (int) userMail.stream().filter(s -> s.getMailType().equals(mailType) && s.getSender().contains(eMail)).count()); |
|
412 |
// nextCode.setTotal(count); |
|
413 |
// } |
|
414 |
if (mailType == 1) {//是收件箱,统计未读数量 |
|
415 |
count = (int) userMail.stream().filter(s -> s.getMailType().equals(mailType) && s.getReceiver().contains(eMail) && s.getReadFlag().equals(0)).count(); |
d8f4b9
|
416 |
nextCode.setTotal(count); |
X |
417 |
} |
|
418 |
codeList.add(nextCode); |
|
419 |
allCount = (allCount + count); |
|
420 |
} |
|
421 |
codeList.get(0).setTotal(allCount); |
|
422 |
m.setTotal(allCount); |
877259
|
423 |
m.setChildren(codeList); |
d8f4b9
|
424 |
} |
X |
425 |
break; |
|
426 |
case 3://待处理邮件 |
877259
|
427 |
m.setChildren(new ArrayList<>()); |
d8f4b9
|
428 |
if (userMail.size() > 0) { |
7cf738
|
429 |
m.setTotal((int) userMail.stream().filter(s -> s.getHandle().equals(1)).count()); |
d8f4b9
|
430 |
} |
X |
431 |
break; |
|
432 |
case 4://未读邮件 |
877259
|
433 |
m.setChildren(new ArrayList<>()); |
d8f4b9
|
434 |
if (userMail.size() > 0) { |
7cf738
|
435 |
m.setTotal((int) userMail.stream().filter(s -> s.getReadFlag().equals(0)).count()); |
d8f4b9
|
436 |
} |
X |
437 |
break; |
|
438 |
case 5://群邮箱 |
877259
|
439 |
m.setChildren(new ArrayList<>()); |
d8f4b9
|
440 |
break; |
X |
441 |
default: |
|
442 |
break; |
|
443 |
} |
|
444 |
} |
|
445 |
return module; |
|
446 |
} catch (Exception e) { |
|
447 |
throw e; |
|
448 |
} |
|
449 |
} |
57c8bf
|
450 |
|
658898
|
451 |
@Override |
X |
452 |
public List<MailModuleBelowEntity> getMailModuleBelowList(String userCode) { |
|
453 |
List<MailModuleBelowEntity> below = MailModuleBelowEntity.setMailInitial(); |
|
454 |
try { |
|
455 |
for (MailModuleBelowEntity b : below) { |
|
456 |
String key = b.getKey(); |
|
457 |
if (key.equals("moduleBelowA")) {//文件夹 |
b7ef4b
|
458 |
List<T482107Entity> t482107 = mailFolderIfc.getMailFolder(userCode); |
X |
459 |
b.setList(MailFolder.getFolderModule(t482107, "")); |
658898
|
460 |
} |
X |
461 |
if (key.equals("moduleBelowB")) {//标签邮件 |
b7ef4b
|
462 |
List<T482115Entity> tag = mailTagIfc.getTagList(userCode, "", -1); |
X |
463 |
b.setList(MailTag.getTagModule(tag)); |
658898
|
464 |
} |
X |
465 |
if (key.equals("moduleBelowC")) {//显示更多 |
|
466 |
List<MailModuleBelowEntity> CList = new ArrayList<>(); |
b7ef4b
|
467 |
MailModuleBelowEntity delete = new MailModuleBelowEntity(); |
X |
468 |
delete.setKey("deleteMail"); |
|
469 |
delete.setName("已删除邮件"); |
|
470 |
CList.add(delete); |
|
471 |
MailModuleBelowEntity waste = new MailModuleBelowEntity(); |
|
472 |
waste.setKey("wasteMail"); |
|
473 |
waste.setName("垃圾邮件"); |
|
474 |
CList.add(waste); |
|
475 |
MailModuleBelowEntity track = new MailModuleBelowEntity(); |
|
476 |
track.setKey("trackMail"); |
|
477 |
track.setName("追踪信息"); |
|
478 |
CList.add(track); |
|
479 |
b.setList(CList); |
658898
|
480 |
} |
X |
481 |
} |
|
482 |
return below; |
|
483 |
} catch (Exception e) { |
|
484 |
throw e; |
|
485 |
} |
|
486 |
} |
|
487 |
|
048b74
|
488 |
@Transactional(rollbackFor = Exception.class) |
7cf738
|
489 |
@Override |
X |
490 |
public void updateMailHandle(String handleTime, String docCode) { |
|
491 |
String sql = " set nocount on \n"; |
|
492 |
try { |
|
493 |
sql += "declare @docCode varchar(200) ='" + docCode + "' \n"; |
|
494 |
sql += "update t482101H set handle_time=" + (StringUtils.isBlank(handleTime) ? "null" : GridUtils.prossSqlParm(handleTime)) + |
562e20
|
495 |
" where docCode in (select list from GetInStr(@docCode))\n"; |
7cf738
|
496 |
sql += "select @@ROWCOUNT"; |
X |
497 |
jdbcTemplate.queryForObject(sql, Integer.class); |
|
498 |
} catch (Exception e) { |
|
499 |
throw e; |
|
500 |
} |
|
501 |
} |
0c7568
|
502 |
|
X |
503 |
@Override |
aad276
|
504 |
public Integer getMailTotal(String email, Integer mailType, boolean isNoRead, String id, String userCode) { |
0c7568
|
505 |
String sql = "set nocount on\n"; |
X |
506 |
try { |
|
507 |
sql += "select count(*) from t482101H "; |
|
508 |
sql += " where userCode=" + GridUtils.prossSqlParm(userCode); |
|
509 |
if (mailType < 3) { |
|
510 |
sql += " and mailType=" + mailType;//0:草稿箱 1:收件箱 2:发件箱 |
|
511 |
} |
|
512 |
if (StringUtils.isNotBlank(email)) { |
aad276
|
513 |
if (mailType == 1) { |
X |
514 |
sql += " and receiver like '%" + email + "%'"; |
0c7568
|
515 |
} else if (mailType == 2) { |
X |
516 |
sql += " and sender =" + GridUtils.prossSqlParm(email); |
aad276
|
517 |
} else if (mailType == 3) { |
X |
518 |
sql += " and isnull(handle_time,'') <> '' and isnull(handle_time,'') < getdate() "; |
0c7568
|
519 |
} |
X |
520 |
} |
|
521 |
if (isNoRead) {//0表示未读,1表示已读 |
|
522 |
sql += " and isnull(read_flag,0) = 0"; |
|
523 |
} |
aad276
|
524 |
if (StringUtils.isNotBlank(id)) {//文件夹 |
X |
525 |
String[] type = id.split("_"); |
|
526 |
if (type.length == 2) { |
|
527 |
if (type[0].equals("folder")) { |
|
528 |
sql += " and folder_id=" + type[1]; |
|
529 |
} else if (type[0].equals("tag")) { |
|
530 |
sql += " and tag_list like '%," + type[1] + ",%'"; |
|
531 |
} |
|
532 |
} |
|
533 |
} |
0c7568
|
534 |
return jdbcTemplate.queryForObject(sql, Integer.class); |
X |
535 |
} catch (Exception e) { |
|
536 |
return 0; |
|
537 |
} |
|
538 |
} |
385e2d
|
539 |
} |