驳回的同时实现发送消息,提醒用户.

实现功能:

驳回的同时实现发送消息,提醒用户.

 驳回的同时实现发送消息,提醒用户.

 驳回的同时实现发送消息,提醒用户.驳回的同时实现发送消息,提醒用户.

首先对状态进行判断,如果为1发送消息,如果为2发送微信消息.

对发送的微信消息,都存储到map集合里,

package com.sinosoft.springbootplus.demandConfirm.application.service.impl;



import com.sinosoft.springbootplus.demandConfirm.application.service.HqDemandTurnDownService;
import com.sinosoft.springbootplus.demandConfirm.domain.entity.HqDemandTurnDowm;
import com.sinosoft.springbootplus.demandConfirm.domain.mapper.HqDemandTurnDownMapper;
import com.sinosoft.springbootplus.demandConfirm.utils.ConstantUtil;
import com.sinosoft.springbootplus.mybatis.service.impl.BaseServiceImpl;
import com.sinosoft.springbootplus.publish.MessagePublistener;
import com.sinosoft.springbootplus.sendMessage.service.JwBjSendWxinfohqfwService;
import com.sinosoft.springbootplus.sendMessage.vo.TemplateDatahqfw;
import com.sinosoft.springbootplus.util.MapperUtils;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.text.SimpleDateFormat;
import java.util.*;


/**
 * <pre>
 * 驳回意见表 服务实现类
 * </pre>
 *
 * @author 李佳锴
 * @since 2021-12-2
 */
@Slf4j
@Service
public class HqDemandTurnDownServiceImpl extends BaseServiceImpl<HqDemandTurnDownMapper, HqDemandTurnDowm> implements HqDemandTurnDownService {

    private HqDemandTurnDownMapper hqDemandTurnDownMapper;
    private MessagePublistener messagePublistener;
    private JwBjSendWxinfohqfwService jwBjSendWxinfoService;
    HqDemandTurnDownServiceImpl (HqDemandTurnDownMapper hqDemandTurnDownMapper,MessagePublistener messagePublistener,JwBjSendWxinfohqfwService jwBjSendWxinfoService){
        this.hqDemandTurnDownMapper =hqDemandTurnDownMapper;
        this.messagePublistener = messagePublistener;
        this.jwBjSendWxinfoService = jwBjSendWxinfoService;
    }

    private static final String INFO_MSG = "保障单驳回查看[%s]";
    private static final String INFO_CONTENT = "请对保障单驳回进行查看";

    @Transactional(rollbackFor = Exception.class)
    @Override
    public boolean saveHqDemandTurn(HqDemandTurnDowm hqDemandTurnDowm) throws Exception {
        List styleList = hqDemandTurnDowm.getStyleList();
        if (styleList.contains("1")){
            Map<String, String> data = new HashMap<>();
            data.put("confirmId", hqDemandTurnDowm.getConfirmId().toString());
            data.put("remark", INFO_CONTENT);
            String hqfwTask = String.format(INFO_MSG, hqDemandTurnDowm.getConfirmName());
            log.info("发送代办:[{}]", hqfwTask);
            messagePublistener.publishTask("hqsq" + hqDemandTurnDowm.getConfirmName(), "保障单驳回查看", hqfwTask,
                    "hqsq", MapperUtils.mapToJson(data), "hqsq", Long.valueOf(hqDemandTurnDowm.getTeachAssistant()), hqDemandTurnDowm.getTeachAssistant());
        }
        if (styleList.contains("2")){
            Map<String, TemplateDatahqfw> param = new HashMap<>();
            param.put("first",new TemplateDatahqfw("您有一条保障单信息需要处理,请及时查阅!","#696969"));
            param.put("keyword1",new TemplateDatahqfw("保障单驳回查看","#696969"));
            // param.put("keyword2",new TemplateData(messageInfo.getSendName(),"#696969"));
            SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
            String dateString = formatter.format(new Date());
            param.put("keyword2",new TemplateDatahqfw(dateString,"#696969"));
            param.put("remark",new TemplateDatahqfw("如果您已经处理,请忽略此消息","#696969"));
            List<String> openIdList = new ArrayList<String>();

            String openId = ConstantUtil.open_id;
            openIdList.add(openId);
            jwBjSendWxinfoService.senTempMsg2(openIdList,ConstantUtil.messageTemplate,param);
        }
        String join =String.join(",",styleList);
        hqDemandTurnDowm.setMessage(join);
        return super.save(hqDemandTurnDowm);

    }
}

发送消息用到的类:

package com.sinosoft.springbootplus.demandConfirm.utils;
/**
 * 微信常量定义
 * 版权:(C) 版权所有 2015-2018 中科软科技股份有限公司
 * <功能名称>
 * <详细描述>
 * @author   mc
 * @version  1.0
 * @创建时间 2021年12月30日
 * @修改时间 2021年12月30日
 */
public class ConstantUtil {
    // 公众号开发者APPID  //wx44357760369b2941
    public final static String app_id = "wx3f8ed97f6f8b1bd5";
    //openid
    public final static String open_id = "oUVkX1G1Uu8GxPwt9_APF0wdDcOE";
    // 公众号开发者密码  343a376ae2ec2b9180c203e5f624368c
    public final static String app_secret = "a8564e2df91c8aa345d67580f462cf79";
    // 凭证获取(GET)
    public final static String token_url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET";
    // 获取用户openid集合
    public final static String listopen_id = "https://api.weixin.qq.com/cgi-bin/user/get?access_token=ACCESS_TOKEN&next_openid=NEXT_OPENID";
    //获取用户信息
    public final static String requestUrl = "https://api.weixin.qq.com/cgi-bin/user/info?access_token=ACCESS_TOKEN&openid=OPENID";
    //新建用户模版信息
    public final static String addtemplateUrl = "https://api.weixin.qq.com/cgi-bin/template/api_add_template?access_token=ACCESS_TOKEN";
    //删除用户模版信息
    public final static String deltemplateUrl = "https://api.weixin.qq.com/cgi-bin/template/del_private_template?access_token=ACCESS_TOKEN";
    //删除用户模版信息
    public final static String sendtemplateUrl = "https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=ACCESS_TOKEN";
  //消息模版信息
    public final static String messageTemplate = "q6OVAlZVQHxoZpgGrJLuhjl3GRW_olIaJIprnkb-IPs";



}
package com.sinosoft.springbootplus.demandConfirm.utils;

import com.sinosoft.springbootplus.demandConfirm.domain.entity.Token;
import net.sf.json.JSONException;
import net.sf.json.JSONObject;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import javax.net.ssl.HttpsURLConnection;
import javax.net.ssl.SSLContext;
import javax.net.ssl.SSLSocketFactory;
import javax.net.ssl.TrustManager;
import java.io.*;
import java.net.ConnectException;
import java.net.URL;


public class CommonUtil {
    private static Logger log = LoggerFactory.getLogger(CommonUtil.class);



    /**
     * 发送https请求
     *
     * @param requestUrl 请求地址
     * @param requestMethod 请求方式(GET、POST)
     * @param outputStr 提交的数据
     * @return JSONObject(通过JSONObject.get(key)的方式获取json对象的属性值)
     */
    public static JSONObject httpsRequest(String requestUrl, String requestMethod, String outputStr) {
        JSONObject jsonObject = null;
        try {
            // 创建SSLContext对象,并使用我们指定的信任管理器初始化
            TrustManager[] tm = { new MyX509TrustManager() };
            SSLContext sslContext = SSLContext.getInstance("SSL", "SunJSSE");
            sslContext.init(null, tm, new java.security.SecureRandom());
            // 从上述SSLContext对象中得到SSLSocketFactory对象
            SSLSocketFactory ssf = sslContext.getSocketFactory();

            URL url = new URL(requestUrl);
            HttpsURLConnection conn = (HttpsURLConnection) url.openConnection();
            conn.setSSLSocketFactory(ssf);

            conn.setDoOutput(true);
            conn.setDoInput(true);
            conn.setUseCaches(false);
            // 设置请求方式(GET/POST)
            conn.setRequestMethod(requestMethod);

            // 当outputStr不为null时向输出流写数据
            if (null != outputStr) {
                OutputStream outputStream = conn.getOutputStream();
                // 注意编码格式
                outputStream.write(outputStr.getBytes("UTF-8"));
                outputStream.close();
            }

            // 从输入流读取返回内容
            InputStream inputStream = conn.getInputStream();
            InputStreamReader inputStreamReader = new InputStreamReader(inputStream, "utf-8");
            BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
            String str = null;
            StringBuffer buffer = new StringBuffer();
            while ((str = bufferedReader.readLine()) != null) {
                buffer.append(str);
            }

            // 释放资源
            bufferedReader.close();
            inputStreamReader.close();
            inputStream.close();
            inputStream = null;
            conn.disconnect();
            jsonObject = JSONObject.fromObject(buffer.toString());
        } catch (ConnectException ce) {
            log.error("连接超时:{}", ce);
        } catch (Exception e) {
            log.error("https请求异常:{}", e);
        }
        return jsonObject;
    }

    /**
     * 获取接口访问凭证
     *
     * @param appid 凭证
     * @param appsecret 密钥
     * @return
     */
    public static Token getToken(String appid, String appsecret) {
        Token token = null;
        String requestUrl = ConstantUtil.token_url.replace("APPID", appid).replace("APPSECRET", appsecret);
        // 发起GET请求获取凭证
        JSONObject jsonObject = httpsRequest(requestUrl, "GET", null);

        if (null != jsonObject) {
            try {
                token = new Token();
                token.setAccessToken(jsonObject.getString("access_token"));
                token.setExpiresIn(jsonObject.getInt("expires_in"));
            } catch (JSONException e) {
                token = null;
                // 获取token失败
                log.error("获取token失败 errcode:{} errmsg:{}", jsonObject.getInt("errcode"), jsonObject.getString("errmsg"));
            }
        }
        return token;
    }

    /**
     * URL编码(utf-8)
     *
     * @param source
     * @return
     */
    public static String urlEncodeUTF8(String source) {
        String result = source;
        try {
            result = java.net.URLEncoder.encode(source, "utf-8");
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }
        return result;
    }

}

上一篇:栈的相关应用


下一篇:uniapp如何生成自己的小程序码并且携带参数