eddb00354565c0074083a356ec8b95145c199a5f.svn-base 6.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191
  1. package com.chinacreator.videoalliance.order.action;
  2. import com.chinacreator.common.exception.BusinessException;
  3. import com.chinacreator.common.pipe.DataOutPipe;
  4. import com.chinacreator.common.util.DESUtil;
  5. import com.chinacreator.common.util.RequestUtil;
  6. import com.chinacreator.common.util.URLUtil;
  7. import com.chinacreator.videoalliance.common.annotation.DataOut;
  8. import com.chinacreator.videoalliance.common.dao.DictionaryDao;
  9. import com.chinacreator.videoalliance.common.util.ConfigUtil;
  10. import com.chinacreator.videoalliance.order.bean.OrderInfo;
  11. import com.chinacreator.videoalliance.order.service.YoutuOrderService;
  12. import com.chinacreator.videoalliance.order.util.JsonUtil;
  13. import com.google.gson.GsonBuilder;
  14. import org.apache.commons.lang.StringUtils;
  15. import org.apache.log4j.Logger;
  16. import org.springframework.beans.factory.annotation.Autowired;
  17. import org.springframework.stereotype.Controller;
  18. import org.springframework.web.bind.annotation.RequestMapping;
  19. import javax.servlet.http.HttpServletRequest;
  20. import java.io.UnsupportedEncodingException;
  21. import java.net.URLEncoder;
  22. import java.util.ArrayList;
  23. import java.util.HashMap;
  24. import java.util.List;
  25. import java.util.Map;
  26. /**
  27. * 优酷后向产品订购/续订/
  28. * @author xu.zhou
  29. *
  30. */
  31. @Controller
  32. public class YoutuOrderAction {
  33. private static Logger busilog = Logger.getLogger("youtuorder");
  34. private static Logger logger = Logger.getLogger(YoutuOrderAction.class);
  35. @Autowired
  36. private YoutuOrderService service;
  37. @Autowired
  38. private DictionaryDao dictionaryDao;
  39. @RequestMapping({"/youtuOrder.do"})
  40. @DataOut(callback="order")
  41. public DataOutPipe doOrder(HttpServletRequest request, OrderInfo orderInfo, String channel)
  42. throws Exception{
  43. DataOutPipe pipe = new DataOutPipe();
  44. Map log = new HashMap();
  45. try {
  46. orderInfo.setTimes(System.currentTimeMillis()+"");
  47. String deuserid = orderInfo.getUserid(); //解密前的加密手机号码,用于签名验证
  48. if (StringUtils.isNotEmpty(orderInfo.getUserid())) {
  49. orderInfo.setUserid(ConfigUtil.decrypt(orderInfo.getUserid(), orderInfo.getCpid()));
  50. if ((orderInfo.getUserid() != null) && (orderInfo.getUserid().length() > 11)) {
  51. orderInfo.setUserid(ConfigUtil.getUserid(orderInfo.getUserid(), orderInfo.getCpid()));
  52. }
  53. }
  54. orderInfo.setApptype(RequestUtil.getMobType(request));
  55. orderInfo.setStatus(0);
  56. orderInfo.setOrderchannel(channel);
  57. orderInfo.setOrderstatus(3);
  58. String ip = getIpAddr(request);
  59. log.put("ip", ip);
  60. log.put("channel", channel);
  61. log.put("data", orderInfo);
  62. pipe.add("userid", orderInfo.getUserid());
  63. pipe.add("channel", channel == null ? "" : channel);
  64. if(!ips.contains(ip)){
  65. throw new BusinessException("9008", "IP地址不合法"+ip);
  66. }
  67. //业务验证
  68. this.service.checkOrder(orderInfo,deuserid);
  69. String result = "";
  70. if (orderInfo.getCpid().equals("youtu") && orderInfo.getSpid().equals("1168")) {
  71. result = service.orderBusi(orderInfo);
  72. } else {
  73. throw new BusinessException("9031", "不能办理非指定业务");
  74. }
  75. log.put("data", orderInfo);
  76. pipe.add("endtime", orderInfo.getEndtime() == null ? "" : orderInfo.getEndtime());
  77. pipe.setResultCode(result);
  78. log.put("errorCode",result);
  79. log.put("errorInfo","成功");
  80. } catch (Exception e) {
  81. log.put("errorInfo",e.getMessage());
  82. log.put("errorCode", "9999");
  83. if ((e instanceof BusinessException)) {
  84. log.put("errorCode", ((BusinessException) e).getCode());
  85. String errorInfo = ((BusinessException) e).getMessage();
  86. if(errorInfo.length()>200){
  87. errorInfo = errorInfo.substring(0, 200);
  88. }
  89. log.put("errorInfo",errorInfo);
  90. }
  91. throw e;
  92. } finally {
  93. String json = new GsonBuilder().disableHtmlEscaping().serializeNulls().create().toJson(log);
  94. busilog.info(json);
  95. //发送短信
  96. inserSmstMq(orderInfo,log.get("errorCode")+"");
  97. }
  98. return pipe;
  99. }
  100. /**
  101. * 推送办理成功的短信到队列
  102. * @param orderInfo
  103. */
  104. public void inserSmstMq(OrderInfo orderInfo, String result){
  105. try{
  106. //订购成功、续订成功、赠送会员失败
  107. if("0".equals(result) || "9002".equals(result)){
  108. Map<String, String> map = new HashMap<String, String>();
  109. map.put("userid", orderInfo.getUserid());
  110. map.put("cpid", orderInfo.getCpid());
  111. map.put("spid", orderInfo.getSpid());
  112. map.put("result", "0");
  113. map.put("channel", "");
  114. map.put("style","0000");
  115. map.put("times", "");
  116. map.put("orderType", "");
  117. map.put("type", "cssms");
  118. if("0".equals(result)){
  119. map.put("busiType", "tran_succ"); //订购成功短信
  120. }else{
  121. map.put("busiType", "vip_fail"); //赠送会员失败短信
  122. }
  123. //logger.info("++++++map:"+map);
  124. //开发环境
  125. //URLUtil.post("http://172.16.33.16:8082/mq-service/recive.do", JsonUtil.objectToJson(map));
  126. //测试环境
  127. //URLUtil.post("http://10.199.99.177:86/mq-service/recive.do", JsonUtil.objectToJson(map));
  128. //生产环境
  129. //URLUtil.post("http://10.199.99.144:8090/mq-service/recive.do", JsonUtil.objectToJson(map));
  130. URLUtil.post(dictionaryDao.getValue("mqReciveUrl"), JsonUtil.objectToJson(map));
  131. }
  132. }catch (Exception e){
  133. e.printStackTrace();
  134. }
  135. }
  136. private static List<String> ips = new ArrayList<String>();
  137. static{
  138. //ips.add("127.0.0.1");
  139. ips.add("10.199.99.147"); //生产环境
  140. ips.add("10.199.99.177"); //测试环境
  141. }
  142. private String getIpAddr(HttpServletRequest request) {
  143. String ip = request.getHeader("X-Real-IP");
  144. if (inValidateIpAddr(ip)) {
  145. ip = request.getHeader("X-Forwarded-For");
  146. }
  147. if (inValidateIpAddr(ip)) {
  148. ip = request.getHeader("Proxy-Client-IP");
  149. }
  150. if (inValidateIpAddr(ip)) {
  151. ip = request.getHeader("WL-Proxy-Client-IP");
  152. }
  153. if (inValidateIpAddr(ip)) {
  154. ip = request.getHeader("clientip");
  155. }
  156. if (inValidateIpAddr(ip)) {
  157. ip = request.getRemoteAddr();
  158. }
  159. if (inValidateIpAddr(ip)) {
  160. ip = "null";
  161. } else {
  162. int index = ip.indexOf(",");
  163. if (index != -1) {
  164. ip = ip.substring(0, index);
  165. }
  166. }
  167. return ip;
  168. }
  169. private static boolean inValidateIpAddr(String ip) {
  170. return (ip == null) || (ip.length() == 0) || ("unknown".equalsIgnoreCase(ip));
  171. }
  172. public static void main(String[] args) throws UnsupportedEncodingException, Exception {
  173. System.out.println( URLEncoder.encode(DESUtil.encode("18660177894", "ea044e50"), "utf-8"));
  174. }
  175. }