d65c095bfd80e987a720d2a11fa13a8f0236e216.svn-base 31 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631
  1. package com.chinacreator.process.service;
  2. import com.chinacreator.common.exception.BusinessException;
  3. import com.chinacreator.process.bean.*;
  4. import com.chinacreator.process.dao.*;
  5. import com.chinacreator.process.util.*;
  6. import org.apache.commons.lang.StringUtils;
  7. import org.apache.commons.lang.math.NumberUtils;
  8. import org.apache.commons.lang.time.DateUtils;
  9. import org.apache.log4j.Logger;
  10. import org.springframework.beans.factory.annotation.Autowired;
  11. import org.springframework.stereotype.Component;
  12. import java.sql.SQLException;
  13. import java.util.HashMap;
  14. import java.util.Map;
  15. @Component
  16. public class TencentVacOrderService {
  17. private Logger logger = Logger.getLogger("tencentvacorder");
  18. private Logger log = Logger.getLogger(TencentVacOrderService.class);
  19. @Autowired
  20. private VacSyncOrderDao vacSyncOrderDao;
  21. @Autowired
  22. private NetOrderDao netOrderDao;
  23. @Autowired
  24. private WhiteDao whiteDao;
  25. @Autowired
  26. private ActivityConfigDao activityConfigDao;
  27. @Autowired
  28. private VacActiveDao vacActiveDao;
  29. @Autowired
  30. private PreOrderDao preOrderDao;
  31. @Autowired
  32. private DictionaryDao dictionaryDao;
  33. public int handle(VacOrderBean vacOrderBean) {
  34. String errorcode = "0";
  35. String errorinfo="";
  36. NetOrderBean netOrderBean = null;
  37. int savelog = 0;
  38. try{
  39. netOrderBean = getNetOrderInfo(vacOrderBean);
  40. check(vacOrderBean);
  41. if (vacOrderBean.getOrderstatus().equals("0")) {
  42. savelog = order(netOrderBean, vacOrderBean);
  43. } else if (vacOrderBean.getOrderstatus().equals("1")) {
  44. cancel(netOrderBean, vacOrderBean);
  45. }
  46. }catch(Exception e){
  47. if (e instanceof BusinessException) {
  48. errorcode = ((BusinessException) e).getCode();
  49. errorinfo=e.getMessage();
  50. }else{
  51. errorcode = "8000";
  52. errorinfo="系统错误";
  53. }
  54. log.error(vacOrderBean.getUserid(),e);
  55. }finally {
  56. try {
  57. if(savelog == 0){
  58. saveNetLog(netOrderBean, errorcode, errorinfo);
  59. }
  60. } catch (SQLException e) {
  61. log.error(vacOrderBean.getUserid(),e);
  62. }
  63. Map<String, String> map = new HashMap<String, String>();
  64. map.put("userid", vacOrderBean.getUserid());
  65. map.put("orderstatus", vacOrderBean.getOrderstatus());
  66. map.put("ordertype", vacOrderBean.getOrdertype());
  67. if(netOrderBean != null){
  68. map.put("cpid", netOrderBean.getCpid());
  69. map.put("spid", netOrderBean.getSpid());
  70. }
  71. map.put("errorcode", errorcode);
  72. map.put("errorinfo", errorinfo);
  73. map.put("type", "0");
  74. logger.info(JsonUtil.objectToJson(map));
  75. }
  76. return errorcode.equals("0") ? 0 :1;
  77. }
  78. public void check(VacOrderBean vacOrderBean) throws SQLException, BusinessException {
  79. if (StringUtils.isNotEmpty(vacOrderBean.getProvince()) && vacOrderBean.getOrderstatus().equals("0")) {
  80. if (vacOrderBean.getOrdertype().equals("1")) {// 0元
  81. if (vacSyncOrderDao.canOrder(vacOrderBean.getProvince(), "8000652500")) {
  82. throw new BusinessException("9069", vacOrderBean.getProvince() + "省份被限制");
  83. }
  84. } else if (vacOrderBean.getOrdertype().equals("2")) {// 20包月
  85. if (vacSyncOrderDao.canOrder(vacOrderBean.getProvince(), "8000656500")) {
  86. throw new BusinessException("9069", vacOrderBean.getProvince() + "省份被限制");
  87. }
  88. } else if (vacOrderBean.getOrdertype().equals("0")) {// 20元按次
  89. if (vacSyncOrderDao.canOrder(vacOrderBean.getProvince(), "8000650900")) {
  90. throw new BusinessException("9069", vacOrderBean.getProvince() + "省份被限制");
  91. }
  92. }
  93. }
  94. }
  95. public int order(NetOrderBean netOrderBean, VacOrderBean vacOrderBean) throws Exception {
  96. boolean ispre = false;
  97. if("84".equals(netOrderBean.getSpid())){
  98. throw new BusinessException("9719", "84产品订购不处理", new String[0]);
  99. }
  100. if (vacOrderBean.getOrdertype().equals("0")) {// 20元按次
  101. NetOrderBean orderBeanfor101 = this.netOrderDao.findOrder(netOrderBean.getCpid(), "101",
  102. netOrderBean.getUserid());
  103. NetOrderBean orderBeanfor84 = this.netOrderDao.findOrder(netOrderBean.getCpid(), netOrderBean.getSpid(),
  104. netOrderBean.getUserid());
  105. if (orderBeanfor101 != null && orderBeanfor84 == null) {// 有包月订购关系,20元按次请求
  106. if (orderBeanfor101.getStatus().equals("0")) {
  107. throw new BusinessException("9710", "重复订购", new String[0]);
  108. } else if (orderBeanfor101.getStatus().equals("1")) {
  109. throw new BusinessException("9711", "已有有效包月订购,按次不处理", new String[0]);
  110. }else if(orderBeanfor101.getStatus().equals("2")){
  111. if (NumberUtils.toLong(orderBeanfor101.getCanceltimestr()) > NumberUtils
  112. .toLong(netOrderBean.getOrdertimestr())) {
  113. throw new BusinessException("9902", "vac订购时间早于本地退订时间", new String[0]);
  114. }
  115. }
  116. } else if(orderBeanfor101 == null && orderBeanfor84 != null){// 无包月订购关系,20元按次请求
  117. if (orderBeanfor84.getStatus().equals("0")) {
  118. throw new BusinessException("9901", "vac重复订购", new String[0]);
  119. } else if (orderBeanfor84.getStatus().equals("1") || orderBeanfor84.getStatus().equals("2")) {
  120. if (NumberUtils.toLong(orderBeanfor84.getCanceltimestr()) > NumberUtils
  121. .toLong(netOrderBean.getOrdertimestr())) {
  122. throw new BusinessException("9902", "vac订购时间晚于本地退订时间", new String[0]);
  123. }
  124. }
  125. }else if(orderBeanfor101 != null && orderBeanfor84 != null){//既有腾讯20元包月,也有20元按次
  126. if(orderBeanfor84.getStatus().equals("2") && orderBeanfor101.getStatus().equals("0")){
  127. throw new BusinessException("9710", "重复订购", new String[0]);
  128. }else if(orderBeanfor84.getStatus().equals("2") && orderBeanfor101.getStatus().equals("1")){
  129. throw new BusinessException("9711", "已有有效包月订购,按次不处理", new String[0]);
  130. }else if(orderBeanfor84.getStatus().equals("2") && orderBeanfor101.getStatus().equals("2")){
  131. if (NumberUtils.toLong(orderBeanfor101.getCanceltimestr()) > NumberUtils
  132. .toLong(netOrderBean.getOrdertimestr()) || NumberUtils.toLong(orderBeanfor84.getCanceltimestr()) > NumberUtils
  133. .toLong(netOrderBean.getOrdertimestr())) {
  134. throw new BusinessException("9902", "vac订购时间早于本地退订时间", new String[0]);
  135. }
  136. }else if(orderBeanfor84.getStatus().equals("0") && orderBeanfor101.getStatus().equals("2")){
  137. throw new BusinessException("9901", "vac重复订购", new String[0]);
  138. }else if(orderBeanfor84.getStatus().equals("1") && orderBeanfor101.getStatus().equals("2")){
  139. if (NumberUtils.toLong(orderBeanfor84.getCanceltimestr()) > NumberUtils
  140. .toLong(netOrderBean.getOrdertimestr())) {
  141. throw new BusinessException("9902", "vac订购时间晚于本地退订时间", new String[0]);
  142. }
  143. }else {
  144. throw new BusinessException("8001", "数据异常", new String[0]);
  145. }
  146. }
  147. } else if (vacOrderBean.getOrdertype().equals("1") || vacOrderBean.getOrdertype().equals("2")) {// 包月订购请求
  148. if(vacOrderBean.getOrdertype().equals("1")){
  149. throw new BusinessException("9718", "0元预受理产品不订购", new String[0]);
  150. }
  151. NetOrderBean orderBeanfor84 = this.netOrderDao.findOrder(netOrderBean.getCpid(),"84",
  152. netOrderBean.getUserid());
  153. NetOrderBean orderBeanfor101 = this.netOrderDao.findOrder(netOrderBean.getCpid(), "101",
  154. netOrderBean.getUserid());
  155. if (orderBeanfor84 != null && orderBeanfor101 == null) {// 有按次的订购关系,包月订购请求
  156. if (orderBeanfor84.getStatus().equals("0")) {
  157. throw new BusinessException("9713", "已有按次订购,0元包月重复订购", new String[0]);
  158. } else if (orderBeanfor84.getStatus().equals("1")) {// 生成预定购关系
  159. if (NumberUtils.toLong(orderBeanfor84.getCanceltimestr()) > NumberUtils
  160. .toLong(netOrderBean.getOrdertimestr())) {
  161. throw new BusinessException("9902", "vac包月订购时间早于按次本地退订时间", new String[0]);
  162. }
  163. ispre = true;
  164. preOrder(netOrderBean);
  165. }else if (orderBeanfor84.getStatus().equals("2")){
  166. if (NumberUtils.toLong(orderBeanfor84.getCanceltimestr()) > NumberUtils
  167. .toLong(netOrderBean.getOrdertimestr())) {
  168. throw new BusinessException("9902", "vac订购时间早于本地退订时间", new String[0]);
  169. }
  170. }
  171. } else if(orderBeanfor84 == null && orderBeanfor101 != null){// 无按次的订购关系,包月订购请求
  172. if (orderBeanfor101.getStatus().equals("0")) {
  173. throw new BusinessException("9714", "已包月订购,重复订购", new String[0]);
  174. } else if (orderBeanfor101.getStatus().equals("1") || orderBeanfor101.getStatus().equals("2")) {
  175. if (NumberUtils.toLong(orderBeanfor101.getCanceltimestr()) > NumberUtils
  176. .toLong(netOrderBean.getOrdertimestr())) {
  177. throw new BusinessException("9902", "vac订购时间早于本地退订时间", new String[0]);
  178. }
  179. }
  180. }else if(orderBeanfor84 != null && orderBeanfor101 != null){
  181. if(orderBeanfor84.getStatus().equals("2") && !orderBeanfor101.getStatus().equals("2")){
  182. if (orderBeanfor101.getStatus().equals("0")) {
  183. throw new BusinessException("9714", "已包月订购,重复订购", new String[0]);
  184. } else if (orderBeanfor101.getStatus().equals("1")) {
  185. if (NumberUtils.toLong(orderBeanfor101.getCanceltimestr()) > NumberUtils
  186. .toLong(netOrderBean.getOrdertimestr())) {
  187. throw new BusinessException("9902", "vac订购时间早于本地退订时间", new String[0]);
  188. }
  189. }
  190. }else if(orderBeanfor84.getStatus().equals("2") && orderBeanfor101.getStatus().equals("2")){
  191. if (NumberUtils.toLong(orderBeanfor101.getCanceltimestr()) > NumberUtils
  192. .toLong(netOrderBean.getOrdertimestr()) || NumberUtils.toLong(orderBeanfor84.getCanceltimestr()) > NumberUtils
  193. .toLong(netOrderBean.getOrdertimestr())) {
  194. throw new BusinessException("9902", "包月订购时间早于本地退订时间", new String[0]);
  195. }
  196. }else if(!orderBeanfor84.getStatus().equals("2") && orderBeanfor101.getStatus().equals("2")){
  197. if (orderBeanfor84.getStatus().equals("0")) {
  198. throw new BusinessException("9713", "已有按次订购,0元包月重复订购", new String[0]);
  199. } else if (orderBeanfor84.getStatus().equals("1")) {// 生成预定购关系
  200. if (NumberUtils.toLong(orderBeanfor84.getCanceltimestr()) > NumberUtils
  201. .toLong(netOrderBean.getOrdertimestr())) {
  202. throw new BusinessException("9902", "vac包月订购时间早于按次本地退订时间", new String[0]);
  203. }
  204. ispre = true;
  205. preOrder(netOrderBean);
  206. }else if (orderBeanfor84.getStatus().equals("2")){
  207. if (NumberUtils.toLong(orderBeanfor84.getCanceltimestr()) > NumberUtils
  208. .toLong(netOrderBean.getOrdertimestr())) {
  209. throw new BusinessException("9902", "vac订购时间早于本地退订时间", new String[0]);
  210. }
  211. }
  212. }else {
  213. throw new BusinessException("8001", "数据异常", new String[0]);
  214. }
  215. }
  216. }
  217. if (!ispre) {
  218. if (vacOrderBean.getOrdertype().equals("1")) {
  219. EcbUtils.queryEcb(netOrderBean.getCpid(), netOrderBean.getSpid(), netOrderBean.getProvince(),
  220. netOrderBean.getUserid());
  221. vac(netOrderBean, "1");
  222. }
  223. netOrderDao.order(netOrderBean);
  224. inserSmstMq(netOrderBean, "0");
  225. activite(netOrderBean);
  226. if(vacOrderBean.getOrdertype().equals("0") && vacOrderBean.getOrderstatus().equals("0")){
  227. inserOrderMq(netOrderBean,"0");
  228. }
  229. }
  230. return ispre ? 1 :0;
  231. }
  232. public void cancel(NetOrderBean netOrderBean, VacOrderBean vacOrderBean) throws Exception {
  233. boolean ispre = false;
  234. boolean needvaccancel = false;
  235. NetOrderBean orderBeanfor84 = this.netOrderDao.findOrder(netOrderBean.getCpid(), "84",
  236. netOrderBean.getUserid());
  237. NetOrderBean orderBeanfor101 = this.netOrderDao.findOrder(netOrderBean.getCpid(), "101",
  238. netOrderBean.getUserid());
  239. if ((orderBeanfor84 == null || orderBeanfor84.getStatus().equals("2")) && (orderBeanfor101 == null || orderBeanfor101.getStatus().equals("2"))) {
  240. throw new BusinessException("9716", "退订请求,无订购不处理", new String[0]);
  241. }
  242. if((orderBeanfor84 != null && !orderBeanfor84.getStatus().equals("2")) ){
  243. if(orderBeanfor84.getStatus().equals("0")){
  244. if(vacOrderBean.getOrdertype().equals("2")){
  245. preCancel(netOrderBean,1);
  246. }
  247. netOrderBean.setSpid("84");
  248. if (NumberUtils.toLong(orderBeanfor84.getOrdertimestr()) >= NumberUtils
  249. .toLong(netOrderBean.getCanceltimestr())) {
  250. throw new BusinessException("9902", "vac退订时间早于本地订购时间", new String[0]);
  251. }
  252. needvaccancel =true;
  253. }else{
  254. ispre = true;
  255. preCancel(netOrderBean,0);
  256. }
  257. }else{
  258. if(orderBeanfor101 != null && !orderBeanfor101.getStatus().equals("2")){
  259. if(orderBeanfor101.getStatus().equals("0")){
  260. if (NumberUtils.toLong(orderBeanfor101.getOrdertimestr()) >= NumberUtils
  261. .toLong(netOrderBean.getCanceltimestr())) {
  262. throw new BusinessException("9902", "vac退订时间早于本地订购时间", new String[0]);
  263. }
  264. }else{
  265. throw new BusinessException("9902", "本地已退订", new String[0]);
  266. }
  267. }
  268. }
  269. logger.info("没进入");
  270. if(!ispre){
  271. if(vacOrderBean.getOrdertype().equals("1")){
  272. logger.info("走cap退订===="+vacOrderBean);
  273. cancel(netOrderBean); //退 资费id 101
  274. }
  275. logger.info("本地退订");
  276. netOrderDao.cancelOrder(netOrderBean);
  277. cancelActivite(netOrderBean);
  278. inserSmstMq(netOrderBean, "1");
  279. if(vacOrderBean.getOrdertype().equals("2") && needvaccancel){
  280. inserOrderMq(netOrderBean,"1");
  281. }
  282. }
  283. }
  284. /**
  285. * 退订
  286. * @param netOrderBean
  287. * @return
  288. * @throws Exception
  289. */
  290. public String cancel(NetOrderBean netOrderBean) throws Exception{
  291. String result = "-1";
  292. String errorinfo = "cap退订失败";
  293. if (!whiteDao.isWhiteUser(netOrderBean.getUserid(), "tencent")) {
  294. String resJson = CapUtil.cap(netOrderBean.getCpid(),netOrderBean.getSpid(),netOrderBean.getUserid(), "88226", "8000656500", "1",
  295. "", "", "", "");
  296. logger.info("调AP返回结果:"+resJson);
  297. if (resJson != null) {
  298. Map<?,?> map = JsonUtil.jsonToMap(resJson);
  299. result = map.get("resultcode") != null ? map.get("resultcode").toString() : "-1";
  300. errorinfo = map.get("errorinfo") != null ? map.get("errorinfo").toString() : "cap退订失败";
  301. }
  302. }
  303. /**
  304. 业务返回编码
  305. 0000 处理成功
  306. 0007 订单同步失败
  307. 0009 参数异常
  308. 0008 非4G用户,鉴权失败
  309. 0001 订购鉴权失败/退订鉴权失败
  310. 0004 话单缓存失败
  311. 0003 查询用户归属省编码失败
  312. 0002 cbss产品订购异常
  313. 0006 cbss产品退订异常
  314. */
  315. if (!result.equals("0")) {
  316. if(result.equals("-1")){
  317. throw new BusinessException(result, "cap退订失败:接口调用失败,服务暂不可用", new String[0]);
  318. }else{
  319. //errorinfo = handelErrorinfo(result,errorinfo);
  320. throw new BusinessException(result, "cap退订失败:"+errorinfo, new String[0]);
  321. }
  322. }
  323. return result;
  324. }
  325. public void vac(NetOrderBean netOrderBean, String type) throws Exception {
  326. String result = "0";
  327. try {
  328. if (!whiteDao.isWhiteUser(netOrderBean.getUserid(), "tencent")) {
  329. result = VacUtil.vac(netOrderBean.getUserid(), "88226", "8000656500", type);
  330. if (result.equals("1200") && type.equals("1")) {
  331. result = "0";
  332. } else if (result.equals("1201") && type.equals("2")) {
  333. result = "0";
  334. }
  335. }
  336. } catch (Exception e) {
  337. throw new BusinessException("9715", "vac操作异常", new String[0]);
  338. }
  339. if (!result.equals("0")) {
  340. throw new BusinessException(result, "vac计费失败", new String[0]);
  341. }
  342. }
  343. public void preOrder(NetOrderBean netOrderBean) throws Exception {
  344. String errorcode = "0";
  345. String errorinfo = "";
  346. try{
  347. NetOrderBean preOrderBean = preOrderDao.existUser(netOrderBean.getUserid(), netOrderBean.getCpid(),
  348. netOrderBean.getSpid());
  349. if (preOrderBean != null && preOrderBean.getStatus().equals("0") && netOrderBean.getStatus().equals("0")) {
  350. throw new BusinessException("9905", "腾讯20元产品,已预订购", new String[0]);
  351. }
  352. if (preOrderBean != null && preOrderBean.getStatus().equals("1") && netOrderBean.getStatus().equals("0")
  353. && NumberUtils.toLong(netOrderBean.getOrdertimestr()) < NumberUtils
  354. .toLong(preOrderBean.getCanceltimestr())) {
  355. throw new BusinessException("9907", "腾讯20元产品,预订购晚于本地预退订", new String[0]);
  356. }
  357. preOrderDao.order(netOrderBean);
  358. }catch(Exception e){
  359. if (e instanceof BusinessException) {
  360. errorcode = ((BusinessException) e).getCode();
  361. errorinfo=e.getMessage();
  362. }else{
  363. errorcode = "8000";
  364. errorinfo="系统错误";
  365. }
  366. throw e;
  367. }finally {
  368. netOrderBean.setOrderchannel("vacpreorder");
  369. saveNetLog(netOrderBean, errorcode, errorinfo);
  370. netOrderBean.setOrderchannel("vac");
  371. Map<String, String> map = new HashMap<String, String>();
  372. map.put("userid", netOrderBean.getUserid());
  373. if(netOrderBean != null){
  374. map.put("cpid", netOrderBean.getCpid());
  375. map.put("spid", netOrderBean.getSpid());
  376. }
  377. map.put("errorcode", errorcode);
  378. map.put("errorinfo", errorinfo);
  379. map.put("type", "2");
  380. logger.info(JsonUtil.objectToJson(map));
  381. }
  382. }
  383. public void preCancel(NetOrderBean netOrderBean,int isgo) throws Exception {
  384. String errorcode = "0";
  385. String errorinfo = "";
  386. try{
  387. NetOrderBean preOrderBean = preOrderDao.existUser(netOrderBean.getUserid(), netOrderBean.getCpid(),
  388. netOrderBean.getSpid());
  389. if(preOrderBean == null){
  390. throw new BusinessException("9905", "无预订购,不能退订", new String[0]);
  391. }
  392. if (preOrderBean != null && preOrderBean.getStatus().equals("1") && netOrderBean.getStatus().equals("1")) {
  393. throw new BusinessException("9905", "腾讯20元产品,已预退订", new String[0]);
  394. }
  395. if (preOrderBean != null && preOrderBean.getStatus().equals("0") && netOrderBean.getStatus().equals("1")
  396. && NumberUtils.toLong(netOrderBean.getCanceltimestr()) < NumberUtils
  397. .toLong(preOrderBean.getOrdertimestr())) {
  398. throw new BusinessException("9907", "腾讯20元产品,预退订早于本地预订购", new String[0]);
  399. }
  400. preOrderDao.cancel(netOrderBean);
  401. }catch(Exception e){
  402. if (e instanceof BusinessException) {
  403. errorcode = ((BusinessException) e).getCode();
  404. errorinfo=e.getMessage();
  405. }else{
  406. errorcode = "8000";
  407. errorinfo="系统错误";
  408. }
  409. if(isgo ==0){
  410. throw e;
  411. }
  412. }finally {
  413. netOrderBean.setCancelchannel("vacprecancel");
  414. saveNetLog(netOrderBean, errorcode, errorinfo);
  415. netOrderBean.setCancelchannel("vac");
  416. Map<String, String> map = new HashMap<String, String>();
  417. map.put("userid", netOrderBean.getUserid());
  418. if(netOrderBean != null){
  419. map.put("cpid", netOrderBean.getCpid());
  420. map.put("spid", netOrderBean.getSpid());
  421. }
  422. map.put("errorcode", errorcode);
  423. map.put("errorinfo", errorinfo);
  424. map.put("type", "1");
  425. logger.info(JsonUtil.objectToJson(map));
  426. }
  427. }
  428. public NetOrderBean getNetOrderInfo(VacOrderBean vacOrderBean) throws Exception {
  429. NetOrderBean netOrderBean = new NetOrderBean();
  430. netOrderBean.setUserid(vacOrderBean.getUserid());
  431. netOrderBean.setCpid(vacOrderBean.getCpid());
  432. netOrderBean.setSpid(vacOrderBean.getSpid());
  433. netOrderBean.setProvince(vacOrderBean.getProvince());
  434. netOrderBean.setArea(vacOrderBean.getArea());
  435. netOrderBean.setChannel2(vacOrderBean.getChannel2());
  436. netOrderBean.setStaffid(vacOrderBean.getStaffid());
  437. netOrderBean.setDepartid(vacOrderBean.getDepartid());
  438. if (vacOrderBean.getOrderstatus().equals("0")) {
  439. netOrderBean.setStatus("0");
  440. netOrderBean
  441. .setOrdertime(DateUtils.parseDate(vacOrderBean.getOrdertime(), new String[] { "yyyyMMddHHmmss" }));
  442. if("vacnewfile".equals(vacOrderBean.getChannel()) || "vac".equals(vacOrderBean.getChannel())){
  443. //从vac反向通知推送过来的数据(VacOrderJob)
  444. netOrderBean.setOrderchannel("vac");
  445. }else{
  446. //FTP手厅反向通知推送过来的数据(ChannelOrderJob),使用原渠道信息
  447. netOrderBean.setOrderchannel(vacOrderBean.getChannel());
  448. }
  449. netOrderBean.setOrderstatus(3);
  450. } else {
  451. netOrderBean.setStatus("1");
  452. netOrderBean.setCanceltime(
  453. DateUtils.parseDate(vacOrderBean.getCanceltime(), new String[] { "yyyyMMddHHmmss" }));
  454. if("vacnewfile".equals(vacOrderBean.getChannel()) || "vac".equals(vacOrderBean.getChannel())){
  455. netOrderBean.setCancelchannel("vac");
  456. }else{
  457. //FTP手厅反向通知推送过来的数据(ChannelOrderJob),使用原渠道信息
  458. netOrderBean.setCancelchannel(vacOrderBean.getChannel());
  459. }
  460. netOrderBean.setOrderstatus(5);
  461. }
  462. return netOrderBean;
  463. }
  464. public void activite(NetOrderBean netOrderBean) throws Exception {
  465. ActivityConfigBean activityConfigBean = activityConfigDao.findByCallerhead(netOrderBean.getCpid(),
  466. netOrderBean.getSpid(), "");
  467. if (activityConfigBean == null) {
  468. throw new BusinessException("9030", "非活动产品或者活动结束");
  469. }
  470. OrderBean oldbean = vacActiveDao.existUser(netOrderBean.getUserid(), netOrderBean.getCpid(),
  471. netOrderBean.getSpid(),netOrderBean.getSpid().equals("101") ? "11" : "6");
  472. if (oldbean == null) {
  473. vacActiveDao.insertBeans(getBusBean(netOrderBean, null));
  474. } else if (oldbean.getOrderstatus().equals("0")) {
  475. throw new BusinessException("9031", "腾讯20元产品,活动表已订购");
  476. } else {
  477. if (NumberUtils.toLong(oldbean.getCanceltime()) > NumberUtils.toLong(netOrderBean.getOrdertimestr())) {
  478. throw new BusinessException("9032", "腾讯20元产品,活动表退订>订购");
  479. }
  480. netOrderBean.setId(oldbean.getId());
  481. vacActiveDao.update(getBusBean(netOrderBean, oldbean));
  482. }
  483. }
  484. public void cancelActivite(NetOrderBean netOrderBean) throws Exception {
  485. ActivityConfigBean activityConfigBean = activityConfigDao.findByCallerhead(netOrderBean.getCpid(),
  486. netOrderBean.getSpid(), "");
  487. if (activityConfigBean == null) {
  488. throw new BusinessException("9030", "非活动产品或者活动结束");
  489. }
  490. OrderBean oldbean = vacActiveDao.existUser(netOrderBean.getUserid(), netOrderBean.getCpid(),netOrderBean.getSpid(),
  491. netOrderBean.getSpid().equals("101") ? "11" : "6");
  492. if (oldbean == null) {
  493. throw new BusinessException("9035", "腾讯20元产品,活动表无订购");
  494. } else if (oldbean.getOrderstatus().equals("1")) {
  495. throw new BusinessException("9031", "腾讯20元产品,活动表已退订");
  496. } else {
  497. if (NumberUtils.toLong(oldbean.getOrdertime()) > NumberUtils.toLong(netOrderBean.getCanceltimestr())) {
  498. throw new BusinessException("9032", "腾讯20元产品,活动表订购>退订");
  499. }
  500. netOrderBean.setId(oldbean.getId());
  501. vacActiveDao.cancelUpdate(getBusBean(netOrderBean, null));
  502. }
  503. }
  504. public OrderBean getBusBean(NetOrderBean netOrderBean, OrderBean oldbean) {
  505. OrderBean bean = new OrderBean();
  506. bean.setId(netOrderBean.getId());
  507. bean.setUserid(netOrderBean.getUserid());
  508. bean.setCpid(netOrderBean.getCpid());
  509. bean.setSpid(netOrderBean.getSpid());
  510. bean.setProvince(netOrderBean.getProvince());
  511. bean.setArea(netOrderBean.getArea());
  512. bean.setOrdertime(netOrderBean.getOrdertimestr());
  513. bean.setChannel(netOrderBean.getOrderchannel());
  514. bean.setCanceltime(netOrderBean.getCanceltimestr());
  515. if(netOrderBean.getSpid().equals("101")){
  516. bean.setActiveType(11);
  517. }else{
  518. bean.setActiveType(6);
  519. }
  520. if (oldbean != null) {
  521. bean.setVipstatus(oldbean.getVipstatus());
  522. bean.setViptime(oldbean.getViptime());
  523. }
  524. return bean;
  525. }
  526. public void inserOrderMq(NetOrderBean netOrderBean,String type) {
  527. try {
  528. Map<String, String> map = new HashMap<String, String>();
  529. map.put("userid", netOrderBean.getUserid());
  530. map.put("cpid", netOrderBean.getCpid());
  531. map.put("spid", netOrderBean.getSpid());
  532. if (type.equals("0")) {
  533. map.put("status", "0");
  534. map.put("ordertime",netOrderBean.getOrdertimestr());
  535. map.put("channel", netOrderBean.getOrderchannel());
  536. } else {
  537. map.put("status", "1");
  538. map.put("canceltime", netOrderBean.getCanceltimestr());
  539. map.put("channel", netOrderBean.getCancelchannel());
  540. }
  541. map.put("type", "vacorder");
  542. //URLUtil.post("http://10.199.99.144:8090/mq-service/recive.do", JsonUtil.objectToJson(map))
  543. URLUtil.post(dictionaryDao.getValue("mqReciveUrl"), JsonUtil.objectToJson(map));
  544. // URLUtil.post("http://10.199.99.158:8030/mq-service/recive.do", JsonUtil.objectToJson(map));
  545. } catch (Exception e) {
  546. e.printStackTrace();
  547. }
  548. }
  549. public void inserSmstMq(NetOrderBean netOrderBean, String type) {
  550. try {
  551. if (netOrderBean.getCpid().equals("tencent")) {
  552. Map<String, String> map = new HashMap<String, String>();
  553. map.put("userid", netOrderBean.getUserid());
  554. map.put("cpid", netOrderBean.getCpid());
  555. map.put("spid", netOrderBean.getSpid());
  556. map.put("result", "0");
  557. map.put("channel", "");
  558. if (type.equals("0")) {
  559. map.put("style", "7");
  560. map.put("busiType", "tran_succ");
  561. } else {
  562. map.put("style", "8");
  563. map.put("busiType", "cancel_succ");
  564. }
  565. map.put("times", "");
  566. map.put("orderType", "");
  567. map.put("type", "cssms");
  568. map.put("staffid", netOrderBean.getStaffid()); //工号
  569. //URLUtil.post("http://10.199.99.144:8090/mq-service/recive.do", JsonUtil.objectToJson(map));
  570. URLUtil.post(dictionaryDao.getValue("mqReciveUrl"), JsonUtil.objectToJson(map));
  571. // URLUtil.post("http://10.199.99.158:8030/mq-service/recive.do", JsonUtil.objectToJson(map));
  572. }
  573. } catch (Exception e) {
  574. e.printStackTrace();
  575. }
  576. }
  577. public void saveNetLog(NetOrderBean orderInfo, String errorcode, String errorinfo)
  578. throws SQLException {
  579. OrderLog orderLog = new OrderLog();
  580. orderLog.setApptype(orderInfo.getApptype());
  581. orderLog.setOrderstatus(orderInfo.getOrderstatus());
  582. orderLog.setStatus(Integer.valueOf(orderInfo.getStatus()).intValue());
  583. orderLog.setCpid(orderInfo.getCpid());
  584. orderLog.setIsexperience(orderInfo.getIsexperience());
  585. orderLog.setOrdertype(orderInfo.getOrdertype());
  586. orderLog.setProvince(orderInfo.getProvince());
  587. orderLog.setArea(orderInfo.getArea());
  588. orderLog.setSpid(orderInfo.getSpid());
  589. orderLog.setUserid(orderInfo.getUserid());
  590. orderLog.setErrorcode(errorcode);
  591. orderLog.setErrorinfo(errorinfo);
  592. if (orderInfo.getStatus().equals("0")) {
  593. orderLog.setChannel(orderInfo.getOrderchannel());
  594. } else {
  595. orderLog.setChannel(orderInfo.getCancelchannel());
  596. }
  597. this.netOrderDao.addOrderLog(orderLog);
  598. }
  599. }