From 8c4b1756ce7c0ae682ba9eada6cb3ded1d90f8da Mon Sep 17 00:00:00 2001 From: liukang <644012909@qq.com> Date: Tue, 4 Mar 2025 22:26:47 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8A=A2=E7=A5=A8=E6=97=A5=E5=BF=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/system/PerformController.java | 12 +- .../main/java/com/ruoyi/web/task/RyTask.java | 146 ++++++++++++------ .../java/com/ruoyi/web/task/WeverseAgree.java | 20 +++ .../java/com/ruoyi/web/task/WeverseForm.java | 23 +++ .../com/ruoyi/web/task/WeverseMetadata.java | 20 +++ .../java/com/ruoyi/web/task/WeverseTerms.java | 20 +++ .../com/ruoyi/system/domain/WeverseAgree.java | 30 ++++ .../com/ruoyi/system/domain/WeverseForm.java | 23 +++ .../ruoyi/system/domain/WeverseMetadata.java | 20 +++ .../com/ruoyi/system/domain/WeverseTerms.java | 20 +++ .../com/ruoyi/system/mapper/ApplyMapper.java | 2 + .../ruoyi/system/service/IPerformService.java | 3 + .../service/impl/PerformServiceImpl.java | 56 +++++++ .../src/main/resources/mapper/ApplyMapper.xml | 23 +++ 14 files changed, 367 insertions(+), 51 deletions(-) create mode 100644 ruoyi-admin/src/main/java/com/ruoyi/web/task/WeverseAgree.java create mode 100644 ruoyi-admin/src/main/java/com/ruoyi/web/task/WeverseForm.java create mode 100644 ruoyi-admin/src/main/java/com/ruoyi/web/task/WeverseMetadata.java create mode 100644 ruoyi-admin/src/main/java/com/ruoyi/web/task/WeverseTerms.java create mode 100644 ruoyi-system/src/main/java/com/ruoyi/system/domain/WeverseAgree.java create mode 100644 ruoyi-system/src/main/java/com/ruoyi/system/domain/WeverseForm.java create mode 100644 ruoyi-system/src/main/java/com/ruoyi/system/domain/WeverseMetadata.java create mode 100644 ruoyi-system/src/main/java/com/ruoyi/system/domain/WeverseTerms.java diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/PerformController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/PerformController.java index abd6a16..6e98f0c 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/PerformController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/PerformController.java @@ -74,7 +74,6 @@ public class PerformController extends BaseController { /** * 获取演出详细信息 */ - @PreAuthorize("@ss.hasPermi('system:perform:query')") @GetMapping(value = "/normal/{id}") public AjaxResult getInfoNormal(@PathVariable("id") Long id) { return success(performService.getInfoNormal(id)); @@ -101,6 +100,17 @@ public class PerformController extends BaseController { return toAjax(performService.updatePerform(perform)); } + /** + * 刷新人员状态 + * @param id + * @return + */ + @PreAuthorize("@ss.hasPermi('system:perform:refresh')") + @GetMapping(value = "/refresh/{id}") + public AjaxResult refresh(@PathVariable("id") Long id) throws Exception { + return toAjax(performService.refresh(id)); + } + /** * 删除演出 */ diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/task/RyTask.java b/ruoyi-admin/src/main/java/com/ruoyi/web/task/RyTask.java index f06dc40..944f94f 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/task/RyTask.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/task/RyTask.java @@ -69,7 +69,6 @@ public class RyTask { String base64Hmac = Base64.getEncoder().encodeToString(hmacBytes); // 输出生成的HMAC Base64编码值 - System.out.println("HMAC-SHA1 (Base64): " + base64Hmac); // 指定使用的字符编码(如UTF-8) String charset = "UTF-8"; @@ -112,74 +111,114 @@ public class RyTask { throw new Exception("没有参与人员"); } - long time = System.currentTimeMillis(); - String data = "/notice/v1.0/notice-" + perform.getNotice() + "?fieldSet=noticeV1&appId=be4d79eb8fc7bd008ee82c8ec4ff6fd4&language=zh-cn&os=WEB&platform=WEB&wpf=pc"; - String base = "https://global.apis.naver.com/weverse/wevweb"; + Perform perform1 = new Perform(); + String eValue = null; + if (perform.getNum() == null || perform.getNum().isEmpty()) { + long time = System.currentTimeMillis(); + String data = "/notice/v1.0/notice-" + perform.getNotice() + "?fieldSet=noticeV1&appId=be4d79eb8fc7bd008ee82c8ec4ff6fd4&language=zh-cn&os=WEB&platform=WEB&wpf=pc"; + String base = "https://global.apis.naver.com/weverse/wevweb"; - String wmd = getWMD(data + time); - if (wmd == null || wmd.isEmpty()) { - throw new Exception("wmd解析失败"); + String wmd = getWMD(data + time); + if (wmd == null || wmd.isEmpty()) { + throw new Exception("wmd解析失败"); + } + // 创建HttpClient实例 + HttpClient httpClient = HttpClient.newBuilder() + .connectTimeout(Duration.ofSeconds(10)) + .build(); + + // 创建HttpRequest + String url = base + data + "&wmsgpad=" + time + "&wmd=" + wmd; + HttpRequest request = HttpRequest.newBuilder() + .uri(new URI(url)) + .GET() + .header("Authorization", "Bearer " + applies.get(0).getToken()) + .header("Origin", "https://weverse.io") + .header("Referer", "https://weverse.io/") + .header("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36") + .build(); + + // 发送请求并获取响应 + HttpResponse response = httpClient.send(request, HttpResponse.BodyHandlers.ofString()); + // 检查响应状态码 + if (response.statusCode() == 200) { + // 打印响应体 + String responseBody = response.body(); + WeverseData weverseData = JSONObject.parseObject(responseBody, WeverseData.class); + if (weverseData == null || + weverseData.getButton() == null || + weverseData.getButton().getWebLink() == null || + weverseData.getButton().getWebLink().getUrl() == null || + weverseData.getButton().getWebLink().getUrl().isEmpty()) { + throw new Exception("button获取失败"); + } + URI uri = new URI(weverseData.getButton().getWebLink().getUrl()); + + String query = uri.getQuery(); + String[] params = query.split("&"); + Map paramMap = new HashMap<>(); + + for (String param : params) { + String[] keyValue = param.split("="); + String key = URLDecoder.decode(keyValue[0], "UTF-8"); + String value = URLDecoder.decode(keyValue[1], "UTF-8"); + paramMap.put(key, value); + } + + // 获取参数e的值 + eValue = paramMap.get("e"); + } else { + throw new Exception("button请求失败"); + } + + if (eValue == null || eValue.isEmpty()) { + throw new Exception("button为空"); + } + perform1.setNum(eValue); + } else { + eValue = perform.getNum(); } + + // 创建HttpClient实例 HttpClient httpClient = HttpClient.newBuilder() .connectTimeout(Duration.ofSeconds(10)) .build(); - // 创建HttpRequest - String url = base + data + "&wmsgpad=" + time + "&wmd=" + wmd; - System.out.println(url); HttpRequest request = HttpRequest.newBuilder() - .uri(new URI(url)) + .uri(new URI("https://faneventapi.weverse.io/api/v1/user/events/" + eValue)) .GET() .header("Authorization", "Bearer " + applies.get(0).getToken()) .header("Origin", "https://weverse.io") .header("Referer", "https://weverse.io/") .header("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36") .build(); - // 发送请求并获取响应 HttpResponse response = httpClient.send(request, HttpResponse.BodyHandlers.ofString()); - String eValue = null; - // 检查响应状态码 - if (response.statusCode() == 403) { - // 打印响应体 - String responseBody = response.body(); - WeverseResponse weverseResponse = JSONObject.parseObject(responseBody, WeverseResponse.class); - if (weverseResponse == null || weverseResponse.getData() == null || - weverseResponse.getData().getButton() == null || - weverseResponse.getData().getButton().getWebLink() == null || - weverseResponse.getData().getButton().getWebLink().getUrl() == null || - weverseResponse.getData().getButton().getWebLink().getUrl().isEmpty()) { - throw new Exception("button获取失败"); - } - URI uri = new URI(weverseResponse.getData().getButton().getWebLink().getUrl()); - - String query = uri.getQuery(); - String[] params = query.split("&"); - Map paramMap = new HashMap<>(); - - for (String param : params) { - String[] keyValue = param.split("="); - String key = URLDecoder.decode(keyValue[0], "UTF-8"); - String value = URLDecoder.decode(keyValue[1], "UTF-8"); - paramMap.put(key, value); + if (response.statusCode() == 200) { + WeverseAgree weverseAgree = JSONObject.parseObject(response.body(), WeverseAgree.class); + System.out.println(weverseAgree); + if (weverseAgree == null || weverseAgree.getMetadata() == null || + weverseAgree.getMetadata().getForm() == null || + weverseAgree.getMetadata().getForm().getTerms() == null || + weverseAgree.getMetadata().getForm().getTerms().isEmpty()) { + throw new Exception("协议未找到"); } - // 获取参数e的值 - eValue = paramMap.get("e"); + StringBuffer sb = new StringBuffer(); + weverseAgree.getMetadata().getForm().getTerms().forEach(str -> { + sb.append(str.getId()).append(","); + }); + sb.deleteCharAt(sb.length() - 1); - System.out.println(weverseResponse); - } else { - throw new Exception("button请求失败"); + String agree = sb.toString(); + if (!agree.isEmpty()) { + perform1.setAgree(agree); + } + log.info(agree); } - if (eValue == null || eValue.isEmpty()) { - throw new Exception("button为空"); - } - - Perform perform1 = new Perform(); perform1.setId(pid); - perform1.setNum(eValue); performMapper.updatePerform(perform1); } @@ -189,6 +228,7 @@ public class RyTask { * @param pid */ public void rob(Long pid, Long jobId) throws Exception { + log.info("pid:" + pid + " 任务开始了"); //status Perform pStatus1 = new Perform(); pStatus1.setStatus("2"); @@ -243,7 +283,6 @@ public class RyTask { ObjectMapper mapper = new ObjectMapper(); String jsonPayload = mapper.writeValueAsString(eventData); - System.out.println(jsonPayload); HttpClient client = HttpClient.newHttpClient(); HttpRequest request = HttpRequest.newBuilder() .uri(URI.create(url)) @@ -252,7 +291,7 @@ public class RyTask { .header("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36") .POST(HttpRequest.BodyPublishers.ofString(jsonPayload)) .build(); - req.add(new MyReq(client, request, a.getName())); + req.add(new MyReq(client, request, a.getWeverseEmail())); } Calendar calendar = Calendar.getInstance(); @@ -260,7 +299,7 @@ public class RyTask { calendar.add(Calendar.HOUR_OF_DAY, -1); long start = calendar.getTimeInMillis(); long now = System.currentTimeMillis(); - Thread.sleep(start - now); + Thread.sleep(start - now - 500); log.info("抢票开始了"); for (MyReq r : req) { log.info("【用户】:" + r.getUser()); @@ -282,6 +321,13 @@ public class RyTask { pStatus2.setStatus("3"); pStatus2.setId(pid); performMapper.updatePerform(pStatus2); + + for (Apply upApply : applies) { + Apply apply1 = new Apply(); + apply1.setId(upApply.getId()); + apply1.setStatus("6"); + applyMapper.updateApply(apply1); + } } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/task/WeverseAgree.java b/ruoyi-admin/src/main/java/com/ruoyi/web/task/WeverseAgree.java new file mode 100644 index 0000000..987fb68 --- /dev/null +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/task/WeverseAgree.java @@ -0,0 +1,20 @@ +package com.ruoyi.web.task; + +public class WeverseAgree { + private WeverseMetadata metadata; + + public WeverseMetadata getMetadata() { + return metadata; + } + + public void setMetadata(WeverseMetadata metadata) { + this.metadata = metadata; + } + + @Override + public String toString() { + return "WeverseAgree{" + + "metadata=" + metadata + + '}'; + } +} diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/task/WeverseForm.java b/ruoyi-admin/src/main/java/com/ruoyi/web/task/WeverseForm.java new file mode 100644 index 0000000..452565c --- /dev/null +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/task/WeverseForm.java @@ -0,0 +1,23 @@ +package com.ruoyi.web.task; + +import java.util.List; + +public class WeverseForm { + + private List terms; + + public List getTerms() { + return terms; + } + + public void setTerms(List terms) { + this.terms = terms; + } + + @Override + public String toString() { + return "WeverseForm{" + + "terms=" + terms + + '}'; + } +} diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/task/WeverseMetadata.java b/ruoyi-admin/src/main/java/com/ruoyi/web/task/WeverseMetadata.java new file mode 100644 index 0000000..85f56ce --- /dev/null +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/task/WeverseMetadata.java @@ -0,0 +1,20 @@ +package com.ruoyi.web.task; + +public class WeverseMetadata { + private WeverseForm form; + + public WeverseForm getForm() { + return form; + } + + public void setForm(WeverseForm form) { + this.form = form; + } + + @Override + public String toString() { + return "WeverseMetadata{" + + "form=" + form + + '}'; + } +} diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/task/WeverseTerms.java b/ruoyi-admin/src/main/java/com/ruoyi/web/task/WeverseTerms.java new file mode 100644 index 0000000..58b34bf --- /dev/null +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/task/WeverseTerms.java @@ -0,0 +1,20 @@ +package com.ruoyi.web.task; + +public class WeverseTerms { + private Long id; + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + @Override + public String toString() { + return "WeverseTerms{" + + "id=" + id + + '}'; + } +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/domain/WeverseAgree.java b/ruoyi-system/src/main/java/com/ruoyi/system/domain/WeverseAgree.java new file mode 100644 index 0000000..4e2457c --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/system/domain/WeverseAgree.java @@ -0,0 +1,30 @@ +package com.ruoyi.system.domain; + +public class WeverseAgree { + private String userStatus; + private WeverseMetadata metadata; + + public WeverseMetadata getMetadata() { + return metadata; + } + + public void setMetadata(WeverseMetadata metadata) { + this.metadata = metadata; + } + + public String getUserStatus() { + return userStatus; + } + + public void setUserStatus(String userStatus) { + this.userStatus = userStatus; + } + + @Override + public String toString() { + return "WeverseAgree{" + + "userStatus='" + userStatus + '\'' + + ", metadata=" + metadata + + '}'; + } +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/domain/WeverseForm.java b/ruoyi-system/src/main/java/com/ruoyi/system/domain/WeverseForm.java new file mode 100644 index 0000000..dd19057 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/system/domain/WeverseForm.java @@ -0,0 +1,23 @@ +package com.ruoyi.system.domain; + +import java.util.List; + +public class WeverseForm { + + private List terms; + + public List getTerms() { + return terms; + } + + public void setTerms(List terms) { + this.terms = terms; + } + + @Override + public String toString() { + return "WeverseForm{" + + "terms=" + terms + + '}'; + } +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/domain/WeverseMetadata.java b/ruoyi-system/src/main/java/com/ruoyi/system/domain/WeverseMetadata.java new file mode 100644 index 0000000..48b5fd9 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/system/domain/WeverseMetadata.java @@ -0,0 +1,20 @@ +package com.ruoyi.system.domain; + +public class WeverseMetadata { + private WeverseForm form; + + public WeverseForm getForm() { + return form; + } + + public void setForm(WeverseForm form) { + this.form = form; + } + + @Override + public String toString() { + return "WeverseMetadata{" + + "form=" + form + + '}'; + } +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/domain/WeverseTerms.java b/ruoyi-system/src/main/java/com/ruoyi/system/domain/WeverseTerms.java new file mode 100644 index 0000000..4e01c42 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/system/domain/WeverseTerms.java @@ -0,0 +1,20 @@ +package com.ruoyi.system.domain; + +public class WeverseTerms { + private Long id; + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + @Override + public String toString() { + return "WeverseTerms{" + + "id=" + id + + '}'; + } +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/ApplyMapper.java b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/ApplyMapper.java index 13a7fff..99d9974 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/ApplyMapper.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/ApplyMapper.java @@ -29,6 +29,8 @@ public interface ApplyMapper public List selectApplyListAllow(Apply apply); + public List selectApplyListRob(Apply apply); + public Apply selectApplyPerform(Apply apply); diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/IPerformService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/IPerformService.java index 9dc5b82..f6108e7 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service/IPerformService.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/IPerformService.java @@ -1,5 +1,6 @@ package com.ruoyi.system.service; +import java.io.IOException; import java.util.List; import com.ruoyi.system.domain.Perform; @@ -74,4 +75,6 @@ public interface IPerformService { * @return 结果 */ public int deletePerformById(Long id); + + public boolean refresh(Long id) throws Exception; } diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/PerformServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/PerformServiceImpl.java index f773711..395e50d 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/PerformServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/PerformServiceImpl.java @@ -1,15 +1,25 @@ package com.ruoyi.system.service.impl; +import java.io.IOException; +import java.net.URI; +import java.net.http.HttpClient; +import java.net.http.HttpRequest; +import java.net.http.HttpResponse; import java.text.SimpleDateFormat; +import java.time.Duration; import java.util.Calendar; import java.util.Date; import java.util.List; import java.util.TimeZone; +import com.alibaba.fastjson2.JSONObject; import com.ruoyi.common.exception.job.TaskException; import com.ruoyi.common.utils.DateUtils; import com.ruoyi.quartz.domain.SysJob; import com.ruoyi.quartz.service.ISysJobService; +import com.ruoyi.system.domain.Apply; +import com.ruoyi.system.domain.WeverseAgree; +import com.ruoyi.system.mapper.ApplyMapper; import org.quartz.SchedulerException; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -30,6 +40,8 @@ public class PerformServiceImpl implements IPerformService { private PerformMapper performMapper; @Autowired private ISysJobService jobService; + @Autowired + private ApplyMapper applyMapper; /** * 查询演出 @@ -202,4 +214,48 @@ public class PerformServiceImpl implements IPerformService { public int deletePerformById(Long id) { return performMapper.deletePerformById(id); } + + @Override + public boolean refresh(Long id) throws Exception { + //人员 + Apply apply = new Apply(); + apply.setPerformId(id); + List applies = applyMapper.selectApplyListRob(apply); + if (applies.isEmpty()) { + return false; + } + for (Apply a : applies) { + // 创建HttpClient实例 + HttpClient httpClient = HttpClient.newBuilder() + .connectTimeout(Duration.ofSeconds(10)) + .build(); + + HttpRequest request = HttpRequest.newBuilder() + .uri(new URI("https://faneventapi.weverse.io/api/v1/user/events/4632")) + .GET() + .header("Authorization", "Bearer " + a.getToken()) + .header("Origin", "https://weverse.io") + .header("Referer", "https://weverse.io/") + .header("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36") + .build(); + // 发送请求并获取响应 + HttpResponse response = httpClient.send(request, HttpResponse.BodyHandlers.ofString()); + if (response.statusCode() == 200) { + WeverseAgree weverseAgree = JSONObject.parseObject(response.body(), WeverseAgree.class); + System.out.println(weverseAgree); + if (weverseAgree == null || weverseAgree.getUserStatus() == null) { + throw new Exception("状态未找到"); + } + + if ("DROPPED".equals(weverseAgree.getUserStatus())) { + Apply apply1 = new Apply(); + apply1.setId(a.getId()); + apply1.setStatus("4"); + applyMapper.updateApply(apply1); + } + + } + } + return true; + } } diff --git a/ruoyi-system/src/main/resources/mapper/ApplyMapper.xml b/ruoyi-system/src/main/resources/mapper/ApplyMapper.xml index d51d99a..770d329 100644 --- a/ruoyi-system/src/main/resources/mapper/ApplyMapper.xml +++ b/ruoyi-system/src/main/resources/mapper/ApplyMapper.xml @@ -100,6 +100,29 @@ and a.token is not null + +