|
package com.ekexiu.console.system.service;
import com.ekexiu.console.system.dao.DiscoverBannerDao;
import com.ekexiu.console.system.po.DiscoverBanner;
import com.ekexiu.console.system.vo.ConsoleAuthUser;
import freemarker.cache.TemplateLoader;
import freemarker.template.Configuration;
import freemarker.template.Template;
import freemarker.template.TemplateException;
import freemarker.template.TemplateExceptionHandler;
import org.jfw.apt.annotation.Autowrie;
import org.jfw.apt.annotation.DefaultValue;
import org.jfw.apt.annotation.Nullable;
import org.jfw.apt.web.annotation.LoginUser;
import org.jfw.apt.web.annotation.Path;
import org.jfw.apt.web.annotation.operate.Get;
import org.jfw.apt.web.annotation.operate.Post;
import org.jfw.apt.web.annotation.param.JdbcConn;
import org.jfw.apt.web.annotation.param.PathVar;
import org.jfw.apt.web.annotation.param.RequestParam;
import org.jfw.util.ConstData;
import org.jfw.util.DateUtil;
import org.jfw.util.PageQueryResult;
import java.io.*;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
/**
* Created by TT on 2017/8/25.
*/
@Path("/disBanner")
public class DiscoverBannerService {
private File source;
private Configuration cfg = new Configuration(Configuration.VERSION_2_3_26);
@Autowrie
private DiscoverBannerDao discoverBannerDao;
@Autowrie
private ImageService imageService;
public DiscoverBannerDao getDiscoverBannerDao() {
return discoverBannerDao;
}
public void setDiscoverBannerDao(DiscoverBannerDao discoverBannerDao) {
this.discoverBannerDao = discoverBannerDao;
}
public File getSource() {
return source;
}
public void setSource(File source) {
this.source = source;
try {
this.cfg.setDirectoryForTemplateLoading(source);
} catch (IOException e) {
this.source = null;
this.cfg.setTemplateLoader(new TemplateLoader() {
@Override
public Reader getReader(Object templateSource, String encoding) throws IOException {
StringReader reader = new StringReader("TemplateService'source is invalid dir,so "+templateSource.toString()+" can't read");
return reader;
}
@Override
public long getLastModified(Object templateSource) {
return 0;
}
@Override
public Object findTemplateSource(String name) throws IOException {
return name;
}
@Override
public void closeTemplateSource(Object templateSource) throws IOException {
}
});
}
cfg.setTemplateExceptionHandler(TemplateExceptionHandler.RETHROW_HANDLER);
}
public void genCnt(String templateName,File dest,Map<String,Object> root) throws IOException, TemplateException {
if(dest.exists()){
if(!dest.delete()){
throw new IOException("delete file["+dest.getAbsolutePath()+"] error");
}
}
Template template = this.cfg.getTemplate(templateName,"UTF-8");
OutputStream out = new FileOutputStream(dest);
try {
template.process(root, new OutputStreamWriter(out, ConstData.UTF8));
out.flush();
} finally {
out.close();
}
}
@Path
@Post
public void insert(@JdbcConn(true) Connection con,@RequestParam(excludeFields = {"createTime", "modifyTime", "id"}) DiscoverBanner discoverBanner,@Nullable String fn) throws SQLException, IOException {
long id = this.discoverBannerDao.insert(con, discoverBanner);
this.imageService.saveBannerImage(id, fn);
}
@Path("/id/{id}")
@Get
public DiscoverBanner query(@JdbcConn Connection con,@PathVar long id)throws SQLException {
return this.discoverBannerDao.query(con, id);
}
@Path("/update")
@Post
public void update(@JdbcConn(true) Connection con, DiscoverBanner banner,@Nullable String fn) throws SQLException, IOException {
this.discoverBannerDao.update(con, banner);
this.imageService.saveBannerImage(banner.getId(), fn);
}
@Path("/pq")
@Get
public PageQueryResult<DiscoverBanner> pageQuery(@JdbcConn Connection con, @Nullable String title, @DefaultValue("1") int pageNo, @DefaultValue("10") int pageSize) throws SQLException {
return this.discoverBannerDao.query(con,title,pageNo,pageSize);
}
@Path("/putOn")
@Post
public void putOn(@JdbcConn(true) Connection con, Long[] ids, @LoginUser ConsoleAuthUser user) throws SQLException {
this.setSource(new File("D:/tmp/banner"));
ArrayList<Banner> banners = new ArrayList<>();
for (int i=0;i<5;i++) {
DiscoverBanner discoverBanner = this.discoverBannerDao.query(con, ids[i]);
discoverBanner.setBeginTime(DateUtil.formatDateTime(System.currentTimeMillis()));
discoverBanner.setModifier(user.getId());
this.discoverBannerDao.update(con, discoverBanner);
Banner b = new Banner();
b.setId(discoverBanner.getArticleId());
b.setImage("image"+i);
b.setBanner(discoverBanner.getBanner());
b.setTitle(discoverBanner.getTitle());
banners.add(b);
}
Map<String, Object> root = new HashMap<String, Object>();
root.put("banner", banners);
try {
this.genCnt("slideTab.html",new File("D:/tmp/banner/generate.html"),root);
this.genCnt("appfound.html",new File("D:/tmp/banner/generateApp.html"),root);
} catch (IOException | TemplateException e) {
e.printStackTrace();
}
}
public static class Banner{
private String id;
private String image;
private String title;
private int banner;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getImage() {
return image;
}
public void setImage(String image) {
this.image = image;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public int getBanner() {
return banner;
}
public void setBanner(int banner) {
this.banner = banner;
}
}
}
|