cf48ef5295f6857d18f269632d78d275d580365a.svn-base 64 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377
  1. package com.chinacreator.process.service;
  2. import com.alibaba.fastjson.JSON;
  3. import com.alibaba.fastjson.JSONObject;
  4. import com.chinacreator.common.exception.BusinessException;
  5. import com.chinacreator.common.util.MD5;
  6. import com.chinacreator.common.util.URLUtil;
  7. import com.chinacreator.process.bean.*;
  8. import com.chinacreator.process.dao.*;
  9. import com.chinacreator.process.exception.VideoException;
  10. import com.chinacreator.process.util.DesUtil;
  11. import com.chinacreator.process.util.HttpInvoke;
  12. import com.chinacreator.process.util.JsonUtil;
  13. import com.chinacreator.video.queue.MessageService;
  14. import com.chinacreator.video.queue.bean.MessagePipe;
  15. import com.google.gson.Gson;
  16. import net.sf.json.JSONArray;
  17. import net.sf.json.JSONSerializer;
  18. import org.apache.commons.lang.StringUtils;
  19. import org.apache.commons.lang.math.NumberUtils;
  20. import org.apache.commons.lang.time.DateFormatUtils;
  21. import org.apache.commons.lang.time.DateUtils;
  22. import org.slf4j.Logger;
  23. import org.slf4j.LoggerFactory;
  24. import org.springframework.beans.factory.annotation.Autowired;
  25. import org.springframework.stereotype.Component;
  26. import java.sql.SQLException;
  27. import java.text.ParseException;
  28. import java.text.SimpleDateFormat;
  29. import java.util.*;
  30. @Component
  31. public class ChannelOrderService {
  32. Logger logger = LoggerFactory.getLogger(ChannelOrderService.class);
  33. @Autowired
  34. private CsmakeupDao csmakeupDao;
  35. @Autowired
  36. private SdkOrderDao sdkOrderDao;
  37. @Autowired
  38. private NetOrderDao netOrderDao;
  39. @Autowired
  40. private CallerAreacodeDao callerAreacodeDao;
  41. @Autowired
  42. private SysDao sysDao;
  43. @Autowired
  44. private ChannelOrderDao channelOrderDao;
  45. @Autowired
  46. private OrderConfigDao orderConfigDao;
  47. @Autowired
  48. private MessageService messageService;
  49. @Autowired
  50. private ChangshiDao changshiDao;
  51. @Autowired
  52. private CsOrderControlDao csOrderControlDao;
  53. @Autowired
  54. private EcbProductDao ecbProductDao;
  55. @Autowired
  56. private WxcsDao wxcsDao;
  57. @Autowired
  58. private EcbDiscntDao ecbDiscntDao;
  59. @Autowired
  60. private ChangshiBlackDao changshiBlackDao;
  61. @Autowired
  62. private DictionaryDao dictionaryDao;
  63. @Autowired
  64. private SPDao spDao;
  65. @Autowired
  66. private BusiOperlimitConfDao busiOperlimitConfDao;
  67. @Autowired
  68. private NextMonthEffectService nextMonthEffectService;
  69. public int doLocalData(ChannelOrderBean orderBean) {
  70. int result = 1;
  71. try {
  72. //北京号码段订购限制
  73. String numberlimit = dictionaryDao.getValue("Numberlimit");
  74. if(numberlimit != null && numberlimit.indexOf(orderBean.getUserid().substring(0, 7)) != -1){
  75. this.channelOrderDao.updatestatus(orderBean.getId(), "9010");
  76. throw new BusinessException("9010", "用户为黑名单用户", new String[0]);
  77. }
  78. OrderConfigBean orderConfigBean = getOrderConfigBean(orderBean.getProductid());
  79. if (orderConfigBean == null) {
  80. this.channelOrderDao.updatestatus(orderBean.getId(), "2");
  81. throw new BusinessException("9015", "该产品不处理", new String[0]);
  82. }
  83. //验证业务操作限制(是否能订购,是否能退订)
  84. if(this.valiOperLimit(orderBean.getId(), orderConfigBean.getSpid(), orderBean.getUpdatetype())){
  85. this.channelOrderDao.updatestatus(orderBean.getId(), "9016", "业务办理限制,不处理");
  86. throw new BusinessException("9016", orderBean.getId()+"业务办理限制,不处理", new String[0]);
  87. }
  88. if ("1006".equals(orderConfigBean.getSpid()) && 0 == this.channelOrderDao.isOrder(orderConfigBean.getCpid(), "1009", orderBean.getUserid())) {
  89. this.channelOrderDao.updatestatus(orderBean.getId(), "4");
  90. throw new BusinessException("9001", "订购失败,芒果TV16元产品互斥,订购了合约产品", new String[0]);
  91. }
  92. getProvinceInfo(orderBean);
  93. if (orderBean.getUpdatetype().equals("1")) {
  94. String provinceOrder = sdkOrderDao.getProvinceOrder(orderConfigBean.getSpid());
  95. if (StringUtils.isNotEmpty(provinceOrder)){
  96. String mobileInfo = getMobileInfo(orderBean.getUserid());
  97. if (!provinceOrder.contains(mobileInfo)){
  98. throw new VideoException("1", "订购失败,该"+mobileInfo+"地区不能订购此产品");
  99. }
  100. }
  101. if (orderConfigBean.getType().equals("1")) {
  102. if (orderConfigBean.getCpid().equals("tencent")
  103. && (orderConfigBean.getSpid().equals("101") || orderConfigBean.getSpid().equals("84"))) {
  104. result = inserttencentMq(orderBean, orderConfigBean, "0");
  105. } else {
  106. result = compareOrderForNet(orderBean);
  107. if(result == 0){//成功发短信
  108. insertSmsMq1(orderBean.getUserid(), "bss", orderConfigBean, "1",orderBean);
  109. }
  110. }
  111. } else {
  112. result = compareOrderForSdk(orderBean);
  113. }
  114. } else {
  115. if (orderConfigBean.getType().equals("1")) {
  116. if (orderConfigBean.getCpid().equals("tencent")
  117. && (orderConfigBean.getSpid().equals("101") || orderConfigBean.getSpid().equals("84"))) {
  118. result =inserttencentMq(orderBean, orderConfigBean, "1");
  119. } else{
  120. result = compareCancelForNet(orderBean);
  121. if(result == 0){//成功发短信
  122. insertSmsMq1(orderBean.getUserid(), "bss", orderConfigBean, "2",orderBean);
  123. }
  124. }
  125. } else {
  126. result = compareCancelForSdk(orderBean);
  127. }
  128. }
  129. if (result == 0) {
  130. //insertMq(orderBean, orderConfigBean);
  131. insertMqOffline(orderBean, orderConfigBean);
  132. if (orderConfigBean.getCpid().equals("changshi") && orderConfigBean.getSpid().equals("1150")
  133. && orderBean.getUpdatetype().equals("1")) {
  134. WxcsBean wxcsBean = wxcsDao.getConfig(orderConfigBean.getCpid(), orderConfigBean.getSpid());
  135. if (wxcsBean.getVipstatus().equals("0")
  136. && NumberUtils.toLong(DateFormatUtils.format(new Date(), "yyyyMMddHHmmss")) < NumberUtils
  137. .toLong(wxcsBean.getVipendtime())
  138. && NumberUtils.toLong(DateFormatUtils.format(new Date(), "yyyyMMddHHmmss")) > NumberUtils
  139. .toLong(wxcsBean.getVipstarttime())) {
  140. insertSmsMq(orderBean.getUserid(), "ecb", orderConfigBean);
  141. }
  142. }
  143. //pushMusic(orderBean,orderConfigBean);
  144. //调拓维C+接口,20200428,xu.zhou
  145. //tuoweiInvoke(orderBean);
  146. }
  147. } catch (Exception e) {
  148. result = 8000;
  149. e.printStackTrace();
  150. logger.error("同步订购关系出现异常,"+e.getMessage());
  151. }
  152. return result;
  153. }
  154. /**
  155. * 查询号码信息
  156. * @param userid
  157. * @return
  158. * @throws Exception
  159. */
  160. public String getMobileInfo(String userid){
  161. String provice= null;
  162. try {
  163. provice= sdkOrderDao.getHmdInfo(userid.substring(0,7));
  164. } catch (Exception e) {
  165. e.printStackTrace();
  166. }
  167. return provice;
  168. }
  169. public int inserttencentMq(ChannelOrderBean orderBean, OrderConfigBean orderConfigBean,String type) {
  170. try {
  171. Map<String, String> map = new HashMap<String, String>();
  172. String url = dictionaryDao.getValue("mqReciveUrl");
  173. map.put("userid", orderBean.getUserid());
  174. map.put("cpid", orderConfigBean.getCpid());
  175. map.put("spid", orderConfigBean.getSpid());
  176. map.put("province", orderBean.getProvince());
  177. map.put("area", orderBean.getArea());
  178. map.put("channel", this.convertChannel(orderBean));
  179. if (type.equals("0")) {
  180. //map.put("channel", "dqftp");
  181. map.put("ordertime", orderBean.getOrdertime());
  182. } else {
  183. //map.put("channel", "dqftp");
  184. map.put("canceltime", orderBean.getCanceltime());
  185. }
  186. map.put("endtime", "");
  187. if(orderConfigBean.getSpid().equals("101")){
  188. map.put("ordertype", "2");
  189. }else{
  190. map.put("ordertype", "0");
  191. }
  192. map.put("orderstatus", type);
  193. map.put("type", "vacmq");
  194. //测试环境
  195. //URLUtil.post("http://10.199.99.177:8030/mq-service/recive.do", JSONSerializer.toJSON(map).toString(),1000);
  196. //生产环境
  197. URLUtil.post(url, JSONSerializer.toJSON(map).toString(),1000);
  198. // URLUtil.post("http://10.199.99.144:8090/mq-service/recive.do", JSONSerializer.toJSON(map).toString(),1000);
  199. } catch (Exception e) {
  200. e.printStackTrace();
  201. }
  202. this.channelOrderDao.updatestatus(orderBean.getId(), "3");
  203. /****
  204. * 腾讯20元,手厅渠道覆盖
  205. */
  206. try {
  207. NetOrderBean newOrderBean = getNetOrderInfo(orderBean);
  208. NetOrderBean oldOrderBean = this.netOrderDao.findOrder(newOrderBean.getCpid(), newOrderBean.getSpid(), newOrderBean.getUserid());
  209. if(oldOrderBean != null){
  210. if("0".equals(type)){
  211. /*****************************************************手厅订购,进行订购渠道更新*************************************************************/
  212. if ("0".equals(oldOrderBean.getStatus())) {
  213. if("sjyyt".equals(newOrderBean.getOrderchannel())){
  214. try {
  215. //订购渠道优先级更新
  216. this.netOrderDao.orderUpdate(newOrderBean);
  217. saveNetLog(newOrderBean, "9098", "[手厅订购渠道覆盖]已订购,订购渠道更新为sjyyt", orderBean.getUpdatetype());
  218. } catch (Exception e) {
  219. e.printStackTrace();
  220. }
  221. }
  222. }else{
  223. if("sjyyt".equals(newOrderBean.getOrderchannel())){
  224. try {
  225. if(newOrderBean.getOrdertime().getTime() < oldOrderBean.getCanceltime().getTime()){
  226. //订购渠道优先级更新
  227. this.netOrderDao.orderUpdate(newOrderBean);
  228. saveNetLog(newOrderBean, "9096", "[手厅订购渠道覆盖]已退订,且手厅订购时间小于退订时间,订购渠道更新为sjyyt", orderBean.getUpdatetype());
  229. }
  230. } catch (Exception e) {
  231. e.printStackTrace();
  232. }
  233. }
  234. }
  235. /*****************************************************手厅订购,进行订购渠道更新*************************************************************/
  236. }else{
  237. /*****************************************************手厅退订,进行退订渠道更新*************************************************************/
  238. if (!"0".equals(oldOrderBean.getStatus())) {
  239. if("sjyyt".equals(newOrderBean.getCancelchannel()) ){
  240. try {
  241. //退订渠道优先级更新
  242. this.netOrderDao.cancelUpdate(newOrderBean);
  243. saveNetLog(newOrderBean, "9099", "[手厅退订渠道覆盖]已退订,退订渠道更新为sjyyt", orderBean.getUpdatetype());
  244. } catch (Exception e) {
  245. e.printStackTrace();
  246. }
  247. }
  248. }else{
  249. if("sjyyt".equals(newOrderBean.getCancelchannel()) ){
  250. try {
  251. if(newOrderBean.getCanceltime().getTime() < oldOrderBean.getOrdertime().getTime()
  252. && oldOrderBean.getCancelchannel()!=null && !"".equals(oldOrderBean.getCancelchannel().trim())){
  253. //退订渠道优先级更新
  254. this.netOrderDao.cancelUpdate(newOrderBean);
  255. saveNetLog(newOrderBean, "9097", "[手厅退订渠道覆盖]已订购,且手厅退订时间小于订购时间,退订渠道更新为sjyyt", orderBean.getUpdatetype());
  256. }
  257. } catch (Exception e) {
  258. e.printStackTrace();
  259. }
  260. }
  261. }
  262. /*****************************************************手厅退订,进行退订渠道更新*************************************************************/
  263. }
  264. }
  265. } catch (Exception e) {
  266. e.printStackTrace();
  267. }
  268. return 3;
  269. }
  270. public void insertSmsMq(String userid, String channel, OrderConfigBean orderConfigBean) {
  271. MessagePipe mpipe = new MessagePipe();
  272. mpipe.setHeader("cssms");
  273. mpipe.addBody("userid", userid);
  274. mpipe.addBody("channel", channel);
  275. mpipe.addBody("cpid", orderConfigBean.getCpid());
  276. mpipe.addBody("spid", orderConfigBean.getSpid());
  277. mpipe.addBody("style", "5");
  278. mpipe.addBody("result", "");
  279. mpipe.addBody("times", "");
  280. mpipe.addBody("orderType", "0");
  281. this.messageService.sendMessage(mpipe);
  282. }
  283. public void insertSmsMq1(String userid, String channel, OrderConfigBean orderConfigBean, String updateType,ChannelOrderBean orderbean) {
  284. try {
  285. /*
  286. if ((orderConfigBean.getCpid().equals("aiqy") && orderConfigBean.getSpid().equals("1018"))
  287. || (orderConfigBean.getCpid().equals("mangtv16") && orderConfigBean.getSpid().equals("1006"))
  288. || (orderConfigBean.getCpid().equals("leshilt") && orderConfigBean.getSpid().equals("954"))) {*/
  289. //1150的另外处理,保持不动
  290. if ((!orderConfigBean.getCpid().equals("changshi") && !orderConfigBean.getSpid().equals("1150")) || "1218".equals(orderConfigBean.getSpid()) ){
  291. Map<String, String> map = new HashMap<String, String>();
  292. String url = dictionaryDao.getValue("mqReciveUrl");
  293. String spid = orderConfigBean.getSpid();
  294. map.put("userid", userid);
  295. map.put("cpid", orderConfigBean.getCpid());
  296. map.put("spid", orderConfigBean.getSpid());
  297. map.put("result", "0");
  298. map.put("channel", "");
  299. /*
  300. if (orderConfigBean.getSpid().equals("1018") && updateType.equals("1")) {
  301. map.put("style", "16");
  302. } else if (orderConfigBean.getSpid().equals("1018") && updateType.equals("2")) {
  303. map.put("style", "45");
  304. } else if (orderConfigBean.getSpid().equals("954") && updateType.equals("1")) {
  305. map.put("style", "20");
  306. } else if (orderConfigBean.getSpid().equals("954") && updateType.equals("2")) {
  307. map.put("style", "21");
  308. } else if (orderConfigBean.getSpid().equals("1006") && updateType.equals("1")) {
  309. map.put("style", "22");
  310. } else if (orderConfigBean.getSpid().equals("1006") && updateType.equals("2")) {
  311. map.put("style", "23");
  312. }
  313. */
  314. map.put("times", "");
  315. map.put("orderType", "");
  316. map.put("type", "cssms");
  317. if("fhcp".equals(orderConfigBean.getCpid())&&"99134246".equals(orderConfigBean.getSpid())){
  318. map.put("param1", timehandel(channelOrderDao.getFhcpEndtime(userid,orderConfigBean.getCpid(),orderConfigBean.getSpid())));
  319. }
  320. //20220507修改,针对云南省订购成功短信保持原来的订购成功短信。其他省份订购成功短信短信下发全部是改为:
  321. //快手12G流量月包省分 spid= 297
  322. //畅视多视频共享15G流量月包省分 spid= 1218 活动,192908845733和192908129979 渠道 订购成功短信调整为新模板
  323. String busiType = "";
  324. boolean flag = false;
  325. //1.先判断省份
  326. String province = getMobileInfo(userid);
  327. //2.获取活动配置
  328. HashMap activitymap = channelOrderDao.getCouponConfig(spid);
  329. if(activitymap!=null && !"云南".equals(province) && ("297".equals(spid) || "1218".equals(spid) || "299".equals(spid))){
  330. String activitystarttime = activitymap.get("STARTTIME").toString();
  331. String activityendtime = activitymap.get("ENDTIME").toString();
  332. //订购时间小于活动开始时间,或者订购时间大于活动结束时间
  333. String ordertime = orderbean.getOrdertime();
  334. if(Long.parseLong(ordertime) < Long.parseLong(activitystarttime)
  335. || Long.parseLong(ordertime) > Long.parseLong(activityendtime)){
  336. System.out.println("订购时间未在【517电信】活动期内,不下发活动短信");
  337. }else{
  338. //发送短信
  339. busiType = "ftp_tran_succ4";
  340. System.out.println("下发【517】活动券码短信");
  341. flag = true;
  342. }
  343. }
  344. if(!flag) {
  345. //业务类型,默认是办理成功
  346. busiType = "ftp_tran_succ";
  347. }
  348. if("2".equals(updateType)){//退订
  349. busiType = "ftp_cancel_succ"; //退订成功
  350. }
  351. map.put("busiType", busiType);
  352. map.put("style","0000");
  353. URLUtil.post(url, JSONSerializer.toJSON(map).toString(),
  354. // URLUtil.post("http://10.199.99.144:8090/mq-service/recive.do", JSONSerializer.toJSON(map).toString(),
  355. 1000);
  356. //20211214 修改 新春活动 1214~0228 活动期间内的1017,979,1005产品发送短信
  357. //20220412 下线,更改配置化,指定产品可发送短信
  358. if(!"2".equals(updateType)) {//订购下发
  359. // Boolean hasSendCouponSms = channelOrderDao.hasSendCouponSms(userid,orderConfigBean.getSpid());
  360. List<String> sendsmsProduct = channelOrderDao.querySendSmsProduct();
  361. if(sendsmsProduct!=null && sendsmsProduct.contains(orderConfigBean.getSpid())){
  362. System.out.println("下发订购后的定制短信");
  363. // if(hasSendCouponSms) {
  364. map.put("busiType", "ftp_tran_succ3");
  365. URLUtil.post(url, JSONSerializer.toJSON(map).toString(), 1000);
  366. }
  367. }
  368. }
  369. } catch (Exception e) {
  370. e.printStackTrace();
  371. }
  372. }
  373. public String timehandel(Date time){
  374. SimpleDateFormat sdf=new SimpleDateFormat("yyyy年MM月dd日");
  375. return sdf.format(time);
  376. }
  377. public void getProvinceInfo(ChannelOrderBean bean) {
  378. AreaInfo areaInfo = this.callerAreacodeDao.findByCallerhead(bean.getUserid().substring(0, 7));
  379. if (areaInfo == null) {
  380. bean.setProvince("");
  381. bean.setArea("");
  382. } else {
  383. bean.setProvince(areaInfo.getProvince());
  384. bean.setArea(areaInfo.getArea());
  385. }
  386. }
  387. public void insertUpdateChannelMq(String userid, String channel, OrderConfigBean orderConfigBean) {
  388. MessagePipe mpipe = new MessagePipe();
  389. mpipe.setHeader("channelupdate");
  390. mpipe.addBody("userid", userid);
  391. mpipe.addBody("channel", channel);
  392. mpipe.addBody("cpid", orderConfigBean.getCpid());
  393. mpipe.addBody("spid", orderConfigBean.getSpid());
  394. this.messageService.sendMessage(mpipe);
  395. }
  396. /***
  397. public void insertMq(ChannelOrderBean bean, OrderConfigBean configBean) {
  398. try{
  399. MessagePipe mpipe = new MessagePipe();
  400. mpipe.setHeader("order");
  401. mpipe.addBody("userid", bean.getUserid());
  402. mpipe.addBody("province", bean.getProvince());
  403. mpipe.addBody("area", bean.getArea());
  404. if (bean.getUpdatetype().equals("1")) {
  405. mpipe.addBody("orderType", "0");
  406. mpipe.addBody("updateTime", bean.getOrdertime());
  407. } else {
  408. mpipe.addBody("orderType", "1");
  409. mpipe.addBody("updateTime", bean.getCanceltime());
  410. }
  411. mpipe.addBody("cpid", configBean.getCpid());
  412. mpipe.addBody("spid", configBean.getSpid());
  413. if (bean.getType().equals("1"))
  414. mpipe.addBody("channel", "spfbtx9");
  415. else if (bean.getType().equals("2"))
  416. mpipe.addBody("channel", "spfbtx4");
  417. else if (bean.getType().equals("3"))
  418. mpipe.addBody("channel", "spfbtx10");
  419. else if (bean.getType().equals("4"))
  420. mpipe.addBody("channel", "spfbtx6");
  421. else if (bean.getType().equals("5"))
  422. mpipe.addBody("channel", "spfbtx7");
  423. else if (bean.getType().equals("6"))
  424. mpipe.addBody("channel", "spfbtx14");
  425. else if (bean.getType().equals("7"))
  426. mpipe.addBody("channel", "spfbtx15");
  427. else if (bean.getType().equals("8"))
  428. mpipe.addBody("channel", "spfbtx16");
  429. else if (bean.getType().equals("9")) {
  430. mpipe.addBody("channel", "spfbtx17");
  431. } else if (bean.getType().equals("11")) {
  432. mpipe.addBody("channel", "csssy");
  433. }
  434. mpipe.addBody("activated", "2");
  435. this.messageService.sendMessage(mpipe);
  436. }catch(Exception e){
  437. logger.error("推送队列出现异常,"+e.getMessage());
  438. }
  439. //优酷送双倍会员需求
  440. this.inserYoutuVipMq(bean, configBean);
  441. }
  442. ***/
  443. public int compareOrderForNet(ChannelOrderBean bean) throws Exception {
  444. int result = 0;
  445. NetOrderBean orderBean = null;
  446. NetOrderBean oldOrderBean = null;
  447. try {
  448. orderBean = getNetOrderInfo(bean);
  449. if( changshiBlackDao.isBlackUser(orderBean.getUserid(),orderBean.getCpid())){
  450. throw new BusinessException("9080", "黑名单用户不处理订购", new String[0]);
  451. }
  452. boolean hasnme = false; //是否次月生效
  453. if(nextMonthEffectService.hasNextMonthBusi(orderBean.getSpid())){
  454. bean.setCpid(orderBean.getCpid());
  455. bean.setSpid(orderBean.getSpid());
  456. hasnme = true;
  457. nextMonthEffectService.process(orderBean);
  458. //设置同步状态值,用于判断是否生成活动关系
  459. bean.setSyncstatus(orderBean.getSyncstatus());
  460. }else{
  461. oldOrderBean = this.netOrderDao.findOrder(orderBean.getCpid(), orderBean.getSpid(), orderBean.getUserid());
  462. if (oldOrderBean != null) {
  463. //沃视频爱奇艺定向流量年包产品限制为当月不能重复订购
  464. if("99134246".equals(orderBean.getSpid()) && valiMonth(orderBean.getOrdertime(),oldOrderBean.getOrdertime())){
  465. throw new BusinessException("9088", "订购失败,反向通知的订购时间小于或等于订购关系表的订购时间", new String[0]);
  466. }
  467. /*****************************************************手厅订购,进行订购渠道更新*************************************************************/
  468. if ("0".equals(oldOrderBean.getStatus())) {
  469. if("sjyyt".equals(orderBean.getOrderchannel())){
  470. try {
  471. //订购渠道优先级更新
  472. this.netOrderDao.orderUpdate(orderBean);
  473. } catch (Exception e) {
  474. e.printStackTrace();
  475. }
  476. throw new BusinessException("9098", "[手厅订购渠道覆盖]已订购,订购渠道更新为sjyyt", new String[0]);
  477. }
  478. throw new BusinessException("9010", "已订购,请不要重复订购", new String[0]);
  479. }else if("1".equals(oldOrderBean.getStatus()) && oldOrderBean.getSpid().equals("99134246")){
  480. orderBean.setEndtime(channelOrderDao.getLastYearDay(oldOrderBean.getEndtime()));
  481. }else if("2".equals(oldOrderBean.getStatus()) && oldOrderBean.getSpid().equals("99134246")){
  482. orderBean.setEndtime(channelOrderDao.getLastYearDayFirst(orderBean.getOrdertime()));
  483. }else{
  484. if("sjyyt".equals(orderBean.getOrderchannel())){
  485. try {
  486. if(orderBean.getOrdertime().getTime() < oldOrderBean.getCanceltime().getTime()){
  487. //订购渠道优先级更新
  488. this.netOrderDao.orderUpdate(orderBean);
  489. saveNetLog(orderBean, "9096", "[手厅订购渠道覆盖]已退订,且手厅订购时间小于退订时间,订购渠道更新为sjyyt", bean.getUpdatetype());
  490. }
  491. } catch (Exception e) {
  492. e.printStackTrace();
  493. }
  494. }
  495. }
  496. /*****************************************************手厅订购,进行订购渠道更新*************************************************************/
  497. if (orderBean.getCpid().equals("changshi") && ("1150".equals(orderBean.getSpid()) || "1040".equals(orderBean.getSpid()))){
  498. if (orderBean.getSpid().equals("1040")) {
  499. throw new BusinessException("9017", "标清订购不处理", new String[0]);
  500. }
  501. String discntValue = orderBean.getSpid().equals("1150") ? "1" : "0";
  502. EcbProductInfo ecbProductInfo = ecbProductDao.queryEcb(bean.getId());
  503. List<DiscntInfo> list = changshiDao.queryDiscntInfo(orderBean.getUserid(), discntValue);
  504. for (DiscntInfo discntInfo : list) {
  505. if (discntInfo.getType().equals("0")
  506. && !discntInfo.getDiscntid().equals(ecbProductInfo.getDiscntCode())) {
  507. throw new BusinessException("9011", "不同资费有未退的订购请求,不处理", new String[0]);
  508. }
  509. }
  510. if (orderBean.getSpid().equals("1150")) {
  511. if (!csOrderControlDao.discntCodeControl(ecbProductInfo.getDiscntCode(), orderBean.getCpid(),
  512. orderBean.getSpid())) {
  513. throw new BusinessException("9903", "不在资费白名单内", new String[0]);
  514. }
  515. if (csOrderControlDao.discntFeeControl(ecbProductInfo.getDiscntCode(), orderBean.getCpid(),
  516. orderBean.getSpid())) {
  517. result = 1;
  518. }
  519. //20220104xu.zhou,只有1150的才走ecbDiscntDao.order,防止其他cpid为changshi的数据落不了订购关系
  520. ecbDiscntDao.order(ecbProductInfo, orderBean);
  521. }
  522. //ecbDiscntDao.order(ecbProductInfo, orderBean);
  523. } else if (NumberUtils.toLong(bean.getOrdertime()) < NumberUtils
  524. .toLong(oldOrderBean.getCanceltimestr())) {
  525. throw new BusinessException("9023", "订购时间晚于本地退订时间不处理", new String[0]);
  526. }
  527. this.netOrderDao.order(orderBean);
  528. } else {
  529. if("99134246".equals(orderBean.getSpid())){
  530. orderBean.setEndtime(channelOrderDao.getLastYearDayFirst(orderBean.getOrdertime()));
  531. }
  532. if (orderBean.getCpid().equals("changshi") && orderBean.getSpid().equals("1150")) {
  533. EcbProductInfo ecbProductInfo = ecbProductDao.queryEcb(bean.getId());
  534. if (!csOrderControlDao.discntCodeControl(ecbProductInfo.getDiscntCode(), orderBean.getCpid(),
  535. orderBean.getSpid())) {
  536. throw new BusinessException("9903", "不在资费白名单内", new String[0]);
  537. }
  538. if (csOrderControlDao.discntFeeControl(ecbProductInfo.getDiscntCode(), orderBean.getCpid(),
  539. orderBean.getSpid())) {
  540. result = 1;
  541. }
  542. ecbDiscntDao.order(ecbProductInfo, orderBean);
  543. } else if (orderBean.getCpid().equals("changshi") && orderBean.getSpid().equals("1040")) {
  544. throw new BusinessException("9017", "标清订购不处理", new String[0]);
  545. // EcbProductInfo ecbProductInfo =
  546. // ecbProductDao.queryEcb(bean.getId());
  547. // ecbDiscntDao.order(ecbProductInfo, orderBean);
  548. }
  549. this.netOrderDao.order(orderBean);
  550. }
  551. }
  552. //不是能力平台次月生效产品,或者是能力平台产品且是正式订购关系表退订操作
  553. if(!hasnme || (hasnme && "5".equals(orderBean.getSyncstatus()))){
  554. saveNetLog(orderBean, "0", "", bean.getUpdatetype());
  555. }
  556. if(hasnme){
  557. this.channelOrderDao.updatestatus(bean.getId(), "0", "次月生效数据订购完成");
  558. }else{
  559. this.channelOrderDao.updatestatus(bean.getId(), "0", "ok");
  560. }
  561. } catch (Exception e) {
  562. result = 1;
  563. result = this.catchOper(e, bean, oldOrderBean);
  564. }
  565. return result;
  566. }
  567. /**
  568. * 验证订购月份是否与已订购月份相同
  569. * @param newOrdertime
  570. * @param oldOrdertime
  571. * @return 相同返回true,反之返回false
  572. */
  573. private boolean valiMonth(Date newOrdertime, Date oldOrdertime){
  574. boolean res = false;
  575. String newmonth = DateFormatUtils.format(newOrdertime, "yyyyMM");
  576. String oldmonth = DateFormatUtils.format(oldOrdertime, "yyyyMM");
  577. if(newmonth.equals(oldmonth)){
  578. res = true;
  579. }
  580. if(!res && Integer.parseInt(newmonth) < Integer.parseInt(oldmonth)){
  581. res = true;
  582. }
  583. return res;
  584. }
  585. /**
  586. * 退订
  587. * @param bean
  588. * @return
  589. * @throws Exception
  590. */
  591. public int compareCancelForNet(ChannelOrderBean bean) throws Exception {
  592. int result = 0;
  593. NetOrderBean orderBean = null;
  594. NetOrderBean oldOrderBean = null;
  595. try {
  596. orderBean = getNetOrderInfo(bean);
  597. if("99134246".equals(orderBean.getSpid())){
  598. throw new BusinessException("9098", "此产品不支持退订!", new String[0]);
  599. }
  600. if(changshiBlackDao.isBlackUser(orderBean.getUserid(),orderBean.getCpid())){
  601. throw new BusinessException("9081", "黑名单用户不处理退订", new String[0]);
  602. }
  603. boolean hasnme = false; //是否次月生效
  604. //能力平台次月生效产品处理流程
  605. if(nextMonthEffectService.hasNextMonthBusi(orderBean.getSpid())){
  606. bean.setCpid(orderBean.getCpid());//用于推送活动关系时使用
  607. bean.setSpid(orderBean.getSpid());//用于推送活动关系时使用
  608. hasnme = true;
  609. nextMonthEffectService.process(orderBean);
  610. //设置同步状态值,用于判断是否生成活动关系
  611. bean.setSyncstatus(orderBean.getSyncstatus());
  612. }else{
  613. oldOrderBean = this.netOrderDao.findOrder(orderBean.getCpid(), orderBean.getSpid(), orderBean.getUserid());
  614. if (oldOrderBean != null) {
  615. /*****************************************************手厅退订,进行退订渠道更新*************************************************************/
  616. if (!"0".equals(oldOrderBean.getStatus())) {
  617. if("sjyyt".equals(orderBean.getCancelchannel()) ){
  618. try {
  619. //退订渠道优先级更新
  620. this.netOrderDao.cancelUpdate(orderBean);
  621. } catch (Exception e) {
  622. e.printStackTrace();
  623. }
  624. throw new BusinessException("9099", "[手厅退订渠道覆盖]已退订,退订渠道更新为sjyyt", new String[0]);
  625. }
  626. throw new BusinessException("9006", "已退订,请不要重复退订", new String[0]);
  627. }else{
  628. if("sjyyt".equals(orderBean.getCancelchannel()) ){
  629. try {
  630. if(orderBean.getCanceltime().getTime() < oldOrderBean.getOrdertime().getTime()
  631. && oldOrderBean.getCancelchannel()!=null && !"".equals(oldOrderBean.getCancelchannel().trim())){
  632. //退订渠道优先级更新
  633. this.netOrderDao.cancelUpdate(orderBean);
  634. saveNetLog(orderBean, "9097", "[手厅退订渠道覆盖]已订购,且手厅退订时间小于订购时间,退订渠道更新为sjyyt", bean.getUpdatetype());
  635. }
  636. } catch (Exception e) {
  637. e.printStackTrace();
  638. }
  639. }
  640. }
  641. /*****************************************************手厅退订,进行退订渠道更新*************************************************************/
  642. //只有1150和1040走ECB订购
  643. if (orderBean.getCpid().equals("changshi") && ("1150".equals(orderBean.getSpid()) || "1040".equals(orderBean.getSpid()))){
  644. // && !"99144185".equals(orderBean.getSpid())
  645. // && !"99144186".equals(orderBean.getSpid())
  646. // && !"99144187".equals(orderBean.getSpid())) {
  647. String discntValue = orderBean.getSpid().equals("1150") ? "1" : "0";
  648. EcbProductInfo ecbProductInfo = ecbProductDao.queryEcb(bean.getId());
  649. List<DiscntInfo> list = changshiDao.queryDiscntInfo(orderBean.getUserid(), discntValue);
  650. for (DiscntInfo discntInfo : list) {
  651. if (discntInfo.getType().equals("0")
  652. && !discntInfo.getDiscntid().equals(ecbProductInfo.getDiscntCode())) {
  653. throw new BusinessException("9011", "不同资费有未退得订购请求,不处理", new String[0]);
  654. }
  655. }
  656. ecbDiscntDao.cancel(ecbProductInfo, orderBean);
  657. } else if (NumberUtils.toLong(bean.getCanceltime()) < NumberUtils
  658. .toLong(oldOrderBean.getOrdertimestr())) {
  659. throw new BusinessException("9025", "退订时间晚于本地订购时间不处理", new String[0]);
  660. }
  661. this.netOrderDao.cancelOrder(orderBean);
  662. } else {
  663. throw new BusinessException("9026", "本地无订购", new String[0]);
  664. }
  665. }
  666. //不是能力平台次月生效产品,或者是能力平台产品且是正式订购关系表退订操作
  667. if(!hasnme || (hasnme && "5".equals(orderBean.getSyncstatus()))){
  668. saveNetLog(orderBean, "0", "", bean.getUpdatetype());
  669. }
  670. if(hasnme){
  671. this.channelOrderDao.updatestatus(bean.getId(), "0", "次月生效数据退订完成 ");
  672. }else{
  673. this.channelOrderDao.updatestatus(bean.getId(), "0", "ok");
  674. }
  675. } catch (Exception e) {
  676. result = 1;
  677. catchOper(e,bean,orderBean);
  678. }
  679. return result;
  680. }
  681. /**
  682. * 异常处理
  683. * @param e
  684. * @param bean
  685. * @param orderBean
  686. * @return
  687. */
  688. private int catchOper(Exception e, ChannelOrderBean bean, NetOrderBean orderBean){
  689. int result = 1;
  690. if ((e instanceof BusinessException)) {
  691. try {
  692. //this.channelOrderDao.updatestatus(bean.getId(), ((BusinessException) e).getCode());
  693. String resultInfo = ((BusinessException) e).getMessage();
  694. String resultcode = ((BusinessException) e).getCode();
  695. if(!StringUtils.isEmpty(resultInfo) && resultInfo.length()>500){
  696. resultInfo = resultInfo.substring(0, 500);
  697. }
  698. logger.info("resultInfo="+resultInfo+", resultcode="+resultcode);
  699. this.channelOrderDao.updatestatus(bean.getId(), resultcode, resultInfo);
  700. } catch (Exception e2) {
  701. e.printStackTrace();
  702. logger.error(bean.getId()+"ChannelOrderService更新数据出现异常"+e.getMessage());
  703. }
  704. try {
  705. saveNetLog(orderBean, ((BusinessException) e).getCode(), e.getMessage(), bean.getUpdatetype());
  706. } catch (Exception e2) {
  707. e.printStackTrace();
  708. logger.error(bean.getId()+"ChannelOrderService写日志出现异常"+e.getMessage());
  709. }
  710. result = Integer.valueOf(((BusinessException) e).getCode()).intValue();
  711. } else {
  712. e.printStackTrace();
  713. try {
  714. //this.channelOrderDao.updatestatus(bean.getId(), "8000");
  715. String resultInfo = e.getMessage();
  716. String resultcode = "8000";
  717. if(!StringUtils.isEmpty(resultInfo) && resultInfo.length()>500){
  718. resultInfo = resultInfo.substring(0, 500);
  719. }
  720. this.channelOrderDao.updatestatus(bean.getId(), resultcode, resultInfo);
  721. } catch (Exception e2) {
  722. e.printStackTrace();
  723. logger.error(bean.getId()+"ChannelOrderService更新数据出现异常"+e.getMessage());
  724. }
  725. try {
  726. saveNetLog(orderBean, "8000", "系统忙!", bean.getUpdatetype());
  727. } catch (Exception e2) {
  728. e.printStackTrace();
  729. logger.error(bean.getId()+"ChannelOrderService写日志出现异常"+e.getMessage());
  730. }
  731. }
  732. return result;
  733. }
  734. public int compareOrderForSdk(ChannelOrderBean bean) throws Exception {
  735. int result = 0;
  736. SDKOrderInfo orderInfo = null;
  737. SdkOrderBean oldOrderBean = null;
  738. try {
  739. orderInfo = getSdkOrderInfo(bean);
  740. oldOrderBean = this.sdkOrderDao.queryOrderList(orderInfo.getUserid(), orderInfo.getCpid(),
  741. orderInfo.getProductId());
  742. if (oldOrderBean != null) {
  743. String status = oldOrderBean.getStatus();
  744. if (status.equals("0")) {
  745. throw new BusinessException("9010", "已订购,请不要重复订购", new String[0]);
  746. }
  747. if (NumberUtils.toLong(bean.getOrdertime()) < NumberUtils.toLong(oldOrderBean.getCanceltime())) {
  748. throw new BusinessException("9023", "订购时间晚于本地退订时间不处理", new String[0]);
  749. }
  750. orderInfo.setId(oldOrderBean.getId());
  751. this.sdkOrderDao.order(orderInfo, true);
  752. } else {
  753. orderInfo.setId(this.sysDao.getID());
  754. this.sdkOrderDao.order(orderInfo, false);
  755. }
  756. saveSdkLog(orderInfo, "0", "");
  757. this.channelOrderDao.updatestatus(bean.getId(), "0");
  758. } catch (Exception e) {
  759. result = 1;
  760. e.printStackTrace();
  761. if ((e instanceof BusinessException)) {
  762. this.channelOrderDao.updatestatus(bean.getId(), ((BusinessException) e).getCode());
  763. saveSdkLog(orderInfo, ((BusinessException) e).getCode(), e.getMessage());
  764. } else {
  765. this.channelOrderDao.updatestatus(bean.getId(), "8000");
  766. saveSdkLog(orderInfo, "8000", "系统忙!");
  767. }
  768. }
  769. return result;
  770. }
  771. public int compareCancelForSdk(ChannelOrderBean bean) {
  772. int result = 0;
  773. SDKOrderInfo orderInfo = null;
  774. SdkOrderBean oldOrderBean = null;
  775. try {
  776. orderInfo = getSdkOrderInfo(bean);
  777. oldOrderBean = this.sdkOrderDao.queryOrderList(orderInfo.getUserid(), orderInfo.getCpid(),
  778. orderInfo.getProductId());
  779. if (oldOrderBean != null) {
  780. orderInfo.setId(oldOrderBean.getId());
  781. String status = oldOrderBean.getStatus();
  782. if (!status.equals("0")) {
  783. throw new BusinessException("9006", "已退订,请不要重复退订", new String[0]);
  784. }
  785. if (NumberUtils.toLong(bean.getCanceltime()) < NumberUtils.toLong(oldOrderBean.getOrdertime())) {
  786. throw new BusinessException("9025", "退订时间晚于本地订购时间不处理", new String[0]);
  787. }
  788. this.sdkOrderDao.cancelOrder(orderInfo);
  789. } else {
  790. throw new BusinessException("9026", "退订失败,本地无订购", new String[0]);
  791. }
  792. saveSdkLog(orderInfo, "0", "");
  793. this.channelOrderDao.updatestatus(bean.getId(), "0");
  794. } catch (Exception e) {
  795. result = 1;
  796. e.printStackTrace();
  797. if ((e instanceof BusinessException)) {
  798. this.channelOrderDao.updatestatus(bean.getId(), ((BusinessException) e).getCode());
  799. saveSdkLog(orderInfo, ((BusinessException) e).getCode(), e.getMessage());
  800. } else {
  801. this.channelOrderDao.updatestatus(bean.getId(), "8000");
  802. saveSdkLog(orderInfo, "8000", "系统忙!");
  803. }
  804. }
  805. return result;
  806. }
  807. public String getDateStr(String str) throws ParseException {
  808. return DateFormatUtils.format(DateUtils.parseDate(str, new String[] { "yyyyMMddHHmmss" }), "yyyyMMdd");
  809. }
  810. public void saveSdkLog(SDKOrderInfo orderInfo, String errorcode, String errorinfo) {
  811. this.sdkOrderDao.insertOrderLog(orderInfo, errorcode, errorinfo, "");
  812. }
  813. public void saveNetLog(NetOrderBean orderInfo, String errorcode, String errorinfo, String ordertype)
  814. throws SQLException {
  815. OrderLog orderLog = new OrderLog();
  816. orderLog.setApptype(orderInfo.getApptype());
  817. orderLog.setChannel(ordertype.equals("1") ? orderInfo.getOrderchannel() : orderInfo.getCancelchannel());
  818. orderLog.setOrderstatus(orderInfo.getOrderstatus());
  819. orderLog.setStatus(Integer.valueOf(orderInfo.getStatus()).intValue());
  820. orderLog.setCpid(orderInfo.getCpid());
  821. orderLog.setIsexperience(orderInfo.getIsexperience());
  822. orderLog.setOrdertype(orderInfo.getOrdertype());
  823. orderLog.setProvince(orderInfo.getProvince());
  824. orderLog.setArea(orderInfo.getArea());
  825. orderLog.setSpid(orderInfo.getSpid());
  826. orderLog.setUserid(orderInfo.getUserid());
  827. orderLog.setErrorcode(errorcode);
  828. orderLog.setErrorinfo(errorinfo);
  829. this.netOrderDao.addOrderLog(orderLog);
  830. }
  831. public SDKOrderInfo getSdkOrderInfo(ChannelOrderBean bean) throws Exception {
  832. OrderConfigBean orderConfigBean = getOrderConfigBean(bean.getProductid());
  833. SDKOrderInfo orderInfo = new SDKOrderInfo();
  834. orderInfo.setUserid(bean.getUserid());
  835. orderInfo.setCpid(orderConfigBean.getCpid());
  836. orderInfo.setProductId(orderConfigBean.getSpid());
  837. orderInfo.setAppid("40000001");
  838. orderInfo.setSectionId(orderConfigBean.getSpid());
  839. orderInfo.setProvince(bean.getProvince());
  840. bean.setArea(bean.getArea());
  841. orderInfo.setIsExperience(0);
  842. orderInfo.setType(1);
  843. orderInfo.setAppType("");
  844. if (bean.getUpdatetype().equals("1")) {
  845. if (StringUtils.isEmpty(bean.getOrdertime())) {
  846. throw new BusinessException("9012", "参数错误", new String[0]);
  847. }
  848. orderInfo.setOrderTime(DateUtils.parseDate(bean.getOrdertime(), new String[] { "yyyyMMddHHmmss" }));
  849. orderInfo.setOrdertimestr(bean.getOrdertime());
  850. orderInfo.setOrderChannel(this.convertChannel(bean));
  851. orderInfo.setStatus("0");
  852. orderInfo.setOrderStatus(3);
  853. } else {
  854. if (StringUtils.isEmpty(bean.getCanceltime())) {
  855. throw new BusinessException("9012", "参数错误", new String[0]);
  856. }
  857. orderInfo.setCancelTime(DateUtils.parseDate(bean.getCanceltime(), new String[] { "yyyyMMddHHmmss" }));
  858. orderInfo.setCanceltimestr(bean.getCanceltime());
  859. orderInfo.setCancelChannel(this.convertChannel(bean));
  860. orderInfo.setStatus("1");
  861. orderInfo.setOrderStatus(5);
  862. }
  863. return orderInfo;
  864. }
  865. public NetOrderBean getNetOrderInfo(ChannelOrderBean bean) throws Exception {
  866. OrderConfigBean orderConfigBean = getOrderConfigBean(bean.getProductid());
  867. NetOrderBean netOrderBean = new NetOrderBean();
  868. netOrderBean.setUserid(bean.getUserid());
  869. netOrderBean.setCpid(orderConfigBean.getCpid());
  870. netOrderBean.setBatchid(DateFormatUtils.format(new Date(), "yyyyMMdd"));
  871. netOrderBean.setSpid(orderConfigBean.getSpid());
  872. netOrderBean.setProvince(bean.getProvince());
  873. netOrderBean.setArea(bean.getArea());
  874. if (bean.getUpdatetype().equals("1")) {
  875. if (StringUtils.isEmpty(bean.getOrdertime())) {
  876. throw new BusinessException("9012", "参数错误", new String[0]);
  877. }
  878. netOrderBean.setOrdertime(DateUtils.parseDate(bean.getOrdertime(), new String[] { "yyyyMMddHHmmss" }));
  879. netOrderBean.setOrderchannel(this.convertChannel(bean));
  880. netOrderBean.setStatus("0");
  881. netOrderBean.setOrderstatus(3);
  882. } else {
  883. if (StringUtils.isEmpty(bean.getCanceltime())) {
  884. throw new BusinessException("9012", "参数错误", new String[0]);
  885. }
  886. netOrderBean.setCanceltime(DateUtils.parseDate(bean.getCanceltime(), new String[] { "yyyyMMddHHmmss" }));
  887. netOrderBean.setCancelchannel(this.convertChannel(bean));
  888. netOrderBean.setStatus("1");
  889. netOrderBean.setOrderstatus(5);
  890. }
  891. /**
  892. * 计费点相同的产品SPID替换
  893. */
  894. nextMonthEffectService.replaceSameVacSpid(netOrderBean);
  895. /**
  896. * 次月生效产品SPID替换
  897. */
  898. nextMonthEffectService.replaceSpid(netOrderBean);
  899. //验证业务操作限制(是否能订购,是否能退订)
  900. if(this.valiOperLimit(bean.getId(), netOrderBean.getSpid(), bean.getUpdatetype())){
  901. //this.channelOrderDao.updatestatus(orderBean.getId(), "9016", "业务办理限制,不处理");
  902. throw new BusinessException("9016", "业务办理限制,不处理", new String[0]);
  903. }
  904. return netOrderBean;
  905. }
  906. public OrderConfigBean getOrderConfigBean(String vacproductid) throws SQLException {
  907. return this.orderConfigDao.findByProductid(vacproductid);
  908. }
  909. /**
  910. * 转换渠道名称
  911. * @param bean
  912. * @return
  913. */
  914. private String convertChannel(ChannelOrderBean bean){
  915. String channel = "dqftp";
  916. if (bean.getType().equals("1"))
  917. channel = "pftp";
  918. else if (bean.getType().equals("2"))
  919. channel = "dftp";
  920. else if (bean.getType().equals("3"))
  921. channel = "xxh";
  922. else if (bean.getType().equals("4"))
  923. channel = "cbss";
  924. else if (bean.getType().equals("5"))
  925. channel = "bss";
  926. else if (bean.getType().equals("6"))
  927. channel = "sjyyt";
  928. else if (bean.getType().equals("7"))
  929. channel = "wsyyt";
  930. else if (bean.getType().equals("8"))
  931. channel = "dxyyt";
  932. else if (bean.getType().equals("9")) {
  933. channel = "zzzd";
  934. } else if (bean.getType().equals("11")) {
  935. channel = "chuangf";
  936. }
  937. return channel;
  938. }
  939. public static void main(String[] args) {
  940. System.out.println(DateFormatUtils.format(new Date(), "yyyyMMdd"));
  941. }
  942. /*
  943. * 赠送会员超时异步队列推送
  944. * @param orderInfo
  945. */
  946. /***
  947. public void inserYoutuVipMq(ChannelOrderBean bean, OrderConfigBean configBean){
  948. try {
  949. SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
  950. String currtime = sdf.format(new Date()); //当前时间
  951. String youtuVipEndtime = dictionaryDao.getValue("youtuVipEndtime");
  952. if(youtuVipEndtime == null || "".equals(youtuVipEndtime)){
  953. System.out.println("优酷订购赠送双会员无结束时间配置");
  954. return;
  955. }
  956. if(Long.parseLong(currtime) > Long.parseLong(youtuVipEndtime)){
  957. System.out.println("优酷订购赠送双会员活动已结束");
  958. return;
  959. }
  960. if (bean.getUpdatetype().equals("1") && "youtu".equals(configBean.getCpid()) && "1167".equals(configBean.getSpid())) {
  961. MessagePipe mpipe = new MessagePipe();
  962. mpipe.setHeader("youtuvip");
  963. mpipe.addBody("userid", bean.getUserid());
  964. mpipe.addBody("cpid", configBean.getCpid());
  965. mpipe.addBody("spid", configBean.getSpid());
  966. mpipe.addBody("sendcont","1");
  967. this.messageService.sendMessage(mpipe);
  968. System.out.println("优酷订购赠送双会员推送队列成功,userid=>"+bean.getUserid());
  969. }
  970. } catch (Exception e) {
  971. //e.printStackTrace();
  972. System.out.println("赠送会员超时异步重试队列推送出现异常,"+e.getMessage());
  973. }
  974. }
  975. ***/
  976. /**
  977. * 20元沃派视频增加拓维C+接口
  978. * @param orderBean
  979. */
  980. /***
  981. private void tuoweiInvoke(ChannelOrderBean orderBean){
  982. boolean hasrec = false;
  983. long starttime = System.currentTimeMillis();
  984. HashMap params = new HashMap();
  985. try {
  986. OrderConfigBean confBean = getOrderConfigBean(orderBean.getProductid());
  987. if(confBean == null) return;
  988. List<HashMap> confList = csmakeupDao.getBusiConf(confBean.getSpid());
  989. if(confList != null && confList.size()>0){
  990. hasrec = true;
  991. HashMap conf = confList.get(0);
  992. conf.put("SENO", csmakeupDao.getNo()); //获取业务流水号
  993. params.put("SENO", conf.get("SENO")); //获取业务流水号
  994. params.put("CHANNEL", "JOB-"+convertChannel(orderBean));
  995. params.put("USERID", orderBean.getUserid());
  996. params.put("PROVINCE", orderBean.getProvince());
  997. params.put("AREA", orderBean.getArea());
  998. params.put("VIPRECODE", "-1");
  999. params.put("VIPREINFO", "");
  1000. params.put("RESULTCODE", "0");
  1001. params.put("RESULTINFO", "ok");
  1002. params.put("STATUS", "0");
  1003. if("2".equals(orderBean.getUpdatetype())){//1 订购 2 退订
  1004. params.put("STATUS", "1");
  1005. }
  1006. params.put("CPID", conf.get("CPID"));
  1007. params.put("MUSPID", conf.get("MUSPID"));
  1008. String result = invokeTwvip(orderBean, conf); //调拓维会员接口返回结果
  1009. if(!"".equals(result)){
  1010. params.put("VIPRECODE", JSON.parseObject(result).get("code").toString());
  1011. //params.put("VIPREINFO", JSON.parseObject(result).get("message").toString());
  1012. params.put("VIPREINFO", result);
  1013. }
  1014. }
  1015. } catch (Exception e) {
  1016. e.printStackTrace();
  1017. logger.error("调拓维C+接口出现异常,"+e.getMessage());
  1018. params.put("VIPRECODE", "8000");
  1019. params.put("VIPREINFO", e.getMessage());
  1020. params.put("RESULTCODE", "8000");
  1021. params.put("RESULTINFO", "调拓维C+会员接口异常,"+e.getMessage());
  1022. } finally {
  1023. if(hasrec){
  1024. try{
  1025. String vipreinfo = (String)params.get("VIPREINFO");
  1026. if(vipreinfo != null && vipreinfo.length()>500){
  1027. params.put("VIPREINFO", vipreinfo.subSequence(0, 450));
  1028. }
  1029. params.put("TIMES", System.currentTimeMillis()-starttime);
  1030. csmakeupDao.addOrderRec(params);
  1031. }catch(Exception e){
  1032. e.printStackTrace();
  1033. logger.error("拓维C+接口添加订购记录出现异常,"+e.getMessage());
  1034. }
  1035. }
  1036. }
  1037. }
  1038. ***/
  1039. /**
  1040. * 调拓维会员接口
  1041. * @param orderBean
  1042. * @param conf
  1043. * @return
  1044. * @throws Exception
  1045. */
  1046. /***
  1047. private String invokeTwvip(ChannelOrderBean orderBean, HashMap conf) throws Exception{
  1048. String result = ""; //调拓维会员接口返回结果
  1049. String vipurl = "";
  1050. String jsonParams = "";
  1051. if("2".equals(orderBean.getUpdatetype())){//退订
  1052. vipurl = dictionaryDao.getValue("csmakeupvipcancelurl");
  1053. jsonParams = this.fullCancelParams(orderBean.getUserid(), conf);
  1054. }else{//订购
  1055. vipurl = dictionaryDao.getValue("csmakeupviporderurl");
  1056. jsonParams = this.fullOrderParams(orderBean.getUserid(),conf);
  1057. }
  1058. logger.info("vipurl=>"+vipurl+", jsonParams=>"+jsonParams);
  1059. result = HttpInvoke.sendhttpsReq("POST", vipurl, jsonParams, getProperty(orderBean.getUpdatetype()));
  1060. logger.info("调拓维会员接口返回结果:"+result);
  1061. //去空格、换行符号
  1062. if(result != null) result = result.replaceAll("\r|\n", "").replaceAll(" ", "").replaceAll(" ", "");
  1063. //result = "{\"code\":0,\"message\":\"成功\",\"success\":true}";
  1064. //result = "{\"code\":7007,\"message\":\"签名无效\",\"success\":false}";
  1065. return result;
  1066. }
  1067. ***/
  1068. /**
  1069. * 获取请求属性性
  1070. * @return
  1071. */
  1072. /***
  1073. private static Map getProperty(String updatetype){
  1074. Map reqProperty = new HashMap();
  1075. if("1".equals(updatetype)){//订购
  1076. reqProperty.put("Content-type", "application/json;charset=utf-8");
  1077. }else{//退订
  1078. reqProperty.put("Content-type", "application/x-www-form-urlencoded");
  1079. }
  1080. return reqProperty;
  1081. }
  1082. ***/
  1083. /**
  1084. * 填充退订会员参数
  1085. * @param mobile
  1086. * @param conf
  1087. * @return
  1088. * @throws Exception
  1089. */
  1090. /**
  1091. private String fullCancelParams(String mobile, HashMap conf) throws Exception {
  1092. String jsonParams = "";
  1093. HashMap<String, String> params = new HashMap<String, String>();
  1094. String timestamp = System.currentTimeMillis()+"";
  1095. String spid = conf.get("VSPID").toString();
  1096. String cpid = conf.get("VCPID").toString();
  1097. String userType = "1";
  1098. String password = conf.get("VPWD").toString();
  1099. mobile = DesUtil.encode(mobile, password); //手机号码加密
  1100. String signature = MD5.MD5Encode(spid + cpid + mobile + timestamp + userType + password);
  1101. JSONObject json = new JSONObject();
  1102. json.put("timestamp", timestamp);
  1103. json.put("signature", signature);
  1104. json.put("spid", spid);
  1105. json.put("cpid", cpid);
  1106. json.put("mobile", mobile);
  1107. json.put("userType", userType);
  1108. jsonParams = json.toJSONString();
  1109. //去除json格式
  1110. jsonParams = jsonParams.replaceAll(":", "=").replaceAll(",", "&")
  1111. .replaceAll("\"", "").replaceAll("\\{", "").replaceAll("\\}", "");
  1112. return jsonParams;
  1113. }
  1114. ***/
  1115. /**
  1116. * 填充订购会员参数
  1117. * @param mobile
  1118. * @param conf
  1119. * @return
  1120. * @throws Exception
  1121. */
  1122. /***
  1123. private String fullOrderParams(String mobile, HashMap conf)throws Exception {
  1124. String jsonParams = "";
  1125. String timestamp = System.currentTimeMillis()+"";
  1126. String spid = conf.get("VSPID").toString();
  1127. String cpid = conf.get("VCPID").toString();
  1128. String memberUrl = "";
  1129. String orderNumber = conf.get("SENO").toString();
  1130. String password = conf.get("VPWD").toString();
  1131. mobile = DesUtil.encode(mobile, password); //手机号码加密
  1132. String signature = MD5.MD5Encode(spid + cpid + orderNumber + timestamp + password);
  1133. JSONObject json = new JSONObject();
  1134. JSONArray jsonArray = new JSONArray();
  1135. jsonArray.add(mobile);
  1136. json.put("timestamp", timestamp);
  1137. json.put("signature", signature);
  1138. json.put("spid", spid);
  1139. json.put("cpid", cpid);
  1140. json.put("mobiles", jsonArray);
  1141. json.put("memberUrl", memberUrl);
  1142. json.put("orderNumber", orderNumber);
  1143. jsonParams = json.toJSONString();
  1144. return jsonParams;
  1145. }
  1146. ***/
  1147. /**
  1148. * 音乐订购关系推送
  1149. *
  1150. * @param orderInfo
  1151. */
  1152. /**
  1153. private void pushMusic(ChannelOrderBean orderInfo, OrderConfigBean capRevSyncOrder) {
  1154. SpBean spBean =spDao.querySpByProductId(orderInfo.getProductid());
  1155. logger.info("音乐公司==="+new Gson().toJson(orderInfo)+"===="+new Gson().toJson(capRevSyncOrder));
  1156. if (spBean != null && "fhcp".equals(spBean.getCpid()) && ("99134250".equals(spBean.getSpid())||"99134256".equals(spBean.getSpid()))) {
  1157. Gson gson = new Gson();
  1158. SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
  1159. SimpleDateFormat sdl=new SimpleDateFormat("yyyyMMddhhmmss");
  1160. try {
  1161. Map<String, Object> map = new HashMap<String, Object>();
  1162. map.put("userid", orderInfo.getUserid());
  1163. map.put("cpid", spBean.getCpid());
  1164. map.put("spid", spBean.getSpid());
  1165. if ("1".equals(orderInfo.getUpdatetype())) {
  1166. map.put("channel", this.convertChannel(orderInfo));
  1167. map.put("opertime", sdf.format(sdl.parse(orderInfo.getOrdertime())));
  1168. map.put("orderType", "0");
  1169. map.put("endTime", "");
  1170. } else{
  1171. String dateStr = sdf.format(sdl.parse(orderInfo.getCanceltime()));
  1172. map.put("channel", this.convertChannel(orderInfo));
  1173. map.put("opertime",dateStr);
  1174. map.put("orderType", "1");
  1175. if (dateStr!=null&&dateStr.length()>7) {
  1176. SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
  1177. int year = Integer.valueOf(dateStr.substring(0, 4));
  1178. int month = Integer.valueOf(dateStr.substring(5, 7));
  1179. Calendar calendar = Calendar.getInstance();
  1180. calendar.set(year,month,1);
  1181. calendar.add(Calendar.DATE,-1);
  1182. String endTime=format.format(calendar.getTime())+ " 23:59:59";
  1183. map.put("endTime", endTime);
  1184. } else{
  1185. map.put("endTime", "");
  1186. }
  1187. }
  1188. map.put("kafkaid", orderInfo.getId());
  1189. map.put("type", "kafkaMusic");
  1190. //测试环境
  1191. String url = dictionaryDao.getValue("mqReciveUrl");
  1192. System.out.println("音乐公司推送队列数据:" + orderInfo);
  1193. URLUtil.post(url, gson.toJson(map), 1000 * 30);
  1194. } catch (Exception e) {
  1195. e.printStackTrace();
  1196. System.out.println("音乐公司推送队列出现异常," + e.getMessage() + ", data:" + gson.toJson(orderInfo));
  1197. }
  1198. }
  1199. }
  1200. **/
  1201. /**
  1202. * 验证业务操作限制(是否能订购,是否能退订)
  1203. * @param id
  1204. * @param spid
  1205. * @param updatetype 操作标识:1订购、 2退订
  1206. * @return
  1207. * @throws Exception
  1208. */
  1209. private boolean valiOperLimit(String id, String spid,String updatetype) throws Exception {
  1210. //数据来源
  1211. String datasrc = "SJYYT";
  1212. List<HashMap> dataList = busiOperlimitConfDao.getValue(spid);
  1213. boolean haslimit = false;
  1214. if(dataList != null && dataList.size()>0){
  1215. //转换为订购和退订标准标识,把1转为0,2转为1
  1216. updatetype = "1".equals(updatetype) ? "0" : ("2".equals(updatetype) ? "1":updatetype);
  1217. for(HashMap tm : dataList){
  1218. if(updatetype.equals(tm.get("OPERTYPE")) && datasrc.equals(tm.get("DATASRC"))){
  1219. haslimit = true;
  1220. break;
  1221. }
  1222. }
  1223. //被限制抛异常
  1224. if(haslimit){
  1225. //throw new BusinessException("9016", id+"业务办理限制,不处理", new String[0]);
  1226. }
  1227. }
  1228. return haslimit;
  1229. }
  1230. /**
  1231. * 生成领取会员的活动关系
  1232. * @param bean
  1233. * @param configBean
  1234. */
  1235. public void insertMqOffline(ChannelOrderBean bean, OrderConfigBean configBean) {
  1236. try{
  1237. //20220507增加能力平次月生效处理逻辑
  1238. //不是能力平台次月生效产品,或者是能力平台产品且是正式订购关系表退订操作
  1239. if(nextMonthEffectService.hasNextMonthBusi(bean.getSpid())){
  1240. if("5".equals(bean.getSyncstatus())){
  1241. logger.info("能力平台正式表退订操作,推送到mq生成活动关系");
  1242. }else{
  1243. logger.info("能力平台非正式表退订操作,不推送到mq");
  1244. return;
  1245. }
  1246. }
  1247. MessagePipe mpipe = new MessagePipe();
  1248. mpipe.setHeader("orderoffline");
  1249. mpipe.addBody("userid", bean.getUserid());
  1250. mpipe.addBody("province", bean.getProvince());
  1251. mpipe.addBody("area", bean.getArea());
  1252. if (bean.getUpdatetype().equals("1")) {
  1253. mpipe.addBody("orderType", "0");
  1254. mpipe.addBody("updateTime", bean.getOrdertime());
  1255. } else {
  1256. mpipe.addBody("orderType", "1");
  1257. mpipe.addBody("updateTime", bean.getCanceltime());
  1258. }
  1259. mpipe.addBody("cpid", configBean.getCpid());
  1260. mpipe.addBody("spid", configBean.getSpid());
  1261. if (bean.getType().equals("1"))
  1262. mpipe.addBody("channel", "spfbtx9");
  1263. else if (bean.getType().equals("2"))
  1264. mpipe.addBody("channel", "spfbtx4");
  1265. else if (bean.getType().equals("3"))
  1266. mpipe.addBody("channel", "spfbtx10");
  1267. else if (bean.getType().equals("4"))
  1268. mpipe.addBody("channel", "spfbtx6");
  1269. else if (bean.getType().equals("5"))
  1270. mpipe.addBody("channel", "spfbtx7");
  1271. else if (bean.getType().equals("6"))
  1272. mpipe.addBody("channel", "spfbtx14");
  1273. else if (bean.getType().equals("7"))
  1274. mpipe.addBody("channel", "spfbtx15");
  1275. else if (bean.getType().equals("8"))
  1276. mpipe.addBody("channel", "spfbtx16");
  1277. else if (bean.getType().equals("9")) {
  1278. mpipe.addBody("channel", "spfbtx17");
  1279. } else if (bean.getType().equals("11")) {
  1280. mpipe.addBody("channel", "csssy");
  1281. }
  1282. mpipe.addBody("activated", "2");
  1283. this.messageService.sendMessage(mpipe);
  1284. }catch(Exception e){
  1285. e.printStackTrace();
  1286. logger.error("推送队列出现异常,"+e.getMessage());
  1287. }
  1288. //优酷送双倍会员需求
  1289. //this.inserYoutuVipMq(bean, configBean);
  1290. }
  1291. }