diff --git a/mallinkService/src/main/java/com/simple/schedule/SchedulingConfig.java b/mallinkService/src/main/java/com/simple/schedule/SchedulingConfig.java new file mode 100644 index 000000000..546c72ae6 --- /dev/null +++ b/mallinkService/src/main/java/com/simple/schedule/SchedulingConfig.java @@ -0,0 +1,117 @@ +package com.simple.schedule; + +import com.alibaba.fastjson.JSONObject; +import com.simple.common.IdWorker; +import com.simple.common.Result; +import com.simple.common.ResultData; +import com.simple.domain.po.WxMsg; +import com.simple.domain.po.WxMsgConfig; +import com.simple.mapper.WxMsgConfigMapper; +import com.simple.mapper.WxMsgMapper; +import com.simple.utils.*; +import org.apache.log4j.Logger; +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; + +import java.util.*; + +@Configuration +@EnableScheduling +public class SchedulingConfig { + + private final Logger logger = Logger.getLogger(SchedulingConfig.class); + + + @Autowired + private WxMsgMapper wxMsgMapper; + + @Autowired + private WxMsgConfigMapper wxMsgConfigMapper; + + + @Scheduled(cron = "0 1 * * * ?") // 每小时第一分钟执行 + public void sendmsgschedule() { + + logger.info("sendmsg定时任务启动"); + + String systemTime = DateUtils.getSystemTime("yyyy-MM-dd HH:00:00"); + WxMsg wxMsg = new WxMsg(); + wxMsg.setIsright(0); + wxMsg.setSendtime(systemTime); + List list = wxMsgMapper.findList(wxMsg); + + for(WxMsg msg:list){ + sendmsg(msg); + } + + logger.info("sendmsg定时任务结束"); + } + + public void sendmsg(WxMsg wxMsg){ + //从短信配置中查询密钥 bid 等信息 + WxMsgConfig wxMsgConfig = new WxMsgConfig(); + wxMsgConfig.setTenantId("1"); + List wxMsgConfigs = wxMsgConfigMapper.findList(wxMsgConfig); + if (wxMsgConfigs.size() == 0) return; + wxMsgConfig = wxMsgConfigs.get(0); + + String secret = wxMsgConfig.getSecret(); + String bid = wxMsgConfig.getBid(); + String publickey = wxMsgConfig.getPublickey(); + + String phone = wxMsg.getPhones(); + String signature = wxMsg.getSignature(); + String msg = wxMsg.getMsg(); + String notifyUrl = wxMsgConfig.getNotifyurl(); + TreeMap message = new TreeMap<>(); + message.put("bid", bid); + message.put("phone", phone); + message.put("signature", signature); + message.put("msg", msg); + message.put("notify_url", notifyUrl); + + StringBuilder sb = new StringBuilder(); + Set> entries = message.entrySet(); + for (Map.Entry entry : entries) { + sb.append(entry.getKey()).append("=").append(entry.getValue()); + } + sb.append("&secret=").append(secret); + String sign = HMACSHA256.sha256_HMAC(sb.toString(), secret); + message.put("sign", sign.toUpperCase()); + + String str32 = "198b02e8fd704e96198b02e8fd704e96"; + String iv = "198b02e8fd704e96"; + + Map params = new HashMap<>(); + params.put("iv", iv); + params.put("bid", bid); + + try { + String data = AesUtil.AESEncode(str32, JSONObject.toJSONString(message), iv); + String sc = RsaUtil.RSAEncode(str32.getBytes(), publickey); + params.put("data", data); + params.put("sc", sc); + } catch (Exception e) { + e.printStackTrace(); + } + + String requestUrl = "https://webapp.wiwide.com/apisms/send"; + String result = HttpUtil.doPost(requestUrl, params); + JSONObject jsonObjectResult = JSONObject.parseObject(result); + String ret = jsonObjectResult.get("ret").toString(); + + if (ret.equals("1")) { + wxMsg.setSendstatus(1); + } else { + wxMsg.setSendstatus(0); + } + + wxMsg.setStatus(1); + wxMsgMapper.updateByPrimaryKeySelective(wxMsg); + + } + + +} \ No newline at end of file