|
|
@@ -5,6 +5,7 @@ import com.alibaba.fastjson.JSONObject;
|
|
|
import com.aliyuncs.exceptions.ClientException;
|
|
|
import com.github.pagehelper.PageHelper;
|
|
|
import com.github.pagehelper.PageInfo;
|
|
|
+import com.xiaoleilu.hutool.date.DateTime;
|
|
|
import org.apache.commons.lang3.StringUtils;
|
|
|
import org.apache.ibatis.annotations.Param;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
@@ -36,23 +37,29 @@ import platform.modules.sys.entity.ActivityPush;
|
|
|
import platform.modules.sys.entity.ActivityRegistration;
|
|
|
import tk.mybatis.mapper.entity.Example;
|
|
|
|
|
|
+import javax.annotation.Resource;
|
|
|
import java.io.IOException;
|
|
|
import java.io.InputStream;
|
|
|
import java.time.LocalDateTime;
|
|
|
import java.time.format.DateTimeFormatter;
|
|
|
import java.util.*;
|
|
|
+import java.util.concurrent.ExecutorService;
|
|
|
+import java.util.concurrent.LinkedBlockingDeque;
|
|
|
+import java.util.concurrent.ThreadPoolExecutor;
|
|
|
+import java.util.concurrent.TimeUnit;
|
|
|
+import java.util.stream.Collectors;
|
|
|
|
|
|
@Service
|
|
|
@Transactional
|
|
|
public class ActivityService extends BaseService<ActivityDetail> {
|
|
|
|
|
|
- @Autowired
|
|
|
+ @Resource
|
|
|
private ActivityDetailDao activityDetailDao;
|
|
|
|
|
|
@Autowired
|
|
|
private ActivityPushService activityPushService;
|
|
|
|
|
|
- @Autowired
|
|
|
+ @Resource
|
|
|
private AttachmentDao attachmentDao;
|
|
|
|
|
|
@Autowired
|
|
|
@@ -281,7 +288,9 @@ public class ActivityService extends BaseService<ActivityDetail> {
|
|
|
* @return
|
|
|
*/
|
|
|
private List<ActivityPush> assemblingPushlist(List<ActivityPush> list, Integer id) {
|
|
|
- if (CollectionUtils.isEmpty(list)) return list;
|
|
|
+ if (CollectionUtils.isEmpty(list)) {
|
|
|
+ return list;
|
|
|
+ }
|
|
|
User currUser = ShiroUtils.getUserEntity();
|
|
|
Date now = new Date();
|
|
|
for (ActivityPush activityPush : list) {
|
|
|
@@ -701,6 +710,18 @@ public class ActivityService extends BaseService<ActivityDetail> {
|
|
|
return new PageInfo<>(highlyRecommendedList);
|
|
|
}
|
|
|
|
|
|
+ @Value("${app_id}")
|
|
|
+ private String APP_ID;
|
|
|
+
|
|
|
+ @Value("${app_sercet}")
|
|
|
+ private String APP_SERCRET;
|
|
|
+
|
|
|
+ @Value("${activity_page_path_detail}")
|
|
|
+ private String ACTIVITY_PAGE_PATH_DETAIL;
|
|
|
+
|
|
|
+ @Value("${activity_page_path_sign}")
|
|
|
+ private String ACTIVITY_PAGE_PATH_SIGN;
|
|
|
+
|
|
|
/**
|
|
|
* @Author: huZhiHao
|
|
|
* @Description: 获取二维码 1 详情 2 签到
|
|
|
@@ -729,16 +750,83 @@ public class ActivityService extends BaseService<ActivityDetail> {
|
|
|
return is;
|
|
|
}
|
|
|
|
|
|
- @Value("${app_id}")
|
|
|
- private String APP_ID;
|
|
|
-
|
|
|
- @Value("${app_sercet}")
|
|
|
- private String APP_SERCRET;
|
|
|
-
|
|
|
- @Value("${activity_page_path_detail}")
|
|
|
- private String ACTIVITY_PAGE_PATH_DETAIL;
|
|
|
+ /**
|
|
|
+ * @Author: huZhiHao
|
|
|
+ * @Description: 向第二天参与活动的人发送短信
|
|
|
+ * @Date: 2021/5/13
|
|
|
+ **/
|
|
|
+ public void sendActivityNotification() {
|
|
|
+
|
|
|
+ Calendar ca = Calendar.getInstance();
|
|
|
+ ca.setTime(new Date());
|
|
|
+ ca.add(Calendar.DAY_OF_MONTH, 1);
|
|
|
+ String tomorrow = com.xiaoleilu.hutool.date.DateUtil.format(ca.getTime(), com.xiaoleilu.hutool.date.DateUtil.NORM_DATE_PATTERN);
|
|
|
+
|
|
|
+ //获取明天开始的活动
|
|
|
+ List<ActivityDetail> activityDetails = activityService.findAll();
|
|
|
+ List<ActivityDetail> newActivityDetails = activityDetails.stream()
|
|
|
+ .filter(a -> Objects.equals("1", a.getActivity_state()))
|
|
|
+ .filter(a -> !a.getDel_flag())
|
|
|
+ .filter(a -> a.getActivity_starttime().contains(tomorrow))
|
|
|
+ .collect(Collectors.toList());
|
|
|
+
|
|
|
+ if (CommonUtils.isNotNull(newActivityDetails)) {
|
|
|
+
|
|
|
+ for (ActivityDetail newActivityDetail : newActivityDetails) {
|
|
|
+ //获取活动报名成功的人
|
|
|
+ Integer acId = newActivityDetail.getId();
|
|
|
+ List<ActivityRegistration> registrations = activityRegistrationService.findRegistrationList(acId);
|
|
|
+ Set<String> phones = registrations.stream()
|
|
|
+ .filter(r -> Objects.equals("1", r.getReview_state()))
|
|
|
+ .filter(r -> !r.getDel_flag())
|
|
|
+ .map(r -> r.getPhone())
|
|
|
+ .collect(Collectors.toSet());
|
|
|
+
|
|
|
+ if (CommonUtils.isNotNull(phones)) {
|
|
|
+
|
|
|
+ //短信模版
|
|
|
+ String templateCode = Constant.SMS_TemplateCode.ACT_JOIN_NOTIFICATION;
|
|
|
+
|
|
|
+ //发送短信线程池
|
|
|
+ ExecutorService executor = new ThreadPoolExecutor(
|
|
|
+ Runtime.getRuntime().availableProcessors(),
|
|
|
+ Runtime.getRuntime().availableProcessors() * 2,
|
|
|
+ 1L,
|
|
|
+ TimeUnit.SECONDS,
|
|
|
+ new LinkedBlockingDeque<>()
|
|
|
+ );
|
|
|
+
|
|
|
+ String date = newActivityDetail.getActivity_starttime().split(" ")[0];
|
|
|
+ String time = newActivityDetail.getActivity_starttime().split(" ")[1];
|
|
|
+ String title = newActivityDetail.getActivity_title();
|
|
|
+ String location = newActivityDetail.getActivity_location();
|
|
|
|
|
|
- @Value("${activity_page_path_sign}")
|
|
|
- private String ACTIVITY_PAGE_PATH_SIGN;
|
|
|
+ Map<String, String> params = new HashMap<>();
|
|
|
+ params.put("title", title);
|
|
|
+ params.put("location", location);
|
|
|
+ DateTime newDate = com.xiaoleilu.hutool.date.DateUtil.parse(date, com.xiaoleilu.hutool.date.DateUtil.NORM_DATE_PATTERN);
|
|
|
+ params.put("date", com.xiaoleilu.hutool.date.DateUtil.format(newDate, "yyyy年MM月dd日"));
|
|
|
+ params.put("time", time);
|
|
|
+
|
|
|
+ for (String phone : phones) {
|
|
|
+ Runnable runnable = () -> {
|
|
|
+ try {
|
|
|
+ AlibabaSMSUtil.sendSMS(
|
|
|
+ phone,
|
|
|
+ templateCode,
|
|
|
+ Constant.SINGNAMW,
|
|
|
+ JSONObject.toJSONString(params)
|
|
|
+ );
|
|
|
+ //System.out.println(Thread.currentThread().getName() + "模拟发送短信,活动id:" + acId + ",手机号:" + phone + ",模板:" + templateCode + ",签名" + Constant.SINGNAMW + ",参数:" + params);
|
|
|
+ } catch (Exception e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ };
|
|
|
+ executor.submit(runnable);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
|