43a88cfccbb749bfef55c7ee42c18878caeb4b0a.svn-base 8.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218
  1. package com.chinacreator.videoalliance.query.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.URLUtil;
  6. import com.chinacreator.videoalliance.common.annotation.DataOut;
  7. import com.chinacreator.videoalliance.common.bean.AreaInfo;
  8. import com.chinacreator.videoalliance.common.dao.DictionaryDao;
  9. import com.chinacreator.videoalliance.common.util.AreaUtil;
  10. import com.chinacreator.videoalliance.common.util.ConfigUtil;
  11. import com.chinacreator.videoalliance.order.bean.DiscntInfo;
  12. import com.chinacreator.videoalliance.order.bean.EcbProductInfo;
  13. import com.chinacreator.videoalliance.order.bean.EcbResponseBean;
  14. import com.chinacreator.videoalliance.order.bean.OrderInfo;
  15. import com.chinacreator.videoalliance.order.dao.CsOrderControlDao;
  16. import com.chinacreator.videoalliance.order.dao.EcbDiscntDao;
  17. import com.chinacreator.videoalliance.order.dao.OrderDao;
  18. import com.chinacreator.videoalliance.order.service.EcbService;
  19. import com.chinacreator.videoalliance.order.service.OrderService;
  20. import com.chinacreator.videoalliance.order.util.JsonUtil;
  21. import com.chinacreator.videoalliance.query.dao.ChangshiDebugDao;
  22. import org.apache.commons.lang.StringUtils;
  23. import org.apache.commons.lang.time.DateFormatUtils;
  24. import org.springframework.beans.factory.annotation.Autowired;
  25. import org.springframework.stereotype.Controller;
  26. import org.springframework.web.bind.annotation.RequestMapping;
  27. import javax.servlet.http.HttpServletRequest;
  28. import java.net.URLEncoder;
  29. import java.util.*;
  30. @Controller
  31. public class CsQueryProductAction {
  32. @Autowired
  33. private EcbService ecbService;
  34. @Autowired
  35. private OrderDao orderDao;
  36. @Autowired
  37. private EcbDiscntDao ecbDiscntDao;
  38. @Autowired
  39. private CsOrderControlDao csOrderControlDao;
  40. @Autowired
  41. private OrderService orderService;
  42. @Autowired
  43. private ChangshiDebugDao changshiDebugDao;
  44. @Autowired
  45. private DictionaryDao dictionaryDao;
  46. @RequestMapping("/queryproductinfo.do")
  47. @DataOut(callback = "queryproductinfo")
  48. public DataOutPipe doOrder(HttpServletRequest request, String cpid, String userid,String channel,String type) throws Exception {
  49. DataOutPipe pipe = new DataOutPipe();
  50. if (StringUtils.isEmpty(cpid) || StringUtils.isEmpty(userid)) {
  51. throw new BusinessException("7002", "参数错误");
  52. }
  53. try {
  54. if (StringUtils.isNotEmpty(userid)) {
  55. userid = ConfigUtil.decrypt(userid, cpid);
  56. if ((userid != null) && (userid.length() > 11)) {
  57. userid = ConfigUtil.getUserid(userid, cpid);
  58. }
  59. }
  60. } catch (Exception e) {
  61. throw new BusinessException("7002", "手机号码无效");
  62. }
  63. pipe.add("userid", userid);
  64. if(StringUtils.isEmpty(type)){
  65. type ="0";
  66. }
  67. EcbProductInfo ecbProductInfo = null;
  68. AreaInfo areaInfo = null;
  69. if(type.equals("1")){
  70. List<OrderInfo> listOrderInfo = orderDao.findByUser(userid, cpid);
  71. if(listOrderInfo != null && listOrderInfo.size()>0){
  72. for (OrderInfo orderInfo : listOrderInfo) {
  73. if(orderInfo.getSpid().equals("1150")){
  74. DiscntInfo discntInfo = ecbDiscntDao.queryByUserid(userid, type);
  75. if(discntInfo != null){
  76. ecbProductInfo = new EcbProductInfo();
  77. ecbProductInfo.setDiscntCode(discntInfo.getDiscntid());
  78. ecbProductInfo.setDiscntFee(discntInfo.getDiscntfee());
  79. ecbProductInfo.setDiscntName(discntInfo.getDiscntName());
  80. ecbProductInfo.setDiscntStartDate(discntInfo.getOrdertime());
  81. ecbProductInfo.setDiscntEndDate(discntInfo.getEndtime());
  82. ecbProductInfo.setDiscntOrderState(discntInfo.getDiscntOrderState());
  83. ecbProductInfo.setPackageCode(discntInfo.getPackageCode());
  84. ecbProductInfo.setProductId(discntInfo.getProductId());
  85. ecbProductInfo.setDiscntValue(discntInfo.getDiscnttype());
  86. ecbProductInfo.setSpid("1150");
  87. }
  88. if(orderInfo.getStatus() == 0){
  89. pipe.setResultCode("9901");
  90. pipe.setErrorInfo("用户本地已订购");
  91. }else{
  92. pipe.setResultCode("9902");
  93. pipe.setErrorInfo("用户本月已退订");
  94. }
  95. }
  96. }
  97. }
  98. if(ecbProductInfo == null){
  99. areaInfo = AreaUtil.getAreaInfoByUserid(userid);
  100. if(areaInfo != null){
  101. if(csOrderControlDao.provinceControl(areaInfo.getProvince(), cpid, "1150")){
  102. throw new BusinessException("9904","省份不在白名单");
  103. }
  104. }
  105. }
  106. }
  107. if(ecbProductInfo == null){
  108. EcbResponseBean bean =ecbService.queryPorduct(userid, cpid,"0",channel,type);
  109. ecbProductInfo = bean.getUserProductInfo().getProductInfos().get(0);
  110. if(type.equals("1")){
  111. if(ecbProductInfo.getDiscntOrderState().equals("1")|| ecbProductInfo.getDiscntOrderState().equals("2")){
  112. OrderInfo orderInfo = new OrderInfo();
  113. orderInfo.setCpid("changshi");
  114. orderInfo.setSpid("1150");
  115. orderInfo.setOrdertime(ecbProductInfo.getDiscntStartDate()== null ? DateFormatUtils.format(new Date(), "yyyyMMddHHmmss") : ecbProductInfo.getDiscntStartDate());
  116. orderInfo.setEffecttime( DateFormatUtils.format(new Date(), "yyyyMMddHHmmss"));
  117. orderInfo.setOrderchannel("qecb");
  118. orderInfo.setUserid(userid);
  119. orderInfo.setStatus(0);
  120. orderInfo.setOrderstatus(3);
  121. if(areaInfo != null){
  122. orderInfo.setProvince(areaInfo.getProvince());
  123. orderInfo.setArea(areaInfo.getArea());
  124. }
  125. orderDao.order(orderInfo);
  126. ecbDiscntDao.order(ecbProductInfo, orderInfo);
  127. orderInfo.setTimes("");
  128. orderService.saveLog(orderInfo, "0", "");
  129. insertOrderMq(orderInfo, "0", ecbProductInfo);
  130. pipe.setResultCode("9901");
  131. pipe.setErrorInfo("用户本地已订购");
  132. }
  133. if(!csOrderControlDao.discntCodeControl(ecbProductInfo.getDiscntCode(), cpid, ecbProductInfo.getSpid())){
  134. throw new BusinessException("9903","资费不在白名单");
  135. }
  136. }
  137. if(type.equals("0")){
  138. if(ecbProductInfo.getDiscntValue().equals("1")){
  139. pipe.setResultCode("01");
  140. }
  141. if(StringUtils.isEmpty(ecbProductInfo.getDiscntOrderState())){
  142. List<OrderInfo> listOrderInfo = orderDao.findByUser(userid, cpid);
  143. if(listOrderInfo != null && listOrderInfo.size()>0){
  144. ecbProductInfo.setDiscntOrderState("2");
  145. ecbProductInfo.setDiscntFee("0");
  146. }
  147. }
  148. }
  149. }
  150. //20190226 xu.zhou 畅视订购页面仅保留20元资费(CB+B),把其余资费都去掉
  151. /*
  152. if(ecbProductInfo != null){
  153. //DiscntValue 畅视属性:0:标清畅视 1:无限畅视
  154. //DiscntFee 交费,单位为分
  155. if("1150".equals(ecbProductInfo.getSpid()) && "2000".equals(ecbProductInfo.getDiscntFee()) && "1".equals(ecbProductInfo.getDiscntValue())){
  156. //畅视20元资费产品,页面可以显示
  157. }else{
  158. throw new BusinessException("9923","过滤畅视产品非20元资费");
  159. }
  160. }
  161. */
  162. List<EcbProductInfo> list = new ArrayList<EcbProductInfo>();
  163. list.add(ecbProductInfo);
  164. pipe.add("productinfos", JsonUtil.objectToJson(list));
  165. if(!changshiDebugDao.query(userid)){
  166. pipe.add("sign", DESUtil.encode(userid+ecbProductInfo.getProductId()+ecbProductInfo.getPackageCode()+ecbProductInfo.getDiscntCode()+ecbProductInfo.getDiscntValue(), "chsh5a1d"));
  167. }
  168. return pipe;
  169. }
  170. public void insertOrderMq(OrderInfo orderInfo, String orderType, EcbProductInfo ecbProductInfo) {
  171. try {
  172. if (!csOrderControlDao.discntFeeControl(ecbProductInfo.getDiscntCode(), orderInfo.getCpid(),
  173. orderInfo.getSpid())) {
  174. Map<String, String> map = new HashMap<String, String>();
  175. map.put("userid", orderInfo.getUserid());
  176. map.put("cpid", orderInfo.getCpid());
  177. map.put("spid", orderInfo.getSpid());
  178. map.put("province", orderInfo.getProvince());
  179. map.put("area", orderInfo.getArea());
  180. map.put("ordertime", orderInfo.getOrdertime());
  181. map.put("canceltime", orderInfo.getCanceltime());
  182. if (orderType.equals("0")) {
  183. map.put("status", "0");
  184. } else {
  185. map.put("status", "1");
  186. }
  187. map.put("orderchannel", orderInfo.getOrderchannel());
  188. map.put("cancelchannel", orderInfo.getCancelchannel());
  189. map.put("videoid", orderInfo.getVideoid());
  190. map.put("type", "order");
  191. //URLUtil.post("http://10.199.99.144:8090/mq-service/recive.do", JsonUtil.objectToJson(map));
  192. URLUtil.post(dictionaryDao.getValue("mqReciveUrl"), JsonUtil.objectToJson(map));
  193. }
  194. } catch (Exception e) {
  195. e.printStackTrace();
  196. }
  197. }
  198. public static void main(String[] args) throws Exception {
  199. String url ="http://114.255.201.238:8092/videoif/queryproductinfo.do?";
  200. String userid = URLEncoder.encode(DESUtil.encode("18673197465", "chsh5a1d"), "utf-8");
  201. System.out.println(url+"userid="+userid+"&cpid=changshi&channel=H5_&type=1&apptype=2");
  202. }
  203. }