package com.lgx8.management.action;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.util.ArrayList;
import java.util.Date;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileUploadException;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
import org.apache.commons.fileupload.util.Streams;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartHttpServletRequest;
import org.springframework.web.servlet.ModelAndView;
import com.lgx8.common.PageArgument;
import com.lgx8.common.PageList;
import com.lgx8.common.servlet.BaseController;
import com.lgx8.common.util.Constants;
import com.lgx8.management.dao.IAdvertisementDao;
import com.lgx8.management.dao.IMerchantDao;
import com.lgx8.management.entities.Advertisement;
import com.lgx8.management.entities.Merchant;
import com.lgx8.right.entities.RunTimeUser;
import com.lgx8.right.entities.User;
import com.lgx8.util.ImageUtils;
/**
* 广告管理
* */
@Controller
public class AdvertisementController extends BaseController {
@Autowired
IMerchantDao merchantDao;
@Autowired
IAdvertisementDao advertisementDao;
/**
*广告修改
* **/
@RequestMapping("/advertisement/modifyAdvertisementIni.do")
public ModelAndView modifyAdvertisementIni(HttpServletRequest request,HttpServletResponse response){
String adId = request.getParameter("adId");
if(isNumber(adId)){
Advertisement ad = advertisementDao.findAdvertisementById(Long.parseLong(adId.trim()));
request.setAttribute("advertisement", ad);
if(User.USER_TYPE_MERCHANT==ad.getUser().getUsertype()){
return new ModelAndView("/management/advertisement/advertisement_merchant_add");
}else if(User.USER_TYPE_YYCENTER==ad.getUser().getUsertype()
||User.USER_TYPE_TGCENTER==ad.getUser().getUsertype()
||User.USER_TYPE_TGSTATION==ad.getUser().getUsertype()){
return new ModelAndView("/management/advertisement/advertisement_organization_add");
}
}
return null;
}
/**
*广告删除
* **/
@RequestMapping("/advertisement/deleteAdvertisement.do")
public ModelAndView deleteAdvertisement(HttpServletRequest request,HttpServletResponse response){
String adId = request.getParameter("adId");
if(isNumber(adId)){
Advertisement ad = new Advertisement();
ad.setID(Long.parseLong(adId.trim()));
ad.setUser(RunTimeUser.getRunTimeUser(request));
advertisementDao.deleteAdvertisement(ad);
}
return new ModelAndView("/management/advertisement/advertisement_generallist");
}
/**
*联盟商家广告录入
* **/
@RequestMapping("/merchant/saveAdvertisement.do")
public ModelAndView saveMerchantAdvertisement(HttpServletRequest req,HttpServletResponse response){
MultipartHttpServletRequest request = (MultipartHttpServletRequest)req;
String adId = request.getParameter("adId");
String tplx = request.getParameter("tplx");
String tpmx = request.getParameter("description");
String layerOrder = request.getParameter("layerOrder");
RunTimeUser rtUser = RunTimeUser.getRunTimeUser(request);
Merchant merchant = null;
if(rtUser!=null){
long mid = rtUser.getOrganizationid();
merchant = merchantDao.getMerchantById(mid);
}
if(merchant!=null){
File picture = fileUpload(request,"picture",merchant);
if(adId!=null&&isNumber(adId)){
Advertisement ad = advertisementDao.findAdvertisementById(Long.parseLong(adId.trim()));
if(ad!=null){
try {
String orignalFilePath = ad.getTPLJ();
ad.setUser(rtUser);
if(null!=picture)ad.setTPLJ(getSourceURL(picture.getPath()));
if(null!=tpmx)ad.setTpmx(tpmx);
if(null!=tplx)ad.setTplx(tplx);
ad.setLayerOrder(layerOrder);
advertisementDao.updateAdervertisement(ad);
File orignalFile = new File(orignalFilePath);
if(orignalFile.exists())orignalFile.delete();
}catch (Exception e) {
e.printStackTrace();
}
}
}else{
try {
Advertisement ad = new Advertisement();
ad.setMerchant(merchant);
ad.setUser(rtUser);
if(null!=picture)ad.setTPLJ(getSourceURL(picture.getPath()));
ad.setUrl(null);
ad.setSJSJ(new Date());
ad.setQX(10000);
ad.setTplx(tplx);
ad.setTpmx(tpmx);
ad.setLayerOrder(layerOrder);
advertisementDao.createAdvertisement(ad);
} catch (Exception e) {
e.printStackTrace();
}
}
}
return new ModelAndView("/management/advertisement/advertisement_generallist");
}
@RequestMapping("/organization/saveAdvertisement.do")
public ModelAndView saveOrganizationAdvertisement(HttpServletRequest req,HttpServletResponse response){
MultipartHttpServletRequest request = (MultipartHttpServletRequest)req;
String adId = request.getParameter("adId");
String merchantNo = request.getParameter("merchantNo");
String tplx = request.getParameter("tplx");
String tpmx = request.getParameter("description");
RunTimeUser rtUser = RunTimeUser.getRunTimeUser(request);
Merchant merchant = null;
if(merchantNo!=null&&isNumber(merchantNo)){
merchant = merchantDao.getMerchantById(Long.parseLong(merchantNo.trim()));
}
if(null!=merchant){
File picture = fileUpload(request,"picture",merchant);
if(adId!=null&&isNumber(adId)){
//修改
Advertisement ad = advertisementDao.findAdvertisementById(Long.parseLong(adId.trim()));
if(ad!=null){
try {
String orignalFilePath = ad.getTPLJ();
ad.setMerchant(merchant);
ad.setUser(rtUser);
ad.setTplx(tplx);
ad.setTpmx(tpmx);
if(null!=picture)ad.setTPLJ(getSourceURL(picture.getPath()));
advertisementDao.updateAdervertisement(ad);
File orignalFile = new File(orignalFilePath);
if(orignalFile.exists())orignalFile.delete();
}catch (Exception e) {
e.printStackTrace();
}
}
}else{
//添加
try {
Advertisement ad = new Advertisement();
ad.setMerchant(merchant);
ad.setUser(rtUser);
ad.setTplx(tplx);
ad.setTpmx(tpmx);
if(null!=picture)ad.setTPLJ(getSourceURL(picture.getPath()));
ad.setUrl(null);
ad.setSJSJ(new Date());
ad.setQX(10000);
//ad.setTplx("01");
advertisementDao.createAdvertisement(ad);
} catch (Exception e) {
e.printStackTrace();
}
}
}
return new ModelAndView("/management/advertisement/advertisement_generallist");
}
private File fileUpload(HttpServletRequest request,Merchant merchant){
DiskFileItemFactory factory = new DiskFileItemFactory();
factory.setSizeThreshold(102400);
ServletFileUpload upload = new ServletFileUpload(factory);
upload.setSizeMax(Constants.UPLOAD_MAX_SIZE);
try {
List fileItems = upload.parseRequest(request);
Iterator iter = fileItems.iterator();
while (iter.hasNext()) {
FileItem item = (FileItem) iter.next();
if (!item.isFormField()){
String fileName = item.getName();
if (fileName != null && fileName.length() != 0) {
BufferedInputStream bis = new BufferedInputStream(item.getInputStream());
String _fn = fileName.substring(fileName.lastIndexOf(System.getProperty("file.separator"))+1);
String _ed = _fn.substring(_fn.indexOf('.'));
String path = AdvertisementController.class.getClassLoader().getResource("/").getPath();
File file = new File(path);
File p_file = new File(file.getParent());
String url = p_file.getParent()+System.getProperty("file.separator")+"merchant_picture"+System.getProperty("file.separator")+new Date().getTime()+"_"+merchant.getID();
boolean suc = new File(p_file.getParent()+System.getProperty("file.separator")+"merchant_picture"+System.getProperty("file.separator")+new Date().getTime()+"_"+merchant.getID()).mkdirs();
if(suc){
File _new = new File(url+System.getProperty("file.separator")+merchant.getID()+_ed);
_new.createNewFile();
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(_new));
Streams.copy( bis, bos, true);
return _new;
}
}
}
}
} catch (FileUploadException e) {
e.printStackTrace();
System.out.println(e.getMessage() + "结束");
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
private boolean isNumber(String orderStr){
if(orderStr==null)return false;
return orderStr.trim().matches("[\\d]+");
}
@RequestMapping("/advertisement/listAdvertisement.do")
public ModelAndView queryAdvertisement(HttpServletRequest request,HttpServletResponse response){
RunTimeUser rtUser = RunTimeUser.getRunTimeUser(request);
String description = request.getParameter("description");
List parameters = new ArrayList();
String hql = "";
if(rtUser.getUsertype() == User.USER_TYPE_GSYG)
{
hql = "from Advertisement ad where ad.SFYX = 0 and ad.merchant.DELETEFLAG = '0' " ;
}else if(rtUser.getUsertype()!=User.USER_TYPE_MERCHANT){
hql = "from Advertisement ad where ad.SFYX = 0 and ad.user.id =? ";
parameters.add(rtUser.getId());
}else{
hql = "from Advertisement ad where ad.SFYX = 0 and ad.merchant.id=? ";
parameters.add(rtUser.getOrganizationid());
}
if(null!=description&&!"".equals(description.trim())){
hql += " and ad.tpmx like ?";
parameters.add("%"+description+"%");
}
PageArgument arg = this.getPageInfo(request);
PageList pageList = advertisementDao.findByPage4Report(hql, parameters.toArray(), arg.getCurPage(), arg.getPageSize());
this.printJSON(response, pageList.toJSON());
return null;
}
private File fileUpload(MultipartHttpServletRequest multipartRequest,String key,Merchant merchant){
Map<String,MultipartFile> maps = multipartRequest.getFileMap();
MultipartFile file = maps.get(key);
try {
String uploadPath = ImageUtils.getUploadPath();
String sourcePath = uploadPath + System.getProperty("file.separator") + new Date().getTime()+"_"+merchant.getID()+".jpg";
File newFile = new File(sourcePath);
file.transferTo(newFile);
return newFile;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
private String getSourceURL(String sourceURL){
String[] path = sourceURL.split("\\"+System.getProperty("file.separator"));
String sourcePath = path[path.length-3]+"/"+ path[path.length-2]+"/"+ path[path.length-1];
return sourcePath;
}
}