Commit 15696384 by zhangjw

1:完善推送订单逻辑

parent 46255ed1
...@@ -30,7 +30,7 @@ public class Queue { ...@@ -30,7 +30,7 @@ public class Queue {
* *
* @param orderInteractionModel * @param orderInteractionModel
*/ */
public void pushOrder(Stroke stroke) { public void pushOrder(String stroke) {
rabbitTemplate.convertAndSend(orderQueueName, stroke); rabbitTemplate.convertAndSend(orderQueueName, stroke);
} }
......
package com.jumeirah.common.service.impl; package com.jumeirah.common.service.impl;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.metadata.OrderItem; import com.baomidou.mybatisplus.core.metadata.OrderItem;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
...@@ -15,6 +16,7 @@ import com.jumeirah.common.vo.McStrokePaymentQueryVo; ...@@ -15,6 +16,7 @@ import com.jumeirah.common.vo.McStrokePaymentQueryVo;
import com.jumeirah.common.vo.McStrokeQueryVo; import com.jumeirah.common.vo.McStrokeQueryVo;
import com.jumeirah.common.vo.StrokeDetailVo; import com.jumeirah.common.vo.StrokeDetailVo;
import com.jumeirah.common.vo.StrokeQueryVo; import com.jumeirah.common.vo.StrokeQueryVo;
import com.rabbitmq.tools.json.JSONUtil;
import io.geekidea.springbootplus.framework.common.service.impl.BaseServiceImpl; import io.geekidea.springbootplus.framework.common.service.impl.BaseServiceImpl;
import io.geekidea.springbootplus.framework.core.pagination.PageInfo; import io.geekidea.springbootplus.framework.core.pagination.PageInfo;
import io.geekidea.springbootplus.framework.core.pagination.Paging; import io.geekidea.springbootplus.framework.core.pagination.Paging;
...@@ -46,7 +48,7 @@ public class StrokeServiceImpl extends BaseServiceImpl<StrokeMapper, Stroke> imp ...@@ -46,7 +48,7 @@ public class StrokeServiceImpl extends BaseServiceImpl<StrokeMapper, Stroke> imp
public boolean saveStroke(Stroke stroke) throws Exception { public boolean saveStroke(Stroke stroke) throws Exception {
final boolean save = super.save(stroke); final boolean save = super.save(stroke);
if (save) {//推送订单到客服系统 if (save) {//推送订单到客服系统
queue.pushOrder(stroke); queue.pushOrder(JSON.toJSONString(stroke));
} }
return save; return save;
} }
......
package com.ym.im.entity.model;
import lombok.Data;
import java.io.Serializable;
/**
* @author: JJww
* @Date:2019-07-19
*/
@Data
public class OrderModel implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 订单类型
*/
private String type;
/**
* 订单ID
*/
private String orderId;
/**
* 订单状态
*/
private String orderStatus;
/**
* 用户Id
*/
private String userId;
private Long merchantId;
}
package com.ym.im.mq; package com.ym.im.mq;
import com.ym.im.entity.ChatRecord; import com.ym.im.entity.*;
import com.ym.im.entity.MsgBody;
import com.ym.im.entity.StaffSocketInfo;
import com.ym.im.entity.UserSocketInfo;
import com.ym.im.entity.base.NettyConstant; import com.ym.im.entity.base.NettyConstant;
import com.ym.im.entity.enums.RoleEnum; import com.ym.im.entity.enums.RoleEnum;
import com.ym.im.entity.model.IdModel; import com.ym.im.entity.model.IdModel;
import com.ym.im.entity.model.OrderModel;
import com.ym.im.handler.ChannelGroupHandler; import com.ym.im.handler.ChannelGroupHandler;
import com.ym.im.service.StaffService; import com.ym.im.service.StaffService;
import com.ym.im.util.JsonUtils; import com.ym.im.util.JsonUtils;
...@@ -70,7 +66,7 @@ public class Receiver { ...@@ -70,7 +66,7 @@ public class Receiver {
if (channelGroup.getMerchantStaff(staffId) == null) { if (channelGroup.getMerchantStaff(staffId) == null) {
final Set<Long> userIds = staffSocketInfo.getUserIds(); final Set<Long> userIds = staffSocketInfo.getUserIds();
log.info("客服离线队列: " + "ID: " + "UserIds:" + userIds); log.info("客服离线队列: " + "ID: " + "UserIds:" + userIds);
userIds.forEach((Long userId) -> { userIds.forEach(userId -> {
//用户在线才重新分配和转发 //用户在线才重新分配和转发
if (channelGroup.USER_GROUP.get(userId) != null) { if (channelGroup.USER_GROUP.get(userId) != null) {
final StaffSocketInfo idleStaff = staffService.getIdleStaff(staffSocketInfo.getMerchantId(), userId); final StaffSocketInfo idleStaff = staffService.getIdleStaff(staffSocketInfo.getMerchantId(), userId);
...@@ -107,16 +103,15 @@ public class Receiver { ...@@ -107,16 +103,15 @@ public class Receiver {
*/ */
@SneakyThrows @SneakyThrows
@RabbitListener(queues = ORDER_QUEUE_NAME) @RabbitListener(queues = ORDER_QUEUE_NAME)
public void orderHandler(OrderModel orderModel) { public void orderHandler(String json) {
final Stroke stroke = JsonUtils.json2Obj(json, Stroke.class);
log.info("Constants.ORDER_QUEUE_NAME: " + JsonUtils.obj2Json(orderModel)); final Long userId = stroke.getUserId();
final UserSocketInfo userSocketInfo = channelGroup.USER_GROUP.get(userId);
final UserSocketInfo userSocketInfo = channelGroup.USER_GROUP.get(Long.valueOf(orderModel.getUserId()));
if (userSocketInfo == null) { if (userSocketInfo == null) {
return; return;
} }
StaffSocketInfo staffSocketInfo = channelGroup.getMerchantStaff(userSocketInfo.getStaffId(orderModel.getMerchantId())); StaffSocketInfo staffSocketInfo = channelGroup.getMerchantStaff(userSocketInfo.getStaffId(stroke.getMcId()));
final MsgBody<OrderModel> orderInfo = new MsgBody<OrderModel>().setCode(MsgBody.ORDER).setData(orderModel); final MsgBody<Stroke> orderInfo = new MsgBody<Stroke>().setCode(MsgBody.ORDER).setData(stroke);
/** /**
* 绑定客服在线,发送订单信息 * 绑定客服在线,发送订单信息
*/ */
...@@ -128,7 +123,7 @@ public class Receiver { ...@@ -128,7 +123,7 @@ public class Receiver {
/** /**
* 绑定客服不在线,给历史客服发送订单信息 * 绑定客服不在线,给历史客服发送订单信息
*/ */
final Long staffId = (Long) redisTemplate.opsForHash().get(NettyConstant.IM_USERS, orderModel.getUserId()); final Long staffId = (Long) redisTemplate.opsForHash().get(NettyConstant.IM_USERS, userId);
if (staffId != null) { if (staffId != null) {
log.info("客服订单: " + "尝试给历史客服(" + staffId + ")发送订单:" + orderInfo.toString()); log.info("客服订单: " + "尝试给历史客服(" + staffId + ")发送订单:" + orderInfo.toString());
staffSocketInfo = channelGroup.getMerchantStaff(staffId); staffSocketInfo = channelGroup.getMerchantStaff(staffId);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment