package com.yeshi.fanli.util; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.Properties; import javax.annotation.Resource; import org.springframework.context.ApplicationListener; import org.springframework.context.event.ContextRefreshedEvent; import org.springframework.core.task.TaskExecutor; import org.springframework.stereotype.Component; import org.yeshi.utils.tencentcloud.COSManager; import org.yeshi.utils.tencentcloud.entity.COSInitParams; import com.yeshi.fanli.entity.bus.user.AlipayTransferResultInfo; import com.yeshi.fanli.entity.bus.user.HongBao; import com.yeshi.fanli.entity.bus.user.HongBaoV2; import com.yeshi.fanli.entity.push.PushQueueRecord; import com.yeshi.fanli.entity.taobao.TaoBaoOrder; import com.yeshi.fanli.entity.taobao.TaoBaoWeiQuanOrder; import com.yeshi.fanli.exception.TaoBaoWeiQuanException; import com.yeshi.fanli.log.LogHelper; import com.yeshi.fanli.service.inter.lable.BoutiqueAutoRuleService; import com.yeshi.fanli.service.inter.lable.LabelService; import com.yeshi.fanli.service.inter.lable.QualityFactoryService; import com.yeshi.fanli.service.inter.order.OrderProcessService; import com.yeshi.fanli.service.inter.push.IOSPushService; import com.yeshi.fanli.service.inter.user.ExtractService; import com.yeshi.fanli.service.inter.user.UserInfoService; /** * 系统初始化 * * @author Administrator * */ @Component public class SpringContext implements ApplicationListener { @Resource private UserInfoService userInfoService; @Resource private BoutiqueAutoRuleService boutiqueAutoRuleService; @Resource private ExtractService extractService; @Resource private IOSPushService iosPushService; @Resource private LabelService labelService; @Resource(name = "taskExecutor") private TaskExecutor executor; @Resource private OrderProcessService orderProcessService; @Resource private QualityFactoryService qualityFactoryService; private static boolean isInited = false; public void onApplicationEvent(ContextRefreshedEvent arg0) { if (arg0.getApplicationContext().getParent() != null) { System.out.println(System.currentTimeMillis()); onApplication(arg0); } } private synchronized void onApplication(ContextRefreshedEvent context) { if (!isInited) { isInited = true; System.out.println("系统初始化完成"); init(context); } } private void init(ContextRefreshedEvent arg0) { initCOS(); if (Constant.IS_TASK) { doExtractResult();// 处理提现结果 doTaoBaoOrders();// 处理淘宝订单 doOrderFanLiNew();// 新版返利 doOrderTiChengFanLi();// 处理订单提成返利 doWeiQuanOrder();// 处理维权订单 doPushIOS();// 处理发送IOS消息 } else if (!Constant.IS_TEST) { initScheduler();// 启动定时任务 // doUpdateGoodsJob(); } } /** * 对象存储初始化 */ public static void initCOS() { // 载入cos参数 Properties ps = org.yeshi.utils.PropertiesUtil .getProperties(SpringContext.class.getClassLoader().getResourceAsStream("cos.properties")); COSInitParams params = new COSInitParams(); params.setAppId(Long.parseLong(ps.getProperty("appId"))); params.setBucketName(ps.getProperty("bucketName")); params.setRegion(ps.getProperty("region")); params.setSecretId(ps.getProperty("secretId")); params.setSecretKey(ps.getProperty("secretKey")); // 初始化 COSManager.getInstance().init(params); } /** * 处理提现结果的队列 */ public void doExtractResult() { executor.execute(new Runnable() { @Override public void run() { while (true) { try { Map map = CMQManager.getInstance().consumeExtractResultMsg(1); if (map != null) { Iterator its = map.keySet().iterator(); while (its.hasNext()) { String key = its.next(); try { extractService.processExtractResult(map.get(key)); CMQManager.getInstance().deleteExtractResultMsg(key); } catch (Exception e) { try { LogHelper.errorDetailInfo(e); } catch (Exception e1) { e1.printStackTrace(); } } } } } catch (Exception e) { } } } }); } /** * 处理淘宝订单 */ public void doTaoBaoOrders() { // 同时开启3个线程处理 for (int i = 0; i < 3; i++) { executor.execute(new Runnable() { @Override public void run() { while (true) { try { // 取16个订单 Map> map = CMQManager.getInstance().consumeTaoBaoOrderMsg(16); if (map != null) { orderProcessService.processOrder(map); } } catch (Exception e) { try { LogHelper.errorDetailInfo(e); } catch (Exception e1) { } } } } }); } } /** * 处理新版淘宝订单返利 */ public void doOrderFanLiNew() { executor.execute(new Runnable() { @Override public void run() { while (true) { try { Map map = CMQManager.getInstance().consumeFanLiMsgNew(16); if (map != null) { Iterator its = map.keySet().iterator(); while (its.hasNext()) { String handler = its.next(); try { orderProcessService.fanli(map.get(handler)); CMQManager.getInstance().deleteFanLiMsgNew(handler); } catch (TaoBaoWeiQuanException e) { try { LogHelper.errorDetailInfo(e); } catch (Exception e1) { e1.printStackTrace(); } } catch (Exception e) { try { LogHelper.errorDetailInfo(e); } catch (Exception e1) { e1.printStackTrace(); } } } } } catch (Exception e) { } } } }); } /** * 处理淘宝提成订单返利 */ public void doOrderTiChengFanLi() { executor.execute(new Runnable() { @Override public void run() { while (true) { try { Map map = CMQManager.getInstance().consumeFanLiTiChengMsg(16); if (map != null) { Iterator its = map.keySet().iterator(); while (its.hasNext()) { String handler = its.next(); try { orderProcessService.fanliInvaiteAndShare(map.get(handler)); CMQManager.getInstance().deleteFanLiTiChengMsg(handler); } catch (TaoBaoWeiQuanException e) { try { LogHelper.errorDetailInfo(e); } catch (Exception e1) { e1.printStackTrace(); } } catch (Exception e) { try { LogHelper.errorDetailInfo(e); } catch (Exception e1) { e1.printStackTrace(); } } } } } catch (Exception e) { } } } }); } /** * 处理淘宝订单维权 */ public void doWeiQuanOrder() { executor.execute(new Runnable() { @Override public void run() { while (true) { try { Map map = CMQManager.getInstance().consumeWeiQuanOrderMsg(16); if (map != null) { Iterator its = map.keySet().iterator(); while (its.hasNext()) { String handler = its.next(); try { orderProcessService.weiQuanOrder(map.get(handler)); CMQManager.getInstance().deleteWeiQuanOrderMsg(handler); } catch (Exception e) { try { LogHelper.errorDetailInfo(e); } catch (Exception e1) { e1.printStackTrace(); } } } } } catch (Exception e) { } } } }); } /** * IOS 推送消息 */ public void doPushIOS() { executor.execute(new Runnable() { @Override public void run() { while (true) { try { Map map = CMQManager.getInstance().consumeIOSPushMsg(10); if (map != null) { Iterator its = map.keySet().iterator(); while (its.hasNext()) { String key = its.next(); try { iosPushService.readyPushIOS(map.get(key)); CMQManager.getInstance().deleteIOSPushMsg(key); } catch (Exception e) { try { LogHelper.errorDetailInfo(e); } catch (Exception e1) { e1.printStackTrace(); } } } } } catch (Exception e) { } } } }); } /** * 创建Scheduler()执行自动爬取 */ private void initScheduler() { boutiqueAutoRuleService.startScheduler(); } public void doUpdateGoodsJob() { // 采用4个线程做更新 for (int i = 0; i < 1; i++) executor.execute(new Runnable() { @Override public void run() { while (true) { try { Map map = CMQManager.getInstance().consumeNeedUpdateTaoBaoGoodsIdMsg(16); if (map != null) { Iterator its = map.keySet().iterator(); while (its.hasNext()) { String key = its.next(); try { Long goodsId = map.get(key); List list = new ArrayList<>(); list.add(goodsId); qualityFactoryService.updateGoodsFactory(list); CMQManager.getInstance().deleteNeedUpdateTaoBaoGoodsIdMsg(key); } catch (Exception e) { try { LogHelper.errorDetailInfo(e); } catch (Exception e1) { e1.printStackTrace(); } } } } } catch (Exception e) { LogHelper.error("更新商品出错:" + e.getMessage()); } } } }); } }