package com.doumee.task;
|
|
|
import com.alibaba.fastjson.JSONObject;
|
import com.doumee.biz.system.SystemDictDataBiz;
|
import com.doumee.core.wx.WxPayProperties;
|
import com.doumee.dao.system.model.SystemDictData;
|
import com.doumee.service.business.BookingsService;
|
import org.apache.http.client.methods.CloseableHttpResponse;
|
import org.apache.http.client.methods.HttpGet;
|
import org.apache.http.client.utils.URIBuilder;
|
import org.apache.http.impl.client.CloseableHttpClient;
|
import org.apache.http.impl.client.HttpClients;
|
import org.apache.http.util.EntityUtils;
|
import org.apache.shiro.util.ThreadContext;
|
import org.apache.shiro.web.mgt.DefaultWebSecurityManager;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Value;
|
import org.springframework.scheduling.annotation.EnableScheduling;
|
import org.springframework.scheduling.annotation.Scheduled;
|
import org.springframework.stereotype.Component;
|
|
import java.io.IOException;
|
import java.net.URI;
|
import java.util.Date;
|
import java.util.Map;
|
|
/**
|
* 定时任务
|
* @author jiangping
|
* @date 2021-10-10 14:40:35
|
* https://www.bejson.com/othertools/cron/ cron 表达式生成地址
|
*/
|
@Component
|
@EnableScheduling
|
public class ScheduleTool {
|
|
@Autowired
|
private BookingsService bookingsService;
|
|
@Autowired
|
private WxPayProperties wxPayProperties;
|
|
@Autowired
|
private SystemDictDataBiz systemDictDataBiz;
|
/**
|
* 是否开发者
|
*/
|
@Value("${timing}")
|
private Boolean timing;
|
|
|
/**
|
* 缓存省市区
|
* @throws Exception
|
*/
|
@Scheduled(fixedDelay=24*60*60*1000)
|
public void cacheCampus() throws Exception {
|
}
|
/**
|
* 每天凌晨重置所有订单code类初始值
|
* @throws Exception
|
*/
|
@Scheduled(cron="0 0 0 * * ?")
|
public void resetOrderCodes() throws Exception {
|
}
|
|
|
/**
|
* 定时发送通知 参会通知 与 会议开始通知(发起人)
|
* @throws Exception
|
*/
|
@Scheduled(fixedDelay=60*1000)
|
public void sendNotice(){
|
bookingsService.sendBookingsNotice();
|
}
|
|
/**
|
* 更新微信 ACCESS_TOKEN
|
*/
|
@Scheduled(fixedDelay = 1000L * 60L * 3L)
|
public void updAccessToken(){
|
DefaultWebSecurityManager manager = new DefaultWebSecurityManager();
|
ThreadContext.bind(manager);
|
|
String appId = wxPayProperties.getAppId();
|
String appSecret = wxPayProperties.getAppSecret();
|
//生成微信token
|
String url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid="+appId+"&secret="+appSecret;
|
String response = doGet(url,null);
|
JSONObject json = JSONObject.parseObject(response);
|
SystemDictData systemDictData = new SystemDictData();
|
systemDictData.setId(106);
|
systemDictData.setCode(json.getString("access_token"));
|
systemDictData.setUpdateTime(new Date());
|
systemDictDataBiz.updateByIdNew(systemDictData);
|
}
|
|
|
/**
|
* 发送get请求
|
* @param url 请求URL
|
* @param param 请求参数 key:value url携带参数 或者无参可不填
|
* @return
|
*/
|
public String doGet(String url, Map<String, String> param) {
|
// 创建Httpclient对象
|
CloseableHttpClient httpclient = HttpClients.createDefault();
|
String resultString = "";
|
CloseableHttpResponse response = null;
|
try {
|
// 创建uri
|
URIBuilder builder = new URIBuilder(url);
|
if (param != null) {
|
for (String key : param.keySet()) {
|
builder.addParameter(key, param.get(key));
|
}
|
}
|
URI uri = builder.build();
|
// 创建http GET请求
|
HttpGet httpGet = new HttpGet(uri);
|
// 执行请求
|
response = httpclient.execute(httpGet);
|
// 判断返回状态是否为200
|
if (response.getStatusLine().getStatusCode() == 200) {
|
resultString = EntityUtils.toString(response.getEntity(), "UTF-8");
|
}
|
} catch (Exception e) {
|
e.printStackTrace();
|
} finally {
|
try {
|
if (response != null) {
|
response.close();
|
}
|
httpclient.close();
|
} catch (IOException e) {
|
e.printStackTrace();
|
}
|
}
|
return resultString;
|
}
|
|
}
|