123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170 |
- package com.chinacreator.process.service;
- import java.sql.SQLException;
- import org.apache.commons.lang.StringUtils;
- import org.apache.commons.lang.time.DateFormatUtils;
- import org.apache.commons.lang.time.DateUtils;
- import org.apache.log4j.Logger;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.stereotype.Component;
- import com.chinacreator.common.exception.BusinessException;
- import com.chinacreator.process.bean.AreaInfo;
- import com.chinacreator.process.bean.NetOrderBean;
- import com.chinacreator.process.bean.OrderBean;
- import com.chinacreator.process.bean.OrderLog;
- import com.chinacreator.process.dao.CSactiveDao;
- import com.chinacreator.process.dao.CallerAreacodeDao;
- import com.chinacreator.process.dao.NetOrderDao;
- import com.chinacreator.process.dao.SysDao;
- @Component
- public class CSorderService {
- private static Logger log = Logger.getLogger(CSorderService.class);
- @Autowired
- private NetOrderDao netOrderDao;
- @Autowired
- private CSactiveDao csActiveDao;
-
- @Autowired
- private CallerAreacodeDao callerAreacodeDao;
-
- @Autowired
- private EcbService ecbService;
-
- @Autowired
- private SysDao sysDao;
-
- public void handle(OrderBean bean){
- NetOrderBean netOrderBean = trunBean(bean);
- if(bean.getOrderType().equals("0")){
- compareOrderForNet(netOrderBean);
- }else{
- compareCancelForNet(netOrderBean);
- }
- }
-
- public NetOrderBean trunBean(OrderBean bean){
- NetOrderBean netOrderBean = new NetOrderBean();
- netOrderBean.setId(bean.getId());
- netOrderBean.setUserid(bean.getUserid());
- netOrderBean.setCpid(bean.getCpid());
- netOrderBean.setSpid(bean.getSpid());
- AreaInfo areaInfo = callerAreacodeDao.findByCallerhead(bean.getUserid().substring(0, 7));
- netOrderBean.setProvince(areaInfo.getProvince());
- netOrderBean.setArea(areaInfo.getArea());
- netOrderBean.setApptype("");
- netOrderBean.setIsexperience(0);
- if(bean.getOrderType().equals("0")){
- netOrderBean.setStatus("0");
- netOrderBean.setOrdertype("0");
- netOrderBean.setOrderstatus(2);
- netOrderBean.setOrderchannel(bean.getChannel());
- }else{
- netOrderBean.setStatus("1");
- netOrderBean.setOrdertype("1");
- netOrderBean.setOrderstatus(4);
- netOrderBean.setCancelchannel(bean.getChannel());
- }
- return netOrderBean;
- }
-
- public void compareOrderForNet(NetOrderBean bean) {
- String errorcode = "0";
- String errorinfo = "";
- String state ="3";
- NetOrderBean oldOrderBean = null;
- try {
- oldOrderBean = this.netOrderDao.findOrder(bean.getCpid(), bean.getSpid(), bean.getUserid());
- if (oldOrderBean != null && oldOrderBean.getStatus().equals("0")) {
- throw new BusinessException("9010", "已订购,请不要重复订购", new String[0]);
- }
- errorcode = ecbService.order(bean.getUserid(), bean.getCpid(), bean.getSpid());
- bean.setOrdertime(sysDao.getSysdate());
- this.netOrderDao.order(bean);
- } catch (Exception e) {
- state ="6";
- log.error(bean.getUserid()+"订购失败:",e);
- if ((e instanceof BusinessException)) {
- errorcode = ((BusinessException) e).getCode();
- errorinfo = e.getMessage();
- } else {
- errorcode = "8000";
- errorinfo = "系统忙!";
- }
- if(StringUtils.isNotEmpty(errorinfo) && errorinfo.length() >200){
- errorinfo = errorinfo.substring(0, 200);
- }
- } finally {
- try {
- csActiveDao.update(bean.getId(), errorcode, errorinfo,state);
- saveNetLog(bean, errorcode, errorinfo, "0");
- } catch (SQLException e) {
- e.printStackTrace();
- }
- }
- }
- public void compareCancelForNet(NetOrderBean bean) {
- String errorcode = "0";
- String errorinfo = "";
- String state ="5";
- NetOrderBean oldOrderBean = null;
- try {
- oldOrderBean = this.netOrderDao.findOrder(bean.getCpid(), bean.getSpid(), bean.getUserid());
- if (oldOrderBean == null) {
- throw new BusinessException("9026", "本地无订购", new String[0]);
- }
- if (oldOrderBean != null && !oldOrderBean.getStatus().equals("0")) {
- throw new BusinessException("9006", "已退订,请不要重复退订", new String[0]);
- }
- if(oldOrderBean.getOrdertime().compareTo(DateUtils.parseDate("20170621235959",new String[]{"yyyyMMddHHmmss"})) > 0){
- errorcode = ecbService.cancelOrder(bean.getUserid(), bean.getCpid(),bean.getSpid(),DateFormatUtils.format(oldOrderBean.getOrdertime(), "yyyyMMddHHmmss"));
- }
- bean.setCanceltime(sysDao.getSysdate());
- this.netOrderDao.cancelOrder(bean);
- } catch (Exception e) {
- state ="7";
- log.error(bean.getUserid()+"退订失败:",e);
- if ((e instanceof BusinessException)) {
- errorcode = ((BusinessException) e).getCode();
- errorinfo = e.getMessage();
- } else {
- errorcode = "8000";
- errorinfo = "系统忙!";
- }
- if(StringUtils.isNotEmpty(errorinfo) && errorinfo.length() >200){
- errorinfo = errorinfo.substring(0, 200);
- }
- } finally {
- try {
- saveNetLog(bean, errorcode, errorinfo, "1");
- csActiveDao.update(bean.getId(), errorcode, errorinfo,state);
- } catch (SQLException e) {
- e.printStackTrace();
- }
- }
- }
- public void saveNetLog(NetOrderBean orderInfo, String errorcode, String errorinfo, String ordertype)
- throws SQLException {
- OrderLog orderLog = new OrderLog();
- orderLog.setApptype(orderInfo.getApptype());
- orderLog.setChannel(ordertype.equals("0") ? orderInfo.getOrderchannel() : orderInfo.getCancelchannel());
- orderLog.setOrderstatus(orderInfo.getOrderstatus());
- orderLog.setStatus(Integer.valueOf(orderInfo.getStatus()).intValue());
- 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.netOrderDao.addOrderLog(orderLog);
- }
- }
|