map = Maps.newHashMap();
- map.put("robotIds", arrayList);
- String result = HttpUtil.post
- (weChatProperties.getGatewayHost().concat(WeChatRequestConstants.ROBOT_LOGOUT)
- .concat(weChatProperties.getAppKey()), map);
- log.info("========== the response as {} ==========", result);
- }
- }
-
- }
-}
diff --git a/admin/src/main/java/com/baiye/schedule/handler/AddFriendJob.java b/admin/src/main/java/com/baiye/schedule/handler/AddFriendJob.java
new file mode 100644
index 0000000..7cfd55c
--- /dev/null
+++ b/admin/src/main/java/com/baiye/schedule/handler/AddFriendJob.java
@@ -0,0 +1,80 @@
+package com.baiye.schedule.handler;
+
+import cn.hutool.core.date.DatePattern;
+import cn.hutool.core.date.DateUtil;
+import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.http.HttpUtil;
+import cn.hutool.json.JSONUtil;
+import com.baiye.constant.DefaultNumberConstants;
+import com.baiye.modules.scrm.dto.WeChatAddFriendDTO;
+import com.baiye.modules.scrm.entity.AddFriend;
+import com.baiye.modules.scrm.entity.AddFriendTask;
+import com.baiye.modules.scrm.service.AddFriendService;
+import com.baiye.modules.scrm.service.AddFriendTaskService;
+import com.baiye.security.userdetails.User;
+import com.dangdang.ddframe.job.api.ShardingContext;
+import com.dangdang.ddframe.job.api.simple.SimpleJob;
+import lombok.NoArgsConstructor;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.Resource;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * @author Enzo
+ * @date : 2024/6/2
+ */
+@Slf4j
+@Component
+public class AddFriendJob implements SimpleJob {
+ @Resource
+ private AddFriendTaskService addFriendTaskService;
+
+ @Resource
+ private AddFriendService addFriendService;
+
+ /**
+ * 添加业务逻辑
+ *
+ * @param shardingContext
+ */
+ @Override
+ public void execute(ShardingContext shardingContext) {
+ Date now = new Date();
+ log.info("{}定时添加好友start...", DateUtil.format(now, DatePattern.NORM_DATETIME_MS_PATTERN));
+ String jobName = shardingContext.getJobName();
+ String taskId = shardingContext.getJobParameter();
+ AddFriendTask byTaskId = addFriendTaskService.findByTaskId(Long.parseLong(taskId));
+ if (ObjectUtil.isNotNull(byTaskId) && ObjectUtil.isNotNull(byTaskId.getId())) {
+ // 判断是否过期
+ if (byTaskId.getStartTime().after(now) || byTaskId.getEndTime().before(now)) {
+ byTaskId.setTaskStatus(DefaultNumberConstants.MINUS_ONE_NUMBER);
+ addFriendTaskService.updateById(byTaskId);
+ return;
+ }
+ // 查询资源
+ /*List addFriendList = addFriendService.queryAddSourceByTaskIdAndStatus(taskId, byTaskId.getAddFriendNum(), DefaultNumberConstants.ONE_NUMBER);
+ for (AddFriend addFriend : addFriendList) {
+
+ // 添加好友
+ WeChatAddFriendDTO addFriendDTO = WeChatAddFriendDTO.builder().wechat
+ (addFriend.getTrumpetWechat()).targetWxId(addFriend.getTargetWechat()).helloContent
+ (addFriend.getGreet()).type(addFriend.getTargetWechat().length() == DefaultNumberConstants.ELEVEN_NUMBER ?
+ DefaultNumberConstants.ZERO_NUMBER : DefaultNumberConstants.ONE_NUMBER).build();
+
+ HttpUtil.post("", JSONUtil.toJsonStr(addFriendDTO));
+ if (Boolean.TRUE){
+ addFriend.setAddStatus(DefaultNumberConstants.ONE_NUMBER);
+ addFriendService.updateById(addFriend);
+ }
+ }
+ }*/
+
+ log.info("{}定时添加好友end...", DateUtil.format(new Date(), DatePattern.NORM_DATETIME_MS_PATTERN));
+
+ }
+ }
+}
diff --git a/admin/src/main/java/com/baiye/schedule/handler/ScanDynamicJobHandler.java b/admin/src/main/java/com/baiye/schedule/handler/ScanDynamicJobHandler.java
index 8327381..25aa131 100644
--- a/admin/src/main/java/com/baiye/schedule/handler/ScanDynamicJobHandler.java
+++ b/admin/src/main/java/com/baiye/schedule/handler/ScanDynamicJobHandler.java
@@ -1,13 +1,21 @@
package com.baiye.schedule.handler;
+import cn.hutool.core.text.CharSequenceUtil;
+import cn.hutool.core.util.StrUtil;
import com.baiye.common.job.handler.ElasticJobHandler;
+import com.baiye.constant.DefaultNumberConstants;
+import com.baiye.modules.scrm.entity.AddFriendTask;
+import com.baiye.modules.scrm.service.AddFriendService;
+import com.baiye.modules.scrm.service.AddFriendTaskService;
import com.baiye.schedule.entity.JobDynamicTask;
import com.baiye.schedule.service.ElasticJobService;
+import com.baiye.util.CronUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.List;
+import java.util.stream.Collectors;
/**
* @author Enzo
@@ -21,6 +29,9 @@ public class ScanDynamicJobHandler {
@Resource
private ElasticJobService elasticJobService;
+ @Resource
+ private AddFriendTaskService addFriendTaskService;
+
/**
* 扫描动态任务列表,并添加任务
*
@@ -30,12 +41,18 @@ public class ScanDynamicJobHandler {
* @date 2021/4/26 9:15 下午
*/
public void scanAddJob() {
- // 这里为从MySQL数据库读取job_dynamic_task表的数据,微服务项目中建议使用feign从业务服务获取,避免本服务过度依赖业务的问题,然后业务服务新增动态任务也通过feign调取本服务JobOperateController实现,从而相对独立本服务模块
- List jobDynamicTaskList = this.elasticJobService.getAllList();
- log.info("扫描动态任务列表,并添加任务:本次共扫描到{}条任务。", jobDynamicTaskList.size());
- for (JobDynamicTask jobDynamicTask : jobDynamicTaskList) {
+ // 这里为从MySQL数据库读取job_dynamic_task表的数据,
+ // 微服务项目中建议使用feign从业务服务获取,避免本服务过度依赖业务的问题,然后业务服务新增动态任务也通过feign调取本服务JobOperateController实现,从而相对独立本服务模块
+ List addFriendTaskList = addFriendTaskService.queryTaskAndStatus(DefaultNumberConstants.ONE_NUMBER);
+ log.info("扫描动态任务列表,并添加任务:本次共扫描到{}条任务。", addFriendTaskList.size());
+ for (AddFriendTask addFriendTask : addFriendTaskList) {
+
+ String generatedCronByTime = CronUtil.generateCronByTime
+ (addFriendTask.getDayStartTime(), addFriendTask.getDayEndTime(),
+ addFriendTask.getAddIntervalStart(), addFriendTask.getAddIntervalEnd());
+
// 创建任务
- elasticJobHandler.addJob(jobDynamicTask.getJobName(), jobDynamicTask.getCron(), 1, new DynamicJob(), jobDynamicTask.getParameters(), jobDynamicTask.getDescription());
+ elasticJobHandler.addJob(addFriendTask.getTaskName(), generatedCronByTime, DefaultNumberConstants.ONE_NUMBER, new AddFriendJob(),String.valueOf(addFriendTask.getId()), CharSequenceUtil.EMPTY);
}
}
}
diff --git a/admin/src/main/java/com/baiye/schedule/mapper/JobDynamicTaskMapper.java b/admin/src/main/java/com/baiye/schedule/mapper/JobDynamicTaskMapper.java
index dadcb03..a2ac709 100644
--- a/admin/src/main/java/com/baiye/schedule/mapper/JobDynamicTaskMapper.java
+++ b/admin/src/main/java/com/baiye/schedule/mapper/JobDynamicTaskMapper.java
@@ -9,6 +9,6 @@ import org.apache.ibatis.annotations.Mapper;
* @date : 2024/5/28
*/
@Mapper
-public interface JobDynamicTaskMapper extends ExtendMapper {
+public interface JobDynamicTaskMapper extends ExtendMapper {
}
diff --git a/admin/src/main/java/com/baiye/schedule/service/ElasticJobService.java b/admin/src/main/java/com/baiye/schedule/service/ElasticJobService.java
index 46e4644..119a548 100644
--- a/admin/src/main/java/com/baiye/schedule/service/ElasticJobService.java
+++ b/admin/src/main/java/com/baiye/schedule/service/ElasticJobService.java
@@ -16,4 +16,11 @@ public interface ElasticJobService extends ExtendService {
* @return
*/
List getAllList();
+
+ /**
+ * 任务ID查询数据
+ * @param taskIdList
+ * @return
+ */
+ List getAllListByTaskId(List taskIdList);
}
diff --git a/admin/src/main/java/com/baiye/schedule/service/impl/ElasticJobServiceImpl.java b/admin/src/main/java/com/baiye/schedule/service/impl/ElasticJobServiceImpl.java
index 737671e..cb79545 100644
--- a/admin/src/main/java/com/baiye/schedule/service/impl/ElasticJobServiceImpl.java
+++ b/admin/src/main/java/com/baiye/schedule/service/impl/ElasticJobServiceImpl.java
@@ -25,4 +25,10 @@ public class ElasticJobServiceImpl extends ExtendServiceImpl getAllListByTaskId(List taskIdList) {
+
+ return baseMapper.selectList(WrappersX.lambdaQueryX(JobDynamicTask.class).in(JobDynamicTask::getStatus, DefaultNumberConstants.ONE_NUMBER));
+ }
+
}
diff --git a/admin/src/main/resources/application-dev.yml b/admin/src/main/resources/application-dev.yml
index ecceb42..5208930 100644
--- a/admin/src/main/resources/application-dev.yml
+++ b/admin/src/main/resources/application-dev.yml
@@ -44,5 +44,5 @@ mybatis-plus:
log-impl: org.apache.ibatis.logging.nologging.NoLoggingImpl #关闭sql日志
wechat:
- gatewayHost: https://fission-server.scrm-ai.com
- appKey: SFkWRAued71GvCeClj8efDhAG6bJ2rzT
+ requestUrl: http://test.ipad.ecofanli.com
+ clientFlag: shen0604
diff --git a/admin/src/main/resources/application-prod.yml b/admin/src/main/resources/application-prod.yml
index dbfe044..2fecfb9 100644
--- a/admin/src/main/resources/application-prod.yml
+++ b/admin/src/main/resources/application-prod.yml
@@ -35,5 +35,5 @@ alipay:
encryptKey:
wechat:
- gatewayHost: https://fission-server.scrm-ai.com
- appKey: uNE5DXdjwQa1iE8cBVZJbuvGfr5t9R73
+ requestUrl: http://test.ipad.ecofanli.com
+ clientFlag: shen0604
diff --git a/admin/src/main/resources/application.yml b/admin/src/main/resources/application.yml
index 81dd8c3..8fdae6c 100644
--- a/admin/src/main/resources/application.yml
+++ b/admin/src/main/resources/application.yml
@@ -9,8 +9,15 @@ spring:
jackson:
date-format: yyyy-MM-dd HH:mm:ss
time-zone: GMT+8
-
-
+ cloud:
+ nacos:
+ discovery:
+ server-addr: localhost:8848
+ config:
+ server-addr: localhost:8848
+ file-extension: yml
+ shared-configs:
+ - application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}
# 天爱图形验证码
captcha:
secondary:
@@ -57,6 +64,7 @@ ballcat:
- /outside/**
- /wechat/global/setting
- /pay/aliPay/pay-notify
+ - /api/wechat/callback
# 项目 redis 缓存的 key 前缀
redis:
key-prefix: 'marketing:'
diff --git a/log/history/2024-03-25.gz b/log/history/2024-03-25.gz
new file mode 100644
index 0000000000000000000000000000000000000000..fb04115f90a5051eca185781b1cb739f4451a0bd
GIT binary patch
literal 6330
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
wW%*+~8n*5$vVXtJ^6
literal 0
HcmV?d00001
diff --git a/marketing-scrm-common/common-core/src/main/java/com/baiye/constant/WechatCallbackConstant.java b/marketing-scrm-common/common-core/src/main/java/com/baiye/constant/WechatCallbackConstant.java
index 6948434..19146ba 100644
--- a/marketing-scrm-common/common-core/src/main/java/com/baiye/constant/WechatCallbackConstant.java
+++ b/marketing-scrm-common/common-core/src/main/java/com/baiye/constant/WechatCallbackConstant.java
@@ -25,6 +25,13 @@ public class WechatCallbackConstant {
public static final int LOGIN_SUCCESS = 201;
+ /**
+ * 群通讯录回调
+ */
+ public static final int GROUP_ADDRESS = 223;
+
+
+
/**
* 登录失败
*/
diff --git a/admin/src/main/java/com/baiye/constant/WeChatRequestConstants.java b/marketing-scrm-common/common-core/src/main/java/com/baiye/constant/url/WeChatAccountRequest.java
similarity index 73%
rename from admin/src/main/java/com/baiye/constant/WeChatRequestConstants.java
rename to marketing-scrm-common/common-core/src/main/java/com/baiye/constant/url/WeChatAccountRequest.java
index 6675028..43bbfb4 100644
--- a/admin/src/main/java/com/baiye/constant/WeChatRequestConstants.java
+++ b/marketing-scrm-common/common-core/src/main/java/com/baiye/constant/url/WeChatAccountRequest.java
@@ -1,17 +1,25 @@
-package com.baiye.constant;
+package com.baiye.constant.url;
/**
* @author Enzo
* @date 2024-3-27
*/
-public interface WeChatRequestConstants {
+public interface WeChatAccountRequest {
/**
* 获取二维码
*/
- String GET_QR_CODE = "/api/qrCodeLogin/";
+ String GET_QR_CODE = "/wechat/v1/ios?wechat?";
+
+
+ /**
+ * 弹窗登录
+ */
+ String PUSH_CODE_LOGIN = "/wechat/v1/pushLogin?wechat=";
+
+
/**
* 批量下线
@@ -22,6 +30,7 @@ public interface WeChatRequestConstants {
+
/**
* 全局设置
*/
@@ -54,4 +63,7 @@ public interface WeChatRequestConstants {
String WE_CHAT_ADD_FRIEND = "/api/add-now-friend-phone/";
+
+
+
}
diff --git a/marketing-scrm-common/common-core/src/main/java/com/baiye/constant/url/WeChatFriendRequest.java b/marketing-scrm-common/common-core/src/main/java/com/baiye/constant/url/WeChatFriendRequest.java
new file mode 100644
index 0000000..9b9ba6d
--- /dev/null
+++ b/marketing-scrm-common/common-core/src/main/java/com/baiye/constant/url/WeChatFriendRequest.java
@@ -0,0 +1,25 @@
+package com.baiye.constant.url;
+
+/**
+ * @author Enzo
+ * @date : 2024/5/31
+ */
+public interface WeChatFriendRequest {
+
+ /**
+ * 添加好友
+ */
+ String ADD_FRIEND = "/wechat/v1/addfriends";
+
+
+ /**
+ * 好友信息
+ */
+ String FRIEND_INFO = "/wechat/v1/friendinfo";
+
+ /**
+ * 修改好友信息
+ */
+ String UPDATE_FRIEND_INFO = "/wechat/v1/markfriend";
+
+}
diff --git a/marketing-scrm-common/common-core/src/main/java/com/baiye/constant/url/WeChatGroupRequest.java b/marketing-scrm-common/common-core/src/main/java/com/baiye/constant/url/WeChatGroupRequest.java
new file mode 100644
index 0000000..480f7ce
--- /dev/null
+++ b/marketing-scrm-common/common-core/src/main/java/com/baiye/constant/url/WeChatGroupRequest.java
@@ -0,0 +1,27 @@
+package com.baiye.constant.url;
+
+/**
+ * @author Enzo
+ * @date : 2024/6/3
+ */
+public interface WeChatGroupRequest {
+
+ /**
+ * 创建群
+ */
+ String GREAT_GROUP = "/wechat/v1/creategroup";
+
+
+ /**
+ * 获取群信息
+ */
+ String GROUP_INFO = "/wechat/v1/chatroominfo";
+
+
+ /**
+ * 获取群信息
+ */
+ String GROUP_CONVERSATION = "/wechat/v1/getAllContact";
+
+
+}
diff --git a/marketing-scrm-common/common-core/src/main/java/com/baiye/constant/url/WeChatPersonRequest.java b/marketing-scrm-common/common-core/src/main/java/com/baiye/constant/url/WeChatPersonRequest.java
new file mode 100644
index 0000000..89bcda8
--- /dev/null
+++ b/marketing-scrm-common/common-core/src/main/java/com/baiye/constant/url/WeChatPersonRequest.java
@@ -0,0 +1,34 @@
+package com.baiye.constant.url;
+
+/**
+ * @author Enzo
+ * @date : 2024/6/3
+ */
+public interface WeChatPersonRequest {
+
+ /**
+ * 在线状态
+ */
+ String ONLINE_STATUS = "/wechat/v1/wecatstatus";
+
+
+ /**
+ * 在线状态
+ */
+ String SYNC_ADDRESS_BOOK = "/wechat/v1/syncContact";
+
+
+
+ /**
+ * 获取标签好友列表
+ */
+ String GET_LABEL_WX_LIST = "/wechat/v1/getLabelWxList";
+
+ /**
+ * 修改个人标签
+ */
+ String MODIFY_WECHAT_LABEL = "/wechat/v1/modifyLabel";
+
+
+
+}
diff --git a/marketing-scrm-common/common-core/src/main/java/com/baiye/constant/url/WechatCircleFriendRequest.java b/marketing-scrm-common/common-core/src/main/java/com/baiye/constant/url/WechatCircleFriendRequest.java
new file mode 100644
index 0000000..3ea432d
--- /dev/null
+++ b/marketing-scrm-common/common-core/src/main/java/com/baiye/constant/url/WechatCircleFriendRequest.java
@@ -0,0 +1,8 @@
+package com.baiye.constant.url;
+
+/**
+ * @author Enzo
+ * @date : 2024/5/31
+ */
+public interface WechatCircleFriendRequest {
+}
diff --git a/marketing-scrm-common/common-core/src/main/java/com/baiye/constant/url/WechatLoginRequest.java b/marketing-scrm-common/common-core/src/main/java/com/baiye/constant/url/WechatLoginRequest.java
new file mode 100644
index 0000000..8c743ae
--- /dev/null
+++ b/marketing-scrm-common/common-core/src/main/java/com/baiye/constant/url/WechatLoginRequest.java
@@ -0,0 +1,8 @@
+package com.baiye.constant.url;
+
+/**
+ * @author Enzo
+ * @date : 2024/5/31
+ */
+public interface WechatLoginRequest {
+}
diff --git a/marketing-scrm-common/common-core/src/main/java/com/baiye/enums/JobEnum.java b/marketing-scrm-common/common-core/src/main/java/com/baiye/enums/JobEnum.java
new file mode 100644
index 0000000..4e69a88
--- /dev/null
+++ b/marketing-scrm-common/common-core/src/main/java/com/baiye/enums/JobEnum.java
@@ -0,0 +1,31 @@
+package com.baiye.enums;
+
+/**
+ * @author Enzo
+ * @date : 2024/6/2
+ */
+public enum JobEnum {
+
+ EVERY("每天", 0),
+ DAY("日", 1),
+ MONTH("月", 2),
+ WEEK("周", 3),
+ YEAR("年", 4),
+ ;
+
+ JobEnum(String name, Integer value) {
+ this.name = name;
+ this.value = value;
+ }
+
+ private final String name;
+ private final Integer value;
+
+ public Integer getValue() {
+ return value;
+ }
+
+ public String getName() {
+ return name;
+ }
+}
diff --git a/marketing-scrm-common/common-core/src/main/java/com/baiye/pojo/CronModel.java b/marketing-scrm-common/common-core/src/main/java/com/baiye/pojo/CronModel.java
new file mode 100644
index 0000000..034c0d5
--- /dev/null
+++ b/marketing-scrm-common/common-core/src/main/java/com/baiye/pojo/CronModel.java
@@ -0,0 +1,96 @@
+package com.baiye.pojo;
+
+import com.baiye.enums.JobEnum;
+
+/**
+ * @author Enzo
+ * @date : 2024/6/2
+ */
+public class CronModel {
+
+ Integer[] dayOfWeeks;
+
+ Integer[] dayOfMonths;
+
+ Integer[] months;
+
+ Integer second;
+
+ Integer minute;
+
+ Integer hour;
+
+ /**
+ * 类型
+ */
+ JobEnum jobType;
+ /**
+ * 间隔
+ */
+ Integer beApart;
+
+ public Integer[] getDayOfWeeks() {
+ return dayOfWeeks;
+ }
+
+ public void setDayOfWeeks(Integer[] dayOfWeeks) {
+ this.dayOfWeeks = dayOfWeeks;
+ }
+
+ public Integer[] getDayOfMonths() {
+ return dayOfMonths;
+ }
+
+ public void setDayOfMonths(Integer[] dayOfMonths) {
+ this.dayOfMonths = dayOfMonths;
+ }
+
+ public Integer[] getMonths() {
+ return months;
+ }
+
+ public void setMonths(Integer[] months) {
+ this.months = months;
+ }
+
+ public Integer getSecond() {
+ return second == null ? 0 : second;
+ }
+
+ public void setSecond(Integer second) {
+ this.second = second;
+ }
+
+ public Integer getMinute() {
+ return minute == null ? 0 : minute;
+ }
+
+ public void setMinute(Integer minute) {
+ this.minute = minute;
+ }
+
+ public Integer getHour() {
+
+ return hour == null ? 0 : hour;
+ }
+
+ public void setHour(Integer hour) {
+ this.hour = hour;
+ }
+
+ public JobEnum getJobType() {
+ return jobType == null ? JobEnum.DAY : jobType;
+ }
+
+ public void setJobType(JobEnum jobType) {
+ this.jobType = jobType;
+ }
+
+ public Integer getBeApart() {
+ return beApart;
+ }
+
+ public void setBeApart(Integer beApart) {
+ this.beApart = beApart;
+ }
+}
diff --git a/marketing-scrm-common/common-core/src/main/java/com/baiye/util/CronUtil.java b/marketing-scrm-common/common-core/src/main/java/com/baiye/util/CronUtil.java
new file mode 100644
index 0000000..e88a09e
--- /dev/null
+++ b/marketing-scrm-common/common-core/src/main/java/com/baiye/util/CronUtil.java
@@ -0,0 +1,278 @@
+package com.baiye.util;
+
+import cn.hutool.core.date.DateTime;
+import cn.hutool.core.date.DateUtil;
+import cn.hutool.core.text.CharSequenceUtil;
+import cn.hutool.core.text.StrPool;
+import cn.hutool.core.util.ArrayUtil;
+import cn.hutool.core.util.StrUtil;
+import com.baiye.constant.DefaultNumberConstants;
+import com.baiye.enums.JobEnum;
+import com.baiye.pojo.CronModel;
+import org.springframework.scheduling.support.CronSequenceGenerator;
+import org.springframework.scheduling.support.CronTrigger;
+
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.*;
+
+/**
+ * Cron表达式工具类(quartz类)
+ * 符号表示的值:
+ * * 表示所有值;
+ * ? 表示未说明的值,即不关心它为何值;
+ * - 表示一个指定的范围;
+ * , 表示附加一个可能值;
+ * / 符号前表示开始时间,符号后表示每次递增的值;
+ * L("last") ("last") "L" 用在day-of-month字段意思是 "这个月最后一天";
+ * W("weekday") 只能用在day-of-month字段。用来描叙最接近指定天的工作日(周一到周五)
+ *
+ * @author lenovo
+ */
+public class CronUtil {
+
+
+ /**
+ * 构建Cron表达式
+ * 目前支持三种常用的cron表达式
+ * 1.每天的某个时间点执行 例:12 12 12 * * 表示每天12时12分12秒执行
+ * 2.每周的哪几天执行 例:12 12 12 ? * 1,2,3表示每周的周1周2周3 ,12时12分12秒执行
+ * 3.每月的哪几天执行 例:12 12 12 1,21,13 * ?表示每月的1号21号13号 12时12分12秒执行
+ */
+ public static String createCronExpression(CronModel cronModel) {
+ StringBuilder cronExp = new StringBuilder();
+
+ if (null == cronModel.getJobType()) {
+ System.out.println("执行周期未配置");//执行周期未配置
+ }
+
+ if (null != cronModel.getSecond()
+ && null != cronModel.getMinute()
+ && null != cronModel.getHour()) {
+ //秒
+ cronExp.append(cronModel.getSecond()).append(" ");
+ //分
+ cronExp.append(cronModel.getMinute()).append(" ");
+ //小时
+ cronExp.append(cronModel.getHour()).append(" ");
+ //每天
+ if (cronModel.getJobType().getValue() == 1) {
+ //12 12 12 1/2 * ? *
+ //12 12 12 * * ?
+ if (cronModel.getBeApart() != null) {
+ cronExp.append("1");//日
+ cronExp.append("/");
+ cronExp.append(cronModel.getBeApart() + 1);//月
+ cronExp.append(" ");
+ cronExp.append("* ");
+ cronExp.append("?");
+ } else {
+ cronExp.append("* ");//日
+ cronExp.append("* ");//月
+ cronExp.append("?");//周
+ }
+ }
+
+ //按每周
+ else if (cronModel.getJobType().getValue() == 3) {
+ //一个月中第几天
+ cronExp.append("? ");
+ //月份
+ cronExp.append("* ");
+ //周
+ Integer[] weeks = cronModel.getDayOfWeeks();
+ for (int i = 0; i < weeks.length; i++) {
+ if (i == 0) {
+ cronExp.append(weeks[i]);
+ } else {
+ cronExp.append(",").append(weeks[i]);
+ }
+ }
+
+ }
+ //按每月
+ else if (cronModel.getJobType().getValue() == 2) {
+ //一个月中的哪几天
+ Integer[] days = cronModel.getDayOfMonths();
+ for (int i = 0; i < days.length; i++) {
+ if (i == 0) {
+ if (days[i] == 32) {
+ //本月最后一天
+ String endMouthCron = "0 0 0 L * ?";
+ return endMouthCron;
+ } else {
+ cronExp.append(days[i]);
+ }
+ } else {
+ cronExp.append(",").append(days[i]);
+ }
+ }
+ //月份
+ cronExp.append(" * ");
+ //周
+ cronExp.append("?");
+ }
+ //按每年
+ else if (cronModel.getJobType().getValue() == 4) {
+ //一个年中的哪几天
+ Integer[] days = cronModel.getDayOfMonths();
+ if (ArrayUtil.isEmpty(days)) {
+ cronExp.append("*");
+ } else {
+ for (int i = 0; i < days.length; i++) {
+ if (i == 0) {
+ cronExp.append(days[i]);
+ } else {
+ cronExp.append(",").append(days[i]);
+ }
+ }
+ }
+ //月份
+ Integer[] months = cronModel.getMonths();
+ if (ArrayUtil.isEmpty(months)) {
+ cronExp.append(" *");
+ } else {
+ for (int i = 0; i < months.length; i++) {
+ Integer month = months[i];
+ if (month > 12) {
+ throw new RuntimeException("月份数据异常: " + Arrays.toString(months));
+ }
+ if (i == 0) {
+ cronExp.append(" ").append(month);
+ } else {
+ cronExp.append(",").append(month);
+ }
+ }
+ }
+ cronExp.append(" ?");
+ } else if (cronModel.getJobType().getValue() == 0) {
+ cronExp.append("* ");//日
+ cronExp.append("* ");//月
+ cronExp.append("?");//周
+ }
+ }
+ return cronExp.toString();
+ }
+
+ /**
+ * 生成计划的详细描述
+ *
+ * @param cronModel
+ * @return String
+ */
+ public static String createDescription(CronModel cronModel) {
+ StringBuffer description = new StringBuffer("");
+ //计划执行开始时间
+// Date startTime = cronModel.getScheduleStartTime();
+
+ if (null != cronModel.getSecond()
+ && null != cronModel.getMinute()
+ && null != cronModel.getHour()) {
+ //按每天
+ if (cronModel.getJobType().getValue() == 1) {
+ Integer beApart = cronModel.getBeApart();
+ if (beApart != null) {
+ description.append("每间隔").append(beApart).append("天");
+ } else {
+ description.append("每天");
+ }
+ description.append(cronModel.getHour()).append("时");
+ description.append(cronModel.getMinute()).append("分");
+ description.append(cronModel.getSecond()).append("秒");
+ description.append("执行");
+ }
+
+ //按每周
+ else if (cronModel.getJobType().getValue() == 3) {
+ if (cronModel.getDayOfWeeks() != null && cronModel.getDayOfWeeks().length > 0) {
+ String days = "";
+ for (int i : cronModel.getDayOfWeeks()) {
+ days += "周" + i;
+ }
+ description.append("每周的").append(days).append(" ");
+ }
+ if (null != cronModel.getSecond()
+ && null != cronModel.getMinute()
+ && null != cronModel.getHour()) {
+ description.append(",");
+ description.append(cronModel.getHour()).append("时");
+ description.append(cronModel.getMinute()).append("分");
+ description.append(cronModel.getSecond()).append("秒");
+ }
+ description.append("执行");
+ }
+
+ //按每月
+ else if (cronModel.getJobType().getValue() == 2) {
+ //选择月份
+ if (cronModel.getDayOfMonths() != null && cronModel.getDayOfMonths().length > 0) {
+ String days = "";
+ for (int i : cronModel.getDayOfMonths()) {
+ days += i + "号";
+ }
+ description.append("每月的").append(days).append(" ");
+ }
+ description.append(cronModel.getHour()).append("时");
+ description.append(cronModel.getMinute()).append("分");
+ description.append(cronModel.getSecond()).append("秒");
+ description.append("执行");
+ }
+
+ }
+ return description.toString();
+ }
+
+
+ /**
+ * 构建Cron表达式
+ *
+ * @param rate 第几位
+ * @param cycle 数值
+ * @return
+ */
+ public static String createLoopCronExpression(int rate, int cycle) {
+ String cron = "";
+ switch (rate) {
+ case 0:// 每cycle秒执行一次
+ cron = "0/" + cycle + " * * * * ?";
+ break;
+ case 1:// 每cycle分钟执行一次
+ cron = "0 0/" + cycle + " * * * ?";
+ break;
+ case 2:// 每cycle小时执行一次
+ cron = "0 0 0/" + cycle + " * * ?";
+ break;
+ case 3:// 每cycle天的0点执行一次
+ cron = "0 0 0 1/" + cycle + " * ?";
+ break;
+ case 4:// 每cycle月的1号0点执行一次
+ cron = "0 0 0 1 1/" + cycle + " ? ";
+ break;
+ case 5:// 每天cycle点执行一次
+ cron = "0 0 " + cycle + " * * ?";
+ break;
+ default:// 默认每cycle秒执行一次
+ cron = "0/1 * * * * ?";
+ break;
+ }
+ return cron;
+ }
+
+ public static void main(String[] args) {
+ DateTime parse = DateUtil.parse("2024-6-4 18:32:49");
+ System.out.println(generateCronByTime(DateUtil.date(), parse, 10, 20));
+ }
+
+
+ public static String generateCronByTime(Date startDate, Date endDate, Integer startIntervalTime, Integer endIntervalTime) {
+
+ Integer startHour = DateUtil.hour(startDate, Boolean.TRUE);
+ Integer endHour = DateUtil.hour(endDate, Boolean.TRUE);
+ String hourStr = startHour + StrPool.DASHED + endHour;
+
+ return DefaultNumberConstants.ZERO_NUMBER + CharSequenceUtil.SPACE + startIntervalTime +
+ StrPool.DASHED + endIntervalTime + CharSequenceUtil.SPACE + hourStr + " * * ?";
+
+ }
+
+}
diff --git a/marketing-scrm-common/common-core/src/main/java/org/springframework/boot/context/properties/ConfigurationBeanFactoryMetadata.java b/marketing-scrm-common/common-core/src/main/java/org/springframework/boot/context/properties/ConfigurationBeanFactoryMetadata.java
new file mode 100644
index 0000000..bc7ec2b
--- /dev/null
+++ b/marketing-scrm-common/common-core/src/main/java/org/springframework/boot/context/properties/ConfigurationBeanFactoryMetadata.java
@@ -0,0 +1,79 @@
+package org.springframework.boot.context.properties;
+
+
+import org.springframework.beans.BeansException;
+import org.springframework.beans.factory.config.BeanDefinition;
+import org.springframework.beans.factory.config.ConfigurableListableBeanFactory;
+import org.springframework.beans.factory.support.BeanDefinitionRegistry;
+import org.springframework.beans.factory.support.GenericBeanDefinition;
+import org.springframework.beans.factory.support.RootBeanDefinition;
+import org.springframework.context.ApplicationContext;
+import org.springframework.context.ApplicationContextAware;
+import org.springframework.context.ConfigurableApplicationContext;
+import org.springframework.core.annotation.AnnotationUtils;
+
+import java.lang.annotation.Annotation;
+import java.lang.reflect.Method;
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * Utility class to memorize {@code @Bean} definition metadata during initialization of
+ * the bean factory.
+ *
+ * @author Dave Syer
+ * @since 1.1.0
+ * @deprecated since 2.2.0 for removal in 2.4.0 in favor of
+ * {@link ConfigurationPropertiesBean}
+ */
+@Deprecated
+public class ConfigurationBeanFactoryMetadata implements ApplicationContextAware {
+
+ /**
+ * The bean name that this class is registered with.
+ */
+ public static final String BEAN_NAME = ConfigurationBeanFactoryMetadata.class.getName();
+
+ private ConfigurableApplicationContext applicationContext;
+
+ public Map getBeansWithFactoryAnnotation(Class type) {
+ Map result = new HashMap<>();
+ for (String name : this.applicationContext.getBeanFactory().getBeanDefinitionNames()) {
+ if (findFactoryAnnotation(name, type) != null) {
+ result.put(name, this.applicationContext.getBean(name));
+ }
+ }
+ return result;
+ }
+
+ public A findFactoryAnnotation(String beanName, Class type) {
+ Method method = findFactoryMethod(beanName);
+ return (method != null) ? AnnotationUtils.findAnnotation(method, type) : null;
+ }
+
+ public Method findFactoryMethod(String beanName) {
+ ConfigurableListableBeanFactory beanFactory = this.applicationContext.getBeanFactory();
+ if (beanFactory.containsBeanDefinition(beanName)) {
+ BeanDefinition beanDefinition = beanFactory.getMergedBeanDefinition(beanName);
+ if (beanDefinition instanceof RootBeanDefinition) {
+ return ((RootBeanDefinition) beanDefinition).getResolvedFactoryMethod();
+ }
+ }
+ return null;
+ }
+
+ @Override
+ public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
+ this.applicationContext = (ConfigurableApplicationContext) applicationContext;
+ }
+
+ static void register(BeanDefinitionRegistry registry) {
+ if (!registry.containsBeanDefinition(BEAN_NAME)) {
+ GenericBeanDefinition definition = new GenericBeanDefinition();
+ definition.setBeanClass(ConfigurationBeanFactoryMetadata.class);
+ definition.setRole(BeanDefinition.ROLE_INFRASTRUCTURE);
+ registry.registerBeanDefinition(ConfigurationBeanFactoryMetadata.BEAN_NAME, definition);
+ }
+ }
+
+}
diff --git a/marketing-scrm-common/common-model/src/main/java/com/baiye/result/WeChatResponse.java b/marketing-scrm-common/common-model/src/main/java/com/baiye/result/WeChatResponse.java
index 9da46eb..a99f12e 100644
--- a/marketing-scrm-common/common-model/src/main/java/com/baiye/result/WeChatResponse.java
+++ b/marketing-scrm-common/common-model/src/main/java/com/baiye/result/WeChatResponse.java
@@ -21,6 +21,8 @@ public class WeChatResponse implements Serializable {
private String msg;
+ private String wxId;
+
private Integer status;
private Boolean success;
diff --git a/marketing-scrm-common/common-redis/src/main/java/com/baiye/RedisHelper.java b/marketing-scrm-common/common-redis/src/main/java/com/baiye/RedisHelper.java
index 76ab09f..d9ed7db 100644
--- a/marketing-scrm-common/common-redis/src/main/java/com/baiye/RedisHelper.java
+++ b/marketing-scrm-common/common-redis/src/main/java/com/baiye/RedisHelper.java
@@ -6,6 +6,7 @@ import org.springframework.data.redis.connection.RedisConnection;
import org.springframework.data.redis.connection.RedisStreamCommands;
import org.springframework.data.redis.connection.RedisZSetCommands;
import org.springframework.data.redis.connection.stream.*;
+import org.springframework.data.redis.connection.stream.Record;
import org.springframework.data.redis.core.*;
import org.springframework.data.redis.core.script.DefaultRedisScript;
import org.springframework.data.redis.core.script.RedisScript;
diff --git a/marketing-scrm-starters/marketing-scrm-starter-job/pom.xml b/marketing-scrm-starters/marketing-scrm-starter-job/pom.xml
index 432f9c7..c9e6d5d 100644
--- a/marketing-scrm-starters/marketing-scrm-starter-job/pom.xml
+++ b/marketing-scrm-starters/marketing-scrm-starter-job/pom.xml
@@ -17,7 +17,6 @@
-
com.github.kuhn-he
elastic-job-lite-spring-boot-starter
@@ -52,42 +51,22 @@
zookeeper
-
-
-
- org.apache.curator
- curator-framework
2.12.0
-
- org.apache.curator
- curator-client
- 2.12.0
-
-
- org.apache.curator
- curator-recipes
- 2.12.0
-
-
- org.apache.zookeeper
- zookeeper
-
-
-
+
- org.apache.zookeeper
- zookeeper
- 3.4.13
+ com.baiye
+ marketing-scrm-extend-mybatis-plus
- org.slf4j
- slf4j-log4j12
+ guava
+ com.google.guava
+
diff --git a/marketing-scrm-starters/marketing-scrm-starter-job/src/main/java/com/baiye/common/job/handler/ElasticJobHandler.java b/marketing-scrm-starters/marketing-scrm-starter-job/src/main/java/com/baiye/common/job/handler/ElasticJobHandler.java
index 4508f13..d761f19 100644
--- a/marketing-scrm-starters/marketing-scrm-starter-job/src/main/java/com/baiye/common/job/handler/ElasticJobHandler.java
+++ b/marketing-scrm-starters/marketing-scrm-starter-job/src/main/java/com/baiye/common/job/handler/ElasticJobHandler.java
@@ -1,10 +1,11 @@
package com.baiye.common.job.handler;
+
+import com.baiye.common.job.lintener.ElasticJobListener;
import com.dangdang.ddframe.job.api.simple.SimpleJob;
import com.dangdang.ddframe.job.config.JobCoreConfiguration;
import com.dangdang.ddframe.job.config.simple.SimpleJobConfiguration;
import com.dangdang.ddframe.job.event.JobEventConfiguration;
-import com.dangdang.ddframe.job.lite.api.listener.ElasticJobListener;
import com.dangdang.ddframe.job.lite.config.LiteJobConfiguration;
import com.dangdang.ddframe.job.lite.internal.schedule.JobRegistry;
import com.dangdang.ddframe.job.lite.internal.schedule.JobScheduleController;
@@ -44,7 +45,10 @@ public class ElasticJobHandler {
public void addJob(String jobName, String cron, int shardingTotalCount, SimpleJob instance, String parameters, String description) {
log.info("动态创建定时任务:jobName = {}, cron = {}, shardingTotalCount = {}, parameters = {}", jobName, cron, shardingTotalCount, parameters);
- LiteJobConfiguration.Builder builder = LiteJobConfiguration.newBuilder(new SimpleJobConfiguration(JobCoreConfiguration.newBuilder(jobName, cron, shardingTotalCount).jobParameter(parameters).description(description).build(), instance.getClass().getName())).overwrite(true);
+ LiteJobConfiguration.Builder builder = LiteJobConfiguration.newBuilder
+ (new SimpleJobConfiguration(JobCoreConfiguration.newBuilder
+ (jobName, cron, shardingTotalCount).jobParameter(parameters).description(description).build(),
+ instance.getClass().getName())).overwrite(true);
LiteJobConfiguration liteJobConfiguration = builder.build();
new SpringJobScheduler(instance, zookeeperRegistryCenter, liteJobConfiguration, jobEventConfiguration, elasticJobListener).init();
@@ -87,12 +91,13 @@ public class ElasticJobHandler {
public void pauseJob(String jobName) {
JobScheduleController jobScheduleController = JobRegistry.getInstance().getJobScheduleController(jobName);
if (jobScheduleController != null) {
+ log.info("================== 暂停定时任务:jobName = {} ==================", jobName);
jobScheduleController.pauseJob();
}
}
/**
- * 恢复任务
+ * 判断是否暂停
*/
public Boolean isPaused(String jobName) {
JobScheduleController jobScheduleController = JobRegistry.getInstance().getJobScheduleController(jobName);
@@ -119,6 +124,7 @@ public class ElasticJobHandler {
public void start(String jobName) {
JobScheduleController jobScheduleController = JobRegistry.getInstance().getJobScheduleController(jobName);
if (jobScheduleController != null) {
+ log.info("================== 启动定时任务:jobName = {} ==================", jobName);
jobScheduleController.triggerJob();
}
}
diff --git a/marketing-scrm-starters/marketing-scrm-starter-job/src/main/java/com/baiye/common/job/lintener/ElasticJobListener.java b/marketing-scrm-starters/marketing-scrm-starter-job/src/main/java/com/baiye/common/job/lintener/ElasticJobListener.java
index 5f0c6d7..ce3a5f4 100644
--- a/marketing-scrm-starters/marketing-scrm-starter-job/src/main/java/com/baiye/common/job/lintener/ElasticJobListener.java
+++ b/marketing-scrm-starters/marketing-scrm-starter-job/src/main/java/com/baiye/common/job/lintener/ElasticJobListener.java
@@ -1,5 +1,6 @@
package com.baiye.common.job.lintener;
+
import com.dangdang.ddframe.job.executor.ShardingContexts;
import com.dangdang.ddframe.job.lite.api.listener.AbstractDistributeOnceElasticJobListener;
@@ -22,4 +23,6 @@ public class ElasticJobListener extends AbstractDistributeOnceElasticJobListener
public void doAfterJobExecutedAtLastCompleted(ShardingContexts shardingContexts) {
// 任务执行完成后更新状态为已执行,当前未处理
}
+
+
}
diff --git a/marketing-scrm-system/system-biz/src/main/java/com/baiye/system/properties/WeChatProperties.java b/marketing-scrm-system/system-biz/src/main/java/com/baiye/system/properties/WeChatProperties.java
index f4d210b..308582d 100644
--- a/marketing-scrm-system/system-biz/src/main/java/com/baiye/system/properties/WeChatProperties.java
+++ b/marketing-scrm-system/system-biz/src/main/java/com/baiye/system/properties/WeChatProperties.java
@@ -15,9 +15,9 @@ import org.springframework.stereotype.Component;
@ConfigurationProperties(prefix = "wechat")
public class WeChatProperties {
- private String gatewayHost;
+ private String requestUrl;
- private String appKey;
+ private String clientFlag;
}
diff --git a/pom.xml b/pom.xml
index 195a40d..aaf7534 100644
--- a/pom.xml
+++ b/pom.xml
@@ -35,6 +35,8 @@
3.1.0
1.6.13
0.0.39
+ 2021.0.3
+ 2021.0.4.0
4.11.28.ALL
@@ -411,7 +413,6 @@
${zip4j.version}
-
com.alipay.sdk
@@ -419,10 +420,27 @@
${alipay.version}
+
+
+ org.springframework.cloud
+ spring-cloud-dependencies
+ ${spring-cloud.version}
+ pom
+ import
+
+
+
+ com.alibaba.cloud
+ spring-cloud-alibaba-dependencies
+ ${spring-cloud-alibaba.version}
+ pom
+ import
+
+