Esempio n. 1
0
        /// <summary>
        /// 创建订单
        /// </summary>
        /// <returns></returns>
        public ActionResult <bool> CreateOrder(long userId)
        {
            //创建订单成功
            OrderEntity orderEntity = new OrderEntity();
            Random      random      = new Random();

            orderEntity.OrderId   = random.Next();
            orderEntity.OrderNo   = random.Next();
            orderEntity.UserId    = userId;
            orderEntity.OrderInfo = random.Next() + "详情";
            //bool isCreateOrderSuccress = orderService.CreateOrder(orderId);
            //if (!isCreateOrderSuccress)
            //{
            //    throw new Exception("创建订单失败");
            //}
            //创建订单成功以后开始入消息记录库
            //消息建议设计的冗余一些方便以后好查询
            //千万级以后连表太困难
            //建议冗余的信息有用户信息、订单信息、方便以后按照这个核对信息
            //消息表的建议是按照不同的业务进行分表存储
            Random messageRandom = new Random();
            OrderMessageLogEntity orderMessageLog = new OrderMessageLogEntity();

            orderMessageLog.MessageId     = messageRandom.Next();
            orderMessageLog.MessageInfo   = orderEntity.OrderId + "订单信息";
            orderMessageLog.Status        = (int)MessageStatusEnum.SENDING;
            orderMessageLog.OrderId       = orderEntity.OrderId;
            orderMessageLog.UserId        = orderEntity.UserId;
            orderMessageLog.CreateTime    = DateTime.Now;
            orderMessageLog.UpdateTime    = DateTime.Now;
            orderMessageLog.TryCount      = 0;
            orderMessageLog.NextRetryTime = DateTime.Now.AddMinutes(5);
            //必须保证消息先落库
            bool isCreateOrderMessageLosSuccess = orderBaseDal.Insert(orderMessageLog);

            if (!isCreateOrderMessageLosSuccess)
            {
                throw new Exception("消息入库异常");
            }

            Message message = new Message();

            message.ExchangeName = EXCHANGENAME;
            message.QueueName    = QUEUENAME;
            message.MessageId    = orderMessageLog.MessageId;
            message.RoutingKey   = ROUTINGKEY;
            message.Body         = Encoding.UTF8.GetBytes(orderMessageLog.MessageInfo);


            //落库成功以后开始发送消息到MQ
            messageService.SendMessage(message, orderMessageLog);

            //发送延时消息
            //messageService.SendDelayMessage(message, orderMessageLog);


            return(true);
        }
Esempio n. 2
0
 public void Update(OrderMessageLogEntity pEntity, bool pIsUpdateNullField, IDbTransaction pTran)
 {
     _currentDAO.Update(pEntity, pIsUpdateNullField, pTran);
 }
Esempio n. 3
0
 /// <summary>
 /// 更新
 /// </summary>
 /// <param name="pEntity">实体实例</param>
 /// <param name="pTran">事务实例,可为null,如果为null,则不使用事务来更新</param>
 public void Update(OrderMessageLogEntity pEntity, IDbTransaction pTran)
 {
     Update(pEntity, true, pTran);
 }
Esempio n. 4
0
 /// <summary>
 /// 在事务内创建一个新实例
 /// </summary>
 /// <param name="pEntity">实体实例</param>
 /// <param name="pTran">事务实例,可为null,如果为null,则不使用事务来更新</param>
 public void Create(OrderMessageLogEntity pEntity, IDbTransaction pTran)
 {
     _currentDAO.Create(pEntity, pTran);
 }
Esempio n. 5
0
 /// <summary>
 /// 创建一个新实例
 /// </summary>
 /// <param name="pEntity">实体实例</param>
 public void Create(OrderMessageLogEntity pEntity)
 {
     _currentDAO.Create(pEntity);
 }
Esempio n. 6
0
 /// <summary>
 /// 分页根据实体条件查询实体
 /// </summary>
 /// <param name="pQueryEntity">以实体形式传入的参数</param>
 /// <param name="pOrderBys">排序组合</param>
 /// <returns>符合条件的实体集</returns>
 public PagedQueryResult <OrderMessageLogEntity> PagedQueryByEntity(OrderMessageLogEntity pQueryEntity, OrderBy[] pOrderBys, int pPageSize, int pCurrentPageIndex)
 {
     return(_currentDAO.PagedQueryByEntity(pQueryEntity, pOrderBys, pPageSize, pCurrentPageIndex));
 }
Esempio n. 7
0
 /// <summary>
 /// 根据实体条件查询实体
 /// </summary>
 /// <param name="pQueryEntity">以实体形式传入的参数</param>
 /// <param name="pOrderBys">排序组合</param>
 /// <returns>符合条件的实体集</returns>
 public OrderMessageLogEntity[] QueryByEntity(OrderMessageLogEntity pQueryEntity, OrderBy[] pOrderBys)
 {
     return(_currentDAO.QueryByEntity(pQueryEntity, pOrderBys));
 }
Esempio n. 8
0
 /// <summary>
 /// 删除
 /// </summary>
 /// <param name="pEntity"></param>
 public void Delete(OrderMessageLogEntity pEntity)
 {
     _currentDAO.Delete(pEntity);
 }
Esempio n. 9
0
 public void Update(OrderMessageLogEntity pEntity, bool pIsUpdateNullField)
 {
     _currentDAO.Update(pEntity, pIsUpdateNullField);
 }
Esempio n. 10
0
 /// <summary>
 /// 更新
 /// </summary>
 /// <param name="pEntity">实体实例</param>
 public void Update(OrderMessageLogEntity pEntity)
 {
     Update(pEntity, true);
 }