diff --git a/game-dao/src/main/java/awesome/group/game/dao/mapper/MatrixAdvRecordMapper.java b/game-dao/src/main/java/awesome/group/game/dao/mapper/MatrixAdvRecordMapper.java index d2390c7..7982bef 100644 --- a/game-dao/src/main/java/awesome/group/game/dao/mapper/MatrixAdvRecordMapper.java +++ b/game-dao/src/main/java/awesome/group/game/dao/mapper/MatrixAdvRecordMapper.java @@ -29,4 +29,7 @@ public interface MatrixAdvRecordMapper extends BaseMapper { @Select("select * from matrix_adv_record where user_id = #{userId} order by id desc limit 1") MatrixAdvRecord queryByUid(Integer userId); + + @Select("select * from matrix_adv_record_20250116 where user_id = #{userId} order by id desc limit 1") + MatrixAdvRecord queryByUidOld(Integer userId); } diff --git a/game-service/src/main/java/awesome/group/game/service/matrix/SuperAdminService.java b/game-service/src/main/java/awesome/group/game/service/matrix/SuperAdminService.java index 24cba03..f74bf0c 100644 --- a/game-service/src/main/java/awesome/group/game/service/matrix/SuperAdminService.java +++ b/game-service/src/main/java/awesome/group/game/service/matrix/SuperAdminService.java @@ -5,10 +5,10 @@ import awesome.group.game.dao.mapper.*; import awesome.group.game.service.bo.AddMockScheduleReq; import awesome.group.game.service.bo.matrix.AppNormalConfig; import awesome.group.game.service.bo.matrix.WhiteUserBo; -import awesome.group.game.service.cache.CacheKey; import awesome.group.game.service.cache.JedisManager; import awesome.group.game.service.common.log.L; import awesome.group.game.service.util.Constants; +import awesome.group.game.service.util.DateUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; @@ -27,6 +27,7 @@ import java.util.concurrent.ThreadLocalRandom; import java.util.stream.Collectors; import static awesome.group.game.service.util.Constants.SUPER_ADMIN; +import static java.util.concurrent.ThreadLocalRandom.current; @Service public class SuperAdminService { @@ -62,6 +63,9 @@ public class SuperAdminService { @Autowired private JedisManager jedisManager; + @Autowired + private AdminService adminService; + public List evilAppList() { List app = evilAppMapper.selectList(null); Collections.reverse(app); @@ -176,6 +180,51 @@ public class SuperAdminService { res.forEach(x -> superAdminService.mockData(x.getId())); } + public void mockDay(int date, String appCode) { + MatrixApp app = appMapper.queryByCode(appCode); + long beginTime = 32400_000L + current().nextInt(0, 7200000);//9点到11点之间随机 + beginTime += DateUtil.date2Long(date) + beginTime; + int total = ThreadLocalRandom.current().nextInt(1000_000_00, 1500_000_00); + int current = 0; + List userIds = innerUserMapper.queryByAppId(app.getId()); + if (CollectionUtils.isEmpty(userIds)) { + return; + } + List users = userMapper.selectBatchIds(userIds); + Map map = new HashMap<>(); + for (MatrixUser x : users) { + MatrixAdvRecord record = advRecordMapper.queryByUidOld(x.getId()); + map.put(x.getId(), record); + } + while (current < total) { + int ecpm = 3000_00 + ThreadLocalRandom.current().nextInt(3000_00); + current += ecpm; + MatrixUser u = users.get(ThreadLocalRandom.current().nextInt(0, users.size())); + MatrixAdvRecord record = map.get(u.getId()); + MatrixAdvRecord newRecord = new MatrixAdvRecord(); + newRecord.setDeviceId(record.getDeviceId()); + newRecord.setAppId(app.getId()); + newRecord.setAdvId(null); + newRecord.setPlatform(2); + newRecord.setAdvType(Constants.VIDEO); + newRecord.setEcpm((long) ecpm); + AppNormalConfig config = AppNormalConfig.getConfig(app); + long ecpmReal = config.getEcpmReal(ecpm, u); + newRecord.setEcpmReal(ecpmReal); + newRecord.setUserId(u.getId()); + newRecord.setDeviceName(record.getDeviceName()); + newRecord.setDeviceBrand(record.getDeviceBrand()); + newRecord.setIp(record.getIp()); + newRecord.setAdminId(null); + newRecord.setCreatedAt(new Timestamp(beginTime)); + advRecordMapper.insert(newRecord); + + beginTime += ThreadLocalRandom.current().nextInt(3000, 10000); + } + + adminService.calcTargetDate(date); + } + @Async public void mockData(Integer scheduleId) { MatrixMockScheduleV2 schedule = mockScheduleV2Mapper.selectById(scheduleId); diff --git a/game-service/src/test/java/awesome/group/game/service/matrix/SuperAdminServiceTest.java b/game-service/src/test/java/awesome/group/game/service/matrix/SuperAdminServiceTest.java new file mode 100644 index 0000000..8f2dc24 --- /dev/null +++ b/game-service/src/test/java/awesome/group/game/service/matrix/SuperAdminServiceTest.java @@ -0,0 +1,18 @@ +package awesome.group.game.service.matrix; + +import awesome.group.game.service.BaseTest; +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; + +import static org.junit.jupiter.api.Assertions.*; + +class SuperAdminServiceTest extends BaseTest { + + @Autowired + private SuperAdminService superAdminService; + + @Test + void mockDay() { + superAdminService.mockDay(20250213,"FowYcFClsW"); + } +} \ No newline at end of file diff --git a/game-web/src/main/java/awesome/group/game/web/rest/matrix/SuperAdminController.java b/game-web/src/main/java/awesome/group/game/web/rest/matrix/SuperAdminController.java index 1bfd84a..6e36828 100644 --- a/game-web/src/main/java/awesome/group/game/web/rest/matrix/SuperAdminController.java +++ b/game-web/src/main/java/awesome/group/game/web/rest/matrix/SuperAdminController.java @@ -92,4 +92,11 @@ public class SuperAdminController { superAdminService.addMockSchedule(bo, RequestContext.getAdminID()); return new R<>(R.CODE_SUCCESS, "ok", null); } + + @GetMapping("/mockDay") + @RestApi + public R mock(@RequestParam Integer date, @RequestParam String appCode){ + superAdminService.mockDay(date,appCode); + return new R<>(R.CODE_SUCCESS, "ok", null); + } }