定时任务优化

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);
}
@GetMapping("/refresh")
public R refresh(){
iMeituanService.getScore();
iMeituanService.getComments();
iMeituanService.getYestodayCount();
iMeituanService.orderInfoList();
return R.ok();
}
/**
* 批量获取订单
* @return

View File

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

View File

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

View File

@ -61,4 +61,6 @@ public interface BusOrderInfoMapper
public int deleteBusOrderInfoByIds(Long[] ids);
int batchInsertOrder(@Param("list") List<BusOrderInfo> list);
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 结果
*/
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.service.*;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.exception.ServiceException;
import com.ruoyi.common.utils.HttpClientUtilT;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.text.ParseException;
import java.text.SimpleDateFormat;
@ -139,9 +141,11 @@ public class AiServiceImpl implements IAiService
fifteenInfo.setLastVisitTime(LocalDateTime.now().toString());
fifteenInfoService.insertBusFifteenInfo(fifteenInfo);
} else {
System.out.println("追加任务接口返回错误: " + jo.toString());
} else if("20005".equals(jo.getString("code"))||"20006".equals(jo.getString("code"))) {
sendAiTask(busOrderInfo);
} else {
// TODO: 2024/7/10 失败原因判断 是否继续循环
System.out.println("建立任务接口返回错误: " + jo.toString());
}
}
@ -208,18 +212,29 @@ public class AiServiceImpl implements IAiService
}
@Override
@Transactional
public synchronized void sendAiTask(BusOrderInfo busOrderInfo) {
// busOrderInfo.getPrivcyPhone().split(",")[0], busOrderInfo.getPrivcyPhone().split(",")[1]
String apiKey = Optional.ofNullable(redisTemplate.opsForValue().get("apiKey")).orElse(null);
if (apiKey == null){
apiKey = login();
// apiKey = redisTemplate.opsForValue().get("apiKey");
}
String dialTaskMainSn = Optional.ofNullable(redisTemplate.opsForValue().get("dialTaskMainSn")).orElse(null);
if (dialTaskMainSn != null){
appendAiTask(apiKey,dialTaskMainSn,busOrderInfo);
} else {
addAiTaskTest(apiKey,busOrderInfo);
try {
String apiKey = Optional.ofNullable(redisTemplate.opsForValue().get("apiKey")).orElse(null);
if (apiKey == null){
apiKey = login();
}
String dialTaskMainSn = Optional.ofNullable(redisTemplate.opsForValue().get("dialTaskMainSn")).orElse(null);
if (dialTaskMainSn != null){
appendAiTask(apiKey,dialTaskMainSn,busOrderInfo);
} else {
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());
}
}
@ -250,9 +265,11 @@ public class AiServiceImpl implements IAiService
fifteenInfo.setLastVisitTime(LocalDateTime.now().toString());
fifteenInfoService.insertBusFifteenInfo(fifteenInfo);
} else {
System.out.println("建立任务接口返回错误: " + jo.toString());
} else if("20005".equals(jo.getString("code"))||"20006".equals(jo.getString("code"))) {
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);
}
@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.data.redis.core.StringRedisTemplate;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.io.IOException;
import java.net.URLEncoder;
@ -70,6 +71,8 @@ public class MeituanServiceImpl implements IMeituanService {
@Autowired
private IBusStoreDayInfoService busStoreDayInfoService;
@Autowired
private IBusAgentInfoService iBusAgentInfoService;
@Autowired
private ProxyProperties proxyProperties;
@Autowired
@ -82,13 +85,16 @@ public class MeituanServiceImpl implements IMeituanService {
* @return
*/
@Override
@Transactional(rollbackFor = Exception.class)
public R cookieInfo(SysCookie cookie) {
LoginUser loginUser = SecurityUtils.getLoginUser();
BusStoreInfo storeInfo = new BusStoreInfo();
storeInfo.setStoreCode(valueFromCookie("wmPoiId", cookie.getCookie()));
List<BusStoreInfo> list = busStoreInfoService.selectBusStoreInfoList(storeInfo);
BusAgentInfo busAgentInfo = new BusAgentInfo();
busAgentInfo.setAgentAccount(cookie.getUserName());
List<BusAgentInfo> list1 = iBusAgentInfoService.selectBusAgentInfoList(busAgentInfo);
if (list.size() == 0) {
storeInfo.setBindId(loginUser.getUserId());
storeInfo.setBindId(list1.get(0).getId());
storeInfo.setBindUser(cookie.getUserName());
storeInfo.setStoreAccount(cookie.getAccount());
storeInfo.setStorePassword(cookie.getPassword());
@ -116,8 +122,8 @@ public class MeituanServiceImpl implements IMeituanService {
}
storeInfo.setId(list.get(0).getId());
storeInfo.setUpdateTime(new Date());
storeInfo.setUpdateId(loginUser.getUserId());
storeInfo.setUpdateUser(loginUser.getUsername());
storeInfo.setUpdateId(list1.get(0).getId());
storeInfo.setUpdateUser(cookie.getUserName());
storeInfo.setStoreAccount(cookie.getAccount());
storeInfo.setStorePassword(cookie.getPassword());
storeInfo.setStoreName(cookie.getWmPoiName());
@ -136,6 +142,7 @@ public class MeituanServiceImpl implements IMeituanService {
* @return
*/
@Override
@Transactional(rollbackFor = Exception.class)
public String getComments() {
BusStoreInfo busStoreInfo = new BusStoreInfo();
List<BusStoreInfo> busStoreInfoList = busStoreInfoMapper.selectBusStoreInfoList(busStoreInfo);
@ -153,6 +160,7 @@ public class MeituanServiceImpl implements IMeituanService {
}
@Override
@Transactional(rollbackFor = Exception.class)
public String getYestodayCount() {
BusStoreInfo busStoreInfo = new BusStoreInfo();
List<BusStoreInfo> busStoreInfoList = busStoreInfoMapper.selectBusStoreInfoList(busStoreInfo);
@ -175,6 +183,7 @@ public class MeituanServiceImpl implements IMeituanService {
* @return
*/
@Override
@Transactional(rollbackFor = Exception.class)
public String getScore() {
BusStoreInfo busStoreInfo = new BusStoreInfo();
List<BusStoreInfo> busStoreInfoList = busStoreInfoMapper.selectBusStoreInfoList(busStoreInfo);
@ -197,6 +206,7 @@ public class MeituanServiceImpl implements IMeituanService {
* @return
*/
@Override
@Transactional(rollbackFor = Exception.class)
public String orderInfoList() {
LocalDateTime now = LocalDateTime.now();
BusStoreInfo busStoreInfo = new BusStoreInfo();
@ -270,6 +280,7 @@ public class MeituanServiceImpl implements IMeituanService {
* @return
*/
@Override
@Transactional(rollbackFor = Exception.class)
public R orderInfo(String wmPoiId, String date, String cookie) {
int pageNum = 1;
@ -394,6 +405,7 @@ public class MeituanServiceImpl implements IMeituanService {
* @return
*/
@Override
@Transactional(rollbackFor = Exception.class)
public void priPhoneInfo(List<BusOrderInfo> ls, String cookie) {
for (BusOrderInfo orderInfo : ls) {
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.setPhoneNumber(busOrderInfo.getPrivcyPhone());
//returnVisitInfo.setFinishTime(busOrderInfo.getCompleteTime()); todo
returnVisitInfo.setReturnVisitTime(new Date());
// returnVisitInfo.setReturnVisitTime(new Date());
// busReturnVisitInfoMapper.insertBusReturnVisitInfo(returnVisitInfo);
lss.add(returnVisitInfo);
}
@ -488,6 +500,7 @@ public class MeituanServiceImpl implements IMeituanService {
* @return
*/
@Override
@Transactional(rollbackFor = Exception.class)
public String mtgsigInfo(String orderId, String regionId, String regionVersion) {
CloseableHttpClient httpClient = proxyHttpClient();
String url = "http://43.140.224.18:12000/get_mtgsig";
@ -527,6 +540,7 @@ public class MeituanServiceImpl implements IMeituanService {
*
* @return
*/
@Transactional(rollbackFor = Exception.class)
private Boolean getScoreOne(BusStoreInfo store) {
CloseableHttpClient httpClient = proxyHttpClient();
String wmPoiId = valueFromCookie("wmPoiId", store.getStoreCookie());
@ -579,6 +593,7 @@ public class MeituanServiceImpl implements IMeituanService {
*
* @return
*/
@Transactional(rollbackFor = Exception.class)
private Boolean getCommentsOne(BusStoreInfo store) {
LocalDateTime now = LocalDateTime.now();

View File

@ -45,6 +45,14 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
where id = #{id}
</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 into bus_order_info (id,store_code,custom_id,order_no,order_status,complete_time,dayseq) values
<foreach collection="list" separator="," item="item">

View File

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

View File

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

View File

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