package com.flow.controller; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.flow.mapper.CardMapper; import com.flow.mapper.CompanyMapper; import com.flow.mapper.DuanxinlogMapper; import com.flow.mapper.TbFuwuqiMapper; import com.flow.pojo.Card; import com.flow.pojo.Company; import com.flow.pojo.Duanxinlog; import com.flow.pojo.TbFuwuqi; import com.flow.service.DuanxinlogService; import com.flow.service.TbFuwuqiService; import com.flow.util.DESUtil; import com.flow.util.result; import com.flow.util.resultutil; import com.github.pagehelper.PageInfo; import com.tencentcloudapi.common.Credential; import com.tencentcloudapi.common.profile.ClientProfile; import com.tencentcloudapi.common.profile.HttpProfile; import com.tencentcloudapi.sms.v20210111.SmsClient; import com.tencentcloudapi.sms.v20210111.models.SendSmsRequest; import com.tencentcloudapi.sms.v20210111.models.SendSmsResponse; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import java.text.SimpleDateFormat; import java.util.Date; import java.util.List; @RestController @RequestMapping({"/hxzk"}) @Component public class DuanxinlogController { private String SecretId = "AKIDrjZOI4e6KLZu9FAsSRN8eOwSt52lbMBz"; private String SecretKey = "xnRtHUL3YqdMyOLVSBjKkz1pQoxujS4d"; @Autowired DuanxinlogService duanxinlogService; @Autowired CardMapper cardMapper; @Autowired TbFuwuqiMapper tbFuwuqiMapper; @Autowired DuanxinlogMapper duanxinlogMapper; @Autowired TbFuwuqiService tbFuwuqiService; @Autowired CompanyMapper companyMapper; @GetMapping({"findDuanxinlog"}) result> findDuanxinlog(Integer page, Integer limit) { PageInfo cz = this.duanxinlogService.FindDuanxinlog(page, limit); return resultutil.returnSuccess(cz.getTotal(), cz.getList()); } /* * 函数名 : smsfuwuqi * 说明 : 服务器 查询所有服务器数据 根据公司名称查询电话 使用当前时间减去结束时间 使用号码查询短信表取出发送日期,如果当前日期大于发送日期 发送短信 * 返回值 : 无 * 作者 : 王飞 // * 日期 : 2024年2月28日 */ // @EnableScheduling // @Scheduled(cron = "*/10 * * * * ?")//测试10一次 // @Scheduled(cron = "0 46 17 * * ?") @Scheduled(cron = "0 0 */1 * * ?")//一小时执行一次 public void smsfuwuqi() throws Exception { System.out.println("服务器定时器执行============》》》》》》》》》》》》》》》》"); QueryWrapper queryWrapper1 = new QueryWrapper(); queryWrapper1.eq("none", "0"); List fuwuqiList = (tbFuwuqiMapper).selectList(queryWrapper1); for (int i = 0; i < fuwuqiList.size(); i++) { QueryWrapper queryWrapper3 = new QueryWrapper(); queryWrapper3.eq("none", "0"); queryWrapper3.eq("companyName", fuwuqiList.get(i).getCompany()); Company companyList = (companyMapper).selectOne(queryWrapper3); SimpleDateFormat date2 = new SimpleDateFormat("yyyy-MM-dd"); Date date = new Date(); Date endDay = date2.parse(fuwuqiList.get(i).getEnddate());//结束时间 Long starTime = date.getTime(); Long endTime = endDay.getTime(); Long num11 = endTime - starTime;//时间戳 //不足一天的算作一天,因此在到期天数上加1 if (+num11 / 24 / 60 / 60 / 1000 == 19 | +num11 / 24 / 60 / 60 / 1000 == 9 | +num11 / 24 / 60 / 60 / 1000 == 4 | +num11 / 24 / 60 / 60 / 1000 == 0) { String dispatchDate = this.duanxinlogService.userdate(fuwuqiList.get(i).getServername()); SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd"); String dtext = formatter.format(date); if (dispatchDate == null || !dtext.equals(dispatchDate)) { // 实例化一个认证对象,入参需要传入腾讯云账户 SecretId 和 SecretKey,此处还需注意密钥对的保密 // 代码泄露可能会导致 SecretId 和 SecretKey 泄露,并威胁账号下所有资源的安全性。以下代码示例仅供参考,建议采用更安全的方式来使用密钥,请参见:https://cloud.tencent.com/document/product/1278/85305 // 密钥可前往官网控制台 https://console.cloud.tencent.com/cam/capi 进行获取 Credential cred = new Credential(SecretId, SecretKey); // 实例化一个http选项,可选的,没有特殊需求可以跳过 HttpProfile httpProfile = new HttpProfile(); httpProfile.setEndpoint("sms.tencentcloudapi.com"); // 实例化一个client选项,可选的,没有特殊需求可以跳过 ClientProfile clientProfile = new ClientProfile(); clientProfile.setHttpProfile(httpProfile); // 实例化要请求产品的client对象,clientProfile是可选的 SmsClient client = new SmsClient(cred, "ap-beijing", clientProfile); // 实例化一个请求对象,每个接口都会对应一个request对象 SendSmsRequest req = new SendSmsRequest(); // String[] phoneNumberSet1 = {"18701153496"}; String[] phoneNumberSet1 = {DESUtil.decrypt(companyList.getLoginphone(), DESUtil.key)}; req.setPhoneNumberSet(phoneNumberSet1); req.setSmsSdkAppId("1400838975"); req.setSignName("北京华星北斗智控"); req.setTemplateId("2100321"); // String[] templateParamSet1 = {String.valueOf(+num11 / 24 / 60 / 60 / 1000)}; String[] templateParamSet1 = {String.valueOf("您有服务器将于:" + fuwuqiList.get(i).getEnddate()+"到期,")}; req.setTemplateParamSet(templateParamSet1); // 返回的resp是一个SendSmsResponse的实例,与请求对象对应 SendSmsResponse resp = client.SendSms(req); // 输出json格式的字符串回包 Duanxinlog duanxinlog = new Duanxinlog(); duanxinlog.setIdentification(fuwuqiList.get(i).getServername()); duanxinlog.setReceiver(fuwuqiList.get(i).getCompany()); duanxinlog.setNumber(DESUtil.decrypt(companyList.getLoginphone(), DESUtil.key)); duanxinlog.setNumber(DESUtil.decrypt(companyList.getLoginphone(), DESUtil.key)); duanxinlog.setContent("尊敬的用户,您好!您有服务器将于"+fuwuqiList.get(i).getEnddate()+"到期,为避免影响您的正常使用请及时续费,您可登录华星智控公司物联网管理平台查询详情续费,如有疑问可咨询我公司客服人员,祝您生活愉快!"); this.duanxinlogService.addDuanxinlog(duanxinlog); } } } } /* * 函数名 : sms * 说明 : 查询所有卡号数据 使用当前时间减去结束时间 使用号码查询短信表取出发送日期,如果当前日期大于发送日期 发送短信 发送短信 * 返回值 : 无 * 作者 : 王飞 // * 日期 : 2024年2月28日 */ // @EnableScheduling // @Scheduled(cron = "*/10 * * * * ?")//测试10秒执行一次 // @Scheduled(cron = "0 0 16 * * ?") @Scheduled(cron = "0 0 */1 * * ?")//一小时执行一次 public void sms() throws Exception { System.out.println("短信定时器执行============》》》》》》》》》》》》》》》》"); //查询数据库中所有的引擎数据 QueryWrapper queryWrapper = new QueryWrapper(); queryWrapper.eq("none", "0"); // queryWrapper.eq("num", "8"); List cardList = (cardMapper).selectList(queryWrapper); for (int i = 0; i < cardList.size(); i++) { QueryWrapper queryWrapper3 = new QueryWrapper(); queryWrapper3.eq("none", "0"); queryWrapper3.eq("companyName", cardList.get(i).getCompany()); Company companyList = new Company(); companyList = (companyMapper).selectOne(queryWrapper3); if (companyList == null) { QueryWrapper queryWrapper4 = new QueryWrapper(); queryWrapper4.eq("none", "0"); queryWrapper4.eq("companyabbname", cardList.get(i).getCompany()); companyList = (companyMapper).selectOne(queryWrapper4); } SimpleDateFormat date2 = new SimpleDateFormat("yyyy-MM-dd"); Date date = new Date(); Date endDay = date2.parse(cardList.get(i).getEnddate());//结束时间 Long starTime = date.getTime(); Long endTime = endDay.getTime(); Long num11 = endTime - starTime;//时间戳 if (+num11 / 24 / 60 / 60 / 1000 == 19 | +num11 / 24 / 60 / 60 / 1000 == 9 | +num11 / 24 / 60 / 60 / 1000 == 4 | +num11 / 24 / 60 / 60 / 1000 == 0) { String dispatchDate = this.duanxinlogService.userdate(cardList.get(i).getCardnumber()); // String dispatchDate = this.duanxinlogService.userdate(cardList.get(i).getCardnumber()); SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd"); String dtext = formatter.format(date); if (dispatchDate == null || !dtext.equals(dispatchDate)) { String randomNumber = new String(); // 实例化一个认证对象,入参需要传入腾讯云账户 SecretId 和 SecretKey,此处还需注意密钥对的保密 // 代码泄露可能会导致 SecretId 和 SecretKey 泄露,并威胁账号下所有资源的安全性。以下代码示例仅供参考,建议采用更安全的方式来使用密钥,请参见:https://cloud.tencent.com/document/product/1278/85305 // 密钥可前往官网控制台 https://console.cloud.tencent.com/cam/capi 进行获取 Credential cred = new Credential(SecretId, SecretKey); // 实例化一个http选项,可选的,没有特殊需求可以跳过 HttpProfile httpProfile = new HttpProfile(); httpProfile.setEndpoint("sms.tencentcloudapi.com"); // 实例化一个client选项,可选的,没有特殊需求可以跳过 ClientProfile clientProfile = new ClientProfile(); clientProfile.setHttpProfile(httpProfile); // 实例化要请求产品的client对象,clientProfile是可选的 SmsClient client = new SmsClient(cred, "ap-beijing", clientProfile); // 实例化一个请求对象,每个接口都会对应一个request对象 SendSmsRequest req = new SendSmsRequest(); // String[] phoneNumberSet1 = {cardList.get(i).getCardnumber()}; String[] phoneNumberSet1 = {DESUtil.decrypt(companyList.getLoginphone(), DESUtil.key)}; // String[] phoneNumberSet1 = {"18701153496"}; req.setPhoneNumberSet(phoneNumberSet1); req.setSmsSdkAppId("1400838975"); req.setSignName("北京华星北斗智控"); req.setTemplateId("2100321"); // String[] templateParamSet1 = {String.valueOf(+num11 / 24 / 60 / 60 / 1000)}; String[] templateParamSet1 = {String.valueOf("您有流量卡将于:" + cardList.get(i).getEnddate()+"到期,")}; req.setTemplateParamSet(templateParamSet1); // 返回的resp是一个SendSmsResponse的实例,与请求对象对应 SendSmsResponse resp = client.SendSms(req); // 输出json格式的字符串回包 Duanxinlog duanxinlog = new Duanxinlog(); duanxinlog.setIdentification(cardList.get(i).getCardnumber()); duanxinlog.setReceiver(cardList.get(i).getCompany()); duanxinlog.setNumber(phoneNumberSet1[0]); duanxinlog.setContent("尊敬的用户,您好!您有流量卡将于"+cardList.get(i).getEnddate()+"到期,为避免影响您的正常使用请及时续费,您可登录华星智控公司物联网管理平台查询详情续费,如有疑问可咨询我公司客服人员,祝您生活愉快!" ); this.duanxinlogService.addDuanxinlog(duanxinlog); } } } } }