admin
2018-12-05 21f49216736c547d99ec1dd46a24c6f43f852fc5
fanli/src/main/java/com/yeshi/fanli/controller/admin/UploadController.java
@@ -3,15 +3,16 @@
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 javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
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;
@@ -22,12 +23,22 @@
import com.yeshi.fanli.entity.common.AdminUser;
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.annotation.RequestNoLogin;
import com.yeshi.fanli.util.taobao.TaoBaoOrderUtil;
import freemarker.core.ArithmeticEngine.ConservativeEngine;
import net.sf.json.JSONObject;
@Controller
@RequestMapping("admin/new/api/v1/upload")
@@ -41,10 +52,18 @@
   @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="订单关闭";
@@ -61,8 +80,8 @@
         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();
         String uploadFilePath = COSManager.getInstance()
               .uploadFile(inputStream, UUID.randomUUID().toString().replace("-", "") + "." + type).getUrl();
         out.print(JsonUtil.loadTrueResult(uploadFilePath));
      } catch (IOException e) {
         e.printStackTrace();
@@ -84,8 +103,9 @@
         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();
         String uploadFilePath = COSManager.getInstance()
               .uploadFile(inputStream, UUID.randomUUID().toString().replace("-", "") + "." + type + ".apk")
               .getUrl();
         out.print(JsonUtil.loadTrueResult(uploadFilePath));
      } catch (Exception e) {
         e.printStackTrace();
@@ -101,8 +121,8 @@
         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();
         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());
@@ -118,13 +138,73 @@
      }
   }
   private void addOrder(List<TaoBaoOrder> orderList) {
      try {
         taoBaoOrderService.addTaoBaoOrderList(orderList);
      } catch (Exception e) {
         try {
            LogHelper.errorDetailInfo(e);
         } catch (Exception e1) {
            e1.printStackTrace();
         }
      }
      try {
         Map<String, List<TaoBaoOrder>> map = TaoBaoOrderUtil.classifyTaoBaoOrderByOrderId(orderList);
         if (map != null) {
            Iterator<String> its = map.keySet().iterator();
            while (its.hasNext()) {
               String key = its.next();
               List<TaoBaoOrder> 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<TaoBaoOrder> orderList = TaoBaoOrderUtil.parseOrder(file.getInputStream());
            orderProcessService.processOrder(TaoBaoOrderUtil.classifyTaoBaoOrderByOrderId(orderList));
            // for(int i=0;i<orderList.size();i++)
            // {
            // if(!orderList.get(i).getOrderId().equalsIgnoreCase("229978886132510070")&&!orderList.get(i).getOrderId().equalsIgnoreCase("246314979024510070"))
            // {
            // orderList.remove(i--);
            // continue;
            // }
            //
            // }
            // orderProcessService.processOrder(TaoBaoOrderUtil.classifyTaoBaoOrderByOrderId(orderList));
            addOrder(orderList);
         } catch (IOException e) {
            e.printStackTrace();
            out.print(JsonUtil.loadFalseResult(e.getMessage()));
@@ -137,44 +217,161 @@
   }
   /**
    * 新后台端 上传订单文件
    * @param file  excel文件
    * @param uid  当前用户id
    *
    * @param file
    *            excel文件
    * @param uid
    *            当前用户id
    * @param request
    * @param response
    * @param out
    */
   @RequestNoLogin()
   @RequestMapping(value = "uploadOrderFile")
   public void uploadOrderFile(@RequestParam("file") CommonsMultipartFile file, Long uid,
          HttpServletRequest request, HttpServletResponse response, PrintWriter out) {
   public void uploadOrderFile(@RequestParam("file") CommonsMultipartFile file, Long uid, HttpServletRequest request,
         HttpServletResponse response, PrintWriter out) {
      response.setHeader("Access-Control-Allow-Origin", "*");
      response.setHeader("Access-Control-Allow-Methods", "*");
      AdminUser admin = adminUserService.selectByPrimaryKey(uid);
      if (admin == null) {
         out.print(JsonUtil.loadFalseResult("用户验证未通过"));
         return;
      }
      if (file == null) {
         out.print(JsonUtil.loadFalseResult("上传文件不能为空"));
         return;
      }
      List<TaoBaoOrder> orderList = null;
      try {
         orderList = TaoBaoOrderUtil.parseOrder(file.getInputStream());
         out.print(JsonUtil.loadTrueResult("上传成功,系统正在处理中..."));
      } catch (IOException e) {
         out.print(JsonUtil.loadFalseResult("上传文件失败"));
         e.printStackTrace();
      }
      final List<TaoBaoOrder> 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
    */
   @RequestNoLogin()
   @RequestMapping(value = "uploadPicture")
   public void uploadPicture(@RequestParam("file") CommonsMultipartFile file, Long uid, HttpServletResponse response,
         PrintWriter out) {
      response.setHeader("Access-Control-Allow-Origin", "*");
      response.setHeader("Access-Control-Allow-Methods", "*");
      AdminUser admin = adminUserService.selectByPrimaryKey(uid);
      if (admin == null) {
         out.print(JsonUtil.loadFalseResult("当前账户验证失败"));
         return;
      }
      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));
         out.print(JsonUtil.loadTrueResult(uploadPath));
      } catch (IOException e) {
         out.print(JsonUtil.loadFalseResult("上传图片失败"));
         e.printStackTrace();
      }
   }
   /**
    *
    * 方法说明: 上传Apk安装包
    *
    * @param file
    * @param out
    */
   @RequestMapping(value = "installPackage")
   public void installPackage(@RequestParam("file") CommonsMultipartFile file, Long uid,
         HttpServletResponse response, PrintWriter out) {
      
      response.setHeader("Access-Control-Allow-Origin", "*");
      response.setHeader("Access-Control-Allow-Methods", "*");
      
      AdminUser admin = adminUserService.selectByPrimaryKey(uid);
      if (admin == null) {
         out.print(JsonUtil.loadFalseResult("用户验证未通过"));
         out.print(JsonUtil.loadFalseResult("当前账户验证失败"));
         return;
      }
      
      if (file == null) {
         out.print(JsonUtil.loadFalseResult("上传文件不能为空"));
         out.print(JsonUtil.loadFalseResult("上传文件为空"));
         return;
      }
      
      try {
         List<TaoBaoOrder> orderList = TaoBaoOrderUtil.parseOrder(file.getInputStream());
         InputStream inputStream = file.getInputStream();
         String contentType = file.getContentType();
         String type = contentType.substring(contentType.indexOf("/") + 1);
         
         orderProcessService.processOrder(TaoBaoOrderUtil.classifyTaoBaoOrderByOrderId(orderList));
         // 上传文件相对位置
         String fileUrl="/apk/admin/" + UUID.randomUUID().toString().replace("-", "") + "." + type + ".apk";
         
         out.print(JsonUtil.loadTrueResult("上传成功"));
      } catch (IOException e) {
         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();
         out.print(JsonUtil.loadFalseResult("上传异常"));
      }
   }
}