package com.chinacreator.videoalliance.order.service; import java.sql.SQLException; import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import java.util.List; import org.apache.commons.lang.time.DateFormatUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import org.springframework.util.StringUtils; import com.chinacreator.common.exception.BusinessException; import com.chinacreator.common.support.util.SpringContextUtil; import com.chinacreator.videoalliance.common.dao.SysDao; import com.chinacreator.videoalliance.order.bean.MemberOutBean; import com.chinacreator.videoalliance.order.bean.CustomSpInfo; import com.chinacreator.videoalliance.order.bean.MemberInfo; import com.chinacreator.videoalliance.order.bean.MemberlogBean; import com.chinacreator.videoalliance.order.bean.OrderInfo; import com.chinacreator.videoalliance.order.bean.OrderLog; import com.chinacreator.videoalliance.order.dao.BlackWhiteDao; import com.chinacreator.videoalliance.order.dao.CustomDao; import com.chinacreator.videoalliance.order.dao.MemberDao; import com.chinacreator.videoalliance.order.dao.OrderDao; import com.chinacreator.videoalliance.order.dao.OrderLogDao; import com.chinacreator.videoalliance.order.process.AbstractVipHandle; import com.chinacreator.videoalliance.order.util.URLUtil; @Component public class VIPOrderServise { @Autowired private MemberDao memberDao; @Autowired private OrderDao orderDao; @Autowired private BlackWhiteDao blackWhiteDao; @Autowired private SysDao sysDao; @Autowired private OrderLogDao orderLogDao; @Autowired private VacOrderService vacOrderService; public void checkVip(String numcode,OrderInfo orderInfo) throws Exception{ MemberInfo memberInfo = memberDao.queryMember(numcode,orderInfo.getCpid()); if(memberInfo == null){ throw new BusinessException("9042", "该串号不存在"); } if(!memberInfo.getStatus().equals("1")){ throw new BusinessException("9044","该串号已使用或者失效"); } if(orderInfo.getCpid().equals("manggtv")){ if(memberInfo.getEffectivemoths().equals("3")){ orderInfo.setSpid("957"); }else{ orderInfo.setSpid("956"); } } orderInfo.setEndtime(getEndtime(memberInfo.getEffectivemoths())); } public void giveVIP(OrderInfo orderInfo,String numcode,String ip,MemberlogBean logBean,CustomSpInfo customSpInfo) throws Exception{ MemberInfo memberInfo = memberDao.queryMember(numcode,orderInfo.getCpid()); MemberOutBean memberBean = new MemberOutBean(); memberBean.setIp(ip); memberBean.setCpid(orderInfo.getCpid()); memberBean.setSpid(orderInfo.getSpid()); memberBean.setMobile(orderInfo.getUserid()); memberBean.setFrom_order_id(logBean.getId()); memberBean.setNumcode(numcode); memberBean.setProduct_id(memberInfo.getProductid()); memberBean.setUsercode(""); AbstractVipHandle handle = null; if(customSpInfo.getType().equals("1")){//芒果tv handle = (AbstractVipHandle) SpringContextUtil.getBean("manggtv"); }else{//其它cp handle = (AbstractVipHandle) SpringContextUtil.getBean("comm"); } handle.getVipInfo(orderInfo, memberBean, customSpInfo,logBean); memberDao.updatemember(orderInfo.getUserid(), numcode); } public void checkOrder(OrderInfo orderInfo) throws Exception { List listOrderInfo = orderDao.findByUser(orderInfo .getUserid()); if (listOrderInfo != null && listOrderInfo.size() > 0) { if (!StringUtils.isEmpty(orderInfo.getMutex())) { String[] mutexSpids = orderInfo.getMutex().trim() .split(","); for (String mutexSpid : mutexSpids) { for (OrderInfo oldOrderInfo : listOrderInfo) { if (oldOrderInfo.getSpid().equals( orderInfo.getSpid())) { throw new BusinessException("9010", "您已订购,请不要重复订购!", new String[0]); } if (oldOrderInfo.getSpid().equals(mutexSpid)) { throw new BusinessException("9011", "您已订购同类产品!", new String[0]); } } } } else { if (listOrderInfo != null && listOrderInfo.size() != 0) { for (OrderInfo oldOrderInfo : listOrderInfo) { if (oldOrderInfo.getSpid().equals( orderInfo.getSpid()) && oldOrderInfo.getStatus() == 0) { throw new BusinessException("9010", "您已订购,请不要重复订购!", new String[0]); } } } } } } public void getFlowOrder(OrderInfo orderInfo) throws Exception{ String errorcode = "0"; String errorinfo = ""; String result = "0"; try { if (!this.blackWhiteDao.isWhiteUser(orderInfo.getUserid(), orderInfo.getCpid())) { result = this.vacOrderService.order(orderInfo.getUserid(), orderInfo.getSpid()); } String currentTime = this.sysDao.getCurrentTime(); if(orderInfo.getOrdertime() == null){ orderInfo.setOrdertime(currentTime); } if (orderInfo.getEffecttime() == null) { orderInfo.setEffecttime(currentTime); } if (!result.equals("0")) { orderInfo.setOrderstatus(7); orderInfo.setIsexperience(1); orderInfo.setShowstatus("0"); } this.orderDao.order(orderInfo); } catch (Exception e) { errorcode = "8000"; if ((e instanceof BusinessException)) { errorcode = ((BusinessException) e).getCode(); } throw e; } finally { saveLog(orderInfo, errorcode, errorinfo); } } public void saveLog(OrderInfo orderInfo, String errorcode, String errorinfo) { OrderLog orderLog = new OrderLog(); orderLog.setApptype(orderInfo.getApptype()); orderLog.setArea(orderInfo.getArea()); orderLog.setChannel(orderInfo.getOrderchannel()); orderLog.setOrderstatus(orderInfo.getOrderstatus()); orderLog.setStatus(orderInfo.getStatus()); orderLog.setCpid(orderInfo.getCpid()); orderLog.setIsexperience(orderInfo.getIsexperience()); orderLog.setOrdertype(orderInfo.getOrdertype() + ""); orderLog.setProvince(orderInfo.getProvince()); orderLog.setArea(orderInfo.getArea()); orderLog.setSpid(orderInfo.getSpid()); orderLog.setUserid(orderInfo.getUserid()); orderLog.setErrorcode(errorcode); orderLog.setErrorinfo(errorinfo); this.orderLogDao.addOrderLog(orderLog); } public void saveVIPLog(MemberlogBean logBean) throws SQLException { memberDao.saveLog(logBean); } public String getEndtime(String months){ Calendar calendar = Calendar.getInstance(); calendar.add(Calendar.MONTH,Integer.valueOf(months)); calendar.set(Calendar.DATE, calendar.getActualMaximum(Calendar.DATE)); calendar.set(Calendar.HOUR_OF_DAY, 23); calendar.set(Calendar.MINUTE, 59); calendar.set(Calendar.SECOND, 59); return DateFormatUtils.format(calendar.getTime(), "yyyyMMddHHmmss"); } public String getEndtime(String months,String time) throws ParseException{ Calendar calendar = Calendar.getInstance(); DateFormat df = new SimpleDateFormat("yyyyMMddHHmmss"); Date d = df.parse(time); calendar.setTime(d); calendar.add(Calendar.MONTH,Integer.valueOf(months)); calendar.set(Calendar.DATE, calendar.getActualMaximum(Calendar.DATE)); calendar.set(Calendar.HOUR_OF_DAY, 23); calendar.set(Calendar.MINUTE, 59); calendar.set(Calendar.SECOND, 59); return DateFormatUtils.format(calendar.getTime(), "yyyyMMddHHmmss"); } public static void main(String[] args) throws Exception { System.out.println(URLUtil.postForm("http://as.mgtv.com/openserver", "",15000)); } }