123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191 |
- package com.chinacreator.videoalliance.order.action;
- import com.chinacreator.common.exception.BusinessException;
- import com.chinacreator.common.pipe.DataOutPipe;
- import com.chinacreator.common.util.DESUtil;
- 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.service.YoutuOrderService;
- 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.io.UnsupportedEncodingException;
- import java.net.URLEncoder;
- import java.util.ArrayList;
- import java.util.HashMap;
- import java.util.List;
- import java.util.Map;
- /**
- * 优酷后向产品订购/续订/
- * @author xu.zhou
- *
- */
- @Controller
- public class YoutuOrderAction {
-
- private static Logger busilog = Logger.getLogger("youtuorder");
-
- private static Logger logger = Logger.getLogger(YoutuOrderAction.class);
-
- @Autowired
- private YoutuOrderService service;
- @Autowired
- private DictionaryDao dictionaryDao;
-
- @RequestMapping({"/youtuOrder.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.setApptype(RequestUtil.getMobType(request));
- orderInfo.setStatus(0);
- orderInfo.setOrderchannel(channel);
- orderInfo.setOrderstatus(3);
- String ip = getIpAddr(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);
- String result = "";
- if (orderInfo.getCpid().equals("youtu") && orderInfo.getSpid().equals("1168")) {
- result = service.orderBusi(orderInfo);
- } else {
- throw new BusinessException("9031", "不能办理非指定业务");
- }
- 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) {
- 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")+"");
- }
- return pipe;
- }
- /**
- * 推送办理成功的短信到队列
- * @param orderInfo
- */
- public void inserSmstMq(OrderInfo orderInfo, String result){
- try{
- //订购成功、续订成功、赠送会员失败
- if("0".equals(result) || "9002".equals(result)){
- 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"); //订购成功短信
- }else{
- map.put("busiType", "vip_fail"); //赠送会员失败短信
- }
- //logger.info("++++++map:"+map);
- //开发环境
- //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(dictionaryDao.getValue("mqReciveUrl"), JsonUtil.objectToJson(map));
- }
- }catch (Exception e){
- e.printStackTrace();
- }
- }
-
- private static List<String> ips = new ArrayList<String>();
- static{
- //ips.add("127.0.0.1");
- ips.add("10.199.99.147"); //生产环境
- ips.add("10.199.99.177"); //测试环境
- }
-
- private String getIpAddr(HttpServletRequest request) {
- String ip = request.getHeader("X-Real-IP");
- if (inValidateIpAddr(ip)) {
- ip = request.getHeader("X-Forwarded-For");
- }
- if (inValidateIpAddr(ip)) {
- ip = request.getHeader("Proxy-Client-IP");
- }
- if (inValidateIpAddr(ip)) {
- ip = request.getHeader("WL-Proxy-Client-IP");
- }
- if (inValidateIpAddr(ip)) {
- ip = request.getHeader("clientip");
- }
- if (inValidateIpAddr(ip)) {
- ip = request.getRemoteAddr();
- }
- if (inValidateIpAddr(ip)) {
- ip = "null";
- } else {
- int index = ip.indexOf(",");
- if (index != -1) {
- ip = ip.substring(0, index);
- }
- }
- return ip;
- }
-
- private static boolean inValidateIpAddr(String ip) {
- return (ip == null) || (ip.length() == 0) || ("unknown".equalsIgnoreCase(ip));
- }
-
-
- public static void main(String[] args) throws UnsupportedEncodingException, Exception {
- System.out.println( URLEncoder.encode(DESUtil.encode("18660177894", "ea044e50"), "utf-8"));
- }
- }
|