This commit is contained in:
zhangchenbiao
2023-05-31 15:36:25 +08:00
parent de94c572ef
commit 39cef07e6a
74 changed files with 4033 additions and 67 deletions

View File

@@ -0,0 +1,218 @@
package com.cool.store.constants;
/**
* redis key 类
* @author byd
* @date 2021-03-11 14:55
*/
public class RedisConstant {
public static final String TB_DISPLAY_HANDLE = "tb_display_handle_";
/**
* 新陈列审核
*/
public static final String TB_DISPLAY_APPROVE = "tb_display_approve_";
/**
* 新陈列复核
*/
public static final String TB_DISPLAY_RECHECK = "tb_display_recheck";
/**
* 新陈列三级审批
*/
public static final String TB_DISPLAY_THIRD_APPROVE = "tb_display_third_approve";
/**
* 新陈列四级审批
*/
public static final String TB_DISPLAY_FOUR_APPROVE = "tb_display_four_approve";
/**
* 新陈列五级审批
*/
public static final String TB_DISPLAY_FIVE_APPROVE = "tb_display_five_approve";
/**
* 区域/组织同步锁key 点击同步锁key
*/
public static final String REGION_SYNC_LOCK = "region_sync_lock_";
/**
* 问题工单key
*/
public static final String QUESTION_TASK_LOCK = "question_task_lock_";
/**
* 店务工单key
*/
public static final String STORE_WORK_QUESTION_TASK_LOCK = "store_work_question_task_lock_";
/**
* 企业同步key 有效拦截
*/
public static final String EID_SYNC_EFFECTIVE = "eid_sync_effective_";
/**
* 通知key做为拦截
*/
public static final String TASK_STAGE_NOTICE = "task_stage_notice_";
public static final String TASK_DEL_FLAG = "task_del_flag_";
/**
* 系统内区域key
*/
public static final String REGION_SYNC_ALL= "region_sync_all_";
/**
* 系统内区域key
*/
public static final String STORE_SYNC_ALL= "store_sync_all_";
/**
* 企业广告配置信息key前缀
*/
public static final String ADVERT_SETTING_PREFIX= "advert_setting_";
/**
* 企业广告配置信息value
*/
public static final String ADVERT_SETTING_VALUE= "1";
/**
* 企业广告配置信息value
*/
public static final String COOL_TOKEN_PREFIX= "cool_token_";
/**
* 用户企业token前缀
*/
public static final String ACCESS_TOKEN_PREFIX ="access_token:";
/**
* refresh token
*/
public static final String REFRESH_TOKEN_PREFIX ="refresh_token:";
/**
* 用户账号密码错误次数key
*/
public static final String ERROR_PASSWORD_COUNT_KEY = "errorPasswordCount_{0}_{1}";
/**
* 未完成转码
*/
public static final String VIDEO_NOT_COMPLETE_CACHE = "video_not_complete_cache";
/**
* 任务抓拍状态记录
*/
public static final String CAPTURE_PICTURE_STATUS_PREFIX ="capture_picture_status:";
/**
* 视频转码回调
*/
public static final String VIDEO_CALLBACK_CACHE = "video_callback_cache_";
/**
* 任务重新分配 防止重复提交
*/
public static final String TASK_STORE_REALLOCATE = "task_store_reallocate_";
/**
* 是否返回区域对应门店权限redis控制key
*/
public static final String SHOW_STORE_AUTH = "show_store_auth";
/**
* 是否返回区域对应门店权限redis控制key
*/
public static final String FIRST_LOGIN = "first_login_";
/**
* 区域全路径名称缓存
*/
public static final String REGION_ALL_NAME_CACHE = "region_all_name_cache_";
/**
* 获取菜单引导key
*/
public static final String GUIDE_INFO = "guide_info_";
/**
* 组织架构模块是否第一次登录
*/
public static final String OrgModuleFirstLogin = "OrgModuleFirstLogin:{0}:{1}";
/**
* 历史企业key
*/
public static final String HISTORY_ENTERPRISE = "historyEnterprise";
/**
* 留资企业key
*/
public static final String LEAVE_ENTERPRISE = "leaveEnterprise";
/**
* 留资开关
*/
public static final String LEAVE_OPEN = "leaveOpen";
/**
* 工单分享key
*/
public static final String QUESTION_SHARE_KEY = "question_share:{0}";
/**
* 企业配置信息
*/
public static final String ENTERPRISE_CONFIG_KEY = "enterpriseConfig:{0}";
public static final String ENTERPRISE_KEY = "enterpriseInfo:{0}";
public static final String ENTERPRISE_DB_SERVER = "enterpriseDBServer:{0}";
public static final String QUESTION_SETTING_CACHE_KEY = "questionSettingCacheKey:{0}";
public static final String ENTERPRISE_SETTING_CACHE_KEY = "enterpriseSettingCacheKey:{0}";
public static final String ENTERPRISE_STORE_SETTING_CACHE_KEY = "enterpriseStoreSettingCacheKey:{0}";
public static final String QUESTION_CACHE_KEY = "questionDataCache:{0}:{1}:{2}_{3}";
public static final String QUESTION_NOTICE_KEY = "questionNoticeCache:{0}:{1}:{2}:{3}_{4}_{5}_{6}";
public static final String STOREWORK_NOTICE_KEY = "storeWorkNoticeCache:{0}:{1}:{2}:{3}";
/**
* 七天
*/
public static final int SEVEN_DAY = 7 * 24 * 60 * 60;
/**
* 1天
*/
public static final int ONE_DAY_SECONDS = 24 * 60 * 60;
/**
* 3天
*/
public static final int THREE_DAY = 3 * 24 * 60 * 60 * 1000;
public static final String UPCOMING_BACKLOG_ID = "upcoming_backlog:{0}:{1}:{2}";
public static final String ENTERPRISE_OPEN_STATUS_KEY = "enterprise_open_status:{0}_{1}";
public static final String STOREWORK_BUILD_CACHE_KEY = "storeworkBuildDataCache:{0}:{1}:{2}";
public static final String STORE_WORK_COMMENT_CACHE_KEY = "storeWorkCommentCache:{0}:{1}:{2}";
public static final String DEVICE_OPEN_TOKEN = "device_open_token:{0}:{1}:{2}";
}

View File

@@ -1,18 +1,65 @@
package com.cool.store.enums;
import org.apache.commons.lang3.StringUtils;
import java.util.Arrays;
import java.util.Map;
import java.util.function.Function;
import java.util.stream.Collectors;
/**
* @author zhangchenbiao
* @FileName: AppTypeEnum
* @Description:
* @date 2023-05-23 9:41
* 应用类型
*/
public enum AppTypeEnum {
// 数智门店-钉钉
DING_DING("dingding","数智门店-钉钉"),
FEI_SHU("fei_shu", "飞书");
//酷店掌-钉钉
DING_DING2("dingding2","酷店掌-钉钉"),
// 企业微信-数智门店
WX_APP("qw","数智门店-企业微信"),
// 企业微信-酷店掌
WX_APP2("qw2","酷店掌-企业微信"),
//用户自己添加 独立app
APP("app","数智门店-客户端"),
/**
* 酷店掌-自建企业微信
*/
WX_SELF_APP("qw_self", "酷店掌-自建企业微信"),
/**
* 酷店掌-自建企业微信代开发
*/
WX_SELF_DKF("qw_self_dkf", "酷店掌--自建企业微信代开发"),
/**
* 酷店掌-企业微信私服
*/
WX_PRIVATE_APP("qw_private", "酷店掌-企业微信私服"),
WX_PRIVATE_ZHOU("qw_private_zdf","酷店掌-企业微信私服-周大福"),
/**
* 门店通应用
*/
ONE_PARTY_APP("one_party", "门店通-钉钉"),
/**
* 飞书
*/
FEI_SHU("fei_shu", "飞书")
;
private String value;
private String message;
private static final Map<String, AppTypeEnum> map = Arrays.stream(values()).collect(Collectors.toMap(AppTypeEnum::getValue, Function.identity()));
AppTypeEnum(String value, String message) {
this.value = value;
this.message = message;
@@ -25,4 +72,142 @@ public enum AppTypeEnum {
public String getMessage() {
return message;
}
public static String getMessage(String value){
if(StringUtils.isBlank(value)){
return "";
}
for (AppTypeEnum appTypeEnum : AppTypeEnum.values()) {
if(appTypeEnum.value.equals(value)){
return appTypeEnum.message;
}
}
return "";
}
public static AppTypeEnum getAppType(String appType){
for (AppTypeEnum appTypeEnum : AppTypeEnum.values()) {
if(appTypeEnum.value.equals(appType)){
return appTypeEnum;
}
}
if(appType.startsWith(WX_SELF_APP.getValue())) {
return WX_SELF_APP;
}
if(appType.startsWith(WX_PRIVATE_APP.getValue())) {
return WX_PRIVATE_APP;
}
return null;
}
/**
* 判断是否是钉钉平台
* @param value
* @author: xugangkun
* @return java.lang.Boolean
* @date: 2021/10/26 15:03
*/
public static Boolean isDingType(String value) {
if (DING_DING.getValue().equals(value) || DING_DING2.getValue().equals(value) || ONE_PARTY_APP.getValue().equals(value)) {
return true;
}
return false;
}
/**
* 判断是否是企业微信平台
* @param value
* @author: xugangkun
* @return java.lang.Boolean
* @date: 2021/10/26 15:03
*/
public static Boolean isQwType(String value) {
if (WX_APP.getValue().equals(value) || WX_APP2.getValue().equals(value)) {
return true;
}
return false;
}
/**
* 判断是否是飞书
* @param value
* @author: xugangkun
* @return java.lang.Boolean
* @date: 2021/10/26 15:03
*/
public static Boolean isFsType(String value) {
if (FEI_SHU.getValue().equals(value)) {
return true;
}
return false;
}
/**
* 判断是否是酷店掌
* @param value
* @author: xugangkun
* @return java.lang.Boolean
* @date: 2021/10/26 15:03
*/
public static Boolean isCoolStore(String value) {
if (WX_APP2.getValue().equals(value) || DING_DING2.getValue().equals(value)) {
return true;
}
return false;
}
/**
* 判断是否是数智门店
* @param value
* @author: xugangkun
* @return java.lang.Boolean
* @date: 2021/10/26 15:03
*/
public static Boolean isCoolCollege(String value) {
if (WX_APP.getValue().equals(value) || DING_DING.getValue().equals(value)) {
return true;
}
return false;
}
/**
* 是否是企微自建应用或者企微私服
* @param appType
* @return
*/
public static boolean isWxSelfAndPrivateType(String appType) {
if(StringUtils.isBlank(appType)){
return false;
}
return appType.startsWith(AppTypeEnum.WX_SELF_APP.getValue())
|| appType.startsWith(AppTypeEnum.WX_PRIVATE_APP.getValue());
}
public static boolean qwIsGetUserName(String appType){
if(StringUtils.isBlank(appType) || isDingType(appType)){
return false;
}
return appType.startsWith(AppTypeEnum.WX_SELF_APP.getValue()) || appType.startsWith(AppTypeEnum.WX_PRIVATE_APP.getValue())
|| appType.startsWith(AppTypeEnum.WX_SELF_DKF.getValue()) || appType.startsWith(AppTypeEnum.WX_PRIVATE_ZHOU.getValue());
}
public static String getCode(String value){
if(StringUtils.isBlank(value)){
return "";
}
for (AppTypeEnum appTypeEnum : AppTypeEnum.values()) {
if(appTypeEnum.message.equals(value)){
return appTypeEnum.value;
}
}
return "";
}
public static AppTypeEnum parseValue(String value) {
return map.get(value);
}
}

View File

@@ -0,0 +1,58 @@
package com.cool.store.enums;
import java.util.Arrays;
import java.util.Map;
import java.util.function.Function;
import java.util.stream.Collectors;
/**
* describe:
*
* @author zhouyiping
* @date 2020/10/13
*/
public enum AuthRoleEnum {
/**
* 全企业数据
*/
ALL("all", "全企业数据"),
/**
* 所在组织架构包含下级
*/
INCLUDE_SUBORDINATE("include_subordinate","所在组织架构包含下级"),
// /**
// * 所在的组织架构不包含下级
// */
NOT_INCLUDE_SUBORDINATE("not_include_subordinate","所在的组织架构不包含下级"),
/**
* 仅自己的数据
*/
PERSONAL("personal","仅自己的数据");
private String code;
private String msg;
protected static final Map<String, AuthRoleEnum> map = Arrays.stream(values()).collect(
Collectors.toMap(AuthRoleEnum::getCode, Function.identity()));
AuthRoleEnum(String code, String msg){
this.code=code;
this.msg=msg;
}
public String getCode() {
return code;
}
public String getMsg() {
return msg;
}
public static AuthRoleEnum getByCode(String code) {
return map.get(code);
}
}

View File

@@ -41,6 +41,8 @@ public enum ErrorCodeEnum {
SESSION_KEY_ERROR(1021022, "sessionKey过期", null),
GET_WECHAT_USER_INFO_FAIL(1021023,"获取小程序用户信息失败", null),
FEISHU_SERVICE_ERROR(1021024,"飞书服务调用异常", null),
USER_GROUP_NAME_EXIST(1021076, "用户分组名称已存在", null),
USER_GROUP_NOT_EXIST(1021077, "用户分组不存在", null),
;

View File

@@ -0,0 +1,286 @@
package com.cool.store.enums;
import com.cool.store.utils.CommonContextUtil;
import org.apache.commons.lang3.StringUtils;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
/**
* @author zhangchenbiao
* @FileName: RocketMqGroupEnum
* @Description:
* @date 2021-12-22 17:28
*/
public enum RocketMqGroupEnum {
/**
* 写在前面 读在前面
* 同一个group 监听的topic 和 tag必须一致 不然会出现消息丢失问题
* 即不能以下情况
* 实例1:
* 服务A中某个Listener的groupId为GroupA 监听topicA 过滤的消息tagA
* 服务B中某个Listener的groupId为GroupA 监听topicB 过滤的消息tagA
* 实例2:
* 服务A中某个Listener的groupId为GroupA 监听topicA 过滤的消息tagA
* 服务B中某个Listener的groupId为GroupA 监听topicA 过滤的消息tagB
*/
/**
* es数据处理
*/
ES_DATA_DEAL("es_data_deal", "coolcollege-intelligent", new ArrayList<>(Arrays.asList(RocketMqTagEnum.ES_PATROL_DATA_DEAL, RocketMqTagEnum.ES_DISPLAY_DATA_DEAL))),
/**
* es数据处理
*/
ES_DATA_SYNC("es_data_sync", "coolcollege-special",new ArrayList<>(Arrays.asList(RocketMqTagEnum.ES_DATA_SYNC))),
/**
* 导入导出
*/
EXPORT_IMPORT_MESSAGE("export_import_message","coolcollege-intelligent", new ArrayList<>(Arrays.asList(RocketMqTagEnum.EXPORT_IMPORT_MESSAGE))),
/**
* 区域门店数量计算队列
*/
CAL_REGION_STORE_NUM("cal_region_store_num", "coolcollege-intelligent", new ArrayList<>(Arrays.asList(RocketMqTagEnum.CAL_REGION_STORE_NUM,RocketMqTagEnum.REGION_STORE_NUM_UPDATE))),
/**
* 企业开通
*/
ENTERPRISE_OPEN("enterprise_open", "coolcollege-intelligent-config", new ArrayList<>(Arrays.asList(RocketMqTagEnum.ENTERPRISE_OPEN))),
/**
* 企业开通平台库脚本
*/
ENTERPRISE_OPEN_CONFIG_RUN_SCRIPT("enterprise_open_config_run_script", "coolcollege-intelligent-config", new ArrayList<>(Arrays.asList(RocketMqTagEnum.ENTERPRISE_OPEN_CONFIG_RUN_SCRIPT))),
/**
* 企业开通企业库脚本
*/
ENTERPRISE_OPEN_ENTERPRISE_RUN_SCRIPT("enterprise_open_enterprise_run_script", "coolcollege-intelligent", new ArrayList<>(Arrays.asList(RocketMqTagEnum.ENTERPRISE_OPEN_ENTERPRISE_RUN_SCRIPT))),
/**
* 企业开通数据同步
*/
ENTERPRISE_OPEN_DATA_SYNC("enterprise_open_data_sync", "coolcollege-intelligent", new ArrayList<>(Arrays.asList(RocketMqTagEnum.ENTERPRISE_OPEN_DATA_SYNC))),
/**
* 部门顺序值补全
*/
ENTERPRISE_INIT_DEPT_ORDER("enterprise_init_handler_dept_order","coolcollege-intelligent", new ArrayList<>(Arrays.asList(RocketMqTagEnum.ENTERPRISE_INIT_DEPT_ORDER))),
/**
* 父任务处理人
*/
TASK_PARENT_USER("task_parent_user", "coolcollege-intelligent", new ArrayList<>(Arrays.asList(RocketMqTagEnum.TASK_PARENT_USER_SAVE))),
/**
* 企业购买事件
*/
PAY_MARKET_BUY("pay_market_buy","coolcollege-intelligent", new ArrayList<>(Arrays.asList(RocketMqTagEnum.PAY_MARKET_BUY))),
/**
* 钉钉消息监听
*/
DING_MSG_DEAL("ding_msg_deal","coolcollege-intelligent", new ArrayList<>(Arrays.asList(RocketMqTagEnum.DING_STORE_ADDRESS_BOOK, RocketMqTagEnum.DING_SINGLE_USER_SYNC))),
/**
* 授权队列
*/
AUTH_QUEUE("auth_queue","coolcollege-intelligent", new ArrayList<>(Arrays.asList(RocketMqTagEnum.AUTH_QUEUE))),
/**
* 企微消息监听
*/
QW_MSG_DEAL("qw_msg_deal","coolcollege-intelligent", new ArrayList<>(Arrays.asList(RocketMqTagEnum.QW_CHANGE_ORDER_QUEUE,RocketMqTagEnum.QW_OPEN_ORDER_CHANGE_QUEUE))),
/**
* 钉钉同步
*/
DING_SYNC_ALL_DATA_QUEUE("ding_sync_all_data_queue","coolcollege-intelligent", new ArrayList<>(Arrays.asList(RocketMqTagEnum.DING_SYNC_ALL_DATA_QUEUE))),
/**
* 第三方同步
*/
DING_SYNC_ALL_DATA_OA_QUEUE("ding_sync_all_data_oa_queue","coolcollege-intelligent-special", new ArrayList<>(Arrays.asList(RocketMqTagEnum.DING_SYNC_ALL_DATA_OA_QUEUE))),
/**
* 第三方单个用户同步
*/
THIRD_OA_SYNC_SINGLE_QUEUE("third_oa_sync_single_queue","coolcollege-intelligent-special", new ArrayList<>(Arrays.asList(RocketMqTagEnum.THIRD_OA_SYNC_SINGLE_QUEUE))),
/**
* 萤石云设备托管
*/
YINGSHI_DEVICE_MANAGE("yingshi_device_manage","coolcollege-intelligent", new ArrayList<>(Arrays.asList(RocketMqTagEnum.YINGSHI_DEVICE_MANAGE))),
/**
* 阿里云开通门店事件
*/
MQ_OPEN_ENTERPRISE_ALIYUN("mq_open_enterprise_aliyun","coolcollege-intelligent", new ArrayList<>(Arrays.asList(RocketMqTagEnum.MQ_OPEN_ENTERPRISE_ALIYUN))),
/**
* 初始化设备
*/
INIT_DEVICE_QUEUE("init_device_queue","coolcollege-intelligent", new ArrayList<>(Arrays.asList(RocketMqTagEnum.INIT_DEVICE_QUEUE))),
/**
* 陈列抄送人处理
*/
DISPLAY_CC_USER_QUEUE("display_cc_user_queue","coolcollege-intelligent", new ArrayList<>(Arrays.asList(RocketMqTagEnum.DISPLAY_CC_USER_QUEUE))),
/**
* 门店子任务消息监听
*/
STORE_SUB_TASK_DATA_QUEUE("store_sub_task_data_queue","coolcollege-intelligent", new ArrayList<>(Arrays.asList(RocketMqTagEnum.STORE_SUB_TASK_DATA_QUEUE))),
/**
* 定时巡检抓拍
*/
PATROL_STORE_CAPTURE_PICTURE_QUEUE("patrol_store_capture_picture_queue","coolcollege-intelligent", new ArrayList<>(Arrays.asList(RocketMqTagEnum.PATROL_MANUAL_STORE_CAPTURE_PICTURE_QUEUE,RocketMqTagEnum.PATROL_STORE_CAPTURE_PICTURE_QUEUE))),
/**
* 巡店分数计算
*/
PATROL_STORE_SCORE_COUNT_QUEUE("patrol_store_score_count_queue","coolcollege-intelligent", new ArrayList<>(Arrays.asList(RocketMqTagEnum.PATROL_STORE_SCORE_COUNT_QUEUE))),
/**
* 陈列任务创建
*/
UNIFY_TASK_DISPLAY("unify_task_display","coolcollege-intelligent", new ArrayList<>(Arrays.asList(RocketMqTagEnum.UNIFY_TASK_DISPLAY))),
/**
* 巡店任务创建
*/
UNIFY_TASK_PATROL("unify_task_patrol","coolcollege-intelligent", new ArrayList<>(Arrays.asList(RocketMqTagEnum.UNIFY_TASK_PATROL))),
/**
* 工单任务创建
*/
UNIFY_TASK_QUESTION("unify_task_question","coolcollege-intelligent", new ArrayList<>(Arrays.asList(RocketMqTagEnum.UNIFY_TASK_QUESTION))),
/**
* 信息补全
*/
INFORMATION_COMPLETION("information_completion","coolcollege-intelligent", new ArrayList<>(Arrays.asList(RocketMqTagEnum.INFORMATION_COMPLETION))),
/**
* 微应用钉钉消息发送
*/
STORE_DING_QUEUE("store_ding_queue","coolcollege-intelligent-isv", new ArrayList<>(Arrays.asList(RocketMqTagEnum.STORE_DING_QUEUE))),
/**
* 待办任务名称
*/
STORE_BACK_LOG("store_back_log","coolcollege-intelligent-isv", new ArrayList<>(Arrays.asList(RocketMqTagEnum.STORE_BACK_LOG,RocketMqTagEnum.STORE_BACK_LOG_UPDATE))),
/**
* 待办消息结束队列
*/
UPCOMING_FINISH("upcoming_finish","coolcollege-intelligent-isv", new ArrayList<>(Arrays.asList(RocketMqTagEnum.UPCOMING_FINISH))),
/**
* 发送开通成功消息
*/
OPEN_SUCCEEDED_MSG_QUEUE("open_succeeded_msg_queue","coolcollege-intelligent-isv", new ArrayList<>(Arrays.asList(RocketMqTagEnum.OPEN_SUCCEEDED_MSG_QUEUE))),
/**
* 发送成员授权模式下模板消息
*/
QW_MEMBER_TEMPLE_MSG_QUEUE("qw_member_temple_msg_queue","coolcollege-intelligent-isv", new ArrayList<>(Arrays.asList(RocketMqTagEnum.QW_MEMBER_TEMPLE_MSG_QUEUE))),
/**
* app推送队列
*/
APP_PUSH_QUEUE("app_push_queue","coolcollege-intelligent-isv", new ArrayList<>(Arrays.asList(RocketMqTagEnum.APP_PUSH_QUEUE))),
/**
* 证照信息补全任务
*/
INFORMATION_COMPLETION_LICENSE("information_completion_license","hz-coolstore-license", new ArrayList<>(Arrays.asList(RocketMqTagEnum.INFORMATION_COMPLETION_LICENSE))),
/**
* 解除应用
*/
REMOVE_APPLICATION("remove_application","coolcollege-intelligent-config", new ArrayList<>(Arrays.asList(RocketMqTagEnum.REMOVE_APPLICATION))),
/**
* 获取开通酷学院开通完成后的结果
*/
GET_OPEN_COOL_COLLEGE_RESULT("get_open_cool_college_result","coolcollege-intelligent", new ArrayList<>(Arrays.asList(RocketMqTagEnum.GET_OPEN_COOL_COLLEGE_RESULT))),
/**
* 酷学院同步用户 首次使用人员异步延迟推送
*/
COLLEGE_SYNC_USER_DELAY("college_sync_user_delay","coolcollege-intelligent", new ArrayList<>(Arrays.asList(RocketMqTagEnum.COLLEGE_SYNC_USER_DELAY))),
/**
*门店端的部门,人员,职位,发生变化后的推送消息队列
*/
COOL_STORE_DATA_CHANGE("cool_store_data_change","coolcollege-intelligent", new ArrayList<>(Arrays.asList(RocketMqTagEnum.COOL_STORE_DATA_CHANGE))),
/**
* 全量企微用户同步
*/
QW_SYNC_FULL_USER("qw_sync_full_user_msg_queue", "coolcollege-intelligent", new ArrayList(Arrays.asList(RocketMqTagEnum.QW_SYNC_FULL_USER))),
/**
* 按人子任务消息监听
*/
PERSON_SUB_TASK_DATA_QUEUE("person_sub_task_data_queue","coolcollege-intelligent", new ArrayList<>(Arrays.asList(RocketMqTagEnum.PERSON_SUB_TASK_DATA_QUEUE))),
IMOU_DEVICE_CALLBACK("imou_device_callback","coolcollege-intelligent", new ArrayList<>(Arrays.asList(RocketMqTagEnum.IMOU_DEVICE_CALLBACK))),
/**
* 店务提交、点评消息监听
*/
STOREWORK_SUBMIT_COMMENT_DATA_QUEUE("storework_submit_comment_data_queue", "coolcollege-intelligent", new ArrayList<>(Arrays.asList(RocketMqTagEnum.STOREWORK_SUBMIT_DATA_QUEUE, RocketMqTagEnum.STOREWORK_COMMENT_DATA_QUEUE, RocketMqTagEnum.STOREWORK_DELETE_DATA_QUEUE))),
/**
* 流程引擎接收主应用消息
*/
STORE_SEND_TOPIC("store_send_topic","hz-oldworkflow", new ArrayList<>(Arrays.asList(RocketMqTagEnum.STORE_SEND_TOPIC))),
/**
* 主应用接收流程引擎消息
*/
WORKFLOW_SEND_TOPIC("workflow_send_topic","coolcollege-intelligent", new ArrayList<>(Arrays.asList(RocketMqTagEnum.WORKFLOW_SEND_TOPIC))),
/**
* 企业微信用户部门信息补全消息监听
*/
QYWX_USERDEPTINFO_COMPLETE_QUEUE("qywx_userdeptinfo_complete_queue","coolcollege-intelligent", new ArrayList<>(Arrays.asList(RocketMqTagEnum.QYWX_USERDEPTINFO_COMPLETE_QUEUE))),
SHOP_STORE_GROUP_SYNC("shop_store_group_sync","coolcollege-intelligent", new ArrayList<>(Arrays.asList(RocketMqTagEnum.SHOP_STORE_GROUP_SYNC))),
/**
* 授权码更新
*/
PERMANENT_CODE_UPDATE("permanent_code_update", "coolcollege-intelligent-config", new ArrayList<>(Arrays.asList(RocketMqTagEnum.PERMANENT_CODE_UPDATE))),
QUESTION_EXPIRE_REMIND("question_expire_remind", "coolcollege-intelligent", new ArrayList<>(Arrays.asList(RocketMqTagEnum.QUESTION_EXPIRE_BEFORE_REMIND, RocketMqTagEnum.QUESTION_EXPIRE_REMIND))),
STOREWORK_EXPIRE_REMIND("storework_expire_remind", "coolcollege-intelligent", new ArrayList<>(Arrays.asList(RocketMqTagEnum.STOREWORK_BEFORE_START_REMIND, RocketMqTagEnum.STOREWORK_BEFORE_END_REMIND))),
STOREWORK_TASK_RESOLVE("storework_task_resolve", "coolcollege-intelligent", new ArrayList<>(Arrays.asList(RocketMqTagEnum.STOREWORK_TASK_RESOLVE,RocketMqTagEnum.STOREWORK_TASK_SINGLE_STORE_RESOLVE))),
LICENSE_NOTICE_TIMER("license_notice_timer", "hz-coolstore-license", new ArrayList<>(Arrays.asList(RocketMqTagEnum.LICENSE_NOTICE_TIMER))),
LICENSE_NOTICE_DEAL("license_notice_deal", "coolcollege-intelligent", new ArrayList<>(Arrays.asList(RocketMqTagEnum.LICENSE_NOTICE_DEAL))),
/**
* 任务工作交接
*/
WORK_HANDOVER_TASK("work_handover_task", "coolcollege-intelligent", new ArrayList<>(Arrays.asList(RocketMqTagEnum.WORK_HANDOVER_TASK))),
SUPERVISION_RESOLVE_DELAY("supervision_resolve_delay","coolcollege",new ArrayList<>(Arrays.asList(RocketMqTagEnum.SUPERVISION_RESOLVE_DELAY))),
/**
* 定时任务回调
*/
SCHEDULER_CALLBACK("scheduler_callback","coolcollege", new ArrayList<>(Arrays.asList(RocketMqTagEnum.SCHEDULER_CALLBACK))),
/**
* 任务补发
*/
TASK_REISSUE("task_reissue","coolcollege", new ArrayList<>(Arrays.asList(RocketMqTagEnum.TASK_REISSUE))),
;
private final String group;
private final List<RocketMqTagEnum> tagList;
private final String listener;
RocketMqGroupEnum(String group,String listener,List<RocketMqTagEnum> tagList) {
this.group = group;
this.listener = listener;
this.tagList = tagList;
}
public String getDefaultGroup() {
return group;
}
public static String getGroupId(RocketMqGroupEnum groupEnum){
return groupEnum.group + "_" + CommonContextUtil.getProfileName();
}
public static String getTag(RocketMqGroupEnum groupEnum){
return StringUtils.join(groupEnum.tagList.stream().map(RocketMqTagEnum::getTag).collect(Collectors.toList()),"||");
}
}

View File

@@ -0,0 +1,126 @@
package com.cool.store.enums;
import com.cool.store.utils.CommonContextUtil;
/**
* @author zhangchenbiao
* @FileName: RocketMqTagEnum
* @Description:
* @date 2021-12-23 16:14
*/
public enum RocketMqTagEnum {
DEFAULT("default","默认"),
ES_PATROL_DATA_DEAL("es_patrol_data_deal","巡店数据加工"),
ES_DISPLAY_DATA_DEAL("es_display_data_deal","陈列数据加工"),
ES_DATA_SYNC("es_data_sync","数据插入到ES_队列"),
EXPORT_IMPORT_MESSAGE("export_import_message","导入导出消息"),
CAL_REGION_STORE_NUM("cal_region_store_num","计算门店区域数量"),
REGION_STORE_NUM_UPDATE("region_store_num_update","计算门店区域数量"),
ENTERPRISE_OPEN("enterprise_open","企业开通"),
ENTERPRISE_OPEN_CONFIG_RUN_SCRIPT("enterprise_open_config_run_script","企业开通平台库脚本执行"),
ENTERPRISE_OPEN_ENTERPRISE_RUN_SCRIPT("enterprise_open_enterprise_run_script","企业开通企业库脚本执行"),
ENTERPRISE_OPEN_DATA_SYNC("enterprise_open_data_sync","企业开通数据同步"),
AUTH_QUEUE("auth_queue","授权队列"),
DING_STORE_ADDRESS_BOOK("ding_store_address_book","钉钉通讯录变更事件"),
PAY_MARKET_BUY("pay_market_buy","企业购买队列"),
QW_OPEN_ORDER_CHANGE_QUEUE("qw_openorder_change_queue","企业微信付费监听"),
QW_CHANGE_ORDER_QUEUE("qw_change_order_queue","企业微信改单事件,因涉及到两个订单,和普通的订单事件分开"),
DING_SYNC_ALL_DATA_QUEUE("ding_sync_all_data_queue","钉钉全量同步"),
DING_SYNC_ALL_DATA_QUEUE_BAILI("ding_sync_all_data_queue_baili","百丽全量同步"),
DING_SYNC_ALL_DATA_OA_QUEUE("ding_sync_all_data_oa_queue","第三方同步"),
THIRD_OA_SYNC_SINGLE_QUEUE("third_oa_sync_single_queue","第三方单个用户同步"),
MQ_OPEN_ENTERPRISE_ALIYUN("mq_open_enterprise_aliyun","阿里云开通门店事件"),
YINGSHI_DEVICE_MANAGE("yingshi_device_manage","萤石云设备托管"),
INIT_DEVICE_QUEUE("init_device_queue","初始化设备"),
DISPLAY_CC_USER_QUEUE("display_cc_user_queue","陈列抄送人处理"),
STORE_SUB_TASK_DATA_QUEUE("store_sub_task_data_queue","门店子任务消息监听"),
PATROL_MANUAL_STORE_CAPTURE_PICTURE_QUEUE("patrol_manual_store_capture_picture_queue","定时巡检抓拍"),
PATROL_STORE_CAPTURE_PICTURE_QUEUE("patrol_store_capture_picture_queue","定时巡检抓拍"),
PATROL_STORE_SCORE_COUNT_QUEUE("patrol_store_score_count_queue","巡店分数计算"),
UNIFY_TASK_DISPLAY("unify_task_display","陈列任务创建"),
UNIFY_TASK_PATROL("unify_task_patrol","巡店任务创建"),
UNIFY_TASK_QUESTION("unify_task_question","工单任务创建"),
INFORMATION_COMPLETION("information_completion","信息补全任务"),
INFORMATION_COMPLETION_LICENSE("information_completion_license","证照信息补全任务"),
ENTERPRISE_INIT_DEPT_ORDER("enterprise_init_handler_dept_order","补全部门的顺序值"),
TASK_PARENT_USER_SAVE("task_parent_user_save", "新增或覆盖父任务处理人映射"),
STORE_DING_QUEUE("store_ding_queue", "微应用钉钉消息发送"),
STORE_BACK_LOG("store_back_log", "待办任务名称"),
STORE_BACK_LOG_UPDATE("store_back_log_update", "更新待办任务名称"),
UPCOMING_FINISH("upcoming_finish", "待办消息结束队列"),
OPEN_SUCCEEDED_MSG_QUEUE("open_succeeded_msg_queue", "发送开通成功消息"),
QW_MEMBER_TEMPLE_MSG_QUEUE("qw_member_temple_msg_queue", "发送成员授权模式下模板消息"),
APP_PUSH_QUEUE("app_push_queue", "app推送队列"),
REMOVE_APPLICATION("remove_application", "解除应用"),
GET_OPEN_COOL_COLLEGE_RESULT("get_open_cool_college_result", "获取开通酷学院开通完成后的结果"),
COLLEGE_SYNC_USER_DELAY("college_sync_user_delay", "同步人与延迟推送"),
COOL_STORE_DATA_CHANGE("cool_store_data_change", "门店端的部门,人员,职位,发生变化后的推送消息队列"),
QW_SYNC_FULL_USER("qw_sync_full_user_msg_queue", "企微全量用户同步"),
PERSON_SUB_TASK_DATA_QUEUE("person_sub_task_data_queue","按人子任务消息监听"),
IMOU_DEVICE_CALLBACK("imou_device_callback","乐橙设备回调事件"),
PERMANENT_CODE_UPDATE("permanent_code_update", "授权码变更"),
SHOP_STORE_GROUP_SYNC("shop_store_group_sync","门店通门店分组同步"),
DING_SINGLE_USER_SYNC("ding_single_user_sync","钉钉用户信息拉取"),
STORE_SEND_TOPIC("store_send_topic","流程引擎接收主应用消息"),
WORKFLOW_SEND_TOPIC("workflow_send_topic","主应用接收流程引擎消息"),
QYWX_USERDEPTINFO_COMPLETE_QUEUE("qywx_userdeptinfo_complete_queue","企业微信用户部门信息补全消息监听"),
QUESTION_EXPIRE_BEFORE_REMIND("question_expire_before_remind","工单逾期前提醒"),
QUESTION_EXPIRE_REMIND("question_expire_remind","工单逾期提醒"),
STOREWORK_SUBMIT_DATA_QUEUE("storework_submit_data_queue","店务提交消息监听"),
STOREWORK_COMMENT_DATA_QUEUE("storework_comment_data_queue","店务点评消息监听"),
STOREWORK_DELETE_DATA_QUEUE("storework_delete_data_queue","店务删除消息监听"),
STOREWORK_BEFORE_START_REMIND("storework_before_start_remind","店务开始前提醒"),
STOREWORK_BEFORE_END_REMIND("storework_before_end_remind","店务结束前提醒"),
STOREWORK_TASK_RESOLVE("storework_task_resolve","店务分解"),
STOREWORK_TASK_SINGLE_STORE_RESOLVE("storework_task_single_store_resolve","单店店务数据分解"),
LICENSE_NOTICE_TIMER("license_notice_timer","证照定时任务提醒"),
LICENSE_NOTICE_DEAL("license_notice_deal","证照提醒处理"),
WORK_HANDOVER_TASK("work_handover_task","工作任务交接"),
SUPERVISION_RESOLVE_DELAY("supervision_resolve_delay", "督导任务延迟分解"),
SCHEDULER_CALLBACK("scheduler_callback","定时任务回调"),
TASK_REISSUE("task_reissue","任务补发"),
;
private final String tag;
private final String remark;
RocketMqTagEnum(String tag, String remark) {
this.tag = tag;
this.remark = remark;
}
public String getDefaultTag() {
return tag;
}
public String getTag() {
return tag + "_" + CommonContextUtil.getProfileName();
}
public String getRemark() {
return remark;
}
public static RocketMqTagEnum getByTag(String tag){
for (RocketMqTagEnum value : values()) {
if(value.getTag().equals(tag)){
return value;
}
}
return ES_PATROL_DATA_DEAL;
}
}

View File

@@ -0,0 +1,42 @@
package com.cool.store.enums;
import java.util.Arrays;
import java.util.Map;
import java.util.function.Function;
import java.util.stream.Collectors;
/**
* @author wxp
* @FileName: SubordinateSourceEnum
* @Description: auto自动关联 select手动选择
* @date 2022-12-30 17:12
*/
public enum SubordinateSourceEnum {
AUTO("auto", "关联区域门店权限"),
SELECT("select", "手动选择");
private String code;
private String msg;
protected static final Map<String, SubordinateSourceEnum> map = Arrays.stream(values()).collect(
Collectors.toMap(SubordinateSourceEnum::getCode, Function.identity()));
SubordinateSourceEnum(String code, String msg) {
this.code = code;
this.msg = msg;
}
public String getCode() {
return code;
}
public String getMsg() {
return msg;
}
public static SubordinateSourceEnum getByCode(String code) {
return map.get(code);
}
}

View File

@@ -0,0 +1,44 @@
package com.cool.store.enums;
import java.util.Arrays;
import java.util.Map;
import java.util.function.Function;
import java.util.stream.Collectors;
/**
* @author zyp
*/
public enum UserAuthMappingTypeEnum {
/**
* 区域
*/
REGION("region","区域"),
/**
* 门店
*/
STORE("store","门店");
private String code;
private String desc;
public static final Map<String, UserAuthMappingTypeEnum> map = Arrays.stream(values()).collect(
Collectors.toMap(UserAuthMappingTypeEnum::getCode, Function.identity()));
UserAuthMappingTypeEnum(String code, String desc) {
this.code = code;
this.desc = desc;
}
public String getCode() {
return code;
}
public String getDesc() {
return desc;
}
public static UserAuthMappingTypeEnum getByCode(String code) {
return map.get(code);
}
}

View File

@@ -0,0 +1,43 @@
package com.cool.store.enums;
import java.util.Arrays;
import java.util.Map;
import java.util.function.Function;
import java.util.stream.Collectors;
/**
* @author wxp
* @FileName: UserSelectRangeEnum
* @Description: 用户选取范围 共同编辑人范围self-仅自己all-全部人员define-自定义
* @date 2022-12-30 17:12
*/
public enum UserSelectRangeEnum {
SELF("self", "仅自己"),
ALL("all", "全部人员"),
DEFINE("define", "自定义");
private String code;
private String msg;
protected static final Map<String, UserSelectRangeEnum> map = Arrays.stream(values()).collect(
Collectors.toMap(UserSelectRangeEnum::getCode, Function.identity()));
UserSelectRangeEnum(String code, String msg) {
this.code = code;
this.msg = msg;
}
public String getCode() {
return code;
}
public String getMsg() {
return msg;
}
public static UserSelectRangeEnum getByCode(String code) {
return map.get(code);
}
}

View File

@@ -0,0 +1,109 @@
package com.cool.store.utils;
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.NoSuchBeanDefinitionException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
public class CommonContextUtil implements ApplicationContextAware {
private static ApplicationContext applicationContext; //Spring应用上下文环境
/**
* 实现ApplicationContextAware接口的回调方法设置上下文环境
*
* @param applicationContext
* @throws BeansException
*/
@Override
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
CommonContextUtil.applicationContext = applicationContext;
}
/**
* @return ApplicationContext
*/
public static ApplicationContext getApplicationContext() {
return applicationContext;
}
/**
* 获取对象
*
* @param name
* @return Object 一个以所给名字注册的bean的实例
* @throws BeansException
*/
public static Object getBean(String name) throws BeansException {
return applicationContext.getBean(name);
}
/**
* 根据某种类型获取对象
* @param requiredType
* @return
* @throws BeansException
*/
public static <T> T getBean(Class<T> requiredType) throws BeansException {
return applicationContext.getBean(requiredType);
}
/**
* 获取类型为requiredType的对象
* 如果bean不能被类型转换相应的异常将会被抛出BeanNotOfRequiredTypeException
*
* @param name bean注册名
* @param requiredType 返回对象类型
* @return Object 返回requiredType类型对象
* @throws BeansException
*/
public static <T> T getBean(String name, Class<T> requiredType) throws BeansException {
return applicationContext.getBean(name, requiredType);
}
/**
* 如果BeanFactory包含一个与所给名称匹配的bean定义则返回true
*
* @param name
* @return boolean
*/
public static boolean containsBean(String name) {
return applicationContext.containsBean(name);
}
/**
* 判断以给定名字注册的bean定义是一个singleton还是一个prototype。
* 如果与给定名字相应的bean定义没有被找到将会抛出一个异常NoSuchBeanDefinitionException
*
* @param name
* @return boolean
* @throws NoSuchBeanDefinitionException
*/
public static boolean isSingleton(String name) throws NoSuchBeanDefinitionException {
return applicationContext.isSingleton(name);
}
/**
* @param name
* @return Class 注册对象的类型
* @throws NoSuchBeanDefinitionException
*/
public static Class getType(String name) throws NoSuchBeanDefinitionException {
return applicationContext.getType(name);
}
/**
* 如果给定的bean名字在bean定义中有别名则返回这些别名
*
* @param name
* @return
* @throws NoSuchBeanDefinitionException
*/
public static String[] getAliases(String name) throws NoSuchBeanDefinitionException {
return applicationContext.getAliases(name);
}
public static String getProfileName(){
return applicationContext.getEnvironment().getActiveProfiles()[0];
}
}

View File

@@ -0,0 +1,97 @@
package com.cool.store.utils;
import org.apache.commons.collections4.CollectionUtils;
import java.util.Collections;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
/**
* describe:
*
* @author zhouyiping
* @date 2020/09/21
*/
public class CommonNodeUtils {
/**
* 树型数据的所有子项(list结构包含本身)(节点为Long)
* @param rootId
* @param id
* @param all 树的所有节点
* @param parentGroupMap Map<parentId,List<id>>
* @return
*/
public static List<Long> getAllChildListContainSelf(Long rootId,Long id, List<Long> all,Map<Long,List<Long>> parentGroupMap) {
List<Long> childList = new LinkedList<>();
if(CollectionUtils.isEmpty(all)){
return Collections.emptyList();
}
if(id.equals(rootId)&&!all.contains(id)){
return Collections.emptyList();
}
List<Long> idList = parentGroupMap.get(id);
childList.add(id);
if(CollectionUtils.isEmpty(idList)){
return childList;
}
childList.addAll(idList);
for (Long item:idList){
getChildList(item,parentGroupMap,childList);
}
return childList;
}
private static void getChildList(Long id,Map<Long,List<Long>> parentGroupMap, List<Long> childList) {
List<Long> child = parentGroupMap.get(id);
if (CollectionUtils.isNotEmpty(child)) {
childList.addAll(child);
for (Long cid : child) {
getChildList(cid, parentGroupMap, childList);
}
}
}
/**
* 树型数据的所有子项(list结构包含本身)(节点为String)
* @param rootId
* @param id
* @param all 树的所有节点
* @param parentGroupMap Map<parentId,List<id>>
* @return
*/
public static List<String> getAllChildListContainSelf(String rootId,String id, List<String> all,Map<String,List<String>> parentGroupMap) {
List<String> childList = new LinkedList<>();
if(CollectionUtils.isEmpty(all)){
return Collections.emptyList();
}
if(id.equals(rootId)&&!all.contains(id)){
return Collections.emptyList();
}
List<String> idList = parentGroupMap.get(id);
childList.add(id);
if(CollectionUtils.isEmpty(idList)){
return childList;
}
childList.addAll(idList);
for (String item:idList){
getChildList(item,parentGroupMap,childList);
}
return childList;
}
private static void getChildList(String id,Map<String,List<String>> parentGroupMap, List<String> childList) {
List<String> child = parentGroupMap.get(id);
if (CollectionUtils.isNotEmpty(child)) {
childList.addAll(child);
for (String cid : child) {
getChildList(cid, parentGroupMap, childList);
}
}
}
}

View File

@@ -0,0 +1,93 @@
package com.cool.store.utils;
import com.cool.store.constants.RedisConstant;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
/**
* redis常量工具类
*
* @author byd
*/
@Component
@Slf4j
public class RedisConstantUtil {
@Value("${spring.profiles.active}")
private String active;
/**
* 获取钉钉同步区域key
*
* @param eid
* @return
*/
public String getSyncRegionKey(String eid) {
return active + "_" + RedisConstant.REGION_SYNC_ALL + eid;
}
/**
* 获取门店同步key
*
* @param eid
* @return
*/
public String getSyncStoreKey(String eid) {
return active + "_" + RedisConstant.STORE_SYNC_ALL + eid;
}
public String getSyncLockKey(String eid) {
return active + "_" + RedisConstant.REGION_SYNC_LOCK + eid;
}
public String getSyncEidEffectiveKey(String eid) {
return active + "_" + RedisConstant.EID_SYNC_EFFECTIVE + eid;
}
public String getTaskStageNoticeKey(String key) {
return active + "_" + RedisConstant.TASK_STAGE_NOTICE + key;
}
public String getTaskDelFlagKey(String key) {
return active + "_" + RedisConstant.TASK_DEL_FLAG + key;
}
public String getCapturePicture(String key) {
return active + "_" + RedisConstant.CAPTURE_PICTURE_STATUS_PREFIX + key;
}
public String getQuestionTaskLockKey(String eid, String key) {
return active + "_" + RedisConstant.QUESTION_TASK_LOCK + "_" + eid + "_" + key;
}
public String getStoreWorkQuestionTaskLockKey(String eid, String key) {
return active + "_" + RedisConstant.STORE_WORK_QUESTION_TASK_LOCK + "_" + eid + "_" + key;
}
public String getShowStoreAuthKey() {
return active + "_" + RedisConstant.SHOW_STORE_AUTH;
}
public String getRegionNameKey(String eid, String regionId) {
return active + "_" + RedisConstant.REGION_ALL_NAME_CACHE + eid + ":" + regionId;
}
public String getGuideInfoKey(String eid, Long menuId) {
return active + "_" + RedisConstant.GUIDE_INFO + eid + ":" + menuId;
}
public String getRegionNameListKey(String eid, String regionId) {
return active + "_" + RedisConstant.REGION_ALL_NAME_CACHE + eid + ":" + regionId;
}
}