123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303 |
- 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<HashMap> 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<String, String> map = new HashMap<String, String>();
- 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<HashMap> 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<String, String> map = new HashMap<String, String>();
- 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<HashMap> 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<String, String> map = new HashMap<String, String>();
- 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<String> ips = new ArrayList<String>();
- 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");
- }***/
- }
|