预测试呼叫数据

master
wjt 10 months ago
parent c7bf8af970
commit 7f01f82a8b

@ -0,0 +1,23 @@
package com.baiye.http;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
/**
* @author wjt
* @date 2023/11/14
*/
@Data
public class PreTestResponse {
private Object data;
@JsonProperty("code")
private int code;
@JsonProperty("msg")
private String msg;
@JsonProperty("result")
private Boolean result;
}

@ -1,5 +1,6 @@
package com.baiye.modules.platform.domain;
import com.baiye.constant.DefaultNumberConstants;
import com.baiye.model.entity.BaseTask;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
@ -28,4 +29,19 @@ public class Task extends BaseTask {
@Transient
@ApiModelProperty(value = "任务小组信息")
private List<Organize> organizeList;
/**
*
*/
public Task createActTask(Long taskId, Long id, String taskName, Integer isForm, Boolean isDmpDelivery) {
this.setId(taskId);
this.setEncryptionType(DefaultNumberConstants.ZERO_NUMBER);
this.setIsDistribution(DefaultNumberConstants.ZERO_NUMBER);
this.setTaskType(DefaultNumberConstants.ONE_NUMBER);
this.setIsForm(isForm);
this.setCreateBy(id);
this.setTaskName(taskName);
this.setIsDmpDelivery(isDmpDelivery);
return this;
}
}

@ -0,0 +1,73 @@
package com.baiye.modules.telemarkting.api;
import com.baiye.annotation.Log;
import com.baiye.http.CommonResponse;
import com.baiye.modules.telemarkting.entity.dto.PreTestActDTO;
import com.baiye.modules.telemarkting.entity.dto.PreTestActQueryCriteria;
import com.baiye.modules.telemarkting.service.PreTestService;
import com.baiye.valid.AddGroup;
import com.baiye.valid.UpdateGroup;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.data.domain.Pageable;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
/**
* @author wjt
* @date 2023/11/13
*/
@Slf4j
@RestController
@RequestMapping("/api")
@Api(tags = " 预测试外呼 对接大坝")
@RequiredArgsConstructor
public class PreTestController {
private final PreTestService preTestService;
@PostMapping("/act/add")
@ApiOperation("创建活动任务")
@Log("创建活动任务")
public CommonResponse<Object> actAdd(@Validated({AddGroup.class}) @RequestBody PreTestActDTO preTestActDTO) {
preTestService.actAdd(preTestActDTO);
return CommonResponse.createBySuccess();
}
@GetMapping("/act/query")
@ApiOperation("预测试活动查询")
@Log("预测试活动查询")
public ResponseEntity<Object> actQuery(PreTestActQueryCriteria preTestActQueryCriteria, Pageable pageable) {
return new ResponseEntity<>(preTestService.actQuery(preTestActQueryCriteria, pageable), HttpStatus.OK);
}
@PostMapping("/act/update")
@ApiOperation("修改活动任务")
@Log("修改活动任务")
public CommonResponse<Object> actUpdate(@Validated({UpdateGroup.class}) @RequestBody PreTestActDTO preTestActDTO) {
preTestService.actUpdate(preTestActDTO);
return CommonResponse.createBySuccess();
}
@GetMapping("/account/conf")
@ApiOperation("预测试账号配置")
@Log("预测试账号配置")
public CommonResponse<Object> accountConf(@RequestParam("userName") String userName,
@RequestParam("passWord") String passWord) {
preTestService.accountConf(userName, passWord);
return CommonResponse.createBySuccess();
}
@GetMapping("/account/query")
@ApiOperation("预测试账号查询")
@Log("预测试账号查询")
public CommonResponse<Object> accountQuery() {
return CommonResponse.createBySuccess(preTestService.accountQuery());
}
}

@ -0,0 +1,23 @@
package com.baiye.modules.telemarkting.dao;
import com.baiye.modules.telemarkting.entity.PreTestAccount;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.stereotype.Repository;
import java.util.List;
/**
* @author wjt
* @date 2023/11/14
*/
@Repository
public interface PreTestAccountRepository extends JpaRepository<PreTestAccount, Long>, JpaSpecificationExecutor<PreTestAccount> {
/**
*
* @param status
* @return
*/
List<PreTestAccount> findAllByStatus(Boolean status);
}

@ -0,0 +1,34 @@
package com.baiye.modules.telemarkting.dao;
import com.baiye.modules.telemarkting.entity.PreTestAct;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.stereotype.Repository;
import java.util.List;
/**
* @author wjt
* @date 2023/11/14
*/
@Repository
public interface PreTestActRepository extends JpaRepository<PreTestAct, Long>, JpaSpecificationExecutor<PreTestAct> {
/**
*
*
* @param status
* @return
*/
List<PreTestAct> findAllByStatus(Integer status);
/**
*
*
* @param taskId id
* @param userId id
* @return
*/
PreTestAct findByTaskIdAndUserId(Long taskId, Long userId );
}

@ -0,0 +1,49 @@
package com.baiye.modules.telemarkting.entity;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
import org.springframework.data.annotation.LastModifiedDate;
import org.springframework.data.jpa.domain.support.AuditingEntityListener;
import javax.persistence.*;
import java.io.Serializable;
import java.util.Date;
/**
* @author wjt
* @date 2023/11/14
*/
@Getter
@Setter
@Entity
@Table(name = "tb_pre_test_account")
@EntityListeners(AuditingEntityListener.class)
public class PreTestAccount implements Serializable {
@Id
@ApiModelProperty(value = "user_id")
@Column(name = "user_id")
private Long userId;
@Column(name = "db_user_name")
@ApiModelProperty(value = "对应大坝用户名")
private String dbUserName;
@Column(name = "db_user_password")
@ApiModelProperty(value = "对应大坝用户密码")
private String dbUserPassword;
@Column(name = "token")
@ApiModelProperty(value = "token")
private String token;
@ApiModelProperty(value = "是否激活")
@Column(name = "status")
private Boolean status = Boolean.TRUE;
@LastModifiedDate
@Column(name = "create_time")
@ApiModelProperty(value = "创建时间")
private Date createTime;
}

@ -0,0 +1,76 @@
package com.baiye.modules.telemarkting.entity;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
import org.springframework.data.annotation.LastModifiedDate;
import org.springframework.data.jpa.domain.support.AuditingEntityListener;
import javax.persistence.*;
import java.io.Serializable;
import java.util.Date;
/**
* @author wjt
* @date 2023/11/14
*/
@Getter
@Setter
@Entity
@Table(name = "tb_pre_test_act")
@EntityListeners(AuditingEntityListener.class)
public class PreTestAct implements Serializable {
@Id
@ApiModelProperty(value = "主键id自动递增")
@Column(name = "id")
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(name = "user_id")
@ApiModelProperty(value = "user_id")
private Long userId;
@Column(name = "act_name")
@ApiModelProperty(value = "活动名")
private String actName;
@Column(name = "act_id")
@ApiModelProperty(value = "活动名id")
private String actId;
@Column(name = "task_id")
@ApiModelProperty(value = "任务id")
private Long taskId;
@Column(name = "execute_total_num")
@ApiModelProperty(value = "预执行总数")
private Integer executeTotalNum;
@Column(name = "execute_num")
@ApiModelProperty(value = "已执行数")
private Integer executeNum;
@Column(name = "rate_num")
@ApiModelProperty(value = "接通数")
private Integer rateNum;
@Column(name = "status")
@ApiModelProperty(value = "活动状态 0-进行中 1-完结")
private Integer status;
@LastModifiedDate
@Column(name = "create_time")
@ApiModelProperty(value = "创建时间")
private Date createTime;
public PreTestAct addDefaultPreTestAct(Long userId, String actName, String actId, Long taskId) {
this.setUserId(userId);
this.setActId(actId);
this.setActName(actName);
this.setTaskId(taskId);
this.setStatus(0);
return this;
}
}

@ -0,0 +1,52 @@
package com.baiye.modules.telemarkting.entity.dto;
import lombok.Data;
import java.util.List;
/**
* @author wjt
* @date 2023/11/13
*/
@Data
public class CallImportDTO {
/**
* token
*/
private String authKey;
/**
*
*/
private String actName;
/**
*
*/
private String actId;
/**
* ID
*/
private String batchId;
/**
* nid 1000
*/
private List<Source> clientList;
@Data
public static class Source {
/**
* nid
*/
private String cellphone;
/**
* 线 (:++)
*/
private String variable;
}
}

@ -0,0 +1,28 @@
package com.baiye.modules.telemarkting.entity.dto;
import com.baiye.valid.AddGroup;
import com.baiye.valid.UpdateGroup;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotNull;
import java.util.List;
/**
* @author wjt
* @date 2023/11/17
*
*/
@Data
public class PreTestActDTO {
@NotNull(groups = {AddGroup.class})
private String actId;
@NotNull(groups = {AddGroup.class})
private String actName;
@NotNull(groups = {UpdateGroup.class})
private Long taskId;
@NotNull(groups = {UpdateGroup.class})
private List<String> tagStr;
private Boolean isDmpDelivery;
}

@ -0,0 +1,20 @@
package com.baiye.modules.telemarkting.entity.dto;
import com.baiye.annotation.Query;
import lombok.Data;
/**
* @author wjt
* @date 2023/11/15
*/
@Data
public class PreTestActQueryCriteria {
@Query
private String actId;
@Query(type = Query.Type.INNER_LIKE)
private String actName;
@Query
private Long userId;
}

@ -0,0 +1,79 @@
package com.baiye.modules.telemarkting.httpRequest;
import cn.hutool.http.HttpRequest;
import cn.hutool.json.JSONArray;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
import com.baiye.exception.BadRequestException;
import com.baiye.http.PreTestResponse;
import com.baiye.modules.telemarkting.entity.dto.CallImportDTO;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
/**
* @author wjt
* @date 2023/11/13
*/
@Slf4j
@Component
public class PreTestReq {
String sendUrl = "https://ai.hzdaba.cn/external/activity/addClient";
String getUrl = "https://ai.hzdaba.cn/external/activity_statistics";
String tokenUrl = "https://ai.hzdaba.cn/external/get/authKey";
/**
*
*/
public void sendDaBa(CallImportDTO callImportDTO) {
String body = sendCallReq(sendUrl, JSONUtil.toJsonStr(callImportDTO));
PreTestResponse response = JSONUtil.toBean(body, PreTestResponse.class);
if (!response.getResult()) {
log.info("导入失败 参数{}, 返回结果{}", JSONUtil.toJsonStr(callImportDTO), JSONUtil.toJsonStr(response));
throw new BadRequestException("导入失败 " + response.getMsg());
}
}
/**
*
*/
public JSONArray getDaBa(String authKey, String actName) {
JSONObject json = new JSONObject(8);
json.putOpt("authKey", authKey);
json.putOpt("actName", actName);
json.putOpt("status", 0);
json.putOpt("pageNum", 1);
json.putOpt("pageSize", 10);
String body = sendCallReq(getUrl, JSONUtil.toJsonStr(json));
PreTestResponse response = JSONUtil.toBean(body, PreTestResponse.class);
if (response.getResult()) {
return JSONUtil.parseArray(response.getData());
} else {
log.info("获取活动统计失败 {}", JSONUtil.toJsonStr(response));
}
return null;
}
/**
* token
*/
public String getToken(String username, String password) {
JSONObject json = new JSONObject(8);
json.putOpt("username", username);
json.putOpt("password", password);
String body = sendCallReq(tokenUrl, JSONUtil.toJsonStr(json));
PreTestResponse response = JSONUtil.toBean(body, PreTestResponse.class);
if (response.getResult()) {
return String.valueOf(response.getData());
} else {
log.info("获取token失败 {}", JSONUtil.toJsonStr(response));
}
return "";
}
private String sendCallReq(String url, String json) {
return HttpRequest.post(url)
.body(json)
.execute().body();
}
}

@ -0,0 +1,43 @@
package com.baiye.modules.telemarkting.service;
import com.baiye.modules.telemarkting.entity.PreTestAccount;
import com.baiye.modules.telemarkting.entity.dto.PreTestActDTO;
import com.baiye.modules.telemarkting.entity.dto.PreTestActQueryCriteria;
import org.springframework.data.domain.Pageable;
import org.springframework.web.multipart.MultipartFile;
/**
* @author wjt
* @date 2023/11/13
*/
public interface PreTestService {
/**
*
*/
void actAdd(PreTestActDTO preTestActDTO);
/**
*
*/
Object actQuery(PreTestActQueryCriteria preTestActQueryCriteria, Pageable pageable);
/**
*
*/
void actUpdate(PreTestActDTO preTestActDTO);
/**
*
*
* @param userName
* @param passWord
*/
void accountConf(String userName, String passWord);
/**
*
*
* @return
*/
PreTestAccount accountQuery();
}

@ -0,0 +1,164 @@
package com.baiye.modules.telemarkting.service.impl;
import cn.hutool.core.codec.Base64;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONUtil;
import com.baiye.exception.BadRequestException;
import com.baiye.modules.platform.domain.Task;
import com.baiye.modules.platform.domain.TaskTag;
import com.baiye.modules.platform.httpRequest.AdBackRequestApi;
import com.baiye.modules.platform.repository.TaskRepository;
import com.baiye.modules.platform.repository.TaskTagRepository;
import com.baiye.modules.telemarkting.dao.PreTestAccountRepository;
import com.baiye.modules.telemarkting.dao.PreTestActRepository;
import com.baiye.modules.telemarkting.entity.PreTestAccount;
import com.baiye.modules.telemarkting.entity.PreTestAct;
import com.baiye.modules.telemarkting.entity.dto.CallImportDTO;
import com.baiye.modules.telemarkting.entity.dto.PreTestActDTO;
import com.baiye.modules.telemarkting.entity.dto.PreTestActQueryCriteria;
import com.baiye.modules.telemarkting.httpRequest.PreTestReq;
import com.baiye.modules.telemarkting.service.PreTestService;
import com.baiye.util.PageUtil;
import com.baiye.util.QueryHelp;
import com.baiye.util.SecurityUtils;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.Sort;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
/**
* @author wjt
* @date 2023/11/13
*/
@Service
@RequiredArgsConstructor
@Slf4j
public class PreTestServiceImpl implements PreTestService {
private final PreTestReq preTestReq;
private final PreTestActRepository preTestActRepository;
private final PreTestAccountRepository preTestAccountRepository;
private final TaskTagRepository taskTagRepository;
private final TaskRepository taskRepository;
private final AdBackRequestApi adBackRequestApi;
@Override
@Transactional(rollbackFor = Exception.class)
public void actAdd(PreTestActDTO preTestActDTO) {
//新建任务
long taskId = IdUtil.getSnowflake(9, 9).nextId();
long userId = SecurityUtils.getCurrentUserId();
Task task = new Task().createActTask(taskId, userId, preTestActDTO.getActName(), 8, true);
//检查tag值
if (CollUtil.isNotEmpty(preTestActDTO.getTagStr())) {
createTag(taskId, userId, preTestActDTO.getTagStr());
}
//发送任务
List<String> collect = preTestActDTO.getTagStr().stream().map(String::trim).collect(Collectors.toList());
adBackRequestApi.sendTag(taskId, userId, collect);
//新建活动
PreTestAct preTestAct = new PreTestAct().addDefaultPreTestAct(userId, preTestActDTO.getActName(), preTestActDTO.getActId(), taskId);
taskRepository.save(task);
preTestActRepository.save(preTestAct);
}
@Override
public Object actQuery(PreTestActQueryCriteria preTestActQueryCriteria, Pageable pageable) {
preTestActQueryCriteria.setUserId(SecurityUtils.getCurrentUserId());
PageRequest pageRequest = PageRequest.of(pageable.getPageNumber(), pageable.getPageSize(), Sort.by(Sort.Direction.DESC, "createTime"));
Page<PreTestAct> all = preTestActRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root, preTestActQueryCriteria, criteriaBuilder), pageRequest);
return PageUtil.toPage(all);
}
@Override
public void actUpdate(PreTestActDTO preTestActDTO) {
long userId = SecurityUtils.getCurrentUserId();
//检查tag
createTag(preTestActDTO.getTaskId(), userId, preTestActDTO.getTagStr());
if (preTestActDTO.getIsDmpDelivery() != null) {
Task task = new Task();
task.setId(preTestActDTO.getTaskId());
task.setIsDmpDelivery(preTestActDTO.getIsDmpDelivery());
taskRepository.save(task);
}
List<String> collect = preTestActDTO.getTagStr().stream().map(String::trim).collect(Collectors.toList());
adBackRequestApi.sendTag(preTestActDTO.getTaskId(), userId, collect);
}
/**
* tag
*/
private void createTag(Long taskId, Long userId, List<String> tags) {
List<TaskTag> taskTags = taskTagRepository.findTaskTagByUserId(userId);
tags = tags.stream().distinct().collect(Collectors.toList());
List<String> tagAll = new ArrayList<>();
for (TaskTag taskTag : taskTags) {
if (taskId.equals(taskTag.getTaskId())) {
//已经有这个任务,说明是修改,所以排除掉当前的
continue;
}
tagAll.addAll(taskTag.getTag());
}
List<String> differenceList = tagAll.stream().filter(tags::contains).collect(Collectors.toList());
if (CollUtil.isNotEmpty(differenceList)) {
throw new BadRequestException("tag 存在重复 请检查:" + JSONUtil.toJsonStr(differenceList));
}
TaskTag taskTag = taskTagRepository.findTaskTagByTaskId(taskId);
if (ObjectUtil.isNull(taskTag)) {
taskTag = new TaskTag();
taskTag.setUserId(userId);
taskTag.setTaskId(taskId);
}
taskTag.setTag(tags);
taskTagRepository.save(taskTag);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void accountConf(String userName, String passWord) {
PreTestAccount preTestAccount = new PreTestAccount();
preTestAccount.setUserId(SecurityUtils.getCurrentUserId());
String name = Base64.encode(userName);
String pass = Base64.encode(passWord);
preTestAccount.setDbUserName(name);
preTestAccount.setDbUserPassword(pass);
//获取token
String token = preTestReq.getToken(name, pass);
if (StrUtil.isEmpty(token)) {
throw new BadRequestException("账号密码不正确,请检查");
}
preTestAccount.setToken(token);
preTestAccountRepository.save(preTestAccount);
}
@Override
public PreTestAccount accountQuery() {
PreTestAccount preTestAccount = preTestAccountRepository.findById(SecurityUtils.getCurrentUserId()).orElseGet(PreTestAccount::new);
preTestAccount.setDbUserName(Base64.decodeStr(preTestAccount.getDbUserName()));
preTestAccount.setDbUserPassword(Base64.decodeStr(preTestAccount.getDbUserPassword()));
return preTestAccount;
}
public void sendDBData(Long taskId, Long userId, List<CallImportDTO.Source> sources) {
PreTestAccount preTestAccount = preTestAccountRepository.findById(userId).orElseGet(PreTestAccount::new);
PreTestAct preTestAct = preTestActRepository.findByTaskIdAndUserId(taskId, userId);
CallImportDTO callImportDTO = new CallImportDTO();
callImportDTO.setAuthKey(preTestAccount.getToken());
callImportDTO.setActName(preTestAct.getActName());
callImportDTO.setActId(preTestAct.getActId());
callImportDTO.setClientList(sources);
preTestReq.sendDaBa(callImportDTO);
}
}

@ -0,0 +1,83 @@
package com.baiye.timed;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONArray;
import cn.hutool.json.JSONObject;
import com.baiye.modules.telemarkting.dao.PreTestAccountRepository;
import com.baiye.modules.telemarkting.dao.PreTestActRepository;
import com.baiye.modules.telemarkting.entity.PreTestAccount;
import com.baiye.modules.telemarkting.entity.PreTestAct;
import com.baiye.modules.telemarkting.httpRequest.PreTestReq;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
* @author wjt
* @date 2023/11/14
*/
@Slf4j
@Component
@RequiredArgsConstructor
public class PreTestTask {
private final PreTestAccountRepository preTestAccountRepository;
private final PreTestActRepository preTestActRepository;
private final PreTestReq preTestReq;
@Scheduled(cron = "0 0 1 * * ?")
@Transactional(rollbackFor = Exception.class)
public void countPreTestData() {
List<PreTestAct> preTestActs = preTestActRepository.findAllByStatus(0);
if (CollUtil.isEmpty(preTestActs)) {
return;
}
Map<Long, List<PreTestAct>> listMap =
preTestActs.stream().collect(Collectors.groupingBy(PreTestAct::getUserId));
List<PreTestAct> list = new ArrayList<>();
for (Map.Entry<Long, List<PreTestAct>> map : listMap.entrySet()) {
Long userId = map.getKey();
List<PreTestAct> value = map.getValue();
//获取账号
PreTestAccount one = preTestAccountRepository.findById(userId).orElseGet(PreTestAccount::new);
if (BeanUtil.isEmpty(one) || StrUtil.isEmpty(one.getToken())) {
continue;
}
//获取token
String token = one.getToken();
for (PreTestAct preTestAct : value) {
JSONArray daBaData = preTestReq.getDaBa(token, preTestAct.getActName());
if (CollUtil.isNotEmpty(daBaData)) {
JSONObject jsonObject = daBaData.getJSONObject(0);
//预执行总数
int executeTotalNum = jsonObject.getInt("listCallTotleNum");
//已执行总数
int executeNum = jsonObject.getInt("listTotleNumber");
//接通数
int rateNum = jsonObject.getInt("connCallSum");
int status = 0;
if (executeTotalNum > 0 && executeTotalNum == executeNum) {
status = 1;
}
preTestAct.setStatus(status);
preTestAct.setExecuteTotalNum(executeTotalNum);
preTestAct.setExecuteNum(executeNum);
preTestAct.setRateNum(rateNum);
list.add(preTestAct);
}
}
}
preTestActRepository.saveAll(list);
}
}

@ -0,0 +1,42 @@
package com.baiye.timed;
import cn.hutool.core.util.StrUtil;
import com.baiye.modules.telemarkting.dao.PreTestAccountRepository;
import com.baiye.modules.telemarkting.entity.PreTestAccount;
import com.baiye.modules.telemarkting.httpRequest.PreTestReq;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import java.util.ArrayList;
import java.util.List;
/**
* @author wjt
* @date 2023/11/17
*/
@Slf4j
@Component
@RequiredArgsConstructor
public class PreTestTokenTask {
private final PreTestAccountRepository preTestAccountRepository;
private final PreTestReq preTestReq;
@Scheduled(cron = "0 0 0 * * ?")
public void getToken() {
List<PreTestAccount> all = preTestAccountRepository.findAllByStatus(true);
List<PreTestAccount> list = new ArrayList<>();
for (PreTestAccount preTestAccount : all) {
String token = preTestReq.getToken(preTestAccount.getDbUserName(), preTestAccount.getDbUserPassword());
if (StrUtil.isEmpty(token)) {
preTestAccount.setStatus(false);
}
preTestAccount.setToken(token);
list.add(preTestAccount);
}
preTestAccountRepository.saveAll(list);
}
}
Loading…
Cancel
Save