zoukankan      html  css  js  c++  java
  • 增加线程异步发送消息的方法一(Thread)

    	@RequestMapping(value="order/updateOrder.do")
    	public String  updateOrder(HttpServletRequest request,HttpServletResponse response){
    	    final String ordId =request.getParameter("ordId");
    	    String proDesc =request.getParameter("proDesc");
    	    final String logisticnum =request.getParameter("logisticnum");
    	    final String logisticcompany =request.getParameter("logisticcompany");
    	    String stats =request.getParameter("stats");
    	    final String tranNum =request.getParameter("tranNum");
    	    final String openId =request.getParameter("openId");
    	    
    	    System.out.println("订单状态stats:" + stats);
    	    System.out.println("tranNum:" + tranNum);
    	    System.out.println("openId:" + openId);
    	    System.out.println("logisticnum:" + logisticnum);
    	    System.out.println("logisticcompany:" + logisticcompany);
    	    
    	    
    	    GoodsOrder order = new GoodsOrder();
    	    order.setOrdId(ordId);
    	    order.setProDesc(proDesc);
    	    order.setLogisticnum(logisticnum);
    	    order.setLogisticcompany(logisticcompany);
    	    order.setrStatus(stats);
    	    
    	    //获取当前时间:毫秒
    	    long a = System.currentTimeMillis();
    	    System.out.println("a :" +  a);
    	    
    	    try
    	    {
                //更改订单状态
    	        shopService.updateOrder(order);  
    	        
    	        //如果订单状态从 支付成功 改成 已发货,则给用户发送一条微信消息。
    	        if (Integer.parseInt(stats) == 3)
    	        {
    	        	//异步发送微信消息
    	        	new Thread()
    	        	{
    	        		public void run()
    	        		{
    	        			message.sendWxMessage(openId, tranNum, logisticcompany,logisticnum);
    	        		}
    	        	}.start();
    	        	//同步发送微信消息
    	        	//message.sendWxMessage(openId, tranNum, logisticcompany,logisticnum);
    	        }
    	      
    	    }
    	    catch (Exception e)
    	    {
    	        e.printStackTrace();
    	    }
    	    
    	    //计算 try 内语句的执行时间
            long b = System.currentTimeMillis();
            System.out.println("b :" +  b);
            System.out.println(" b - a :" + (b - a));
    	return "redirect:/order/orderlist.do?currPage=1";
    	}
    	
    

      

    package com.starcloud.helpapp.wxMessage.service;
    
    /**
     * 
     * 项目名称:eduappweb    
     * 类名称:
     * 类描述: 
     * 创建人:Administrator    
     * 创建时间:2016-5-28 下午02:53:01    
     * @version 1.0
     */
    public interface Message
    {
      
      
        /**
         * 
         * [简要描述]:推送微信消息
         * [详细描述]:    
         *
         * @param openId
         * @param proName
         * @param payfee
         * @param phoneNum
         * @param flag   1:购买成功提示消息 2:代言返利消息
         */
        public void sendWxMessage(String openId,String tranNum,String logisticcompany,String logisticnum);
    }
    

      

    package com.starcloud.helpapp.wxMessage.service.impl;
    
    import org.springframework.stereotype.Service;
    
    import net.sf.json.JSONObject;
    
    import com.starcloud.helpapp.common.Loger;
    import com.starcloud.helpapp.common.utils.Tools;
    import com.starcloud.helpapp.wxMessage.ConnectionUrlUtil;
    import com.starcloud.helpapp.wxMessage.beans.MsgTemplateBean;
    import com.starcloud.helpapp.wxMessage.common.Constant;
    import com.starcloud.helpapp.wxMessage.service.Message;
    
    
    @Service("Message")
    public class MessageImpl implements Message
    {
    	
        /**
         * 
         * [简要描述]:推送微信消息
         * [详细描述]:    1:订单状态改成已发货
         *
         * @param parameter
         */
        public void sendWxMessage(String openId,String tranNum,String logisticcompany,String logisticnum)
        {
            JSONObject parameters = new JSONObject();
    	    MsgTemplateBean bean = MsgTemplateBean.getMsgTemplageBean(tranNum,logisticcompany,logisticnum);
    	    bean.setTouser(openId);
    	    parameters = JSONObject.fromObject(bean);
    	    System.out.println("parameters: " + parameters.toString());
    //        else
    //        {
    //            //proName返利订单
    //            MsgforDistributeBean bean = MsgforDistributeBean.getMsgTemplageBean(payfee,phoneNum,proName);
    //            bean.setTouser(openId);
    //            parameters = JSONObject.fromObject(bean);
    //        }
            Loger.logtxt("WxMessage", "发送消息"+parameters);
            String access_token = getAccess_token();
            if(null != access_token)
            {
                String returnstr = ConnectionUrlUtil.sendPost(Constant.SEND_MESSAGEURL+"?access_token="+access_token,parameters.toString());
                try
                {
                    JSONObject returnJson = JSONObject.fromObject(returnstr);
                    
                    if(0 == returnJson.getInt("errcode"))
                    {
                        Loger.logtxt("WxMessage", "发送消息成功"+parameters);
                    }
                    else
                    {
                        Loger.logtxt("WxMessage", "发送消息失败"+parameters);
                    }
                }
                catch (Exception e)
                {
                    e.printStackTrace();
                }
             
            }
            else
            {
                //发送失败,获取token失败
                Loger.logtxt("WxMessage", "发送消息失败,原因获取access_token失败  ");
            }
           
        }
        /**
         * 
         * [简要描述]:获取到access_token
         * [详细描述]:    
         *
         * @return
         */
        public String getAccess_token()
        {
            String access_token = "";//公司的access_token
            String access_token_json = ConnectionUrlUtil.sendPost(Constant.TOKEN_URL, "grant_type=client_credential&appid=" + Constant.APP_ID + "&secret="
                            + Constant.APP_SECRET);
            if(Tools.isNotEmty(access_token_json))
            {
                JSONObject tokenJson = JSONObject.fromObject(access_token_json);
                if(null != tokenJson && null!=tokenJson.get("access_token"))
                {
                    //ACCESS_TOKEN
                    access_token = tokenJson.getString("access_token");
                }
            }
            return access_token;
        }
    }
    

      

  • 相关阅读:
    符号解析
    编译器与链接器的功能
    hook的本质就是在本原可执行文件中加东西
    Mac-O文件加载的全过程(一)
    系统在执行可执行文件几个过程
    动态库连接器–动态库链接信息(Mach-O文件格式和程序从加载到执行过程)
    load 调用的顺序
    iPhone Mach-O文件格式与代码签名
    Redis正确使用的十个技巧
    redis slowlog
  • 原文地址:https://www.cnblogs.com/z360519549/p/5712766.html
Copyright © 2011-2022 走看看