package com.chinacreator.videoalliance.order.action; import java.util.Date; import java.util.HashMap; import java.util.Map; import javax.servlet.http.HttpServletRequest; 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 org.springframework.web.bind.annotation.ResponseBody; import com.chinacreator.common.support.util.SpringContextUtil; import com.chinacreator.common.util.AESUtil; import com.chinacreator.common.util.URLUtil; import com.chinacreator.videoalliance.order.bean.SchoolChannel; import com.chinacreator.videoalliance.order.bean.SchoolChannelSp; import com.chinacreator.videoalliance.order.bean.SchoolOrderLog; import com.chinacreator.videoalliance.order.dao.SchoolOrderDao; import com.chinacreator.videoalliance.order.process.AbstractOrder; import com.chinacreator.videoalliance.order.service.ActivityService; import com.google.gson.Gson; import com.google.gson.GsonBuilder; import com.google.gson.reflect.TypeToken; @Controller public class SchoolOrderAction { @Autowired SchoolOrderDao schoolOrderDao; @Autowired ActivityService activityService; @RequestMapping("/schoolorder.do") @ResponseBody public Object order(HttpServletRequest request) throws Exception{ String content = null; Map resultMap = new HashMap(); SchoolOrderLog orderlog = new SchoolOrderLog(); Date starttime = new Date(); orderlog.setStarttime(DateFormatUtils.format(starttime, "yyyyMMddHHmmss")); SchoolChannel schoolChannel = null; try { content = URLUtil.readInputStream(request.getInputStream()); orderlog.setRequeststr(content); Gson gson = new GsonBuilder().disableHtmlEscaping().serializeNulls().create(); HashMap requestmap = gson.fromJson(content, new TypeToken>(){}.getType()); String channelcode = requestmap.get("channelcode"); orderlog.setChannelcode(channelcode); String order = requestmap.get("order"); schoolChannel = schoolOrderDao.querySchoolChannel(channelcode); if(schoolChannel!=null){ String paramStr = AESUtil.decrypt(order, schoolChannel.getAeskey()); HashMap paramMap = gson.fromJson(paramStr, new TypeToken>(){}.getType()); String productid = paramMap.get("productid"); String userid = paramMap.get("userid"); SchoolChannelSp schoolChannelSp = schoolOrderDao.querySchoolChannelSp(channelcode, productid); if(schoolChannelSp==null){ Date endtime = new Date(); orderlog.setEndtime(DateFormatUtils.format(endtime, "yyyyMMddHHmmss")); orderlog.setTimes((endtime.getTime()-starttime.getTime())+""); orderlog.setResultcode("1"); orderlog.setResultinfo("schoolChannelSp==null"); schoolOrderDao.addSchoolOrderLog(orderlog); return ""; }else{ AbstractOrder schoolOrder = (AbstractOrder)SpringContextUtil.getBean(schoolChannelSp.getProcess()); boolean isEffective = false; orderlog.setUserid(userid); orderlog.setProductid(productid); switch (activityService.canJonActivity(userid, channelcode)) { case 1://活动未开始或者结束 resultMap = schoolOrder.order(schoolChannel,schoolChannelSp,userid); break; case 2://活动期间未领取流量 resultMap = schoolOrder.order(schoolChannel,schoolChannelSp,userid); isEffective = true; break; case 3://活动期间已领取流量 resultMap.put("resultcode", "9022"); resultMap.put("errorinfo", "已参加过活动"); break; case 4: resultMap.put("resultcode", "9026"); resultMap.put("errorinfo", "活动暂未开始"); break; } String aeskey = schoolChannel.getAeskey(); if(isEffective){ activityService.activityHandle(resultMap, userid, channelcode); } String resultcode = resultMap.get("resultcode"); String resultinfo = resultMap.get("errorinfo"); resultMap.clear(); resultMap.put("resultcode", resultcode); resultMap.put("resultinfo", resultinfo); String result = gson.toJson(resultMap); result = schoolOrder.encodeAES(result,aeskey); orderlog.setResultcode(resultcode); orderlog.setResultinfo(resultinfo); orderlog.setResponsestr(result); Date endtime = new Date(); orderlog.setEndtime(DateFormatUtils.format(endtime, "yyyyMMddHHmmss")); orderlog.setTimes((endtime.getTime()-starttime.getTime())+""); schoolOrderDao.addSchoolOrderLog(orderlog); return result; } }else{ Date endtime = new Date(); orderlog.setEndtime(DateFormatUtils.format(endtime, "yyyyMMddHHmmss")); orderlog.setTimes((endtime.getTime()-starttime.getTime())+""); orderlog.setResultcode("1"); orderlog.setResultinfo("schoolChannel==null"); schoolOrderDao.addSchoolOrderLog(orderlog); return ""; } } catch (Exception e) { Date endtime = new Date(); orderlog.setEndtime(DateFormatUtils.format(endtime, "yyyyMMddHHmmss")); orderlog.setTimes((endtime.getTime()-starttime.getTime())+""); e.printStackTrace(); orderlog.setResultcode("1"); orderlog.setResultinfo(e.getMessage()); schoolOrderDao.addSchoolOrderLog(orderlog); if(schoolChannel!=null){ String result = "{'resultcode':'1','resultinfo':'系统忙'}"; return AESUtil.encrypt(result, schoolChannel.getAeskey()); } } return ""; } }