diff --git a/src/main/java/jj/tech/paolu/biz/webadmin/component/Hgt8Component.java b/src/main/java/jj/tech/paolu/biz/webadmin/component/Hgt8Component.java index 60b5fdc..0a604fa 100644 --- a/src/main/java/jj/tech/paolu/biz/webadmin/component/Hgt8Component.java +++ b/src/main/java/jj/tech/paolu/biz/webadmin/component/Hgt8Component.java @@ -4,6 +4,9 @@ import java.net.URI; import java.time.LocalDate; import java.time.format.DateTimeFormatter; import java.util.HashMap; +import java.util.concurrent.CompletableFuture; +import java.util.concurrent.atomic.AtomicInteger; +import java.util.function.Function; import org.apache.commons.codec.binary.Base64; import org.slf4j.Logger; @@ -40,12 +43,13 @@ public class Hgt8Component{ public static Browser browser; public static HashMap instances = new HashMap(); public static Boolean headless; - public static Long defaultTimeout = 6000L; + public static Long defaultTimeout = 10000L; public BrowserContext browserContext; public APIRequestContext aPIRequestContext; public Page page; public Idc9998AdminInfo admin; + public AtomicInteger wrong_times = new AtomicInteger(0); @Autowired Idc9998Sevice idc9998Sevice; @@ -73,8 +77,10 @@ public class Hgt8Component{ .setHeadless(headless) .setSlowMo(200) ); -// Idc9998AdminInfo admin = idc9998Sevice.getByUserName("bk7897"); -// this.addInstance(admin.getUser_name()); + + Idc9998AdminInfo admin = idc9998Sevice.getByUserName("bk7897"); + this.addInstance(admin.getUser_name()); + logger.info("playwright started"); } @@ -141,7 +147,7 @@ public class Hgt8Component{ public Boolean login() { - if(this.admin.getIs_online() == 1) { + if(this.admin.getIs_online() != 1) { return this.forceLogin(); }else { return true; @@ -180,9 +186,24 @@ public class Hgt8Component{ .locator("xpath=//input[@class='protocol-btn-y']") .click(); + //关闭弹窗 + ifr_main.getByTestId("tc_Close") + .click(); + + this.page.frameLocator("#ifr_main") + .locator("xpath=//input[@class='protocol-btn-y']") + .click(); + + + this.page.frameLocator("#ifr_main") + .locator("#jishi-order") + .click(); + + Response s = page.waitForResponse(resp -> { - System.out.println(resp.url()); - if(resp.status() == 200) { + System.err.println(resp.url()); + if(resp.status() == 200 ) { + return true; }else { return false; @@ -214,13 +235,48 @@ public class Hgt8Component{ } + public CompletableFuture G_24_Curr() { + CompletableFuture future = CompletableFuture.supplyAsync(() -> { + Response response = page.waitForResponse(resp -> { + System.err.println(resp.url()); + if(resp.status() == 200 ) { + return true; + }else { + return false; + } + }, + () -> { + System.out.println("所有返回相应"); + } + ); + return response; + }); + + + return future.handleAsync((Response re, Throwable ex) -> { + if(ex != null) { + ex.printStackTrace(); + wrong_times.getAndIncrement(); + if(wrong_times.get()>3) { + return future; + } + + return G_24_Curr(); + } else { + return G_24_Curr(); + } + }) + .thenCompose(Function.identity()); + + + } public void G_24_His(Integer page, String issuet, LocalDate localDate) { try { if(this.admin.getIs_online()==1) { HashMap pram = new HashMap(); - pram.put("gameID", Games.G_21.getCode()); + pram.put("gameID", Games.G_24.getCode()); pram.put("currtentPage",page.toString()); pram.put("asDate",localDate.format(DateTimeFormatter.ofPattern("yyyy-MM-dd"))); pram.put("issuet", ""); diff --git a/src/main/java/jj/tech/paolu/biz/webadmin/controller/Idc9998Controller.java b/src/main/java/jj/tech/paolu/biz/webadmin/controller/Idc9998Controller.java index 4cc8965..e0297bb 100644 --- a/src/main/java/jj/tech/paolu/biz/webadmin/controller/Idc9998Controller.java +++ b/src/main/java/jj/tech/paolu/biz/webadmin/controller/Idc9998Controller.java @@ -2,149 +2,36 @@ package jj.tech.paolu.biz.webadmin.controller; import java.util.HashMap; import java.util.List; -import java.util.function.Function; -import static org.mybatis.dynamic.sql.SqlBuilder.*; - -import org.mybatis.dynamic.sql.SqlBuilder; -import org.mybatis.dynamic.sql.render.RenderingStrategies; -import org.mybatis.dynamic.sql.select.QueryExpressionDSL; -import org.mybatis.dynamic.sql.select.SelectModel; -import org.mybatis.dynamic.sql.select.render.SelectStatementProvider; -import org.mybatis.dynamic.sql.where.WhereApplier; -import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; import jj.tech.paolu.biz.webadmin.component.Hgt8Component; -import jj.tech.paolu.biz.webadmin.dao.SelectMapper; -import jj.tech.paolu.biz.webadmin.service.G24Service; -import jj.tech.paolu.biz.webadmin.vo.Id; -import jj.tech.paolu.biz.webadmin.vo.Idc9998AdminAddVo; -import jj.tech.paolu.biz.webadmin.vo.Idc9998AdminListVo; -import jj.tech.paolu.biz.webadmin.vo.Idc9998AdminUpdateVo; +import jj.tech.paolu.biz.webadmin.vo.IdPageVo; +import jj.tech.paolu.config.enums.Games; import jj.tech.paolu.repository.mybatis.dao.CurrentG24Mapper; -import jj.tech.paolu.repository.mybatis.dao.Idc9998AdminInfoMapper; -import jj.tech.paolu.repository.mybatis.dao.support.Idc9998AdminInfoDynamicSqlSupport; +import jj.tech.paolu.repository.mybatis.dao.HistoryG24Mapper; +import jj.tech.paolu.repository.mybatis.dao.support.HistoryG24DynamicSqlSupport; import jj.tech.paolu.repository.mybatis.entity.CurrentG24; +import jj.tech.paolu.repository.mybatis.entity.HistoryG24; import jj.tech.paolu.repository.mybatis.entity.Idc9998AdminInfo; -import jj.tech.paolu.utils.IDHelp; import jj.tech.paolu.utils.Page; import jj.tech.paolu.utils.R; @RestController -@RequestMapping(value = "/op/idc9998",name = "导航到hgt8") +@RequestMapping(value = "/op/idc9998",name = "游戏报告列表") +@Tag(name = "Idc9998Controller", description = "游戏报告列表") public class Idc9998Controller { - @Autowired Hgt8Component hgt8Component; - @Autowired G24Service g24Service; - @Autowired SelectMapper selectMapper; @Autowired CurrentG24Mapper currentG24Mapper; - @Autowired Idc9998AdminInfoMapper idc9998AdminInfoMapper; - - - - @Operation(summary = "Idc9998管理列表") - @PostMapping("/listAdmin") - public Object listAdmin(@Validated @RequestBody Idc9998AdminListVo parame) { - - Page p = new Page(parame.pageNum, parame.pageSize); - - Function, QueryExpressionDSL> function = - s -> { - var from = s - .from(Idc9998AdminInfoDynamicSqlSupport.idc9998AdminInfo) - ; - return from; - }; - - var where = SqlBuilder.where(); - where.and(Idc9998AdminInfoDynamicSqlSupport.manager_name, isEqualToWhenPresent(parame.manager_name)); - where.and(Idc9998AdminInfoDynamicSqlSupport.member_name, isEqualToWhenPresent(parame.member_name)); - where.and(Idc9998AdminInfoDynamicSqlSupport.user_name, isEqualToWhenPresent(parame.user_name)); - where.and(Idc9998AdminInfoDynamicSqlSupport.user_password, isEqualToWhenPresent(parame.user_password)); - where.and(Idc9998AdminInfoDynamicSqlSupport.domain, isEqualToWhenPresent(parame.domain)); - - WhereApplier applier = where.toWhereApplier(); - - SelectStatementProvider provider = function.apply(select(Idc9998AdminInfoMapper.selectList)) - .applyWhere(applier) - .configureStatement(config -> config.setNonRenderingWhereClauseAllowed(true)) - .groupBy(Idc9998AdminInfoDynamicSqlSupport.id) - .orderBy(Idc9998AdminInfoDynamicSqlSupport.id.descending()) - .limit(p.getPageSize()) - .offset(p.limitStart()) - .build() - .render(RenderingStrategies.MYBATIS3); - - - SelectStatementProvider count = select(count()) - .from(function.apply(select(Idc9998AdminInfoMapper.selectList)) - .applyWhere(applier) - .groupBy(Idc9998AdminInfoDynamicSqlSupport.id) - .orderBy(Idc9998AdminInfoDynamicSqlSupport.id.descending()), - "t1") - .configureStatement(config -> config.setNonRenderingWhereClauseAllowed(true)) - .build() - .render(RenderingStrategies.MYBATIS3); - - - - var list = selectMapper.selectMany(provider); - long total = selectMapper.count(count); - p.setList(list); - p.setTotal(total); - return R.SUCCESS(p); - - } - - - - @Operation(summary = "添加Idc9998管理员信息") - @PostMapping("/addAdmin") - public Object addAdmin(@Validated @RequestBody Idc9998AdminAddVo parame) { - - Idc9998AdminInfo bean = new Idc9998AdminInfo(); - BeanUtils.copyProperties(parame, bean); - bean.setId(IDHelp.getInstance().nextId()); - - idc9998AdminInfoMapper.insertSelective(bean); - - return R.SUCCESS(bean); - } - - @Operation(summary = "", description = "") - @PostMapping("/updateAdmin") - public Object updateAdmin(@Validated @RequestBody Idc9998AdminUpdateVo parame) { - Idc9998AdminInfo bean = new Idc9998AdminInfo(); - BeanUtils.copyProperties(parame, bean); - idc9998AdminInfoMapper.updateByPrimaryKeySelective(bean); - return R.SUCCESS(bean); - } - - @Operation(summary = "", description = "") - @PostMapping("/getAdmin") - public Object getAdmin(@Validated @RequestBody Id parame) { - - Idc9998AdminInfo bean = - idc9998AdminInfoMapper.selectByPrimaryKey(parame.id).orElse(null); - return R.SUCCESS(bean); - } - - @Operation(summary = "", description = "") - @PostMapping("/deleteAdmin") - public Object deleteAdmin(@Validated @RequestBody Id parame) { - idc9998AdminInfoMapper.deleteByPrimaryKey(parame.id); - return R.SUCCESS("ok"); - } - + @Autowired HistoryG24Mapper historyG24Mapper; + @Autowired Hgt8Component hgt8Component; @Operation(summary = "获取最新游戏数据", description = "test") @@ -160,6 +47,36 @@ public class Idc9998Controller { return R.SUCCESS(r); } + @Operation(summary = "获取历史游戏数据, G_24幸运飞艇,G_29极速时时彩,G_30极速赛车,G_31极速飞艇,G_35澳洲幸运5,G_37澳洲幸运10", + description = "test,目前只有G24") + @PostMapping("/getHistory") + public Object getHistory(IdPageVo parame) { + Page p = new Page(parame.pageNum, parame.pageSize); + + if(Games.G_24.getCode().equals(parame.id)) { + List list = + historyG24Mapper.select(s->s + .orderBy(HistoryG24DynamicSqlSupport.addTime.descending()) + .limit(p.getPageSize()) + .offset(p.limitStart()) + ); + return R.SUCCESS(list); + } + + return R.FALSE("无法找到该游戏数据"); + + } + +// @Operation(summary = "test login") +// @PostMapping("/login") +// public Object login() { +//// Idc9998AdminInfo admin = idc9998Sevice.getByUserName("bk7897"); +// hgt8Component.getInstance("bk7897").login(); +// +// return R.FALSE("无法找到该游戏数据"); +// +// } + } diff --git a/src/main/java/jj/tech/paolu/biz/webadmin/controller/Idc9998ProxyAccountContronller.java b/src/main/java/jj/tech/paolu/biz/webadmin/controller/Idc9998ProxyAccountContronller.java new file mode 100644 index 0000000..5d8ee67 --- /dev/null +++ b/src/main/java/jj/tech/paolu/biz/webadmin/controller/Idc9998ProxyAccountContronller.java @@ -0,0 +1,139 @@ +package jj.tech.paolu.biz.webadmin.controller; + +import static org.mybatis.dynamic.sql.SqlBuilder.count; +import static org.mybatis.dynamic.sql.SqlBuilder.isEqualToWhenPresent; +import static org.mybatis.dynamic.sql.SqlBuilder.select; + +import java.util.function.Function; + +import org.mybatis.dynamic.sql.SqlBuilder; +import org.mybatis.dynamic.sql.render.RenderingStrategies; +import org.mybatis.dynamic.sql.select.QueryExpressionDSL; +import org.mybatis.dynamic.sql.select.SelectModel; +import org.mybatis.dynamic.sql.select.render.SelectStatementProvider; +import org.mybatis.dynamic.sql.where.WhereApplier; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; +import jj.tech.paolu.biz.webadmin.dao.SelectMapper; +import jj.tech.paolu.biz.webadmin.vo.Id; +import jj.tech.paolu.biz.webadmin.vo.Idc9998AdminAddVo; +import jj.tech.paolu.biz.webadmin.vo.Idc9998AdminListVo; +import jj.tech.paolu.biz.webadmin.vo.Idc9998AdminUpdateVo; +import jj.tech.paolu.repository.mybatis.dao.Idc9998AdminInfoMapper; +import jj.tech.paolu.repository.mybatis.dao.support.Idc9998AdminInfoDynamicSqlSupport; +import jj.tech.paolu.repository.mybatis.entity.Idc9998AdminInfo; +import jj.tech.paolu.utils.IDHelp; +import jj.tech.paolu.utils.Page; +import jj.tech.paolu.utils.R; + +@RestController +@RequestMapping(value = "/op/idc9998/admin",name = "账号管理,代采账号列表") +@Tag(name = "Idc9998ProxyAccountContronller", description = "账号管理,代采账号列表") +public class Idc9998ProxyAccountContronller { + + @Autowired SelectMapper selectMapper; + @Autowired Idc9998AdminInfoMapper idc9998AdminInfoMapper; + + + @Operation(summary = "用于采集的账号列表") + @PostMapping("/list") + public Object list(@Validated @RequestBody Idc9998AdminListVo parame) { + + Page p = new Page(parame.pageNum, parame.pageSize); + + Function, QueryExpressionDSL> function = + s -> { + var from = s + .from(Idc9998AdminInfoDynamicSqlSupport.idc9998AdminInfo) + ; + return from; + }; + + var where = SqlBuilder.where(); + where.and(Idc9998AdminInfoDynamicSqlSupport.manager_name, isEqualToWhenPresent(parame.manager_name)); + where.and(Idc9998AdminInfoDynamicSqlSupport.member_name, isEqualToWhenPresent(parame.member_name)); + where.and(Idc9998AdminInfoDynamicSqlSupport.user_name, isEqualToWhenPresent(parame.user_name)); + where.and(Idc9998AdminInfoDynamicSqlSupport.user_password, isEqualToWhenPresent(parame.user_password)); + where.and(Idc9998AdminInfoDynamicSqlSupport.domain, isEqualToWhenPresent(parame.domain)); + + WhereApplier applier = where.toWhereApplier(); + + SelectStatementProvider provider = function.apply(select(Idc9998AdminInfoMapper.selectList)) + .applyWhere(applier) + .configureStatement(config -> config.setNonRenderingWhereClauseAllowed(true)) + .groupBy(Idc9998AdminInfoDynamicSqlSupport.id) + .orderBy(Idc9998AdminInfoDynamicSqlSupport.id.descending()) + .limit(p.getPageSize()) + .offset(p.limitStart()) + .build() + .render(RenderingStrategies.MYBATIS3); + + + SelectStatementProvider count = select(count()) + .from(function.apply(select(Idc9998AdminInfoMapper.selectList)) + .applyWhere(applier) + .groupBy(Idc9998AdminInfoDynamicSqlSupport.id) + .orderBy(Idc9998AdminInfoDynamicSqlSupport.id.descending()), + "t1") + .configureStatement(config -> config.setNonRenderingWhereClauseAllowed(true)) + .build() + .render(RenderingStrategies.MYBATIS3); + + + + var list = selectMapper.selectMany(provider); + long total = selectMapper.count(count); + p.setList(list); + p.setTotal(total); + return R.SUCCESS(p); + + } + + + + @Operation(summary = "新增代采账号") + @PostMapping("/add") + public Object add(@Validated @RequestBody Idc9998AdminAddVo parame) { + + Idc9998AdminInfo bean = new Idc9998AdminInfo(); + BeanUtils.copyProperties(parame, bean); + bean.setId(IDHelp.getInstance().nextId()); + + idc9998AdminInfoMapper.insertSelective(bean); + + return R.SUCCESS(bean); + } + + @Operation(summary = "", description = "") + @PostMapping("/update") + public Object update(@Validated @RequestBody Idc9998AdminUpdateVo parame) { + Idc9998AdminInfo bean = new Idc9998AdminInfo(); + BeanUtils.copyProperties(parame, bean); + idc9998AdminInfoMapper.updateByPrimaryKeySelective(bean); + return R.SUCCESS(bean); + } + + @Operation(summary = "", description = "") + @PostMapping("/get") + public Object get(@Validated @RequestBody Id parame) { + Idc9998AdminInfo bean = + idc9998AdminInfoMapper.selectByPrimaryKey(parame.id).orElse(null); + return R.SUCCESS(bean); + } + + @Operation(summary = "", description = "") + @PostMapping("/delete") + public Object delete(@Validated @RequestBody Id parame) { + idc9998AdminInfoMapper.deleteByPrimaryKey(parame.id); + return R.SUCCESS("ok"); + } + +} diff --git a/src/main/java/jj/tech/paolu/biz/webadmin/controller/Idc9998ProxyMemberContronller.java b/src/main/java/jj/tech/paolu/biz/webadmin/controller/Idc9998ProxyMemberContronller.java new file mode 100644 index 0000000..142e441 --- /dev/null +++ b/src/main/java/jj/tech/paolu/biz/webadmin/controller/Idc9998ProxyMemberContronller.java @@ -0,0 +1,13 @@ +package jj.tech.paolu.biz.webadmin.controller; + +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import io.swagger.v3.oas.annotations.tags.Tag; + +@RestController +@RequestMapping(value = "/op/idc9998/admin",name = "会员账号列表(未开发)") +@Tag(name = "Idc9998ProxyMemberContronller", description = "会员账号列表(未开发)") +public class Idc9998ProxyMemberContronller { + +} diff --git a/src/main/java/jj/tech/paolu/biz/webadmin/controller/YMcodeController.java b/src/main/java/jj/tech/paolu/biz/webadmin/controller/YMcodeController.java index b50ba26..a6dad42 100644 --- a/src/main/java/jj/tech/paolu/biz/webadmin/controller/YMcodeController.java +++ b/src/main/java/jj/tech/paolu/biz/webadmin/controller/YMcodeController.java @@ -1,7 +1,5 @@ package jj.tech.paolu.biz.webadmin.controller; -import java.util.Map; - import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; @@ -9,12 +7,14 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; import jj.tech.paolu.biz.webadmin.vo.YmCodeVo; import jj.tech.paolu.utils.R; import jj.tech.paolu.utils.YMHttp; @RestController @RequestMapping(value = "/op/ym",name = "云码图片识别接口") +@Tag(name = "YMcodeController", description = "云码图片识别接口") public class YMcodeController { @Operation(summary = "需要识别图片的base64字符串", description = "image_base64") diff --git a/src/main/java/jj/tech/paolu/config/enums/Games.java b/src/main/java/jj/tech/paolu/config/enums/Games.java index 6dd367f..4b2c912 100644 --- a/src/main/java/jj/tech/paolu/config/enums/Games.java +++ b/src/main/java/jj/tech/paolu/config/enums/Games.java @@ -1,7 +1,7 @@ package jj.tech.paolu.config.enums; public enum Games { - G_21("G_21","幸运飞艇"), + G_24("G_24","幸运飞艇"), G_29("G_29", "极速时时彩"), G_30("G_30", "极速赛车"), G_31("G_31", "极速飞艇"), diff --git a/src/test/java/test/nw/FutureTest.java b/src/test/java/test/nw/FutureTest.java new file mode 100644 index 0000000..7aaecd4 --- /dev/null +++ b/src/test/java/test/nw/FutureTest.java @@ -0,0 +1,38 @@ +package test.nw; + +import java.util.concurrent.CompletableFuture; +import java.util.concurrent.atomic.AtomicInteger; +import java.util.function.Function; + +public class FutureTest { + + static AtomicInteger erro = new AtomicInteger(0); + + public static void main(String[] args) { + String result = call("aaa") + .join(); + System.out.println(result); + + } + + private static CompletableFuture call(String user) { + + CompletableFuture future = CompletableFuture.supplyAsync(() -> { + int i= 1/0; + return "resl"; + }); + + return future.handleAsync((String result, Throwable ex) -> { + // or any other Predicate that is satisfied against ex + if(ex != null) { + ex.printStackTrace(); + System.out.println(erro.get()); + erro.getAndIncrement(); + return call(user); + } else { + return future; + } + }).thenCompose(Function.identity()); + } + +}