huanghongfa
2021-08-04 b1577e1ac6356cc2477b19f3e148a15a796f9723
微信小程序订阅消息推送
19个文件已修改
4个文件已添加
829 ■■■■■ 已修改文件
springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/constants/WxSubscribeConstants.java 76 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/dtos/wx/TemplateData.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/dtos/wx/TemplateParam.java 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/dtos/wx/WxSubscribeDTO.java 60 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/ActivitySignVO.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/service/community/CommunityService.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/service/user/UserService.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/utlis/HttpUtils.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/utlis/WxUtil.java 268 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/utlis/WxXCXTempSend.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/community_backstage/src/main/java/com/panzhihua/community_backstage/api/CommunityActivityApi.java 100 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/community_backstage/src/main/java/com/panzhihua/community_backstage/api/CommunityManagerApi.java 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/community_backstage/src/main/java/com/panzhihua/community_backstage/api/CommunityPartyBuildingApi.java 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/api/CommunityApi.java 31 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/dao/ComActActSignDAO.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/ComActActivityService.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComActActivityServiceImpl.java 80 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComActMessageServiceImpl.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComSwPatrolRecordServiceImpl.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_user/src/main/java/com/panzhihua/service_user/api/UserApi.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_user/src/main/java/com/panzhihua/service_user/service/UserService.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_user/src/main/java/com/panzhihua/service_user/service/impl/UserServiceImpl.java 34 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/timejob/src/main/java/com/panzhihua/timejob/jobhandler/CommunityJobHandler.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/constants/WxSubscribeConstants.java
New file
@@ -0,0 +1,76 @@
package com.panzhihua.common.constants;
/**
 * 微信小程序订阅消息常量类
 */
public class WxSubscribeConstants {
    /**
     * 活动变更通知模板id
     */
    public static final String HDBG_ID = "WkyqgQbrQim4Q68uM4628Tb0FVCXR9JuleRWwOc-UTQ";
    /**
     * 作品点赞通知模板id
     */
    public static final String ZPDZ_ID = "xYpsRZLDO_M36B2WBPgZyBk51J-OEPWPAEA4labsL5I";
    /**
     * 留言回复通知模板id
     */
    public static final String LYHF_ID = "XhTPFPUoHrfZbNiIHO95pf5amYMYAPcB1HiHMKOIMXw";
    /**
     * 新动态发布提醒模板id
     */
    public static final String XDTFB_ID = "cRXVFlIqpqxMpjVvf5s5w8aK_P2run8buCeDxm6_5oA";
    /**
     * 新活动提醒模板id
     */
    public static final String XHDTX_ID = "fW5FkhdBsTrmDIFI10UbMa6pEUuLDyK8so3FAvdGoMQ";
    /**
     * 新的评论提醒模板id
     */
    public static final String PLTX_ID = "12cHm4epIrhDTlUYfGcoBD1Kbj7cv16EyBIYvFjV7BA";
    /**
     * 评论回复通知模板id
     */
    public static final String PLHF_ID = "WvSoXRTpx4JUW4YcvLbnk4xhttjQ_EPQSG2tF5DJ1OU";
    /**
     * 评论点赞通知模板id
     */
    public static final String PLDZ_ID = "7p9Dn0IQ0iCYB2JEm0c5nukc0lY90TKijzUlJjDfYqk";
    /**
     * 活动取消通知模板id
     */
    public static final String HDQX_ID = "K0HeNd4Za4Vh0oaihRbauLL9pNY69en0cCU1nzDRzv0";
    /**
     * 审核状态通知模板id
     */
    public static final String SHZT_ID = "IIEAp-7rmj0_Le_mBMK3X-aTRN7-b-bBdXq-pmJIhHo";
    /**
     * 认证审核通知模板id
     */
    public static final String EZSH_ID = "ZMCHtZn_XR118XnbKabF9DuYG5NKsvCfsr59_gIOAe0";
    /**
     * 调研问卷通知模板id
     */
    public static final String DYWJ_ID = "orfmflVy0RkVT-kIPUk8muikfFqJrK_47OjzM-OVINc";
    /**
     * 奖励发放通知模板id
     */
    public static final String JLFF_ID = "vuGJS9WYb0e_99lcoB8USqJk5emGJftbe-G0PjgEvjU";
    /**
     * 报名成功通知模板id
     */
    public static final String BMCG_ID = "NQbyd_2n-DX2urZVrUkAPYER-J5XY6VqIm6QvaYj0NY";
    /**
     * 活动即将开始通知模板id
     */
    public static final String HDJJKS_ID = "__0i0e8-yfDGW3jv3l-qobcWt23Ec3iZEdJhMV3nHWo";
    /**
     * 跳转小程序类型:developer为开发版;trial为体验版;formal为正式版;默认为正式版
     */
    public static final String MINIPROGRAM_STATE = "trial";
    /**
     * 订阅消息推送url
     */
    public static final String DYXX_URL = "https://api.weixin.qq.com/cgi-bin/message/subscribe/send?access_token=";
}
springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/dtos/wx/TemplateData.java
New file
@@ -0,0 +1,17 @@
package com.panzhihua.common.model.dtos.wx;
import lombok.Data;
@Data
public class TemplateData {
    private String value;
    public TemplateData(String value){
        this.value = value;
    }
    public TemplateData(){
    }
}
springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/dtos/wx/TemplateParam.java
New file
@@ -0,0 +1,22 @@
package com.panzhihua.common.model.dtos.wx;
import lombok.Data;
@Data
public class TemplateParam {
    private String key;
    private String value;
    public TemplateParam(String key,String value){
        this.key=key;
        this.value=value;
    }
    public TemplateParam(){
    }
}
springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/dtos/wx/WxSubscribeDTO.java
New file
@@ -0,0 +1,60 @@
package com.panzhihua.common.model.dtos.wx;
import com.panzhihua.common.utlis.StringUtils;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
@ApiModel("微信订阅消息请求参数")
@Data
public class WxSubscribeDTO {
    @ApiModelProperty("用户在小程序的openid")
    private String touser;
    @ApiModelProperty("所需下发的订阅模板id")
    private String template_id;
    @ApiModelProperty("点击模板卡片后的跳转页面,仅限本小程序内的页面。支持带参数,(示例index?foo=bar)。该字段不填则模板无跳转。")
    private String page;
    @ApiModelProperty("模板内容,格式形如 { \"key1\": { \"value\": any }, \"key2\": { \"value\": any } }")
    private Object data;
    @ApiModelProperty("跳转小程序类型:developer为开发版;trial为体验版;formal为正式版;默认为正式版")
    private String miniprogram_state;
    @ApiModelProperty("进入小程序查看”的语言类型,支持zh_CN(简体中文)、en_US(英文)、zh_HK(繁体中文)、zh_TW(繁体中文),默认为zh_CN")
    private String lang;
    private List<TemplateParam> templateParamList;
    public String toJSON() {
        StringBuffer buffer = new StringBuffer();
        buffer.append("{");
        buffer.append(String.format("\"touser\":\"%s\"", this.touser)).append(",");
        buffer.append(String.format("\"template_id\":\"%s\"", this.template_id)).append(",");
        if(StringUtils.isNotEmpty(this.page)){
            buffer.append(String.format("\"page\":\"%s\"", this.page)).append(",");
        }
        if(StringUtils.isNotEmpty(this.miniprogram_state)){
            buffer.append(String.format("\"miniprogram_state\":\"%s\"", this.miniprogram_state)).append(",");
        }
        buffer.append("\"data\":{");
        TemplateParam param = null;
        for (int i = 0; i < this.templateParamList.size(); i++) {
            param = templateParamList.get(i);
            // 判断是否追加逗号
            if (i < this.templateParamList.size() - 1) {
                buffer.append(String.format("\"%s\": {\"value\":\"%s\"},", param.getKey(), param.getValue()));
            } else {
                buffer.append(String.format("\"%s\": {\"value\":\"%s\"}", param.getKey(), param.getValue()));
            }
        }
        buffer.append("}");
        buffer.append("}");
        return buffer.toString();
    }
}
springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/ActivitySignVO.java
@@ -36,6 +36,8 @@
    private Integer type;
    @ApiModelProperty("人员主键")
    private Long userId;
    @ApiModelProperty("用户openid")
    private String openid;
    @ApiModelProperty(value = "分页-当前页数", example = "1")
    private Long pageNum = 1L;
    @ApiModelProperty(value = "分页-每页记录数", example = "10")
springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/service/community/CommunityService.java
@@ -4034,4 +4034,10 @@
    @PostMapping("/patrolRecord/rota/import")
    R listSaveSwRotaExcelVO(@RequestBody List<ComSwRotaExcelVO> list, @RequestParam("communityId") Long communityId);
    /**
     * 定时任务检测即将开始的社区活动,并使用订阅消息通知用户
     */
    @PostMapping("timedTaskActivityNotice")
    R timedTaskActivityNotice();
}
springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/service/user/UserService.java
@@ -774,4 +774,12 @@
    @GetMapping("getGridsMemberList")
    R getGridsMemberList(@RequestParam("communityId")Long communityId);
    /**
     * 根据用户id查询用户openid
     * @param userId    用户id
     * @return  openid
     */
    @GetMapping("getUserOpenId")
    R getUserOpenId(@RequestParam("userId")Long userId);
}
springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/utlis/HttpUtils.java
@@ -1,6 +1,9 @@
package com.panzhihua.common.utlis;
import com.alibaba.fastjson.JSONException;
import com.alibaba.fastjson.JSONObject;
import com.panzhihua.common.constants.Constants;
import com.panzhihua.common.model.dtos.wx.WxSubscribeDTO;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.util.ObjectUtils;
@@ -97,6 +100,12 @@
        return result.toString();
    }
    public static String wxMessageModeSendUrl(String token, WxSubscribeDTO subscribeDTO) throws Exception {
        String tmpurl = "https://api.weixin.qq.com/cgi-bin/message/subscribe/send?access_token=ACCESS_TOKEN";
        String url = tmpurl.replace("ACCESS_TOKEN", token);
        return HttpClientUtil.httpPost(url, subscribeDTO.toJSON());
    }
    public static String sendSSLPost(String url, String param)
springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/utlis/WxUtil.java
@@ -1,7 +1,12 @@
package com.panzhihua.common.utlis;
import cn.hutool.http.HttpUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.panzhihua.common.constants.WxSubscribeConstants;
import com.panzhihua.common.model.dtos.wx.TemplateParam;
import com.panzhihua.common.model.dtos.wx.WxSubscribeDTO;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileItemFactory;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
@@ -10,11 +15,15 @@
import org.springframework.web.multipart.commons.CommonsMultipartFile;
import java.io.*;
import java.math.BigDecimal;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@Slf4j
public class WxUtil {
    //客服消息推送地址
@@ -56,4 +65,263 @@
        return HttpClientUtil.httpPost(kf_url+"?access_token="+access_token,content);
    }
    /**
     * 订阅消息推送
     * @param accessToken   获取会话token
     * @return  消息推送结果
     */
    static void sendSubscribe(String accessToken,WxSubscribeDTO subscribeDTO) throws Exception{
        String resultString =  HttpUtils.wxMessageModeSendUrl(accessToken,subscribeDTO);
        JSONObject jsonResult = JSON.parseObject(resultString);
        if(jsonResult!=null){
            log.info("订阅消息推送返回参数" + jsonResult.toJSONString());
            int errorCode = jsonResult.getIntValue("errcode");
            String errorMessage = jsonResult.getString("errmsg");
            if(errorCode==0){
                log.info("订阅消息推送成功,openId:" + subscribeDTO.getTouser());
            }else{
                log.error("订阅消息发送失败,错误码:"+errorCode+",错误信息:"+errorMessage + "用户openid:" + subscribeDTO.getTouser());
            }
        }
    }
    /**
     * 随手拍奖励到账订阅消息推送
     * @param openId    用户openid
     * @param accessToken   token会话标识
     * @param name  随手拍活动标题
     * @param amount    奖励金额
     * @param remark    备注说明
     */
    public static void sendSubscribeJLDZ(String openId, String accessToken, String name, BigDecimal amount,String remark){
        WxSubscribeDTO subscribeDTO = new WxSubscribeDTO();
        subscribeDTO.setTouser(openId);
        subscribeDTO.setTemplate_id(WxSubscribeConstants.JLFF_ID);
        List<TemplateParam> paras=new ArrayList<TemplateParam>();
        paras.add(new TemplateParam("thing1",name));//活动名称
        paras.add(new TemplateParam("amount3",amount.toString()));//奖励金额
        paras.add(new TemplateParam("thing7",remark));//备注说明
        subscribeDTO.setTemplateParamList(paras);
        try {
            sendSubscribe(accessToken,subscribeDTO);
        }catch (Exception e){
            log.error("随手拍奖励到账订阅消息推送失败,失败原因:" + e.getMessage());
        }
    }
    /**
     * 活动报名成功订阅消息推送
     * @param openId    用户openid
     * @param accessToken   token会话标识
     * @param name  活动名称
     * @param address   活动地址
     * @param activityTime  活动时间
     * @param signTime  报名时间
     */
    public static void sendSubscribeSQHD(String openId, String accessToken, String name, String address,String activityTime,String signTime){
        WxSubscribeDTO subscribeDTO = new WxSubscribeDTO();
        subscribeDTO.setTouser(openId);
        subscribeDTO.setTemplate_id(WxSubscribeConstants.BMCG_ID);
        List<TemplateParam> paras=new ArrayList<TemplateParam>();
        paras.add(new TemplateParam("thing1",name));//活动名称
        paras.add(new TemplateParam("thing2",address));//活动地址
        paras.add(new TemplateParam("date3",activityTime));//活动时间
        paras.add(new TemplateParam("time8",signTime));//报名时间
        subscribeDTO.setTemplateParamList(paras);
        try {
            sendSubscribe(accessToken,subscribeDTO);
        }catch (Exception e){
            log.error("活动报名成功订阅消息推送失败,失败原因:" + e.getMessage());
        }
    }
    /**
     * 新问卷调查订阅消息通知
     * @param openId    用户openid
     * @param accessToken   token会话标识
     * @param name  活动名称
     * @param questionnaireName 问卷名称
     */
    public static void sendSubscribeDYWJ(String openId, String accessToken, String name, String questionnaireName){
        WxSubscribeDTO subscribeDTO = new WxSubscribeDTO();
        subscribeDTO.setTouser(openId);
        subscribeDTO.setTemplate_id(WxSubscribeConstants.DYWJ_ID);
        List<TemplateParam> paras=new ArrayList<TemplateParam>();
        paras.add(new TemplateParam("thing1",name));//活动名称
        paras.add(new TemplateParam("thing2",questionnaireName));//问卷名称
        subscribeDTO.setTemplateParamList(paras);
        try {
            sendSubscribe(accessToken,subscribeDTO);
        }catch (Exception e){
            log.error("新问卷调查订阅消息推送失败,失败原因:" + e.getMessage());
        }
    }
    /**
     * 认证审核订阅消息通知
     * @param openId    用户openid
     * @param accessToken   token会话标识
     * @param name  认证内容
     * @param applyTime 申请时间
     * @param result    审核结果
     */
    public static void sendSubscribeRZSH(String openId, String accessToken, String name, String applyTime,String result){
        WxSubscribeDTO subscribeDTO = new WxSubscribeDTO();
        subscribeDTO.setTouser(openId);
        subscribeDTO.setTemplate_id(WxSubscribeConstants.EZSH_ID);
        List<TemplateParam> paras=new ArrayList<TemplateParam>();
        paras.add(new TemplateParam("thing2",name));//认证内容
        paras.add(new TemplateParam("phrase1",result));//审核结果
        paras.add(new TemplateParam("date3",applyTime));//申请时间
        subscribeDTO.setTemplateParamList(paras);
        try {
            sendSubscribe(accessToken,subscribeDTO);
        }catch (Exception e){
            log.error("认证审核订阅消息推送失败,失败原因:" + e.getMessage());
        }
    }
    /**
     *  随手拍、邻里圈、微心愿、房源审核状态进度通知
     * @param openId    用户openid
     * @param accessToken   token会话标识
     * @param name  审核项目
     * @param applyTime 审核状态
     * @param result    审核时间
     */
    public static void sendSubscribeSHZT(String openId, String accessToken, String name, String applyTime,String result){
        WxSubscribeDTO subscribeDTO = new WxSubscribeDTO();
        subscribeDTO.setTouser(openId);
        subscribeDTO.setTemplate_id(WxSubscribeConstants.SHZT_ID);
        List<TemplateParam> paras=new ArrayList<TemplateParam>();
        paras.add(new TemplateParam("thing1",name));//审核项目
        paras.add(new TemplateParam("phrase2",result));//审核状态
        paras.add(new TemplateParam("time3",applyTime));//审核时间
        subscribeDTO.setTemplateParamList(paras);
        try {
            sendSubscribe(accessToken,subscribeDTO);
        }catch (Exception e){
            log.error("审核状态订阅消息推送失败,失败原因:" + e.getMessage());
        }
    }
    /**
     * 社区活动取消通知
     * @param openId    用户openid
     * @param accessToken   token会话标识
     * @param name  活动名称
     * @param time  活动时间
     */
    public static void sendSubscribeHDQX(String openId, String accessToken, String name, String time){
        WxSubscribeDTO subscribeDTO = new WxSubscribeDTO();
        subscribeDTO.setTouser(openId);
        subscribeDTO.setTemplate_id(WxSubscribeConstants.HDQX_ID);
        List<TemplateParam> paras=new ArrayList<TemplateParam>();
        paras.add(new TemplateParam("thing1",name));//活动标题
        paras.add(new TemplateParam("date2",time));//活动时间
        subscribeDTO.setTemplateParamList(paras);
        try {
            sendSubscribe(accessToken,subscribeDTO);
        }catch (Exception e){
            log.error("活动取消订阅消息推送失败,失败原因:" + e.getMessage());
        }
    }
    /**
     * 留言回复订阅消息通知
     * @param openId    用户openid
     * @param accessToken   token会话标识
     * @param name  回复人名称
     * @param time  回复时间
     * @param content   回复内容
     */
    public static void sendSubscribeLYHF(String openId, String accessToken, String name, String time,String content){
        WxSubscribeDTO subscribeDTO = new WxSubscribeDTO();
        subscribeDTO.setTouser(openId);
        subscribeDTO.setTemplate_id(WxSubscribeConstants.LYHF_ID);
        List<TemplateParam> paras=new ArrayList<TemplateParam>();
        paras.add(new TemplateParam("thing3",content));//回复内容
        paras.add(new TemplateParam("name1",name));//回复者
        paras.add(new TemplateParam("date2",time));//回复时间
        subscribeDTO.setTemplateParamList(paras);
        try {
            sendSubscribe(accessToken,subscribeDTO);
        }catch (Exception e){
            log.error("留言回复订阅消息推送失败,失败原因:" + e.getMessage());
        }
    }
    /**
     *  活动变更订阅消息通知
     * @param openId    用户openid
     * @param accessToken   token会话标识
     * @param name  活动名称
     * @param changeTime    活动时间变更
     * @param changeAddress 活动地点变更
     * @param time  活动时间
     * @param address   活动地点
     */
    public static void sendSubscribeHDBG(String openId, String accessToken, String name, String changeTime,String changeAddress,String time,String address){
        WxSubscribeDTO subscribeDTO = new WxSubscribeDTO();
        subscribeDTO.setTouser(openId);
        subscribeDTO.setTemplate_id(WxSubscribeConstants.HDBG_ID);
        List<TemplateParam> paras=new ArrayList<TemplateParam>();
        paras.add(new TemplateParam("thing1",name));//活动名称
        paras.add(new TemplateParam("time2",changeTime));//活动时间变更
        paras.add(new TemplateParam("thing3",changeAddress));//地址变更
        paras.add(new TemplateParam("time5",time));//活动时间
        paras.add(new TemplateParam("thing6",address));//活动地点
        subscribeDTO.setTemplateParamList(paras);
        try {
            sendSubscribe(accessToken,subscribeDTO);
        }catch (Exception e){
            log.error("留言回复订阅消息推送失败,失败原因:" + e.getMessage());
        }
    }
    /**
     *  活动即将开始订阅消息通知
     * @param openId    用户openid
     * @param accessToken   token会话标识
     * @param name  活动名称
     * @param time  活动时间
     * @param address   活动地点
     * @param num   活动参加人数
     */
    public static void sendSubscribeHDJJKS(String openId, String accessToken, String name, String time,String address,String num){
        WxSubscribeDTO subscribeDTO = new WxSubscribeDTO();
        subscribeDTO.setTouser(openId);
        subscribeDTO.setTemplate_id(WxSubscribeConstants.HDJJKS_ID);
        List<TemplateParam> paras=new ArrayList<TemplateParam>();
        paras.add(new TemplateParam("thing1",name));//活动名称
        paras.add(new TemplateParam("date2",time));//活动时间
        paras.add(new TemplateParam("number3",num));//参与人数
        paras.add(new TemplateParam("thing4",address));//活动地点
        subscribeDTO.setTemplateParamList(paras);
        try {
            sendSubscribe(accessToken,subscribeDTO);
        }catch (Exception e){
            log.error("活动即将开始订阅消息推送失败,失败原因:" + e.getMessage());
        }
    }
    public static void main(String[] args) {
        WxXCXTempSend util = new WxXCXTempSend();
        try {
//            String openId = "oMIR-5S9rpsWAVUUrNKoVDQbn5Mw";//zj的openid
            String openId = "oMIR-5dWyNyWCCKMl7-kYzvyHOjs";//lyq的openid
            String accessToken = util.getAppAccessToken();
//            sendSubscribeHDJJKS(openId,accessToken,"测试活动即将开始标题","2021-08-04 13:00:00","成都市","50");//活动即将开始
//            sendSubscribeHDQX(openId,accessToken,"取消活动测试标题","2021-08-04 13:00:00");//活动取消
//            sendSubscribeHDBG(openId,accessToken,"活动名称","2021-08-05","活动变更地址","2021-08-06","活动地址");//活动变更
//            sendSubscribeRZSH(openId,accessToken,"用户认证审核通知","2021-08-04","通过");//认证审核
//            sendSubscribeJLDZ(openId,accessToken,"随手拍活动DDD",BigDecimal.TEN,"用户参加随手拍活动奖励");//奖励到账
//            sendSubscribeLYHF(openId,accessToken,"社区管理员","2021-08-04 11:26:20","勇敢牛牛 不怕困难!");//留言回复
//            sendSubscribeSHZT(openId,accessToken,"随手拍审核!!","2021-08-04 11:20:00","通过了");//审核状态
        }catch (Exception e){
            System.out.println("错误错误!!!");
        }
    }
}
springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/utlis/WxXCXTempSend.java
@@ -63,7 +63,7 @@
        return getAppAccessToken();
    }
    private String getAppAccessToken() throws Exception{
    public String getAppAccessToken() throws Exception{
        String accessToken = "0";
        try {
            //此处APP_ID APP_SECRET  在微信小程序后端可见
springcloud_k8s_panzhihuazhihuishequ/community_backstage/src/main/java/com/panzhihua/community_backstage/api/CommunityActivityApi.java
@@ -12,6 +12,9 @@
import com.panzhihua.common.model.vos.user.SysUserNoticeVO;
import com.panzhihua.common.service.community.CommunityService;
import com.panzhihua.common.service.user.UserService;
import com.panzhihua.common.utlis.DateUtils;
import com.panzhihua.common.utlis.WxUtil;
import com.panzhihua.common.utlis.WxXCXTempSend;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiOperation;
@@ -122,29 +125,39 @@
            if (!R.isOk(r3)) {
                Object data = r3.getData();
                ComActActivityVO comActActivityVO = JSONObject.parseObject(JSONObject.toJSONString(data), ComActActivityVO.class);
                R r1 = communityService.listActivitySign(activitySignVO);
                R r1 = communityService.listActivitySigns(activitySignVO);
                if (R.isOk(r1)) {
                    List<ActivitySignVO> activitySignVOS = JSONArray.parseArray(JSONArray.toJSONString(r1.getData()), ActivitySignVO.class);
                    if (!ObjectUtils.isEmpty(activitySignVOS)) {
                        activitySignVOS.forEach(activitySignVO1 -> {
                            Long aLong = activitySignVO1.getId();
                            int isVolunteer = activitySignVO1.getIsVolunteer().intValue();
                            SysUserNoticeVO sysUserNoticeVO = new SysUserNoticeVO();
                            sysUserNoticeVO.setUserId(aLong);
                            sysUserNoticeVO.setType(1);
                            sysUserNoticeVO.setTitle("活动因故取消");
                            sysUserNoticeVO.setBusinessType(1);
                            sysUserNoticeVO.setBusinessTitle(comActActivityVO.getActivityName());
                            sysUserNoticeVO.setBusinessContent(String.format("取消原因%s", comActActivityVO.getCancelReason()));
                            sysUserNoticeVO.setBusinessId(id);
                            sysUserNoticeVO.setStatus(0);
                            sysUserNoticeVO.setBusinessStatus(1);
                            sysUserNoticeVO.setActivityType(1 == isVolunteer ? 1 : 2);
                            R r2 = userService.addNotice(sysUserNoticeVO);
                            if (R.isOk(r2)) {
                                log.info("新增取消社区活动通知成功【{}】", JSONObject.toJSONString(sysUserNoticeVO));
                            }
                        });
                        try {
                            WxXCXTempSend util = new WxXCXTempSend();
                            String accessToken = util.getAppAccessToken();
                            //遍历参与活动人员列表
                            activitySignVOS.forEach(activitySignVO1 -> {
                                Long aLong = activitySignVO1.getId();
                                int isVolunteer = activitySignVO1.getIsVolunteer().intValue();
                                SysUserNoticeVO sysUserNoticeVO = new SysUserNoticeVO();
                                sysUserNoticeVO.setUserId(aLong);
                                sysUserNoticeVO.setType(1);
                                sysUserNoticeVO.setTitle("活动因故取消");
                                sysUserNoticeVO.setBusinessType(1);
                                sysUserNoticeVO.setBusinessTitle(comActActivityVO.getActivityName());
                                sysUserNoticeVO.setBusinessContent(String.format("取消原因%s", comActActivityVO.getCancelReason()));
                                sysUserNoticeVO.setBusinessId(id);
                                sysUserNoticeVO.setStatus(0);
                                sysUserNoticeVO.setBusinessStatus(1);
                                sysUserNoticeVO.setActivityType(1 == isVolunteer ? 1 : 2);
                                R r2 = userService.addNotice(sysUserNoticeVO);
                                if (R.isOk(r2)) {
                                    log.info("新增取消社区活动通知成功【{}】", JSONObject.toJSONString(sysUserNoticeVO));
                                }
                                //取消社区活动推送订阅消息给用户
                                WxUtil.sendSubscribeHDQX(activitySignVO1.getOpenid(),accessToken,comActActivityVO.getActivityName(), DateUtils.format(comActActivityVO.getBeginAt(),DateUtils.ymdhms_format));
                            });
                        }catch (Exception e){
                            log.error("新增取消社区活动通知失败,错误原因:" + e.getMessage());
                        }
                    }
                }
            }
@@ -297,6 +310,8 @@
                R r1 = communityService.detailMicroWish(id, userId);
                Object data = r1.getData();
                ComActMicroWishVO comActMicroWishVO1 = JSONObject.parseObject(JSONObject.toJSONString(data), ComActMicroWishVO.class);
                //查询用户openid
                R userResult = userService.getUserOpenId(id);
                if (R.isOk(r1)) {
                    SysUserNoticeVO sysUserNoticeVO = new SysUserNoticeVO();
                    sysUserNoticeVO.setUserId(comActMicroWishVO1.getSponsorId());
@@ -313,6 +328,16 @@
                        R r2 = userService.addNotice(sysUserNoticeVO);
                        if (R.isOk(r2)) {
                            log.info("新增微心愿未通过审核通知成功【{}】", JSONObject.toJSONString(sysUserNoticeVO));
                        }
                        if(R.isOk(userResult)){
                            String openid = userResult.getData().toString();
                            WxXCXTempSend util = new WxXCXTempSend();
                            try {
                                WxUtil.sendSubscribeSHZT(openid,util.getAppAccessToken(),"微心愿审核失败"
                                        , DateUtils.format(comActMicroWishVO1.getExamineAt(),DateUtils.ymdhms_format),comActMicroWishVO1.getRejectReason());
                            }catch (Exception e){
                                log.error("消息推送失败,失败原因:" + e.getMessage());
                            }
                        }
                    } else if (type.intValue() == 5) {
                        sysUserNoticeVO.setTitle("微心愿已完成");
@@ -343,6 +368,16 @@
                    if(type.equals(1)){//审核通过给用户增加积分
                        communityService.addIntegralTradeAdmin(new AddComActIntegralUserDTO(id,AddComActIntegralUserDTO.integralType.fbwxy
                                ,this.getCommunityId(),comActMicroWishVO1.getSponsorId()));
                        if(R.isOk(userResult)){
                            String openid = userResult.getData().toString();
                            WxXCXTempSend util = new WxXCXTempSend();
                            try {
                                WxUtil.sendSubscribeSHZT(openid,util.getAppAccessToken(),"微心愿审核"
                                        , DateUtils.format(comActMicroWishVO1.getExamineAt(),DateUtils.ymdhms_format),"审核通过");
                            }catch (Exception e){
                                log.error("消息推送失败,失败原因:" + e.getMessage());
                            }
                        }
                    }
                }
            }
@@ -386,6 +421,8 @@
                sysUserNoticeVO.setBusinessTime(comActEasyPhotoVO1.getExamineAt());
                sysUserNoticeVO.setBusinessId(id);
                sysUserNoticeVO.setStatus(0);
                //查询用户openid
                R userResult = userService.getUserOpenId(comActEasyPhotoVO1.getSponsorId());
                if (type.intValue() == 2) {
                    sysUserNoticeVO.setBusinessTitle(comActEasyPhotoVO1.getDetail());
                    sysUserNoticeVO.setTitle("随手拍未通过审核");
@@ -394,6 +431,17 @@
                    R r2 = userService.addNotice(sysUserNoticeVO);
                    if (R.isOk(r2)) {
                        log.info("新增随手拍未通过审核通知成功【{}】", JSONObject.toJSONString(sysUserNoticeVO));
                    }
                    if(R.isOk(userResult)){
                        String openid = userResult.getData().toString();
                        WxXCXTempSend util = new WxXCXTempSend();
                        try {
                            WxUtil.sendSubscribeSHZT(openid,util.getAppAccessToken(),"随手拍审核失败"
                                    , DateUtils.format(comActEasyPhotoVO1.getExamineAt(),DateUtils.ymdhms_format),comActEasyPhotoVO.getRejectReason());
                        }catch (Exception e){
                            log.error("消息推送失败,失败原因:" + e.getMessage());
                        }
                    }
                } else if (type.intValue() == 3) {
                    sysUserNoticeVO.setTitle("随手拍有反馈");
@@ -409,6 +457,18 @@
                if(type.equals(1)){//审核通过给用户增加积分
                    communityService.addIntegralTradeAdmin(new AddComActIntegralUserDTO(id,AddComActIntegralUserDTO.integralType.fbssp
                            ,this.getCommunityId(),comActEasyPhotoVO1.getSponsorId()));
                    //审核通过发送订阅消息给用户
                    if(R.isOk(userResult)){
                        String openid = userResult.getData().toString();
                        WxXCXTempSend util = new WxXCXTempSend();
                        try {
                            WxUtil.sendSubscribeSHZT(openid,util.getAppAccessToken(),"随手拍审核"
                                    , DateUtils.format(comActEasyPhotoVO1.getExamineAt(),DateUtils.ymdhms_format),"审核通过");
                        }catch (Exception e){
                            log.error("消息推送失败,失败原因:" + e.getMessage());
                        }
                    }
                }
            }
        }
springcloud_k8s_panzhihuazhihuishequ/community_backstage/src/main/java/com/panzhihua/community_backstage/api/CommunityManagerApi.java
@@ -20,8 +20,7 @@
import com.panzhihua.common.model.vos.user.SysUserNoticeVO;
import com.panzhihua.common.service.community.CommunityService;
import com.panzhihua.common.service.user.UserService;
import com.panzhihua.common.utlis.FileUtil;
import com.panzhihua.common.utlis.SFTPUtil;
import com.panzhihua.common.utlis.*;
import com.panzhihua.common.validated.AddGroup;
import com.panzhihua.community_backstage.easyexcel.UploadEexcelUserDTOListener;
import com.panzhihua.community_backstage.excel.CustomSheetWriteHandler;
@@ -407,6 +406,9 @@
            sysUserNoticeVO.setUserId(comMngVolunteerMngVO1.getSubmitUserId());
            sysUserNoticeVO.setBusinessTime(date);
            sysUserNoticeVO.setStatus(0);
            //查询用户openid
            R userResult = userService.getUserOpenId(comMngVolunteerMngVO1.getSubmitUserId());
            if (state==2) {//通过
//                修改用户志愿者审核状态
                //String phone = comMngVolunteerMngVO1.getPhone();
@@ -424,6 +426,17 @@
                if (R.isOk(r2)) {
                    log.info("新增志愿者申请通过审核通知成功【{}】", JSONObject.toJSONString(sysUserNoticeVO));
                }
                if(R.isOk(userResult)){
                    String openid = userResult.getData().toString();
                    WxXCXTempSend util = new WxXCXTempSend();
                    try {
                        WxUtil.sendSubscribeRZSH(openid,util.getAppAccessToken(),"用户志愿者审核"
                                , DateUtils.format(comMngVolunteerMngVO1.getCreateAt(),DateUtils.ymdhms_format),"审核通过");
                    }catch (Exception e){
                        log.error("消息推送失败,失败原因:" + e.getMessage());
                    }
                }
            }else if(state==3){ //驳回
                sysUserNoticeVO.setTitle("志愿者申请未通过");
                sysUserNoticeVO.setBusinessContent(String.format("驳回原因:%s",comMngVolunteerMngVO1.getRejectReson()));
@@ -432,6 +445,17 @@
                if (R.isOk(r2)) {
                    log.info("新增志愿者申请未通过通知成功【{}】", JSONObject.toJSONString(sysUserNoticeVO));
                }
                if(R.isOk(userResult)){
                    String openid = userResult.getData().toString();
                    WxXCXTempSend util = new WxXCXTempSend();
                    try {
                        WxUtil.sendSubscribeRZSH(openid,util.getAppAccessToken(),"用户志愿者审核失败"
                                , DateUtils.format(comMngVolunteerMngVO1.getCreateAt(),DateUtils.ymdhms_format),comMngVolunteerMngVO1.getRejectReson());
                    }catch (Exception e){
                        log.error("消息推送失败,失败原因:" + e.getMessage());
                    }
                }
            }
        }
        return r;
springcloud_k8s_panzhihuazhihuishequ/community_backstage/src/main/java/com/panzhihua/community_backstage/api/CommunityPartyBuildingApi.java
@@ -25,7 +25,10 @@
import com.panzhihua.common.service.community.CommunityService;
import com.panzhihua.common.service.partybuilding.PartyBuildingService;
import com.panzhihua.common.service.user.UserService;
import com.panzhihua.common.utlis.DateUtils;
import com.panzhihua.common.utlis.SFTPUtil;
import com.panzhihua.common.utlis.WxUtil;
import com.panzhihua.common.utlis.WxXCXTempSend;
import com.panzhihua.common.validated.AddGroup;
import com.panzhihua.community_backstage.excel.CustomSheetWriteHandler;
import com.panzhihua.community_backstage.listen.PartyBuildingMemberExcelListen;
@@ -307,7 +310,7 @@
        if (R.isOk(r)) {
            R r1 = partyBuildingService.selectAllPartyBuildingActivityMembers(id);
            if (R.isOk(r1)) {
                List<Long> userIds = (List<Long>) r1.getData();
                List<Long> userIds = JSONArray.parseArray(JSONArray.toJSONString(r1.getData()), Long.class);
                userIds.forEach(aLong -> {
                    SysUserNoticeVO sysUserNoticeVO = new SysUserNoticeVO();
                    sysUserNoticeVO.setUserId(aLong);
@@ -591,6 +594,17 @@
                        log.info("新增党员认证已被审核通知成功【{}】", JSONObject.toJSONString(sysUserNoticeVO));
                    }
                }
                R r1 = userService.getUserOpenId(userId);
                if(R.isOk(r1)){
                    String openid = r1.getData().toString();
                    WxXCXTempSend util = new WxXCXTempSend();
                    try {
                        WxUtil.sendSubscribeRZSH(openid,util.getAppAccessToken(),"用户党员认证", DateUtils.format(vo1.getCreateAt(),DateUtils.ymdhms_format),"审核通过");
                    }catch (Exception e){
                        log.error("消息推送失败,失败原因:" + e.getMessage());
                    }
                }
                return r;
            } else if (3 == partyBuildingMemberVO.getAuditResult() && R.isOk(updated)) {
                R r = userService.updateUserNotPartymember(userIdcard);
@@ -609,6 +623,17 @@
                    if (R.isOk(r1)) {
                        log.info("新增党员认证已被审核通知成功【{}】", JSONObject.toJSONString(sysUserNoticeVO));
                    }
                    R r2 = userService.getUserOpenId(userId);
                    if(R.isOk(r2)){
                        String openid = r2.getData().toString();
                        WxXCXTempSend util = new WxXCXTempSend();
                        try {
                            WxUtil.sendSubscribeRZSH(openid,util.getAppAccessToken(),"用户党员认证失败", DateUtils.format(vo1.getCreateAt(),DateUtils.ymdhms_format),partyBuildingMemberVO.getRefuseReason());
                        }catch (Exception e){
                            log.error("消息推送失败,失败原因:" + e.getMessage());
                        }
                    }
                }
                return r;
            }
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/api/CommunityApi.java
@@ -20,6 +20,7 @@
import com.panzhihua.common.model.vos.user.UserPhoneVO;
import com.panzhihua.common.service.user.UserService;
import com.panzhihua.common.utlis.*;
import com.panzhihua.service_community.dao.ComActActSignDAO;
import com.panzhihua.service_community.dao.ComEldersAuthHistoryRecordMapper;
import com.panzhihua.service_community.dao.ComMngPopulationDAO;
import com.panzhihua.service_community.model.dos.*;
@@ -34,10 +35,7 @@
import javax.annotation.Resource;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.Date;
import java.util.List;
import java.util.*;
import java.util.stream.Collectors;
/**
@@ -82,6 +80,8 @@
    private EldersAuthService eldersAuthService;
    @Resource
    public ComMngPopulationDAO comMngPopulationDAO;
    @Resource
    private ComActActSignDAO comActActSignDAO;
    @Resource
    public ComEldersAuthUserService comEldersAuthUserService;
    @Resource
@@ -1704,8 +1704,21 @@
            if (R.isOk(r1)) {
                log.info("新增用户报名党建活动通知成功【{}】", JSONObject.toJSONString(sysUserNoticeVO));
            }
        }
            //用户高龄认证反馈,推送订阅消息给用户
            Map<String,String> map = comActActSignDAO.getUserOpenId(eldersAuthDO.getSumitUserId());
            if(map != null){
                String openid = map.get("openid");
                try {
                    WxXCXTempSend util = new WxXCXTempSend();
                    String accessToken = util.getAppAccessToken();
                    WxUtil.sendSubscribeRZSH(openid,accessToken,"高龄认证"
                            ,DateUtils.format(eldersAuthDO.getCreateAt(),DateUtils.ymdhms_format),eldersAuthFeedbackAddDTO.getFeedBack());
                }catch (Exception e){
                    log.error("推送审核状态订阅消息失败,失败原因:" + e.getMessage());
                }
            }
        }
        return addR;
    }
@@ -1790,5 +1803,13 @@
        return comActEasyPhotoService.readUserReward(userId,communityId);
    }
    /**
     * 定时任务检测即将开始的社区活动,并使用订阅消息通知用户
     */
    @PostMapping("timedTaskActivityNotice")
    public R timedTaskActivityNotice(){
        return comActActivityService.timedTaskActivityNotice();
    }
}
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/dao/ComActActSignDAO.java
@@ -12,6 +12,7 @@
import org.apache.ibatis.annotations.Select;
import java.util.List;
import java.util.Map;
/**
 * @program: springcloud_k8s_panzhihuazhihuishequ
@@ -67,6 +68,7 @@
            "u.nick_name, " +
            "case WHEN u.is_partymember = 1 THEN '党员' WHEN a.is_volunteer = 1 THEN '志愿者' ELSE '居民' END identity, " +
            "u.phone, " +
            "u.openid, " +
            "a.create_at,  " +
            "a.is_volunteer  " +
            "FROM " +
@@ -120,4 +122,7 @@
            " </if> " +
            " </script>")
    IPage<ActActivityPeopleListVO> getActActivityPeopleList(Page page,@Param("activityPeopleListDTO") ScreenActActivityPeopleListDTO activityPeopleListDTO);
    @Select("select openid from sys_user where user_id = #{userId}")
    Map<String,String> getUserOpenId(@Param("userId")Long userId);
}
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/ComActActivityService.java
@@ -121,4 +121,9 @@
    R getActActivityPeopleList(ScreenActActivityPeopleListDTO activityPeopleListDTO);
    /**
     * 定时任务检测即将开始的社区活动,并始用订阅消息通知用户
     */
    R timedTaskActivityNotice();
}
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComActActivityServiceImpl.java
@@ -16,6 +16,8 @@
import com.panzhihua.common.model.vos.community.*;
import com.panzhihua.common.model.vos.community.screen.work.ActActivityListVO;
import com.panzhihua.common.service.user.UserService;
import com.panzhihua.common.utlis.WxUtil;
import com.panzhihua.common.utlis.WxXCXTempSend;
import com.panzhihua.service_community.dao.ComActActSignDAO;
import com.panzhihua.service_community.dao.ComActActivityDAO;
import com.panzhihua.service_community.dao.ComActDiscussOptionUserDAO;
@@ -24,15 +26,13 @@
import com.panzhihua.service_community.service.ComActActivityService;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.time.DateUtils;
import org.checkerframework.checker.units.qual.A;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import org.springframework.util.ObjectUtils;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
import java.util.*;
import java.util.stream.Collectors;
import java.util.stream.Stream;
@@ -94,7 +94,34 @@
     */
    @Override
    public R putActivity(ComActActivityVO comActActivityVO) {
        ComActActivityDO comActActivityDO=new ComActActivityDO();
        ComActActivityDO comActActivityDO = this.comActActivityDAO.selectById(comActActivityVO.getId());
        if(comActActivityDO == null){
            return R.fail("未找到社区活动");
        }
        if(!comActActivityDO.getActivityAddr().equals(comActActivityVO.getActivityAddr()) || !comActActivityDO.getBeginAt().equals(comActActivityVO.getBeginAt())){
            //修改活动开始时间与活动地点需要推送订阅消息给用户
            ActivitySignVO activitySignVO = new ActivitySignVO();
            activitySignVO.setId(comActActivityVO.getId());
            List<ActivitySignVO> activitySignVOS = comActActSignDAO.listActivitySigns(activitySignVO);
            if(!activitySignVOS.isEmpty()){
                try {
                    WxXCXTempSend util = new WxXCXTempSend();
                    String accessToken = util.getAppAccessToken();
                    activitySignVOS.forEach(activitySignVO1 -> {
                        //变更社区活动推送订阅消息给用户
                        WxUtil.sendSubscribeHDBG(activitySignVO1.getOpenid(),accessToken,comActActivityVO.getActivityName()
                                , com.panzhihua.common.utlis.DateUtils.format(comActActivityDO.getBeginAt()
                                        , com.panzhihua.common.utlis.DateUtils.ymdhms_format),comActActivityDO.getActivityAddr(),
                                com.panzhihua.common.utlis.DateUtils.format(comActActivityVO.getBeginAt()
                                        , com.panzhihua.common.utlis.DateUtils.ymdhms_format),comActActivityVO.getActivityAddr());
                    });
                }catch (Exception e){
                    log.error("消息推送失败,失败原因:" + e.getMessage());
                }
            }
        }
        BeanUtils.copyProperties(comActActivityVO,comActActivityDO);
        //结束时间大于当前时间则设置为“进行中”
@@ -500,14 +527,43 @@
        return dates;
    }
    public static void main(String[] args) {
        List<Date> dates=new ArrayList<>();
        Date date=new Date();
        for(int i=6;i>=0;i--){
            Date date1= DateUtils.addDays(date,-i);
            dates.add(date1);
    /**
     * 定时任务检测即将开始的社区活动,并使用订阅消息通知用户
     */
    @Override
    public R timedTaskActivityNotice(){
        //查询所有即将开始的活动
        List<ComActActivityDO> actActivityList = comActActivityDAO.selectList(new QueryWrapper<ComActActivityDO>().lambda()
                .le(ComActActivityDO::getBeginAt, DateUtils.addDays(new Date(),1)));
        if(!actActivityList.isEmpty()){
            WxXCXTempSend util = new WxXCXTempSend();
            try {
                String accessToken = util.getAppAccessToken();
                actActivityList.forEach(actActivity -> {
                    //查询报名活动人员列表
                    List<ComActActSignDO> actSignList = comActActSignDAO.selectList(new QueryWrapper<ComActActSignDO>().lambda()
                            .eq(ComActActSignDO::getActivityId,actActivity.getId()));
                    actSignList.forEach(actSign -> {
                        //查询用户openId
                        Map<String,String> map = comActActSignDAO.getUserOpenId(actSign.getUserId());
                        if(map != null){
                            String openid = map.get("openid");
                            //推送消息
                            WxUtil.sendSubscribeHDJJKS(openid,accessToken,actActivity.getActivityName()
                                    , com.panzhihua.common.utlis.DateUtils.format(actActivity.getBeginAt()
                                            ,com.panzhihua.common.utlis.DateUtils.ymdhms_format),actActivity.getActivityAddr()
                                    ,actSignList.size()+"");
                        }
                    });
                });
            }catch (Exception e){
                log.error("推送失败,错误原因:" + e.getMessage());
            }
        }
        System.out.println(dates);
        return R.ok();
    }
}
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComActMessageServiceImpl.java
@@ -2,9 +2,14 @@
import java.util.Date;
import java.util.List;
import java.util.Map;
import javax.annotation.Resource;
import com.panzhihua.common.utlis.DateUtils;
import com.panzhihua.common.utlis.WxUtil;
import com.panzhihua.common.utlis.WxXCXTempSend;
import com.panzhihua.service_community.dao.ComActActSignDAO;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import org.springframework.util.ObjectUtils;
@@ -35,6 +40,8 @@
    private ComActMessageDAO comActMessageDAO;
    @Resource
    private ComActMessageBackDAO comActMessageBackDAO;
    @Resource
    private ComActActSignDAO comActActSignDAO;
    @Override
    public R addMessage(ComActMessageVO comActMessageVO) {
@@ -186,6 +193,19 @@
            ComActMessageDO selectById = comActMessageDAO.selectById(comActMessageBackDO.getMsgId());
            selectById.setStatus(2);
            comActMessageDAO.updateById(selectById);
            //回复成功给用户推送订阅消息
            Map<String,String> map = comActActSignDAO.getUserOpenId(selectById.getUserId());
            if(map != null){
                String openid = map.get("openid");
                WxXCXTempSend util = new WxXCXTempSend();
                try {
                    WxUtil.sendSubscribeLYHF(openid,util.getAppAccessToken(),comActMessageBackVO.getUserName()
                            , DateUtils.format(comActMessageBackVO.getCreateAt(),DateUtils.ymdhms_format),comActMessageBackVO.getMsgContent());
                }catch (Exception e){
                    log.error("消息推送失败,失败原因:" + e.getMessage());
                }
            }
            return R.ok();
        }
        return R.fail();
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComSwPatrolRecordServiceImpl.java
@@ -119,6 +119,7 @@
                comSwDangerReportDO.setStatus(String.valueOf(SafeWordStatusEnum.DCL.getCode()));
            }
            BeanUtils.copyProperties(comSwPatrolRecordAddDTO, comSwDangerReportDO);
            comSwDangerReportDO.setDagerDescription(comSwPatrolRecordAddDTO.getDangerDescription());
            comSwDangerReportDO.setPersonName(comSwPatrolRecordAddDTO.getDPersonName());
            comSwDangerReportDO.setPersonPhone(comSwPatrolRecordAddDTO.getDPersonPhone());
            comSwDangerReportDAO.insert(comSwDangerReportDO);
springcloud_k8s_panzhihuazhihuishequ/service_user/src/main/java/com/panzhihua/service_user/api/UserApi.java
@@ -988,4 +988,14 @@
        return userService.getGridsMemberList(communityId);
    }
    /**
     * 根据用户id查询用户openid
     * @param userId    用户id
     * @return  openid
     */
    @GetMapping("getUserOpenId")
    public R getUserOpenId(@RequestParam("userId")Long userId) {
        return userService.getUserOpenId(userId);
    }
}
springcloud_k8s_panzhihuazhihuishequ/service_user/src/main/java/com/panzhihua/service_user/service/UserService.java
@@ -473,4 +473,11 @@
    R getGridsMemberList(Long communityId);
    /**
     * 根据用户id查询用户openid
     * @param userId    用户id
     * @return  openid
     */
    R getUserOpenId(Long userId);
}
springcloud_k8s_panzhihuazhihuishequ/service_user/src/main/java/com/panzhihua/service_user/service/impl/UserServiceImpl.java
@@ -24,10 +24,7 @@
import com.panzhihua.common.model.vos.user.*;
//import com.panzhihua.common.service.grid.GridService;
import com.panzhihua.common.service.partybuilding.PartyBuildingService;
import com.panzhihua.common.utlis.IdCard;
import com.panzhihua.common.utlis.RealNameUtil;
import com.panzhihua.common.utlis.SensitiveUtil;
import com.panzhihua.common.utlis.Snowflake;
import com.panzhihua.common.utlis.*;
import com.panzhihua.service_user.dao.*;
import com.panzhihua.service_user.model.dos.*;
import com.panzhihua.service_user.model.dtos.DataKanbanDTO;
@@ -175,7 +172,7 @@
        userDao.updateServiceTeam(purePhoneNumber, purePhoneNumber);
        int i = userDao.updateById(sysUserDO);
        if (i > 0) {
            return R.ok();
            return R.ok(purePhoneNumber);
        } else {
            return R.fail("维护微信手机号失败");
        }
@@ -663,6 +660,19 @@
                userDao.updateById(sysUserDO);
                //修改审核绑定的userId
                userDao.updateComPbMemberUserId(idCard,sysUserDO.getUserId());
            }
            SysUserDO user = userDao.selectById(loginUserInfoVO.getUserId());
            if(user != null){
                //实名认证成功推送订阅消息给用户
                try {
                    WxXCXTempSend util = new WxXCXTempSend();
                    String accessToken = util.getAppAccessToken();
                    //用户实名认证推送消息
                    WxUtil.sendSubscribeRZSH(user.getOpenid(),accessToken,"用户实名认证", com.panzhihua.common.utlis.DateUtils.getCurrentDateStr(),"审核通过");
                }catch (Exception e){
                    log.error("推送用户订阅消息失败,失败原因:" + e.getMessage());
                }
            }
            return R.ok();
        }
@@ -2219,4 +2229,18 @@
    public R getGridsMemberList(Long communityId){
        return R.ok(this.userDao.getGridsMemberList(communityId));
    }
    /**
     * 根据用户id查询用户openid
     * @param userId    用户id
     * @return  openid
     */
    @Override
    public R getUserOpenId(Long userId){
        SysUserDO userDO = this.userDao.selectById(userId);
        if(userDO != null){
            return R.ok(userDO.getOpenid());
        }
        return R.fail();
    }
}
springcloud_k8s_panzhihuazhihuishequ/timejob/src/main/java/com/panzhihua/timejob/jobhandler/CommunityJobHandler.java
@@ -156,4 +156,15 @@
        log.info("执行结果【{}】",r.toString());
        return ReturnT.SUCCESS;
    }
    /**
     * 定时任务检测即将开始的社区活动,并使用订阅消息通知用户
     */
    @XxlJob("timedTaskActivityNoticeJobHandler")
    public ReturnT<String> timedTaskActivityNoticeJobHandler(String param){
        log.info("定时任务检测即将开始的社区活动,并使用订阅消息通知用户");
        R r=communityService.timedTaskDynStatus();
        log.info("执行结果【{}】",r.toString());
        return ReturnT.SUCCESS;
    }
}