Esempio n. 1
0
        /// <summary>
        /// 生成Jounal实体
        /// </summary>
        /// <param name="ucopDto"></param>
        /// <param name="commodityOrder"></param>
        /// <param name="oldState"></param>
        /// <param name="journalName"></param>
        /// <returns></returns>
        public static Journal CreateJournal(UpdateCommodityOrderParamDTO ucopDto, CommodityOrder commodityOrder, int oldState, string journalName)
        {
            Journal journal = CreateJournal();

            journal.Code             = commodityOrder.Code;
            journal.SubId            = ucopDto.userId == Guid.Empty ? commodityOrder.SubId : ucopDto.userId;
            journal.SubTime          = DateTime.Now;
            journal.CommodityOrderId = commodityOrder.Id;
            journal.OrderType        = commodityOrder.OrderType;
            journal.Name             = journalName;

            if (ucopDto.orderItemId == Guid.Empty)
            {
                journal.Details   = "订单状态由" + oldState + "变为" + ucopDto.targetState;
                journal.StateFrom = oldState;
                journal.StateTo   = ucopDto.targetState;
            }
            else
            {
                journal.Details   = "订单单商品退款,订单id:" + commodityOrder.Id + "订单商品项id:" + ucopDto.orderItemId;
                journal.StateFrom = oldState;
                journal.StateTo   = ucopDto.targetState;
            }
            return(journal);
        }
Esempio n. 2
0
        /// <summary>
        /// 批量更新订单自动发货
        /// </summary>
        /// <param name="commodityOrders"></param>
        /// <param name="orders"></param>
        /// <param name="updateAfter"></param>
        /// <returns></returns>
        public ResultDTO BatchUpdateOrderStateTo2(List <CommodityOrder> commodityOrders, UpdatePrintDTO orders, Action <List <CommodityOrder>, UpdatePrintDTO> updateAfter)
        {
            try
            {
                var result = new ResultDTO()
                {
                    ResultCode = 0
                };
                commodityOrders.ForEach(r =>
                {
                    UpdateCommodityOrderParamDTO ucopDto = new UpdateCommodityOrderParamDTO()
                    {
                        orderId     = r.Id,
                        targetState = 2,
                        remessage   = "",
                        userId      = orders.UserId
                    };
                    var _result = UpdateOrderStateTo2(ucopDto, r, orders);
                    if (_result.ResultCode != 0)
                    {
                        result = _result;
                    }
                });

                if (result.ResultCode != 0)
                {
                    return(result);
                }

                var savecount = ContextFactory.CurrentThreadContext.SaveChanges();

                ///保存成功之后异步回调
                if (savecount > 0 && updateAfter != null)
                {
                    System.Threading.Tasks.Task.Factory.StartNew(() =>
                    {
                        updateAfter(commodityOrders, orders);
                    });
                }
                if (savecount > 0)
                {
                    return new ResultDTO()
                           {
                               ResultCode = 0, Message = "保存成功"
                           }
                }
                ;
            }
            catch (Exception ex)
            {
                LogHelper.Error(string.Format("批量更新订单自动发货。BatchUpdateOrderStateTo2:{0}", JsonHelper.JsonSerializer(orders)), ex);
            }
            return(new ResultDTO()
            {
                ResultCode = 1, Message = "保存失败"
            });
        }
Esempio n. 3
0
        /// <summary>
        /// 同意取消订单(未发货)
        /// </summary>
        /// <param name="orderId"></param>
        /// <param name="orderItemId"></param>
        public static ResultDTO ApproveCancelOrder(Guid orderId, Guid orderItemId)
        {
            UpdateCommodityOrderParamDTO dto = new UpdateCommodityOrderParamDTO();

            dto.orderId     = orderId;
            dto.orderItemId = orderItemId;
            dto.targetState = 7;
            var cf = new Jinher.AMP.BTP.IBP.Facade.CommodityOrderFacade();

            cf.ContextDTO = AuthorizeHelper.InitAuthorizeInfo();
            return(cf.CancelTheOrder(dto));
        }
Esempio n. 4
0
        /// <summary>
        /// 同意退款申请(达成协议前后2次同意都调用此方法)
        /// </summary>
        /// <param name="orderId"></param>
        /// <param name="orderItemId"></param>
        public static ResultDTO ApproveOrderRefund(Guid orderId, Guid orderItemId)
        {
            var param = new UpdateCommodityOrderParamDTO
            {
                orderId     = orderId,
                orderItemId = orderItemId,
                targetState = 21
            };
            var cf = new Jinher.AMP.BTP.IBP.Facade.CommodityOrderFacade();

            cf.ContextDTO = AuthorizeHelper.InitAuthorizeInfo();
            return(cf.CancelTheOrder(param));
        }
Esempio n. 5
0
        /// <summary>
        /// 订单状态修改
        /// <para>Service Url: http://testbtp.iuoooo.com/Jinher.AMP.BTP.SV.CommodityOrderSV.svc/UpdateCommodityOrderNew
        /// </para>
        /// </summary>
        /// <param name="ucopDto">参数</param>
        /// <returns></returns>
        public ResultDTO UpdateCommodityOrderNew(UpdateCommodityOrderParamDTO ucopDto)
        {
            //定义返回值
            ResultDTO result;

            try
            {
                //调用代理方法
                result = base.Channel.UpdateCommodityOrderNew(ucopDto);
            }
            catch
            {
                //抛异常
                throw;
            }
            finally
            {
                //关链接
                ChannelClose();
            }            //返回结果
            return(result);
        }
Esempio n. 6
0
        /// <summary>
        ///  打印订单状态变为2(已发货)
        /// </summary>
        /// <param name="ucopDto">参数</param>
        /// <param name="commodityOrder">订单信息</param>
        /// <returns></returns>
        private ResultDTO UpdateOrderStateTo2(UpdateCommodityOrderParamDTO ucopDto, CommodityOrder commodityOrder, UpdatePrintDTO orders)
        {
            try
            {
                ContextSession contextSession = ContextFactory.CurrentThreadContext;
                DateTime       now            = DateTime.Now;
                int            oldState       = commodityOrder.State;
                int            newState       = ucopDto.targetState;

                #region 退款
                var orderRefund = new CommodityOrderBP().getOrderRefund(ucopDto.orderId);
                if (orderRefund != null)
                {
                    orderRefund.State = 2;

                    orderRefund.ModifiedOn = now;
                }
                #endregion

                if (!OrderSV.CanChangeState(newState, commodityOrder, orderRefund, null, null))
                {
                    return(new ResultDTO()
                    {
                        ResultCode = 1, Message = "订单状态修改错误"
                    });
                }

                #region 订单
                string shipExpCo  = orders.ShipName;
                string expOrderNo = orders.Orders.Find(r => r.OrderId == ucopDto.orderId).ExpressOrder;
                commodityOrder.ShipExpCo  = string.IsNullOrWhiteSpace(shipExpCo) ? "" : shipExpCo.Trim();
                commodityOrder.ExpOrderNo = string.IsNullOrWhiteSpace(expOrderNo) ? "" : expOrderNo.Trim();
                commodityOrder.ExpOrderNo = commodityOrder.ExpOrderNo.Replace("+", "");

                commodityOrder.State = ucopDto.targetState;
                //更新发货时间
                commodityOrder.ShipmentsTime = now;
                if (commodityOrder.IsRefund == true)
                {
                    commodityOrder.IsRefund = false;
                }
                commodityOrder.EntityState = EntityState.Modified;
                commodityOrder.ModifiedOn  = now;
                #endregion

                #region 保存物流子表
                //保存物流子表
                OrderShipping orderShipping = OrderShipping.CreateOrderShipping();
                orderShipping.OrderId    = ucopDto.orderId;
                orderShipping.ShipExpCo  = commodityOrder.ShipExpCo;
                orderShipping.ExpOrderNo = commodityOrder.ExpOrderNo;
                contextSession.SaveObject(orderShipping);
                #endregion

                #region 订单日志
                Journal journal = Journal.CreateJournal(ucopDto, commodityOrder, oldState, "商家已发货");
                contextSession.SaveObject(journal);
                #endregion

                return(new ResultDTO()
                {
                    ResultCode = 0, Message = "设置一个订单成功"
                });
            }
            catch (Exception ex)
            {
                LogHelper.Error(string.Format("打印订单状态变为2(已发货)。UpdateOrderStateTo2:{0}", JsonHelper.JsonSerializer(ucopDto)), ex);
            }
            return(new ResultDTO()
            {
                ResultCode = 1, Message = "设置一个订单失败"
            });
        }
Esempio n. 7
0
 /// <summary>
 ///  修改订单
 /// </summary>
 ///<param name="ucopDto">参数实体</param>
 /// <returns></returns>
 public ResultDTO CancelTheOrder(UpdateCommodityOrderParamDTO ucopDto)
 {
     base.Do(false);
     return(this.CancelTheOrderExt(ucopDto));
 }
Esempio n. 8
0
 /// <summary>
 /// 订单状态修改
 /// <para>Service Url: http://testbtp.iuoooo.com/Jinher.AMP.BTP.SV.CommodityOrderSV.svc/UpdateCommodityOrderNew
 /// </para>
 /// </summary>
 /// <param name="ucopDto">参数</param>
 /// <returns></returns>
 public ResultDTO UpdateCommodityOrderNew(UpdateCommodityOrderParamDTO ucopDto)
 {
     base.Do(false);
     return(this.UpdateCommodityOrderNewExt(ucopDto));
 }