package com.yeshi.fanli.util;
|
|
import java.util.ArrayList;
|
import java.util.HashMap;
|
import java.util.List;
|
import java.util.Map;
|
|
import org.yeshi.utils.CMQUtil;
|
|
import com.alipay.api.response.AlipayFundTransToaccountTransferResponse;
|
import com.google.gson.Gson;
|
import com.google.gson.GsonBuilder;
|
import com.qcloud.cmq.Message;
|
import com.yeshi.fanli.dto.HongBao;
|
import com.yeshi.fanli.entity.bus.user.AlipayTransferResultInfo;
|
import com.yeshi.fanli.entity.bus.user.Extract;
|
import com.yeshi.fanli.entity.bus.user.HongBaoV2;
|
import com.yeshi.fanli.entity.common.AdminUser;
|
import com.yeshi.fanli.entity.push.PushQueueRecord;
|
import com.yeshi.fanli.entity.taobao.TaoBaoWeiQuanOrder;
|
|
public class CMQManager {
|
private static String secretId = "AKIDTlpgJhLjOozvd6QI2XnpfGbgV4NQJk25";
|
private static String secretKey = "xhCSUHo55oHUQ6XicFcmfIgspX0EEzWo";
|
private static CMQManager cmqManager;
|
private static CMQUtil cmqUtil;
|
// TODO 订单处理队列
|
public static String QUEUENAME_ORDER = "fanli-orders";
|
|
// 刚刚产生的订单处理队列
|
public static String QUEUENAME_NEW_ORDER = "fanli-new-orders";
|
|
// 提现结果处理队列
|
public static String EXTRACT_RESULT = "extract-result";
|
// TODO IOS推送队列
|
public static String PUSH_IOS = "push-ios";
|
|
// TODO 返利队列
|
public static String FANLI_ORDER = "fanli-order";
|
|
// TODO 返利队列
|
public static String FANLI_ORDER_NEW = "fanli-order-new";
|
|
// TODO 提成订单
|
public static String FANLI_TICHENG_ORDER = "fanli-ticheng-order";
|
// TODO 维权订单
|
public static String ORDER_WEIQUAN = "weiquan-order";
|
|
public static String GOODS_UPDATE = "goods_update_queue";
|
|
static {
|
|
if (Constant.IS_TEST) {
|
QUEUENAME_ORDER = "test-" + QUEUENAME_ORDER;
|
QUEUENAME_NEW_ORDER = "test-" + QUEUENAME_NEW_ORDER;
|
EXTRACT_RESULT = "test-" + EXTRACT_RESULT;
|
PUSH_IOS = "test-" + PUSH_IOS;
|
FANLI_ORDER = "test-" + FANLI_ORDER;
|
FANLI_ORDER_NEW = "test-" + FANLI_ORDER_NEW;
|
FANLI_TICHENG_ORDER = "test-" + FANLI_TICHENG_ORDER;
|
ORDER_WEIQUAN = "test-" + ORDER_WEIQUAN;
|
}
|
|
QUEUENAME_ORDER += "-" + Constant.systemCommonConfig.getProjectName();
|
QUEUENAME_NEW_ORDER += "-" + Constant.systemCommonConfig.getProjectName();
|
EXTRACT_RESULT += "-" + Constant.systemCommonConfig.getProjectName();
|
PUSH_IOS += "-" + Constant.systemCommonConfig.getProjectName();
|
FANLI_ORDER += "-" + Constant.systemCommonConfig.getProjectName();
|
FANLI_ORDER_NEW += "-" + Constant.systemCommonConfig.getProjectName();
|
FANLI_TICHENG_ORDER += "-" + Constant.systemCommonConfig.getProjectName();
|
ORDER_WEIQUAN += "-" + Constant.systemCommonConfig.getProjectName();
|
|
cmqUtil = CMQUtil.getInstance(secretId, secretKey);
|
// 最大消息为1M
|
cmqUtil.createQueue(QUEUENAME_ORDER, 1024 * 1024);
|
cmqUtil.createQueue(QUEUENAME_NEW_ORDER, 1024 * 1024);
|
cmqUtil.createQueue(EXTRACT_RESULT);
|
cmqUtil.createQueue(PUSH_IOS);
|
cmqUtil.createQueue(FANLI_ORDER);
|
cmqUtil.createQueue(FANLI_ORDER_NEW);
|
cmqUtil.createQueue(FANLI_TICHENG_ORDER);
|
cmqUtil.createQueue(ORDER_WEIQUAN);
|
cmqUtil.createQueue(GOODS_UPDATE);
|
}
|
|
public static CMQManager getInstance() {
|
if (cmqManager == null)
|
cmqManager = new CMQManager();
|
return cmqManager;
|
}
|
|
/**
|
* 发送订单消息
|
*
|
* @param orderMap
|
*/
|
public void addTaoBaoOrderMsg(String orderId) {
|
if (!StringUtil.isNullOrEmpty(orderId)) {
|
cmqUtil.sendMsg(QUEUENAME_ORDER, orderId);
|
}
|
}
|
|
/**
|
* 消费淘宝订单消息
|
*
|
* @param count
|
*/
|
public List<String> consumeTaoBaoOrderMsg(int count) {
|
List<String> resultList = new ArrayList<>();
|
List<Message> list = cmqUtil.recieveMsg(count, QUEUENAME_ORDER);
|
|
if (list != null)
|
for (Message msg : list) {
|
String result = msg.msgBody;
|
resultList.add(result);
|
// 删除消息
|
cmqUtil.deleteMsg(QUEUENAME_ORDER, msg.receiptHandle);
|
}
|
return resultList;
|
}
|
|
/**
|
* 删除淘宝订单消息
|
*
|
* @param receiptHandle
|
*/
|
public void deleteTaoBaoOrderMsg(String receiptHandle) {
|
cmqUtil.deleteMsg(QUEUENAME_ORDER, receiptHandle);
|
}
|
|
/**
|
* 发送订单消息(刚刚产生的订单)
|
*
|
* @param orderMap
|
*/
|
public void addTaoBaoNewOrderMsg(String orderId) {
|
if (!StringUtil.isNullOrEmpty(orderId)) {
|
cmqUtil.sendMsg(QUEUENAME_NEW_ORDER, orderId);
|
}
|
}
|
|
/**
|
* 消费淘宝订单消息(刚刚产生的订单)
|
*
|
* @param count
|
*/
|
public List<String> consumeTaoBaoNewOrderMsg(int count) {
|
List<String> resultList = new ArrayList<>();
|
List<Message> list = cmqUtil.recieveMsg(count, QUEUENAME_NEW_ORDER);
|
|
if (list != null)
|
for (Message msg : list) {
|
String result = msg.msgBody;
|
resultList.add(result);
|
// 删除消息
|
cmqUtil.deleteMsg(QUEUENAME_NEW_ORDER, msg.receiptHandle);
|
}
|
return resultList;
|
}
|
|
/**
|
* 删除淘宝订单消息(刚刚产生的订单)
|
*
|
* @param receiptHandle
|
*/
|
public void deleteTaoBaoNewOrderMsg(String receiptHandle) {
|
cmqUtil.deleteMsg(QUEUENAME_NEW_ORDER, receiptHandle);
|
}
|
|
/**
|
* 添加提现结果消息
|
*
|
* @param extract
|
* @param response
|
*/
|
public void addExtractResultMsg(Extract extract, AlipayFundTransToaccountTransferResponse response,
|
AdminUser adminUser) {
|
String content = new Gson().toJson(new AlipayTransferResultInfo(extract, response, adminUser));
|
cmqUtil.sendMsg(EXTRACT_RESULT, content);
|
}
|
|
/**
|
* 消费提现结果消息
|
*
|
* @param count
|
* @return
|
*/
|
public Map<String, AlipayTransferResultInfo> consumeExtractResultMsg(int count) {
|
List<Message> list = cmqUtil.recieveMsg(count, EXTRACT_RESULT);
|
Map<String, AlipayTransferResultInfo> map = new HashMap<>();
|
|
if (list != null)
|
for (Message msg : list) {
|
String result = msg.msgBody;
|
if (!StringUtil.isNullOrEmpty(result)) {
|
AlipayTransferResultInfo alipayTransferResultInfo = new Gson().fromJson(result,
|
AlipayTransferResultInfo.class);
|
map.put(msg.receiptHandle, alipayTransferResultInfo);
|
}
|
}
|
return map;
|
}
|
|
/**
|
* 删除提现结果消息
|
*
|
* @param receiptHandle
|
*/
|
public void deleteExtractResultMsg(String receiptHandle) {
|
cmqUtil.deleteMsg(EXTRACT_RESULT, receiptHandle);
|
}
|
|
// 订单返利
|
public void addFanLiMsg(HongBao hongBao) {
|
String content = new Gson().toJson(hongBao);
|
cmqUtil.sendMsg(FANLI_ORDER, content);
|
}
|
|
// 新版订单返利
|
public void addFanLiMsgNew(HongBaoV2 hongBao) {
|
String content = new Gson().toJson(hongBao);
|
cmqUtil.sendMsg(FANLI_ORDER_NEW, content);
|
}
|
|
public Map<String, HongBao> consumeFanLiMsg(int count) {
|
List<Message> list = cmqUtil.recieveMsg(count, FANLI_ORDER);
|
Map<String, HongBao> map = new HashMap<>();
|
if (list != null)
|
for (Message msg : list) {
|
String result = msg.msgBody;
|
if (!StringUtil.isNullOrEmpty(result)) {
|
HongBao hongBao = new Gson().fromJson(result, HongBao.class);
|
map.put(msg.receiptHandle, hongBao);
|
}
|
}
|
return map;
|
}
|
|
public Map<String, HongBaoV2> consumeFanLiMsgNew(int count) {
|
List<Message> list = cmqUtil.recieveMsg(count, FANLI_ORDER_NEW);
|
Map<String, HongBaoV2> map = new HashMap<>();
|
if (list != null)
|
for (Message msg : list) {
|
String result = msg.msgBody;
|
if (!StringUtil.isNullOrEmpty(result)) {
|
HongBaoV2 hongBao = new Gson().fromJson(result, HongBaoV2.class);
|
map.put(msg.receiptHandle, hongBao);
|
}
|
}
|
return map;
|
}
|
|
public void deleteFanLiMsg(String receiptHandle) {
|
cmqUtil.deleteMsg(FANLI_ORDER, receiptHandle);
|
}
|
|
public void deleteFanLiMsgNew(String receiptHandle) {
|
cmqUtil.deleteMsg(FANLI_ORDER_NEW, receiptHandle);
|
}
|
|
// 提成返利
|
public void addFanLiTiChengMsg(Long uid) {
|
cmqUtil.sendMsg(FANLI_TICHENG_ORDER, uid + "");
|
}
|
|
public Map<String, Long> consumeFanLiTiChengMsg(int count) {
|
List<Message> list = cmqUtil.recieveMsg(count, FANLI_TICHENG_ORDER);
|
Map<String, Long> map = new HashMap<>();
|
if (list != null)
|
for (Message msg : list) {
|
String result = msg.msgBody;
|
if (!StringUtil.isNullOrEmpty(result)) {
|
map.put(msg.receiptHandle, Long.parseLong(result));
|
}
|
}
|
return map;
|
}
|
|
public void deleteFanLiTiChengMsg(String receiptHandle) {
|
cmqUtil.deleteMsg(FANLI_TICHENG_ORDER, receiptHandle);
|
}
|
|
// 维权订单
|
public void addWeiQuanOrderMsg(TaoBaoWeiQuanOrder order) {
|
cmqUtil.sendMsg(ORDER_WEIQUAN, new Gson().toJson(order));
|
}
|
|
public Map<String, TaoBaoWeiQuanOrder> consumeWeiQuanOrderMsg(int count) {
|
List<Message> list = cmqUtil.recieveMsg(count, ORDER_WEIQUAN);
|
Map<String, TaoBaoWeiQuanOrder> map = new HashMap<>();
|
Gson gson = new Gson();
|
if (list != null)
|
for (Message msg : list) {
|
String result = msg.msgBody;
|
if (!StringUtil.isNullOrEmpty(result)) {
|
map.put(msg.receiptHandle, gson.fromJson(result, TaoBaoWeiQuanOrder.class));
|
}
|
}
|
return map;
|
}
|
|
public void deleteWeiQuanOrderMsg(String receiptHandle) {
|
cmqUtil.deleteMsg(ORDER_WEIQUAN, receiptHandle);
|
}
|
|
/**
|
* 添加IOS推送消息
|
*
|
* @param count
|
*/
|
public void addIOSPushMsg(PushQueueRecord pushQueueRecord) {
|
|
String content = new GsonBuilder().create().toJson(pushQueueRecord);
|
cmqUtil.sendMsg(PUSH_IOS, content);
|
}
|
|
/**
|
* IOS推送
|
*
|
* @param count
|
*/
|
public Map<String, PushQueueRecord> consumeIOSPushMsg(int count) {
|
List<Message> list = cmqUtil.recieveMsg(count, PUSH_IOS);
|
if (list == null) {
|
return null;
|
}
|
|
Map<String, PushQueueRecord> map = new HashMap<>();
|
for (Message msg : list) {
|
|
String result = msg.msgBody;
|
if (!StringUtil.isNullOrEmpty(result)) {
|
PushQueueRecord pushQueueRecord = new Gson().fromJson(result, PushQueueRecord.class);
|
map.put(msg.receiptHandle, pushQueueRecord);
|
}
|
|
}
|
|
return map;
|
}
|
|
/**
|
* 删除IOSPush消息
|
*
|
* @param receiptHandle
|
*/
|
public void deleteIOSPushMsg(String receiptHandle) {
|
cmqUtil.deleteMsg(PUSH_IOS, receiptHandle);
|
}
|
|
/**
|
* 添加需要更新的商品ID
|
*
|
* @param count
|
*/
|
public void addNeedUpdateTaoBaoGoodsId(Long goodsId) {
|
cmqUtil.sendMsg(GOODS_UPDATE, goodsId + "");
|
}
|
|
/**
|
* 消费消息需要更新的商品消息
|
*
|
* @param count
|
*/
|
public Map<String, Long> consumeNeedUpdateTaoBaoGoodsIdMsg(int count) {
|
List<Message> list = cmqUtil.recieveMsg(count, GOODS_UPDATE);
|
if (list == null) {
|
return null;
|
}
|
|
Map<String, Long> map = new HashMap<>();
|
for (Message msg : list) {
|
String result = msg.msgBody;
|
if (!StringUtil.isNullOrEmpty(result)) {
|
map.put(msg.receiptHandle, Long.parseLong(result));
|
}
|
|
}
|
|
return map;
|
}
|
|
/**
|
* 删除IOSPush消息
|
*
|
* @param receiptHandle
|
*/
|
public void deleteNeedUpdateTaoBaoGoodsIdMsg(String receiptHandle) {
|
cmqUtil.deleteMsg(GOODS_UPDATE, receiptHandle);
|
}
|
|
}
|