package com.chinacreator.videoalliance.order.service; import java.sql.SQLException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import java.util.HashMap; import java.util.List; import org.apache.log4j.Logger; 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.util.Base64; import com.chinacreator.common.util.UsermobUtil; import com.chinacreator.videoalliance.common.bean.AreaInfo; import com.chinacreator.videoalliance.common.bean.CPInfo; import com.chinacreator.videoalliance.common.util.AreaUtil; import com.chinacreator.videoalliance.common.util.ConfigUtil; import com.chinacreator.videoalliance.order.bean.OrderInfo; import com.chinacreator.videoalliance.order.bean.SPInfo; import com.chinacreator.videoalliance.order.dao.BackBusiOrderDao; import com.chinacreator.videoalliance.order.dao.BlackWhiteDao; import com.chinacreator.videoalliance.order.dao.HeyueOrderDao; import com.chinacreator.videoalliance.order.dao.OrderDao; import com.chinacreator.videoalliance.order.dao.SPDao; /** * 违约金合约包服务类 * @author xu.zhou * @date 20210902 CPID为wyj的产品,只能在测试页面上订购,订购此产品没有任何服务,只是扣费,可重复调用 */ @Component public class WyjOrderService { private static Logger logger = Logger.getLogger("orderError"); @Autowired private SPDao spDao; @Autowired private OrderService orderService; @Autowired CapOrderService capOrderService; @Autowired private HeyueOrderDao heyueOrderDao; @Autowired private BlackWhiteDao blackWhiteDao; @Autowired private ShareOrderService shareOrderService; private void orderCheck(OrderInfo orderInfo) throws Exception { //只有CPID为wyj(违约金) if(!"wyj".equals(orderInfo.getCpid())){ throw new BusinessException("9012", "该产品不支持订购操作", new String[0]); } orderService.checkUserid(orderInfo); orderService.checkCpInfo(orderInfo); checkSpInfo(orderInfo); orderService.checkToken(orderInfo); String userid = orderInfo.getUserid(); AreaInfo areaInfo = AreaUtil.getAreaInfoByUserid(userid); if (areaInfo == null) { areaInfo = new AreaInfo(); } orderInfo.setProvince(areaInfo.getProvince()); orderInfo.setArea(areaInfo.getArea()); } private void checkSpInfo(OrderInfo orderInfo) throws Exception { SPInfo spInfo = this.spDao.findById(orderInfo.getSpid()); /** //根据CPID获取TB_SP_INFO表的信息 List spList = this.spDao.findByCP(orderInfo.getCpid()); if(spList != null){ for(SPInfo tmp : spList){ if(orderInfo.getSpid().equals(tmp.getSpid())){ spInfo = tmp; break; } } } **/ if (spInfo == null) { throw new BusinessException("5305", "产品标识符无效", new String[0]); } orderInfo.setSpid(spInfo.getSpid()); if (spInfo.getCanorder() == 1 && StringUtils.isEmpty(orderInfo.getOrderchannel())) { throw new BusinessException("9012", "该产品不支持订购操作", new String[0]); } orderInfo.setSpid(spInfo.getSpid()); orderInfo.setMutex(spInfo.getMutex()); orderInfo.setRelationSp(spInfo.getRelationSp()); orderInfo.setPaytype(spInfo.getPaytype()); orderInfo.setErrorhandle(spInfo.getErrorhandle()); orderInfo.setDirectype(spInfo.getDirectype()); } /** * 订购 * @param orderInfo * @throws Exception */ public void process(OrderInfo orderInfo) throws Exception { orderCheck(orderInfo); order(orderInfo); } /** * 调接口订购 * @param orderInfo * @throws Exception */ private void order(OrderInfo orderInfo) throws Exception { //结果编码 String resultcode = ""; //结果信息 String resultinfo = ""; //调接口结果 String result = ""; String extend1 = ""; try { //是否为白名单用户,用于测试 if (!this.blackWhiteDao.isWhiteUser(orderInfo.getUserid(), orderInfo.getCpid())) { logger.info(orderInfo.getSpid()+"_"+orderInfo.getPaytype()); //走能力平台订购 if(orderInfo.getPaytype() == 4){ shareOrderService.order(orderInfo.getUserid(), orderInfo.getCpid(), orderInfo.getSpid()); result = "0"; }else{//走CAP平台订购 result = this.capOrderService.order(orderInfo, "1"); } //成功 if("0".equals(result)){ resultcode = result; resultinfo = "订购成功"; extend1 = "2"; } }else{//是白名单 resultcode = "0"; resultinfo = "白名单用户"; extend1 = "2"; } } catch (Exception e) { if(e instanceof BusinessException){ resultcode = ((BusinessException) e).getCode(); resultinfo = ((BusinessException) e).getMessage(); if(resultinfo.length()>500){ resultinfo = resultinfo.substring(0, 400); } extend1 = "1"; }else{ e.printStackTrace(); resultcode = "8000"; resultinfo = e.getMessage(); extend1 = "1"; logger.error(orderInfo.getUserid()+", "+orderInfo.getSpid()+", 违约金产品订购出现异常,"+e.getMessage()); } throw e; } finally { try { //订购数据入库 boolean res = heyueOrderDao.addWyjOrderRec(orderInfo, resultcode, resultinfo,extend1); } catch (Exception e2) { resultcode = "8000"; resultinfo = e2.getMessage(); logger.error(orderInfo.getUserid()+", "+orderInfo.getSpid()+", 违约金产品保存订购出现异常,"+e2.getMessage()); throw new BusinessException("8000","违约金产品保存订购出现异常,"+e2.getMessage()); } } } }