Browse Source

fix 新增每周三下午14点给线索未添加完成的人员发送短信

Administrator 3 years ago
parent
commit
2dfb5229eb

+ 29 - 0
ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysSpringTaskController.java

@@ -0,0 +1,29 @@
+package com.ruoyi.web.controller.system;
+
+import com.ruoyi.common.utils.DateUtils;
+import com.ruoyi.system.service.impl.project.BmProjectServiceImpl;
+import com.ruoyi.system.service.project.IBmProjectService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.scheduling.annotation.EnableScheduling;
+import org.springframework.scheduling.annotation.Scheduled;
+
+/**
+ * @author tjf
+ * @Date: 2021/07/23/10:10
+ */
+@Configuration      //1.主要用于标记配置类,兼备Component的效果。
+@EnableScheduling   // 2.开启定时任务
+public class SysSpringTaskController {
+
+    @Autowired
+    private IBmProjectService bmProjectService;
+    /**
+     * 每周三下午14点给未添加线索信息的用户发送短信
+     */
+    @Scheduled(cron = "0 0 14 ? * WED")
+    private void configureTasks() {
+        bmProjectService.selectBmProjectInProjectStatus();
+        System.out.println(DateUtils.getNowDate() +"执行定时任务 发送短信");
+    }
+}

+ 3 - 0
ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysUserController.java

@@ -1,11 +1,14 @@
 package com.ruoyi.web.controller.system;
 
+import java.util.Date;
 import java.util.List;
 import java.util.Map;
 import java.util.stream.Collectors;
 
 import cn.hutool.core.util.ObjectUtil;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.scheduling.annotation.Async;
+import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.DeleteMapping;

+ 2 - 5
ruoyi-common/src/main/java/com/ruoyi/common/utils/SendSmsUtils.java

@@ -9,9 +9,6 @@ import com.aliyuncs.dysmsapi.model.v20170525.SendSmsResponse;
 import com.aliyuncs.exceptions.ClientException;
 import com.aliyuncs.profile.DefaultProfile;
 import com.aliyuncs.profile.IClientProfile;
-import com.ruoyi.common.utils.http.HttpUtils;
-
-import java.text.SimpleDateFormat;
 
 /**
  * @author tjf
@@ -39,7 +36,7 @@ public class SendSmsUtils {
      * @return
      * @throws ClientException
      */
-    public static SendSmsResponse sendSms(String phone,String remark,String accessKeyId,String accessKeySecret,String signName,String templateCode ) throws ClientException {
+    public static SendSmsResponse sendSms(String phone,String nikeName,String accessKeyId,String accessKeySecret,String signName,String templateCode ) throws ClientException {
         //可自助调整超时时间
         System.setProperty("sun.net.client.defaultConnectTimeout", "10000");
         System.setProperty("sun.net.client.defaultReadTimeout", "10000");
@@ -58,7 +55,7 @@ public class SendSmsUtils {
         //必填:短信模板-可在短信控制台中找到
         request.setTemplateCode(templateCode);
         //可选:模板中的变量替换JSON串,如模板内容为"亲爱的${name},您的验证码为${code}"时,此处的值为
-        request.setTemplateParam("{\"remark\":\"" + remark + "\"}");
+        request.setTemplateParam("{\"name\":\"" + nikeName + "\"}");
         //可选:outId为提供给业务方扩展字段,最终在短信回执消息中将此值带回给调用者
         request.setOutId("zhaoShang");
         //hint 此处可能会抛出异常,注意catch

+ 7 - 0
ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserMapper.java

@@ -108,4 +108,11 @@ public interface SysUserMapper
      * @return 结果
      */
     public SysUser checkEmailUnique(String email);
+
+    /**
+     * 根据部门查询用户
+     * @param deptId
+     * @return
+     */
+    public List<SysUser> selectUserByDeptId(Long deptId);
 }

+ 7 - 0
ruoyi-system/src/main/java/com/ruoyi/system/mapper/project/BmProjectMapper.java

@@ -92,4 +92,11 @@ public interface BmProjectMapper
      * @return
      */
     public List<BmDeptPlanVo> selectProjectContractEharts(@Param("year") String year);
+
+
+    /**
+     * 每周三下午14点给未添加线索信息的用户发送短信
+     * @return
+     */
+    public List<BmProject> selectBmProjectInProjectStatus();
 }

+ 20 - 59
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java

@@ -432,11 +432,11 @@ public class SysUserServiceImpl implements ISysUserService {
     public AjaxResult sendSms(Map<String, Object> map) {
         StringBuilder nickNames = new StringBuilder("发送失败的人有:");
         ArrayList<LinkedHashMap> userList = (ArrayList<LinkedHashMap>) map.get("userList");
-        String content = String.valueOf(map.get("content"));
+        //String content = String.valueOf(map.get("content"));
         String accessKeyId = "LTAI5tNA2fcBJH6EWRH6Pxr6";
         String accessKeySecret = "5WdaPEOvC3u9LC7pwy2DQ9pgmJvgUr";
-        String signName = "安徽博曼网络科技有限公司";
-        String templateCode = "SMS_219525380";
+        String signName = "潜山市招商局";
+        String templateCode = "SMS_220545214";
         String message = null;
         boolean flag = false;
         Long textMessageId = Long.valueOf(String.valueOf(map.get("textMessageId")));
@@ -448,82 +448,43 @@ public class SysUserServiceImpl implements ISysUserService {
             templateCode = textMessage.getTemplateCode();
         }
         if (userList.size() > 0) {
-            StringBuilder sb = new StringBuilder();
             for (LinkedHashMap sysUser : userList) {
                 String phone = String.valueOf(sysUser.get("phonenumber"));
                 String nikeName = sysUser.get("nickName").toString();
                 if (StringUtils.isNotBlank(phone)) {
-                    sb.append(phone).append(",");
-                } else {
-                    if (!"null".equals(nikeName)) {
-                        flag = true;
-                        nickNames.append(sysUser.get("nickName")).append(",");
-                    }
-                }
-            }
-            if (StringUtils.isNotBlank(sb)) {
-                sb.replace(sb.length() - 1, sb.length(), "");
-            }
-            try {
-                SendSmsResponse sendSmsResponse = SendSmsUtils.sendSms(sb.toString(), content, accessKeyId, accessKeySecret, signName, templateCode);
-                message = sendSmsResponse.getMessage();
-                for (LinkedHashMap sysUser : userList) {
-                    String phone = String.valueOf(sysUser.get("phonenumber"));
-                    String nikeName = sysUser.get("nickName").toString();
-                    if (StringUtils.isNotBlank(phone)) {
+                    try {
+                        SendSmsResponse sendSmsResponse = SendSmsUtils.sendSms(phone, nikeName, accessKeyId, accessKeySecret, signName, templateCode);
+                        message = sendSmsResponse.getMessage();
+                    } catch (ClientException e) {
+                        e.printStackTrace();
+                    }finally {
                         TextMessageLog textMessageLog = new TextMessageLog();
                         textMessageLog.setPhoneNum(phone);
                         textMessageLog.setNickName(sysUser.get("nickName").toString());
                         textMessageLog.setCreateTime(DateUtils.getNowDate());
-                        textMessageLog.setContent(content);
+                        textMessageLog.setContent(nikeName + " 您好,您在招商引资管理平台有未完善的项目线索信息,请及时登陆招商引资管理平台在项目管理里完善项目线索信息。");
                         textMessageLog.setCreateBy(SecurityUtils.getUsername());
                         textMessageLog.setStatus(message);
                         textMessageLogMapper.insertTextMessageLog(textMessageLog);
-                    } else {
-                        if (!"null".equals(nikeName)) {
-                            TextMessageLog textMessageLog = new TextMessageLog();
-                            textMessageLog.setNickName(sysUser.get("nickName").toString());
-                            textMessageLog.setCreateTime(DateUtils.getNowDate());
-                            textMessageLog.setContent(content);
-                            textMessageLog.setCreateBy(SecurityUtils.getUsername());
-                            textMessageLog.setStatus("该用户没有手机号");
-                            textMessageLogMapper.insertTextMessageLog(textMessageLog);
-                        }
                     }
-                }
-
-            } catch (ClientException e) {
-                for (LinkedHashMap sysUser : userList) {
-                    String phone = String.valueOf(sysUser.get("phonenumber"));
-                    String nikeName = sysUser.get("nickName").toString();
-                    if (StringUtils.isNotBlank(phone)) {
+                } else {
+                    if (!"null".equals(nikeName)) {
+                        flag = true;
+                        nickNames.append(sysUser.get("nickName")).append(",");
                         TextMessageLog textMessageLog = new TextMessageLog();
-                        textMessageLog.setPhoneNum(phone);
                         textMessageLog.setNickName(sysUser.get("nickName").toString());
                         textMessageLog.setCreateTime(DateUtils.getNowDate());
-                        textMessageLog.setContent(content);
+                        textMessageLog.setContent(nikeName + " 您好,您在招商引资管理平台有未完善的项目线索信息,请及时登陆招商引资管理平台在项目管理里完善项目线索信息。");
                         textMessageLog.setCreateBy(SecurityUtils.getUsername());
-                        textMessageLog.setStatus("参数设置有误,请检查");
+                        textMessageLog.setStatus("该用户没有手机号");
                         textMessageLogMapper.insertTextMessageLog(textMessageLog);
-                    } else {
-                        if (!"null".equals(nikeName)) {
-                            TextMessageLog textMessageLog = new TextMessageLog();
-                            textMessageLog.setNickName(sysUser.get("nickName").toString());
-                            textMessageLog.setCreateTime(DateUtils.getNowDate());
-                            textMessageLog.setContent(content);
-                            textMessageLog.setCreateBy(SecurityUtils.getUsername());
-                            textMessageLog.setStatus("参数设置有误,请检查");
-                            textMessageLogMapper.insertTextMessageLog(textMessageLog);
-                        }
                     }
                 }
-                return AjaxResult.error("参数设置有误,请检查");
-            }
-            if (flag) {
-                nickNames.replace(nickNames.length() - 1, nickNames.length(), "");
-                return AjaxResult.success(nickNames);
             }
-
+        }
+        if (flag) {
+            nickNames.replace(nickNames.length() - 1, nickNames.length(), "");
+            return AjaxResult.success(nickNames);
         }
         return AjaxResult.success(message);
     }

+ 66 - 1
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/project/BmProjectServiceImpl.java

@@ -3,17 +3,24 @@ package com.ruoyi.system.service.impl.project;
 import java.math.BigDecimal;
 import java.util.*;
 
-import cn.hutool.core.util.ObjectUtil;
+
+import com.aliyuncs.dysmsapi.model.v20170525.SendSmsResponse;
+import com.aliyuncs.exceptions.ClientException;
 import com.ruoyi.common.core.domain.AjaxResult;
 import com.ruoyi.common.core.domain.entity.SysDictData;
 import com.ruoyi.common.core.domain.entity.SysUser;
 import com.ruoyi.common.core.domain.model.LoginUser;
 import com.ruoyi.common.utils.DateUtils;
 import com.ruoyi.common.utils.SecurityUtils;
+import com.ruoyi.common.utils.SendSmsUtils;
 import com.ruoyi.common.utils.StringUtils;
+import com.ruoyi.system.domain.TextMessageLog;
 import com.ruoyi.system.domain.project.*;
 import com.ruoyi.system.domain.vo.BmDeptPlanVo;
 import com.ruoyi.system.mapper.SysDictDataMapper;
+import com.ruoyi.system.mapper.SysUserMapper;
+import com.ruoyi.system.mapper.TextMessageLogMapper;
+
 import com.ruoyi.system.mapper.project.*;
 import com.ruoyi.system.service.project.IBmProjectService;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -72,6 +79,12 @@ public class BmProjectServiceImpl implements IBmProjectService {
     @Autowired
     private SysDictDataMapper sysDictDataMapper;
 
+    @Autowired
+    private SysUserMapper sysUserMapper;
+
+    @Autowired
+    private TextMessageLogMapper textMessageLogMapper;
+
 
     /**
      * 查询项目(添加线索)
@@ -363,4 +376,56 @@ public class BmProjectServiceImpl implements IBmProjectService {
         map.put("y2", totAmt);
         return map;
     }
+
+    /**
+     * 每周三下午14点给未添加线索信息的用户发送短信
+     */
+    @Override
+    public void selectBmProjectInProjectStatus() {
+        List<BmProject> bmProjects = bmProjectMapper.selectBmProjectInProjectStatus();
+        String accessKeyId = "LTAI5tNA2fcBJH6EWRH6Pxr6";
+        String accessKeySecret = "5WdaPEOvC3u9LC7pwy2DQ9pgmJvgUr";
+        String signName = "潜山市招商局";
+        String templateCode = "SMS_220545214";
+        String message = null;
+        if (bmProjects.size() > 0){
+            for (BmProject bmProject : bmProjects) {
+                Long deptId = bmProject.getDeptId();
+                List<SysUser> sysUsers = sysUserMapper.selectUserByDeptId(deptId);
+                if (sysUsers != null && sysUsers.size() > 0){
+                    for (SysUser sysUser : sysUsers) {
+                         String phoneNumber = sysUser.getPhonenumber();
+                         String userName = sysUser.getUserName();
+                        if (StringUtils.isNotBlank(phoneNumber)){
+                            try {
+                                SendSmsResponse sendSmsResponse = SendSmsUtils.sendSms(phoneNumber, userName, accessKeyId, accessKeySecret, signName, templateCode);
+                                message = sendSmsResponse.getMessage();
+                            } catch (ClientException e) {
+                                e.printStackTrace();
+                            }finally {
+                                TextMessageLog textMessageLog = new TextMessageLog();
+                                textMessageLog.setPhoneNum(phoneNumber);
+                                textMessageLog.setNickName(userName);
+                                textMessageLog.setCreateTime(DateUtils.getNowDate());
+                                textMessageLog.setContent(userName + " 您好,您在招商引资管理平台有未完善的项目线索信息,请及时登陆招商引资管理平台在项目管理里完善项目线索信息。");
+                                textMessageLog.setCreateBy(SecurityUtils.getUsername());
+                                textMessageLog.setStatus(message);
+                                textMessageLogMapper.insertTextMessageLog(textMessageLog);
+                            }
+                        }else {
+                            if (!"null".equals(userName)) {
+                                TextMessageLog textMessageLog = new TextMessageLog();
+                                textMessageLog.setNickName(userName);
+                                textMessageLog.setCreateTime(DateUtils.getNowDate());
+                                textMessageLog.setContent(userName + " 您好,您在招商引资管理平台有未完善的项目线索信息,请及时登陆招商引资管理平台在项目管理里完善项目线索信息。");
+                                textMessageLog.setCreateBy(SecurityUtils.getUsername());
+                                textMessageLog.setStatus("该用户没有手机号");
+                                textMessageLogMapper.insertTextMessageLog(textMessageLog);
+                            }
+                        }
+                    }
+                }
+            }
+        }
+    }
 }

+ 4 - 1
ruoyi-system/src/main/java/com/ruoyi/system/service/project/IBmProjectService.java

@@ -100,5 +100,8 @@ public interface IBmProjectService
      */
    public Map<String,Object> selectProjectContractEharts(String year);
 
-
+    /**
+     * 每周三下午14点给未添加线索信息的用户发送短信
+     */
+    void selectBmProjectInProjectStatus();
 }

+ 4 - 0
ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml

@@ -104,6 +104,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 	<select id="checkEmailUnique" parameterType="String" resultMap="SysUserResult">
 		select user_id, email from sys_user where email = #{email} and del_flag = '0' limit 1
 	</select>
+
+	<select id="selectUserByDeptId" parameterType="Long" resultMap="SysUserResult">
+		select user_name, phonenumber from sys_user where dept_id = #{deptId} and del_flag = '0'
+	</select>
 	
 	<insert id="insertUser" parameterType="SysUser" useGeneratedKeys="true" keyProperty="userId">
  		insert into sys_user(

+ 7 - 0
ruoyi-system/src/main/resources/mapper/system/project/BmProjectMapper.xml

@@ -253,4 +253,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 	order by successMission DESC,
 	totAmt DESC
     </select>
+
+
+
+    <select id="selectBmProjectInProjectStatus"  resultMap="BmProjectResult">
+        <include refid="selectBmProjectVo"></include>
+        where project_status = 1
+    </select>
 </mapper>