|
@@ -2,12 +2,14 @@ package com.cyksj.web.controller.manage;
|
|
|
|
|
|
|
|
import cn.dev33.satoken.annotation.SaCheckPermission;
|
|
import cn.dev33.satoken.annotation.SaCheckPermission;
|
|
|
import cn.hutool.core.util.StrUtil;
|
|
import cn.hutool.core.util.StrUtil;
|
|
|
|
|
+import cn.hutool.http.Method;
|
|
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
|
import com.cyksj.dto.Result;
|
|
import com.cyksj.dto.Result;
|
|
|
import com.cyksj.enums.GatewayResponse;
|
|
import com.cyksj.enums.GatewayResponse;
|
|
|
import com.cyksj.mapper.GroupsRelationMapper;
|
|
import com.cyksj.mapper.GroupsRelationMapper;
|
|
|
import com.cyksj.mapper.UserMapper;
|
|
import com.cyksj.mapper.UserMapper;
|
|
|
import com.cyksj.mapper.manage.distribute.UserDistributeSharedMapper;
|
|
import com.cyksj.mapper.manage.distribute.UserDistributeSharedMapper;
|
|
|
|
|
+import com.cyksj.mapper.market.task.UserBindDetailMapper;
|
|
|
import com.cyksj.model.entity.*;
|
|
import com.cyksj.model.entity.*;
|
|
|
import com.cyksj.model.manage.views.UserView;
|
|
import com.cyksj.model.manage.views.UserView;
|
|
|
import com.cyksj.model.views.RenewalView;
|
|
import com.cyksj.model.views.RenewalView;
|
|
@@ -17,13 +19,16 @@ import com.ejlchina.searcher.BeanSearcher;
|
|
|
import com.ejlchina.searcher.SearchResult;
|
|
import com.ejlchina.searcher.SearchResult;
|
|
|
import com.ejlchina.searcher.util.MapBuilder;
|
|
import com.ejlchina.searcher.util.MapBuilder;
|
|
|
import com.ejlchina.searcher.util.MapUtils;
|
|
import com.ejlchina.searcher.util.MapUtils;
|
|
|
|
|
+import com.google.common.collect.Lists;
|
|
|
import lombok.RequiredArgsConstructor;
|
|
import lombok.RequiredArgsConstructor;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
import org.springframework.web.bind.annotation.*;
|
|
import org.springframework.web.bind.annotation.*;
|
|
|
|
|
|
|
|
import javax.servlet.http.HttpServletRequest;
|
|
import javax.servlet.http.HttpServletRequest;
|
|
|
|
|
+import java.io.IOException;
|
|
|
import java.util.List;
|
|
import java.util.List;
|
|
|
import java.util.Optional;
|
|
import java.util.Optional;
|
|
|
|
|
+import java.util.stream.Collectors;
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
* @author chan
|
|
* @author chan
|
|
@@ -101,4 +106,30 @@ public class CmsUserController{
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 批量发送 http://sms-api.luosimao.com/v1/send_batch.[json|xml]
|
|
|
|
|
+ */
|
|
|
|
|
+ private final UserBindDetailMapper bindDetailMapper;
|
|
|
|
|
+ @GetMapping("/batch/send/msg")
|
|
|
|
|
+ public Result<String> batchSendMsg() throws IOException, InterruptedException {
|
|
|
|
|
+ String apiKey = "key-246cd85eb5603c3d4924531e5d5c4edc";
|
|
|
|
|
+ String url = "http://sms-api.luosimao.com/v1/send_batch.json";
|
|
|
|
|
+ List<UserBindDetail> userBindDetails = bindDetailMapper.selectList(Wrappers.lambdaQuery(UserBindDetail.class)
|
|
|
|
|
+ .ne(UserBindDetail::getPhone, StrUtil.EMPTY));
|
|
|
|
|
+ List<String> collect = userBindDetails.stream().map(UserBindDetail::getPhone).collect(Collectors.toList());
|
|
|
|
|
+ List<List<String>> partition = Lists.partition(collect, 200);
|
|
|
|
|
+ System.out.println(partition.size());
|
|
|
|
|
+ for (List<String> list : partition) {
|
|
|
|
|
+ cn.hutool.http.HttpRequest request = new cn.hutool.http.HttpRequest(url);
|
|
|
|
|
+ request.setMethod(Method.POST);
|
|
|
|
|
+ request.basicAuth("api", apiKey);
|
|
|
|
|
+ request.form("mobile_list", list.stream().collect(Collectors.joining(",")));
|
|
|
|
|
+ request.form("message", "银河录像局官网https://nf.video,公众号:银河录像局助手,95折优惠码:nf.video 回复“TD”退订【银河录像局】");
|
|
|
|
|
+ cn.hutool.http.HttpResponse execute = request.execute();
|
|
|
|
|
+ System.out.println(execute.body());
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ return GatewayResponse.SUCCESS.newBuilder().toResult();
|
|
|
|
|
+
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|