package com.yeshi.fanli.controller.admin; import java.io.IOException; import java.io.InputStream; import java.io.PrintWriter; import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.UUID; import javax.annotation.Resource; import net.sf.json.JSONObject; import org.springframework.core.task.TaskExecutor; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.multipart.commons.CommonsMultipartFile; import org.yeshi.utils.JsonUtil; import org.yeshi.utils.tencentcloud.COSManager; import com.yeshi.fanli.entity.taobao.TaoBaoOrder; import com.yeshi.fanli.log.LogHelper; import com.yeshi.fanli.service.AdminUserService; import com.yeshi.fanli.service.inter.hongbao.HongBaoService; import com.yeshi.fanli.service.inter.order.OrderProcessService; import com.yeshi.fanli.service.inter.order.OrderService; import com.yeshi.fanli.service.inter.taobao.TaoBaoOrderService; import com.yeshi.fanli.util.CMQManager; import com.yeshi.fanli.util.Constant; import com.yeshi.fanli.util.RedisManager; import com.yeshi.fanli.util.StringUtil; import com.yeshi.fanli.util.TimeUtil; import com.yeshi.fanli.util.taobao.TaoBaoOrderUtil; @Controller @RequestMapping("admin/new/api/v1/upload") public class UploadController { @Resource private HongBaoService hongBaoService; @Resource private OrderService orderService; @Resource private OrderProcessService orderProcessService; @Resource private AdminUserService adminUserService; @Resource(name = "taskExecutor") private TaskExecutor executor; @Resource private TaoBaoOrderService taoBaoOrderService; @Resource private RedisManager redisManager; // private static final String PAYSUCCESS = "支付成功"; // private static final String ORDERCLOSE="订单关闭"; // private static final String REFUNDSTETA = "Y"; // private static final String ORDERSUCCESS = "订单成功"; // private static final String ORDERSETTLEMENT = "订单结算"; // private static final String ORDERPAYMENT = "订单付款"; // private static final String ORDERFAILURE = "订单失效"; @RequestMapping(value = "uploadImg", method = RequestMethod.POST) public void uploadImg(@RequestParam("file") CommonsMultipartFile file, PrintWriter out) { try { InputStream inputStream = file.getInputStream(); String contentType = file.getContentType(); String type = contentType.substring(contentType.indexOf("/") + 1); String uploadFilePath = COSManager.getInstance() .uploadFile(inputStream, UUID.randomUUID().toString().replace("-", "") + "." + type).getUrl(); out.print(JsonUtil.loadTrueResult(uploadFilePath)); } catch (IOException e) { e.printStackTrace(); out.print(JsonUtil.loadFalseResult(e.getMessage())); } } /** * * 方法说明: 上传Apk安装包 * * @author mawurui createTime 2018年4月12日 上午11:54:29 * @param file * @param out */ @RequestMapping(value = "uploadInstallApk") public void uploadInstallApk(@RequestParam("file") CommonsMultipartFile file, PrintWriter out) { try { InputStream inputStream = file.getInputStream(); String contentType = file.getContentType(); String type = contentType.substring(contentType.indexOf("/") + 1); String uploadFilePath = COSManager.getInstance() .uploadFile(inputStream, UUID.randomUUID().toString().replace("-", "") + "." + type + ".apk") .getUrl(); out.print(JsonUtil.loadTrueResult(uploadFilePath)); } catch (Exception e) { e.printStackTrace(); out.print(JsonUtil.loadFalseResult(e.getMessage())); } } @RequestMapping(value = "uploadfImg") public void uploadfImg(@RequestParam("file") CommonsMultipartFile file, PrintWriter out) { try { InputStream inputStream = file.getInputStream(); long timeMillis = System.currentTimeMillis(); String date = TimeUtil.getyyyyMMdd(timeMillis); String contentType = file.getContentType(); String type = contentType.substring(contentType.indexOf("/") + 1); String uploadFilePath = COSManager.getInstance() .uploadFile(inputStream, "section/" + date + "/" + timeMillis + "." + type).getUrl(); JSONObject data = new JSONObject(); data.put("original", file.getOriginalFilename()); data.put("name", file.getOriginalFilename()); data.put("url", uploadFilePath); data.put("size", file.getSize() + ""); data.put("type", "." + type); data.put("state", "SUCCESS"); out.print(data); } catch (Exception e) { e.printStackTrace(); out.print(JsonUtil.loadFalseResult(e.getMessage())); } } private void addOrder(List orderList) { try { taoBaoOrderService.addTaoBaoOrderList(orderList); } catch (Exception e) { try { LogHelper.errorDetailInfo(e); } catch (Exception e1) { e1.printStackTrace(); } } try { Map> map = TaoBaoOrderUtil.classifyTaoBaoOrderByOrderId(orderList); if (map != null) { Iterator its = map.keySet().iterator(); while (its.hasNext()) { String key = its.next(); List orders = map.get(key); String redisKey = "addorderqueue-" + key; // redis做频率限制 if (Constant.IS_OUTNET) { try { if (!StringUtil.isNullOrEmpty(redisManager.getCommonString(redisKey))) { continue; } } catch (Exception e) { } } CMQManager.getInstance().addTaoBaoOrderMsg(key, orders); try { // 6小时内不再处理 if (Constant.IS_OUTNET) { redisManager.cacheCommonString(redisKey, "1", 60 * 60 * 6); } } catch (Exception e) { } } } } catch (Exception e) { try { LogHelper.errorDetailInfo(e); } catch (Exception e1) { e1.printStackTrace(); } } } @RequestMapping(value = "uploadOrder", method = RequestMethod.POST) public void uploadOrder(@RequestParam("file") CommonsMultipartFile file, PrintWriter out) { if (file != null) { try { List orderList = TaoBaoOrderUtil.parseOrder(file.getInputStream()); // for(int i=0;i orderList = null; try { orderList = TaoBaoOrderUtil.parseOrder(file.getInputStream()); out.print(JsonUtil.loadTrueResult("上传成功,系统正在处理中...")); } catch (IOException e) { out.print(JsonUtil.loadFalseResult("上传文件失败")); e.printStackTrace(); } final List list = orderList; executor.execute(new Runnable() { @Override public void run() { try { orderProcessService.processOrder(TaoBaoOrderUtil.classifyTaoBaoOrderByOrderId(list)); } catch (Exception e) { e.printStackTrace(); } } }); } /** * 上传图片jsonp * * @param file * @param out */ @RequestMapping(value = "uploadPicture") public void uploadPicture(@RequestParam("file") CommonsMultipartFile file, PrintWriter out) { if (file == null) { out.print(JsonUtil.loadFalseResult("上传文件为空")); return; } try { InputStream inputStream = file.getInputStream(); String contentType = file.getContentType(); String type = contentType.substring(contentType.indexOf("/") + 1); // 上传文件相对位置 String fileUrl="/img/admin/" + UUID.randomUUID().toString().replace("-", "") + "." + type; String uploadPath = COSManager.getInstance().uploadFile(inputStream, fileUrl).getUrl(); JSONObject data = new JSONObject(); data.put("original", file.getOriginalFilename()); data.put("name", file.getOriginalFilename()); data.put("url", uploadPath); data.put("size", file.getSize() + ""); data.put("type", "." + type); data.put("state", "SUCCESS"); out.print(JsonUtil.loadTrueResult(data)); } catch (IOException e) { out.print(JsonUtil.loadFalseResult("上传图片失败")); e.printStackTrace(); } } /** * * 方法说明: 上传Apk安装包 * * @param file * @param out */ @RequestMapping(value = "installPackage") public void installPackage(@RequestParam("file") CommonsMultipartFile file, PrintWriter out) { if (file == null) { out.print(JsonUtil.loadFalseResult("上传文件为空")); return; } try { InputStream inputStream = file.getInputStream(); String contentType = file.getContentType(); String type = contentType.substring(contentType.indexOf("/") + 1); // 上传文件相对位置 String fileUrl="/apk/admin/" + UUID.randomUUID().toString().replace("-", "") + "." + type + ".apk"; String uploadFilePath = COSManager.getInstance().uploadFile(inputStream, fileUrl).getUrl(); JSONObject data = new JSONObject(); data.put("original", file.getOriginalFilename()); data.put("name", file.getOriginalFilename()); data.put("url", uploadFilePath); data.put("size", file.getSize() + ""); data.put("type", "." + type); data.put("state", "SUCCESS"); out.print(JsonUtil.loadTrueResult(data)); } catch (Exception e) { out.print(JsonUtil.loadFalseResult("上传失败")); e.printStackTrace(); } } }