package com.chinacreator.videoalliance.order.action; import com.chinacreator.common.exception.BusinessException; import com.chinacreator.common.pipe.DataOutPipe; import com.chinacreator.common.util.RequestUtil; import com.chinacreator.common.util.URLUtil; import com.chinacreator.videoalliance.common.annotation.DataOut; import com.chinacreator.videoalliance.common.dao.DictionaryDao; import com.chinacreator.videoalliance.common.util.ConfigUtil; import com.chinacreator.videoalliance.order.bean.OrderInfo; import com.chinacreator.videoalliance.order.dao.BackBusiOrderDao; import com.chinacreator.videoalliance.order.service.BackBusiOrderAsynService; import com.chinacreator.videoalliance.order.service.OrderValiService; import com.chinacreator.videoalliance.order.util.IpAddrUtil; import com.chinacreator.videoalliance.order.util.JsonUtil; import com.google.gson.GsonBuilder; import org.apache.commons.lang.StringUtils; import org.apache.log4j.Logger; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import javax.servlet.http.HttpServletRequest; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; /** * 后向产品办理(会员、免流、会员+免流) * @author xu.zhou * @date 20190705 */ @Controller public class BackBusiOrderAction { private static Logger busilog = Logger.getLogger("youtuorder"); private static Logger logger = Logger.getLogger(BackBusiOrderAction.class); @Autowired private BackBusiOrderAsynService service; @Autowired private DictionaryDao dictionaryDao; @Autowired private BackBusiOrderDao backBusiOrderDao; @Autowired private OrderValiService orderValiService; @RequestMapping({"/backorder.do"}) @DataOut(callback="order") public DataOutPipe doOrder(HttpServletRequest request, OrderInfo orderInfo, String channel) throws Exception{ DataOutPipe pipe = new DataOutPipe(); Map log = new HashMap(); try { orderInfo.setTimes(System.currentTimeMillis()+""); String deuserid = orderInfo.getUserid(); //解密前的加密手机号码,用于签名验证 if (StringUtils.isNotEmpty(orderInfo.getUserid())) { orderInfo.setUserid(ConfigUtil.decrypt(orderInfo.getUserid(), orderInfo.getCpid())); if ((orderInfo.getUserid() != null) && (orderInfo.getUserid().length() > 11)) { orderInfo.setUserid(ConfigUtil.getUserid(orderInfo.getUserid(), orderInfo.getCpid())); } } orderInfo.setTimes(System.currentTimeMillis()+""); orderInfo.setApptype(RequestUtil.getMobType(request)); orderInfo.setStatus(0); orderInfo.setOrderchannel(channel); orderInfo.setOrderstatus(3); orderInfo.setInvokeface("backorder"); //String ip = IpAddrUtil.getIpAddr2(request); //log.put("ip", ip); log.put("channel", channel); log.put("data", orderInfo); pipe.add("userid", orderInfo.getUserid()); pipe.add("channel", channel == null ? "" : channel); //if(!ips.contains(ip)){ //throw new BusinessException("9008", "IP地址不合法"+ip); //} //业务验证 this.service.checkOrder(orderInfo,deuserid); //IP验证、业务办理限制验证 orderValiService.vali(request, orderInfo); String result = ""; //if(this.service.hasVipRetry(orderInfo)){//判断是否重试送会员 //result = service.vipRetryBusi(orderInfo); //}else{ result = service.orderBusi(orderInfo); //} log.put("data", orderInfo); pipe.add("endtime", orderInfo.getEndtime() == null ? "" : orderInfo.getEndtime()); //pipe.setResultCode(result); log.put("errorCode",result); log.put("errorInfo","成功"); } catch (Exception e) { e.printStackTrace(); log.put("errorInfo",e.getMessage()); log.put("errorCode", "9999"); if ((e instanceof BusinessException)) { log.put("errorCode", ((BusinessException) e).getCode()); String errorInfo = ((BusinessException) e).getMessage(); if(errorInfo.length()>200){ errorInfo = errorInfo.substring(0, 200); } log.put("errorInfo",errorInfo); } throw e; } finally { String json = new GsonBuilder().disableHtmlEscaping().serializeNulls().create().toJson(log); busilog.info(json); //发送短信 inserSmstMq(orderInfo,log.get("errorCode")+""); inserSmstMq2(orderInfo,log.get("errorCode")+""); inserSmstMq3(orderInfo,log.get("errorCode")+""); } return pipe; } /** * 推送办理成功的短信到队列 * @param orderInfo */ public void inserSmstMq(OrderInfo orderInfo, String result){ try{ //订购成功、续订成功、赠送会员失败 //if(orderInfo.getType() == 0 && ("0".equals(result) || "9002".equals(result))){ if(orderInfo.getType() == 0 && "0".equals(result)){ //只发送订购成功短信 List confList = backBusiOrderDao.getBackBusiConf(orderInfo.getCpid(), orderInfo.getSpid()); //[{PWD=kijkfds, CHANNEL=test_01, VIPTYPE=2, VIPPOOL=vip_yout, SPID=1168, BUSITYPE=3, CPID=youtu}] HashMap confHm = confList.get(0); String busiType = confHm.get("BUSITYPE")+""; if("TX20_twback".equals(orderInfo.getOrderchannel()) && "3".equals(busiType)){ //拓维订购会员+免流产品不发短信,由他们自己处理。 return; } if("shanghaiqy".equals(orderInfo.getOrderchannel())&&!"1211".equals(orderInfo.getSpid())){ //上海权益办理后向业务不发短信 return; } //只有纯免流的才触发短信,其他的异步处理后再发短信 if(!"2".equals(busiType)){ return; } Map map = new HashMap(); map.put("userid", orderInfo.getUserid()); map.put("cpid", orderInfo.getCpid()); map.put("spid", orderInfo.getSpid()); map.put("result", "0"); map.put("channel", ""); map.put("style","0000"); map.put("times", ""); map.put("orderType", ""); map.put("type", "cssms"); if("0".equals(result)){ map.put("busiType", "tran_succ"); //订购成功短信 if("TX20_twback_qc".equals(orderInfo.getOrderchannel())){//女王卡领取会员发短信,同样的SPID短信内容不同 map.put("busiType", "qc_tran_succ"); } }else{ map.put("busiType", "vip_fail"); //赠送会员失败短信 } //logger.info("++++++map:"+map); String mqReciveUrl = dictionaryDao.getValue("mqReciveUrl"); //开发环境 //URLUtil.post("http://172.16.33.16:8082/mq-service/recive.do", JsonUtil.objectToJson(map)); //测试环境 //URLUtil.post("http://10.199.99.177:86/mq-service/recive.do", JsonUtil.objectToJson(map)); //生产环境 //URLUtil.post("http://10.199.99.144:8090/mq-service/recive.do", JsonUtil.objectToJson(map)); URLUtil.post(mqReciveUrl, JsonUtil.objectToJson(map)); } }catch (Exception e){ e.printStackTrace(); } } /** * 推送办理成功的短信到队列 * @param orderInfo */ public void inserSmstMq2(OrderInfo orderInfo, String result){ try{ //订购成功、续订成功、赠送会员失败 //if(orderInfo.getType() == 0 && ("0".equals(result) || "9002".equals(result))){ if(orderInfo.getType() == 0 && "0".equals(result)){ //只发送订购成功短信 List confList = backBusiOrderDao.getBackBusiConf(orderInfo.getCpid(), orderInfo.getSpid()); //[{PWD=kijkfds, CHANNEL=test_01, VIPTYPE=2, VIPPOOL=vip_yout, SPID=1168, BUSITYPE=3, CPID=youtu}] HashMap confHm = confList.get(0); String busiType = confHm.get("BUSITYPE")+""; if("TX20_twback".equals(orderInfo.getOrderchannel()) && "3".equals(busiType)){ //拓维订购会员+免流产品不发短信,由他们自己处理。 return; } if("shanghaiqy".equals(orderInfo.getOrderchannel())&&!"1211".equals(orderInfo.getSpid())){ //上海权益办理后向业务不发短信 return; } //只有纯免流的才触发短信,其他的异步处理后再发短信 if(!"2".equals(busiType)){ return; } Map map = new HashMap(); map.put("userid", orderInfo.getUserid()); map.put("cpid", orderInfo.getCpid()); map.put("spid", orderInfo.getSpid()); map.put("result", "0"); map.put("channel", ""); map.put("style","0000"); map.put("times", ""); map.put("orderType", ""); map.put("type", "cssms"); if("0".equals(result) && !"TX20_twback_qc".equals(orderInfo.getOrderchannel())){ map.put("busiType", "tran_succ2"); //订购成功短信 } String mqReciveUrl = dictionaryDao.getValue("mqReciveUrl"); URLUtil.post(mqReciveUrl, JsonUtil.objectToJson(map)); } }catch (Exception e){ e.printStackTrace(); } } /** * 推送办理成功的短信到队列 * @param orderInfo */ public void inserSmstMq3(OrderInfo orderInfo, String result){ try{ //订购成功、续订成功、赠送会员失败 //if(orderInfo.getType() == 0 && ("0".equals(result) || "9002".equals(result))){ if(orderInfo.getType() == 0 && "0".equals(result)){ //只发送订购成功短信 List confList = backBusiOrderDao.getBackBusiConf(orderInfo.getCpid(), orderInfo.getSpid()); //[{PWD=kijkfds, CHANNEL=test_01, VIPTYPE=2, VIPPOOL=vip_yout, SPID=1168, BUSITYPE=3, CPID=youtu}] HashMap confHm = confList.get(0); String busiType = confHm.get("BUSITYPE")+""; if("TX20_twback".equals(orderInfo.getOrderchannel()) && "3".equals(busiType)){ //拓维订购会员+免流产品不发短信,由他们自己处理。 return; } if("shanghaiqy".equals(orderInfo.getOrderchannel())&&!"1211".equals(orderInfo.getSpid())){ //上海权益办理后向业务不发短信 return; } //只有纯免流的才触发短信,其他的异步处理后再发短信 if(!"2".equals(busiType)){ return; } Map map = new HashMap(); map.put("userid", orderInfo.getUserid()); map.put("cpid", orderInfo.getCpid()); map.put("spid", orderInfo.getSpid()); map.put("result", "0"); map.put("channel", ""); map.put("style","0000"); map.put("times", ""); map.put("orderType", ""); map.put("type", "cssms"); if("0".equals(result) && !"TX20_twback_qc".equals(orderInfo.getOrderchannel())){ map.put("busiType", "trna_succ3"); //订购成功短信 } String mqReciveUrl = dictionaryDao.getValue("mqReciveUrl"); URLUtil.post(mqReciveUrl, JsonUtil.objectToJson(map)); } }catch (Exception e){ e.printStackTrace(); } } /** private static List ips = new ArrayList(); static{ ips.add("172.16.33.16"); ips.add("10.199.99.147"); ips.add("10.199.99.177"); ips.add("10.199.99.176"); ips.add("10.199.99.158"); ips.add("172.18.0.14"); ips.add("172.18.0.15"); ips.add("172.18.0.16"); ips.add("172.18.0.17"); ips.add("172.18.0.18"); ips.add("10.0.17.71"); ips.add("10.0.17.55"); ips.add("10.0.17.49"); ips.add("10.0.17.86"); ips.add("10.0.17.82"); ips.add("10.0.17.53"); ips.add("10.0.17.54"); ips.add("10.0.17.85"); ips.add("10.0.17.56"); ips.add("10.42.4.0"); ips.add("10.42.5.0"); ips.add("114.255.201.224"); ips.add("111.206.133.37"); ips.add("111.206.133.34"); ips.add("10.42.3.0"); ips.add("10.0.17.29"); }***/ }