diff --git a/pom.xml b/pom.xml
index f5b53f2..534ec95 100644
--- a/pom.xml
+++ b/pom.xml
@@ -119,6 +119,16 @@
spring-boot-starter-mail
+
+ com.aliyun
+ aliyun-java-sdk-core
+ 4.5.3
+
+
+ com.aliyun
+ dysmsapi20170525
+ 2.0.22
+
diff --git a/src/main/java/com/zh/lingnuo/controller/UtilController.java b/src/main/java/com/zh/lingnuo/controller/UtilController.java
index c5e1d75..3c9178a 100644
--- a/src/main/java/com/zh/lingnuo/controller/UtilController.java
+++ b/src/main/java/com/zh/lingnuo/controller/UtilController.java
@@ -1,11 +1,15 @@
package com.zh.lingnuo.controller;
import com.alibaba.fastjson.JSONObject;
+import com.aliyun.dysmsapi20170525.Client;
import com.zh.lingnuo.utils.Common;
+import com.zh.lingnuo.utils.FuncRes;
+import com.zh.lingnuo.utils.SmsService;
import com.zh.lingnuo.utils.result.HttpStatusEnum;
import com.zh.lingnuo.utils.result.Result;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
@@ -55,14 +59,7 @@ public class UtilController {
return Result.fail(HttpStatusEnum.CUSTOM_EXCEPTION, "上传失败");
}
-
-
public static void main(String[] args) {
-
-
-
-
}
-
}
diff --git a/src/main/java/com/zh/lingnuo/controller/company/CompanyQnController.java b/src/main/java/com/zh/lingnuo/controller/company/CompanyQnController.java
index 5244c90..101c643 100644
--- a/src/main/java/com/zh/lingnuo/controller/company/CompanyQnController.java
+++ b/src/main/java/com/zh/lingnuo/controller/company/CompanyQnController.java
@@ -249,7 +249,7 @@ public class CompanyQnController {
@PostMapping("/groupSendMail")
@Token(requireUser = 1, level = {2})
public Result groupSendMail(@Validated @RequestBody ParamsQnOpr params) {
- return companyQnService.groupSendMail(params.getQnId());
+ return companyQnService.groupSendMail(params.getQnId(),params.getUserInfo());
}
@Operation(summary = "停止问卷")
diff --git a/src/main/java/com/zh/lingnuo/mapper/CompanyQnMapper.java b/src/main/java/com/zh/lingnuo/mapper/CompanyQnMapper.java
index 7a839af..86642ea 100644
--- a/src/main/java/com/zh/lingnuo/mapper/CompanyQnMapper.java
+++ b/src/main/java/com/zh/lingnuo/mapper/CompanyQnMapper.java
@@ -82,6 +82,6 @@ public interface CompanyQnMapper extends BaseMapper {
"LEFT JOIN company_qn_answer t3 on t3.answerer_id = t2.answerer_id\n" +
"LEFT JOIN company_qn_title t4 on t1.id = t4.qn_id \n" +
"WHERE t1.status != 0 and t2.answerer_id = #{answererId} " +
- "ORDER BY t1.id DESC GROUP BY t1.id")
+ "GROUP BY t1.id ORDER BY t1.id DESC")
IPage qnList(IPage page,int answererId);
}
diff --git a/src/main/java/com/zh/lingnuo/service/ICompanyQnService.java b/src/main/java/com/zh/lingnuo/service/ICompanyQnService.java
index 8ccf12b..dd4945f 100644
--- a/src/main/java/com/zh/lingnuo/service/ICompanyQnService.java
+++ b/src/main/java/com/zh/lingnuo/service/ICompanyQnService.java
@@ -3,6 +3,7 @@ package com.zh.lingnuo.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.zh.lingnuo.controller.company.CompanyQnController;
import com.zh.lingnuo.controller.manage.ManageCompanyQnController;
+import com.zh.lingnuo.model.Company;
import com.zh.lingnuo.model.CompanyQn;
import com.baomidou.mybatisplus.extension.service.IService;
import com.zh.lingnuo.utils.result.Result;
@@ -33,7 +34,7 @@ public interface ICompanyQnService extends IService {
Result release(CompanyQn qn);
// 全量发送邮件
- Result groupSendMail(int qnId);
+ Result groupSendMail(int qnId, Company company);
// 停止问卷
Result end(int qnId);
diff --git a/src/main/java/com/zh/lingnuo/serviceImpl/CompanyQnAnswerServiceImpl.java b/src/main/java/com/zh/lingnuo/serviceImpl/CompanyQnAnswerServiceImpl.java
index 4874d52..e8493b2 100644
--- a/src/main/java/com/zh/lingnuo/serviceImpl/CompanyQnAnswerServiceImpl.java
+++ b/src/main/java/com/zh/lingnuo/serviceImpl/CompanyQnAnswerServiceImpl.java
@@ -234,7 +234,7 @@ public class CompanyQnAnswerServiceImpl extends ServiceImpl resultList = new ArrayList<>();
- List list = partnerChoiceResultData(qnId, false);
+ List list = partnerChoiceResultData(qnId, qn.getIsSecret()==1?true:false);
for (CompanyQnController.ResultPartnerChoice resultPartnerChoice : list) {
Map map = new LinkedHashMap();
map.put("SourceId", resultPartnerChoice.getAnswererName());
@@ -248,8 +248,8 @@ public class CompanyQnAnswerServiceImpl extends ServiceImpl
@@ -43,11 +50,19 @@ public class CompanyQnServiceImpl extends ServiceImpl answerers = answererMapper.answererList(qnId);
- if(answerers.size()==0){
+ if (answerers.size() == 0) {
return Result.err("答题人为空");
}
super.update(new UpdateWrapper().eq("id", qnId).eq("status", CompanyQn.CompanyQnStatusNotRelease).set("status", CompanyQn.CompanyQnStatusRelease));
- return Result.success("发布成功");
+ return Result.success("发布成功");
}
// 全量发送邮件
- public Result groupSendMail(int qnId){
- CompanyQn qn = super.getById(qnId);
- String isSecret = CompanyQn.getIsSecretDesc(qn.getIsSecret());
- List answerers = answererMapper.answererList(qn.getId());
- List mailList = new ArrayList();
- List illegalMailList = new ArrayList();
- System.out.println("发送邮件开始");
- for (Answerer answerer : answerers) {
- String mail = answerer.getMail();
- if (null != mail) {
- String subject = "问卷填写通知";
- String content = "请您用提供的账号密码登录该平台,并回答相应问题。\n"
- +"问卷地址:"+webUrl+"\n"
- +"账号:"+answerer.getMail()+"\n"
- +"密码:"+answerer.getTel()+"\n"
- +"注意:本次调研采用【"+isSecret+"】形式。在最后的群体报告中,您的个人信息均会隐去。您的个人报告只有您自己能看到。";
- if (!mailServiceImpl.sendMail(mail, subject, content)) {
- illegalMailList.add(answerer.getName());
- }
- }
- }
- String msg = "发布成功";
- if (illegalMailList.size() > 0) {
- msg = msg + "," + illegalMailList.toString() + "邮箱错误";
- }
- return Result.success("", msg + "!");
+ public Result groupSendMail(int qnId,Company company) {
+ CompanyQn qn = super.getById(qnId);
+ String companyName = company.getName();
+ String isSecret = CompanyQn.getIsSecretDesc(qn.getIsSecret());
+ List answerers = answererMapper.answererList(qn.getId());
+ List illegalMailList = new ArrayList();
+ List illegalTelList = new ArrayList();
+ System.out.println("发送短信邮件开始");
+ for (Answerer answerer : answerers) {
+ String mail = answerer.getMail();
+ String usrName = answerer.getMail();
+ String password = answerer.getTel();
+ if (null != mail) {
+// String content = "请您用提供的账号密码登录该平台,并回答相应问题。\n"
+// +"问卷地址:"+webUrl+"\n"
+// +"账号:"+usrName+"\n"
+// +"密码:"+password+"\n"
+// +"注意:本次调研采用【"+isSecret+"】形式。在最后的群体报告中,您的个人信息均会隐去。您的个人报告只有您自己能看到。";
+ String content = "欢迎您参加" + companyName + "发起的组织网络问卷调查。\n"
+ + "问卷填写地址:" + webUrl + "\n"
+ + "账号:" + usrName + "\n"
+ + "密码" + password + "\n";
+ if (!mailServiceImpl.sendMail(mail, signName, content)) {
+ illegalMailList.add(answerer.getName());
+ }
+ }
+ String tel = answerer.getTel();
+ Client client = null;
+ try {
+ client = smsService.createClient();
+ } catch (Exception e) {
+// System.out.println("注册smsClient错误");
+ }
+ if (null != client) {
+ if (Common.telRegex(tel)) {
+ JSONObject obj = new JSONObject();
+ obj.put("company", companyName);
+ obj.put("usrname", usrName);
+ obj.put("password", password);
+ FuncRes funcRes = smsService.smsRequest(client, signName, templateCode, tel, obj.toString());
+ if (!funcRes.isSuccess()) {
+ illegalTelList.add(answerer.getName());
+ }
+ }
+ }
+ }
+ String msg = "发布成功";
+ if (illegalMailList.size() > 0) {
+ msg = msg + "," + illegalMailList.toString() + "邮箱错误";
+ }
+ if (illegalTelList.size() > 0) {
+ msg = msg + "," + illegalTelList.toString() + "手机号错误";
+ }
+ return Result.success("", msg + "!");
}
diff --git a/src/main/java/com/zh/lingnuo/serviceImpl/MailServiceImpl.java b/src/main/java/com/zh/lingnuo/serviceImpl/MailServiceImpl.java
index 4518604..47964d7 100644
--- a/src/main/java/com/zh/lingnuo/serviceImpl/MailServiceImpl.java
+++ b/src/main/java/com/zh/lingnuo/serviceImpl/MailServiceImpl.java
@@ -30,10 +30,10 @@ public class MailServiceImpl implements MailService {
mailMessage.setText(content);
try {
javaMailSender.send(mailMessage);
- System.out.println("发送简单邮件成功");
+// System.out.println("发送简单邮件成功");
return true;
}catch (Exception e){
- System.out.println("发送简单邮件失败"+e.getMessage());
+// System.out.println("发送简单邮件失败"+e.getMessage());
return false;
}
}
diff --git a/src/main/java/com/zh/lingnuo/serviceImpl/UserTokenServiceImpl.java b/src/main/java/com/zh/lingnuo/serviceImpl/UserTokenServiceImpl.java
index 7a52e6c..f4d9590 100644
--- a/src/main/java/com/zh/lingnuo/serviceImpl/UserTokenServiceImpl.java
+++ b/src/main/java/com/zh/lingnuo/serviceImpl/UserTokenServiceImpl.java
@@ -53,7 +53,8 @@ public class UserTokenServiceImpl extends ServiceImpl().eq("name", params.getName()));
+ Company company = companyService.getOne(new QueryWrapper()
+ .eq("name", params.getName()).or().eq("mail",params.getName()));
if(null == company){
return Result.err("账号错误");
}
diff --git a/src/main/java/com/zh/lingnuo/utils/Common.java b/src/main/java/com/zh/lingnuo/utils/Common.java
index 7eccce9..8df49dd 100644
--- a/src/main/java/com/zh/lingnuo/utils/Common.java
+++ b/src/main/java/com/zh/lingnuo/utils/Common.java
@@ -8,6 +8,8 @@ import java.nio.charset.StandardCharsets;
import java.util.HashMap;
import java.util.Map;
import java.util.Random;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
public class Common {
@@ -22,6 +24,19 @@ public class Common {
return sb.toString();
}
+ // 验证是否是正确合法的手机号码
+ public static Boolean telRegex(String tel) {
+ if (tel.length() != 11) {
+ return false;
+ }
+ Pattern pattern = Pattern.compile("^1[3,4,5,6,7,8,9]\\d{9}$");
+ Matcher matcher = pattern.matcher(tel);
+ if (matcher.matches()) {
+ return true;
+ }
+ return false;
+ }
+
public static String md5(String str) {
return DigestUtils.md5DigestAsHex(str.getBytes(StandardCharsets.UTF_8));
}
diff --git a/src/main/java/com/zh/lingnuo/utils/ExcelExport.java b/src/main/java/com/zh/lingnuo/utils/ExcelExport.java
index 384bbbb..602cd5f 100644
--- a/src/main/java/com/zh/lingnuo/utils/ExcelExport.java
+++ b/src/main/java/com/zh/lingnuo/utils/ExcelExport.java
@@ -11,6 +11,7 @@ public class ExcelExport {
/**
* src:定义下载的文件路径
+ *
* @param src
* @return
*/
@@ -33,15 +34,18 @@ public class ExcelExport {
//根据需要给第一行每一列设置标题
int rowCellIndex = 0;
XSSFCell cell = row.createCell(rowCellIndex);
- Set