diff --git a/austin-common/src/main/java/com/java3y/austin/common/constant/AustinConstant.java b/austin-common/src/main/java/com/java3y/austin/common/constant/AustinConstant.java index 9ba45b4..c6a9de1 100644 --- a/austin-common/src/main/java/com/java3y/austin/common/constant/AustinConstant.java +++ b/austin-common/src/main/java/com/java3y/austin/common/constant/AustinConstant.java @@ -7,18 +7,15 @@ package com.java3y.austin.common.constant; * @author 3y */ public class AustinConstant { - /** * businessId默认的长度 * 生成的逻辑:com.java3y.austin.support.utils.TaskInfoUtils#generateBusinessId(java.lang.Long, java.lang.Integer) */ - public final static Integer BUSINESS_ID_LENGTH = 16; - + public static final Integer BUSINESS_ID_LENGTH = 16; /** * 接口限制 最多的人数 */ public static final Integer BATCH_RECEIVER_SIZE = 100; - /** * 消息发送给全部人的标识 * (企业微信 应用消息) @@ -26,14 +23,11 @@ public class AustinConstant { * (钉钉工作消息) */ public static final String SEND_ALL = "@all"; - - /** * 链路追踪缓存的key标识 */ public static final String CACHE_KEY_PREFIX = "Austin"; public static final String MESSAGE_ID = "MessageId"; - /** * 消息模板常量; * 如果新建模板/账号时,没传入则用该常量 @@ -42,7 +36,6 @@ public class AustinConstant { public static final String DEFAULT_UPDATOR = "Java3y"; public static final String DEFAULT_TEAM = "Java3y公众号"; public static final String DEFAULT_AUDITOR = "Java3y"; - /** * 项目打印常量 */ @@ -59,6 +52,9 @@ public class AustinConstant { "| | | || | | || | | || | | || | | || | | |\n" + "| '--------------' || '--------------' || '--------------' || '--------------' || '--------------' || '--------------' |\n" + " '----------------' '----------------' '----------------' '----------------' '----------------' '----------------' \n"; + private AustinConstant() { + + } } diff --git a/austin-common/src/main/java/com/java3y/austin/common/constant/CommonConstant.java b/austin-common/src/main/java/com/java3y/austin/common/constant/CommonConstant.java index c661948..2b44495 100644 --- a/austin-common/src/main/java/com/java3y/austin/common/constant/CommonConstant.java +++ b/austin-common/src/main/java/com/java3y/austin/common/constant/CommonConstant.java @@ -5,48 +5,37 @@ package com.java3y.austin.common.constant; * @author 3y */ public class CommonConstant { - - public final static String PERIOD = "."; - public final static String COMMA = ","; - public final static String COLON = ":"; - public final static String SEMICOLON = ";"; - public final static String POUND = "#"; - public final static String SLASH = "/"; - public final static String BACKSLASH = "\\"; - public final static String EMPTY_STRING = ""; - public final static String RADICAL = "|"; - - public final static String QM_STRING = "?"; - public final static String EQUAL_STRING = "="; - public final static String AND_STRING = "&"; - - - public final static String ONE = "1"; - public final static String ZERO = "0"; - public final static String MINUS_ONE = "-1"; - public final static String YES = "Y"; - public final static String NO = "N"; - - - public final static char QM = '?'; - + public static final String PERIOD = "."; + public static final String COMMA = ","; + public static final String COLON = ":"; + public static final String SEMICOLON = ";"; + public static final String POUND = "#"; + public static final String SLASH = "/"; + public static final String BACKSLASH = "\\"; + public static final String EMPTY_STRING = ""; + public static final String RADICAL = "|"; + public static final String QM_STRING = "?"; + public static final String EQUAL_STRING = "="; + public static final String AND_STRING = "&"; + public static final String ONE = "1"; + public static final String ZERO = "0"; + public static final String MINUS_ONE = "-1"; + public static final String YES = "Y"; + public static final String NO = "N"; + public static final char QM = '?'; /** * boolean转换 */ - public final static Integer TRUE = 1; - public final static Integer FALSE = 0; - - + public static final Integer TRUE = 1; + public static final Integer FALSE = 0; /** * 加密算法 */ public static final String HMAC_SHA256_ENCRYPTION_ALGO = "HmacSHA256"; - /** * 编码格式 */ public static final String CHARSET_NAME = "UTF-8"; - /** * HTTP请求内容格式 */ @@ -55,29 +44,27 @@ public class CommonConstant { public static final String CONTENT_TYPE_XML = "application/xml; charset=UTF-8"; public static final String CONTENT_TYPE_FORM_URL_ENCODE = "application/x-www-form-urlencoded;charset=utf-8;"; public static final String CONTENT_TYPE_MULTIPART_FORM_DATA = "multipart/form-data"; - /** * HTTP 请求方法 */ public static final String REQUEST_METHOD_GET = "GET"; public static final String REQUEST_METHOD_POST = "POST"; - /** * JSON默认值 */ - public final static String EMPTY_JSON_OBJECT = "{}"; - public final static String EMPTY_VALUE_JSON_ARRAY = "[]"; - + public static final String EMPTY_JSON_OBJECT = "{}"; + public static final String EMPTY_VALUE_JSON_ARRAY = "[]"; /** * cron时间格式 */ - public final static String CRON_FORMAT = "ss mm HH dd MM ? yyyy-yyyy"; - + public static final String CRON_FORMAT = "ss mm HH dd MM ? yyyy-yyyy"; /** * 环境常量 */ - public final static String ENV_DEV = "dev"; - public final static String ENV_TEST = "test"; + public static final String ENV_DEV = "dev"; + public static final String ENV_TEST = "test"; + private CommonConstant() { + } } \ No newline at end of file diff --git a/austin-common/src/main/java/com/java3y/austin/common/constant/OfficialAccountParamConstant.java b/austin-common/src/main/java/com/java3y/austin/common/constant/OfficialAccountParamConstant.java index e6f4a4d..5a18800 100644 --- a/austin-common/src/main/java/com/java3y/austin/common/constant/OfficialAccountParamConstant.java +++ b/austin-common/src/main/java/com/java3y/austin/common/constant/OfficialAccountParamConstant.java @@ -14,34 +14,28 @@ public class OfficialAccountParamConstant { public static final String RAW = "raw"; public static final String AES = "aes"; public static final String MSG_SIGNATURE = "msg_signature"; - - /** * 处理器名 */ public static final String SCAN_HANDLER = "scanHandler"; public static final String SUBSCRIBE_HANDLER = "subscribeHandler"; public static final String UNSUBSCRIBE_HANDLER = "unSubscribeHandler"; - - /** * 配置的beanName名 */ public static final String WE_CHAT_LOGIN_CONFIG = "weChatLoginConfig"; - - /** * 二维码场景值的前缀 */ public static final String QR_CODE_SCENE_PREFIX = "qrscene_"; - - /** * 扫码/关注后/取消关注后的服务号文案 */ public static final String SUBSCRIBE_TIPS = "项目群还有少量名额,添加我的微信 java3yyy 备注【项目】,我会拉入官方项目交流群"; public static final String SCAN_TIPS = "咋又扫码啦?重新关注一波吧!"; public static final String UNSUBSCRIBE_TIPS = "老乡别走!"; + private OfficialAccountParamConstant() { + } } diff --git a/austin-common/src/main/java/com/java3y/austin/common/constant/SendChanelUrlConstant.java b/austin-common/src/main/java/com/java3y/austin/common/constant/SendChanelUrlConstant.java index 8857d45..d6f0742 100644 --- a/austin-common/src/main/java/com/java3y/austin/common/constant/SendChanelUrlConstant.java +++ b/austin-common/src/main/java/com/java3y/austin/common/constant/SendChanelUrlConstant.java @@ -7,7 +7,6 @@ package com.java3y.austin.common.constant; * @author 3y */ public class SendChanelUrlConstant { - /** * 个推相关的url */ @@ -16,8 +15,6 @@ public class SendChanelUrlConstant { public static final String GE_TUI_BATCH_PUSH_CREATE_TASK_PATH = "/push/list/message"; public static final String GE_TUI_BATCH_PUSH_PATH = "/push/list/cid"; public static final String GE_TUI_AUTH = "/auth"; - - /** * 钉钉工作消息相关的url */ @@ -26,21 +23,22 @@ public class SendChanelUrlConstant { public static final String DING_DING_PULL_URL = "https://oapi.dingtalk.com/topapi/message/corpconversation/getsendresult"; public static final String DING_DING_UPLOAD_URL = "https://oapi.dingtalk.com/media/upload"; public static final String DING_DING_TOKEN_URL = "https://oapi.dingtalk.com/gettoken"; - /** * 企业微信机器人相关的url */ public static final String ENTERPRISE_WE_CHAT_ROBOT_URL = "https://qyapi.weixin.qq.com/cgi-bin/webhook/upload_media?key=&type="; - /** * 支付宝小程序相关的url */ public static final String ALI_MINI_PROGRAM_GATEWAY_URL = "https://openapi.alipaydev.com/gateway.do"; - /** * 微信小程序相关的url */ public static final String WE_CHAT_MINI_PROGRAM_OPENID_SYNC = "https://api.weixin.qq.com/sns/jscode2session?appid=&secret=&js_code=&grant_type=authorization_code"; + private SendChanelUrlConstant() { + + } + } diff --git a/austin-common/src/main/java/com/java3y/austin/common/constant/ThreadPoolConstant.java b/austin-common/src/main/java/com/java3y/austin/common/constant/ThreadPoolConstant.java index 49b4eb6..8b4b730 100644 --- a/austin-common/src/main/java/com/java3y/austin/common/constant/ThreadPoolConstant.java +++ b/austin-common/src/main/java/com/java3y/austin/common/constant/ThreadPoolConstant.java @@ -7,15 +7,12 @@ package com.java3y.austin.common.constant; * @author 3y */ public class ThreadPoolConstant { - - /** * small */ public static final Integer SINGLE_CORE_POOL_SIZE = 1; public static final Integer SINGLE_MAX_POOL_SIZE = 1; public static final Integer SMALL_KEEP_LIVE_TIME = 10; - /** * medium */ @@ -23,10 +20,12 @@ public class ThreadPoolConstant { public static final Integer COMMON_MAX_POOL_SIZE = 2; public static final Integer COMMON_KEEP_LIVE_TIME = 60; public static final Integer COMMON_QUEUE_SIZE = 128; - - /** * big queue size */ public static final Integer BIG_QUEUE_SIZE = 1024; + + + private ThreadPoolConstant() { + } } diff --git a/austin-common/src/main/java/com/java3y/austin/common/dto/account/sms/LinTongSmsAccount.java b/austin-common/src/main/java/com/java3y/austin/common/dto/account/sms/LinTongSmsAccount.java index df9e11b..542288f 100644 --- a/austin-common/src/main/java/com/java3y/austin/common/dto/account/sms/LinTongSmsAccount.java +++ b/austin-common/src/main/java/com/java3y/austin/common/dto/account/sms/LinTongSmsAccount.java @@ -30,13 +30,4 @@ public class LinTongSmsAccount extends SmsAccount { private String userName; private String password; - /** - * 标识渠道商Id - */ - private Integer supplierId; - - /** - * 标识渠道商名字 - */ - private String supplierName; } diff --git a/austin-common/src/main/java/com/java3y/austin/common/dto/model/AlipayMiniProgramContentModel.java b/austin-common/src/main/java/com/java3y/austin/common/dto/model/AlipayMiniProgramContentModel.java index 1d7e47c..9a4adaf 100644 --- a/austin-common/src/main/java/com/java3y/austin/common/dto/model/AlipayMiniProgramContentModel.java +++ b/austin-common/src/main/java/com/java3y/austin/common/dto/model/AlipayMiniProgramContentModel.java @@ -20,6 +20,6 @@ public class AlipayMiniProgramContentModel extends ContentModel { /** * 模板消息发送的数据 */ - Map map; + private Map map; } diff --git a/austin-common/src/main/java/com/java3y/austin/common/dto/model/MiniProgramContentModel.java b/austin-common/src/main/java/com/java3y/austin/common/dto/model/MiniProgramContentModel.java index 230e4b3..37d0f94 100644 --- a/austin-common/src/main/java/com/java3y/austin/common/dto/model/MiniProgramContentModel.java +++ b/austin-common/src/main/java/com/java3y/austin/common/dto/model/MiniProgramContentModel.java @@ -18,7 +18,7 @@ public class MiniProgramContentModel extends ContentModel { /** * 模板消息发送的数据 */ - Map miniProgramParam; + private Map miniProgramParam; /** * 模板Id diff --git a/austin-common/src/main/java/com/java3y/austin/common/pipeline/ProcessContext.java b/austin-common/src/main/java/com/java3y/austin/common/pipeline/ProcessContext.java index e9f4965..b75171a 100644 --- a/austin-common/src/main/java/com/java3y/austin/common/pipeline/ProcessContext.java +++ b/austin-common/src/main/java/com/java3y/austin/common/pipeline/ProcessContext.java @@ -7,6 +7,8 @@ import lombok.Data; import lombok.NoArgsConstructor; import lombok.experimental.Accessors; +import java.io.Serializable; + /** * 责任链上下文 * @@ -17,7 +19,7 @@ import lombok.experimental.Accessors; @NoArgsConstructor @Builder @Accessors(chain = true) -public class ProcessContext { +public class ProcessContext implements Serializable { /** * 标识责任链的code */ diff --git a/austin-common/src/main/java/com/java3y/austin/common/pipeline/ProcessController.java b/austin-common/src/main/java/com/java3y/austin/common/pipeline/ProcessController.java index 32c9ba6..44c5322 100644 --- a/austin-common/src/main/java/com/java3y/austin/common/pipeline/ProcessController.java +++ b/austin-common/src/main/java/com/java3y/austin/common/pipeline/ProcessController.java @@ -46,7 +46,7 @@ public class ProcessController { List processList = templateConfig.get(context.getCode()).getProcessList(); for (BusinessProcess businessProcess : processList) { businessProcess.process(context); - if (context.getNeedBreak()) { + if (Boolean.TRUE.equals(context.getNeedBreak())) { break; } } @@ -84,7 +84,7 @@ public class ProcessController { // 执行模板列表 List processList = processTemplate.getProcessList(); - if (Objects.isNull(processList) || processList.size() == 0) { + if (Objects.isNull(processList) || processList.isEmpty()) { context.setResponse(BasicResultVO.fail(RespStatusEnum.PROCESS_LIST_IS_NULL)); throw new ProcessException(context); } diff --git a/austin-cron/src/main/java/com/java3y/austin/cron/config/CronAsyncThreadPoolConfig.java b/austin-cron/src/main/java/com/java3y/austin/cron/config/CronAsyncThreadPoolConfig.java index 4749fd4..054adfc 100644 --- a/austin-cron/src/main/java/com/java3y/austin/cron/config/CronAsyncThreadPoolConfig.java +++ b/austin-cron/src/main/java/com/java3y/austin/cron/config/CronAsyncThreadPoolConfig.java @@ -23,6 +23,8 @@ public class CronAsyncThreadPoolConfig { */ public static final String EXECUTE_XXL_THREAD_POOL_NAME = "execute-xxl-thread-pool"; + private CronAsyncThreadPoolConfig() { + } /** * 业务:消费pending队列实际的线程池 diff --git a/austin-cron/src/main/java/com/java3y/austin/cron/constants/PendingConstant.java b/austin-cron/src/main/java/com/java3y/austin/cron/constants/PendingConstant.java index 9c87aa0..b723c37 100644 --- a/austin-cron/src/main/java/com/java3y/austin/cron/constants/PendingConstant.java +++ b/austin-cron/src/main/java/com/java3y/austin/cron/constants/PendingConstant.java @@ -6,21 +6,21 @@ package com.java3y.austin.cron.constants; * 延迟缓冲 pending 常量信息 */ public class PendingConstant { - /** * 阻塞队列大小 */ public static final Integer QUEUE_SIZE = 100; - /** * 触发执行的数量阈值 */ public static final Integer NUM_THRESHOLD = 100; - /** * batch 触发执行的时间阈值,单位毫秒【必填】 */ public static final Long TIME_THRESHOLD = 1000L; + private PendingConstant() { + } + } diff --git a/austin-cron/src/main/java/com/java3y/austin/cron/handler/NightShieldLazyPendingHandler.java b/austin-cron/src/main/java/com/java3y/austin/cron/handler/NightShieldLazyPendingHandler.java index 2114fe9..ed29faa 100644 --- a/austin-cron/src/main/java/com/java3y/austin/cron/handler/NightShieldLazyPendingHandler.java +++ b/austin-cron/src/main/java/com/java3y/austin/cron/handler/NightShieldLazyPendingHandler.java @@ -1,6 +1,6 @@ package com.java3y.austin.cron.handler; -import cn.hutool.core.util.StrUtil; +import cn.hutool.core.text.CharSequenceUtil; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.serializer.SerializerFeature; import com.google.common.base.Throwables; @@ -46,7 +46,7 @@ public class NightShieldLazyPendingHandler { SupportThreadPoolConfig.getPendingSingleThreadPool().execute(() -> { while (redisUtils.lLen(NIGHT_SHIELD_BUT_NEXT_DAY_SEND_KEY) > 0) { String taskInfo = redisUtils.lPop(NIGHT_SHIELD_BUT_NEXT_DAY_SEND_KEY); - if (StrUtil.isNotBlank(taskInfo)) { + if (CharSequenceUtil.isNotBlank(taskInfo)) { try { kafkaTemplate.send(topicName, JSON.toJSONString(Arrays.asList(JSON.parseObject(taskInfo, TaskInfo.class)) , new SerializerFeature[]{SerializerFeature.WriteClassName})); diff --git a/austin-cron/src/main/java/com/java3y/austin/cron/handler/RefreshDingDingAccessTokenHandler.java b/austin-cron/src/main/java/com/java3y/austin/cron/handler/RefreshDingDingAccessTokenHandler.java index e45c9c2..9e9746a 100644 --- a/austin-cron/src/main/java/com/java3y/austin/cron/handler/RefreshDingDingAccessTokenHandler.java +++ b/austin-cron/src/main/java/com/java3y/austin/cron/handler/RefreshDingDingAccessTokenHandler.java @@ -1,6 +1,6 @@ package com.java3y.austin.cron.handler; -import cn.hutool.core.util.StrUtil; +import cn.hutool.core.text.CharSequenceUtil; import com.alibaba.fastjson.JSON; import com.java3y.austin.common.constant.CommonConstant; import com.java3y.austin.common.dto.account.DingDingWorkNoticeAccount; @@ -50,7 +50,7 @@ public class RefreshDingDingAccessTokenHandler { for (ChannelAccount channelAccount : accountList) { DingDingWorkNoticeAccount account = JSON.parseObject(channelAccount.getAccountConfig(), DingDingWorkNoticeAccount.class); String accessToken = accessTokenUtils.getAccessToken(ChannelType.DING_DING_WORK_NOTICE.getCode(), channelAccount.getId().intValue(), account, true); - if (StrUtil.isNotBlank(accessToken)) { + if (CharSequenceUtil.isNotBlank(accessToken)) { redisTemplate.opsForValue().set(ChannelType.DING_DING_WORK_NOTICE.getAccessTokenPrefix() + channelAccount.getId(), accessToken); } } diff --git a/austin-cron/src/main/java/com/java3y/austin/cron/handler/RefreshGeTuiAccessTokenHandler.java b/austin-cron/src/main/java/com/java3y/austin/cron/handler/RefreshGeTuiAccessTokenHandler.java index f4b374d..fcff2a5 100644 --- a/austin-cron/src/main/java/com/java3y/austin/cron/handler/RefreshGeTuiAccessTokenHandler.java +++ b/austin-cron/src/main/java/com/java3y/austin/cron/handler/RefreshGeTuiAccessTokenHandler.java @@ -1,6 +1,6 @@ package com.java3y.austin.cron.handler; -import cn.hutool.core.util.StrUtil; +import cn.hutool.core.text.CharSequenceUtil; import com.alibaba.fastjson.JSON; import com.java3y.austin.common.constant.CommonConstant; import com.java3y.austin.common.dto.account.GeTuiAccount; @@ -50,7 +50,7 @@ public class RefreshGeTuiAccessTokenHandler { for (ChannelAccount channelAccount : accountList) { GeTuiAccount account = JSON.parseObject(channelAccount.getAccountConfig(), GeTuiAccount.class); String accessToken = accessTokenUtils.getAccessToken(ChannelType.PUSH.getCode(), channelAccount.getId().intValue(), account, true); - if (StrUtil.isNotBlank(accessToken)) { + if (CharSequenceUtil.isNotBlank(accessToken)) { redisTemplate.opsForValue().set(ChannelType.PUSH.getAccessTokenPrefix() + channelAccount.getId(), accessToken); } } diff --git a/austin-cron/src/main/java/com/java3y/austin/cron/pending/CrowdBatchTaskPending.java b/austin-cron/src/main/java/com/java3y/austin/cron/pending/CrowdBatchTaskPending.java index d3de60c..685d065 100644 --- a/austin-cron/src/main/java/com/java3y/austin/cron/pending/CrowdBatchTaskPending.java +++ b/austin-cron/src/main/java/com/java3y/austin/cron/pending/CrowdBatchTaskPending.java @@ -2,7 +2,7 @@ package com.java3y.austin.cron.pending; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.map.MapUtil; -import cn.hutool.core.util.StrUtil; +import cn.hutool.core.text.StrPool; import com.google.common.collect.Lists; import com.java3y.austin.common.constant.AustinConstant; import com.java3y.austin.cron.config.CronAsyncThreadPoolConfig; @@ -61,7 +61,7 @@ public class CrowdBatchTaskPending extends AbstractLazyPending { paramMap.put(vars, receiver); } else { String newReceiver = StringUtils.join(new String[]{ - paramMap.get(vars), receiver}, StrUtil.COMMA); + paramMap.get(vars), receiver}, StrPool.COMMA); paramMap.put(vars, newReceiver); } } diff --git a/austin-cron/src/main/java/com/java3y/austin/cron/service/impl/TaskHandlerImpl.java b/austin-cron/src/main/java/com/java3y/austin/cron/service/impl/TaskHandlerImpl.java index 3858fea..448c0ac 100644 --- a/austin-cron/src/main/java/com/java3y/austin/cron/service/impl/TaskHandlerImpl.java +++ b/austin-cron/src/main/java/com/java3y/austin/cron/service/impl/TaskHandlerImpl.java @@ -1,8 +1,8 @@ package com.java3y.austin.cron.service.impl; import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.text.CharSequenceUtil; import cn.hutool.core.text.csv.CsvRow; -import cn.hutool.core.util.StrUtil; import com.java3y.austin.cron.csv.CountFileRowHandler; import com.java3y.austin.cron.pending.CrowdBatchTaskPending; import com.java3y.austin.cron.service.TaskHandler; @@ -16,7 +16,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.ApplicationContext; import org.springframework.stereotype.Service; -import java.util.HashMap; +import java.util.Map; import java.util.Objects; /** @@ -40,7 +40,7 @@ public class TaskHandlerImpl implements TaskHandler { if (Objects.isNull(messageTemplate)) { return; } - if (StrUtil.isBlank(messageTemplate.getCronCrowdPath())) { + if (CharSequenceUtil.isBlank(messageTemplate.getCronCrowdPath())) { log.error("TaskHandler#handle crowdPath empty! messageTemplateId:{}", messageTemplateId); return; } @@ -52,12 +52,12 @@ public class TaskHandlerImpl implements TaskHandler { CrowdBatchTaskPending crowdBatchTaskPending = context.getBean(CrowdBatchTaskPending.class); ReadFileUtils.getCsvRow(messageTemplate.getCronCrowdPath(), row -> { if (CollUtil.isEmpty(row.getFieldMap()) - || StrUtil.isBlank(row.getFieldMap().get(ReadFileUtils.RECEIVER_KEY))) { + || CharSequenceUtil.isBlank(row.getFieldMap().get(ReadFileUtils.RECEIVER_KEY))) { return; } // 3. 每一行处理交给LazyPending - HashMap params = ReadFileUtils.getParamFromLine(row.getFieldMap()); + Map params = ReadFileUtils.getParamFromLine(row.getFieldMap()); CrowdInfoVo crowdInfoVo = CrowdInfoVo.builder().receiver(row.getFieldMap().get(ReadFileUtils.RECEIVER_KEY)) .params(params).messageTemplateId(messageTemplateId).build(); crowdBatchTaskPending.pending(crowdInfoVo); diff --git a/austin-cron/src/main/java/com/java3y/austin/cron/utils/ReadFileUtils.java b/austin-cron/src/main/java/com/java3y/austin/cron/utils/ReadFileUtils.java index a9cb722..ce05f04 100644 --- a/austin-cron/src/main/java/com/java3y/austin/cron/utils/ReadFileUtils.java +++ b/austin-cron/src/main/java/com/java3y/austin/cron/utils/ReadFileUtils.java @@ -20,12 +20,14 @@ import java.util.*; */ @Slf4j public class ReadFileUtils { - /** * csv文件 存储 接收者 的列名 */ public static final String RECEIVER_KEY = "userId"; + private ReadFileUtils() { + } + /** * 读取csv文件,每读取一行都会调用 csvRowHandler 对应的方法 * @@ -33,14 +35,13 @@ public class ReadFileUtils { * @param csvRowHandler */ public static void getCsvRow(String path, CsvRowHandler csvRowHandler) { - try { - // 把首行当做是标题,获取reader - CsvReader reader = CsvUtil.getReader(new FileReader(path), - new CsvReadConfig().setContainsHeader(true)); + + // 把首行当做是标题,获取reader + try (CsvReader reader = CsvUtil.getReader(new FileReader(path), + new CsvReadConfig().setContainsHeader(true))) { reader.read(csvRowHandler); } catch (Exception e) { log.error("ReadFileUtils#getCsvRow fail!{}", Throwables.getStackTraceAsString(e)); - } } @@ -51,10 +52,11 @@ public class ReadFileUtils { * @param countFileRowHandler */ public static long countCsvRow(String path, CountFileRowHandler countFileRowHandler) { - try { - // 把首行当做是标题,获取reader - CsvReader reader = CsvUtil.getReader(new FileReader(path), - new CsvReadConfig().setContainsHeader(true)); + + // 把首行当做是标题,获取reader + try (CsvReader reader = CsvUtil.getReader(new FileReader(path), + new CsvReadConfig().setContainsHeader(true))) { + reader.read(countFileRowHandler); } catch (Exception e) { log.error("ReadFileUtils#getCsvRow fail!{}", Throwables.getStackTraceAsString(e)); @@ -69,7 +71,7 @@ public class ReadFileUtils { * @param fieldMap * @return */ - public static HashMap getParamFromLine(Map fieldMap) { + public static Map getParamFromLine(Map fieldMap) { HashMap params = MapUtil.newHashMap(); for (Map.Entry entry : fieldMap.entrySet()) { if (!ReadFileUtils.RECEIVER_KEY.equals(entry.getKey())) { @@ -88,6 +90,7 @@ public class ReadFileUtils { * * @param path * @return + * @Deprecated 可能会导致内存爆炸 */ @Deprecated public static List getCsvRowList(String path) { @@ -96,6 +99,7 @@ public class ReadFileUtils { CsvData data = CsvUtil.getReader().read(FileUtil.file(path)); if (Objects.isNull(data) || Objects.isNull(data.getRow(0)) || Objects.isNull(data.getRow(1))) { log.error("read csv file empty!,path:{}", path); + return result; } // 第一行为默认为头信息,所以遍历从第二行开始,第一列默认为接收者Id(不处理) CsvRow headerInfo = data.getRow(0); diff --git a/austin-cron/src/main/java/com/java3y/austin/cron/xxl/constants/XxlJobConstant.java b/austin-cron/src/main/java/com/java3y/austin/cron/xxl/constants/XxlJobConstant.java index 0d71e45..4ca8c1c 100644 --- a/austin-cron/src/main/java/com/java3y/austin/cron/xxl/constants/XxlJobConstant.java +++ b/austin-cron/src/main/java/com/java3y/austin/cron/xxl/constants/XxlJobConstant.java @@ -7,7 +7,6 @@ package com.java3y.austin.cron.xxl.constants; * @author 3y */ public class XxlJobConstant { - /** * 任务信息接口路径 */ @@ -17,32 +16,29 @@ public class XxlJobConstant { public static final String DELETE_URL = "/jobinfo/remove"; public static final String RUN_URL = "/jobinfo/start"; public static final String STOP_URL = "/jobinfo/stop"; - /** * 执行器组接口路径 */ public static final String JOB_GROUP_PAGE_LIST = "/jobgroup/pageList"; public static final String JOB_GROUP_INSERT_URL = "/jobgroup/save"; - - /** * 执行任务名称 */ public static final String JOB_HANDLER_NAME = "austinJob"; - /** * 超时时间 */ public static final Integer TIME_OUT = 120; - /** * 失败重试次数 */ public static final Integer RETRY_COUNT = 0; - /** * 立即执行的任务 延迟时间(秒数) */ public static final Integer DELAY_TIME = 10; + private XxlJobConstant() { + } + } diff --git a/austin-cron/src/main/java/com/java3y/austin/cron/xxl/entity/XxlJobGroup.java b/austin-cron/src/main/java/com/java3y/austin/cron/xxl/entity/XxlJobGroup.java index d561fe6..27360c6 100644 --- a/austin-cron/src/main/java/com/java3y/austin/cron/xxl/entity/XxlJobGroup.java +++ b/austin-cron/src/main/java/com/java3y/austin/cron/xxl/entity/XxlJobGroup.java @@ -1,5 +1,6 @@ package com.java3y.austin.cron.xxl.entity; +import cn.hutool.core.text.StrPool; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; @@ -42,7 +43,7 @@ public class XxlJobGroup { public List getRegistryList() { if (Objects.nonNull(addressList) && addressList.trim().length() > 0) { - registryList = new ArrayList(Arrays.asList(addressList.split(","))); + registryList = new ArrayList<>(Arrays.asList(addressList.split(StrPool.COMMA))); } return registryList; } diff --git a/austin-cron/src/main/java/com/java3y/austin/cron/xxl/service/impl/CronTaskServiceImpl.java b/austin-cron/src/main/java/com/java3y/austin/cron/xxl/service/impl/CronTaskServiceImpl.java index a2e9ec9..fef0aa8 100644 --- a/austin-cron/src/main/java/com/java3y/austin/cron/xxl/service/impl/CronTaskServiceImpl.java +++ b/austin-cron/src/main/java/com/java3y/austin/cron/xxl/service/impl/CronTaskServiceImpl.java @@ -145,6 +145,9 @@ public class CronTaskServiceImpl implements CronTaskService { HttpResponse response = null; try { response = HttpRequest.post(path).form(params).cookie(getCookie()).execute(); + if (Objects.isNull(response)) { + return BasicResultVO.fail(RespStatusEnum.SERVICE_ERROR); + } Integer id = JSON.parseObject(response.body()).getJSONArray("data").getJSONObject(0).getInteger("id"); if (response.isOk() && Objects.nonNull(id)) { return BasicResultVO.success(id); diff --git a/austin-cron/src/main/java/com/java3y/austin/cron/xxl/utils/XxlJobUtils.java b/austin-cron/src/main/java/com/java3y/austin/cron/xxl/utils/XxlJobUtils.java index 5bdf90c..f10bf8d 100644 --- a/austin-cron/src/main/java/com/java3y/austin/cron/xxl/utils/XxlJobUtils.java +++ b/austin-cron/src/main/java/com/java3y/austin/cron/xxl/utils/XxlJobUtils.java @@ -1,7 +1,7 @@ package com.java3y.austin.cron.xxl.utils; import cn.hutool.core.date.DateUtil; -import cn.hutool.core.util.StrUtil; +import cn.hutool.core.text.CharSequenceUtil; import com.java3y.austin.common.constant.CommonConstant; import com.java3y.austin.common.enums.RespStatusEnum; import com.java3y.austin.common.vo.BasicResultVO; @@ -63,10 +63,10 @@ public class XxlJobUtils { .executorFailRetryCount(XxlJobConstant.RETRY_COUNT) .glueType(GlueTypeEnum.BEAN.name()) .triggerStatus(CommonConstant.FALSE) - .glueRemark(StrUtil.EMPTY) - .glueSource(StrUtil.EMPTY) - .alarmEmail(StrUtil.EMPTY) - .childJobId(StrUtil.EMPTY).build(); + .glueRemark(CharSequenceUtil.EMPTY) + .glueSource(CharSequenceUtil.EMPTY) + .alarmEmail(CharSequenceUtil.EMPTY) + .childJobId(CharSequenceUtil.EMPTY).build(); if (Objects.nonNull(messageTemplate.getCronTaskId())) { xxlJobInfo.setId(messageTemplate.getCronTaskId()); @@ -80,14 +80,14 @@ public class XxlJobUtils { * @return */ private Integer queryJobGroupId() { - BasicResultVO basicResultVO = cronTaskService.getGroupId(appName, jobHandlerName); + BasicResultVO basicResultVO = cronTaskService.getGroupId(appName, jobHandlerName); if (Objects.isNull(basicResultVO.getData())) { XxlJobGroup xxlJobGroup = XxlJobGroup.builder().appname(appName).title(jobHandlerName).addressType(CommonConstant.FALSE).build(); if (RespStatusEnum.SUCCESS.getCode().equals(cronTaskService.createGroup(xxlJobGroup).getStatus())) { return (int) cronTaskService.getGroupId(appName, jobHandlerName).getData(); } } - return (Integer) basicResultVO.getData(); + return basicResultVO.getData(); } } diff --git a/austin-data-house/src/main/java/com/java3y/austin/datahouse/constants/DataHouseConstant.java b/austin-data-house/src/main/java/com/java3y/austin/datahouse/constants/DataHouseConstant.java index 830de49..e9dafd4 100644 --- a/austin-data-house/src/main/java/com/java3y/austin/datahouse/constants/DataHouseConstant.java +++ b/austin-data-house/src/main/java/com/java3y/austin/datahouse/constants/DataHouseConstant.java @@ -11,28 +11,22 @@ public class DataHouseConstant { * catalog name */ public static final String CATALOG_NAME = "my_hive"; - /** * 库名 */ public static final String CATALOG_DEFAULT_DATABASE = "austin"; - /** * 消费Kafka消息,写入的表 */ public static final String KAFKA_SOURCE_TABLE_NAME = "anchor_log_source"; - /** * 最终落到hive的表 */ public static final String KAFKA_SINK_TABLE_NAME = "message_anchor"; - /** * 源Kafka topic */ public static final String KAFKA_TOPIC = "austinTraceLog"; - - /** * eg: 127.0.0.1:9092 * 消费Kafka的ip和端口 @@ -40,4 +34,8 @@ public class DataHouseConstant { public static final String KAFKA_IP_PORT = "127.0.0.1:9092"; + private DataHouseConstant() { + } + + } diff --git a/austin-handler/pom.xml b/austin-handler/pom.xml index 94ca8bb..1e89a5b 100644 --- a/austin-handler/pom.xml +++ b/austin-handler/pom.xml @@ -30,8 +30,8 @@ tencentcloud-sdk-java - com.squareup.okio - okio + com.squareup.okio + okio diff --git a/austin-handler/src/main/java/com/java3y/austin/handler/action/DeduplicationAction.java b/austin-handler/src/main/java/com/java3y/austin/handler/action/DeduplicationAction.java index c50af34..7fb7549 100644 --- a/austin-handler/src/main/java/com/java3y/austin/handler/action/DeduplicationAction.java +++ b/austin-handler/src/main/java/com/java3y/austin/handler/action/DeduplicationAction.java @@ -39,7 +39,7 @@ public class DeduplicationAction implements BusinessProcess { public void process(ProcessContext context) { TaskInfo taskInfo = context.getProcessModel(); - // 配置样例:{"deduplication_10":{"num":1,"time":300},"deduplication_20":{"num":5}} + // 配置样例{"deduplication_10":{"num":1,"time":300},"deduplication_20":{"num":5}} String deduplicationConfig = config.getProperty(DEDUPLICATION_RULE_KEY, CommonConstant.EMPTY_JSON_OBJECT); // 去重 diff --git a/austin-handler/src/main/java/com/java3y/austin/handler/config/AlipayClientSingleton.java b/austin-handler/src/main/java/com/java3y/austin/handler/config/AlipayClientSingleton.java index c2ad036..96dfae3 100644 --- a/austin-handler/src/main/java/com/java3y/austin/handler/config/AlipayClientSingleton.java +++ b/austin-handler/src/main/java/com/java3y/austin/handler/config/AlipayClientSingleton.java @@ -17,7 +17,6 @@ import java.util.Map; */ public class AlipayClientSingleton { - private static volatile DefaultAlipayClient alipayClientSingleton; private static Map alipayClientMap = new HashMap<>(); @@ -36,9 +35,7 @@ public class AlipayClientSingleton { alipayConfig.setAlipayPublicKey(alipayMiniProgramAccount.getAlipayPublicKey()); alipayConfig.setCharset("utf-8"); alipayConfig.setSignType("RSA2"); - alipayClientSingleton = new DefaultAlipayClient(alipayConfig); - alipayClientMap.put(alipayMiniProgramAccount.getAppId(), alipayClientSingleton); - return alipayClientSingleton; + alipayClientMap.put(alipayMiniProgramAccount.getAppId(), new DefaultAlipayClient(alipayConfig)); } } } diff --git a/austin-handler/src/main/java/com/java3y/austin/handler/config/HandlerThreadPoolConfig.java b/austin-handler/src/main/java/com/java3y/austin/handler/config/HandlerThreadPoolConfig.java index 713769f..bb1b988 100644 --- a/austin-handler/src/main/java/com/java3y/austin/handler/config/HandlerThreadPoolConfig.java +++ b/austin-handler/src/main/java/com/java3y/austin/handler/config/HandlerThreadPoolConfig.java @@ -17,6 +17,10 @@ public class HandlerThreadPoolConfig { private static final String PRE_FIX = "austin."; + private HandlerThreadPoolConfig() { + + } + /** * 业务:处理某个渠道的某种类型消息的线程池 * 配置:不丢弃消息,核心线程数不会随着keepAliveTime而减少(不会被回收) diff --git a/austin-handler/src/main/java/com/java3y/austin/handler/deduplication/build/AbstractDeduplicationBuilder.java b/austin-handler/src/main/java/com/java3y/austin/handler/deduplication/build/AbstractDeduplicationBuilder.java index a08a14c..a783a8e 100644 --- a/austin-handler/src/main/java/com/java3y/austin/handler/deduplication/build/AbstractDeduplicationBuilder.java +++ b/austin-handler/src/main/java/com/java3y/austin/handler/deduplication/build/AbstractDeduplicationBuilder.java @@ -1,5 +1,6 @@ package com.java3y.austin.handler.deduplication.build; +import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.java3y.austin.common.domain.TaskInfo; import com.java3y.austin.handler.deduplication.DeduplicationHolder; @@ -26,11 +27,11 @@ public abstract class AbstractDeduplicationBuilder implements Builder { } public DeduplicationParam getParamsFromConfig(Integer key, String duplicationConfig, TaskInfo taskInfo) { - JSONObject object = JSONObject.parseObject(duplicationConfig); + JSONObject object = JSON.parseObject(duplicationConfig); if (Objects.isNull(object)) { return null; } - DeduplicationParam deduplicationParam = JSONObject.parseObject(object.getString(DEDUPLICATION_CONFIG_PRE + key), DeduplicationParam.class); + DeduplicationParam deduplicationParam = JSON.parseObject(object.getString(DEDUPLICATION_CONFIG_PRE + key), DeduplicationParam.class); if (Objects.isNull(deduplicationParam)) { return null; } diff --git a/austin-handler/src/main/java/com/java3y/austin/handler/deduplication/limit/SlideWindowLimitService.java b/austin-handler/src/main/java/com/java3y/austin/handler/deduplication/limit/SlideWindowLimitService.java index 5b26ff3..8f65d62 100644 --- a/austin-handler/src/main/java/com/java3y/austin/handler/deduplication/limit/SlideWindowLimitService.java +++ b/austin-handler/src/main/java/com/java3y/austin/handler/deduplication/limit/SlideWindowLimitService.java @@ -57,7 +57,10 @@ public class SlideWindowLimitService extends AbstractLimitService { String key = LIMIT_TAG + deduplicationSingleKey(service, taskInfo, receiver); String scoreValue = String.valueOf(IdUtil.getSnowflake().nextId()); String score = String.valueOf(nowTime); - if (redisUtils.execLimitLua(redisScript, Collections.singletonList(key), String.valueOf(param.getDeduplicationTime() * 1000), score, String.valueOf(param.getCountNum()), scoreValue)) { + + final Boolean result = redisUtils.execLimitLua(redisScript, Collections.singletonList(key), + String.valueOf(param.getDeduplicationTime() * 1000), score, String.valueOf(param.getCountNum()), scoreValue); + if (Boolean.TRUE.equals(result)) { filterReceiver.add(receiver); } diff --git a/austin-handler/src/main/java/com/java3y/austin/handler/deduplication/service/FrequencyDeduplicationService.java b/austin-handler/src/main/java/com/java3y/austin/handler/deduplication/service/FrequencyDeduplicationService.java index fa6cb52..075d1e3 100644 --- a/austin-handler/src/main/java/com/java3y/austin/handler/deduplication/service/FrequencyDeduplicationService.java +++ b/austin-handler/src/main/java/com/java3y/austin/handler/deduplication/service/FrequencyDeduplicationService.java @@ -1,6 +1,6 @@ package com.java3y.austin.handler.deduplication.service; -import cn.hutool.core.util.StrUtil; +import cn.hutool.core.text.StrPool; import com.java3y.austin.common.domain.TaskInfo; import com.java3y.austin.common.enums.DeduplicationType; import com.java3y.austin.handler.deduplication.limit.LimitService; @@ -41,9 +41,9 @@ public class FrequencyDeduplicationService extends AbstractDeduplicationService */ @Override public String deduplicationSingleKey(TaskInfo taskInfo, String receiver) { - return PREFIX + StrUtil.C_UNDERLINE - + receiver + StrUtil.C_UNDERLINE - + taskInfo.getMessageTemplateId() + StrUtil.C_UNDERLINE + return PREFIX + StrPool.C_UNDERLINE + + receiver + StrPool.C_UNDERLINE + + taskInfo.getMessageTemplateId() + StrPool.C_UNDERLINE + taskInfo.getSendChannel(); } } diff --git a/austin-handler/src/main/java/com/java3y/austin/handler/domain/alipay/AlipayMiniProgramParam.java b/austin-handler/src/main/java/com/java3y/austin/handler/domain/alipay/AlipayMiniProgramParam.java index 469641c..de77e4b 100644 --- a/austin-handler/src/main/java/com/java3y/austin/handler/domain/alipay/AlipayMiniProgramParam.java +++ b/austin-handler/src/main/java/com/java3y/austin/handler/domain/alipay/AlipayMiniProgramParam.java @@ -33,11 +33,11 @@ public class AlipayMiniProgramParam { */ private Map data; -// /** -// * 支付消息模板:需传入用户发生的交易行为的支付宝交易号 trade_no; -// * 表单提交模板:需传入用户在小程序触发表单提交事件获得的表单号; -// * 刷脸消息模板:需传入在IOT刷脸后得到的ftoken等,用于信息发送的校验。 -// * 说明:订阅消息模板无需传入本参数。 -// */ -// private String formId; + /** + * 支付消息模板:需传入用户发生的交易行为的支付宝交易号 trade_no; + * 表单提交模板:需传入用户在小程序触发表单提交事件获得的表单号; + * 刷脸消息模板:需传入在IOT刷脸后得到的ftoken等,用于信息发送的校验。 + * 说明:订阅消息模板无需传入本参数。 + */ + private String formId; } diff --git a/austin-handler/src/main/java/com/java3y/austin/handler/handler/HandlerHolder.java b/austin-handler/src/main/java/com/java3y/austin/handler/handler/HandlerHolder.java index 31cb8c7..645ba89 100644 --- a/austin-handler/src/main/java/com/java3y/austin/handler/handler/HandlerHolder.java +++ b/austin-handler/src/main/java/com/java3y/austin/handler/handler/HandlerHolder.java @@ -14,7 +14,7 @@ import java.util.Map; @Component public class HandlerHolder { - private Map handlers = new HashMap(128); + private Map handlers = new HashMap<>(128); public void putHandler(Integer channelCode, Handler handler) { handlers.put(channelCode, handler); diff --git a/austin-handler/src/main/java/com/java3y/austin/handler/handler/impl/AlipayMiniProgramAccountHandler.java b/austin-handler/src/main/java/com/java3y/austin/handler/handler/impl/AlipayMiniProgramAccountHandler.java index af58b25..a45e0dc 100644 --- a/austin-handler/src/main/java/com/java3y/austin/handler/handler/impl/AlipayMiniProgramAccountHandler.java +++ b/austin-handler/src/main/java/com/java3y/austin/handler/handler/impl/AlipayMiniProgramAccountHandler.java @@ -94,8 +94,11 @@ public class AlipayMiniProgramAccountHandler extends BaseHandler implements Hand return requestList; } + /** + * @param recallTaskInfo + */ @Override public void recall(RecallTaskInfo recallTaskInfo) { - + // 未实现 or 渠道不支持 } } diff --git a/austin-handler/src/main/java/com/java3y/austin/handler/handler/impl/DingDingRobotHandler.java b/austin-handler/src/main/java/com/java3y/austin/handler/handler/impl/DingDingRobotHandler.java index f8e182f..a62042c 100644 --- a/austin-handler/src/main/java/com/java3y/austin/handler/handler/impl/DingDingRobotHandler.java +++ b/austin-handler/src/main/java/com/java3y/austin/handler/handler/impl/DingDingRobotHandler.java @@ -1,7 +1,7 @@ package com.java3y.austin.handler.handler.impl; import cn.hutool.core.collection.CollUtil; -import cn.hutool.core.util.StrUtil; +import cn.hutool.core.text.StrPool; import cn.hutool.http.HttpUtil; import com.alibaba.fastjson.JSON; import com.google.common.base.Throwables; @@ -26,6 +26,7 @@ import org.springframework.stereotype.Service; import javax.crypto.Mac; import javax.crypto.spec.SecretKeySpec; import java.net.URLEncoder; +import java.nio.charset.StandardCharsets; import java.util.ArrayList; import java.util.List; @@ -124,10 +125,10 @@ public class DingDingRobotHandler extends BaseHandler implements Handler { private String assembleSign(long currentTimeMillis, String secret) { String sign = ""; try { - String stringToSign = currentTimeMillis + String.valueOf(StrUtil.C_LF) + secret; + String stringToSign = currentTimeMillis + String.valueOf(StrPool.C_LF) + secret; Mac mac = Mac.getInstance(CommonConstant.HMAC_SHA256_ENCRYPTION_ALGO); - mac.init(new SecretKeySpec(secret.getBytes(CommonConstant.CHARSET_NAME), CommonConstant.HMAC_SHA256_ENCRYPTION_ALGO)); - byte[] signData = mac.doFinal(stringToSign.getBytes(CommonConstant.CHARSET_NAME)); + mac.init(new SecretKeySpec(secret.getBytes(StandardCharsets.UTF_8), CommonConstant.HMAC_SHA256_ENCRYPTION_ALGO)); + byte[] signData = mac.doFinal(stringToSign.getBytes(StandardCharsets.UTF_8)); sign = URLEncoder.encode(new String(Base64.encodeBase64(signData)), CommonConstant.CHARSET_NAME); } catch (Exception e) { log.error("DingDingHandler#assembleSign fail!:{}", Throwables.getStackTraceAsString(e)); diff --git a/austin-handler/src/main/java/com/java3y/austin/handler/handler/impl/DingDingWorkNoticeHandler.java b/austin-handler/src/main/java/com/java3y/austin/handler/handler/impl/DingDingWorkNoticeHandler.java index bbdb8bd..d725240 100644 --- a/austin-handler/src/main/java/com/java3y/austin/handler/handler/impl/DingDingWorkNoticeHandler.java +++ b/austin-handler/src/main/java/com/java3y/austin/handler/handler/impl/DingDingWorkNoticeHandler.java @@ -2,7 +2,7 @@ package com.java3y.austin.handler.handler.impl; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.date.DateUtil; -import cn.hutool.core.util.StrUtil; +import cn.hutool.core.text.StrPool; import com.alibaba.fastjson.JSON; import com.dingtalk.api.DefaultDingTalkClient; import com.dingtalk.api.DingTalkClient; @@ -105,7 +105,7 @@ public class DingDingWorkNoticeHandler extends BaseHandler implements Handler { if (AustinConstant.SEND_ALL.equals(CollUtil.getFirst(taskInfo.getReceiver()))) { req.setToAllUser(true); } else { - req.setUseridList(StringUtils.join(taskInfo.getReceiver(), StrUtil.C_COMMA)); + req.setUseridList(StringUtils.join(taskInfo.getReceiver(), StrPool.COMMA)); } req.setAgentId(Long.parseLong(account.getAgentId())); diff --git a/austin-handler/src/main/java/com/java3y/austin/handler/handler/impl/EmailHandler.java b/austin-handler/src/main/java/com/java3y/austin/handler/handler/impl/EmailHandler.java index 335208a..63b178c 100644 --- a/austin-handler/src/main/java/com/java3y/austin/handler/handler/impl/EmailHandler.java +++ b/austin-handler/src/main/java/com/java3y/austin/handler/handler/impl/EmailHandler.java @@ -2,7 +2,8 @@ package com.java3y.austin.handler.handler.impl; import cn.hutool.core.collection.CollUtil; -import cn.hutool.core.util.StrUtil; +import cn.hutool.core.text.CharSequenceUtil; +import cn.hutool.core.text.StrPool; import cn.hutool.extra.mail.MailAccount; import cn.hutool.extra.mail.MailUtil; import com.google.common.base.Throwables; @@ -57,9 +58,14 @@ public class EmailHandler extends BaseHandler implements Handler { EmailContentModel emailContentModel = (EmailContentModel) taskInfo.getContentModel(); MailAccount account = getAccountConfig(taskInfo.getSendAccount()); try { - List files = StrUtil.isNotBlank(emailContentModel.getUrl()) ? AustinFileUtils.getRemoteUrl2File(dataPath, StrUtil.split(emailContentModel.getUrl(), StrUtil.COMMA)) : null; - String result = CollUtil.isEmpty(files) ? MailUtil.send(account, taskInfo.getReceiver(), emailContentModel.getTitle(), emailContentModel.getContent(), true) : - MailUtil.send(account, taskInfo.getReceiver(), emailContentModel.getTitle(), emailContentModel.getContent(), true, files.toArray(new File[files.size()])); + List files = CharSequenceUtil.isNotBlank(emailContentModel.getUrl()) ? AustinFileUtils.getRemoteUrl2File(dataPath, CharSequenceUtil.split(emailContentModel.getUrl(), StrPool.COMMA)) : null; + if (CollUtil.isEmpty(files)) { + MailUtil.send(account, taskInfo.getReceiver(), emailContentModel.getTitle(), emailContentModel.getContent(), true); + } else { + MailUtil.send(account, taskInfo.getReceiver(), emailContentModel.getTitle(), emailContentModel.getContent(), true, files.toArray(new File[files.size()])); + } + + } catch (Exception e) { log.error("EmailHandler#handler fail!{},params:{}", Throwables.getStackTraceAsString(e), taskInfo); return false; diff --git a/austin-handler/src/main/java/com/java3y/austin/handler/handler/impl/EnterpriseWeChatHandler.java b/austin-handler/src/main/java/com/java3y/austin/handler/handler/impl/EnterpriseWeChatHandler.java index f24088b..8c9c534 100644 --- a/austin-handler/src/main/java/com/java3y/austin/handler/handler/impl/EnterpriseWeChatHandler.java +++ b/austin-handler/src/main/java/com/java3y/austin/handler/handler/impl/EnterpriseWeChatHandler.java @@ -97,7 +97,7 @@ public class EnterpriseWeChatHandler extends BaseHandler implements Handler { EnterpriseWeChatContentModel contentModel = (EnterpriseWeChatContentModel) taskInfo.getContentModel(); // 通用配置 - WxCpMessage wxCpMessage = null; + WxCpMessage wxCpMessage = new WxCpMessage(); if (SendMessageType.TEXT.getCode().equals(contentModel.getSendType())) { wxCpMessage = WxCpMessage.TEXT().content(contentModel.getContent()).build(); @@ -125,6 +125,7 @@ public class EnterpriseWeChatHandler extends BaseHandler implements Handler { } else if (SendMessageType.TEMPLATE_CARD.getCode().equals(contentModel.getSendType())) { // WxJava 未支持 } + wxCpMessage.setAgentId(agentId); wxCpMessage.setToUser(userId); return wxCpMessage; diff --git a/austin-handler/src/main/java/com/java3y/austin/handler/handler/impl/FeiShuRobotHandler.java b/austin-handler/src/main/java/com/java3y/austin/handler/handler/impl/FeiShuRobotHandler.java index 31748c5..f6fa4e5 100644 --- a/austin-handler/src/main/java/com/java3y/austin/handler/handler/impl/FeiShuRobotHandler.java +++ b/austin-handler/src/main/java/com/java3y/austin/handler/handler/impl/FeiShuRobotHandler.java @@ -93,7 +93,7 @@ public class FeiShuRobotHandler extends BaseHandler implements Handler { @Override public void recall(RecallTaskInfo recallTaskInfo) { - + // 不支持或未实现 } } diff --git a/austin-handler/src/main/java/com/java3y/austin/handler/handler/impl/PushHandler.java b/austin-handler/src/main/java/com/java3y/austin/handler/handler/impl/PushHandler.java index fd7bc0d..0b5644d 100644 --- a/austin-handler/src/main/java/com/java3y/austin/handler/handler/impl/PushHandler.java +++ b/austin-handler/src/main/java/com/java3y/austin/handler/handler/impl/PushHandler.java @@ -38,6 +38,7 @@ import java.util.Set; @Slf4j public class PushHandler extends BaseHandler implements Handler { + private static final String HEADER_TOKEN_NAME = "token"; @Autowired private AccountUtils accountUtils; @Autowired @@ -83,12 +84,11 @@ public class PushHandler extends BaseHandler implements Handler { private String singlePush(PushParam pushParam) { String url = SendChanelUrlConstant.GE_TUI_BASE_URL + pushParam.getAppId() + SendChanelUrlConstant.GE_TUI_SINGLE_PUSH_PATH; SendPushParam sendPushParam = assembleParam((PushContentModel) pushParam.getTaskInfo().getContentModel(), pushParam.getTaskInfo().getReceiver()); - String body = HttpRequest.post(url).header(Header.CONTENT_TYPE.getValue(), ContentType.JSON.getValue()) - .header("token", pushParam.getToken()) + return HttpRequest.post(url).header(Header.CONTENT_TYPE.getValue(), ContentType.JSON.getValue()) + .header(HEADER_TOKEN_NAME, pushParam.getToken()) .body(JSON.toJSONString(sendPushParam)) .timeout(2000) .execute().body(); - return body; } @@ -105,12 +105,11 @@ public class PushHandler extends BaseHandler implements Handler { .taskId(taskId) .isAsync(true) .audience(BatchSendPushParam.AudienceVO.builder().cid(pushParam.getTaskInfo().getReceiver()).build()).build(); - String body = HttpRequest.post(url).header(Header.CONTENT_TYPE.getValue(), ContentType.JSON.getValue()) - .header("token", pushParam.getToken()) + return HttpRequest.post(url).header(Header.CONTENT_TYPE.getValue(), ContentType.JSON.getValue()) + .header(HEADER_TOKEN_NAME, pushParam.getToken()) .body(JSON.toJSONString(batchSendPushParam)) .timeout(2000) .execute().body(); - return body; } @@ -126,7 +125,7 @@ public class PushHandler extends BaseHandler implements Handler { String taskId = ""; try { String body = HttpRequest.post(url).header(Header.CONTENT_TYPE.getValue(), ContentType.JSON.getValue()) - .header("token", pushParam.getToken()) + .header(HEADER_TOKEN_NAME, pushParam.getToken()) .body(JSON.toJSONString(param)) .timeout(2000) .execute().body(); diff --git a/austin-handler/src/main/java/com/java3y/austin/handler/handler/impl/SmsHandler.java b/austin-handler/src/main/java/com/java3y/austin/handler/handler/impl/SmsHandler.java index 5848271..112d290 100644 --- a/austin-handler/src/main/java/com/java3y/austin/handler/handler/impl/SmsHandler.java +++ b/austin-handler/src/main/java/com/java3y/austin/handler/handler/impl/SmsHandler.java @@ -1,7 +1,7 @@ package com.java3y.austin.handler.handler.impl; import cn.hutool.core.collection.CollUtil; -import cn.hutool.core.util.StrUtil; +import cn.hutool.core.text.CharSequenceUtil; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.google.common.base.Throwables; @@ -100,8 +100,7 @@ public class SmsHandler extends BaseHandler implements Handler { } // 生成一个随机数[1,total],看落到哪个区间 - Random random = new Random(); - int index = random.nextInt(total) + 1; + int index = new Random().nextInt(total) + 1; MessageTypeSmsConfig supplier = null; MessageTypeSmsConfig supplierBack = null; @@ -119,7 +118,7 @@ public class SmsHandler extends BaseHandler implements Handler { } index -= messageTypeSmsConfigs.get(i).getWeights(); } - return null; + return new MessageTypeSmsConfig[0]; } /** @@ -169,8 +168,8 @@ public class SmsHandler extends BaseHandler implements Handler { */ private String getSmsContent(TaskInfo taskInfo) { SmsContentModel smsContentModel = (SmsContentModel) taskInfo.getContentModel(); - if (StrUtil.isNotBlank(smsContentModel.getUrl())) { - return smsContentModel.getContent() + StrUtil.SPACE + smsContentModel.getUrl(); + if (CharSequenceUtil.isNotBlank(smsContentModel.getUrl())) { + return smsContentModel.getContent() + CharSequenceUtil.SPACE + smsContentModel.getUrl(); } else { return smsContentModel.getContent(); } diff --git a/austin-handler/src/main/java/com/java3y/austin/handler/pending/TaskPendingHolder.java b/austin-handler/src/main/java/com/java3y/austin/handler/pending/TaskPendingHolder.java index a00f544..19aec62 100644 --- a/austin-handler/src/main/java/com/java3y/austin/handler/pending/TaskPendingHolder.java +++ b/austin-handler/src/main/java/com/java3y/austin/handler/pending/TaskPendingHolder.java @@ -27,7 +27,7 @@ public class TaskPendingHolder { private static List groupIds = GroupIdMappingUtils.getAllGroupIds(); @Autowired private ThreadPoolUtils threadPoolUtils; - private Map taskPendingHolder = new HashMap<>(32); + private Map holder = new HashMap<>(32); /** * 给每个渠道,每种消息类型初始化一个线程池 @@ -43,7 +43,7 @@ public class TaskPendingHolder { DtpExecutor executor = HandlerThreadPoolConfig.getExecutor(groupId); threadPoolUtils.register(executor); - taskPendingHolder.put(groupId, executor); + holder.put(groupId, executor); } } @@ -54,7 +54,7 @@ public class TaskPendingHolder { * @return */ public ExecutorService route(String groupId) { - return taskPendingHolder.get(groupId); + return holder.get(groupId); } diff --git a/austin-handler/src/main/java/com/java3y/austin/handler/receipt/MessageReceipt.java b/austin-handler/src/main/java/com/java3y/austin/handler/receipt/MessageReceipt.java index 6c3deb9..01f00f7 100644 --- a/austin-handler/src/main/java/com/java3y/austin/handler/receipt/MessageReceipt.java +++ b/austin-handler/src/main/java/com/java3y/austin/handler/receipt/MessageReceipt.java @@ -34,6 +34,7 @@ public class MessageReceipt { Thread.sleep(2000); } catch (Exception e) { log.error("MessageReceipt#init fail:{}", Throwables.getStackTraceAsString(e)); + Thread.currentThread().interrupt(); } } }); diff --git a/austin-handler/src/main/java/com/java3y/austin/handler/receiver/kafka/ReceiverStart.java b/austin-handler/src/main/java/com/java3y/austin/handler/receiver/kafka/ReceiverStart.java index cc352a1..4ba8cc0 100644 --- a/austin-handler/src/main/java/com/java3y/austin/handler/receiver/kafka/ReceiverStart.java +++ b/austin-handler/src/main/java/com/java3y/austin/handler/receiver/kafka/ReceiverStart.java @@ -1,6 +1,6 @@ package com.java3y.austin.handler.receiver.kafka; -import cn.hutool.core.util.StrUtil; +import cn.hutool.core.text.StrPool; import com.java3y.austin.handler.utils.GroupIdMappingUtils; import com.java3y.austin.support.constans.MessageQueuePipeline; import lombok.extern.slf4j.Slf4j; @@ -56,7 +56,7 @@ public class ReceiverStart { public static KafkaListenerAnnotationBeanPostProcessor.AnnotationEnhancer groupIdEnhancer() { return (attrs, element) -> { if (element instanceof Method) { - String name = ((Method) element).getDeclaringClass().getSimpleName() + StrUtil.DOT + ((Method) element).getName(); + String name = ((Method) element).getDeclaringClass().getSimpleName() + StrPool.DOT + ((Method) element).getName(); if (RECEIVER_METHOD_NAME.equals(name)) { attrs.put("groupId", groupIds.get(index++)); } diff --git a/austin-handler/src/main/java/com/java3y/austin/handler/script/impl/LinTongSmsScript.java b/austin-handler/src/main/java/com/java3y/austin/handler/script/impl/LinTongSmsScript.java index 2eb20e6..59905d9 100644 --- a/austin-handler/src/main/java/com/java3y/austin/handler/script/impl/LinTongSmsScript.java +++ b/austin-handler/src/main/java/com/java3y/austin/handler/script/impl/LinTongSmsScript.java @@ -62,7 +62,7 @@ public class LinTongSmsScript implements SmsScript { return assembleSmsRecord(smsParam, linTongSendResult, linTongSmsAccount); } catch (Exception e) { log.error("LinTongSmsAccount#send fail:{},params:{}", Throwables.getStackTraceAsString(e), JSON.toJSONString(smsParam)); - return null; + return new ArrayList<>(); } } @@ -75,7 +75,7 @@ public class LinTongSmsScript implements SmsScript { */ @Override public List pull(Integer id) { - return null; + return new ArrayList<>(); } @@ -100,7 +100,7 @@ public class LinTongSmsScript implements SmsScript { private List assembleSmsRecord(SmsParam smsParam, LinTongSendResult response, LinTongSmsAccount account) { if (response == null || ArrayUtil.isEmpty(response.getDtoList())) { - return null; + return new ArrayList<>(); } List smsRecordList = new ArrayList<>(); diff --git a/austin-handler/src/main/java/com/java3y/austin/handler/script/impl/TencentSmsScript.java b/austin-handler/src/main/java/com/java3y/austin/handler/script/impl/TencentSmsScript.java index 9e8cb8f..520ad94 100644 --- a/austin-handler/src/main/java/com/java3y/austin/handler/script/impl/TencentSmsScript.java +++ b/austin-handler/src/main/java/com/java3y/austin/handler/script/impl/TencentSmsScript.java @@ -54,7 +54,7 @@ public class TencentSmsScript implements SmsScript { return assembleSendSmsRecord(smsParam, response, tencentSmsAccount); } catch (Exception e) { log.error("TencentSmsScript#send fail:{},params:{}", Throwables.getStackTraceAsString(e), JSON.toJSONString(smsParam)); - return null; + return new ArrayList<>(); } } @@ -68,7 +68,7 @@ public class TencentSmsScript implements SmsScript { return assemblePullSmsRecord(account, resp); } catch (Exception e) { log.error("TencentSmsReceipt#pull fail!{}", Throwables.getStackTraceAsString(e)); - return null; + return new ArrayList<>(); } } @@ -81,11 +81,12 @@ public class TencentSmsScript implements SmsScript { * @return */ private List assembleSendSmsRecord(SmsParam smsParam, SendSmsResponse response, TencentSmsAccount tencentSmsAccount) { + + List smsRecordList = new ArrayList<>(); if (Objects.isNull(response) || ArrayUtil.isEmpty(response.getSendStatusSet())) { - return null; + return smsRecordList; } - List smsRecordList = new ArrayList<>(); for (SendStatus sendStatus : response.getSendStatusSet()) { // 腾讯返回的电话号有前缀,这里取巧直接翻转获取手机号 @@ -139,8 +140,7 @@ public class TencentSmsScript implements SmsScript { httpProfile.setEndpoint(account.getUrl()); ClientProfile clientProfile = new ClientProfile(); clientProfile.setHttpProfile(httpProfile); - SmsClient client = new SmsClient(cred, account.getRegion(), clientProfile); - return client; + return new SmsClient(cred, account.getRegion(), clientProfile); } /** diff --git a/austin-handler/src/main/java/com/java3y/austin/handler/script/impl/YunPianSmsScript.java b/austin-handler/src/main/java/com/java3y/austin/handler/script/impl/YunPianSmsScript.java index ea76290..c9c14dc 100644 --- a/austin-handler/src/main/java/com/java3y/austin/handler/script/impl/YunPianSmsScript.java +++ b/austin-handler/src/main/java/com/java3y/austin/handler/script/impl/YunPianSmsScript.java @@ -2,9 +2,10 @@ package com.java3y.austin.handler.script.impl; import cn.hutool.core.date.DatePattern; import cn.hutool.core.date.DateUtil; +import cn.hutool.core.net.URLEncodeUtil; +import cn.hutool.core.text.CharSequenceUtil; +import cn.hutool.core.text.StrPool; import cn.hutool.core.util.ArrayUtil; -import cn.hutool.core.util.StrUtil; -import cn.hutool.core.util.URLUtil; import cn.hutool.http.Header; import cn.hutool.http.HttpRequest; import com.alibaba.fastjson.JSON; @@ -58,7 +59,7 @@ public class YunPianSmsScript implements SmsScript { return assembleSmsRecord(smsParam, yunPianSendResult, account); } catch (Exception e) { log.error("YunPianSmsScript#send fail:{},params:{}", Throwables.getStackTraceAsString(e), JSON.toJSONString(smsParam)); - return null; + return new ArrayList<>(); } } @@ -66,7 +67,7 @@ public class YunPianSmsScript implements SmsScript { @Override public List pull(Integer accountId) { // ..... - return null; + return new ArrayList<>(); } /** @@ -79,7 +80,7 @@ public class YunPianSmsScript implements SmsScript { private Map assembleParam(SmsParam smsParam, YunPianSmsAccount account) { Map params = new HashMap<>(8); params.put("apikey", account.getApikey()); - params.put("mobile", StringUtils.join(smsParam.getPhones(), StrUtil.C_COMMA)); + params.put("mobile", StringUtils.join(smsParam.getPhones(), StrPool.COMMA)); params.put("tpl_id", account.getTplId()); params.put("tpl_value", getTplValue(smsParam)); return params; @@ -87,11 +88,12 @@ public class YunPianSmsScript implements SmsScript { private List assembleSmsRecord(SmsParam smsParam, YunPianSendResult response, YunPianSmsAccount account) { + + List smsRecordList = new ArrayList<>(); if (Objects.isNull(response) || ArrayUtil.isEmpty(response.getData())) { - return null; + return smsRecordList; } - List smsRecordList = new ArrayList<>(); for (YunPianSendResult.DataDTO datum : response.getData()) { SmsRecord smsRecord = SmsRecord.builder() @@ -118,10 +120,10 @@ public class YunPianSmsScript implements SmsScript { private String getTplValue(SmsParam smsParam) { String tplValue = ""; - if (StrUtil.isNotBlank(smsParam.getContent())) { - tplValue = StrUtil.split(smsParam.getContent(), PARAMS_SPLIT_KEY).stream().map(item -> { - List kv = StrUtil.splitTrim(item, PARAMS_KV_SPLIT_KEY, 2); - return String.join("=", URLUtil.encodeQuery(kv.get(0)), URLUtil.encodeQuery(kv.get(1))); + if (CharSequenceUtil.isNotBlank(smsParam.getContent())) { + tplValue = CharSequenceUtil.split(smsParam.getContent(), PARAMS_SPLIT_KEY).stream().map(item -> { + List kv = CharSequenceUtil.splitTrim(item, PARAMS_KV_SPLIT_KEY, 2); + return String.join("=", URLEncodeUtil.encodeQuery(kv.get(0)), URLEncodeUtil.encodeQuery(kv.get(1))); }).collect(Collectors.joining("&")); } return tplValue; diff --git a/austin-handler/src/main/java/com/java3y/austin/handler/utils/GroupIdMappingUtils.java b/austin-handler/src/main/java/com/java3y/austin/handler/utils/GroupIdMappingUtils.java index 1665cb1..2a608e8 100644 --- a/austin-handler/src/main/java/com/java3y/austin/handler/utils/GroupIdMappingUtils.java +++ b/austin-handler/src/main/java/com/java3y/austin/handler/utils/GroupIdMappingUtils.java @@ -15,6 +15,8 @@ import java.util.List; * @author 3y */ public class GroupIdMappingUtils { + private GroupIdMappingUtils() { + } /** * 获取所有的groupIds diff --git a/austin-service-api-impl/src/main/java/com/java3y/austin/service/api/impl/action/send/SendAfterCheckAction.java b/austin-service-api-impl/src/main/java/com/java3y/austin/service/api/impl/action/send/SendAfterCheckAction.java index c9774c4..b6da121 100644 --- a/austin-service-api-impl/src/main/java/com/java3y/austin/service/api/impl/action/send/SendAfterCheckAction.java +++ b/austin-service-api-impl/src/main/java/com/java3y/austin/service/api/impl/action/send/SendAfterCheckAction.java @@ -14,10 +14,7 @@ import com.java3y.austin.service.api.impl.domain.SendTaskModel; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; -import java.util.HashMap; -import java.util.Iterator; -import java.util.List; -import java.util.Set; +import java.util.*; import java.util.stream.Collectors; /** @@ -29,12 +26,12 @@ import java.util.stream.Collectors; @Service public class SendAfterCheckAction implements BusinessProcess { + public static final String PHONE_REGEX_EXP = "^((13[0-9])|(14[5,7,9])|(15[0-3,5-9])|(166)|(17[0-9])|(18[0-9])|(19[1,8,9]))\\d{8}$"; + public static final String EMAIL_REGEX_EXP = "^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$"; /** * 邮件和手机号正则 */ - public static final HashMap CHANNEL_REGEX_EXP = new HashMap<>(); - public static final String PHONE_REGEX_EXP = "^((13[0-9])|(14[5,7,9])|(15[0-3,5-9])|(166)|(17[0-9])|(18[0-9])|(19[1,8,9]))\\d{8}$"; - public static final String EMAIL_REGEX_EXP = "^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$"; + protected static final Map CHANNEL_REGEX_EXP = new HashMap<>(); static { CHANNEL_REGEX_EXP.put(IdType.PHONE.getCode(), PHONE_REGEX_EXP); @@ -51,7 +48,6 @@ public class SendAfterCheckAction implements BusinessProcess { filterIllegalReceiver(taskInfo); if (CollUtil.isEmpty(taskInfo)) { context.setNeedBreak(true).setResponse(BasicResultVO.fail(RespStatusEnum.CLIENT_BAD_PARAMETERS, "手机号或邮箱不合法, 无有效的发送任务")); - return; } } diff --git a/austin-service-api-impl/src/main/java/com/java3y/austin/service/api/impl/action/send/SendAssembleAction.java b/austin-service-api-impl/src/main/java/com/java3y/austin/service/api/impl/action/send/SendAssembleAction.java index 4de2e8a..e888aef 100644 --- a/austin-service-api-impl/src/main/java/com/java3y/austin/service/api/impl/action/send/SendAssembleAction.java +++ b/austin-service-api-impl/src/main/java/com/java3y/austin/service/api/impl/action/send/SendAssembleAction.java @@ -1,7 +1,8 @@ package com.java3y.austin.service.api.impl.action.send; +import cn.hutool.core.text.CharSequenceUtil; +import cn.hutool.core.text.StrPool; import cn.hutool.core.util.ReflectUtil; -import cn.hutool.core.util.StrUtil; import cn.hutool.json.JSONUtil; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; @@ -61,7 +62,7 @@ public class SendAssembleAction implements BusinessProcess { for (Field field : fields) { String originValue = jsonObject.getString(field.getName()); - if (StrUtil.isNotBlank(originValue)) { + if (CharSequenceUtil.isNotBlank(originValue)) { String resultValue = ContentHolderUtil.replacePlaceHolder(originValue, variables); Object resultObj = JSONUtil.isJsonObj(resultValue) ? JSONUtil.toBean(resultValue, field.getType()) : resultValue; ReflectUtil.setFieldValue(contentModel, field, resultObj); @@ -70,7 +71,7 @@ public class SendAssembleAction implements BusinessProcess { // 如果 url 字段存在,则在url拼接对应的埋点参数 String url = (String) ReflectUtil.getFieldValue(contentModel, LINK_NAME); - if (StrUtil.isNotBlank(url)) { + if (CharSequenceUtil.isNotBlank(url)) { String resultUrl = TaskInfoUtils.generateUrl(url, messageTemplate.getId(), messageTemplate.getTemplateType()); ReflectUtil.setFieldValue(contentModel, LINK_NAME, resultUrl); } @@ -114,7 +115,7 @@ public class SendAssembleAction implements BusinessProcess { .bizId(messageParam.getBizId()) .messageTemplateId(messageTemplate.getId()) .businessId(TaskInfoUtils.generateBusinessId(messageTemplate.getId(), messageTemplate.getTemplateType())) - .receiver(new HashSet<>(Arrays.asList(messageParam.getReceiver().split(String.valueOf(StrUtil.C_COMMA))))) + .receiver(new HashSet<>(Arrays.asList(messageParam.getReceiver().split(String.valueOf(StrPool.C_COMMA))))) .idType(messageTemplate.getIdType()) .sendChannel(messageTemplate.getSendChannel()) .templateType(messageTemplate.getTemplateType()) @@ -123,7 +124,7 @@ public class SendAssembleAction implements BusinessProcess { .sendAccount(messageTemplate.getSendAccount()) .contentModel(getContentModelValue(messageTemplate, messageParam)).build(); - if (StrUtil.isBlank(taskInfo.getBizId())) { + if (CharSequenceUtil.isBlank(taskInfo.getBizId())) { taskInfo.setBizId(taskInfo.getMessageId()); } diff --git a/austin-service-api-impl/src/main/java/com/java3y/austin/service/api/impl/action/send/SendPreCheckAction.java b/austin-service-api-impl/src/main/java/com/java3y/austin/service/api/impl/action/send/SendPreCheckAction.java index 4566e62..3692d39 100644 --- a/austin-service-api-impl/src/main/java/com/java3y/austin/service/api/impl/action/send/SendPreCheckAction.java +++ b/austin-service-api-impl/src/main/java/com/java3y/austin/service/api/impl/action/send/SendPreCheckAction.java @@ -1,7 +1,8 @@ package com.java3y.austin.service.api.impl.action.send; import cn.hutool.core.collection.CollUtil; -import cn.hutool.core.util.StrUtil; +import cn.hutool.core.text.CharSequenceUtil; +import cn.hutool.core.text.StrPool; import com.java3y.austin.common.constant.AustinConstant; import com.java3y.austin.common.enums.RespStatusEnum; import com.java3y.austin.common.pipeline.BusinessProcess; @@ -40,7 +41,7 @@ public class SendPreCheckAction implements BusinessProcess { // 2. 过滤 receiver=null 的messageParam List resultMessageParamList = messageParamList.stream() - .filter(messageParam -> !StrUtil.isBlank(messageParam.getReceiver())) + .filter(messageParam -> !CharSequenceUtil.isBlank(messageParam.getReceiver())) .collect(Collectors.toList()); if (CollUtil.isEmpty(resultMessageParamList)) { context.setNeedBreak(true).setResponse(BasicResultVO.fail(RespStatusEnum.CLIENT_BAD_PARAMETERS, "含接受者的参数列表为空")); @@ -48,7 +49,7 @@ public class SendPreCheckAction implements BusinessProcess { } // 3. 过滤 receiver 大于100的请求 - if (resultMessageParamList.stream().anyMatch(messageParam -> messageParam.getReceiver().split(StrUtil.COMMA).length > AustinConstant.BATCH_RECEIVER_SIZE)) { + if (resultMessageParamList.stream().anyMatch(messageParam -> messageParam.getReceiver().split(StrPool.COMMA).length > AustinConstant.BATCH_RECEIVER_SIZE)) { context.setNeedBreak(true).setResponse(BasicResultVO.fail(RespStatusEnum.TOO_MANY_RECEIVER)); return; } diff --git a/austin-service-api-impl/src/main/java/com/java3y/austin/service/api/impl/service/TraceServiceImpl.java b/austin-service-api-impl/src/main/java/com/java3y/austin/service/api/impl/service/TraceServiceImpl.java index cd1a48b..daceec2 100644 --- a/austin-service-api-impl/src/main/java/com/java3y/austin/service/api/impl/service/TraceServiceImpl.java +++ b/austin-service-api-impl/src/main/java/com/java3y/austin/service/api/impl/service/TraceServiceImpl.java @@ -1,6 +1,7 @@ package com.java3y.austin.service.api.impl.service; import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.text.CharSequenceUtil; import cn.hutool.core.util.StrUtil; import com.alibaba.fastjson.JSON; import com.java3y.austin.common.constant.AustinConstant; @@ -31,10 +32,10 @@ public class TraceServiceImpl implements TraceService { @Override public TraceResponse traceByMessageId(String messageId) { - if (StrUtil.isBlank(messageId)) { + if (CharSequenceUtil.isBlank(messageId)) { return new TraceResponse(RespStatusEnum.CLIENT_BAD_PARAMETERS.getCode(), RespStatusEnum.CLIENT_BAD_PARAMETERS.getMsg(), null); } - String redisMessageKey = StrUtil.join(StrUtil.COLON, AustinConstant.CACHE_KEY_PREFIX, AustinConstant.MESSAGE_ID, messageId); + String redisMessageKey = CharSequenceUtil.join(StrUtil.COLON, AustinConstant.CACHE_KEY_PREFIX, AustinConstant.MESSAGE_ID, messageId); List messageList = redisUtils.lRange(redisMessageKey, 0, -1); if (CollUtil.isEmpty(messageList)) { return new TraceResponse(RespStatusEnum.FAIL.getCode(), RespStatusEnum.FAIL.getMsg(), null); diff --git a/austin-stream/pom.xml b/austin-stream/pom.xml index 3bc7137..1dd45be 100644 --- a/austin-stream/pom.xml +++ b/austin-stream/pom.xml @@ -85,7 +85,7 @@ META-INF/spring.schemas + implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer"/> com.java3y.austin.stream.AustinBootStrap diff --git a/austin-stream/src/main/java/com/java3y/austin/stream/constants/AustinFlinkConstant.java b/austin-stream/src/main/java/com/java3y/austin/stream/constants/AustinFlinkConstant.java index 7bf2262..df2a325 100644 --- a/austin-stream/src/main/java/com/java3y/austin/stream/constants/AustinFlinkConstant.java +++ b/austin-stream/src/main/java/com/java3y/austin/stream/constants/AustinFlinkConstant.java @@ -6,27 +6,23 @@ package com.java3y.austin.stream.constants; * @author 3y */ public class AustinFlinkConstant { - /** * Kafka 配置信息 - * TODO 使用前配置kafka broker ip:port + * !!! TODO 使用前配置kafka broker ip:port * (真实网络ip,这里不能用配置的hosts,看语雀文档得到真实ip) * (如果想要自己监听到所有的消息,改掉groupId) */ public static final String GROUP_ID = "austinLogGroup"; public static final String TOPIC_NAME = "austinTraceLog"; public static final String BROKER = "austin-kafka:9092"; - /** * redis 配置 - * TODO 使用前配置redis ip:port + * !!! TODO 使用前配置redis ip:port * (真实网络ip,这里不能用配置的hosts,看语雀文档得到真实ip) */ public static final String REDIS_IP = "austin-redis"; public static final String REDIS_PORT = "6379"; public static final String REDIS_PASSWORD = "austin"; - - /** * Flink流程常量 */ @@ -34,6 +30,8 @@ public class AustinFlinkConstant { public static final String FUNCTION_NAME = "austin_transfer"; public static final String SINK_NAME = "austin_sink"; public static final String JOB_NAME = "AustinBootStrap"; + private AustinFlinkConstant() { + } } diff --git a/austin-stream/src/main/java/com/java3y/austin/stream/sink/AustinSink.java b/austin-stream/src/main/java/com/java3y/austin/stream/sink/AustinSink.java index d8427cf..ef4a145 100644 --- a/austin-stream/src/main/java/com/java3y/austin/stream/sink/AustinSink.java +++ b/austin-stream/src/main/java/com/java3y/austin/stream/sink/AustinSink.java @@ -1,7 +1,8 @@ package com.java3y.austin.stream.sink; import cn.hutool.core.date.DateUtil; -import cn.hutool.core.util.StrUtil; +import cn.hutool.core.text.CharSequenceUtil; +import cn.hutool.core.text.StrPool; import com.alibaba.fastjson.JSON; import com.google.common.base.Throwables; import com.java3y.austin.common.constant.AustinConstant; @@ -47,7 +48,7 @@ public class AustinSink implements SinkFunction { * 0.构建messageId维度的链路信息 数据结构list:{key,list} * key:Austin:MessageId:{messageId},listValue:[{timestamp,state,businessId},{timestamp,state,businessId}] */ - String redisMessageKey = StrUtil.join(StrUtil.COLON, AustinConstant.CACHE_KEY_PREFIX, AustinConstant.MESSAGE_ID, info.getMessageId()); + String redisMessageKey = CharSequenceUtil.join(StrPool.COLON, AustinConstant.CACHE_KEY_PREFIX, AustinConstant.MESSAGE_ID, info.getMessageId()); SimpleAnchorInfo messageAnchorInfo = SimpleAnchorInfo.builder().businessId(info.getBusinessId()).state(info.getState()).timestamp(info.getLogTimestamp()).build(); redisFutures.add(redisAsyncCommands.lpush(redisMessageKey.getBytes(), JSON.toJSONString(messageAnchorInfo).getBytes())); redisFutures.add(redisAsyncCommands.expire(redisMessageKey.getBytes(), Duration.ofDays(3).toMillis() / 1000)); diff --git a/austin-stream/src/main/java/com/java3y/austin/stream/utils/LettuceRedisUtils.java b/austin-stream/src/main/java/com/java3y/austin/stream/utils/LettuceRedisUtils.java index 0c64cd2..0639839 100644 --- a/austin-stream/src/main/java/com/java3y/austin/stream/utils/LettuceRedisUtils.java +++ b/austin-stream/src/main/java/com/java3y/austin/stream/utils/LettuceRedisUtils.java @@ -33,6 +33,9 @@ public class LettuceRedisUtils { redisClient = RedisClient.create(redisUri); } + private LettuceRedisUtils() { + + } /** * 封装pipeline操作 diff --git a/austin-stream/src/main/java/com/java3y/austin/stream/utils/MessageQueueUtils.java b/austin-stream/src/main/java/com/java3y/austin/stream/utils/MessageQueueUtils.java index d4de674..5e7cd41 100644 --- a/austin-stream/src/main/java/com/java3y/austin/stream/utils/MessageQueueUtils.java +++ b/austin-stream/src/main/java/com/java3y/austin/stream/utils/MessageQueueUtils.java @@ -12,6 +12,9 @@ import org.apache.flink.connector.kafka.source.enumerator.initializer.OffsetsIni */ @Slf4j public class MessageQueueUtils { + private MessageQueueUtils() { + } + /** * 获取kafkaConsumer * @@ -20,13 +23,12 @@ public class MessageQueueUtils { * @return */ public static KafkaSource getKafkaConsumer(String topicName, String groupId, String broker) { - KafkaSource source = KafkaSource.builder() + return KafkaSource.builder() .setBootstrapServers(broker) .setTopics(topicName) .setGroupId(groupId) .setStartingOffsets(OffsetsInitializer.earliest()) .setValueOnlyDeserializer(new SimpleStringSchema()) .build(); - return source; } } diff --git a/austin-support/src/main/java/com/java3y/austin/support/config/SupportThreadPoolConfig.java b/austin-support/src/main/java/com/java3y/austin/support/config/SupportThreadPoolConfig.java index 85b2129..af28350 100644 --- a/austin-support/src/main/java/com/java3y/austin/support/config/SupportThreadPoolConfig.java +++ b/austin-support/src/main/java/com/java3y/austin/support/config/SupportThreadPoolConfig.java @@ -14,6 +14,9 @@ import java.util.concurrent.TimeUnit; */ public class SupportThreadPoolConfig { + private SupportThreadPoolConfig() { + } + /** * 业务:实现pending队列的单线程池 * 配置:核心线程可以被回收,当线程池无被引用且无核心线程数,应当被回收 diff --git a/austin-support/src/main/java/com/java3y/austin/support/config/ThreadPoolExecutorShutdownDefinition.java b/austin-support/src/main/java/com/java3y/austin/support/config/ThreadPoolExecutorShutdownDefinition.java index f3a2743..e865666 100644 --- a/austin-support/src/main/java/com/java3y/austin/support/config/ThreadPoolExecutorShutdownDefinition.java +++ b/austin-support/src/main/java/com/java3y/austin/support/config/ThreadPoolExecutorShutdownDefinition.java @@ -21,18 +21,15 @@ import java.util.concurrent.TimeUnit; @Slf4j public class ThreadPoolExecutorShutdownDefinition implements ApplicationListener { - private final List POOLS = Collections.synchronizedList(new ArrayList<>(12)); - /** * 线程中的任务在接收到应用关闭信号量后最多等待多久就强制终止,其实就是给剩余任务预留的时间, 到时间后线程池必须销毁 */ - private final long AWAIT_TERMINATION = 20; - + private static final long AWAIT_TERMINATION = 20; /** * awaitTermination的单位 */ - private final TimeUnit TIME_UNIT = TimeUnit.SECONDS; - + private static final TimeUnit TIME_UNIT = TimeUnit.SECONDS; + private final List POOLS = Collections.synchronizedList(new ArrayList<>(12)); public void registryExecutor(ExecutorService executor) { POOLS.add(executor); @@ -53,14 +50,10 @@ public class ThreadPoolExecutorShutdownDefinition implements ApplicationListener pool.shutdown(); try { if (!pool.awaitTermination(AWAIT_TERMINATION, TIME_UNIT)) { - if (log.isWarnEnabled()) { - log.warn("Timed out while waiting for executor [{}] to terminate", pool); - } - } - } catch (InterruptedException ex) { - if (log.isWarnEnabled()) { log.warn("Timed out while waiting for executor [{}] to terminate", pool); } + } catch (InterruptedException ex) { + log.warn("Timed out while waiting for executor [{}] to terminate", pool); Thread.currentThread().interrupt(); } } diff --git a/austin-support/src/main/java/com/java3y/austin/support/constans/MessageQueuePipeline.java b/austin-support/src/main/java/com/java3y/austin/support/constans/MessageQueuePipeline.java index 9b3c69f..8859bf1 100644 --- a/austin-support/src/main/java/com/java3y/austin/support/constans/MessageQueuePipeline.java +++ b/austin-support/src/main/java/com/java3y/austin/support/constans/MessageQueuePipeline.java @@ -6,11 +6,11 @@ package com.java3y.austin.support.constans; * * @author 3y */ -public interface MessageQueuePipeline { - String EVENT_BUS = "eventBus"; - String KAFKA = "kafka"; - String ROCKET_MQ = "rocketMq"; - String RABBIT_MQ = "rabbitMq"; - String SPRING_EVENT_BUS = "springEventBus"; +public class MessageQueuePipeline { + public static final String EVENT_BUS = "eventBus"; + public static final String KAFKA = "kafka"; + public static final String ROCKET_MQ = "rocketMq"; + public static final String RABBIT_MQ = "rabbitMq"; + public static final String SPRING_EVENT_BUS = "springEventBus"; } diff --git a/austin-support/src/main/java/com/java3y/austin/support/mq/kafka/KafkaSendMqServiceImpl.java b/austin-support/src/main/java/com/java3y/austin/support/mq/kafka/KafkaSendMqServiceImpl.java index 7f2ed26..16d8166 100644 --- a/austin-support/src/main/java/com/java3y/austin/support/mq/kafka/KafkaSendMqServiceImpl.java +++ b/austin-support/src/main/java/com/java3y/austin/support/mq/kafka/KafkaSendMqServiceImpl.java @@ -1,6 +1,6 @@ package com.java3y.austin.support.mq.kafka; -import cn.hutool.core.util.StrUtil; +import cn.hutool.core.text.CharSequenceUtil; import com.java3y.austin.support.constans.MessageQueuePipeline; import com.java3y.austin.support.mq.SendMqService; import lombok.extern.slf4j.Slf4j; @@ -35,7 +35,7 @@ public class KafkaSendMqServiceImpl implements SendMqService { @Override public void send(String topic, String jsonValue, String tagId) { - if (StrUtil.isNotBlank(tagId)) { + if (CharSequenceUtil.isNotBlank(tagId)) { List
headers = Arrays.asList(new RecordHeader(tagIdKey, tagId.getBytes(StandardCharsets.UTF_8))); kafkaTemplate.send(new ProducerRecord(topic, null, null, null, jsonValue, headers)); return; diff --git a/austin-support/src/main/java/com/java3y/austin/support/mq/springeventbus/AustinSpringEventSource.java b/austin-support/src/main/java/com/java3y/austin/support/mq/springeventbus/AustinSpringEventSource.java index a9daf7c..3fe75f7 100644 --- a/austin-support/src/main/java/com/java3y/austin/support/mq/springeventbus/AustinSpringEventSource.java +++ b/austin-support/src/main/java/com/java3y/austin/support/mq/springeventbus/AustinSpringEventSource.java @@ -3,13 +3,15 @@ package com.java3y.austin.support.mq.springeventbus; import lombok.Builder; import lombok.Data; +import java.io.Serializable; + /** * @author 3y */ @Data @Builder -public class AustinSpringEventSource { - public String topic; - public String jsonValue; - public String tagId; +public class AustinSpringEventSource implements Serializable { + private String topic; + private String jsonValue; + private String tagId; } diff --git a/austin-support/src/main/java/com/java3y/austin/support/pending/AbstractLazyPending.java b/austin-support/src/main/java/com/java3y/austin/support/pending/AbstractLazyPending.java index d913667..e84a065 100644 --- a/austin-support/src/main/java/com/java3y/austin/support/pending/AbstractLazyPending.java +++ b/austin-support/src/main/java/com/java3y/austin/support/pending/AbstractLazyPending.java @@ -57,7 +57,7 @@ public abstract class AbstractLazyPending { } // 判断是否停止当前线程 - if (stop && CollUtil.isEmpty(tasks)) { + if (Boolean.TRUE.equals(stop) && CollUtil.isEmpty(tasks)) { executorService.shutdown(); break; } @@ -75,6 +75,7 @@ public abstract class AbstractLazyPending { } catch (Exception e) { log.error("Pending#initConsumePending failed:{}", Throwables.getStackTraceAsString(e)); + Thread.currentThread().interrupt(); } } }); @@ -102,6 +103,7 @@ public abstract class AbstractLazyPending { pendingParam.getQueue().put(t); } catch (InterruptedException e) { log.error("Pending#pending error:{}", Throwables.getStackTraceAsString(e)); + Thread.currentThread().interrupt(); } } diff --git a/austin-support/src/main/java/com/java3y/austin/support/service/impl/ConfigServiceImpl.java b/austin-support/src/main/java/com/java3y/austin/support/service/impl/ConfigServiceImpl.java index c14a948..b38351c 100644 --- a/austin-support/src/main/java/com/java3y/austin/support/service/impl/ConfigServiceImpl.java +++ b/austin-support/src/main/java/com/java3y/austin/support/service/impl/ConfigServiceImpl.java @@ -1,6 +1,6 @@ package com.java3y.austin.support.service.impl; -import cn.hutool.core.util.StrUtil; +import cn.hutool.core.text.StrPool; import cn.hutool.setting.dialect.Props; import com.ctrip.framework.apollo.Config; import com.java3y.austin.support.service.ConfigService; @@ -43,10 +43,10 @@ public class ConfigServiceImpl implements ConfigService { @Override public String getProperty(String key, String defaultValue) { - if (enableApollo) { - Config config = com.ctrip.framework.apollo.ConfigService.getConfig(namespaces.split(StrUtil.COMMA)[0]); + if (Boolean.TRUE.equals(enableApollo)) { + Config config = com.ctrip.framework.apollo.ConfigService.getConfig(namespaces.split(StrPool.COMMA)[0]); return config.getProperty(key, defaultValue); - } else if (enableNacos) { + } else if (Boolean.TRUE.equals(enableNacos)) { return nacosUtils.getProperty(key, defaultValue); } else { return props.getProperty(key, defaultValue); diff --git a/austin-support/src/main/java/com/java3y/austin/support/utils/AccessTokenUtils.java b/austin-support/src/main/java/com/java3y/austin/support/utils/AccessTokenUtils.java index a88a00c..7f7a726 100644 --- a/austin-support/src/main/java/com/java3y/austin/support/utils/AccessTokenUtils.java +++ b/austin-support/src/main/java/com/java3y/austin/support/utils/AccessTokenUtils.java @@ -1,6 +1,6 @@ package com.java3y.austin.support.utils; -import cn.hutool.core.util.StrUtil; +import cn.hutool.core.text.CharSequenceUtil; import cn.hutool.crypto.SecureUtil; import cn.hutool.http.ContentType; import cn.hutool.http.Header; @@ -24,6 +24,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.redis.core.StringRedisTemplate; import org.springframework.stereotype.Component; +import java.util.Objects; import java.util.concurrent.TimeUnit; /** @@ -59,7 +60,7 @@ public class AccessTokenUtils { try { resultToken = redisTemplate.opsForValue().get(accessTokenPrefix + accountId); - if (StrUtil.isNotBlank(resultToken) && !refresh) { + if (CharSequenceUtil.isNotBlank(resultToken) && Boolean.FALSE.equals(refresh)) { return resultToken; } if (ChannelType.DING_DING_WORK_NOTICE.getCode().equals(sendChannel)) { @@ -67,7 +68,8 @@ public class AccessTokenUtils { } else if (ChannelType.PUSH.getCode().equals(sendChannel)) { resultToken = getGeTuiAccessToken(account); } - if (StrUtil.isNotBlank(resultToken)) { + if (Objects.nonNull(resultToken) && CharSequenceUtil.isNotBlank(resultToken)) { + redisTemplate.opsForValue().set(accessTokenPrefix + accountId, resultToken, expireTime, TimeUnit.SECONDS); } } catch (Exception e) { diff --git a/austin-support/src/main/java/com/java3y/austin/support/utils/AccountUtils.java b/austin-support/src/main/java/com/java3y/austin/support/utils/AccountUtils.java index df910e6..f9ab9d2 100644 --- a/austin-support/src/main/java/com/java3y/austin/support/utils/AccountUtils.java +++ b/austin-support/src/main/java/com/java3y/austin/support/utils/AccountUtils.java @@ -50,7 +50,7 @@ public class AccountUtils { @Bean public RedisTemplateWxRedisOps redisTemplateWxRedisOps() { - return new RedisTemplateWxRedisOps(redisTemplate); + return new RedisTemplateWxRedisOps(this.redisTemplate); } /** diff --git a/austin-support/src/main/java/com/java3y/austin/support/utils/AustinFileUtils.java b/austin-support/src/main/java/com/java3y/austin/support/utils/AustinFileUtils.java index e7be734..696e38e 100644 --- a/austin-support/src/main/java/com/java3y/austin/support/utils/AustinFileUtils.java +++ b/austin-support/src/main/java/com/java3y/austin/support/utils/AustinFileUtils.java @@ -6,10 +6,13 @@ import lombok.extern.slf4j.Slf4j; import java.io.File; import java.io.FileOutputStream; +import java.io.IOException; +import java.io.InputStream; import java.net.URL; import java.util.ArrayList; import java.util.Collection; import java.util.List; +import java.util.Objects; /** * @author 3y @@ -18,6 +21,10 @@ import java.util.List; @Slf4j public class AustinFileUtils { + private AustinFileUtils() { + + } + /** * 读取 远程链接 返回File对象 * @@ -26,16 +33,36 @@ public class AustinFileUtils { * @return */ public static File getRemoteUrl2File(String path, String remoteUrl) { + + InputStream inputStream = null; + FileOutputStream fileOutputStream = null; try { URL url = new URL(remoteUrl); File file = new File(path, url.getPath()); + inputStream = url.openStream(); + fileOutputStream = new FileOutputStream(file); if (!file.exists()) { file.getParentFile().mkdirs(); - IoUtil.copy(url.openStream(), new FileOutputStream(file)); + IoUtil.copy(inputStream, fileOutputStream); } return file; } catch (Exception e) { log.error("AustinFileUtils#getRemoteUrl2File fail:{},remoteUrl:{}", Throwables.getStackTraceAsString(e), remoteUrl); + } finally { + if (Objects.nonNull(inputStream)) { + try { + inputStream.close(); + } catch (IOException e) { + log.error("close#inputStream fail:{}", Throwables.getStackTraceAsString(e)); + } + } + if (Objects.nonNull(fileOutputStream)) { + try { + fileOutputStream.close(); + } catch (IOException e) { + log.error("close#fileOutputStream fail:{}", Throwables.getStackTraceAsString(e)); + } + } } return null; } diff --git a/austin-support/src/main/java/com/java3y/austin/support/utils/ConcurrentHashMapUtils.java b/austin-support/src/main/java/com/java3y/austin/support/utils/ConcurrentHashMapUtils.java index 056f3a7..917e4a8 100644 --- a/austin-support/src/main/java/com/java3y/austin/support/utils/ConcurrentHashMapUtils.java +++ b/austin-support/src/main/java/com/java3y/austin/support/utils/ConcurrentHashMapUtils.java @@ -10,7 +10,6 @@ import java.util.function.Function; * @date 2023/2/6 10:01 */ public class ConcurrentHashMapUtils { - private static boolean IS_JAVA8; static { @@ -22,6 +21,9 @@ public class ConcurrentHashMapUtils { } } + private ConcurrentHashMapUtils() { + } + /** * Java 8 ConcurrentHashMap#computeIfAbsent 存在性能问题的临时解决方案 * diff --git a/austin-support/src/main/java/com/java3y/austin/support/utils/ContentHolderUtil.java b/austin-support/src/main/java/com/java3y/austin/support/utils/ContentHolderUtil.java index 82fcdeb..56c4698 100644 --- a/austin-support/src/main/java/com/java3y/austin/support/utils/ContentHolderUtil.java +++ b/austin-support/src/main/java/com/java3y/austin/support/utils/ContentHolderUtil.java @@ -13,19 +13,19 @@ import java.util.Map; * austin占位符格式{$var} */ public class ContentHolderUtil { - /** * 占位符前缀 */ private static final String PLACE_HOLDER_PREFIX = "{$"; - /** * 占位符后缀 */ private static final String PLACE_HOLDER_SUFFIX = "}"; - private static final PropertyPlaceholderHelper PROPERTY_PLACEHOLDER_HELPER = new PropertyPlaceholderHelper(PLACE_HOLDER_PREFIX, PLACE_HOLDER_SUFFIX); + private ContentHolderUtil() { + + } public static String replacePlaceHolder(final String template, final Map paramMap) { return PROPERTY_PLACEHOLDER_HELPER.replacePlaceholders(template, new CustomPlaceholderResolver(template, paramMap)); @@ -45,7 +45,7 @@ public class ContentHolderUtil { public String resolvePlaceholder(String placeholderName) { String value = paramMap.get(placeholderName); if (StringUtils.isEmpty(value)) { - String errorStr = MessageFormat.format("template:{0} require param:{1},but not exist! paramMap:{2}", template, placeholderName, paramMap.toString()); + String errorStr = MessageFormat.format("template:{0} require param:{1},but not exist! paramMap:{2}", template, placeholderName, paramMap); throw new IllegalArgumentException(errorStr); } return value; diff --git a/austin-support/src/main/java/com/java3y/austin/support/utils/NacosUtils.java b/austin-support/src/main/java/com/java3y/austin/support/utils/NacosUtils.java index 70f9dbd..7d3377d 100644 --- a/austin-support/src/main/java/com/java3y/austin/support/utils/NacosUtils.java +++ b/austin-support/src/main/java/com/java3y/austin/support/utils/NacosUtils.java @@ -1,6 +1,6 @@ package com.java3y.austin.support.utils; -import cn.hutool.core.util.StrUtil; +import cn.hutool.core.text.CharSequenceUtil; import com.alibaba.nacos.api.annotation.NacosInjected; import com.alibaba.nacos.api.config.ConfigService; import com.alibaba.nacos.api.exception.NacosException; @@ -40,7 +40,7 @@ public class NacosUtils { log.error("Nacos error:{}", ExceptionUtils.getStackTrace(e)); } String property = properties.getProperty(key); - return StrUtil.isBlank(property) ? defaultValue : property; + return CharSequenceUtil.isBlank(property) ? defaultValue : property; } private String getContext() { diff --git a/austin-support/src/main/java/com/java3y/austin/support/utils/RedisUtils.java b/austin-support/src/main/java/com/java3y/austin/support/utils/RedisUtils.java index d44ed2d..71f672f 100644 --- a/austin-support/src/main/java/com/java3y/austin/support/utils/RedisUtils.java +++ b/austin-support/src/main/java/com/java3y/austin/support/utils/RedisUtils.java @@ -10,10 +10,7 @@ import org.springframework.data.redis.core.StringRedisTemplate; import org.springframework.data.redis.core.script.RedisScript; import org.springframework.stereotype.Component; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Objects; +import java.util.*; /** * @author 3y @@ -38,7 +35,10 @@ public class RedisUtils { List value = redisTemplate.opsForValue().multiGet(keys); if (CollUtil.isNotEmpty(value)) { for (int i = 0; i < keys.size(); i++) { - result.put(keys.get(i), value.get(i)); + if (Objects.nonNull(value.get(i))) { + result.put(keys.get(i), value.get(i)); + } + } } } catch (Exception e) { @@ -54,12 +54,11 @@ public class RedisUtils { */ public Map hGetAll(String key) { try { - Map entries = redisTemplate.opsForHash().entries(key); - return entries; + return redisTemplate.opsForHash().entries(key); } catch (Exception e) { log.error("RedisUtils#hGetAll fail! e:{}", Throwables.getStackTraceAsString(e)); } - return null; + return new HashMap<>(2); } /** @@ -73,7 +72,7 @@ public class RedisUtils { } catch (Exception e) { log.error("RedisUtils#lRange fail! e:{}", Throwables.getStackTraceAsString(e)); } - return null; + return new ArrayList<>(); } /** @@ -105,7 +104,7 @@ public class RedisUtils { return null; }); } catch (Exception e) { - log.error("RedisUtils#pipelineSetEx fail! e:{}", Throwables.getStackTraceAsString(e)); + log.error("RedisUtils#lPush fail! e:{}", Throwables.getStackTraceAsString(e)); } } @@ -116,7 +115,7 @@ public class RedisUtils { try { return redisTemplate.opsForList().size(key); } catch (Exception e) { - log.error("RedisUtils#pipelineSetEx fail! e:{}", Throwables.getStackTraceAsString(e)); + log.error("RedisUtils#lLen fail! e:{}", Throwables.getStackTraceAsString(e)); } return 0L; } @@ -128,7 +127,7 @@ public class RedisUtils { try { return redisTemplate.opsForList().leftPop(key); } catch (Exception e) { - log.error("RedisUtils#pipelineSetEx fail! e:{}", Throwables.getStackTraceAsString(e)); + log.error("RedisUtils#lPop fail! e:{}", Throwables.getStackTraceAsString(e)); } return ""; } diff --git a/austin-support/src/main/java/com/java3y/austin/support/utils/TaskInfoUtils.java b/austin-support/src/main/java/com/java3y/austin/support/utils/TaskInfoUtils.java index a70f5a1..e2dfb03 100644 --- a/austin-support/src/main/java/com/java3y/austin/support/utils/TaskInfoUtils.java +++ b/austin-support/src/main/java/com/java3y/austin/support/utils/TaskInfoUtils.java @@ -13,9 +13,10 @@ import java.util.Date; * @author 3y */ public class TaskInfoUtils { - private static final int TYPE_FLAG = 1000000; private static final String CODE = "track_code_bid"; + private TaskInfoUtils() { + } /** * 生成任务唯一Id diff --git a/austin-web/src/main/java/com/java3y/austin/web/aspect/AustinAspect.java b/austin-web/src/main/java/com/java3y/austin/web/aspect/AustinAspect.java index 9c8e44c..2df4a13 100644 --- a/austin-web/src/main/java/com/java3y/austin/web/aspect/AustinAspect.java +++ b/austin-web/src/main/java/com/java3y/austin/web/aspect/AustinAspect.java @@ -36,7 +36,7 @@ public class AustinAspect { /** * 同一个请求的KEY */ - private final String REQUEST_ID_KEY = "request_unique_id"; + private static final String REQUEST_ID_KEY = "request_unique_id"; @Autowired private HttpServletRequest request; diff --git a/austin-web/src/main/java/com/java3y/austin/web/controller/ChannelAccountController.java b/austin-web/src/main/java/com/java3y/austin/web/controller/ChannelAccountController.java index 900bd46..6879228 100644 --- a/austin-web/src/main/java/com/java3y/austin/web/controller/ChannelAccountController.java +++ b/austin-web/src/main/java/com/java3y/austin/web/controller/ChannelAccountController.java @@ -1,7 +1,8 @@ package com.java3y.austin.web.controller; -import cn.hutool.core.util.StrUtil; +import cn.hutool.core.text.CharSequenceUtil; +import cn.hutool.core.text.StrPool; import com.java3y.austin.common.constant.AustinConstant; import com.java3y.austin.common.enums.RespStatusEnum; import com.java3y.austin.support.domain.ChannelAccount; @@ -48,10 +49,10 @@ public class ChannelAccountController { @PostMapping("/save") @ApiOperation("/保存数据") public ChannelAccount saveOrUpdate(@RequestBody ChannelAccount channelAccount) { - if (loginUtils.needLogin() && StrUtil.isBlank(channelAccount.getCreator())) { + if (loginUtils.needLogin() && CharSequenceUtil.isBlank(channelAccount.getCreator())) { throw new CommonException(RespStatusEnum.NO_LOGIN.getCode(), RespStatusEnum.NO_LOGIN.getMsg()); } - channelAccount.setCreator(StrUtil.isBlank(channelAccount.getCreator()) ? AustinConstant.DEFAULT_CREATOR : channelAccount.getCreator()); + channelAccount.setCreator(CharSequenceUtil.isBlank(channelAccount.getCreator()) ? AustinConstant.DEFAULT_CREATOR : channelAccount.getCreator()); return channelAccountService.save(channelAccount); } @@ -62,10 +63,10 @@ public class ChannelAccountController { @GetMapping("/queryByChannelType") @ApiOperation("/根据渠道标识查询相关的记录") public List query(Integer channelType, String creator) { - if (loginUtils.needLogin() && StrUtil.isBlank(creator)) { + if (loginUtils.needLogin() && CharSequenceUtil.isBlank(creator)) { throw new CommonException(RespStatusEnum.NO_LOGIN.getCode(), RespStatusEnum.NO_LOGIN.getMsg()); } - creator = StrUtil.isBlank(creator) ? AustinConstant.DEFAULT_CREATOR : creator; + creator = CharSequenceUtil.isBlank(creator) ? AustinConstant.DEFAULT_CREATOR : creator; List channelAccounts = channelAccountService.queryByChannelType(channelType, creator); return Convert4Amis.getChannelAccountVo(channelAccounts, channelType); @@ -77,11 +78,11 @@ public class ChannelAccountController { @GetMapping("/list") @ApiOperation("/渠道账号列表信息") public List list(String creator) { - if (loginUtils.needLogin() && StrUtil.isBlank(creator)) { + if (loginUtils.needLogin() && CharSequenceUtil.isBlank(creator)) { throw new CommonException(RespStatusEnum.NO_LOGIN.getCode(), RespStatusEnum.NO_LOGIN.getMsg()); } - creator = StrUtil.isBlank(creator) ? AustinConstant.DEFAULT_CREATOR : creator; + creator = CharSequenceUtil.isBlank(creator) ? AustinConstant.DEFAULT_CREATOR : creator; return channelAccountService.list(creator); } @@ -93,8 +94,8 @@ public class ChannelAccountController { @DeleteMapping("delete/{id}") @ApiOperation("/根据Ids删除") public void deleteByIds(@PathVariable("id") String id) { - if (StrUtil.isNotBlank(id)) { - List idList = Arrays.stream(id.split(StrUtil.COMMA)).map(Long::valueOf).collect(Collectors.toList()); + if (CharSequenceUtil.isNotBlank(id)) { + List idList = Arrays.stream(id.split(StrPool.COMMA)).map(Long::valueOf).collect(Collectors.toList()); channelAccountService.deleteByIds(idList); } } diff --git a/austin-web/src/main/java/com/java3y/austin/web/controller/DataController.java b/austin-web/src/main/java/com/java3y/austin/web/controller/DataController.java index 618c0fa..c1c00fd 100644 --- a/austin-web/src/main/java/com/java3y/austin/web/controller/DataController.java +++ b/austin-web/src/main/java/com/java3y/austin/web/controller/DataController.java @@ -1,6 +1,6 @@ package com.java3y.austin.web.controller; -import cn.hutool.core.util.StrUtil; +import cn.hutool.core.text.CharSequenceUtil; import com.java3y.austin.web.annotation.AustinAspect; import com.java3y.austin.web.annotation.AustinResult; import com.java3y.austin.web.service.DataService; @@ -39,7 +39,7 @@ public class DataController { @PostMapping("/message") @ApiOperation("/获取【72小时】发送消息的全链路数据") public UserTimeLineVo getMessageData(@RequestBody DataParam dataParam) { - if (Objects.isNull(dataParam) || StrUtil.isBlank(dataParam.getMessageId())) { + if (Objects.isNull(dataParam) || CharSequenceUtil.isBlank(dataParam.getMessageId())) { return UserTimeLineVo.builder().items(new ArrayList<>()).build(); } return dataService.getTraceMessageInfo(dataParam.getMessageId()); @@ -48,7 +48,7 @@ public class DataController { @PostMapping("/user") @ApiOperation("/获取【当天】用户接收消息的全链路数据") public UserTimeLineVo getUserData(@RequestBody DataParam dataParam) { - if (Objects.isNull(dataParam) || StrUtil.isBlank(dataParam.getReceiver())) { + if (Objects.isNull(dataParam) || CharSequenceUtil.isBlank(dataParam.getReceiver())) { return UserTimeLineVo.builder().items(new ArrayList<>()).build(); } return dataService.getTraceUserInfo(dataParam.getReceiver()); @@ -58,7 +58,7 @@ public class DataController { @ApiOperation("/获取消息模板全链路数据") public EchartsVo getMessageTemplateData(@RequestBody DataParam dataParam) { EchartsVo echartsVo = EchartsVo.builder().build(); - if (StrUtil.isNotBlank(dataParam.getBusinessId())) { + if (CharSequenceUtil.isNotBlank(dataParam.getBusinessId())) { echartsVo = dataService.getTraceMessageTemplateInfo(dataParam.getBusinessId()); } return echartsVo; @@ -67,7 +67,7 @@ public class DataController { @PostMapping("/sms") @ApiOperation("/获取短信下发数据") public SmsTimeLineVo getSmsData(@RequestBody DataParam dataParam) { - if (Objects.isNull(dataParam) || Objects.isNull(dataParam.getDateTime()) || StrUtil.isBlank(dataParam.getReceiver())) { + if (Objects.isNull(dataParam) || Objects.isNull(dataParam.getDateTime()) || CharSequenceUtil.isBlank(dataParam.getReceiver())) { return SmsTimeLineVo.builder().items(Lists.newArrayList()).build(); } return dataService.getTraceSmsInfo(dataParam); diff --git a/austin-web/src/main/java/com/java3y/austin/web/controller/MessageTemplateController.java b/austin-web/src/main/java/com/java3y/austin/web/controller/MessageTemplateController.java index 889b346..aab3477 100644 --- a/austin-web/src/main/java/com/java3y/austin/web/controller/MessageTemplateController.java +++ b/austin-web/src/main/java/com/java3y/austin/web/controller/MessageTemplateController.java @@ -1,8 +1,9 @@ package com.java3y.austin.web.controller; import cn.hutool.core.map.MapUtil; +import cn.hutool.core.text.CharSequenceUtil; +import cn.hutool.core.text.StrPool; import cn.hutool.core.util.IdUtil; -import cn.hutool.core.util.StrUtil; import com.alibaba.fastjson.JSON; import com.google.common.base.Throwables; import com.java3y.austin.common.enums.RespStatusEnum; @@ -34,7 +35,10 @@ import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import java.io.File; -import java.util.*; +import java.util.Arrays; +import java.util.List; +import java.util.Map; +import java.util.Objects; import java.util.stream.Collectors; @@ -73,7 +77,7 @@ public class MessageTemplateController { @PostMapping("/save") @ApiOperation("/保存数据") public MessageTemplate saveOrUpdate(@RequestBody MessageTemplate messageTemplate) { - if (loginUtils.needLogin() && StrUtil.isBlank(messageTemplate.getCreator())) { + if (loginUtils.needLogin() && CharSequenceUtil.isBlank(messageTemplate.getCreator())) { throw new CommonException(RespStatusEnum.NO_LOGIN.getCode(), RespStatusEnum.NO_LOGIN.getMsg()); } return messageTemplateService.saveOrUpdate(messageTemplate); @@ -85,7 +89,7 @@ public class MessageTemplateController { @GetMapping("/list") @ApiOperation("/列表页") public MessageTemplateVo queryList(@Validated MessageTemplateParam messageTemplateParam) { - if (loginUtils.needLogin() && StrUtil.isBlank(messageTemplateParam.getCreator())) { + if (loginUtils.needLogin() && CharSequenceUtil.isBlank(messageTemplateParam.getCreator())) { throw new CommonException(RespStatusEnum.NO_LOGIN.getCode(), RespStatusEnum.NO_LOGIN.getMsg()); } Page messageTemplates = messageTemplateService.queryList(messageTemplateParam); @@ -119,8 +123,8 @@ public class MessageTemplateController { @DeleteMapping("delete/{id}") @ApiOperation("/根据Ids删除") public void deleteByIds(@PathVariable("id") String id) { - if (StrUtil.isNotBlank(id)) { - List idList = Arrays.stream(id.split(StrUtil.COMMA)).map(Long::valueOf).collect(Collectors.toList()); + if (CharSequenceUtil.isNotBlank(id)) { + List idList = Arrays.stream(id.split(StrPool.COMMA)).map(Long::valueOf).collect(Collectors.toList()); messageTemplateService.deleteByIds(idList); } } @@ -192,7 +196,7 @@ public class MessageTemplateController { */ @PostMapping("upload") @ApiOperation("/上传人群文件") - public HashMap upload(@RequestParam("file") MultipartFile file) { + public Map upload(@RequestParam("file") MultipartFile file) { String filePath = dataPath + IdUtil.fastSimpleUUID() + file.getOriginalFilename(); try { File localFile = new File(filePath); diff --git a/austin-web/src/main/java/com/java3y/austin/web/controller/OfficialAccountController.java b/austin-web/src/main/java/com/java3y/austin/web/controller/OfficialAccountController.java index 100e8e7..7ed8841 100644 --- a/austin-web/src/main/java/com/java3y/austin/web/controller/OfficialAccountController.java +++ b/austin-web/src/main/java/com/java3y/austin/web/controller/OfficialAccountController.java @@ -1,9 +1,9 @@ package com.java3y.austin.web.controller; +import cn.hutool.core.text.CharSequenceUtil; import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.RandomUtil; -import cn.hutool.core.util.StrUtil; import cn.hutool.http.Header; import cn.hutool.http.HttpUtil; import com.alibaba.fastjson.JSON; @@ -132,7 +132,7 @@ public class OfficialAccountController { String timestamp = request.getParameter(OfficialAccountParamConstant.TIMESTAMP); // echoStr!=null,说明只是微信调试的请求 - if (StrUtil.isNotBlank(echoStr)) { + if (CharSequenceUtil.isNotBlank(echoStr)) { return echoStr; } @@ -140,7 +140,7 @@ public class OfficialAccountController { return RespStatusEnum.CLIENT_BAD_PARAMETERS.getMsg(); } - String encryptType = StrUtil.isBlank(request.getParameter(OfficialAccountParamConstant.ENCRYPT_TYPE)) ? OfficialAccountParamConstant.RAW : request.getParameter(OfficialAccountParamConstant.ENCRYPT_TYPE); + String encryptType = CharSequenceUtil.isBlank(request.getParameter(OfficialAccountParamConstant.ENCRYPT_TYPE)) ? OfficialAccountParamConstant.RAW : request.getParameter(OfficialAccountParamConstant.ENCRYPT_TYPE); if (OfficialAccountParamConstant.RAW.equals(encryptType)) { WxMpXmlMessage inMessage = WxMpXmlMessage.fromXml(request.getInputStream()); log.info("raw inMessage:{}", JSON.toJSONString(inMessage)); @@ -197,7 +197,7 @@ public class OfficialAccountController { @AustinResult public WxMpUser checkLogin(String sceneId) { String userInfo = redisTemplate.opsForValue().get(sceneId); - if (StrUtil.isBlank(userInfo)) { + if (CharSequenceUtil.isBlank(userInfo)) { throw new CommonException(RespStatusEnum.SUCCESS.getCode(), RespStatusEnum.SUCCESS.getMsg(), RespStatusEnum.NO_LOGIN); } return JSON.parseObject(userInfo, WxMpUser.class); diff --git a/austin-web/src/main/java/com/java3y/austin/web/exception/ExceptionHandlerAdvice.java b/austin-web/src/main/java/com/java3y/austin/web/exception/ExceptionHandlerAdvice.java index 9b0fde9..8e8ca1a 100644 --- a/austin-web/src/main/java/com/java3y/austin/web/exception/ExceptionHandlerAdvice.java +++ b/austin-web/src/main/java/com/java3y/austin/web/exception/ExceptionHandlerAdvice.java @@ -22,20 +22,17 @@ import org.springframework.web.bind.annotation.ResponseStatus; public class ExceptionHandlerAdvice { private static final Logger log = LoggerFactory.getLogger(ExceptionHandlerAdvice.class); - public ExceptionHandlerAdvice() { - } @ExceptionHandler({Exception.class}) @ResponseStatus(HttpStatus.OK) - public BasicResultVO exceptionResponse(Exception e) { - BasicResultVO result = BasicResultVO.fail(RespStatusEnum.ERROR_500, "\r\n" + Throwables.getStackTrace(e) + "\r\n"); + public BasicResultVO exceptionResponse(Exception e) { log.error(Throwables.getStackTrace(e)); - return result; + return BasicResultVO.fail(RespStatusEnum.ERROR_500, "\r\n" + Throwables.getStackTrace(e) + "\r\n"); } @ExceptionHandler({CommonException.class}) @ResponseStatus(HttpStatus.OK) - public BasicResultVO commonResponse(CommonException ce) { + public BasicResultVO commonResponse(CommonException ce) { log.error(Throwables.getStackTrace(ce)); return new BasicResultVO(ce.getCode(), ce.getMessage(), ce.getRespStatusEnum()); } diff --git a/austin-web/src/main/java/com/java3y/austin/web/service/impl/ChannelAccountServiceImpl.java b/austin-web/src/main/java/com/java3y/austin/web/service/impl/ChannelAccountServiceImpl.java index 2e9d577..2b56603 100644 --- a/austin-web/src/main/java/com/java3y/austin/web/service/impl/ChannelAccountServiceImpl.java +++ b/austin-web/src/main/java/com/java3y/austin/web/service/impl/ChannelAccountServiceImpl.java @@ -1,7 +1,7 @@ package com.java3y.austin.web.service.impl; import cn.hutool.core.date.DateUtil; -import cn.hutool.core.util.StrUtil; +import cn.hutool.core.text.CharSequenceUtil; import com.java3y.austin.common.constant.AustinConstant; import com.java3y.austin.common.constant.CommonConstant; import com.java3y.austin.support.dao.ChannelAccountDao; @@ -28,7 +28,7 @@ public class ChannelAccountServiceImpl implements ChannelAccountService { channelAccount.setCreated(Math.toIntExact(DateUtil.currentSeconds())); channelAccount.setIsDeleted(CommonConstant.FALSE); } - channelAccount.setCreator(StrUtil.isBlank(channelAccount.getCreator()) ? AustinConstant.DEFAULT_CREATOR : channelAccount.getCreator()); + channelAccount.setCreator(CharSequenceUtil.isBlank(channelAccount.getCreator()) ? AustinConstant.DEFAULT_CREATOR : channelAccount.getCreator()); channelAccount.setUpdated(Math.toIntExact(DateUtil.currentSeconds())); return channelAccountDao.save(channelAccount); } diff --git a/austin-web/src/main/java/com/java3y/austin/web/service/impl/DataServiceImpl.java b/austin-web/src/main/java/com/java3y/austin/web/service/impl/DataServiceImpl.java index 0e0a9f6..8057203 100644 --- a/austin-web/src/main/java/com/java3y/austin/web/service/impl/DataServiceImpl.java +++ b/austin-web/src/main/java/com/java3y/austin/web/service/impl/DataServiceImpl.java @@ -4,8 +4,8 @@ import cn.hutool.core.collection.CollUtil; import cn.hutool.core.date.DatePattern; import cn.hutool.core.date.DateUtil; import cn.hutool.core.map.MapUtil; +import cn.hutool.core.text.CharSequenceUtil; import cn.hutool.core.text.StrPool; -import cn.hutool.core.util.StrUtil; import com.alibaba.fastjson.JSON; import com.java3y.austin.common.constant.AustinConstant; import com.java3y.austin.common.domain.SimpleAnchorInfo; @@ -104,7 +104,7 @@ public class DataServiceImpl implements DataService { return SmsTimeLineVo.builder().items(Arrays.asList(SmsTimeLineVo.ItemsVO.builder().build())).build(); } - Map> maps = smsRecordList.stream().collect(Collectors.groupingBy((o) -> o.getPhone() + o.getSeriesId())); + Map> maps = smsRecordList.stream().collect(Collectors.groupingBy(o -> o.getPhone() + o.getSeriesId())); return Convert4Amis.getSmsTimeLineVo(maps); } @@ -158,7 +158,7 @@ public class DataServiceImpl implements DataService { } for (String detail : sb.toString().split(StrPool.CRLF)) { - if (StrUtil.isNotBlank(detail)) { + if (CharSequenceUtil.isNotBlank(detail)) { UserTimeLineVo.ItemsVO itemsVO = UserTimeLineVo.ItemsVO.builder() .businessId(entry.getKey()) .sendType(EnumUtil.getEnumByCode(messageTemplate.getSendChannel(), ChannelType.class).getDescription()) diff --git a/austin-web/src/main/java/com/java3y/austin/web/service/impl/MaterialServiceImpl.java b/austin-web/src/main/java/com/java3y/austin/web/service/impl/MaterialServiceImpl.java index 7aaada0..f613667 100644 --- a/austin-web/src/main/java/com/java3y/austin/web/service/impl/MaterialServiceImpl.java +++ b/austin-web/src/main/java/com/java3y/austin/web/service/impl/MaterialServiceImpl.java @@ -1,7 +1,7 @@ package com.java3y.austin.web.service.impl; +import cn.hutool.core.text.CharSequenceUtil; import cn.hutool.core.util.IdUtil; -import cn.hutool.core.util.StrUtil; import cn.hutool.http.HttpRequest; import com.alibaba.fastjson.JSON; import com.dingtalk.api.DefaultDingTalkClient; @@ -66,7 +66,7 @@ public class MaterialServiceImpl implements MaterialService { } catch (Exception e) { log.error("MaterialService#dingDingMaterialUpload fail:{}", Throwables.getStackTraceAsString(e)); } - return BasicResultVO.fail("未知错误,联系管理员"); + return BasicResultVO.fail(RespStatusEnum.SERVICE_ERROR.getMsg()); } @Override @@ -88,7 +88,7 @@ public class MaterialServiceImpl implements MaterialService { } catch (Exception e) { log.error("MaterialService#enterpriseWeChatRootMaterialUpload fail:{}", Throwables.getStackTraceAsString(e)); } - return BasicResultVO.fail("未知错误,联系管理员"); + return BasicResultVO.fail(RespStatusEnum.SERVICE_ERROR.getMsg()); } @Override @@ -99,13 +99,13 @@ public class MaterialServiceImpl implements MaterialService { wxCpService.setWxCpConfigStorage(accountConfig); WxMediaUploadResult result = wxCpService.getMediaService() .upload(EnumUtil.getDescriptionByCode(Integer.valueOf(fileType), FileType.class), SpringFileUtils.getFile(multipartFile)); - if (StrUtil.isNotBlank(result.getMediaId())) { + if (CharSequenceUtil.isNotBlank(result.getMediaId())) { return new BasicResultVO(RespStatusEnum.SUCCESS, UploadResponseVo.builder().id(result.getMediaId()).build()); } log.error("MaterialService#enterpriseWeChatMaterialUpload fail:{}", JSON.toJSONString(result)); } catch (Exception e) { log.error("MaterialService#enterpriseWeChatMaterialUpload fail:{}", Throwables.getStackTraceAsString(e)); } - return BasicResultVO.fail("未知错误,联系管理员"); + return BasicResultVO.fail(RespStatusEnum.SERVICE_ERROR.getMsg()); } } diff --git a/austin-web/src/main/java/com/java3y/austin/web/service/impl/MessageTemplateServiceImpl.java b/austin-web/src/main/java/com/java3y/austin/web/service/impl/MessageTemplateServiceImpl.java index c156fd8..d7c33f2 100644 --- a/austin-web/src/main/java/com/java3y/austin/web/service/impl/MessageTemplateServiceImpl.java +++ b/austin-web/src/main/java/com/java3y/austin/web/service/impl/MessageTemplateServiceImpl.java @@ -1,8 +1,8 @@ package com.java3y.austin.web.service.impl; import cn.hutool.core.date.DateUtil; +import cn.hutool.core.text.CharSequenceUtil; import cn.hutool.core.util.ObjectUtil; -import cn.hutool.core.util.StrUtil; import com.java3y.austin.common.constant.AustinConstant; import com.java3y.austin.common.constant.CommonConstant; import com.java3y.austin.common.enums.AuditStatus; @@ -50,11 +50,11 @@ public class MessageTemplateServiceImpl implements MessageTemplateService { @Override public Page queryList(MessageTemplateParam param) { PageRequest pageRequest = PageRequest.of(param.getPage() - 1, param.getPerPage()); - String creator = StrUtil.isBlank(param.getCreator()) ? AustinConstant.DEFAULT_CREATOR : param.getCreator(); + String creator = CharSequenceUtil.isBlank(param.getCreator()) ? AustinConstant.DEFAULT_CREATOR : param.getCreator(); return messageTemplateDao.findAll((Specification) (root, query, cb) -> { List predicateList = new ArrayList<>(); // 加搜索条件 - if (StrUtil.isNotBlank(param.getKeywords())) { + if (CharSequenceUtil.isNotBlank(param.getKeywords())) { predicateList.add(cb.like(root.get("name").as(String.class), "%" + param.getKeywords() + "%")); } predicateList.add(cb.equal(root.get("isDeleted").as(Integer.class), CommonConstant.FALSE)); @@ -161,12 +161,12 @@ public class MessageTemplateServiceImpl implements MessageTemplateService { * @param messageTemplate */ private void initStatus(MessageTemplate messageTemplate) { - messageTemplate.setFlowId(StrUtil.EMPTY) + messageTemplate.setFlowId(CharSequenceUtil.EMPTY) .setMsgStatus(MessageStatus.INIT.getCode()).setAuditStatus(AuditStatus.WAIT_AUDIT.getCode()) - .setCreator(StrUtil.isBlank(messageTemplate.getCreator()) ? AustinConstant.DEFAULT_CREATOR : messageTemplate.getCreator()) - .setUpdator(StrUtil.isBlank(messageTemplate.getUpdator()) ? AustinConstant.DEFAULT_UPDATOR : messageTemplate.getUpdator()) - .setTeam(StrUtil.isBlank(messageTemplate.getTeam()) ? AustinConstant.DEFAULT_TEAM : messageTemplate.getTeam()) - .setAuditor(StrUtil.isBlank(messageTemplate.getAuditor()) ? AustinConstant.DEFAULT_AUDITOR : messageTemplate.getAuditor()) + .setCreator(CharSequenceUtil.isBlank(messageTemplate.getCreator()) ? AustinConstant.DEFAULT_CREATOR : messageTemplate.getCreator()) + .setUpdator(CharSequenceUtil.isBlank(messageTemplate.getUpdator()) ? AustinConstant.DEFAULT_UPDATOR : messageTemplate.getUpdator()) + .setTeam(CharSequenceUtil.isBlank(messageTemplate.getTeam()) ? AustinConstant.DEFAULT_TEAM : messageTemplate.getTeam()) + .setAuditor(CharSequenceUtil.isBlank(messageTemplate.getAuditor()) ? AustinConstant.DEFAULT_AUDITOR : messageTemplate.getAuditor()) .setCreated(Math.toIntExact(DateUtil.currentSeconds())) .setIsDeleted(CommonConstant.FALSE); diff --git a/austin-web/src/main/java/com/java3y/austin/web/utils/AnchorStateUtils.java b/austin-web/src/main/java/com/java3y/austin/web/utils/AnchorStateUtils.java index 250ff98..336f310 100644 --- a/austin-web/src/main/java/com/java3y/austin/web/utils/AnchorStateUtils.java +++ b/austin-web/src/main/java/com/java3y/austin/web/utils/AnchorStateUtils.java @@ -1,6 +1,6 @@ package com.java3y.austin.web.utils; -import cn.hutool.core.util.StrUtil; +import cn.hutool.core.text.CharSequenceUtil; import com.java3y.austin.common.enums.AnchorState; import com.java3y.austin.common.enums.ChannelType; import com.java3y.austin.common.enums.EnumUtil; @@ -15,6 +15,10 @@ import me.chanjar.weixin.common.error.WxMpErrorMsgEnum; */ public class AnchorStateUtils { + private AnchorStateUtils() { + + } + /** * 根据渠道和点位 获取点位的描述 * @@ -26,7 +30,7 @@ public class AnchorStateUtils { String stateDescription = EnumUtil.getDescriptionByCode(state, AnchorState.class); // 如果 AnchorState 找不到对应的点位描述,那就是在对应渠道的点位信息 - if (StrUtil.isBlank(stateDescription)) { + if (CharSequenceUtil.isBlank(stateDescription)) { if (ChannelType.MINI_PROGRAM.getCode().equals(channel)) { stateDescription = WxMaErrorMsgEnum.findMsgByCode(state); } else if (ChannelType.OFFICIAL_ACCOUNT.getCode().equals(channel)) { diff --git a/austin-web/src/main/java/com/java3y/austin/web/utils/Convert4Amis.java b/austin-web/src/main/java/com/java3y/austin/web/utils/Convert4Amis.java index 5baaf19..4a961cf 100644 --- a/austin-web/src/main/java/com/java3y/austin/web/utils/Convert4Amis.java +++ b/austin-web/src/main/java/com/java3y/austin/web/utils/Convert4Amis.java @@ -4,6 +4,7 @@ import cn.hutool.core.collection.CollUtil; import cn.hutool.core.date.DatePattern; import cn.hutool.core.date.DateUtil; import cn.hutool.core.map.MapUtil; +import cn.hutool.core.text.StrPool; import cn.hutool.core.util.ReflectUtil; import cn.hutool.core.util.StrUtil; import com.alibaba.fastjson.JSON; @@ -116,7 +117,7 @@ public class Convert4Amis { for (Field field : fields) { if (FLAT_FIELD_NAME.contains(field.getName())) { String fieldValue = (String) ReflectUtil.getFieldValue(obj, field); - JSONObject jsonObject = JSONObject.parseObject(fieldValue); + JSONObject jsonObject = JSON.parseObject(fieldValue); for (String key : jsonObject.keySet()) { /** * 钉钉OA消息回显 @@ -160,7 +161,7 @@ public class Convert4Amis { CommonAmisVo officialAccountParam = null; for (WxMpTemplate wxMpTemplate : allPrivateTemplate) { if (wxTemplateId.equals(wxMpTemplate.getTemplateId())) { - String[] data = wxMpTemplate.getContent().split(StrUtil.LF); + String[] data = wxMpTemplate.getContent().split(StrPool.LF); officialAccountParam = CommonAmisVo.builder() .type("input-table") .name("officialAccountParam") diff --git a/austin-web/src/main/java/com/java3y/austin/web/utils/LoginUtils.java b/austin-web/src/main/java/com/java3y/austin/web/utils/LoginUtils.java index 5908018..3f078c3 100644 --- a/austin-web/src/main/java/com/java3y/austin/web/utils/LoginUtils.java +++ b/austin-web/src/main/java/com/java3y/austin/web/utils/LoginUtils.java @@ -1,5 +1,6 @@ package com.java3y.austin.web.utils; +import com.google.common.base.Throwables; import com.java3y.austin.common.constant.CommonConstant; import com.java3y.austin.common.constant.OfficialAccountParamConstant; import com.java3y.austin.web.config.WeChatLoginConfig; @@ -53,6 +54,7 @@ public class LoginUtils { return true; } } catch (Exception e) { + log.error("LoginUtils#needLogin fail:{}", Throwables.getStackTraceAsString(e)); } return false; } diff --git a/austin-web/src/main/java/com/java3y/austin/web/utils/SpringFileUtils.java b/austin-web/src/main/java/com/java3y/austin/web/utils/SpringFileUtils.java index ce6892e..8af9482 100644 --- a/austin-web/src/main/java/com/java3y/austin/web/utils/SpringFileUtils.java +++ b/austin-web/src/main/java/com/java3y/austin/web/utils/SpringFileUtils.java @@ -14,7 +14,8 @@ import java.util.Objects; * multipartFile 转成 File 对象 */ public class SpringFileUtils { - + private SpringFileUtils() { + } /** * multipartFile 转成 File 对象 diff --git a/austin-web/src/test/java/com/java3y/austin/MiniProgramTestController.java b/austin-web/src/test/java/com/java3y/austin/MiniProgramTestController.java index d72d2d6..96068b1 100644 --- a/austin-web/src/test/java/com/java3y/austin/MiniProgramTestController.java +++ b/austin-web/src/test/java/com/java3y/austin/MiniProgramTestController.java @@ -3,7 +3,7 @@ package com.java3y.austin; import org.junit.jupiter.api.Test; import org.springframework.test.web.servlet.request.MockMvcRequestBuilders; -public class MiniProgramTestController extends BaseTestController { +class MiniProgramTestController extends BaseTestController { private static final String BASE_URL = "/miniProgram"; @@ -13,7 +13,7 @@ public class MiniProgramTestController extends BaseTestController { * @throws Exception */ @Test - public void queryList() throws Exception { + void queryList() throws Exception { //doRequest resultActions = mvc.perform( MockMvcRequestBuilders diff --git a/doc/check/check.xml b/doc/check/check.xml new file mode 100644 index 0000000..64ad4c5 --- /dev/null +++ b/doc/check/check.xml @@ -0,0 +1,202 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +