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 com.yeshi.fanli.entity.bus.user.AlipayTransferResultInfo;
|
import com.yeshi.fanli.entity.bus.user.HongBao;
|
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;
|
import org.yeshi.utils.tencentcloud.COSManager;
|
import org.yeshi.utils.tencentcloud.entity.COSInitParams;
|
|
/**
|
* 系统初始化
|
*
|
* @author Administrator
|
*
|
*/
|
@Component
|
public class SpringContext implements ApplicationListener<ContextRefreshedEvent> {
|
|
@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();// 处理淘宝订单
|
doOrderFanLi();// 处理订单返利
|
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<String, AlipayTransferResultInfo> map = CMQManager.getInstance().consumeExtractResultMsg(1);
|
|
if (map != null) {
|
Iterator<String> 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<String, List<TaoBaoOrder>> map = CMQManager.getInstance().consumeTaoBaoOrderMsg(16);
|
if (map != null) {
|
orderProcessService.processOrder(map);
|
}
|
} catch (Exception e) {
|
|
}
|
}
|
}
|
});
|
}
|
}
|
|
/**
|
* 处理淘宝订单返利
|
*/
|
public void doOrderFanLi() {
|
executor.execute(new Runnable() {
|
@Override
|
public void run() {
|
while (true) {
|
try {
|
Map<String, HongBao> map = CMQManager.getInstance().consumeFanLiMsg(16);
|
if (map != null) {
|
Iterator<String> its = map.keySet().iterator();
|
while (its.hasNext()) {
|
String handler = its.next();
|
try {
|
orderProcessService.fanli(map.get(handler));
|
CMQManager.getInstance().deleteFanLiMsg(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<String, Long> map = CMQManager.getInstance().consumeFanLiTiChengMsg(16);
|
if (map != null) {
|
Iterator<String> 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<String, TaoBaoWeiQuanOrder> map = CMQManager.getInstance().consumeWeiQuanOrderMsg(16);
|
if (map != null) {
|
Iterator<String> 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<String, PushQueueRecord> map = CMQManager.getInstance().consumeIOSPushMsg(10);
|
|
if (map != null) {
|
|
Iterator<String> 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<String, Long> map = CMQManager.getInstance().consumeNeedUpdateTaoBaoGoodsIdMsg(16);
|
|
if (map != null) {
|
|
Iterator<String> its = map.keySet().iterator();
|
while (its.hasNext()) {
|
|
String key = its.next();
|
try {
|
Long goodsId = map.get(key);
|
List<Long> 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());
|
|
}
|
}
|
}
|
});
|
|
}
|
}
|