فهرست منبع

企业微信发送未填报工时提醒消息

yurk 3 سال پیش
والد
کامیت
68b48fe9fd

+ 4 - 2
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/WxCorpInfoService.java

@@ -1,10 +1,10 @@
 package com.management.platform.service;
 
-import com.management.platform.entity.WxCorpInfo;
+import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.management.platform.entity.WxCorpInfo;
 import com.management.platform.util.HttpRespMsg;
 
-import java.time.LocalDate;
 import java.time.LocalDateTime;
 
 /**
@@ -19,6 +19,8 @@ public interface WxCorpInfoService extends IService<WxCorpInfo> {
 
     public void sendWXCorpMsg(WxCorpInfo corpInfo, String corpUserid, String msg);
 
+    public void sendWXCorpTemplateMsg(WxCorpInfo corpInfo, String corpUserid, JSONObject msg);
+
     public String downloadFile(WxCorpInfo corpInfo, String mediaId);
 
     public String testDownloadFile();

+ 43 - 3
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/WxCorpInfoServiceImpl.java

@@ -3,6 +3,7 @@ package com.management.platform.service.impl;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.management.platform.controller.WeiXinCorpController;
 import com.management.platform.entity.SysConfig;
 import com.management.platform.entity.User;
@@ -13,7 +14,6 @@ import com.management.platform.mapper.UserCorpwxTimeMapper;
 import com.management.platform.mapper.UserMapper;
 import com.management.platform.mapper.WxCorpInfoMapper;
 import com.management.platform.service.WxCorpInfoService;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.management.platform.util.DateTimeUtil;
 import com.management.platform.util.HttpRespMsg;
 import lombok.extern.slf4j.Slf4j;
@@ -32,8 +32,6 @@ import java.util.ArrayList;
 import java.util.List;
 import java.util.stream.Collectors;
 
-import static org.mockito.ArgumentMatchers.startsWith;
-
 /**
  * <p>
  *  服务实现类
@@ -115,6 +113,48 @@ public class WxCorpInfoServiceImpl extends ServiceImpl<WxCorpInfoMapper, WxCorpI
 
     }
 
+    @Override
+    public void sendWXCorpTemplateMsg(WxCorpInfo corpInfo, String corpUserid, JSONObject msg) {
+        try {
+            log.info("发送企业微信模板消息==="+corpUserid);
+            System.out.println("发送企业微信模板消息==="+corpUserid);
+            String accessToken = getCorpAccessToken(corpInfo);
+            String url = URL_SEND_WXCORP_MSG.replaceAll("ACCESS_TOKEN", accessToken);
+            HttpHeaders headers = new HttpHeaders();
+            headers.setContentType(MediaType.APPLICATION_JSON);
+            JSONObject reqParam = new JSONObject();
+            reqParam.put("touser",  corpUserid);
+            reqParam.put("toparty", "");
+            reqParam.put("totag",  "");
+            reqParam.put("msgtype",  "template_msg");
+            reqParam.put("agentid",  corpInfo.getAgentid());
+            reqParam.put("template_msg",msg);
+
+            HttpEntity<String> requestEntity = new HttpEntity<String>(reqParam.toJSONString(), headers);
+            ResponseEntity<String> responseEntity = this.restTemplate.exchange(url,
+                    HttpMethod.POST, requestEntity, String.class);
+            if (responseEntity.getStatusCode() == HttpStatus.OK) {
+                String resp = responseEntity.getBody();
+                log.info("发送企业微信模板消息返回结果=="+resp);
+                System.out.println("发送企业微信模板消息返回结果=="+resp);
+                JSONObject json = JSONObject.parseObject(resp);
+                if (json.getIntValue("errcode") == 0) {
+                    //发送成功
+
+                } else {
+                    throw new Exception(json.toJSONString());
+                }
+            } else {
+                log.error("发送失败:"+responseEntity.getStatusCode()+", "+responseEntity.getBody());
+                System.err.println("发送失败:"+responseEntity.getStatusCode()+", "+responseEntity.getBody());
+            }
+
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+
+    }
+
     @Override
     public String downloadFile(WxCorpInfo corpInfo, String mediaId) {
         try {

+ 23 - 9
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/task/TimingTask.java

@@ -1,17 +1,15 @@
 package com.management.platform.task;
 
-import java.text.DecimalFormat;
-import java.time.LocalDate;
-import java.time.Period;
-import java.time.format.DateTimeFormatter;
-
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.management.platform.entity.*;
 import com.management.platform.mapper.*;
 import com.management.platform.service.CompanyDingdingService;
 import com.management.platform.service.DingDingService;
 import com.management.platform.service.WxCorpInfoService;
-import com.management.platform.util.*;
+import com.management.platform.util.RedisUtil;
+import com.management.platform.util.WorkDayCalculateUtils;
 import me.chanjar.weixin.mp.api.WxMpInMemoryConfigStorage;
 import me.chanjar.weixin.mp.api.WxMpService;
 import me.chanjar.weixin.mp.api.impl.WxMpServiceImpl;
@@ -19,14 +17,21 @@ import me.chanjar.weixin.mp.bean.template.WxMpTemplateData;
 import me.chanjar.weixin.mp.bean.template.WxMpTemplateMessage;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
-import org.springframework.format.annotation.DateTimeFormat;
 import org.springframework.scheduling.annotation.EnableScheduling;
 import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.stereotype.Component;
+import org.springframework.util.StringUtils;
 
 import javax.annotation.Resource;
+import java.text.DecimalFormat;
+import java.time.LocalDate;
 import java.time.LocalDateTime;
-import java.util.*;
+import java.time.Period;
+import java.time.format.DateTimeFormatter;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
 import java.util.stream.Collectors;
 
 /**
@@ -312,7 +317,16 @@ public class TimingTask {
                     if (u.get("corpwxUserid") != null) {
                         //推送到企业微信
                         String corpUid = (String) u.get("corpwxUserid");
-                        wxCorpInfoService.sendWXCorpMsg(cpList.get(0), corpUid, t.getAlertMsg());
+                        JSONObject json=new JSONObject();
+                        JSONArray dataJson=new JSONArray();
+                        JSONObject jsonObj=new JSONObject();
+                        jsonObj.put("key", "提醒");
+                        jsonObj.put("value", StringUtils.isEmpty(t.getAlertMsg())?"":t.getAlertMsg());
+                        dataJson.add(jsonObj);
+                        json.put("template_id","tty9TkCAAAYoevY-40ciWD5lDncDfR5w");
+                        json.put("url", " https://open.weixin.qq.com/connect/oauth2/authorize?appid=ww4e237fd6abb635af&redirect_uri=http://mobworktime.ttkuaiban.com/api/corpWXAuth&response_type=code&scope=snsapi_base&state=0#wechat_redirect");
+                        json.put("content_item",dataJson);
+                        wxCorpInfoService.sendWXCorpTemplateMsg(cpList.get(0), corpUid, json);
                     } else if (u.get("wxOpenid") != null) {
                         push(u, t.getAlertMsg());
                     }