java消息获取接口:

       前几天公司让我开发一个java 消息获取和消息摘要接口,刚看了几天《JAVA核心技术》,感觉各种编程语言真是相通。几天时间我就喜欢上JAVA了,JAVA省去了C++中最让人厌烦的内存处理,实现垃圾回收机制,让程序员可以更安心专注于功能的实现上。而且JAVA结构清晰。至于缺点,我想它的优点也就是缺点,JAVA屏蔽了内存处理,使得用户不方便深入底层探究。

      闲话少说,我把这几天的代码都贴出来。

由于消息概要接口和消息内容获取接口的结构基本上都是一样,所以我只贴出了消息概要接口的内容。我只对其中一些关键代码做一些解释!

1、对于String applist参数的说明:

String applist是一个比较复杂的结构,{"AppListRecord":[{"APPID":"8"},{"APPID":"9"}]},其中appid的个数不定,要求从这个字符串中找出所有的appid号:

方式:

组json包,在json包中提取jsonarray对象,然后从jsonarray对象中提取所有的appid,最后将appid存入list中。

ps:不知道有没有更好的方法,但是我暂时只能想到这个办法了。

List<String> appidList = new ArrayList<String>(); 

appidList.clear();  //

JSONObject appJson = new JSONObject();
 appJson = JSONObject.fromObject(applist);
 String installedAppString = appJson.getString("AppListRecord");
//   将参数转换成json对象
 JSONArray paramsString = JSONArray.fromObject(installedAppString);

 

//提取appid并将appid存入list中。

for (int i = 0; i < paramsString.size(); i++) {
    appJson = (JSONObject) paramsString.get(i);

    // APPID 支付应用标识
    appId = (String) appJson.get("APPID");
    // 检测支付应用标识appId为非空
    ParamChecker.checkString(appId, "appId");
    ParamChecker.checkNumeric(appId, "appId");// 非数字检测
    appidList.add(appId);
   }

 

//从list中读取出appid值。

for(int i=0; i<appidList.size(); i++){
    appId = appidList.get(i);

 

 

消息概要接口:

声明:

      /**
  * 消息概要获取接口
  * @param productNo  用户电信产品号
  * @param location 归属地信息
  * @param maxrecord 最大返回记录数
  * @param msgtype 消息类型
  * @param startrecode 前面跳过的记录数
  * @param applist 已安装支付应用列表
  * @return
  */
 public String querymsgOutline(String productNo,String location,String maxrecord,
   String msgtype,String startrecode,String applist);

接口实现:

/**
  * 消息概要获取接口实现
  * @param productNo  用户电信产品号
  * @param location 归属地信息
  * @param maxrecord 最大返回记录数
  * @param msgtype 消息类型
  * @param startrecode 前面跳过的记录数
  * @param applist 已安装支付应用列表
  * @param appid 支付应用标识
  * @return
  */
 @SuppressWarnings("unchecked")
 public String querymsgOutline(String productNo,String location,String maxrecord,
   String msgtype,String startrecode,String applist)
 {
  String[] jsonNames = { "RECORDAMOUNT", "MSGLIST" };
  String responseCode = "000000";
  String responseContent = "成功";
  String hot = null;
  Long pk = null;
  String appId = "";
  List<String> appidList = new ArrayList<String>();  //有问题吗??
  appidList.clear();  //
  
  JSONObject appJson = new JSONObject();
  appJson = JSONObject.fromObject(applist);
  String installedAppString = appJson.getString("AppListRecord");
//   将参数转换成json对象
  JSONArray paramsString = JSONArray.fromObject(installedAppString);
  
  try {
   ParamChecker.checkString(productNo, "productNo");
   ParamChecker.checkNumeric(productNo, "productNo");
   ParamChecker.checkString(msgtype, "msgtype");
   ParamChecker.checkString(location, "location");
   ParamChecker.checkString(applist, "applist");
   
   for (int i = 0; i < paramsString.size(); i++) {
    appJson = (JSONObject) paramsString.get(i);

    // APPID 支付应用标识
    appId = (String) appJson.get("APPID");
    // 检测支付应用标识appId为非空
    ParamChecker.checkString(appId, "appId");
    ParamChecker.checkNumeric(appId, "appId");// 非数字检测
    appidList.add(appId);
   }
   
   pk = TInfDcoperlogDao.insert(TInfDcoperlogDao.PARTY_GROUP_PO,
     "querymsg", "DB", "", "PRODUCTNO", productNo);

   JSONArray jsonArray655 = new JSONArray();
   List<MmOMsg> records = TMmMsgDao.queryOutlineMsg(productNo,location, msgtype,
     maxrecord, startrecode, appidList);
   int recordAmount = records.size();
   for (int i = 0; i < recordAmount; i++) {
    MmOMsg record = records.get(i);
    String title = record.getMsgTitle();
    String msg_id = record.getMsgId();
    String time = record.getTime();
    String isScroll = record.getIsScroll();
    
    if(isScroll.equals("Y"))
     hot = "1";
    else if(isScroll.equals("N"))
     hot = "0";
    JSONObject jsonObject = new JSONObject();
    jsonObject.put("MSGTITLE", title);
    jsonObject.put("MSG_ID", msg_id);
    jsonObject.put("TIME", time);
     jsonArray655.add(jsonObject);
   }

   // 更新日志表
   TInfDcoperlogDao.update(pk, responseCode, responseContent);

   return JSONTool.createJson(jsonNames, new Object[] { recordAmount,
     jsonArray655 });
  } catch (Exception e) {
   return ExceptionHandler.toJson(e, pk, GlobalConstants.MODULE_CODE_MEPF);
  }
 }
在实现接口时,由于需要对数据库T_MM_MSG表进行查询,用queryOutlineMsg实现了数据库的查询

/*
  * 概要消息获取
  */
 @SuppressWarnings("unchecked")
 public static List<MmOMsg> queryOutlineMsg(String productNo, String location, String msgtype,
   String maxrecord, String startrecode, List<String> appidList) throws Exception{
 // List<String> areaCodeList = TSymAreaDao.getAreaCodeConnBy(productNo);
  //DictTranslationUtils  dictString = new DictTranslationUtils();
  String dictname = DictTranslationUtils.dictTranslation(location, "INF_PROVINCENOCONV");
  String appId = "";
  StringBuffer sql = new StringBuffer();
  if(StringUtils.isEmpty(startrecode)){
   startrecode = "0";
  }
  if ("00".equals(msgtype) || "0".equals(msgtype)) {
   //sql.append("select  msg.title, msg.msg_id,to_char(msg.create_date,'yyyyMMddhh24miss') as create_date,msg.isscroll from t_mm_msg msg ");
   sql.append(" select * from (select rownum num,msg.title,msg.msg_id,to_char(msg.create_date,'yyyyMMddhh24miss') as create_date,msg.isscroll from t_mm_msg msg ")
      .append(" where 1 = 1 ");
   sql.append(" and (';'||AREACODE_LIST||';' like ").append(" '%;'||'" + dictname + "'||';%' )");
   sql.append(" or( ';'||AREACODE_LIST||';' like '%;'||'" + "000000" + "'||';%' )");
   sql.append(" and msg.stat = 'S0P' ");
   sql.append("and (msg.isappall = 'Y'");
   /*if (!StringUtils.isEmpty(maxrecord)) {
    sql.append(" and rownum < (to_number('").append(maxrecord).append("') + to_number('")
    .append(startrecode)
    .append("') + 1)");
   }*/
   for(int i=0; i<appidList.size(); i++){
    appId = appidList.get(i);
    sql.append(" or  ( ';'|| APPID_LIST ||';'  like").append(" (select  '%;'||app_id||';%'  from t_vm_appadpt where appadpt_id = " + appId + "))");
   }
   
   sql.append(")) t").append(" where t.num >  to_number('").append(startrecode).append("')");
  }else {
   sql.append(" select * from (select rownum num,msg.title,msg.msg_id,to_char(msg.create_date,'yyyyMMddhh24miss') as create_date,msg.isscroll from t_mm_msg msg ")
      .append(" where 1 = 1 ");
   sql.append(" and (';'||AREACODE_LIST||';' like ").append(" '%;'||'" + dictname + "'||';%' )");
   sql.append(" or( ';'||AREACODE_LIST||';' like '%;'||'" + "000000" + "'||';%' )");
   sql.append(" and msg.msg_type='" + msgtype + "' and msg.stat = 'S0P' ");
   sql.append("and (msg.isappall = 'Y'");
  /* if (!StringUtils.isEmpty(maxrecord)) {
    sql.append(" and rownum < (to_number('").append(maxrecord).append("') + to_number('")
    .append(startrecode)
    .append("') + 1)");
   }*/
   
   for(int i=0; i<appidList.size(); i++){
    appId = appidList.get(i);
    sql.append(" or  ( ';'|| APPID_LIST ||';'  like").append(" (select  '%;'||app_id||';%'  from t_vm_appadpt where appadpt_id = " + appId + "))");
   }
   
   sql.append(")) t").append(" where t.num >  to_number('").append(startrecode).append("')");
  }
  return DAO.query(sql.toString(), new MmMsgRowOutLineMap());
 }

 

 

调用消息的接口:

 /**
  * 消息概要获取接口
  * @param request
  * @return
  * @throws ServiceInvokeException
  * @throws JSONException
  */
 public String querymsgOutline(HttpServletRequest request)
    throws ServiceInvokeException, JSONException {
  String productNo = getRequestParam(request,"PRODUCTNO");
  String location = getRequestParam(request,"LOCATION");
  String maxrecord = getRequestParam(request,"MAXRECORD");
  String msgtype = getRequestParam(request,"MSGTYPE");
  String startrecode = getRequestParam(request,"STARTRECODE");
  String applist = getRequestParam(request,"APPLIST");
  
  MTPaymentService mtp = SpringContextHelper.getMTPaymentServiceBean();
  return mtp.querymsgOutline(productNo, location, maxrecord, msgtype, startrecode, applist); 
 }

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值