package com.kingschan.blog.services.impl; import java.io.File; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import javax.servlet.http.HttpServletRequest; import net.sf.json.JSONArray; import net.sf.json.JSONObject; import org.apache.log4j.Logger; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.stereotype.Service; import com.kingschan.blog.common.qiniu.QiNiuManagement; import com.kingschan.blog.dao.BlogResDao; import com.kingschan.blog.dao.Pagination; import com.kingschan.blog.po.BlogRes; import com.kingschan.blog.po.WebSite; import com.kingschan.blog.services.BlogResService; import com.kingschan.blog.util.BlogUtil; import com.kingschan.blog.util.TimeStampUtil; import com.qiniu.common.QiniuException; import com.qiniu.http.Response; @Service public class BlogResServiceImpl implements BlogResService { @Autowired private QiNiuManagement qiniu; @Qualifier("BlogResDaoImpl") @Autowired private BlogResDao resdao; private Logger log =Logger.getLogger(BlogResServiceImpl.class); @Override public String uploadFile(String filepath, String filename, String filetype, HttpServletRequest request) throws Exception { File f = new File(filepath); BlogUtil blogutil = new BlogUtil(request); JSONObject json=qiniu.upload(filepath,null); BlogRes br = new BlogRes(filename,filetype,json.getString("key"), json.getString("hash"), blogutil.getCurrentAdminWebSite().getId(), TimeStampUtil.getCurrentDate(), blogutil.getCurrentUser().getId(),f.length()); resdao.saveRes(br); f.delete();//删除文件 return json.getString("key"); } @Override public String getResList(int actionCode, int pageindex,HttpServletRequest request) throws Exception { BlogUtil blogutil = new BlogUtil(request); WebSite ws =blogutil.getCurrentAdminWebSite(); Pagination page =null; Map<String, Object> map = new HashMap<String, Object>(); map.put("websiteid", ws.getId()); switch (actionCode) { case 7://image page =resdao.getResList( "image", pageindex==0?1:pageindex/20, 20,map); break; case 6://file page =resdao.getResList( "file", pageindex==0?1:pageindex/20, 20,map); break; } @SuppressWarnings("unchecked") List<BlogRes> lis = (List<BlogRes>) page.getData(); JSONArray jsons = new JSONArray(); for (BlogRes res : lis) { JSONObject json = new JSONObject(); json.put("url", res.getResKey()); json.put("state", "SUCCESS"); jsons.add(json); } JSONObject json= new JSONObject(); json.put("state", "SUCCESS"); json.put("total", page.getTotal()); json.put("start", pageindex); json.put("list", jsons); return json.toString(); } @Override public Pagination getResList(int pageindex, int limit,Map<String, Object> map) throws Exception { return resdao.getResList( pageindex, limit, map); } @Override public int delBlogRes(String[] keys, String website) throws Exception { List<String> lis=resdao.auth(keys, website); List<String> res=new ArrayList<String>(); for (String key : lis) { try { qiniu.delRes(key); res.add(key); } catch (QiniuException e) { Response re=e.response; if (re.error.equals("no such file or directory")){ res.add(key); } log.error(re.bodyString()); } } if (res.size()>0) { String[] ids =new String[]{}; ids=res.toArray(ids); return resdao.delBlogRes(ids, website); } return 0; } @Override public void rename(String id, String name, String websiteid) throws Exception { resdao.rename(id, name, websiteid); } }