admin
2025-02-25 30d8e227e8d823b6c38c3b9c90ac2df03b63befe
fanli/src/main/java/com/yeshi/fanli/controller/admin/UploadController.java
@@ -1,364 +1,328 @@
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 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;
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.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;
@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<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());
            // 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()));
            return;
         }
         out.print(JsonUtil.loadTrueResult(""));
         return;
      }
      out.print(JsonUtil.loadFalseResult("文件不能为空!"));
   }
   /**
    * 新后台端 上传订单文件
    *
    * @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) {
      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, HttpServletResponse response,
         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/test/" + 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, 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="/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();
      }
   }
}
package com.yeshi.fanli.controller.admin;
import com.yeshi.fanli.entity.accept.AdminAcceptData;
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.order.OrderProcessService;
import com.yeshi.fanli.service.inter.order.OrderService;
import com.yeshi.fanli.service.inter.order.tb.TaoBaoOrderService;
import com.yeshi.fanli.util.*;
import com.yeshi.fanli.util.mq.rabbit.RabbitmqManager;
import com.yeshi.fanli.util.taobao.TaoBaoOrderUtil;
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.TimeUtil;
import org.yeshi.utils.tencentcloud.COSManager;
import javax.annotation.Resource;
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;
@Controller
@RequestMapping("admin/new/api/v1/upload")
public class UploadController {
   @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;
   @Resource
   private RabbitmqManager rabbitmqManager;
   // 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(AdminAcceptData acceptData, @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, FilePathEnum.section.getPath() + 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(AdminAcceptData acceptData,@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, FilePathEnum.apk.getPath() + 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(AdminAcceptData acceptData,@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, FilePathEnum.section.getPath() + 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<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 = RedisKeyEnum.getRedisKey(RedisKeyEnum.addOrderQueue, key);
               // redis做频率限制
               if (Constant.IS_OUTNET) {
                  try {
                     if (!StringUtil.isNullOrEmpty(redisManager.getCommonString(redisKey))) {
                        continue;
                     }
                  } catch (Exception e) {
                  }
               }
               rabbitmqManager.addTaoBaoOrderMsg(key);
               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(AdminAcceptData acceptData,@RequestParam("file") CommonsMultipartFile file, PrintWriter out) {
      if (file != null) {
         try {
            List<TaoBaoOrder> orderList = TaoBaoOrderUtil.parseOrder(file.getInputStream());
            // 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()));
            return;
         }
         out.print(JsonUtil.loadTrueResult(""));
         return;
      }
      out.print(JsonUtil.loadFalseResult("文件不能为空!"));
   }
   /**
    * 新后台端 上传订单文件
    * @param acceptData
    * @param file
    * @param out
    */
   @RequestMapping(value = "uploadOrderFile")
   public void uploadOrderFile(AdminAcceptData acceptData,@RequestParam("file") CommonsMultipartFile file, PrintWriter out) {
      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
    */
   @RequestMapping(value = "uploadPicture")
   public void uploadPicture(AdminAcceptData acceptData,@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=FilePathEnum.section.getPath() + 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(AdminAcceptData acceptData,@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= FilePathEnum.apk.getPath() + 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();
      }
   }
}