package com.chinacreator.videoalliance.query.action; import com.chinacreator.common.exception.BusinessException; import com.chinacreator.common.pipe.DataOutPipe; import com.chinacreator.common.util.DESUtil; import com.chinacreator.common.util.URLUtil; import com.chinacreator.videoalliance.common.annotation.DataOut; import com.chinacreator.videoalliance.common.bean.AreaInfo; import com.chinacreator.videoalliance.common.dao.DictionaryDao; import com.chinacreator.videoalliance.common.util.AreaUtil; import com.chinacreator.videoalliance.common.util.ConfigUtil; import com.chinacreator.videoalliance.order.bean.DiscntInfo; import com.chinacreator.videoalliance.order.bean.EcbProductInfo; import com.chinacreator.videoalliance.order.bean.EcbResponseBean; import com.chinacreator.videoalliance.order.bean.OrderInfo; import com.chinacreator.videoalliance.order.dao.CsOrderControlDao; import com.chinacreator.videoalliance.order.dao.EcbDiscntDao; import com.chinacreator.videoalliance.order.dao.OrderDao; import com.chinacreator.videoalliance.order.service.EcbService; import com.chinacreator.videoalliance.order.service.OrderService; import com.chinacreator.videoalliance.order.util.JsonUtil; import com.chinacreator.videoalliance.query.dao.ChangshiDebugDao; import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.time.DateFormatUtils; 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.net.URLEncoder; import java.util.*; @Controller public class CsQueryProductAction { @Autowired private EcbService ecbService; @Autowired private OrderDao orderDao; @Autowired private EcbDiscntDao ecbDiscntDao; @Autowired private CsOrderControlDao csOrderControlDao; @Autowired private OrderService orderService; @Autowired private ChangshiDebugDao changshiDebugDao; @Autowired private DictionaryDao dictionaryDao; @RequestMapping("/queryproductinfo.do") @DataOut(callback = "queryproductinfo") public DataOutPipe doOrder(HttpServletRequest request, String cpid, String userid,String channel,String type) throws Exception { DataOutPipe pipe = new DataOutPipe(); if (StringUtils.isEmpty(cpid) || StringUtils.isEmpty(userid)) { throw new BusinessException("7002", "参数错误"); } try { if (StringUtils.isNotEmpty(userid)) { userid = ConfigUtil.decrypt(userid, cpid); if ((userid != null) && (userid.length() > 11)) { userid = ConfigUtil.getUserid(userid, cpid); } } } catch (Exception e) { throw new BusinessException("7002", "手机号码无效"); } pipe.add("userid", userid); if(StringUtils.isEmpty(type)){ type ="0"; } EcbProductInfo ecbProductInfo = null; AreaInfo areaInfo = null; if(type.equals("1")){ List listOrderInfo = orderDao.findByUser(userid, cpid); if(listOrderInfo != null && listOrderInfo.size()>0){ for (OrderInfo orderInfo : listOrderInfo) { if(orderInfo.getSpid().equals("1150")){ DiscntInfo discntInfo = ecbDiscntDao.queryByUserid(userid, type); if(discntInfo != null){ ecbProductInfo = new EcbProductInfo(); ecbProductInfo.setDiscntCode(discntInfo.getDiscntid()); ecbProductInfo.setDiscntFee(discntInfo.getDiscntfee()); ecbProductInfo.setDiscntName(discntInfo.getDiscntName()); ecbProductInfo.setDiscntStartDate(discntInfo.getOrdertime()); ecbProductInfo.setDiscntEndDate(discntInfo.getEndtime()); ecbProductInfo.setDiscntOrderState(discntInfo.getDiscntOrderState()); ecbProductInfo.setPackageCode(discntInfo.getPackageCode()); ecbProductInfo.setProductId(discntInfo.getProductId()); ecbProductInfo.setDiscntValue(discntInfo.getDiscnttype()); ecbProductInfo.setSpid("1150"); } if(orderInfo.getStatus() == 0){ pipe.setResultCode("9901"); pipe.setErrorInfo("用户本地已订购"); }else{ pipe.setResultCode("9902"); pipe.setErrorInfo("用户本月已退订"); } } } } if(ecbProductInfo == null){ areaInfo = AreaUtil.getAreaInfoByUserid(userid); if(areaInfo != null){ if(csOrderControlDao.provinceControl(areaInfo.getProvince(), cpid, "1150")){ throw new BusinessException("9904","省份不在白名单"); } } } } if(ecbProductInfo == null){ EcbResponseBean bean =ecbService.queryPorduct(userid, cpid,"0",channel,type); ecbProductInfo = bean.getUserProductInfo().getProductInfos().get(0); if(type.equals("1")){ if(ecbProductInfo.getDiscntOrderState().equals("1")|| ecbProductInfo.getDiscntOrderState().equals("2")){ OrderInfo orderInfo = new OrderInfo(); orderInfo.setCpid("changshi"); orderInfo.setSpid("1150"); orderInfo.setOrdertime(ecbProductInfo.getDiscntStartDate()== null ? DateFormatUtils.format(new Date(), "yyyyMMddHHmmss") : ecbProductInfo.getDiscntStartDate()); orderInfo.setEffecttime( DateFormatUtils.format(new Date(), "yyyyMMddHHmmss")); orderInfo.setOrderchannel("qecb"); orderInfo.setUserid(userid); orderInfo.setStatus(0); orderInfo.setOrderstatus(3); if(areaInfo != null){ orderInfo.setProvince(areaInfo.getProvince()); orderInfo.setArea(areaInfo.getArea()); } orderDao.order(orderInfo); ecbDiscntDao.order(ecbProductInfo, orderInfo); orderInfo.setTimes(""); orderService.saveLog(orderInfo, "0", ""); insertOrderMq(orderInfo, "0", ecbProductInfo); pipe.setResultCode("9901"); pipe.setErrorInfo("用户本地已订购"); } if(!csOrderControlDao.discntCodeControl(ecbProductInfo.getDiscntCode(), cpid, ecbProductInfo.getSpid())){ throw new BusinessException("9903","资费不在白名单"); } } if(type.equals("0")){ if(ecbProductInfo.getDiscntValue().equals("1")){ pipe.setResultCode("01"); } if(StringUtils.isEmpty(ecbProductInfo.getDiscntOrderState())){ List listOrderInfo = orderDao.findByUser(userid, cpid); if(listOrderInfo != null && listOrderInfo.size()>0){ ecbProductInfo.setDiscntOrderState("2"); ecbProductInfo.setDiscntFee("0"); } } } } //20190226 xu.zhou 畅视订购页面仅保留20元资费(CB+B),把其余资费都去掉 /* if(ecbProductInfo != null){ //DiscntValue 畅视属性:0:标清畅视 1:无限畅视 //DiscntFee 交费,单位为分 if("1150".equals(ecbProductInfo.getSpid()) && "2000".equals(ecbProductInfo.getDiscntFee()) && "1".equals(ecbProductInfo.getDiscntValue())){ //畅视20元资费产品,页面可以显示 }else{ throw new BusinessException("9923","过滤畅视产品非20元资费"); } } */ List list = new ArrayList(); list.add(ecbProductInfo); pipe.add("productinfos", JsonUtil.objectToJson(list)); if(!changshiDebugDao.query(userid)){ pipe.add("sign", DESUtil.encode(userid+ecbProductInfo.getProductId()+ecbProductInfo.getPackageCode()+ecbProductInfo.getDiscntCode()+ecbProductInfo.getDiscntValue(), "chsh5a1d")); } return pipe; } public void insertOrderMq(OrderInfo orderInfo, String orderType, EcbProductInfo ecbProductInfo) { try { if (!csOrderControlDao.discntFeeControl(ecbProductInfo.getDiscntCode(), orderInfo.getCpid(), orderInfo.getSpid())) { Map map = new HashMap(); map.put("userid", orderInfo.getUserid()); map.put("cpid", orderInfo.getCpid()); map.put("spid", orderInfo.getSpid()); map.put("province", orderInfo.getProvince()); map.put("area", orderInfo.getArea()); map.put("ordertime", orderInfo.getOrdertime()); map.put("canceltime", orderInfo.getCanceltime()); if (orderType.equals("0")) { map.put("status", "0"); } else { map.put("status", "1"); } map.put("orderchannel", orderInfo.getOrderchannel()); map.put("cancelchannel", orderInfo.getCancelchannel()); map.put("videoid", orderInfo.getVideoid()); map.put("type", "order"); //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(); } } public static void main(String[] args) throws Exception { String url ="http://114.255.201.238:8092/videoif/queryproductinfo.do?"; String userid = URLEncoder.encode(DESUtil.encode("18673197465", "chsh5a1d"), "utf-8"); System.out.println(url+"userid="+userid+"&cpid=changshi&channel=H5_&type=1&apptype=2"); } }