|
@@ -5,20 +5,19 @@ import com.alibaba.excel.ExcelWriter;
|
|
|
import com.alibaba.excel.write.metadata.WriteSheet;
|
|
|
import com.alibaba.excel.write.style.column.LongestMatchColumnWidthStyleStrategy;
|
|
|
import com.alibaba.fastjson.JSON;
|
|
|
+import com.alibaba.fastjson.JSONObject;
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
-import com.szwl.constant.ResponseCodesEnum;
|
|
|
import com.szwl.feign.SzwlFeign;
|
|
|
import com.szwl.model.bean.OrderDaoChuDTO;
|
|
|
+import com.szwl.model.bean.WeChatTemplateMsg;
|
|
|
import com.szwl.model.bo.R;
|
|
|
-import com.szwl.model.bo.ResponseModel;
|
|
|
import com.szwl.model.dto.OrderDto;
|
|
|
import com.szwl.model.entity.*;
|
|
|
import com.szwl.mapper.TCoinOrderMapper;
|
|
|
import com.szwl.model.excel.CoinOrderTarget;
|
|
|
import com.szwl.model.excel.NewCoinOrderTarget;
|
|
|
-import com.szwl.model.excel.NewOrderTarget;
|
|
|
import com.szwl.model.query.OrderDaoChuParam;
|
|
|
import com.szwl.model.query.OrderStatisticsDTO;
|
|
|
import com.szwl.service.TCoinOrderService;
|
|
@@ -26,15 +25,15 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
import org.apache.commons.lang.StringUtils;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
-import org.springframework.data.redis.core.StringRedisTemplate;
|
|
|
-import org.springframework.data.redis.core.ValueOperations;
|
|
|
+import org.springframework.http.ResponseEntity;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
+import org.springframework.web.client.RestTemplate;
|
|
|
|
|
|
import javax.annotation.Resource;
|
|
|
import javax.servlet.http.HttpServletResponse;
|
|
|
import java.io.IOException;
|
|
|
-import java.io.UnsupportedEncodingException;
|
|
|
import java.net.URLEncoder;
|
|
|
+import java.text.SimpleDateFormat;
|
|
|
import java.util.*;
|
|
|
import java.util.concurrent.CountDownLatch;
|
|
|
import java.util.concurrent.ExecutorService;
|
|
@@ -57,6 +56,16 @@ public class TCoinOrderServiceImpl extends ServiceImpl<TCoinOrderMapper, TCoinOr
|
|
|
@Autowired
|
|
|
SzwlFeign szwlFeign;
|
|
|
|
|
|
+ /**
|
|
|
+ * 申泽订单通知模版ID
|
|
|
+ */
|
|
|
+ public static final String SZ_TEMPLATE_ID = "Kn37QCyj-JsvKhP9CtNwsYoZe7liMq2uuTO1MbZdbEk";
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 七云订单通知模版ID
|
|
|
+ */
|
|
|
+ public static final String SC_TEMPLATE_ID = "NNvPtOznN2nSV2g57y7B0tUZ77-bf0XxG4OaUvk5EZA";
|
|
|
+
|
|
|
@Override
|
|
|
public List<CoinOrderTarget> findByCoinOrder(TAdmin admin, List<TCoinOrder> coinOrders) {
|
|
|
ArrayList<CoinOrderTarget> list = new ArrayList<>();
|
|
@@ -254,7 +263,7 @@ public class TCoinOrderServiceImpl extends ServiceImpl<TCoinOrderMapper, TCoinOr
|
|
|
// 创建 CountDownLatch 对象
|
|
|
CountDownLatch countDownLatch = new CountDownLatch(totalPages);
|
|
|
// 创建线程池
|
|
|
- ExecutorService executorService = Executors.newFixedThreadPool(10);
|
|
|
+ ExecutorService executorService = Executors.newFixedThreadPool(totalPages);
|
|
|
// 循环写入数据
|
|
|
for (int i = 1; i <= totalPages; i++) {
|
|
|
int page = i;
|
|
@@ -290,6 +299,76 @@ public class TCoinOrderServiceImpl extends ServiceImpl<TCoinOrderMapper, TCoinOr
|
|
|
executorService.shutdown();
|
|
|
}
|
|
|
|
|
|
+ @Override
|
|
|
+ public void sendWechatMessage(String openId, TEquipment equipment, TCoinOrder coinOrder, String companyType) {
|
|
|
+ String accessToken = "";
|
|
|
+ try {
|
|
|
+ if(StringUtils.isEmpty(companyType) || companyType.equals("0")) {
|
|
|
+ TAdmin admin = R.getDataIfSuccess(szwlFeign.getAdmin("2738"));
|
|
|
+ accessToken = admin.getApiKey();
|
|
|
+ log.info("申泽的accessToken:{}", accessToken);
|
|
|
+ } else {
|
|
|
+ TAdmin admin = R.getDataIfSuccess(szwlFeign.getAdmin("2739"));
|
|
|
+ accessToken = admin.getApiKey();
|
|
|
+ log.info("七云的accessToken:{}", accessToken);
|
|
|
+ }
|
|
|
+ } catch (Exception e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ // 模板参数
|
|
|
+ Map<String, WeChatTemplateMsg> sendMag = new HashMap();
|
|
|
+ // 转换时间为String类型
|
|
|
+ SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
|
|
+ String payTime = format.format(coinOrder.getPayDate());
|
|
|
+ // 模版参数
|
|
|
+ if(StringUtils.isNotEmpty(equipment.getName())) {
|
|
|
+ if(equipment.getName().length() > 20) {
|
|
|
+ sendMag.put("thing15", new WeChatTemplateMsg(equipment.getName().substring(0, 15) + "..."));
|
|
|
+ } else {
|
|
|
+ sendMag.put("thing15", new WeChatTemplateMsg(equipment.getName()));
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ sendMag.put("thing15", new WeChatTemplateMsg(equipment.getClientId().substring(-6)));
|
|
|
+ }
|
|
|
+ if(coinOrder.getProductName().length() > 20) {
|
|
|
+ sendMag.put("thing37", new WeChatTemplateMsg(coinOrder.getProductName().substring(0, 15) + "..."));
|
|
|
+ } else {
|
|
|
+ sendMag.put("thing37", new WeChatTemplateMsg(coinOrder.getProductName()));
|
|
|
+ }
|
|
|
+ sendMag.put("character_string8", new WeChatTemplateMsg(coinOrder.getSn()));
|
|
|
+ sendMag.put("amount34", new WeChatTemplateMsg(coinOrder.getPrice().toString()));
|
|
|
+ sendMag.put("time36", new WeChatTemplateMsg(payTime));
|
|
|
+ RestTemplate restTemplate = new RestTemplate();
|
|
|
+ Map<String, Object> sendBody = new HashMap<>();
|
|
|
+ sendBody.put("touser", openId);
|
|
|
+ sendBody.put("topcolor", "#FF0000");
|
|
|
+ sendBody.put("data", sendMag);
|
|
|
+ if(StringUtils.isEmpty(companyType) || companyType.equals("0")) {
|
|
|
+ sendBody.put("template_id", SZ_TEMPLATE_ID);
|
|
|
+ } else {
|
|
|
+ sendBody.put("template_id", SC_TEMPLATE_ID);
|
|
|
+ }
|
|
|
+ sendMessage(accessToken, restTemplate, sendBody);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 发送微信消息
|
|
|
+ * @param accessToken
|
|
|
+ * @param restTemplate
|
|
|
+ * @param sendBody
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ private String sendMessage(String accessToken, RestTemplate restTemplate, Map<String, Object> sendBody) {
|
|
|
+ String sendUrl = "https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=" + accessToken;
|
|
|
+ ResponseEntity<String> forEntity = restTemplate.postForEntity(sendUrl, sendBody, String.class);
|
|
|
+ JSONObject jsonObject = JSONObject.parseObject(forEntity.getBody());
|
|
|
+ String messageCode = jsonObject.getString("errcode");
|
|
|
+ String msgId = jsonObject.getString("msgid");
|
|
|
+ System.out.println("messageCode : " + messageCode + ", msgId: " +msgId);
|
|
|
+ log.info("微信推送结果:{}","messageCode : " + messageCode + ", msgId: " +msgId);
|
|
|
+ return messageCode;
|
|
|
+ }
|
|
|
+
|
|
|
private List<NewCoinOrderTarget> exportCoinOrderData(TAdmin admin, List<TCoinOrder> coinOrders) {
|
|
|
ArrayList<NewCoinOrderTarget> list = new ArrayList<>();
|
|
|
Map<String, String> nameMap = new HashMap<>();
|