diff --git a/austin-common/src/main/java/com/java3y/austin/common/domain/TaskInfo.java b/austin-common/src/main/java/com/java3y/austin/common/domain/TaskInfo.java index da7d15f..1bac397 100644 --- a/austin-common/src/main/java/com/java3y/austin/common/domain/TaskInfo.java +++ b/austin-common/src/main/java/com/java3y/austin/common/domain/TaskInfo.java @@ -6,6 +6,7 @@ import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; +import java.io.Serializable; import java.util.Set; /** @@ -17,7 +18,7 @@ import java.util.Set; @Builder @AllArgsConstructor @NoArgsConstructor -public class TaskInfo { +public class TaskInfo implements Serializable { /** * 业务消息发送Id, 用于链路追踪, 若不存在, 则使用 messageId diff --git a/austin-common/src/main/java/com/java3y/austin/common/enums/AnchorState.java b/austin-common/src/main/java/com/java3y/austin/common/enums/AnchorState.java index 9be2841..092532d 100644 --- a/austin-common/src/main/java/com/java3y/austin/common/enums/AnchorState.java +++ b/austin-common/src/main/java/com/java3y/austin/common/enums/AnchorState.java @@ -14,18 +14,6 @@ import lombok.ToString; @ToString @AllArgsConstructor public enum AnchorState implements PowerfulEnum { - - /** - * ************************************************************************************************ - * ************************************************************************************************ - * - * - * Austin系统内部的点位 - * - * ************************************************************************************************ - * ************************************************************************************************ - */ - /** * 消息接收成功(获取到请求) */ @@ -67,1132 +55,7 @@ public enum AnchorState implements PowerfulEnum { /** * 点击(下发的消息被点击) */ - CLICK(64, "消息被点击"), - - - /** - * ************************************************************************************************ - * ************************************************************************************************ - *

- *

- * 微信平台的点位 - *

- * ************************************************************************************************ - * ************************************************************************************************ - */ - CODE_40001(40001, "不合法的secret参数;secret在应用详情/通讯录管理助手可查看"), - /** - * 无效的UserID. - */ - CODE_40003(40003, "无效的UserID"), - /** - * 不合法的媒体文件类型;不满足系统文件要求。参考:上传的媒体文件限制. - */ - CODE_40004(40004, "不合法的媒体文件类型;不满足系统文件要求。参考:上传的媒体文件限制"), - /** - * 不合法的type参数;合法的type取值,参考:上传临时素材. - */ - CODE_40005(40005, "不合法的type参数;合法的type取值,参考:上传临时素材"), - /** - * 不合法的文件大小;系统文件要求,参考:上传的媒体文件限制. - */ - CODE_40006(40006, "不合法的文件大小;系统文件要求,参考:上传的媒体文件限制"), - /** - * 不合法的media_id参数. - */ - CODE_40007(40007, "不合法的media_id参数"), - /** - * 不合法的msgtype参数;合法的msgtype取值,参考:消息类型. - */ - CODE_40008(40008, "不合法的msgtype参数;合法的msgtype取值,参考:消息类型"), - /** - * 上传图片大小不是有效值;图片大小的系统限制,参考上传的媒体文件限制. - */ - CODE_40009(40009, "上传图片大小不是有效值;图片大小的系统限制,参考上传的媒体文件限制"), - /** - * 上传视频大小不是有效值;视频大小的系统限制,参考上传的媒体文件限制. - */ - CODE_40011(40011, "上传视频大小不是有效值;视频大小的系统限制,参考上传的媒体文件限制"), - /** - * 不合法的CorpID;需确认CorpID是否填写正确,在 web管理端-设置 可查看. - */ - CODE_40013(40013, "不合法的CorpID;需确认CorpID是否填写正确,在 web管理端-设置 可查看"), - /** - * 不合法的access_token. - */ - CODE_40014(40014, "不合法的access_token"), - /** - * 不合法的按钮个数;菜单按钮1-3个. - */ - CODE_40016(40016, "不合法的按钮个数;菜单按钮1-3个"), - /** - * 不合法的按钮类型;支持的类型,参考:按钮类型. - */ - CODE_40017(40017, "不合法的按钮类型;支持的类型,参考:按钮类型"), - /** - * 不合法的按钮名字长度;长度应不超过16个字节. - */ - CODE_40018(40018, "不合法的按钮名字长度;长度应不超过16个字节"), - /** - * 不合法的按钮KEY长度;长度应不超过128字节. - */ - CODE_40019(40019, "不合法的按钮KEY长度;长度应不超过128字节"), - /** - * 不合法的按钮URL长度;长度应不超过1024字节. - */ - CODE_40020(40020, "不合法的按钮URL长度;长度应不超过1024字节"), - /** - * 不合法的子菜单级数;只能包含一级菜单和二级菜单. - */ - CODE_40022(40022, "不合法的子菜单级数;只能包含一级菜单和二级菜单"), - /** - * 不合法的子菜单按钮个数;子菜单按钮1-5个. - */ - CODE_40023(40023, "不合法的子菜单按钮个数;子菜单按钮1-5个"), - /** - * 不合法的子菜单按钮类型;支持的类型,参考:按钮类型. - */ - CODE_40024(40024, "不合法的子菜单按钮类型;支持的类型,参考:按钮类型"), - /** - * 不合法的子菜单按钮名字长度;支持的类型,参考:按钮类型. - */ - CODE_40025(40025, "不合法的子菜单按钮名字长度;支持的类型,参考:按钮类型"), - /** - * 不合法的子菜单按钮KEY长度;长度应不超过60个字节. - */ - CODE_40026(40026, "不合法的子菜单按钮KEY长度;长度应不超过60个字节"), - /** - * 不合法的子菜单按钮URL长度;长度应不超过1024字节. - */ - CODE_40027(40027, "不合法的子菜单按钮URL长度;长度应不超过1024字节"), - /** - * 不合法的oauth_code. - */ - CODE_40029(40029, "不合法的oauth_code"), - /** - * 不合法的UserID列表;指定的UserID列表,至少存在一个UserID不在通讯录中. - */ - CODE_40031(40031, "不合法的UserID列表;指定的UserID列表,至少存在一个UserID不在通讯录中"), - /** - * 不合法的UserID列表长度. - */ - CODE_40032(40032, "不合法的UserID列表长度"), - /** - * 不合法的请求字符;不能包含\\uxxxx格式的字符. - */ - CODE_40033(40033, "不合法的请求字符;不能包含\\uxxxx格式的字符"), - /** - * 不合法的参数. - */ - CODE_40035(40035, "不合法的参数"), - /** - * chatid不存在;会话需要先创建后,才可修改会话详情或者发起聊天. - */ - CODE_40050(40050, "chatid不存在;会话需要先创建后,才可修改会话详情或者发起聊天"), - /** - * 不合法的子菜单url域名. - */ - CODE_40054(40054, "不合法的子菜单url域名"), - /** - * 不合法的菜单url域名. - */ - CODE_40055(40055, "不合法的菜单url域名"), - /** - * 不合法的agentid. - */ - CODE_40056(40056, "不合法的agentid"), - /** - * 不合法的callbackurl或者callbackurl验证失败;可自助到开发调试工具重现. - */ - CODE_40057(40057, "不合法的callbackurl或者callbackurl验证失败;可自助到开发调试工具重现"), - /** - * 不合法的参数;传递参数不符合系统要求,需要参照具体API接口说明. - */ - CODE_40058(40058, "不合法的参数;传递参数不符合系统要求,需要参照具体API接口说明"), - /** - * 不合法的上报地理位置标志位;开关标志位只能填 0 或者 1. - */ - CODE_40059(40059, "不合法的上报地理位置标志位;开关标志位只能填 0 或者 1"), - /** - * 参数为空. - */ - CODE_40063(40063, "参数为空"), - /** - * 不合法的部门列表;部门列表为空,或者至少存在一个部门ID不存在于通讯录中. - */ - CODE_40066(40066, "不合法的部门列表;部门列表为空,或者至少存在一个部门ID不存在于通讯录中"), - /** - * 不合法的标签ID;标签ID未指定,或者指定的标签ID不存在. - */ - CODE_40068(40068, "不合法的标签ID;标签ID未指定,或者指定的标签ID不存在"), - /** - * 指定的标签范围结点全部无效. - */ - CODE_40070(40070, "指定的标签范围结点全部无效"), - /** - * 不合法的标签名字;标签名字已经存在. - */ - CODE_40071(40071, "不合法的标签名字;标签名字已经存在"), - /** - * 不合法的标签名字长度;不允许为空,最大长度限制为32个字(汉字或英文字母). - */ - CODE_40072(40072, "不合法的标签名字长度;不允许为空,最大长度限制为32个字(汉字或英文字母)"), - /** - * 不合法的openid;openid不存在,需确认获取来源. - */ - CODE_40073(40073, "不合法的openid;openid不存在,需确认获取来源"), - /** - * news消息不支持保密消息类型;图文消息支持保密类型需改用mpnews. - */ - CODE_40074(40074, "news消息不支持保密消息类型;图文消息支持保密类型需改用mpnews"), - /** - * 不合法的pre_auth_code参数;预授权码不存在,参考:获取预授权码. - */ - CODE_40077(40077, "不合法的pre_auth_code参数;预授权码不存在,参考:获取预授权码"), - /** - * 不合法的auth_code参数;需确认获取来源,并且只能消费一次. - */ - CODE_40078(40078, "不合法的auth_code参数;需确认获取来源,并且只能消费一次"), - /** - * 不合法的suite_secret;套件secret可在第三方管理端套件详情查看. - */ - CODE_40080(40080, "不合法的suite_secret;套件secret可在第三方管理端套件详情查看"), - /** - * 不合法的suite_token. - */ - CODE_40082(40082, "不合法的suite_token"), - /** - * 不合法的suite_id;suite_id不存在. - */ - CODE_40083(40083, "不合法的suite_id;suite_id不存在"), - /** - * 不合法的permanent_code参数. - */ - CODE_40084(40084, "不合法的permanent_code参数"), - /** - * 不合法的的suite_ticket参数;suite_ticket不存在或者已失效. - */ - CODE_40085(40085, "不合法的的suite_ticket参数;suite_ticket不存在或者已失效"), - /** - * 不合法的第三方应用appid;至少有一个不存在应用id. - */ - CODE_40086(40086, "不合法的第三方应用appid;至少有一个不存在应用id"), - /** - * jobid不存在;请检查 jobid 来源. - */ - CODE_40088(40088, "jobid不存在;请检查 jobid 来源"), - /** - * 批量任务的结果已清理;系统仅保存最近5次批量任务的结果。可在通讯录查看实际导入情况. - */ - CODE_40089(40089, "批量任务的结果已清理;系统仅保存最近5次批量任务的结果。可在通讯录查看实际导入情况"), - /** - * secret不合法;可能用了别的企业的secret. - */ - CODE_40091(40091, "secret不合法;可能用了别的企业的secret"), - /** - * 导入文件存在不合法的内容. - */ - CODE_40092(40092, "导入文件存在不合法的内容"), - /** - * 不合法的jsapi_ticket参数;ticket已失效,或者拼写错误. - */ - CODE_40093(40093, "不合法的jsapi_ticket参数;ticket已失效,或者拼写错误"), - /** - * 不合法的URL;缺少主页URL参数,或者URL不合法(链接需要带上协议头,以 http:// 或者 https:// 开头). - */ - CODE_40094(40094, "不合法的URL;缺少主页URL参数,或者URL不合法(链接需要带上协议头,以 http:// 或者 https:// 开头)"), - /** - * 不合法的外部联系人userid - */ - CODE_40096(40096, "不合法的外部联系人userid"), - /** - * 缺少access_token参数. - */ - CODE_41001(41001, "缺少access_token参数"), - /** - * 缺少corpid参数. - */ - CODE_41002(41002, "缺少corpid参数"), - /** - * 缺少secret参数. - */ - CODE_41004(41004, "缺少secret参数"), - /** - * 缺少media_id参数;media_id为调用接口必填参数,请确认是否有传递. - */ - CODE_41006(41006, "缺少media_id参数;media_id为调用接口必填参数,请确认是否有传递"), - /** - * 缺少auth code参数. - */ - CODE_41008(41008, "缺少auth code参数"), - /** - * 缺少userid参数. - */ - CODE_41009(41009, "缺少userid参数"), - /** - * 缺少url参数. - */ - CODE_41010(41010, "缺少url参数"), - /** - * 缺少agentid参数. - */ - CODE_41011(41011, "缺少agentid参数"), - /** - * 缺少 description 参数;发送文本卡片消息接口,description 是必填字段. - */ - CODE_41033(41033, "缺少 description 参数;发送文本卡片消息接口,description 是必填字段"), - /** - * 缺少title参数;发送图文消息,标题是必填参数。请确认参数是否有传递. - */ - CODE_41016(41016, "缺少title参数;发送图文消息,标题是必填参数。请确认参数是否有传递。"), - /** - * 缺少 department 参数. - */ - CODE_41019(41019, "缺少 department 参数"), - /** - * 缺少tagid参数. - */ - CODE_41017(41017, "缺少tagid参数"), - /** - * 缺少suite_id参数. - */ - CODE_41021(41021, "缺少suite_id参数"), - /** - * 缺少suite_access_token参数. - */ - CODE_41022(41022, "缺少suite_access_token参数"), - /** - * 缺少suite_ticket参数. - */ - CODE_41023(41023, "缺少suite_ticket参数"), - /** - * 缺少secret参数. - */ - CODE_41024(41024, "缺少secret参数"), - /** - * 缺少permanent_code参数. - */ - CODE_41025(41025, "缺少permanent_code参数"), - /** - * access_token已过期;access_token有时效性,需要重新获取一次. - */ - CODE_42001(42001, "access_token已过期;access_token有时效性,需要重新获取一次"), - /** - * pre_auth_code已过期;pre_auth_code有时效性,需要重新获取一次. - */ - CODE_42007(42007, "pre_auth_code已过期;pre_auth_code有时效性,需要重新获取一次"), - /** - * suite_access_token已过期;suite_access_token有时效性,需要重新获取一次. - */ - CODE_42009(42009, "suite_access_token已过期;suite_access_token有时效性,需要重新获取一次"), - /** - * 指定的userid未绑定微信或未关注微信插件;需要成员使用微信登录企业微信或者关注微信插件才能获取openid. - */ - CODE_43004(43004, "指定的userid未绑定微信或未关注微信插件;需要成员使用微信登录企业微信或者关注微信插件才能获取openid"), - /** - * 多媒体文件为空;上传格式参考:上传临时素材,确认header和body的内容正确. - */ - CODE_44001(44001, "多媒体文件为空;上传格式参考:上传临时素材,确认header和body的内容正确。"), - /** - * 文本消息content参数为空;发文本消息content为必填参数,且不能为空. - */ - CODE_44004(44004, "文本消息content参数为空;发文本消息content为必填参数,且不能为空"), - /** - * 多媒体文件大小超过限制;图片不可超过5M;音频不可超过5M;文件不可超过20M. - */ - CODE_45001(45001, "多媒体文件大小超过限制;图片不可超过5M;音频不可超过5M;文件不可超过20M"), - /** - * 消息内容大小超过限制. - */ - CODE_45002(45002, "消息内容大小超过限制"), - /** - * 应用description参数长度不符合系统限制;设置应用若带有description参数,则长度必须为4至120个字符. - */ - CODE_45004(45004, "应用description参数长度不符合系统限制;设置应用若带有description参数,则长度必须为4至120个字符"), - /** - * 语音播放时间超过限制;语音播放时长不能超过60秒. - */ - CODE_45007(45007, "语音播放时间超过限制;语音播放时长不能超过60秒"), - /** - * 图文消息的文章数量不符合系统限制;图文消息的文章数量不能超过8条. - */ - CODE_45008(45008, "图文消息的文章数量不符合系统限制;图文消息的文章数量不能超过8条"), - /** - * 接口调用超过限制. - */ - CODE_45009(45009, "接口调用超过限制"), - /** - * 应用name参数长度不符合系统限制;设置应用若带有name参数,则不允许为空,且不超过32个字符. - */ - CODE_45022(45022, "应用name参数长度不符合系统限制;设置应用若带有name参数,则不允许为空,且不超过32个字符"), - /** - * 帐号数量超过上限. - */ - CODE_45024(45024, "帐号数量超过上限"), - /** - * 触发删除用户数的保护;限制参考:全量覆盖成员. - */ - CODE_45026(45026, "触发删除用户数的保护;限制参考:全量覆盖成员"), - /** - * 图文消息author参数长度超过限制;最长64个字节. - */ - CODE_45032(45032, "图文消息author参数长度超过限制;最长64个字节"), - /** - * 接口并发调用超过限制. - */ - CODE_45033(45033, "接口并发调用超过限制"), - /** - * 菜单未设置;菜单需发布后才能获取到数据. - */ - CODE_46003(46003, "菜单未设置;菜单需发布后才能获取到数据"), - /** - * 指定的用户不存在;需要确认指定的用户存在于通讯录中. - */ - CODE_46004(46004, "指定的用户不存在;需要确认指定的用户存在于通讯录中"), - /** - * API接口无权限调用. - */ - CODE_48002(48002, "API接口无权限调用"), - /** - * 不合法的suite_id;确认suite_access_token由指定的suite_id生成. - */ - CODE_48003(48003, "不合法的suite_id;确认suite_access_token由指定的suite_id生成"), - /** - * 授权关系无效;可能是无授权或授权已被取消. - */ - CODE_48004(48004, "授权关系无效;可能是无授权或授权已被取消"), - /** - * API接口已废弃;接口已不再支持,建议改用新接口或者新方案. - */ - CODE_48005(48005, "API接口已废弃;接口已不再支持,建议改用新接口或者新方案"), - /** - * redirect_url未登记可信域名. - */ - CODE_50001(50001, "redirect_url未登记可信域名"), - /** - * 成员不在权限范围;请检查应用或管理组的权限范围. - */ - CODE_50002(50002, "成员不在权限范围;请检查应用或管理组的权限范围"), - /** - * 应用已禁用;禁用的应用无法使用API接口。可在”管理端-企业应用”启用应用. - */ - CODE_50003(50003, "应用已禁用;禁用的应用无法使用API接口。可在”管理端-企业应用”启用应用"), - /** - * 部门长度不符合限制;部门名称不能为空且长度不能超过32个字. - */ - CODE_60001(60001, "部门长度不符合限制;部门名称不能为空且长度不能超过32个字"), - /** - * 部门ID不存在;需要确认部门ID是否有带,并且存在通讯录中. - */ - CODE_60003(60003, "部门ID不存在;需要确认部门ID是否有带,并且存在通讯录中"), - /** - * 父部门不存在;需要确认父亲部门ID是否有带,并且存在通讯录中. - */ - CODE_60004(60004, "父部门不存在;需要确认父亲部门ID是否有带,并且存在通讯录中"), - /** - * 部门下存在成员;不允许删除有成员的部门. - */ - CODE_60005(60005, "部门下存在成员;不允许删除有成员的部门"), - /** - * 部门下存在子部门;不允许删除有子部门的部门. - */ - CODE_60006(60006, "部门下存在子部门;不允许删除有子部门的部门"), - /** - * 不允许删除根部门. - */ - CODE_60007(60007, "不允许删除根部门"), - /** - * 部门已存在;部门ID或者部门名称已存在. - */ - CODE_60008(60008, "部门已存在;部门ID或者部门名称已存在"), - /** - * 部门名称含有非法字符;不能含有 \\:?*“< >| 等字符. - */ - CODE_60009(60009, "部门名称含有非法字符;不能含有 \\ :?*“< >| 等字符"), - /** - * 部门存在循环关系. - */ - CODE_60010(60010, "部门存在循环关系"), - /** - * 指定的成员/部门/标签参数无权限. - */ - CODE_60011(60011, "指定的成员/部门/标签参数无权限"), - /** - * 不允许删除默认应用;默认应用的id为0. - */ - CODE_60012(60012, "不允许删除默认应用;默认应用的id为0"), - /** - * 访问ip不在白名单之中;请确认访问ip是否在服务商白名单IP列表. - */ - CODE_60020(60020, "访问ip不在白名单之中;请确认访问ip是否在服务商白名单IP列表"), - /** - * 不允许修改第三方应用的主页 URL;第三方应用类型,不允许通过接口修改该应用的主页 URL. - */ - CODE_60028(60028, "不允许修改第三方应用的主页 URL;第三方应用类型,不允许通过接口修改该应用的主页 URL"), - /** - * UserID已存在. - */ - CODE_60102(60102, "UserID已存在"), - /** - * 手机号码不合法;长度不超过32位,字符仅支持数字,加号和减号. - */ - CODE_60103(60103, "手机号码不合法;长度不超过32位,字符仅支持数字,加号和减号"), - /** - * 手机号码已存在;同一个企业内,成员的手机号不能重复。建议更换手机号,或者更新已有的手机记录. - */ - CODE_60104(60104, "手机号码已存在;同一个企业内,成员的手机号不能重复。建议更换手机号,或者更新已有的手机记录。"), - /** - * 邮箱不合法;长度不超过64位,且为有效的email格式. - */ - CODE_60105(60105, "邮箱不合法;长度不超过64位,且为有效的email格式"), - /** - * 邮箱已存在;同一个企业内,成员的邮箱不能重复。建议更换邮箱,或者更新已有的邮箱记录. - */ - CODE_60106(60106, "邮箱已存在;同一个企业内,成员的邮箱不能重复。建议更换邮箱,或者更新已有的邮箱记录。"), - /** - * 微信号不合法;微信号格式由字母、数字、”-“、”_“组成,长度为 3-20 字节,首字符必须是字母或”-“或”_“. - */ - CODE_60107(60107, "微信号不合法;微信号格式由字母、数字、”-“、”_“组成,长度为 3-20 字节,首字符必须是字母或”-“或”_“"), - /** - * 用户所属部门数量超过限制;用户同时归属部门不超过20个. - */ - CODE_60110(60110, "用户所属部门数量超过限制;用户同时归属部门不超过20个"), - /** - * UserID不存在;UserID参数为空,或者不存在通讯录中. - */ - CODE_60111(60111, "UserID不存在;UserID参数为空,或者不存在通讯录中"), - /** - * 成员name参数不合法;不能为空,且不能超过64字符. - */ - CODE_60112(60112, "成员name参数不合法;不能为空,且不能超过64字符"), - /** - * 无效的部门id;部门不存在通讯录中. - */ - CODE_60123(60123, "无效的部门id;部门不存在通讯录中"), - /** - * 无效的父部门id;父部门不存在通讯录中. - */ - CODE_60124(60124, "无效的父部门id;父部门不存在通讯录中"), - /** - * 非法部门名字;不能为空,且不能超过64字节,且不能含有\\:*?”< >|等字符. - */ - CODE_60125(60125, "非法部门名字;不能为空,且不能超过64字节,且不能含有\\:*?”< >|等字符"), - /** - * 缺少department参数. - */ - CODE_60127(60127, "缺少department参数"), - /** - * 成员手机和邮箱都为空;成员手机和邮箱至少有个非空. - */ - CODE_60129(60129, "成员手机和邮箱都为空;成员手机和邮箱至少有个非空"), - /** - * 发票已被其他公众号锁定. - */ - CODE_72023(72023, "发票已被其他公众号锁定"), - /** - * 发票状态错误;reimburse_status状态错误,参考:更新发票状态. - */ - CODE_72024(72024, "发票状态错误;reimburse_status状态错误,参考:更新发票状态"), - /** - * 存在发票不属于该用户;只能批量更新该openid的发票,参考:批量更新发票状态. - */ - CODE_72037(72037, "存在发票不属于该用户;只能批量更新该openid的发票,参考:批量更新发票状态"), - /** - * 可信域名不正确,或者无ICP备案. - */ - CODE_80001(80001, "可信域名不正确,或者无ICP备案"), - /** - * 部门下的结点数超过限制(3W). - */ - CODE_81001(81001, "部门下的结点数超过限制(3W)"), - /** - * 部门最多15层. - */ - CODE_81002(81002, "部门最多15层"), - /** - * 无权限操作标签. - */ - CODE_81011(81011, "无权限操作标签"), - /** - * UserID、部门ID、标签ID全部非法或无权限. - */ - CODE_81013(81013, "UserID、部门ID、标签ID全部非法或无权限"), - /** - * 标签添加成员,单次添加user或party过多. - */ - CODE_81014(81014, "标签添加成员,单次添加user或party过多"), - /** - * 指定的成员/部门/标签全部无效. - */ - CODE_82001(82001, "指定的成员/部门/标签全部无效"), - /** - * 不合法的PartyID列表长度;发消息,单次不能超过100个部门. - */ - CODE_82002(82002, "不合法的PartyID列表长度;发消息,单次不能超过100个部门"), - /** - * 不合法的TagID列表长度;发消息,单次不能超过100个标签. - */ - CODE_82003(82003, "不合法的TagID列表长度;发消息,单次不能超过100个标签"), - /** - * 成员票据过期. - */ - CODE_84014(84014, "成员票据过期"), - /** - * 成员票据无效;确认user_ticket参数来源是否正确。参考接口:根据code获取成员信息. - */ - CODE_84015(84015, "成员票据无效;确认user_ticket参数来源是否正确。参考接口:根据code获取成员信息"), - /** - * 缺少templateid参数. - */ - CODE_84019(84019, "缺少templateid参数"), - /** - * templateid不存在;确认参数是否有带,并且已创建. - */ - CODE_84020(84020, "templateid不存在;确认参数是否有带,并且已创建"), - /** - * 缺少register_code参数. - */ - CODE_84021(84021, "缺少register_code参数"), - /** - * 无效的register_code参数. - */ - CODE_84022(84022, "无效的register_code参数"), - /** - * 不允许调用设置通讯录同步完成接口. - */ - CODE_84023(84023, "不允许调用设置通讯录同步完成接口"), - /** - * 无注册信息. - */ - CODE_84024(84024, "无注册信息"), - /** - * 不符合的state参数;必须是[a-zA-Z0-9]的参数值,长度不可超过128个字节. - */ - CODE_84025(84025, "不符合的state参数;必须是[a-zA-Z0-9]的参数值,长度不可超过128个字节"), - /** - * 缺少caller参数. - */ - CODE_84052(84052, "缺少caller参数"), - /** - * 缺少callee参数. - */ - CODE_84053(84053, "缺少callee参数"), - /** - * 缺少auth_corpid参数. - */ - CODE_84054(84054, "缺少auth_corpid参数"), - /** - * 超过拨打公费电话频率。排查方法:同一个客服5秒内只能调用api拨打一次公费电话 - */ - CODE_84055(84055, "超过拨打公费电话频率。排查方法:同一个客服5秒内只能调用api拨打一次公费电话"), - /** - * 被拨打用户安装应用时未授权拨打公费电话权限. - */ - CODE_84056(84056, "被拨打用户安装应用时未授权拨打公费电话权限"), - /** - * 公费电话余额不足. - */ - CODE_84057(84057, "公费电话余额不足"), - /** - * caller - */ - CODE_84058(84058, "caller 呼叫号码不支持"), - /** - * 号码非法. - */ - CODE_84059(84059, "号码非法"), - /** - * callee - */ - CODE_84060(84060, "callee 呼叫号码不支持"), - /** - * 不存在外部联系人的关系. - */ - CODE_84061(84061, "不存在外部联系人的关系"), - /** - * 未开启公费电话应用. - */ - CODE_84062(84062, "未开启公费电话应用"), - /** - * caller不存在. - */ - CODE_84063(84063, "caller不存在"), - /** - * callee不存在. - */ - CODE_84064(84064, "callee不存在"), - /** - * caller跟callee电话号码一致。排查方法:不允许自己拨打给自己 - */ - CODE_84065(84065, "caller跟callee电话号码一致。排查方法:不允许自己拨打给自己"), - /** - * 服务商拨打次数超过限制。排查方法:单个企业管理员,在一天(以上午10 - */ - CODE_84066(84066, "服务商拨打次数超过限制。排查方法:单个企业管理员,在一天(以上午10:00为起始时间)内,对应单个服务商,只能被呼叫【4】次。"), - /** - * 管理员收到的服务商公费电话个数超过限制。排查方法:单个企业管理员,在一天(以上午10 - */ - CODE_84067(84067, "管理员收到的服务商公费电话个数超过限制。排查方法:单个企业管理员,在一天(以上午10:00为起始时间)内,一共只能被【3】个服务商成功呼叫。"), - /** - * 拨打方被限制拨打公费电话. - */ - CODE_84069(84069, "拨打方被限制拨打公费电话"), - /** - * 不支持的电话号码。排查方法:拨打方或者被拨打方电话号码不支持 - */ - CODE_84070(84070, "不支持的电话号码。排查方法:拨打方或者被拨打方电话号码不支持"), - /** - * 不合法的外部联系人授权码。排查方法:非法或者已经消费过 - */ - CODE_84071(84071, "不合法的外部联系人授权码。排查方法:非法或者已经消费过"), - /** - * 应用未配置客服. - */ - CODE_84072(84072, "应用未配置客服"), - /** - * 客服userid不在应用配置的客服列表中. - */ - CODE_84073(84073, "客服userid不在应用配置的客服列表中"), - /** - * 没有外部联系人权限. - */ - CODE_84074(84074, "没有外部联系人权限"), - /** - * 不合法或过期的authcode. - */ - CODE_84075(84075, "不合法或过期的authcode"), - /** - * 缺失authcode. - */ - CODE_84076(84076, "缺失authcode"), - /** - * 订单价格过高,无法受理. - */ - CODE_84077(84077, "订单价格过高,无法受理"), - /** - * 购买人数不正确. - */ - CODE_84078(84078, "购买人数不正确"), - /** - * 价格策略不存在. - */ - CODE_84079(84079, "价格策略不存在"), - /** - * 订单不存在. - */ - CODE_84080(84080, "订单不存在"), - /** - * 存在未支付订单. - */ - CODE_84081(84081, "存在未支付订单"), - /** - * 存在申请退款中的订单. - */ - CODE_84082(84082, "存在申请退款中的订单"), - /** - * 非服务人员. - */ - CODE_84083(84083, "非服务人员"), - /** - * 非跟进用户. - */ - CODE_84084(84084, "非跟进用户"), - /** - * 应用已下架. - */ - CODE_84085(84085, "应用已下架"), - /** - * 订单人数超过可购买最大人数. - */ - CODE_84086(84086, "订单人数超过可购买最大人数"), - /** - * 打开订单支付前禁止关闭订单. - */ - CODE_84087(84087, "打开订单支付前禁止关闭订单"), - /** - * 禁止关闭已支付的订单. - */ - CODE_84088(84088, "禁止关闭已支付的订单"), - /** - * 订单已支付. - */ - CODE_84089(84089, "订单已支付"), - /** - * 缺失user_ticket. - */ - CODE_84090(84090, "缺失user_ticket"), - /** - * 订单价格不可低于下限. - */ - CODE_84091(84091, "订单价格不可低于下限"), - /** - * 无法发起代下单操作. - */ - CODE_84092(84092, "无法发起代下单操作"), - /** - * 代理关系已占用,无法代下单. - */ - CODE_84093(84093, "代理关系已占用,无法代下单"), - /** - * 该应用未配置代理分润规则,请先联系应用服务商处理. - */ - CODE_84094(84094, "该应用未配置代理分润规则,请先联系应用服务商处理"), - /** - * 免费试用版,无法扩容. - */ - CODE_84095(84095, "免费试用版,无法扩容"), - /** - * 免费试用版,无法续期. - */ - CODE_84096(84096, "免费试用版,无法续期"), - /** - * 当前企业有未处理订单. - */ - CODE_84097(84097, "当前企业有未处理订单"), - /** - * 固定总量,无法扩容. - */ - CODE_84098(84098, "固定总量,无法扩容"), - /** - * 非购买状态,无法扩容. - */ - CODE_84099(84099, "非购买状态,无法扩容"), - /** - * 未购买过此应用,无法续期. - */ - CODE_84100(84100, "未购买过此应用,无法续期"), - /** - * 企业已试用付费版本,无法全新购买. - */ - CODE_84101(84101, "企业已试用付费版本,无法全新购买"), - /** - * 企业当前应用状态已过期,无法扩容. - */ - CODE_84102(84102, "企业当前应用状态已过期,无法扩容"), - /** - * 仅可修改未支付订单. - */ - CODE_84103(84103, "仅可修改未支付订单"), - /** - * 订单已支付,无法修改. - */ - CODE_84104(84104, "订单已支付,无法修改"), - /** - * 订单已被取消,无法修改. - */ - CODE_84105(84105, "订单已被取消,无法修改"), - /** - * 企业含有该应用的待支付订单,无法代下单. - */ - CODE_84106(84106, "企业含有该应用的待支付订单,无法代下单"), - /** - * 企业含有该应用的退款中订单,无法代下单. - */ - CODE_84107(84107, "企业含有该应用的退款中订单,无法代下单"), - /** - * 企业含有该应用的待生效订单,无法代下单. - */ - CODE_84108(84108, "企业含有该应用的待生效订单,无法代下单"), - /** - * 订单定价不能未0. - */ - CODE_84109(84109, "订单定价不能未0"), - /** - * 新安装应用不在试用状态,无法升级为付费版. - */ - CODE_84110(84110, "新安装应用不在试用状态,无法升级为付费版"), - /** - * 无足够可用优惠券. - */ - CODE_84111(84111, "无足够可用优惠券"), - /** - * 无法关闭未支付订单. - */ - CODE_84112(84112, "无法关闭未支付订单"), - /** - * 无付费信息. - */ - CODE_84113(84113, "无付费信息"), - /** - * 虚拟版本不支持下单. - */ - CODE_84114(84114, "虚拟版本不支持下单"), - /** - * 虚拟版本不支持扩容. - */ - CODE_84115(84115, "虚拟版本不支持扩容"), - /** - * 虚拟版本不支持续期. - */ - CODE_84116(84116, "虚拟版本不支持续期"), - /** - * 在虚拟正式版期内不能扩容. - */ - CODE_84117(84117, "在虚拟正式版期内不能扩容"), - /** - * 虚拟正式版期内不能变更版本. - */ - CODE_84118(84118, "虚拟正式版期内不能变更版本"), - /** - * 当前企业未报备,无法进行代下单. - */ - CODE_84119(84119, "当前企业未报备,无法进行代下单"), - /** - * 当前应用版本已删除. - */ - CODE_84120(84120, "当前应用版本已删除"), - /** - * 应用版本已删除,无法扩容. - */ - CODE_84121(84121, "应用版本已删除,无法扩容"), - /** - * 应用版本已删除,无法续期. - */ - CODE_84122(84122, "应用版本已删除,无法续期"), - /** - * 非虚拟版本,无法升级. - */ - CODE_84123(84123, "非虚拟版本,无法升级"), - /** - * 非行业方案订单,不能添加部分应用版本的订单. - */ - CODE_84124(84124, "非行业方案订单,不能添加部分应用版本的订单"), - /** - * 购买人数不能少于最少购买人数. - */ - CODE_84125(84125, "购买人数不能少于最少购买人数"), - /** - * 购买人数不能多于最大购买人数. - */ - CODE_84126(84126, "购买人数不能多于最大购买人数"), - /** - * 无应用管理权限. - */ - CODE_84127(84127, "无应用管理权限"), - /** - * 无该行业方案下全部应用的管理权限. - */ - CODE_84128(84128, "无该行业方案下全部应用的管理权限"), - /** - * 付费策略已被删除,无法下单. - */ - CODE_84129(84129, "付费策略已被删除,无法下单"), - /** - * 订单生效时间不合法. - */ - CODE_84130(84130, "订单生效时间不合法"), - /** - * 文件转译解析错误。排查方法:只支持utf8文件转译,可能是不支持的文件类型或者格式 - */ - CODE_84200(84200, "文件转译解析错误。排查方法:只支持utf8文件转译,可能是不支持的文件类型或者格式"), - /** - * 包含不合法的词语. - */ - CODE_85002(85002, "包含不合法的词语"), - /** - * 每企业每个月设置的可信域名不可超过20个. - */ - CODE_85004(85004, "每企业每个月设置的可信域名不可超过20个"), - /** - * 可信域名未通过所有权校验. - */ - CODE_85005(85005, "可信域名未通过所有权校验"), - /** - * 参数 chatid 不合法. - */ - CODE_86001(86001, "参数 chatid 不合法"), - /** - * 参数 chatid 不存在. - */ - CODE_86003(86003, "参数 chatid 不存在"), - /** - * 参数 群名不合法. - */ - CODE_86004(86004, "参数 群名不合法"), - /** - * 参数 群主不合法. - */ - CODE_86005(86005, "参数 群主不合法"), - /** - * 群成员数过多或过少. - */ - CODE_86006(86006, "群成员数过多或过少"), - /** - * 不合法的群成员. - */ - CODE_86007(86007, "不合法的群成员"), - /** - * 非法操作非自己创建的群. - */ - CODE_86008(86008, "非法操作非自己创建的群"), - /** - * 存在非法会话成员ID. - */ - CODE_86216(86216, "存在非法会话成员ID"), - /** - * 会话发送者不在会话成员列表中;会话的发送者,必须是会话的成员列表之一. - */ - CODE_86217(86217, "会话发送者不在会话成员列表中;会话的发送者,必须是会话的成员列表之一"), - /** - * 指定的会话参数不合法. - */ - CODE_86220(86220, "指定的会话参数不合法"), - /** - * 未认证摇一摇周边. - */ - CODE_90001(90001, "未认证摇一摇周边"), - /** - * 缺少摇一摇周边ticket参数. - */ - CODE_90002(90002, "缺少摇一摇周边ticket参数"), - /** - * 摇一摇周边ticket参数不合法. - */ - CODE_90003(90003, "摇一摇周边ticket参数不合法"), - /** - * 非法的对外属性类型. - */ - CODE_90100(90100, "非法的对外属性类型"), - /** - * 对外属性:文本类型长度不合法;文本长度不可超过12个UTF8字符. - */ - CODE_90101(90101, "对外属性:文本类型长度不合法;文本长度不可超过12个UTF8字符"), - /** - * 对外属性:网页类型标题长度不合法;标题长度不可超过12个UTF8字符. - */ - CODE_90102(90102, "对外属性:网页类型标题长度不合法;标题长度不可超过12个UTF8字符"), - /** - * 对外属性:网页url不合法. - */ - CODE_90103(90103, "对外属性:网页url不合法"), - /** - * 对外属性:小程序类型标题长度不合法;标题长度不可超过12个UTF8字符. - */ - CODE_90104(90104, "对外属性:小程序类型标题长度不合法;标题长度不可超过12个UTF8字符"), - /** - * 对外属性:小程序类型pagepath不合法. - */ - CODE_90105(90105, "对外属性:小程序类型pagepath不合法"), - /** - * 对外属性:请求参数不合法. - */ - CODE_90106(90106, "对外属性:请求参数不合法"), - /** - * 获取ticket的类型无效. - */ - CODE_91040(91040, "获取ticket的类型无效"), - /** - * 无权限操作指定的应用. - */ - CODE_301002(301002, "无权限操作指定的应用"), - /** - * 不允许删除创建者;创建者不允许从通讯录中删除。如果需要删除该成员,需要先在WEB管理端转移创建者身份. - */ - CODE_301005(301005, "不允许删除创建者;创建者不允许从通讯录中删除。如果需要删除该成员,需要先在WEB管理端转移创建者身份。"), - /** - * 参数 position 不合法;长度不允许超过128个字符. - */ - CODE_301012(301012, "参数 position 不合法;长度不允许超过128个字符"), - /** - * 参数 telephone 不合法;telephone必须由1-32位的纯数字或’-‘号组成. - */ - CODE_301013(301013, "参数 telephone 不合法;telephone必须由1-32位的纯数字或’-‘号组成。"), - /** - * 参数 english_name 不合法;参数如果有传递,不允许为空字符串,同时不能超过64字节,只能是由字母、数字、点(.)、减号(-)、空格或下划线(_)组成. - */ - CODE_301014(301014, "参数 english_name 不合法;参数如果有传递,不允许为空字符串,同时不能超过64字节,只能是由字母、数字、点(.)、减号(-)、空格或下划线(_)组成"), - /** - * 参数 mediaid 不合法;请检查 mediaid 来源,应该通过上传临时素材的图片类型获得mediaid. - */ - CODE_301015(301015, "参数 mediaid 不合法;请检查 mediaid 来源,应该通过上传临时素材的图片类型获得mediaid"), - /** - * 上传语音文件不符合系统要求;语音文件的系统限制,参考上传的媒体文件限制. - */ - CODE_301016(301016, "上传语音文件不符合系统要求;语音文件的系统限制,参考上传的媒体文件限制"), - /** - * 上传语音文件仅支持AMR格式;语音文件的系统限制,参考上传的媒体文件限制. - */ - CODE_301017(301017, "上传语音文件仅支持AMR格式;语音文件的系统限制,参考上传的媒体文件限制"), - /** - * 参数 userid 无效;至少有一个userid不存在于通讯录中. - */ - CODE_301021(301021, "参数 userid 无效;至少有一个userid不存在于通讯录中"), - /** - * 获取打卡数据失败;系统失败,可重试处理. - */ - CODE_301022(301022, "获取打卡数据失败;系统失败,可重试处理"), - /** - * useridlist非法或超过限额;列表数量不能为0且不超过100. - */ - CODE_301023(301023, "useridlist非法或超过限额;列表数量不能为0且不超过100"), - /** - * 获取打卡记录时间间隔超限;保证开始时间大于0 且结束时间大于 0 且结束时间大于开始时间,且间隔少于93天. - */ - CODE_301024(301024, "获取打卡记录时间间隔超限;保证开始时间大于0 且结束时间大于 0 且结束时间大于开始时间,且间隔少于93天"), - /** - * 提交审批单请求参数错误 - */ - CODE_301025(301025, "提交审批单请求参数错误"), - /** - * 不允许更新该用户的userid. - */ - CODE_301036(301036, "不允许更新该用户的userid"), - /** - * 无审批应用权限,或者提单者不在审批应用/自建应用的可见范围 - */ - CODE_301055(301055, "无审批应用权限,或者提单者不在审批应用/自建应用的可见范围"), - /** - * 审批应用已停用 - */ - CODE_301056(301056, "审批应用已停用"), - /** - * 通用错误码,提交审批单内部接口失败 - */ - CODE_301057(301057, "通用错误码,提交审批单内部接口失败"), - /** - * 输入userid无对应成员 - */ - CODE_301069(301069, "输入userid无对应成员"), - /** - * 系统错误,请稍后再试 - */ - CODE_301070(301070, "系统错误,请稍后再试"), - /** - * 企业内有其他人员有相似人脸,此情况下人脸仍然会录入成功 - */ - CODE_301071(301071, "企业内有其他人员有相似人脸,此情况下人脸仍然会录入成功"), - /** - * 人脸图像数据错误请更换图片 - */ - CODE_301072(301072, "企业内有其他人员有相似人脸,此情况下人脸仍然会录入成功"), - /** - * 输入参数错误 - */ - CODE_301075(301075, "输入参数错误"), - /** - * 批量导入任务的文件中userid有重复. - */ - CODE_302003(302003, "批量导入任务的文件中userid有重复"), - /** - * 组织架构不合法(1不是一棵树,2 多个一样的partyid,3 partyid空,4 partyid name 空,5 同一个父节点下有两个子节点 部门名字一样 可能是以上情况,请一一排查). - */ - CODE_302004(302004, "组织架构不合法(1不是一棵树,2 多个一样的partyid,3 partyid空,4 partyid name 空,5 同一个父节点下有两个子节点 部门名字一样 可能是以上情况,请一一排查)"), - /** - * 批量导入系统失败,请重新尝试导入. - */ - CODE_302005(302005, "批量导入系统失败,请重新尝试导入"), - /** - * 批量导入任务的文件中partyid有重复. - */ - CODE_302006(302006, "批量导入任务的文件中partyid有重复"), - /** - * 批量导入任务的文件中,同一个部门下有两个子部门名字一样. - */ - CODE_302007(302007, "批量导入任务的文件中,同一个部门下有两个子部门名字一样"), - /** - * CorpId参数无效;指定的CorpId不存在. - */ - CODE_2000002(2000002, "CorpId参数无效;指定的CorpId不存在"); + CLICK(64, "消息被点击"); private final Integer code; diff --git a/austin-handler/src/main/java/com/java3y/austin/handler/deduplication/service/AbstractDeduplicationService.java b/austin-handler/src/main/java/com/java3y/austin/handler/deduplication/service/AbstractDeduplicationService.java index 4317edb..40c2d7e 100644 --- a/austin-handler/src/main/java/com/java3y/austin/handler/deduplication/service/AbstractDeduplicationService.java +++ b/austin-handler/src/main/java/com/java3y/austin/handler/deduplication/service/AbstractDeduplicationService.java @@ -27,16 +27,14 @@ public abstract class AbstractDeduplicationService implements DeduplicationServi @Autowired private DeduplicationHolder deduplicationHolder; + @Autowired + private LogUtils logUtils; @PostConstruct private void init() { deduplicationHolder.putService(deduplicationType, this); } - @Autowired - private LogUtils logUtils; - - @Override public void deduplication(DeduplicationParam param) { TaskInfo taskInfo = param.getTaskInfo(); 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 9091955..fa6cb52 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 @@ -18,6 +18,8 @@ import org.springframework.stereotype.Service; public class FrequencyDeduplicationService extends AbstractDeduplicationService { + private static final String PREFIX = "FRE"; + @Autowired public FrequencyDeduplicationService(@Qualifier("SimpleLimitService") LimitService limitService) { @@ -26,8 +28,6 @@ public class FrequencyDeduplicationService extends AbstractDeduplicationService } - private static final String PREFIX = "FRE"; - /** * 业务规则去重 构建key *

diff --git a/austin-handler/src/main/java/com/java3y/austin/handler/handler/BaseHandler.java b/austin-handler/src/main/java/com/java3y/austin/handler/handler/BaseHandler.java index d40d032..ed8e9d9 100644 --- a/austin-handler/src/main/java/com/java3y/austin/handler/handler/BaseHandler.java +++ b/austin-handler/src/main/java/com/java3y/austin/handler/handler/BaseHandler.java @@ -16,24 +16,22 @@ import java.util.Objects; * 发送各个渠道的handler */ public abstract class BaseHandler implements Handler { - @Autowired - private HandlerHolder handlerHolder; - @Autowired - private LogUtils logUtils; - @Autowired - private FlowControlFactory flowControlFactory; - /** * 标识渠道的Code * 子类初始化的时候指定 */ protected Integer channelCode; - /** * 限流相关的参数 * 子类初始化的时候指定 */ protected FlowControlParam flowControlParam; + @Autowired + private HandlerHolder handlerHolder; + @Autowired + private LogUtils logUtils; + @Autowired + private FlowControlFactory flowControlFactory; /** * 初始化渠道与Handler的映射关系 @@ -43,21 +41,13 @@ public abstract class BaseHandler implements Handler { handlerHolder.putHandler(channelCode, this); } - /** - * 流量控制 - * - * @param taskInfo - */ - public void flowControl(TaskInfo taskInfo) { + + @Override + public void doHandler(TaskInfo taskInfo) { // 只有子类指定了限流参数,才需要限流 if (Objects.nonNull(flowControlParam)) { flowControlFactory.flowControl(taskInfo, flowControlParam); } - } - - @Override - public void doHandler(TaskInfo taskInfo) { - flowControl(taskInfo); if (handler(taskInfo)) { logUtils.print(AnchorInfo.builder().state(AnchorState.SEND_SUCCESS.getCode()).bizId(taskInfo.getBizId()).messageId(taskInfo.getMessageId()).businessId(taskInfo.getBusinessId()).ids(taskInfo.getReceiver()).build()); return; 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 840c26e..bbdb8bd 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 @@ -50,6 +50,8 @@ import java.util.concurrent.TimeUnit; public class DingDingWorkNoticeHandler extends BaseHandler implements Handler { + private static final String DING_DING_RECALL_KEY_PREFIX = "RECALL_"; + private static final String RECALL_BIZ_TYPE = "DingDingWorkNoticeHandler#recall"; @Autowired private AccountUtils accountUtils; @Autowired @@ -63,9 +65,6 @@ public class DingDingWorkNoticeHandler extends BaseHandler implements Handler { channelCode = ChannelType.DING_DING_WORK_NOTICE.getCode(); } - private static final String DING_DING_RECALL_KEY_PREFIX = "RECALL_"; - private static final String RECALL_BIZ_TYPE = "DingDingWorkNoticeHandler#recall"; - @Override public boolean handler(TaskInfo taskInfo) { try { 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 2a71b06..f24088b 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 @@ -16,7 +16,7 @@ import com.java3y.austin.handler.handler.Handler; import com.java3y.austin.support.utils.AccountUtils; import com.java3y.austin.support.utils.LogUtils; import lombok.extern.slf4j.Slf4j; -import me.chanjar.weixin.common.error.WxMpErrorMsgEnum; +import me.chanjar.weixin.common.error.WxCpErrorMsgEnum; import me.chanjar.weixin.cp.api.WxCpService; import me.chanjar.weixin.cp.api.impl.WxCpMessageServiceImpl; import me.chanjar.weixin.cp.api.impl.WxCpServiceImpl; @@ -55,7 +55,7 @@ public class EnterpriseWeChatHandler extends BaseHandler implements Handler { WxCpDefaultConfigImpl accountConfig = accountUtils.getAccountById(taskInfo.getSendAccount(), WxCpDefaultConfigImpl.class); WxCpMessageServiceImpl messageService = new WxCpMessageServiceImpl(initService(accountConfig)); WxCpMessageSendResult result = messageService.send(buildWxCpMessage(taskInfo, accountConfig.getAgentId())); - if (Integer.valueOf(WxMpErrorMsgEnum.CODE_0.getCode()).equals(result.getErrCode())) { + if (Integer.valueOf(WxCpErrorMsgEnum.CODE_0.getCode()).equals(result.getErrCode())) { return true; } logUtils.print(AnchorInfo.builder().bizId(taskInfo.getBizId()).messageId(taskInfo.getMessageId()).businessId(taskInfo.getBusinessId()) diff --git a/austin-handler/src/main/java/com/java3y/austin/handler/handler/impl/EnterpriseWeChatRobotHandler.java b/austin-handler/src/main/java/com/java3y/austin/handler/handler/impl/EnterpriseWeChatRobotHandler.java index b6838a0..afd3ba0 100644 --- a/austin-handler/src/main/java/com/java3y/austin/handler/handler/impl/EnterpriseWeChatRobotHandler.java +++ b/austin-handler/src/main/java/com/java3y/austin/handler/handler/impl/EnterpriseWeChatRobotHandler.java @@ -19,6 +19,7 @@ import com.java3y.austin.handler.handler.Handler; import com.java3y.austin.support.utils.AccountUtils; import com.java3y.austin.support.utils.LogUtils; import lombok.extern.slf4j.Slf4j; +import me.chanjar.weixin.common.error.WxCpErrorMsgEnum; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -52,7 +53,7 @@ public class EnterpriseWeChatRobotHandler extends BaseHandler implements Handler .timeout(2000) .execute().body(); EnterpriseWeChatRootResult weChatRootResult = JSON.parseObject(result, EnterpriseWeChatRootResult.class); - if (weChatRootResult.getErrcode() == 0) { + if (Integer.valueOf(WxCpErrorMsgEnum.CODE_0.getCode()).equals(weChatRootResult.getErrcode())) { return true; } logUtils.print(AnchorInfo.builder().bizId(taskInfo.getBizId()).messageId(taskInfo.getMessageId()).businessId(taskInfo.getBusinessId()) diff --git a/austin-handler/src/main/java/com/java3y/austin/handler/handler/impl/MiniProgramAccountHandler.java b/austin-handler/src/main/java/com/java3y/austin/handler/handler/impl/MiniProgramAccountHandler.java index 5fcc04c..5ded973 100644 --- a/austin-handler/src/main/java/com/java3y/austin/handler/handler/impl/MiniProgramAccountHandler.java +++ b/austin-handler/src/main/java/com/java3y/austin/handler/handler/impl/MiniProgramAccountHandler.java @@ -2,9 +2,9 @@ package com.java3y.austin.handler.handler.impl; import cn.binarywang.wx.miniapp.api.WxMaService; import cn.binarywang.wx.miniapp.bean.WxMaSubscribeMessage; +import cn.hutool.core.collection.CollUtil; import com.alibaba.fastjson.JSON; import com.google.common.base.Throwables; -import com.google.common.collect.Sets; import com.java3y.austin.common.domain.AnchorInfo; import com.java3y.austin.common.domain.RecallTaskInfo; import com.java3y.austin.common.domain.TaskInfo; @@ -45,16 +45,13 @@ public class MiniProgramAccountHandler extends BaseHandler implements Handler { try { MiniProgramContentModel contentModel = (MiniProgramContentModel) taskInfo.getContentModel(); WxMaService wxMaService = accountUtils.getAccountById(taskInfo.getSendAccount(), WxMaService.class); - List wxMaSubscribeMessages = assembleReq(taskInfo.getReceiver(), contentModel); - for (WxMaSubscribeMessage message : wxMaSubscribeMessages) { - try { - wxMaService.getSubscribeService().sendSubscribeMsg(message); - } catch (WxErrorException e) { - logUtils.print(AnchorInfo.builder().bizId(taskInfo.getBizId()).messageId(taskInfo.getMessageId()).businessId(taskInfo.getBusinessId()) - .ids(Sets.newHashSet(message.getToUser())).state(e.getError().getErrorCode()).build()); - } - } + + WxMaSubscribeMessage message = assembleReq(taskInfo.getReceiver(), contentModel); + wxMaService.getSubscribeService().sendSubscribeMsg(message); return true; + } catch (WxErrorException e) { + logUtils.print(AnchorInfo.builder().bizId(taskInfo.getBizId()).messageId(taskInfo.getMessageId()).businessId(taskInfo.getBusinessId()) + .ids(taskInfo.getReceiver()).state(e.getError().getErrorCode()).build()); } catch (Exception e) { log.error("MiniProgramAccountHandler#handler fail:{},params:{}", Throwables.getStackTraceAsString(e), JSON.toJSONString(taskInfo)); } @@ -65,18 +62,13 @@ public class MiniProgramAccountHandler extends BaseHandler implements Handler { /** * 组装发送模板信息参数 */ - private List assembleReq(Set receiver, MiniProgramContentModel contentModel) { - List messageList = new ArrayList<>(receiver.size()); - for (String openId : receiver) { - WxMaSubscribeMessage subscribeMessage = WxMaSubscribeMessage.builder() - .toUser(openId) - .data(getWxMaTemplateData(contentModel.getMiniProgramParam())) - .templateId(contentModel.getTemplateId()) - .page(contentModel.getPage()) - .build(); - messageList.add(subscribeMessage); - } - return messageList; + private WxMaSubscribeMessage assembleReq(Set receiver, MiniProgramContentModel contentModel) { + return WxMaSubscribeMessage.builder() + .toUser(CollUtil.getFirst(receiver.iterator())) + .data(getWxMaTemplateData(contentModel.getMiniProgramParam())) + .templateId(contentModel.getTemplateId()) + .page(contentModel.getPage()) + .build(); } /** diff --git a/austin-handler/src/main/java/com/java3y/austin/handler/handler/impl/OfficialAccountHandler.java b/austin-handler/src/main/java/com/java3y/austin/handler/handler/impl/OfficialAccountHandler.java index 799fa17..4629b48 100644 --- a/austin-handler/src/main/java/com/java3y/austin/handler/handler/impl/OfficialAccountHandler.java +++ b/austin-handler/src/main/java/com/java3y/austin/handler/handler/impl/OfficialAccountHandler.java @@ -1,8 +1,8 @@ package com.java3y.austin.handler.handler.impl; +import cn.hutool.core.collection.CollUtil; import com.alibaba.fastjson.JSON; import com.google.common.base.Throwables; -import com.google.common.collect.Sets; import com.java3y.austin.common.domain.AnchorInfo; import com.java3y.austin.common.domain.RecallTaskInfo; import com.java3y.austin.common.domain.TaskInfo; @@ -47,39 +47,31 @@ public class OfficialAccountHandler extends BaseHandler implements Handler { try { OfficialAccountsContentModel contentModel = (OfficialAccountsContentModel) taskInfo.getContentModel(); WxMpService wxMpService = accountUtils.getAccountById(taskInfo.getSendAccount(), WxMpService.class); - List messages = assembleReq(taskInfo.getReceiver(), contentModel); - for (WxMpTemplateMessage message : messages) { - try { - wxMpService.getTemplateMsgService().sendTemplateMsg(message); - } catch (WxErrorException e) { - logUtils.print(AnchorInfo.builder().bizId(taskInfo.getBizId()).messageId(taskInfo.getMessageId()).businessId(taskInfo.getBusinessId()) - .ids(Sets.newHashSet(message.getToUser())).state(e.getError().getErrorCode()).build()); - } - } + + WxMpTemplateMessage message = assembleReq(taskInfo.getReceiver(), contentModel); + wxMpService.getTemplateMsgService().sendTemplateMsg(message); + return true; + } catch (WxErrorException e) { + logUtils.print(AnchorInfo.builder().bizId(taskInfo.getBizId()).messageId(taskInfo.getMessageId()).businessId(taskInfo.getBusinessId()) + .ids(taskInfo.getReceiver()).state(e.getError().getErrorCode()).build()); } catch (Exception e) { log.error("OfficialAccountHandler#handler fail:{},params:{}", Throwables.getStackTraceAsString(e), JSON.toJSONString(taskInfo)); } return false; } - /** * 组装发送模板信息参数 */ - private List assembleReq(Set receiver, OfficialAccountsContentModel contentModel) { - List wxMpTemplateMessages = new ArrayList<>(receiver.size()); - for (String openId : receiver) { - WxMpTemplateMessage templateMessage = WxMpTemplateMessage.builder() - .toUser(openId) - .templateId(contentModel.getTemplateId()) - .url(contentModel.getUrl()) - .data(getWxMpTemplateData(contentModel.getOfficialAccountParam())) - .miniProgram(new WxMpTemplateMessage.MiniProgram(contentModel.getMiniProgramId(), contentModel.getPath(), false)) - .build(); - wxMpTemplateMessages.add(templateMessage); - } - return wxMpTemplateMessages; + private WxMpTemplateMessage assembleReq(Set receiver, OfficialAccountsContentModel contentModel) { + return WxMpTemplateMessage.builder() + .toUser(CollUtil.getFirst(receiver.iterator())) + .templateId(contentModel.getTemplateId()) + .url(contentModel.getUrl()) + .data(getWxMpTemplateData(contentModel.getOfficialAccountParam())) + .miniProgram(new WxMpTemplateMessage.MiniProgram(contentModel.getMiniProgramId(), contentModel.getPath(), false)) + .build(); } /** 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 a402c6d..fd7bc0d 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,15 +38,14 @@ import java.util.Set; @Slf4j public class PushHandler extends BaseHandler implements Handler { - public PushHandler() { - channelCode = ChannelType.PUSH.getCode(); - } - @Autowired private AccountUtils accountUtils; @Autowired private AccessTokenUtils accessTokenUtils; + public PushHandler() { + channelCode = ChannelType.PUSH.getCode(); + } @Override public boolean handler(TaskInfo taskInfo) { 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 c4afc85..5848271 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 @@ -39,29 +39,24 @@ import java.util.Random; @Slf4j public class SmsHandler extends BaseHandler implements Handler { - public SmsHandler() { - channelCode = ChannelType.SMS.getCode(); - } - + /** + * 流量自动分配策略 + */ + private static final Integer AUTO_FLOW_RULE = 0; + private static final String FLOW_KEY = "msgTypeSmsConfig"; + private static final String FLOW_KEY_PREFIX = "message_type_"; @Autowired private SmsRecordDao smsRecordDao; - @Autowired private ConfigService config; - @Autowired private ApplicationContext applicationContext; - @Autowired private AccountUtils accountUtils; - /** - * 流量自动分配策略 - */ - private static final Integer AUTO_FLOW_RULE = 0; - - private static final String FLOW_KEY = "msgTypeSmsConfig"; - private static final String FLOW_KEY_PREFIX = "message_type_"; + public SmsHandler() { + channelCode = ChannelType.SMS.getCode(); + } @Override public boolean handler(TaskInfo taskInfo) { diff --git a/austin-handler/src/main/java/com/java3y/austin/handler/pending/Task.java b/austin-handler/src/main/java/com/java3y/austin/handler/pending/Task.java index eb5f1af..ddf2c0f 100644 --- a/austin-handler/src/main/java/com/java3y/austin/handler/pending/Task.java +++ b/austin-handler/src/main/java/com/java3y/austin/handler/pending/Task.java @@ -2,7 +2,10 @@ package com.java3y.austin.handler.pending; import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.ObjectUtil; +import com.google.common.collect.Sets; import com.java3y.austin.common.domain.TaskInfo; +import com.java3y.austin.common.enums.ChannelType; import com.java3y.austin.handler.deduplication.DeduplicationRuleService; import com.java3y.austin.handler.discard.DiscardMessageService; import com.java3y.austin.handler.handler.HandlerHolder; @@ -63,6 +66,17 @@ public class Task implements Runnable { // 3. 真正发送消息 if (CollUtil.isNotEmpty(taskInfo.getReceiver())) { + + // 3.1 微信小程序&服务号只支持单人推送,为了后续逻辑统一处理,于是在这做了打散 + if (ChannelType.MINI_PROGRAM.getCode().equals(taskInfo.getSendChannel()) + || ChannelType.OFFICIAL_ACCOUNT.getCode().equals(taskInfo.getSendChannel())) { + for (String receiver : taskInfo.getReceiver()) { + TaskInfo taskClone = ObjectUtil.cloneByStream(this.taskInfo); + taskClone.setReceiver(Sets.newHashSet(receiver)); + handlerHolder.route(taskInfo.getSendChannel()).doHandler(taskClone); + } + return; + } handlerHolder.route(taskInfo.getSendChannel()).doHandler(taskInfo); } 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 32dbd08..a00f544 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 @@ -21,15 +21,13 @@ import java.util.concurrent.ExecutorService; */ @Component public class TaskPendingHolder { - @Autowired - private ThreadPoolUtils threadPoolUtils; - - private Map taskPendingHolder = new HashMap<>(32); - /** * 获取得到所有的groupId */ private static List groupIds = GroupIdMappingUtils.getAllGroupIds(); + @Autowired + private ThreadPoolUtils threadPoolUtils; + private Map taskPendingHolder = new HashMap<>(32); /** * 给每个渠道,每种消息类型初始化一个线程池 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 4ecdbd4..cc352a1 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 @@ -32,35 +32,22 @@ import java.util.Optional; @Slf4j public class ReceiverStart { - @Autowired - private ApplicationContext context; - @Autowired - private ConsumerFactory consumerFactory; - /** * receiver的消费方法常量 */ private static final String RECEIVER_METHOD_NAME = "Receiver.consumer"; - /** * 获取得到所有的groupId */ private static List groupIds = GroupIdMappingUtils.getAllGroupIds(); - /** * 下标(用于迭代groupIds位置) */ private static Integer index = 0; - - /** - * 为每个渠道不同的消息类型 创建一个Receiver对象 - */ - @PostConstruct - public void init() { - for (int i = 0; i < groupIds.size(); i++) { - context.getBean(Receiver.class); - } - } + @Autowired + private ApplicationContext context; + @Autowired + private ConsumerFactory consumerFactory; /** * 给每个Receiver对象的consumer方法 @KafkaListener赋值相应的groupId @@ -78,6 +65,16 @@ public class ReceiverStart { }; } + /** + * 为每个渠道不同的消息类型 创建一个Receiver对象 + */ + @PostConstruct + public void init() { + for (int i = 0; i < groupIds.size(); i++) { + context.getBean(Receiver.class); + } + } + /** * 针对tag消息过滤 * producer 将tag写进header里 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 b10c1cb..ea76290 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 @@ -34,15 +34,12 @@ import java.util.stream.Collectors; @Component("YunPianSmsScript") public class YunPianSmsScript implements SmsScript { + private static final String PARAMS_SPLIT_KEY = "{|}"; + private static final String PARAMS_KV_SPLIT_KEY = "{:}"; private static Logger log = LoggerFactory.getLogger(YunPianSmsScript.class); - @Autowired private AccountUtils accountUtils; - private static final String PARAMS_SPLIT_KEY = "{|}"; - - private static final String PARAMS_KV_SPLIT_KEY = "{:}"; - @Override public List send(SmsParam smsParam) { 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 761d7b7..aad478c 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 @@ -41,6 +41,42 @@ public class SendAssembleAction implements BusinessProcess { @Autowired private MessageTemplateDao messageTemplateDao; + /** + * 获取 contentModel,替换模板msgContent中占位符信息 + */ + private static ContentModel getContentModelValue(MessageTemplate messageTemplate, MessageParam messageParam) { + + // 得到真正的ContentModel 类型 + Integer sendChannel = messageTemplate.getSendChannel(); + Class contentModelClass = ChannelType.getChanelModelClassByCode(sendChannel); + + // 得到模板的 msgContent 和 入参 + Map variables = messageParam.getVariables(); + JSONObject jsonObject = JSON.parseObject(messageTemplate.getMsgContent()); + + + // 通过反射 组装出 contentModel + Field[] fields = ReflectUtil.getFields(contentModelClass); + ContentModel contentModel = ReflectUtil.newInstance(contentModelClass); + for (Field field : fields) { + String originValue = jsonObject.getString(field.getName()); + + if (StrUtil.isNotBlank(originValue)) { + String resultValue = ContentHolderUtil.replacePlaceHolder(originValue, variables); + Object resultObj = JSONUtil.isJsonObj(resultValue) ? JSONUtil.toBean(resultValue, field.getType()) : resultValue; + ReflectUtil.setFieldValue(contentModel, field, resultObj); + } + } + + // 如果 url 字段存在,则在url拼接对应的埋点参数 + String url = (String) ReflectUtil.getFieldValue(contentModel, LINK_NAME); + if (StrUtil.isNotBlank(url)) { + String resultUrl = TaskInfoUtils.generateUrl(url, messageTemplate.getId(), messageTemplate.getTemplateType()); + ReflectUtil.setFieldValue(contentModel, LINK_NAME, resultUrl); + } + return contentModel; + } + @Override public void process(ProcessContext context) { SendTaskModel sendTaskModel = context.getProcessModel(); @@ -97,41 +133,4 @@ public class SendAssembleAction implements BusinessProcess { return taskInfoList; } - - - /** - * 获取 contentModel,替换模板msgContent中占位符信息 - */ - private static ContentModel getContentModelValue(MessageTemplate messageTemplate, MessageParam messageParam) { - - // 得到真正的ContentModel 类型 - Integer sendChannel = messageTemplate.getSendChannel(); - Class contentModelClass = ChannelType.getChanelModelClassByCode(sendChannel); - - // 得到模板的 msgContent 和 入参 - Map variables = messageParam.getVariables(); - JSONObject jsonObject = JSON.parseObject(messageTemplate.getMsgContent()); - - - // 通过反射 组装出 contentModel - Field[] fields = ReflectUtil.getFields(contentModelClass); - ContentModel contentModel = ReflectUtil.newInstance(contentModelClass); - for (Field field : fields) { - String originValue = jsonObject.getString(field.getName()); - - if (StrUtil.isNotBlank(originValue)) { - String resultValue = ContentHolderUtil.replacePlaceHolder(originValue, variables); - Object resultObj = JSONUtil.isJsonObj(resultValue) ? JSONUtil.toBean(resultValue, field.getType()) : resultValue; - ReflectUtil.setFieldValue(contentModel, field, resultObj); - } - } - - // 如果 url 字段存在,则在url拼接对应的埋点参数 - String url = (String) ReflectUtil.getFieldValue(contentModel, LINK_NAME); - if (StrUtil.isNotBlank(url)) { - String resultUrl = TaskInfoUtils.generateUrl(url, messageTemplate.getId(), messageTemplate.getTemplateType()); - ReflectUtil.setFieldValue(contentModel, LINK_NAME, resultUrl); - } - return contentModel; - } } diff --git a/austin-support/src/main/java/com/java3y/austin/support/pending/PendingParam.java b/austin-support/src/main/java/com/java3y/austin/support/pending/PendingParam.java index c9f6905..62ac029 100644 --- a/austin-support/src/main/java/com/java3y/austin/support/pending/PendingParam.java +++ b/austin-support/src/main/java/com/java3y/austin/support/pending/PendingParam.java @@ -22,24 +22,21 @@ import java.util.concurrent.ExecutorService; @Accessors(chain = true) public class PendingParam { + /** + * 消费线程池实例【必填】 + */ + protected ExecutorService executorService; /** * 阻塞队列实现类【必填】 */ private BlockingQueue queue; - /** * batch 触发执行的数量阈值【必填】 */ private Integer numThreshold; - /** * batch 触发执行的时间阈值,单位毫秒【必填】 */ private Long timeThreshold; - /** - * 消费线程池实例【必填】 - */ - protected ExecutorService executorService; - } diff --git a/austin-support/src/main/java/com/java3y/austin/support/pipeline/ProcessContext.java b/austin-support/src/main/java/com/java3y/austin/support/pipeline/ProcessContext.java index 4bafd7d..8c43f2f 100644 --- a/austin-support/src/main/java/com/java3y/austin/support/pipeline/ProcessContext.java +++ b/austin-support/src/main/java/com/java3y/austin/support/pipeline/ProcessContext.java @@ -18,25 +18,21 @@ import lombok.experimental.Accessors; @Builder @Accessors(chain = true) public class ProcessContext { - /** * 标识责任链的code */ private String code; - /** * 存储责任链上下文数据的模型 */ private T processModel; - /** * 责任链中断的标识 */ private Boolean needBreak; - /** * 流程处理的结果 */ - BasicResultVO response; + private BasicResultVO response; } 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 2b11efc..70f9dbd 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 @@ -22,16 +22,14 @@ import java.util.Properties; @Slf4j @Component public class NacosUtils { + private final Properties properties = new Properties(); @NacosInjected private ConfigService configService; - @Value("${nacos.group}") private String nacosGroup; @Value("${nacos.data-id}") private String nacosDataId; - private final Properties properties = new Properties(); - public String getProperty(String key, String defaultValue) { try { String property = this.getContext(); diff --git a/austin-support/src/main/java/com/java3y/austin/support/utils/ThreadPoolUtils.java b/austin-support/src/main/java/com/java3y/austin/support/utils/ThreadPoolUtils.java index 65c258d..e06a111 100644 --- a/austin-support/src/main/java/com/java3y/austin/support/utils/ThreadPoolUtils.java +++ b/austin-support/src/main/java/com/java3y/austin/support/utils/ThreadPoolUtils.java @@ -14,12 +14,10 @@ import org.springframework.stereotype.Component; @Component public class ThreadPoolUtils { + private static final String SOURCE_NAME = "austin"; @Autowired private ThreadPoolExecutorShutdownDefinition shutdownDefinition; - private static final String SOURCE_NAME = "austin"; - - /** * 1. 将当前线程池 加入到 动态线程池内 * 2. 注册 线程池 被Spring管理,优雅关闭 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 9543372..9c8e44c 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 @@ -33,13 +33,12 @@ import java.util.List; @Component public class AustinAspect { - @Autowired - private HttpServletRequest request; - /** * 同一个请求的KEY */ private final String REQUEST_ID_KEY = "request_unique_id"; + @Autowired + private HttpServletRequest request; /** * 只切AustinAspect注解 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 0f981b7..5925795 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 @@ -21,6 +21,7 @@ import com.java3y.austin.support.domain.SmsRecord; import com.java3y.austin.support.utils.RedisUtils; import com.java3y.austin.support.utils.TaskInfoUtils; import com.java3y.austin.web.service.DataService; +import com.java3y.austin.web.utils.AnchorStateUtils; import com.java3y.austin.web.utils.Convert4Amis; import com.java3y.austin.web.vo.DataParam; import com.java3y.austin.web.vo.amis.EchartsVo; @@ -91,7 +92,7 @@ public class DataServiceImpl implements DataService { */ Map anchorResult = redisUtils.hGetAll(getRealBusinessId(businessId)); - return Convert4Amis.getEchartsVo(anchorResult, optional.get().getName(), businessId); + return Convert4Amis.getEchartsVo(anchorResult, optional.get(), businessId); } @Override @@ -151,7 +152,8 @@ public class DataServiceImpl implements DataService { sb.append(StrPool.CRLF); } String startTime = DateUtil.format(new Date(simpleAnchorInfo.getTimestamp()), DatePattern.NORM_DATETIME_PATTERN); - String stateDescription = EnumUtil.getDescriptionByCode(simpleAnchorInfo.getState(), AnchorState.class); + String stateDescription = AnchorStateUtils.getDescriptionByState(messageTemplate.getSendChannel(), simpleAnchorInfo.getState()); + sb.append(startTime).append(StrPool.C_COLON).append(stateDescription).append("==>"); } 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 bf07014..7aaada0 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 @@ -30,7 +30,6 @@ import me.chanjar.weixin.common.bean.result.WxMediaUploadResult; import me.chanjar.weixin.cp.api.impl.WxCpServiceImpl; import me.chanjar.weixin.cp.config.impl.WxCpDefaultConfigImpl; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.data.redis.core.StringRedisTemplate; import org.springframework.stereotype.Service; import org.springframework.web.multipart.MultipartFile; 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 new file mode 100644 index 0000000..250ff98 --- /dev/null +++ b/austin-web/src/main/java/com/java3y/austin/web/utils/AnchorStateUtils.java @@ -0,0 +1,41 @@ +package com.java3y.austin.web.utils; + +import cn.hutool.core.util.StrUtil; +import com.java3y.austin.common.enums.AnchorState; +import com.java3y.austin.common.enums.ChannelType; +import com.java3y.austin.common.enums.EnumUtil; +import me.chanjar.weixin.common.error.WxCpErrorMsgEnum; +import me.chanjar.weixin.common.error.WxMaErrorMsgEnum; +import me.chanjar.weixin.common.error.WxMpErrorMsgEnum; + + +/** + * @author 3y + * AnchorStateUtils + */ +public class AnchorStateUtils { + + /** + * 根据渠道和点位 获取点位的描述 + * + * @param channel 发送渠道 + * @param state 点位状态码 + * @return 点位描述 + */ + public static String getDescriptionByState(Integer channel, Integer state) { + String stateDescription = EnumUtil.getDescriptionByCode(state, AnchorState.class); + + // 如果 AnchorState 找不到对应的点位描述,那就是在对应渠道的点位信息 + if (StrUtil.isBlank(stateDescription)) { + if (ChannelType.MINI_PROGRAM.getCode().equals(channel)) { + stateDescription = WxMaErrorMsgEnum.findMsgByCode(state); + } else if (ChannelType.OFFICIAL_ACCOUNT.getCode().equals(channel)) { + stateDescription = WxMpErrorMsgEnum.findMsgByCode(state); + } else if (ChannelType.ENTERPRISE_WE_CHAT.getCode().equals(channel)) { + stateDescription = WxCpErrorMsgEnum.findMsgByCode(state); + } + } + return stateDescription; + + } +} 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 f5d8550..5baaf19 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 @@ -8,11 +8,11 @@ import cn.hutool.core.util.ReflectUtil; import cn.hutool.core.util.StrUtil; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; -import com.java3y.austin.common.enums.AnchorState; import com.java3y.austin.common.enums.ChannelType; import com.java3y.austin.common.enums.EnumUtil; import com.java3y.austin.common.enums.SmsStatus; import com.java3y.austin.support.domain.ChannelAccount; +import com.java3y.austin.support.domain.MessageTemplate; import com.java3y.austin.support.domain.SmsRecord; import com.java3y.austin.support.utils.TaskInfoUtils; import com.java3y.austin.web.vo.amis.CommonAmisVo; @@ -386,19 +386,19 @@ public class Convert4Amis { * @param businessId * @return */ - public static EchartsVo getEchartsVo(Map anchorResult, String templateName, String businessId) { + public static EchartsVo getEchartsVo(Map anchorResult, MessageTemplate messageTemplate, String businessId) { List xAxisList = new ArrayList<>(); List actualData = new ArrayList<>(); if (CollUtil.isNotEmpty(anchorResult)) { anchorResult = MapUtil.sort(anchorResult); for (Map.Entry entry : anchorResult.entrySet()) { - String description = EnumUtil.getDescriptionByCode(Integer.valueOf(String.valueOf(entry.getKey())), AnchorState.class); + String description = AnchorStateUtils.getDescriptionByState(messageTemplate.getSendChannel(), Integer.valueOf(String.valueOf(entry.getKey()))); xAxisList.add(description); actualData.add(Integer.valueOf(String.valueOf(entry.getValue()))); } } - String title = "【" + templateName + "】在" + DateUtil.format(DateUtil.parse(String.valueOf(TaskInfoUtils.getDateFromBusinessId(Long.valueOf(businessId)))), DatePattern.CHINESE_DATE_FORMATTER) + "的下发情况:"; + String title = "【" + messageTemplate.getName() + "】在" + DateUtil.format(DateUtil.parse(String.valueOf(TaskInfoUtils.getDateFromBusinessId(Long.valueOf(businessId)))), DatePattern.CHINESE_DATE_FORMATTER) + "的下发情况:"; return EchartsVo.builder() .title(EchartsVo.TitleVO.builder().text(title).build())