package com.chinacreator.videoalliance.order.service; import java.sql.SQLException; import java.util.HashMap; import java.util.List; import java.util.Map; import com.chinacreator.common.exception.BusinessException; import com.chinacreator.common.util.URLUtil; 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.order.bean.SPInfo; import com.chinacreator.videoalliance.order.bean.VacOrderLog; import com.chinacreator.videoalliance.order.dao.OrderLogDao; import com.chinacreator.videoalliance.order.dao.SPDao; import com.chinacreator.videoalliance.order.util.JsonUtil; import com.chinacreator.videoalliance.order.util.VacUtil; import org.apache.commons.lang.StringUtils; import org.apache.log4j.Logger; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @Component public class VacOrderService { private static Logger log = Logger.getLogger(VacOrderService.class); @Autowired private SPDao spDao; @Autowired private OrderLogDao orderLogDao; @Autowired private DictionaryDao dictionaryDao; public String order(String userid, String spid) throws Exception { return order(userid,spid,null,null); } public String order(String userid, String spid, String sequence,String channel) throws Exception { SPInfo spInfo = getSPInfo(spid); String result = "0"; String type = "1"; //System.out.println("++++++++++++++++++HASLOCAL:"+spInfo.getVacproductid()+","+spInfo.getHaslocal()); if(spInfo == null || (StringUtils.isEmpty(spInfo.getVacproductid()) && !"0".equals(spInfo.getHaslocal()))){ throw new BusinessException("7003", "产品配置错误"); } if (!"0".equals(spInfo.getHaslocal()) && spInfo.getFeetype() == 1) { result = VacUtil.vac(userid, spInfo.getSpcode(), spInfo.getVacproductid(), type, sequence); } try { saveLog(userid, spInfo, type, result,sequence); } catch (Exception e) { e.printStackTrace(); } if ("1200".equals(result)) { result = "0"; } if ((!result.equals("0")) && (spInfo.getErrorhandle() != 0)) { if(!"cardbus".equals(channel)){ insertPushTw(userid,spInfo.getCpid(),spid); } if("8005".equals(result)){ throw new BusinessException(result, "订购失败:VAC参数验证失败", new String[0]); } throw new BusinessException(result, "订购失败", new String[0]); } return result; } private SPInfo getSPInfo(String spid) throws Exception { return this.spDao.findById(spid); } public String cancelOrder(String userid, String spid) throws Exception { SPInfo spInfo = getSPInfo(spid); String result = "0"; if ((spInfo != null) && (StringUtils.isNotEmpty(spInfo.getVacproductid())) && (spInfo.getFeetype() == 1)) { result = VacUtil.vac(userid, spInfo.getSpcode(), spInfo.getVacproductid(), "2"); } try { saveLog(userid, spInfo, "2", result,null); } catch (Exception e) { e.printStackTrace(); } if ("1201".equals(result)) { result = "0"; } if (!result.equals("0")) { if("8005".equals(result)){ throw new BusinessException(result, "退订失败:VAC参数验证失败", new String[0]); } throw new BusinessException(result, "退订失败", new String[0]); } return result; } /** * VAC订购失败推送拓维后向订购 * @param userid * @param cpid * @param spid */ public void insertPushTw(String userid,String cpid,String spid){ try { Map map = new HashMap(); map.put("userid",userid); map.put("kcSpid",spid); map.put("kcCpid",cpid); map.put("type", "twhx"); String mqReciveUrl = dictionaryDao.getValue("mqReciveUrl"); URLUtil.post(mqReciveUrl, JsonUtil.objectToJson(map)); } catch (Exception e) { e.printStackTrace(); } } private void saveLog(String userid, SPInfo spInfo, String type, String result,String sequence) throws Exception { VacOrderLog vacOrderLog = new VacOrderLog(); AreaInfo areaInfo = AreaUtil.getAreaInfoByUserid(userid); if (areaInfo != null) { vacOrderLog.setProvince(areaInfo.getProvince()); } vacOrderLog.setUserid(userid); vacOrderLog.setCpid(spInfo.getCpid()); vacOrderLog.setProductid(spInfo.getVacproductid()); vacOrderLog.setResultcode(result); vacOrderLog.setSpcode(spInfo.getSpcode()); vacOrderLog.setType(type); vacOrderLog.setSequence(sequence); this.orderLogDao.addVacOrderLog(vacOrderLog); } public static void main(String[] args) { System.out.println("--123-"); } }