zhangxianyu 1 éve
szülő
commit
df14f6c2e0

+ 14 - 0
game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/pojo/dto/RoleRechargeRankingDTO.java

@@ -225,4 +225,18 @@ public class RoleRechargeRankingDTO extends BasePage {
      */
     @ApiModelProperty(value = "创角24小时以内累计充值金额范围单位(>=,<=,=,<,>)")
     private String rechargeTotalAmountWithin24hUnit = ">=";
+
+    /**
+     * 角色最近活跃时间最小值
+     */
+    @ApiModelProperty(value = "角色最近活跃时间最小值")
+    private LocalDate lastActiveTimeMin;
+
+    /**
+     * 角色最近活跃时间最大值
+     */
+    @ApiModelProperty(value = "角色最近活跃时间最大值")
+    private LocalDate lastActiveTimeMax;
+
+
 }

+ 11 - 15
game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/service/impl/OrderCostMonitorAlarmBySmsServiceImpl.java

@@ -12,7 +12,6 @@ import org.nutz.dao.Dao;
 import org.nutz.dao.Sqls;
 import org.nutz.dao.sql.Criteria;
 import org.nutz.dao.sql.Sql;
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 
@@ -31,7 +30,7 @@ public class OrderCostMonitorAlarmBySmsServiceImpl implements IOrderCostMonitorA
     @Resource
     private RedisUtil<String> redisUtil;
 
-    @Autowired
+    @Resource
     private AliSmsService aliSmsService;
 
     @Resource
@@ -55,7 +54,7 @@ public class OrderCostMonitorAlarmBySmsServiceImpl implements IOrderCostMonitorA
         LocalDateTime date = LocalDateTime.now().minusMinutes(30);
         //查询订单表
         Sql orderSql = getSql(getOrderCountSql(date));
-        Integer count = orderSql.getInt(0);
+        int count = orderSql.getInt(0);
         //如果为0直接告警
         if (count == 0) {
             String msg = "前半小时订单表数据为空,请检查";
@@ -72,7 +71,7 @@ public class OrderCostMonitorAlarmBySmsServiceImpl implements IOrderCostMonitorA
         LocalDateTime date = LocalDateTime.now().minusMinutes(30);
         //查询头条广告表
         Sql headCostSql = getSql(getheadCostCountSql(date));
-        Integer newHeadCostCount = headCostSql.getInt(0);
+        int newHeadCostCount = headCostSql.getInt(0);
         //从redis中取旧的消耗值
         String oldHeadCostCount = redisUtil.getCache(HEADLINE_COST_COUNT);
         if(StringUtils.isNotBlank(oldHeadCostCount)){
@@ -87,7 +86,7 @@ public class OrderCostMonitorAlarmBySmsServiceImpl implements IOrderCostMonitorA
             }
         }
         //将新数据存入redis  30分钟
-        redisUtil.setCache(HEADLINE_COST_COUNT, newHeadCostCount.toString(), 60 * 30);
+        redisUtil.setCache(HEADLINE_COST_COUNT, Integer.toString(newHeadCostCount), 60 * 30);
 
     }
 
@@ -97,7 +96,7 @@ public class OrderCostMonitorAlarmBySmsServiceImpl implements IOrderCostMonitorA
         LocalDateTime date = LocalDateTime.now().minusMinutes(30);
         //查询腾讯广告表
         Sql tencentCostSql = getSql(getTencentCostSqlSql(date));
-        Integer newTencentCostCount = tencentCostSql.getInt(0);
+        int newTencentCostCount = tencentCostSql.getInt(0);
         //从redis中取旧的消耗值
         String oldTencentCostCount = redisUtil.getCache(TENCENT_COST_COUNT);
         if(StringUtils.isNotBlank(oldTencentCostCount)){
@@ -110,15 +109,15 @@ public class OrderCostMonitorAlarmBySmsServiceImpl implements IOrderCostMonitorA
             }
         }
         //将新数据存入redis  30分钟
-        redisUtil.setCache(TENCENT_COST_COUNT, newTencentCostCount.toString(), 60 * 30);
+        redisUtil.setCache(TENCENT_COST_COUNT, Integer.toString(newTencentCostCount), 60 * 30);
     }
 
 
 
     /**
      * 发送短信
-     * @param content
-     * @return
+     * @param content 内容
+     * @return 是否发送成功
      */
     private Boolean sendSms(String content) {
         Date date = new Date();
@@ -159,30 +158,27 @@ public class OrderCostMonitorAlarmBySmsServiceImpl implements IOrderCostMonitorA
         Criteria cri = Cnd.cri();
         cri.where().and("day", ">=", date.toLocalDate());
         cri.where().and("hour", "=", date.getHour());
-        String sql = """
+        return """
                 select sum(cost) from ods_ad_tencent_data_game.t_gdt_adgroups_data_hour
                 """ + cri;
-        return sql;
     }
 
     private String getheadCostCountSql(LocalDateTime date) {
         Criteria cri = Cnd.cri();
         cri.where().and("day", ">=", date.toLocalDate());
         cri.where().and("hour", "=", date.getHour());
-        String sql = """
+        return """
                 select sum(cost) from ods_ad_byte_data_game.t_ad_data_hour
                 """ + cri;
-        return sql;
     }
 
     private String getOrderCountSql(LocalDateTime localDateTime) {
         Criteria criteria = Cnd.cri();
         criteria.where().and("create_time", ">=", localDateTime);
         criteria.where().and("source_system", "=", "ZX_ONE");
-        String sql = """
+        return """
                   select count(*) from dm_game_order.t_game_order
                 """ + criteria;
-        return sql;
     }
 
 

+ 16 - 64
game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/service/impl/RoleManageServiceImpl.java

@@ -101,7 +101,7 @@ public class RoleManageServiceImpl implements IRoleManageService {
             //去掉字符串中的‘[]’
             String str = (String) map.get("role_amount");
             if(str!=null&&str.contains("[") && str.contains("]")){
-                map.put("role_amount", str.replaceAll("\\[|\\]", ""));
+                map.put("role_amount", str.replaceAll("[\\[\\]]", ""));
             }
             //去除‘null’字符串
             List<String> nullStringKeys = Arrays.asList("add_corp_user_id", "user_wechat", "remark", "user_phone", "country");
@@ -111,7 +111,7 @@ public class RoleManageServiceImpl implements IRoleManageService {
         }
         //去重userIds
         userIds = userIds.stream().distinct().collect(Collectors.toList());
-        //发送RPC接口查询所有用户
+//        //发送RPC接口查询所有用户
         ResultVO<Map<Long, String>> userMap = sysUserRpc.getUserNameByIds(userIds);
 
         for (Map map : list) {
@@ -162,10 +162,10 @@ public class RoleManageServiceImpl implements IRoleManageService {
 
         //拼接24内充值金额条件
         if(dto.getRechargeAmountWithin24h()!=null){
-            criA = spliceRechargeAmountWithin24h(dto, criA);
+            spliceRechargeAmountWithin24h(dto, criA);
         }
         if(dto.getRechargeTotalAmountWithin24h()!=null){
-            criA = spliceRechargeTotalAmountWithin24h(dto, criA);
+            spliceRechargeTotalAmountWithin24h(dto, criA);
         }
 
         if (CollectionUtils.isNotEmpty(dto.getParentGameIds())) {
@@ -296,12 +296,16 @@ public class RoleManageServiceImpl implements IRoleManageService {
                 criA.where().andEquals("is_add_corp_wechat", dto.getIsAddCorpWechat());
             }
         }
+        //角色最近活跃时间
+        if(dto.getLastActiveTimeMax()!=null && dto.getLastActiveTimeMin()!=null){
+            criA.where().andBetween("DATE(role_active_time)", dto.getLastActiveTimeMin(), dto.getLastActiveTimeMax());
+        }
+
         return criA;
     }
 
     /**
      * 根据时间条件生成查询sql
-     * @return
      */
     private Criteria getDateSqlByQuery(RoleRechargeRankingDTO dto){
         Criteria criTodayAmount = Cnd.cri();
@@ -315,21 +319,18 @@ public class RoleManageServiceImpl implements IRoleManageService {
     }
 
 
-    private Criteria spliceRechargeTotalAmountWithin24h(RoleRechargeRankingDTO dto, Criteria criA) {
+    private void spliceRechargeTotalAmountWithin24h(RoleRechargeRankingDTO dto, Criteria criA) {
         switch (dto.getRechargeTotalAmountWithin24hUnit()) {
             case ">" -> criA.where().andGT("role_total_amount", dto.getRechargeTotalAmountWithin24h());
             case ">=" -> criA.where().andGTE("role_total_amount", dto.getRechargeTotalAmountWithin24h());
             case "=" -> criA.where().andEquals("role_total_amount", dto.getRechargeTotalAmountWithin24h());
             case "<" -> criA.where().andLT("role_total_amount", dto.getRechargeTotalAmountWithin24h());
             case "<=" -> criA.where().andLTE("role_total_amount", dto.getRechargeTotalAmountWithin24h());
-            default -> {
-                criA.where().andGTE("role_total_amount", dto.getRechargeTotalAmountWithin24h());
-            }
+            default -> criA.where().andGTE("role_total_amount", dto.getRechargeTotalAmountWithin24h());
         }
-        return criA;
     }
 
-    private Criteria spliceRechargeAmountWithin24h(RoleRechargeRankingDTO dto, Criteria criA) {
+    private void spliceRechargeAmountWithin24h(RoleRechargeRankingDTO dto, Criteria criA) {
         switch (dto.getRechargeAmountWithin24hUnit()) {
             case ">" -> criA.where().andGT("max_amount", dto.getRechargeAmountWithin24h());
 //            case ">=" -> criA.where().andGTE("max_amount", dto.getRechargeAmountWithin24h());
@@ -337,11 +338,8 @@ public class RoleManageServiceImpl implements IRoleManageService {
             case "=" -> criA.where().andEquals("array_contains(role_amount,"+dto.getRechargeAmountWithin24h()+")", 1);
             case "<" -> criA.where().andLT("min_amount", dto.getRechargeAmountWithin24h());
 //            case "<=" -> criA.where().andLTE("max_amount", dto.getRechargeAmountWithin24h());
-            default -> {
-                criA.where().andGT("max_amount", dto.getRechargeAmountWithin24h());
-            }
+            default -> criA.where().andGT("max_amount", dto.getRechargeAmountWithin24h());
         }
-        return criA;
     }
 
     /**
@@ -385,7 +383,6 @@ public class RoleManageServiceImpl implements IRoleManageService {
 
     /**
      * 创建发送消息任务
-     * @param dto
      */
     @Override
     public void createSendMsgTask(SendMsgTaskDTO dto) {
@@ -438,8 +435,6 @@ public class RoleManageServiceImpl implements IRoleManageService {
 
     /**
      * 获取角色列表
-     * @param dto
-     * @return
      */
     @Override
     public List<Map> getRoleList(RoleRechargeRankingDTO dto) {
@@ -457,10 +452,10 @@ public class RoleManageServiceImpl implements IRoleManageService {
 
         //拼接24内充值金额条件
         if(dto.getRechargeAmountWithin24h()!=null){
-            criA = spliceRechargeAmountWithin24h(dto, criA);
+            spliceRechargeAmountWithin24h(dto, criA);
         }
         if(dto.getRechargeTotalAmountWithin24h()!=null){
-            criA = spliceRechargeTotalAmountWithin24h(dto, criA);
+            spliceRechargeTotalAmountWithin24h(dto, criA);
         }
 
         if (CollectionUtils.isNotEmpty(dto.getParentGameIds())) {
@@ -659,8 +654,6 @@ public class RoleManageServiceImpl implements IRoleManageService {
 
     /**
      * 获取创建人名称
-     * @param sendMsgTaskList
-     * @return
      */
     private Map<Long, String> getCreateByNameMap(PageUtil<SendMsgVO> sendMsgTaskList) {
         //取创建人id变成list
@@ -717,9 +710,7 @@ public class RoleManageServiceImpl implements IRoleManageService {
             List<TaskResultDTO> list = sql.getList(TaskResultDTO.class);
             //拼成map key为角色id
             HashMap<String, TaskResultDTO> taskResultMap = new HashMap<>();
-            list.forEach(item -> {
-                taskResultMap.put(item.getRoleId(), item);
-            });
+            list.forEach(item -> taskResultMap.put(item.getRoleId(), item));
             sendMsgTaskResultList.getRecords().forEach(item -> {
                 TaskResultDTO taskResultDto = taskResultMap.get(item.getRoleId());
                 if(taskResultDto!=null){
@@ -778,45 +769,6 @@ public class RoleManageServiceImpl implements IRoleManageService {
                 """;
     }
 
-    /**
-     * 通过id获取 GS、运营、客服人员、投手名字
-     * @param dataMap dataMap
-     * @return String
-     */
-    private Map<String, Object> getNameById(Map<String, Object> dataMap){
-
-        //投手名
-        if (dataMap.get("put_user_id") != null) {
-            if (sysUserRpc.getById(Long.valueOf((String) dataMap.get("put_user_id"))).getData() != null) {
-                dataMap.put("put_user_name",
-                        sysUserRpc.getById(Long.valueOf((String) dataMap.get("put_user_id"))).getData().getNickname());
-            }
-        }
-        //运营人员名
-        if (dataMap.get("oper_user_id") != null) {
-            if (sysUserRpc.getById((Long) dataMap.get("oper_user_id")).getData() != null) {
-                dataMap.put("oper_user_name",
-                        sysUserRpc.getById((Long) dataMap.get("oper_user_id")).getData().getNickname());
-            }
-        }
-        //GS人员名
-        if (dataMap.get("gs_id") != null) {
-            if (sysUserRpc.getById((Long) dataMap.get("gs_id")).getData() != null) {
-                dataMap.put("gs_name",
-                        sysUserRpc.getById((Long) dataMap.get("gs_id")).getData().getNickname());
-            }
-        }
-        //客服人员名
-        if (dataMap.get("customer_service_id") != null) {
-            if (sysUserRpc.getById((Long) dataMap.get("customer_service_id")).getData() != null) {
-                dataMap.put("customer_service_name",
-                        sysUserRpc.getById((Long) dataMap.get("customer_service_id")).getData().getNickname());
-            }
-        }
-
-        return dataMap;
-    }
-
     /**
      * 原始服-父游戏
      * @param dto RoleCombatRankingDTO

+ 22 - 42
game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/utils/Threads.java

@@ -5,24 +5,22 @@ import org.slf4j.LoggerFactory;
 
 import java.util.concurrent.*;
 
+
 /**
- * 线程相关工具类.
+  * @author ZhangXianyu
+  * {@code @date} 2024/3/22
+  * {@code @description} 线程工具类
  */
-public class Threads
-{
+public class Threads {
     private static final Logger logger = LoggerFactory.getLogger(Threads.class);
 
     /**
      * sleep等待,单位为毫秒
      */
-    public static void sleep(long milliseconds)
-    {
-        try
-        {
+    public static void sleep(long milliseconds) {
+        try {
             Thread.sleep(milliseconds);
-        }
-        catch (InterruptedException e)
-        {
+        } catch (InterruptedException e) {
             return;
         }
     }
@@ -34,24 +32,17 @@ public class Threads
      * 如果仍然超時,則強制退出.
      * 另对在shutdown时线程本身被调用中断做了处理.
      */
-    public static void shutdownAndAwaitTermination(ExecutorService pool)
-    {
-        if (pool != null && !pool.isShutdown())
-        {
+    public static void shutdownAndAwaitTermination(ExecutorService pool) {
+        if (pool != null && !pool.isShutdown()) {
             pool.shutdown();
-            try
-            {
-                if (!pool.awaitTermination(120, TimeUnit.SECONDS))
-                {
+            try {
+                if (!pool.awaitTermination(120, TimeUnit.SECONDS)) {
                     pool.shutdownNow();
-                    if (!pool.awaitTermination(120, TimeUnit.SECONDS))
-                    {
+                    if (!pool.awaitTermination(120, TimeUnit.SECONDS)) {
                         logger.info("Pool did not terminate");
                     }
                 }
-            }
-            catch (InterruptedException ie)
-            {
+            } catch (InterruptedException ie) {
                 pool.shutdownNow();
                 Thread.currentThread().interrupt();
             }
@@ -61,33 +52,22 @@ public class Threads
     /**
      * 打印线程异常信息
      */
-    public static void printException(Runnable r, Throwable t)
-    {
-        if (t == null && r instanceof Future<?>)
-        {
-            try
-            {
+    public static void printException(Runnable r, Throwable t) {
+        if (t == null && r instanceof Future<?>) {
+            try {
                 Future<?> future = (Future<?>) r;
-                if (future.isDone())
-                {
+                if (future.isDone()) {
                     future.get();
                 }
-            }
-            catch (CancellationException ce)
-            {
+            } catch (CancellationException ce) {
                 t = ce;
-            }
-            catch (ExecutionException ee)
-            {
+            } catch (ExecutionException ee) {
                 t = ee.getCause();
-            }
-            catch (InterruptedException ie)
-            {
+            } catch (InterruptedException ie) {
                 Thread.currentThread().interrupt();
             }
         }
-        if (t != null)
-        {
+        if (t != null) {
             logger.error(t.getMessage(), t);
         }
     }