定时任务优化

This commit is contained in:
wangshuai 2024-07-10 10:55:16 +08:00
parent f7f3da25ac
commit 12474b2b8e
12 changed files with 98 additions and 43 deletions

View File

@ -34,6 +34,14 @@ public class MeituanController {
return iMeituanService.cookieInfo(cookie); return iMeituanService.cookieInfo(cookie);
} }
@GetMapping("/refresh")
public R refresh(){
iMeituanService.getScore();
iMeituanService.getComments();
iMeituanService.getYestodayCount();
iMeituanService.orderInfoList();
return R.ok();
}
/** /**
* 批量获取订单 * 批量获取订单
* @return * @return

View File

@ -115,7 +115,7 @@ public class SecurityConfig
// 静态资源可匿名访问 // 静态资源可匿名访问
.antMatchers(HttpMethod.GET, "/", "/*.html", "/**/*.html", "/**/*.css", "/**/*.js", "/profile/**").permitAll() .antMatchers(HttpMethod.GET, "/", "/*.html", "/**/*.html", "/**/*.css", "/**/*.js", "/profile/**").permitAll()
.antMatchers("/swagger-ui.html", "/swagger-resources/**", "/webjars/**", "/*/api-docs", "/druid/**").permitAll() .antMatchers("/swagger-ui.html", "/swagger-resources/**", "/webjars/**", "/*/api-docs", "/druid/**").permitAll()
// .antMatchers("/mt/**","/ai/**").permitAll() .antMatchers("/mt/cookies").permitAll()
// 除上面外的所有请求全部需要鉴权认证 // 除上面外的所有请求全部需要鉴权认证
.anyRequest().authenticated(); .anyRequest().authenticated();

View File

@ -9,7 +9,8 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.util.Date; import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.List; import java.util.List;
/** /**
@ -59,25 +60,33 @@ public class RyTask {
/** /**
* 发送AI 1分钟 * 发送AI 1分钟
*
* @throws Exception * @throws Exception
*/ */
public void sendToAi() throws Exception { public void sendToAi() throws Exception {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm"); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");
BusOrderInfo orderInfo = new BusOrderInfo(); LocalDateTime t30 = LocalDateTime.now().minusMinutes(30);
List<BusOrderInfo> list = orderInfoService.selectBusOrderInfoList(orderInfo); LocalDateTime t10 = LocalDateTime.now().minusMinutes(10);
String t1 = t30.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm"));
String t2 = t10.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm"));
List<BusOrderInfo> list = orderInfoService.selectBusOrderInfoListToAi(t1, t2);
list.forEach(System.out::println);
for (BusOrderInfo busOrderInfo : list) { for (BusOrderInfo busOrderInfo : list) {
BusStoreInfo storeInfo = new BusStoreInfo(); BusStoreInfo storeInfo = new BusStoreInfo();
storeInfo.setStoreCode(busOrderInfo.getStoreCode()); storeInfo.setStoreCode(busOrderInfo.getStoreCode());
List<BusStoreInfo> tempStore = storeInfoService.selectBusStoreInfoList(storeInfo); List<BusStoreInfo> tempStore = storeInfoService.selectBusStoreInfoList(storeInfo);
if (tempStore.size() > 0){ if (tempStore.size() > 0) {
BusAgentInfo agentInfo = new BusAgentInfo(); BusAgentInfo agentInfo = new BusAgentInfo();
agentInfo.setAgentAccount(tempStore.get(0).getBindUser()); agentInfo.setAgentAccount(tempStore.get(0).getBindUser());
List<BusAgentInfo> agentInfoL = agentInfoService.selectBusAgentInfoList(agentInfo); List<BusAgentInfo> agentInfoL = agentInfoService.selectBusAgentInfoList(agentInfo);
if (agentInfoL.size() > 0) { if (agentInfoL.size() > 0) {
if(agentInfoL.get(0).getIntegral()<=0){continue;} if (agentInfoL.get(0).getIntegral() <= 0) {
}else continue; continue;
}else continue; }
} else continue;
} else continue;
BusOrderInfo temp = new BusOrderInfo(); BusOrderInfo temp = new BusOrderInfo();
temp.setPrivcyPhone(busOrderInfo.getPrivcyPhone()); temp.setPrivcyPhone(busOrderInfo.getPrivcyPhone());
@ -85,8 +94,7 @@ public class RyTask {
BusFifteenInfo fifteenInfo = new BusFifteenInfo(); BusFifteenInfo fifteenInfo = new BusFifteenInfo();
fifteenInfo.setCustomId(tempInfo.getCustomId()); fifteenInfo.setCustomId(tempInfo.getCustomId());
List<BusFifteenInfo> listInfo = fifteenInfoService.selectBusFifteenInfoList(fifteenInfo); List<BusFifteenInfo> listInfo = fifteenInfoService.selectBusFifteenInfoList(fifteenInfo);
if (new Date().getTime() >= sdf.parse(busOrderInfo.getCompleteTime()).getTime() + (10 * 60 * 1000) if (listInfo.size() == 0) {
&& listInfo.size() == 0) {
aiService.sendAiTask(busOrderInfo); aiService.sendAiTask(busOrderInfo);
} }
} }

View File

@ -61,4 +61,6 @@ public interface BusOrderInfoMapper
public int deleteBusOrderInfoByIds(Long[] ids); public int deleteBusOrderInfoByIds(Long[] ids);
int batchInsertOrder(@Param("list") List<BusOrderInfo> list); int batchInsertOrder(@Param("list") List<BusOrderInfo> list);
int batchupdateBusOrderInfo(@Param("lcs") List<BusOrderInfo> lcs); int batchupdateBusOrderInfo(@Param("lcs") List<BusOrderInfo> lcs);
List<BusOrderInfo> selectBusOrderInfoListToAi(@Param("t1") String t1,@Param("t2") String t2);
} }

View File

@ -58,4 +58,6 @@ public interface IBusOrderInfoService
* @return 结果 * @return 结果
*/ */
public int deleteBusOrderInfoById(Long id); public int deleteBusOrderInfoById(Long id);
List<BusOrderInfo> selectBusOrderInfoListToAi(String t1, String t2);
} }

View File

@ -8,11 +8,13 @@ import com.ruoyi.business.mapper.BusAgentInfoMapper;
import com.ruoyi.business.mapper.BusFifteenInfoMapper; import com.ruoyi.business.mapper.BusFifteenInfoMapper;
import com.ruoyi.business.service.*; import com.ruoyi.business.service.*;
import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.exception.ServiceException;
import com.ruoyi.common.utils.HttpClientUtilT; import com.ruoyi.common.utils.HttpClientUtilT;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.StringRedisTemplate; import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.scheduling.annotation.Async; import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.text.ParseException; import java.text.ParseException;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
@ -139,9 +141,11 @@ public class AiServiceImpl implements IAiService
fifteenInfo.setLastVisitTime(LocalDateTime.now().toString()); fifteenInfo.setLastVisitTime(LocalDateTime.now().toString());
fifteenInfoService.insertBusFifteenInfo(fifteenInfo); fifteenInfoService.insertBusFifteenInfo(fifteenInfo);
} else { } else if("20005".equals(jo.getString("code"))||"20006".equals(jo.getString("code"))) {
System.out.println("追加任务接口返回错误: " + jo.toString());
sendAiTask(busOrderInfo); sendAiTask(busOrderInfo);
} else {
// TODO: 2024/7/10 失败原因判断 是否继续循环
System.out.println("建立任务接口返回错误: " + jo.toString());
} }
} }
@ -208,12 +212,12 @@ public class AiServiceImpl implements IAiService
} }
@Override @Override
@Transactional
public synchronized void sendAiTask(BusOrderInfo busOrderInfo) { public synchronized void sendAiTask(BusOrderInfo busOrderInfo) {
// busOrderInfo.getPrivcyPhone().split(",")[0], busOrderInfo.getPrivcyPhone().split(",")[1] try {
String apiKey = Optional.ofNullable(redisTemplate.opsForValue().get("apiKey")).orElse(null); String apiKey = Optional.ofNullable(redisTemplate.opsForValue().get("apiKey")).orElse(null);
if (apiKey == null){ if (apiKey == null){
apiKey = login(); apiKey = login();
// apiKey = redisTemplate.opsForValue().get("apiKey");
} }
String dialTaskMainSn = Optional.ofNullable(redisTemplate.opsForValue().get("dialTaskMainSn")).orElse(null); String dialTaskMainSn = Optional.ofNullable(redisTemplate.opsForValue().get("dialTaskMainSn")).orElse(null);
if (dialTaskMainSn != null){ if (dialTaskMainSn != null){
@ -221,6 +225,17 @@ public class AiServiceImpl implements IAiService
} else { } else {
addAiTaskTest(apiKey,busOrderInfo); addAiTaskTest(apiKey,busOrderInfo);
} }
BusReturnVisitInfo returnVisitInfo = new BusReturnVisitInfo();
returnVisitInfo.setPhoneNumber(busOrderInfo.getPrivcyPhone());
List<BusReturnVisitInfo> list = returnVisitInfoService.selectBusReturnVisitInfoList(returnVisitInfo);
if(list.size() == 1){
returnVisitInfo.setId(list.get(0).getId());
returnVisitInfo.setReturnVisitTime(new Date());
returnVisitInfoService.updateBusReturnVisitInfo(returnVisitInfo);
}
}catch (Exception e){
System.out.println("建立接口返回错误: " + e.getMessage());
}
} }
private void addAiTaskTest(String apiKey, BusOrderInfo busOrderInfo) { private void addAiTaskTest(String apiKey, BusOrderInfo busOrderInfo) {
@ -250,9 +265,11 @@ public class AiServiceImpl implements IAiService
fifteenInfo.setLastVisitTime(LocalDateTime.now().toString()); fifteenInfo.setLastVisitTime(LocalDateTime.now().toString());
fifteenInfoService.insertBusFifteenInfo(fifteenInfo); fifteenInfoService.insertBusFifteenInfo(fifteenInfo);
} else { } else if("20005".equals(jo.getString("code"))||"20006".equals(jo.getString("code"))) {
System.out.println("建立任务接口返回错误: " + jo.toString());
sendAiTask(busOrderInfo); sendAiTask(busOrderInfo);
} else {
// TODO: 2024/7/10 失败原因判断 是否继续循环
System.out.println("建立任务接口返回错误: " + jo.toString());
} }
} }

View File

@ -90,4 +90,9 @@ public class BusOrderInfoServiceImpl implements IBusOrderInfoService
{ {
return busOrderInfoMapper.deleteBusOrderInfoById(id); return busOrderInfoMapper.deleteBusOrderInfoById(id);
} }
@Override
public List<BusOrderInfo> selectBusOrderInfoListToAi(String t1, String t2) {
return busOrderInfoMapper.selectBusOrderInfoListToAi(t1,t2);
}
} }

View File

@ -38,6 +38,7 @@ import org.apache.http.util.EntityUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.StringRedisTemplate; import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.io.IOException; import java.io.IOException;
import java.net.URLEncoder; import java.net.URLEncoder;
@ -70,6 +71,8 @@ public class MeituanServiceImpl implements IMeituanService {
@Autowired @Autowired
private IBusStoreDayInfoService busStoreDayInfoService; private IBusStoreDayInfoService busStoreDayInfoService;
@Autowired @Autowired
private IBusAgentInfoService iBusAgentInfoService;
@Autowired
private ProxyProperties proxyProperties; private ProxyProperties proxyProperties;
@Autowired @Autowired
@ -82,13 +85,16 @@ public class MeituanServiceImpl implements IMeituanService {
* @return * @return
*/ */
@Override @Override
@Transactional(rollbackFor = Exception.class)
public R cookieInfo(SysCookie cookie) { public R cookieInfo(SysCookie cookie) {
LoginUser loginUser = SecurityUtils.getLoginUser();
BusStoreInfo storeInfo = new BusStoreInfo(); BusStoreInfo storeInfo = new BusStoreInfo();
storeInfo.setStoreCode(valueFromCookie("wmPoiId", cookie.getCookie())); storeInfo.setStoreCode(valueFromCookie("wmPoiId", cookie.getCookie()));
List<BusStoreInfo> list = busStoreInfoService.selectBusStoreInfoList(storeInfo); List<BusStoreInfo> list = busStoreInfoService.selectBusStoreInfoList(storeInfo);
BusAgentInfo busAgentInfo = new BusAgentInfo();
busAgentInfo.setAgentAccount(cookie.getUserName());
List<BusAgentInfo> list1 = iBusAgentInfoService.selectBusAgentInfoList(busAgentInfo);
if (list.size() == 0) { if (list.size() == 0) {
storeInfo.setBindId(loginUser.getUserId()); storeInfo.setBindId(list1.get(0).getId());
storeInfo.setBindUser(cookie.getUserName()); storeInfo.setBindUser(cookie.getUserName());
storeInfo.setStoreAccount(cookie.getAccount()); storeInfo.setStoreAccount(cookie.getAccount());
storeInfo.setStorePassword(cookie.getPassword()); storeInfo.setStorePassword(cookie.getPassword());
@ -116,8 +122,8 @@ public class MeituanServiceImpl implements IMeituanService {
} }
storeInfo.setId(list.get(0).getId()); storeInfo.setId(list.get(0).getId());
storeInfo.setUpdateTime(new Date()); storeInfo.setUpdateTime(new Date());
storeInfo.setUpdateId(loginUser.getUserId()); storeInfo.setUpdateId(list1.get(0).getId());
storeInfo.setUpdateUser(loginUser.getUsername()); storeInfo.setUpdateUser(cookie.getUserName());
storeInfo.setStoreAccount(cookie.getAccount()); storeInfo.setStoreAccount(cookie.getAccount());
storeInfo.setStorePassword(cookie.getPassword()); storeInfo.setStorePassword(cookie.getPassword());
storeInfo.setStoreName(cookie.getWmPoiName()); storeInfo.setStoreName(cookie.getWmPoiName());
@ -136,6 +142,7 @@ public class MeituanServiceImpl implements IMeituanService {
* @return * @return
*/ */
@Override @Override
@Transactional(rollbackFor = Exception.class)
public String getComments() { public String getComments() {
BusStoreInfo busStoreInfo = new BusStoreInfo(); BusStoreInfo busStoreInfo = new BusStoreInfo();
List<BusStoreInfo> busStoreInfoList = busStoreInfoMapper.selectBusStoreInfoList(busStoreInfo); List<BusStoreInfo> busStoreInfoList = busStoreInfoMapper.selectBusStoreInfoList(busStoreInfo);
@ -153,6 +160,7 @@ public class MeituanServiceImpl implements IMeituanService {
} }
@Override @Override
@Transactional(rollbackFor = Exception.class)
public String getYestodayCount() { public String getYestodayCount() {
BusStoreInfo busStoreInfo = new BusStoreInfo(); BusStoreInfo busStoreInfo = new BusStoreInfo();
List<BusStoreInfo> busStoreInfoList = busStoreInfoMapper.selectBusStoreInfoList(busStoreInfo); List<BusStoreInfo> busStoreInfoList = busStoreInfoMapper.selectBusStoreInfoList(busStoreInfo);
@ -175,6 +183,7 @@ public class MeituanServiceImpl implements IMeituanService {
* @return * @return
*/ */
@Override @Override
@Transactional(rollbackFor = Exception.class)
public String getScore() { public String getScore() {
BusStoreInfo busStoreInfo = new BusStoreInfo(); BusStoreInfo busStoreInfo = new BusStoreInfo();
List<BusStoreInfo> busStoreInfoList = busStoreInfoMapper.selectBusStoreInfoList(busStoreInfo); List<BusStoreInfo> busStoreInfoList = busStoreInfoMapper.selectBusStoreInfoList(busStoreInfo);
@ -197,6 +206,7 @@ public class MeituanServiceImpl implements IMeituanService {
* @return * @return
*/ */
@Override @Override
@Transactional(rollbackFor = Exception.class)
public String orderInfoList() { public String orderInfoList() {
LocalDateTime now = LocalDateTime.now(); LocalDateTime now = LocalDateTime.now();
BusStoreInfo busStoreInfo = new BusStoreInfo(); BusStoreInfo busStoreInfo = new BusStoreInfo();
@ -270,6 +280,7 @@ public class MeituanServiceImpl implements IMeituanService {
* @return * @return
*/ */
@Override @Override
@Transactional(rollbackFor = Exception.class)
public R orderInfo(String wmPoiId, String date, String cookie) { public R orderInfo(String wmPoiId, String date, String cookie) {
int pageNum = 1; int pageNum = 1;
@ -394,6 +405,7 @@ public class MeituanServiceImpl implements IMeituanService {
* @return * @return
*/ */
@Override @Override
@Transactional(rollbackFor = Exception.class)
public void priPhoneInfo(List<BusOrderInfo> ls, String cookie) { public void priPhoneInfo(List<BusOrderInfo> ls, String cookie) {
for (BusOrderInfo orderInfo : ls) { for (BusOrderInfo orderInfo : ls) {
String url = "https://e.waimai.meituan.com/v2/order/history/r/search/ajax"; String url = "https://e.waimai.meituan.com/v2/order/history/r/search/ajax";
@ -464,7 +476,7 @@ public class MeituanServiceImpl implements IMeituanService {
returnVisitInfo.setPhoneEndNumber(busOrderInfo.getRecipientPhone()); returnVisitInfo.setPhoneEndNumber(busOrderInfo.getRecipientPhone());
returnVisitInfo.setPhoneNumber(busOrderInfo.getPrivcyPhone()); returnVisitInfo.setPhoneNumber(busOrderInfo.getPrivcyPhone());
//returnVisitInfo.setFinishTime(busOrderInfo.getCompleteTime()); todo //returnVisitInfo.setFinishTime(busOrderInfo.getCompleteTime()); todo
returnVisitInfo.setReturnVisitTime(new Date()); // returnVisitInfo.setReturnVisitTime(new Date());
// busReturnVisitInfoMapper.insertBusReturnVisitInfo(returnVisitInfo); // busReturnVisitInfoMapper.insertBusReturnVisitInfo(returnVisitInfo);
lss.add(returnVisitInfo); lss.add(returnVisitInfo);
} }
@ -488,6 +500,7 @@ public class MeituanServiceImpl implements IMeituanService {
* @return * @return
*/ */
@Override @Override
@Transactional(rollbackFor = Exception.class)
public String mtgsigInfo(String orderId, String regionId, String regionVersion) { public String mtgsigInfo(String orderId, String regionId, String regionVersion) {
CloseableHttpClient httpClient = proxyHttpClient(); CloseableHttpClient httpClient = proxyHttpClient();
String url = "http://43.140.224.18:12000/get_mtgsig"; String url = "http://43.140.224.18:12000/get_mtgsig";
@ -527,6 +540,7 @@ public class MeituanServiceImpl implements IMeituanService {
* *
* @return * @return
*/ */
@Transactional(rollbackFor = Exception.class)
private Boolean getScoreOne(BusStoreInfo store) { private Boolean getScoreOne(BusStoreInfo store) {
CloseableHttpClient httpClient = proxyHttpClient(); CloseableHttpClient httpClient = proxyHttpClient();
String wmPoiId = valueFromCookie("wmPoiId", store.getStoreCookie()); String wmPoiId = valueFromCookie("wmPoiId", store.getStoreCookie());
@ -579,6 +593,7 @@ public class MeituanServiceImpl implements IMeituanService {
* *
* @return * @return
*/ */
@Transactional(rollbackFor = Exception.class)
private Boolean getCommentsOne(BusStoreInfo store) { private Boolean getCommentsOne(BusStoreInfo store) {
LocalDateTime now = LocalDateTime.now(); LocalDateTime now = LocalDateTime.now();

View File

@ -45,6 +45,14 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
where id = #{id} where id = #{id}
</select> </select>
<select id="selectBusOrderInfoListToAi" resultMap="BusOrderInfoResult">
select a.* from bus_order_info a
LEFT JOIN bus_return_visit_info b on b.phone_number=a.privcy_phone
where b.return_visit_time is null
<if test="t1 != null and t1 != ''"> and a.complete_time &gt; #{t1}</if>
<if test="t2 != null and t2 != ''"> and a.complete_time &lt; #{t2}</if>
</select>
<insert id="batchInsertOrder"> <insert id="batchInsertOrder">
insert into bus_order_info (id,store_code,custom_id,order_no,order_status,complete_time,dayseq) values insert into bus_order_info (id,store_code,custom_id,order_no,order_status,complete_time,dayseq) values
<foreach collection="list" separator="," item="item"> <foreach collection="list" separator="," item="item">

View File

@ -64,7 +64,7 @@ export function updateStoreConfig(data) {
export function refresh(){ export function refresh(){
return request({ return request({
url: '/business/store/saveOrUpdate', url: '/mt/refresh',
method: 'get' method: 'get'
}) })
} }

View File

@ -568,6 +568,7 @@ export default {
}, },
async handleRefresh(){ async handleRefresh(){
await refresh().then(response => { await refresh().then(response => {
this.$modal.msgSuccess("修改成功");
this.handleQuery(); this.handleQuery();
}) })
}, },

View File

@ -164,18 +164,7 @@ export default {
pageNum: 1, pageNum: 1,
pageSize: 10, pageSize: 10,
agentAccount: null, agentAccount: null,
agentName: null, delStatus: "1"
superiorAgentCode: null,
superiorAgentAccount: null,
grantStoreNum: null,
operateStoreNum: null,
lastUseIntegralNum: null,
lastPositiveReviewsNum: null,
aiDurationBalance: null,
lastLoginTime: null,
lastLoginIp: null,
loginNum: null,
delStatus: null
}, },
// //
form: {}, form: {},