From 2fcd97552d16718cc7997629fd637a73a5a4483f Mon Sep 17 00:00:00 2001
From: 郑永安 <zyazyz250@sina.com>
Date: 星期一, 19 六月 2023 14:44:19 +0800
Subject: [PATCH] 删除

---
 src/main/java/com/gk/firework/Scheduls/WarningTask/MessageSendTask.java |  317 ++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 317 insertions(+), 0 deletions(-)

diff --git a/src/main/java/com/gk/firework/Scheduls/WarningTask/MessageSendTask.java b/src/main/java/com/gk/firework/Scheduls/WarningTask/MessageSendTask.java
new file mode 100644
index 0000000..b6ccef4
--- /dev/null
+++ b/src/main/java/com/gk/firework/Scheduls/WarningTask/MessageSendTask.java
@@ -0,0 +1,317 @@
+package com.gk.firework.Scheduls.WarningTask;
+
+import com.alibaba.fastjson.JSONObject;
+import com.gk.firework.Domain.*;
+import com.gk.firework.Domain.Utils.HttpUtils;
+import com.gk.firework.Domain.Utils.StringUtils;
+import com.gk.firework.Domain.Vo.WarnContentVo;
+import com.gk.firework.Service.*;
+import org.apache.log4j.LogManager;
+import org.apache.log4j.Logger;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.scheduling.annotation.EnableScheduling;
+import org.springframework.scheduling.annotation.Scheduled;
+
+import java.io.UnsupportedEncodingException;
+import java.net.URLEncoder;
+import java.text.SimpleDateFormat;
+import java.util.*;
+
+
+@Configuration
+@EnableScheduling
+@ConditionalOnProperty(prefix = "scheduling",name = "enabled",havingValue = "true")
+public class MessageSendTask {
+    private Logger logger = LogManager.getLogger(MessageSendTask.class);
+    @Autowired
+    SmsLogService smsLogService;
+    @Autowired
+    WarnContentService warnContentService;
+    @Autowired
+    SaleOrderService saleOrderInfoService;
+    @Autowired
+    EnterpriseService enterpriseService;
+    @Autowired
+    UserService userService;
+    @Autowired
+    RegisterService registerService;
+
+    public static String key = "f89279278b739f972ed922fa708eafa0";
+    public final static String URL = "http://v.juhe.cn/sms/send";
+
+
+    @Scheduled(cron = "0/5 * * * * ?") //每隔5秒执行一次
+    private void EmailSend() throws UnsupportedEncodingException, InterruptedException {
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+        Date now = new Date();
+        Calendar calendar = Calendar.getInstance();
+        calendar.setTime(now);
+        calendar.add(Calendar.MINUTE, -10);
+        Date starttime = calendar.getTime();
+        String starttimeStr = sdf.format(starttime);
+        String endtimeStr = sdf.format(now);
+
+        //查询10分钟内需要发短信,但又没发送过的记录
+        List<WarnContentVo> warnContentInfoList = warnContentService.selectNeedMail(starttimeStr,endtimeStr);
+        if (warnContentInfoList.size() > 0) {
+            for (WarnContentVo warnContentInfo : warnContentInfoList){
+                if (warnContentInfo.getWarntype().equals("购买超量")){
+                    Long enterpriseid = saleOrderInfoService.selectByCustomer(warnContentInfo.getCustomid());
+                    List<String> mobiles = selectMobilesByEnterprise(enterpriseid);
+                    String content = "姓名:"+warnContentInfo.getPurchasename()+",身份证号:"+warnContentInfo.getIdcard()+" "+warnContentInfo.getWarncontent();
+                    String head = "";
+                    boolean issend = sendMessage(head,mobiles,content);
+                    if (issend){
+                        warnContentInfo.setIssend((byte)1);
+                        warnContentService.updateById(warnContentInfo);
+                    }
+                }else if (warnContentInfo.getWarntype().equals("库存超量")){
+                    List<String> mobiles = selectMobilesByEnterprise(warnContentInfo.getEnterpriseid());
+                    String content = "企业名称:"+warnContentInfo.getEnterprisename()+","+warnContentInfo.getWarncontent();
+                    String head = "";
+                    boolean issend = sendMessage(head,mobiles,content);
+                    if (issend){
+                        warnContentInfo.setIssend((byte)1);
+                        warnContentService.updateById(warnContentInfo);
+                    }
+                }
+            }
+        }
+    }
+
+    @Scheduled(cron = "0/5 * * * * ?") //每隔5秒执行一次
+    private void registerEmailSend() throws UnsupportedEncodingException {
+        List<RegisterInfo> registerInfos = registerService.needSendSmsList();
+        if (registerInfos.size() > 0){
+            for (RegisterInfo registerInfo : registerInfos){
+                String tplId;
+                if (registerInfo.getReviewresult().equals((byte)1)){
+                    tplId = "235091";
+                }else {
+                    tplId = "235094";
+                }
+                boolean isSend = sendSms(registerInfo.getEnterprisename(),registerInfo.getLegalpersonphone(),tplId);
+                if (isSend){
+                    registerInfo.setSmsat(new Date());
+                    registerInfo.setSmstimes(registerInfo.getSmstimes()+1);
+                    registerInfo.setIssms((byte)1);
+                    registerService.updateById(registerInfo);
+                }
+            }
+        }
+
+    }
+
+//    private boolean issendTest = false;
+//    @Scheduled(cron = "0/5 * * * * ?") //每隔5秒执行一次
+//    private void EmailSendTest() throws UnsupportedEncodingException, InterruptedException {
+//        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+//        Date now = new Date();
+//        Calendar calendar = Calendar.getInstance();
+//        calendar.setTime(now);
+//        calendar.add(Calendar.MINUTE, -10);
+//        Date starttime = calendar.getTime();
+//
+//        List<String> mobiles = new ArrayList<>();
+//        mobiles.add("15651251027");
+//        String content = "测试短信";
+//        String head = "";
+//        if (!issendTest){
+//            issendTest = sendMessage(head,mobiles,content);
+//        }
+//    }
+
+
+
+    private List<String> selectMobilesByEnterprise(Long enterpriseid) {
+        List<String> mobiles = new ArrayList<> ();
+        //先查直属监管部门,若不存在则再查上一级,直到查到对应监管部门用户
+        Enterprise enterprise = enterpriseService.getById(enterpriseid);
+        UserInfo userInfo = userService.selectSupervise(enterprise.getProvince(),enterprise.getCity(),enterprise.getDistrict(),enterprise.getStreet(),enterprise.getCommittee());
+        if (userInfo == null){
+            userInfo = userService.selectSupervise(enterprise.getProvince(),enterprise.getCity(),enterprise.getDistrict(),enterprise.getStreet(),null);
+            if (userInfo == null){
+                userInfo = userService.selectSupervise(enterprise.getProvince(),enterprise.getCity(),enterprise.getDistrict(),null,null);
+                if (userInfo == null){
+                    userInfo = userService.selectSupervise(enterprise.getProvince(),enterprise.getCity(),null,null,null);
+                    if (userInfo == null){
+                        userInfo = userService.selectSupervise(enterprise.getProvince(),null,null,null,null);
+                        if (userInfo == null){
+                            userInfo = userService.selectSupervise(null,null,null,null,null);
+                        }
+                    }
+                }
+            }
+        }
+        if (userInfo != null && StringUtils.isNotBlank(userInfo.getMobile())){
+            mobiles.add(userInfo.getMobile());
+        }
+        return mobiles;
+    }
+
+
+    public Boolean sendMessage(String head,List<String> mobiles,String content) throws UnsupportedEncodingException {
+        String url ="http://v.juhe.cn/sms/send";//请求接口地址
+        String tpl_id = "231913";
+        String dtype = "json";
+        String tpl_value = "#name#=" + head + "&#code#=" + content;
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+        SimpleDateFormat sdfstart = new SimpleDateFormat("yyyy-MM-dd 00:00:00");
+        SimpleDateFormat sdfend = new SimpleDateFormat("yyyy-MM-dd 23:59:59");
+        Date now = new Date();
+        String starttime  = sdfstart.format(now);
+        String endtime = sdfend.format(now);
+
+        Calendar calendar = Calendar.getInstance();
+        calendar.setTime(now);
+        calendar.add(Calendar.HOUR_OF_DAY, -1);
+        Date onehour = calendar.getTime();
+        String onehourstart = sdf.format(onehour);
+        String onehourend = sdf.format(now);
+
+        boolean issend = false;
+        for (String mobile : mobiles) {
+            /**运营商限制同1个号码同1个签名的内容1分钟内只能接收1条,10分钟3条,1小时内4条,一天20条,否则可能会被运营商屏蔽**/
+            SmsLogInfo smsLogInfo = smsLogService.selectByTel(mobile,starttime,endtime,(byte)2);
+            if (null != smsLogInfo && smsLogInfo.getTimes()>=20){
+                logger.error("手机号:" + mobile + ",在时间为" + sdf.format(now) + ",当天已发出20条,无法继续发送");
+                continue;
+            }
+            SmsLogInfo smsLogInfoHour = smsLogService.selectByTel(mobile,onehourstart,onehourend,(byte)1);
+            if (null != smsLogInfoHour && smsLogInfoHour.getTimes()>=4){
+                logger.error("手机号:" + mobile + ",在时间为" + sdf.format(now) + ",本小时已发出4条,无法继续发送");
+                continue;
+            }
+            String respnse = null;
+            Map params = new HashMap();//请求参数
+            params.put("mobile", mobile);//接收短信的手机号码
+            params.put("tpl_id", tpl_id);//短信模板ID,请参考个人中心短信模板设置
+            params.put("tpl_value", tpl_value);
+            params.put("key", key);//应用APPKEY(应用详细页查询)
+            params.put("dtype", dtype);//返回数据的格式,xml或json,默认json
+            try {
+                respnse = HttpUtils.net(url, params, "GET");
+                JSONObject jsonResult = JSONObject.parseObject(respnse);
+                String errorcode = jsonResult.getString("error_code");
+                String reason = jsonResult.getString("reason");
+                if (errorcode.equals("0")) {
+                    //增加发送次数
+                    JSONObject result = jsonResult.getJSONObject("result");
+                    Integer count = result.getInteger("count");
+                    if (null !=  smsLogInfo){
+                        smsLogInfo.setTimes(smsLogInfo.getTimes()+count);
+                        smsLogService.updateById(smsLogInfo);
+                    }else {
+                        SmsLogInfo smsLogInfo1 = new SmsLogInfo();
+                        smsLogInfo1.setMobile(mobile);
+                        smsLogInfo1.setSendtime(now);
+                        smsLogInfo1.setTimes(count);
+                        smsLogInfo1.setType((byte)2);
+                        smsLogService.save(smsLogInfo1);
+                    }
+                    issend = true;
+                    if (null !=  smsLogInfoHour){
+                        smsLogInfoHour.setTimes(smsLogInfoHour.getTimes()+count);
+                        smsLogService.updateById(smsLogInfoHour);
+                    }else {
+                        SmsLogInfo smsLogInfo1 = new SmsLogInfo();
+                        smsLogInfo1.setMobile(mobile);
+                        smsLogInfo1.setSendtime(now);
+                        smsLogInfo1.setTimes(count);
+                        smsLogInfo1.setType((byte)1);
+                        smsLogService.save(smsLogInfo1);
+                    }
+                } else {
+                    logger.error("手机号:" + mobile + ",在时间为" + sdf.format(now) + "发送短信失败,原因为:" + reason);
+                }
+            } catch (Exception e) {
+                e.printStackTrace();
+            }
+        }
+        return issend;
+    }
+
+    public Boolean sendSms(String head, String mobile, String tplId) throws UnsupportedEncodingException {
+        String dtype = "json";
+        String tplValue = "#name#=" + head;
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+        SimpleDateFormat sdfstart = new SimpleDateFormat("yyyy-MM-dd 00:00:00");
+        SimpleDateFormat sdfend = new SimpleDateFormat("yyyy-MM-dd 23:59:59");
+        Date now = new Date();
+        String starttime  = sdfstart.format(now);
+        String endtime = sdfend.format(now);
+
+        Calendar calendar = Calendar.getInstance();
+        calendar.setTime(now);
+        calendar.add(Calendar.HOUR_OF_DAY, -1);
+        Date onehour = calendar.getTime();
+        String onehourstart = sdf.format(onehour);
+        String onehourend = sdf.format(now);
+
+        boolean isSend = false;
+
+        /** 运营商限制同1个号码同1个签名的内容1分钟内只能接收1条,10分钟3条,1小时内4条,一天20条,否则可能会被运营商屏蔽 **/
+        SmsLogInfo smsLogInfo = smsLogService.selectByTel(mobile,starttime,endtime,(byte)2);
+        if (null != smsLogInfo && smsLogInfo.getTimes()>= 20){
+            logger.error("手机号:" + mobile + ",在时间为" + sdf.format(now) + ",当天已发出20条,无法继续发送");
+            return false;
+        }
+        SmsLogInfo smsLogInfoHour = smsLogService.selectByTel(mobile,onehourstart,onehourend,(byte)1);
+        if (null != smsLogInfoHour && smsLogInfoHour.getTimes()>= 4){
+            logger.error("手机号:" + mobile + ",在时间为" + sdf.format(now) + ",本小时已发出4条,无法继续发送");
+            return false;
+        }
+        String response;
+        Map params = new HashMap();//请求参数
+        params.put("mobile", mobile);//接收短信的手机号码
+        params.put("tpl_id", tplId);//短信模板ID,请参考个人中心短信模板设置
+        params.put("tpl_value", tplValue);
+        params.put("key", key);//应用APPKEY(应用详细页查询)
+        params.put("dtype", dtype);//返回数据的格式,xml或json,默认json
+        try {
+            response = HttpUtils.net(URL, params, "GET");
+            JSONObject jsonResult = JSONObject.parseObject(response);
+            String errorcode = jsonResult.getString("error_code");
+            String reason = jsonResult.getString("reason");
+            if (errorcode.equals("0")) {
+                //增加发送次数
+                JSONObject result = jsonResult.getJSONObject("result");
+                Integer count = result.getInteger("count");
+                if (null !=  smsLogInfo){
+                    smsLogInfo.setTimes(smsLogInfo.getTimes()+count);
+                    smsLogService.updateById(smsLogInfo);
+                }else {
+                    SmsLogInfo smsLogInfo1 = new SmsLogInfo();
+                    smsLogInfo1.setMobile(mobile);
+                    smsLogInfo1.setSendtime(now);
+                    smsLogInfo1.setTimes(count);
+                    smsLogInfo1.setType((byte)2);
+                    smsLogService.save(smsLogInfo1);
+                }
+                isSend = true;
+                if (null !=  smsLogInfoHour){
+                    smsLogInfoHour.setTimes(smsLogInfoHour.getTimes()+count);
+                    smsLogService.updateById(smsLogInfoHour);
+                }else {
+                    SmsLogInfo smsLogInfo1 = new SmsLogInfo();
+                    smsLogInfo1.setMobile(mobile);
+                    smsLogInfo1.setSendtime(now);
+                    smsLogInfo1.setTimes(count);
+                    smsLogInfo1.setType((byte)1);
+                    smsLogService.save(smsLogInfo1);
+                }
+            } else {
+                logger.error("手机号:" + mobile + ",在时间为" + sdf.format(now) + "发送短信失败,原因为:" + reason);
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return isSend;
+    }
+
+
+
+
+}

--
Gitblit v1.9.2