032319e2c739d570ef6e70830fdafdca9ccbf7f3.svn-base 9.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247
  1. package com.chinacreator.process.dao;
  2. import com.chinacreator.common.dao.CacheableDao;
  3. import com.chinacreator.common.support.cache.annotation.CacheName;
  4. import com.chinacreator.process.util.DataSource;
  5. import com.frameworkset.common.poolman.SQLExecutor;
  6. import org.apache.commons.lang.StringUtils;
  7. import org.springframework.cache.annotation.Cacheable;
  8. import org.springframework.stereotype.Component;
  9. import java.sql.SQLException;
  10. import java.text.SimpleDateFormat;
  11. import java.util.Date;
  12. import java.util.HashMap;
  13. import java.util.List;
  14. @Component
  15. @CacheName("MqSmsConf")
  16. public class MqSmsTempConfDao extends CacheableDao{
  17. /**
  18. * 根据BUSITYPE查询短信模板配置信息
  19. * @param spid
  20. * @return
  21. * @throws SQLException
  22. */
  23. /***
  24. @Cacheable(value="mqsmstemp_tempinfo_busitype", key="#busitype")
  25. public HashMap getSmsTempInfoByBusitype(String busitype) throws SQLException {
  26. String sql = "SELECT SMSTEMPNAME, SMSTEMPID, PARAMS, PARAMSMAPP FROM TB_SMSTEMP_CONF WHERE STATUS = '0' AND BUSITYPE = ? ";
  27. return SQLExecutor.queryObjectWithDBName(HashMap.class, DataSource.NET3G, sql, busitype);
  28. }
  29. ***/
  30. /**
  31. * 获取办理渠道配置信息
  32. * @param busitype
  33. * @return
  34. * @throws SQLException
  35. */
  36. @Cacheable(value="getChannelConfByBusitype",key="#busitype")
  37. public HashMap getChannelConfByBusitype(String busitype) throws SQLException {
  38. String sql = " SELECT * FROM TB_SMSTEMP_TRANCHANNEL_CONF T1 WHERE T1.STATUS = '0' AND T1.BUSITYPE = ? ";
  39. return SQLExecutor.queryObjectWithDBName(HashMap.class,DataSource.NET3G, sql,busitype);
  40. }
  41. /**
  42. * 根据SPID和BUSITYPE获取短信配置信息
  43. * @param spid
  44. * @param busitype
  45. * @return
  46. * @throws SQLException
  47. */
  48. @Cacheable(value="mqsmstempconf",key="#spid+'-'+#busitype")
  49. public List<HashMap> getConfListBySpid(String spid, String busitype) throws SQLException {
  50. String sql = " SELECT " +
  51. " T1.CPID, T1.SPID, T1.CHANNEL, T1.SUBCHANNEL, T1.PROVINCE, T1.BUSITYPE, T1.TEMPTYPE, T1.MQPARAMSMAPP , " +
  52. " TO_CHAR(T1.STARTTIME, 'YYYYMMDDHH24MISS') STARTTIME, TO_CHAR(T1.ENDTIME,'YYYYMMDDHH24MISS') ENDTIME, " +
  53. " T2.SPNAME, TO_CHAR(T2.PRICE) PRICE, TO_CHAR(T2.MAXFLOW) MAXFLOW, " +
  54. " T3.SMSCPNAME, " +
  55. " T4.SMSTEMPID, T4.PARAMS, T4.PARAMSMAPP " +
  56. " FROM TB_MQ_SMSTEMP_CONF T1 " +
  57. " LEFT JOIN TB_SP_INFO T2 ON T1.SPID = T2.SPID " +
  58. " LEFT JOIN TB_CP_INFO T3 ON T1.CPID = T3.CPID " +
  59. " LEFT JOIN TB_SMSTEMP_CONF T4 ON T1.TEMPTYPE = T4.TEMPTYPE AND T4.STATUS = '0' " +
  60. " WHERE " +
  61. " T1.STATUS = '0' AND T1.SPID = ? AND T1.BUSITYPE = ? " +
  62. " ORDER BY T1.INSERTTIME DESC ";
  63. return SQLExecutor.queryListWithDBName(HashMap.class,DataSource.NET3G, sql,spid,busitype);
  64. }
  65. /**
  66. * 根据SPID和BUSITYPE获取二次短信配置信息
  67. * @param spid
  68. * @param busitype
  69. * @return
  70. * @throws SQLException
  71. */
  72. @Cacheable(value="mqsmssectempconf",key="#spid+'-'+#busitype")
  73. public List<HashMap> getSecConfListBySpid(String spid, String busitype) throws SQLException {
  74. String sql = " SELECT " +
  75. " T1.CPID, T1.SPID, T1.CHANNEL, T1.SUBCHANNEL, T1.PROVINCE, T1.BUSITYPE, T1.TEMPTYPE, T1.MQPARAMSMAPP , T1.SMSWGNAME, " +
  76. " TO_CHAR(T1.STARTTIME, 'YYYYMMDDHH24MISS') STARTTIME, TO_CHAR(T1.ENDTIME,'YYYYMMDDHH24MISS') ENDTIME, " +
  77. " T2.SPNAME, TO_CHAR(T2.PRICE) PRICE, TO_CHAR(T2.MAXFLOW) MAXFLOW, " +
  78. " T3.SMSCPNAME, " +
  79. " T4.SMSTEMPID, T4.PARAMS, T4.PARAMSMAPP " +
  80. " FROM TB_MQ_SECSMSTEMP_CONF T1 " +
  81. " LEFT JOIN TB_SP_INFO T2 ON T1.SPID = T2.SPID " +
  82. " LEFT JOIN TB_CP_INFO T3 ON T1.CPID = T3.CPID " +
  83. " LEFT JOIN TB_SMSTEMP_CONF T4 ON T1.TEMPTYPE = T4.TEMPTYPE AND T4.STATUS = '0' " +
  84. " WHERE " +
  85. " T1.STATUS = '0' AND T1.SPID = ? AND T1.BUSITYPE = ? " +
  86. " ORDER BY T1.INSERTTIME DESC ";
  87. return SQLExecutor.queryListWithDBName(HashMap.class,DataSource.NET3G, sql,spid,busitype);
  88. }
  89. /**
  90. * 更新华胜推送表数据,只更新24小时内入库的数据
  91. * 用于华胜推送,只有订购退订短信发送成功后才推送。
  92. * @param userid 手机号码
  93. * @param spid
  94. * @param busitype 短信业务类型
  95. * @param pushhour 时间间隔
  96. * @throws SQLException
  97. */
  98. public boolean updHuaShengWaitInfo(String userid, String spid, String busitype, String pushhour) {
  99. try {
  100. String ordertype = ""; //0订购,1退订
  101. if( "tran_succ".equals(busitype)
  102. || "ftp_tran_succ".equals(busitype)
  103. || "cap_tran_succ".equals(busitype)
  104. || "vac_tran_succ".equals(busitype)
  105. || "kafka_tran_succ".equals(busitype)
  106. || "vs_tran_succ".equals(busitype)
  107. //以指定标识开头
  108. || busitype.indexOf("tran_succ") == 0
  109. || busitype.indexOf("ftp_tran_succ") == 0
  110. || busitype.indexOf("cap_tran_succ") == 0
  111. || busitype.indexOf("vac_tran_succ") == 0
  112. || busitype.indexOf("kafka_tran_succ") == 0
  113. ){
  114. ordertype = "0";
  115. }else if("cancel_succ".equals(busitype)
  116. || "ftp_cancel_succ".equals(busitype)
  117. || "cap_cancel_succ".equals(busitype)
  118. || "vac_cancel_succ".equals(busitype)
  119. || "kafka_cancel_succ".equals(busitype)
  120. || "vs_cancel_succ".equals(busitype)
  121. //以指定标识开头
  122. || busitype.indexOf("cancel_succ") == 0
  123. || busitype.indexOf("ftp_cancel_succ") == 0
  124. || busitype.indexOf("cap_cancel_succ") == 0
  125. || busitype.indexOf("vac_cancel_succ") == 0
  126. || busitype.indexOf("kafka_cancel_succ") == 0
  127. ){
  128. ordertype = "1";
  129. }
  130. if(StringUtils.isEmpty(pushhour)){
  131. pushhour = "1";
  132. }else{
  133. //验证是否数字
  134. try {
  135. Integer.parseInt(pushhour);
  136. } catch (Exception e) {
  137. pushhour = "1";
  138. }
  139. }
  140. if(!"".equals(ordertype)){
  141. String sql = " UPDATE TD_HUASHENGSYNC_WAIT SET RESULTCODE = '1' , UPDTIME = SYSDATE WHERE RESULTCODE = '3' AND INSERTTIME > SYSDATE - ?/24 " +
  142. " AND USERID = ? AND SPID = ? AND ORDERTYPE = ? ";
  143. Object obj = SQLExecutor.updateWithDBName(DataSource.NET3G, sql, pushhour, userid, spid, ordertype);
  144. return ((Integer) obj) > 0 ? true : false;
  145. }
  146. } catch (Exception e) {
  147. e.printStackTrace();
  148. }
  149. return false;
  150. }
  151. /**
  152. * 获取子模板信息,退订成功时的营销短信模板内容
  153. * @param temptype
  154. * @return
  155. * @throws SQLException
  156. */
  157. @Cacheable(value="qryCancelYxConf",key="#busitype")
  158. public List<HashMap> qryCancelYxConf(String busitype) throws SQLException {
  159. String sql = " SELECT T1.PHCPID, T1.HYSPID, T1.BUSITYPE, T1.TEMPTYPE, T1.MQPARAMSMAPP , "+
  160. " T2.SPNAME, TO_CHAR(T2.PRICE) PRICE, TO_CHAR(T2.MAXFLOW) MAXFLOW, "+
  161. " T3.SMSCPNAME, "+
  162. " T4.SMSTEMPID, T4.PARAMS, T4.PARAMSMAPP "+
  163. " FROM TB_SMSTEMP_CANCELYX_CONF T1 "+
  164. " LEFT JOIN TB_SP_INFO T2 ON T1.HYSPID = T2.SPID "+
  165. " LEFT JOIN TB_CP_INFO T3 ON T1.PHCPID = T3.CPID "+
  166. " LEFT JOIN TB_SMSTEMP_CONF T4 ON T1.TEMPTYPE = T4.TEMPTYPE AND T4.STATUS = '0' "+
  167. " WHERE "+
  168. " T1.STATUS = '0' AND T1.BUSITYPE = ? "+
  169. " ORDER BY T1.INSERTTIME DESC ";
  170. return SQLExecutor.queryListWithDBName(HashMap.class,DataSource.NET3G, sql, busitype);
  171. }
  172. /**
  173. * 添加营销数据
  174. * @param params
  175. * @return
  176. * @throws SQLException
  177. */
  178. public boolean addCancelyxRec(HashMap<String, String> params) throws SQLException {
  179. String sql = "INSERT INTO TD_SMSTEMP_CANCELYX_REC (ID, USERID, SPID, SPNAME, PHCPID, VARGS, BUSITYPE, RESULTCODE, ERRORINFO, OUTPARAMS, HYSPID) "+
  180. " VALUES(TO_CHAR(SYSDATE, 'YYYYMMDDHH24MISS') || SEQ_COMMON6.NEXTVAL,?,?,?,?,?,?,?,?,?,?)";
  181. Object obj = SQLExecutor.insertWithDBName(DataSource.NET3G, sql,
  182. params.get("USERID"), params.get("SPID"), params.get("SPNAME"), params.get("PHCPID"), params.get("VARGS"),
  183. params.get("BUSITYPE"), params.get("RESULTCODE"), params.get("ERRORINFO"), params.get("OUTPARAMS"), params.get("HYSPID"));
  184. return ((Integer) obj) > 0 ? true : false;
  185. }
  186. /**
  187. * 是否可以发送营销短信
  188. * @param userid
  189. * @param hyspid
  190. * @param num
  191. * @return
  192. * @throws SQLException
  193. */
  194. public boolean hasRetrySendSms(String userid, String hyspid, Integer num)throws SQLException {
  195. boolean res = true;
  196. String sql = " SELECT TO_CHAR(ADD_MONTHS(MAX(INSERTTIME), ? ),'YYYYMMDDHH24MISS') SENDTIME FROM TD_SMSTEMP_CANCELYX_REC "+
  197. " WHERE USERID = ? AND HYSPID = ? AND RESULTCODE = '0' ";
  198. //获取最大的发送日期
  199. String sendtime = SQLExecutor.queryFieldWithDBName(DataSource.NET3G, sql, num, userid, hyspid);
  200. if(!StringUtils.isEmpty(sendtime)){
  201. res = false;
  202. //判断当前时间是否大于发送日期
  203. String currtime = new SimpleDateFormat("yyyyMMddHHmmss").format(new Date());
  204. if(Long.parseLong(currtime) > Long.parseLong(sendtime)){
  205. res = true;
  206. }
  207. }
  208. return res;
  209. }
  210. /**
  211. * 合约产品退订后是否可以再次订购,与videoif的orderservice判断保持一致
  212. * @param userid
  213. * @param spid
  214. * @param num
  215. * @return
  216. * @throws SQLException
  217. */
  218. public boolean hasRetryOrder(String userid, String spid, Integer num) throws SQLException {
  219. String sql = " SELECT COUNT(1) CNT FROM TD_ORDER_RELATIONS "+
  220. " WHERE USERID = ? AND SPID = ? AND SYSDATE > TO_DATE(TO_CHAR(ADD_MONTHS(ORDERTIME, ? ),'YYYYMM'),'YYYYMM') ";
  221. return Integer.parseInt(SQLExecutor.queryFieldWithDBName(DataSource.NET3G, sql, userid, spid,num)) > 0;
  222. }
  223. public static void main(String[] args) {
  224. MqSmsTempConfDao dao = new MqSmsTempConfDao();
  225. try {
  226. //System.out.println(dao.updHuaShengWaitInfo("18774826258","1051","tran_succ","5"));
  227. //System.out.println(dao.getInfoByCpid("tencent"));
  228. System.out.println(dao.hasRetrySendSms("18774826254","1011",1));
  229. } catch (Exception e) {
  230. // TODO Auto-generated catch block
  231. e.printStackTrace();
  232. }
  233. }
  234. }