|
@@ -15,8 +15,10 @@ import org.springframework.util.MultiValueMap;
|
|
|
import org.springframework.web.client.RestTemplate;
|
|
import org.springframework.web.client.RestTemplate;
|
|
|
import shop.alien.entity.result.R;
|
|
import shop.alien.entity.result.R;
|
|
|
import shop.alien.entity.store.StoreCommentSummary;
|
|
import shop.alien.entity.store.StoreCommentSummary;
|
|
|
|
|
+import shop.alien.entity.store.StoreCommentSummaryInterest;
|
|
|
import shop.alien.entity.store.TagsMain;
|
|
import shop.alien.entity.store.TagsMain;
|
|
|
import shop.alien.entity.store.TagsSynonym;
|
|
import shop.alien.entity.store.TagsSynonym;
|
|
|
|
|
+import shop.alien.mapper.StoreCommentSummaryInterestMapper;
|
|
|
import shop.alien.mapper.StoreCommentSummaryMapper;
|
|
import shop.alien.mapper.StoreCommentSummaryMapper;
|
|
|
import shop.alien.mapper.TagsMainMapper;
|
|
import shop.alien.mapper.TagsMainMapper;
|
|
|
import shop.alien.mapper.TagsSynonymMapper;
|
|
import shop.alien.mapper.TagsSynonymMapper;
|
|
@@ -45,6 +47,8 @@ public class AiTagJob {
|
|
|
|
|
|
|
|
private final StoreCommentSummaryMapper storeCommentSummaryMapper;
|
|
private final StoreCommentSummaryMapper storeCommentSummaryMapper;
|
|
|
|
|
|
|
|
|
|
+ private final StoreCommentSummaryInterestMapper storeCommentSummaryInterestMapper;
|
|
|
|
|
+
|
|
|
// 第三方接口地址 获取所有标签主表信息
|
|
// 第三方接口地址 获取所有标签主表信息
|
|
|
@Value("${third-party-tag.base-url}")
|
|
@Value("${third-party-tag.base-url}")
|
|
|
private String tagMainUrl;
|
|
private String tagMainUrl;
|
|
@@ -57,6 +61,10 @@ public class AiTagJob {
|
|
|
@Value("${third-party-summary.base-url}")
|
|
@Value("${third-party-summary.base-url}")
|
|
|
private String allSummaryUrl;
|
|
private String allSummaryUrl;
|
|
|
|
|
|
|
|
|
|
+ // 第三方接口地址 获取店铺趣味信息
|
|
|
|
|
+ @Value("${third-party-interest.base-url}")
|
|
|
|
|
+ private String allInterestUrl;
|
|
|
|
|
+
|
|
|
// 第三方接口地址 登录接口URL
|
|
// 第三方接口地址 登录接口URL
|
|
|
@Value("${third-party-login.base-url}")
|
|
@Value("${third-party-login.base-url}")
|
|
|
private String loginUrl;
|
|
private String loginUrl;
|
|
@@ -461,6 +469,104 @@ public class AiTagJob {
|
|
|
return R.success("任务执行失败 状态码" + responseEntity.getStatusCodeValue());
|
|
return R.success("任务执行失败 状态码" + responseEntity.getStatusCodeValue());
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 拉取Ai服务获取趣味推荐信息表数据
|
|
|
|
|
+ */
|
|
|
|
|
+ @XxlJob("getStoreCommentSummaryInterestTask")
|
|
|
|
|
+ public R<String> getStoreCommentSummaryInterestTask() {
|
|
|
|
|
+ log.info("登录Ai服务获取token..." + loginUrl);
|
|
|
|
|
+ //构建请求参数
|
|
|
|
|
+ MultiValueMap<String, String> formData = new LinkedMultiValueMap<>();
|
|
|
|
|
+ formData.add("username", userName); // 表单字段 1:用户名
|
|
|
|
|
+ formData.add("password", passWord); // 表单字段 2:密码
|
|
|
|
|
+
|
|
|
|
|
+ //设置请求头
|
|
|
|
|
+ HttpHeaders headers = new HttpHeaders();
|
|
|
|
|
+ headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED);
|
|
|
|
|
+ HttpEntity<MultiValueMap<String, String>> requestEntity = new HttpEntity<>(formData, headers);
|
|
|
|
|
+ ResponseEntity<String> postForEntity = null;
|
|
|
|
|
+ try {
|
|
|
|
|
+ postForEntity = restTemplate.postForEntity(loginUrl, requestEntity, String.class);
|
|
|
|
|
+ } catch (Exception e) {
|
|
|
|
|
+ log.error("类:PostMethod 方法:post", e);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ if (postForEntity != null) {
|
|
|
|
|
+ if (postForEntity.getStatusCodeValue() == 200) {
|
|
|
|
|
+ log.info("请求Ai服务登录成功 postForEntity.getBody()\t" + postForEntity.getBody());
|
|
|
|
|
+ String responseBody = postForEntity.getBody();
|
|
|
|
|
+ JSONObject jsonObject = JSONObject.parseObject(responseBody);
|
|
|
|
|
+ JSONObject dataJson = jsonObject.getJSONObject("data");
|
|
|
|
|
+ String accessToken = dataJson.getString("access_token");
|
|
|
|
|
+ //调用 获取AI服务 获取趣味推荐信息表 get请求
|
|
|
|
|
+ getStoreCommentSummaryInterestInfo(accessToken);
|
|
|
|
|
+ return R.success("任务执行成功");
|
|
|
|
|
+ } else {
|
|
|
|
|
+ log.error("请求AI服务 登录接口失败 http状态:" + postForEntity.getStatusCode());
|
|
|
|
|
+ return R.fail("请求AI服务 登录接口失败 http状态:" + postForEntity.getStatusCode());
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ XxlJobHelper.handleFail("登录任务执行失败 返回异常");
|
|
|
|
|
+ return R.fail("登录任务执行失败 返回异常");
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ public R<String> getStoreCommentSummaryInterestInfo(String token) {
|
|
|
|
|
+ log.info("开始从Ai服务获取数据 获取趣味推荐信息表...");
|
|
|
|
|
+ log.info("restTemplate:" + restTemplate + "url:" + allInterestUrl);
|
|
|
|
|
+ // 1. 构建请求头
|
|
|
|
|
+ HttpHeaders headers = new HttpHeaders();
|
|
|
|
|
+ headers.set("Authorization", "Bearer " + token); // Token 认证
|
|
|
|
|
+ headers.set("accept", "*/*");
|
|
|
|
|
+ headers.set("connection", "Keep-Alive");
|
|
|
|
|
+ headers.set("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
|
|
|
|
|
+ // 2. 构建请求实体(仅包含头信息,GET 请求通常无请求体)
|
|
|
|
|
+ HttpEntity<?> requestEntity = new HttpEntity<>(headers);
|
|
|
|
|
+
|
|
|
|
|
+ // 发送 GET 请求,响应体为 String 类型
|
|
|
|
|
+ ResponseEntity<String> responseEntity = restTemplate.exchange(
|
|
|
|
|
+ allInterestUrl,
|
|
|
|
|
+ HttpMethod.GET, // 指定请求方法为 GET
|
|
|
|
|
+ requestEntity,
|
|
|
|
|
+ String.class // 响应体类型
|
|
|
|
|
+ );
|
|
|
|
|
+
|
|
|
|
|
+ // 解析响应
|
|
|
|
|
+ if (responseEntity.getStatusCodeValue() == 200) {
|
|
|
|
|
+ String responseBody = responseEntity.getBody();
|
|
|
|
|
+ JSONObject jsonObject = JSONObject.parseObject(responseBody);
|
|
|
|
|
+ Integer code = jsonObject.getInteger("code");
|
|
|
|
|
+ String message = jsonObject.getString("message");
|
|
|
|
|
+ JSONArray dataArray = jsonObject.getJSONArray("data");
|
|
|
|
|
+ List<StoreCommentSummaryInterest> storeCommentSummaryInterests = new ArrayList<>();
|
|
|
|
|
+ for (int i = 0; i < dataArray.size(); i++) {
|
|
|
|
|
+ JSONObject tagObj = dataArray.getJSONObject(i);
|
|
|
|
|
+ StoreCommentSummaryInterest summary = new StoreCommentSummaryInterest();
|
|
|
|
|
+ summary.setId(tagObj.getInteger("id"));
|
|
|
|
|
+ summary.setStoreId(tagObj.getInteger("store_id"));
|
|
|
|
|
+ summary.setStoreName(tagObj.getString("store_name"));
|
|
|
|
|
+ summary.setSummary(tagObj.getString("summary"));
|
|
|
|
|
+ summary.setTaskId(tagObj.getString("task_id"));
|
|
|
|
|
+ summary.setDeleteFlag(tagObj.getInteger("delete_flag"));
|
|
|
|
|
+ summary.setCreatedTime(tagObj.getDate("created_time"));
|
|
|
|
|
+ summary.setCreatedUserId(tagObj.getInteger("created_user_id"));
|
|
|
|
|
+ summary.setUpdatedTime(tagObj.getDate("updated_time"));
|
|
|
|
|
+ summary.setUpdatedUserId(tagObj.getInteger("updated_user_id"));
|
|
|
|
|
+ storeCommentSummaryInterests.add(summary);
|
|
|
|
|
+ }
|
|
|
|
|
+ if (!CollectionUtils.isEmpty(storeCommentSummaryInterests)) {
|
|
|
|
|
+ int num = storeCommentSummaryInterestMapper.insertBatchStoreCommentSummaryInterest(storeCommentSummaryInterests);
|
|
|
|
|
+ XxlJobHelper.handleSuccess("拉取子标签数据成功 执行" + num + "条");
|
|
|
|
|
+ return R.success("拉取子标签数据成功 执行" + num + "条");
|
|
|
|
|
+ } else {
|
|
|
|
|
+ XxlJobHelper.handleSuccess("获取回显数据为空" + "状态码:" + responseEntity.getStatusCodeValue());
|
|
|
|
|
+ return R.success("请求成功 获取回显数据为空" + "状态码:" + responseEntity.getStatusCodeValue());
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ log.info("AI服务 获取趣味推荐信息数据请求失败,状态码:" + responseEntity.getStatusCodeValue());
|
|
|
|
|
+ XxlJobHelper.handleFail("任务执行失败 状态码" + responseEntity.getStatusCodeValue());
|
|
|
|
|
+ return R.success("任务执行失败 状态码" + responseEntity.getStatusCodeValue());
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
class AnalysisRequest {
|
|
class AnalysisRequest {
|
|
|
private String start_time;
|
|
private String start_time;
|
|
|
private String end_time;
|
|
private String end_time;
|