예제 #1
0
        public ActionResult CreateOrderRecord()
        {
            CreateOrderRecordArgs args = RequestArgs <CreateOrderRecordArgs>();

            if (args == null)
            {
                return(FailedResult("参数无效。"));
            }

            args.modify_user_id = this.UserContext.User.id;

            NormalResult result = _orderManager.CreateOrderRecord(args);

            return(ApiResult(result.Successful, result.Message));
        }
예제 #2
0
        public NormalResult CreateOrderRecord(CreateOrderRecordArgs args)
        {
            using (Entities db = new Entities())
            {
                Product_Order_Master order = db.Product_Order_Master
                                             .FirstOrDefault(e => e.id == args.order_id);
                if (order == null)
                {
                    return(new NormalResult("order_id 无效。"));
                }

                if (order.del_flag == 1)
                {
                    return(new NormalResult("指定的订单已被删除。"));
                }

                if (order.current_status == 9)
                {
                    return(new NormalResult("已完成的订单不允许再修改状态。"));
                }

                if (order.current_status == args.newOrder_status)
                {
                    return(new NormalResult("指定的订单新状态没有变化。"));
                }

                //更新订单状态
                order.current_status = args.newOrder_status;
                switch (args.newOrder_status)
                {
                case 2:     //待发货
                    order.payment_date_time = DateTime.Now;
                    break;

                case 3:     //已发货
                    order.transport_no      = args.transport_no;
                    order.transport_company = args.transport_company;
                    break;

                case 5:    //退货
                    order.refund_date_time = DateTime.Now;
                    break;

                case 9:     //已完成
                    order.order_complete_time = DateTime.Now;
                    break;
                }

                //如果是把订单状态修改为已完成,需要一些业务处理
                if (order.current_status == 9)
                {
                    //计算已收货总成本价,更新订单明细中是否已收货
                    order.receiving_real_price = 0;
                    foreach (var detailItem in order.Product_Order_Detail)
                    {
                        if (args.receiving_detail_id.Contains(detailItem.id) == false)
                        {
                            continue;
                        }

                        detailItem.is_receiving     = 1;
                        order.receiving_real_price += detailItem.real_price;
                    }

                    #region 计算返点

                    #region 总返点

                    //总返点和上下级代码没有任何关系,就是自己卖的货,自己得该货原始价的百分之多少的返点,
                    //会员没有,二级代理得5%,一级代理得10%。
                    if (order.Member.type == 1 || order.Member.type == 2)
                    {
                        Order_Rebate_New orderRebateNew = new Order_Rebate_New();
                        orderRebateNew.order_id      = order.id;
                        orderRebateNew.reciver_id    = order.member_id;
                        orderRebateNew.reciver_level = order.Member.type;
                        orderRebateNew.giver_id      = order.member_id;
                        orderRebateNew.giver_level   = order.Member.type;
                        orderRebateNew.reason        = "订单总返点,订单号:" + order.id;
                        orderRebateNew.status        = 1;
                        orderRebateNew.rebate_type   = 2;
                        orderRebateNew.rebate_time   = DateTime.Now;

                        if (order.Member.type == 1)
                        {
                            orderRebateNew.reciver_rebate = (int)(order.receiving_real_price * 0.1m);
                        }
                        else
                        {
                            orderRebateNew.reciver_rebate = (int)(order.receiving_real_price * 0.05m);
                        }

                        db.Order_Rebate_New.Add(orderRebateNew);

                        order.total_Rebate_Amount = orderRebateNew.reciver_rebate;
                        order.Member.total_point += orderRebateNew.reciver_rebate;
                    }

                    #endregion

                    #region 分销返点

                    //按会员上下级关系确定,卖货的人上线得原始价的8%,上线的上线得原始价的4%。
                    if (order.Member.Superior_Agent != null)
                    {
                        Order_Rebate_New orderRebateNew = new Order_Rebate_New();
                        orderRebateNew.order_id      = order.id;
                        orderRebateNew.reciver_id    = order.Member.Superior_Agent.id;
                        orderRebateNew.reciver_level = order.Member.Superior_Agent.type;
                        orderRebateNew.giver_id      = order.member_id;
                        orderRebateNew.giver_level   = order.Member.type;
                        orderRebateNew.reason        = "分销返点,订单号:" + order.id;
                        orderRebateNew.status        = 1;
                        orderRebateNew.rebate_type   = 1;
                        orderRebateNew.rebate_time   = DateTime.Now;

                        orderRebateNew.reciver_rebate = (int)(order.receiving_real_price * 0.08m);

                        db.Order_Rebate_New.Add(orderRebateNew);

                        order.superior_Rebate_Amount             = orderRebateNew.reciver_rebate;
                        order.Member.Superior_Agent.total_point += orderRebateNew.reciver_rebate;

                        if (order.Member.Superior_Agent.Superior_Agent != null)
                        {
                            Order_Rebate_New orderRebateNew2 = new Order_Rebate_New();
                            orderRebateNew2.order_id      = order.id;
                            orderRebateNew2.reciver_id    = order.Member.Superior_Agent.Superior_Agent.id;
                            orderRebateNew2.reciver_level = order.Member.Superior_Agent.Superior_Agent.type;
                            orderRebateNew2.giver_id      = order.member_id;
                            orderRebateNew2.giver_level   = order.Member.type;
                            orderRebateNew2.reason        = "分销返点,订单号:" + order.id;
                            orderRebateNew2.status        = 1;
                            orderRebateNew2.rebate_type   = 1;
                            orderRebateNew2.rebate_time   = DateTime.Now;

                            orderRebateNew2.reciver_rebate = (int)(order.receiving_real_price * 0.04m);

                            db.Order_Rebate_New.Add(orderRebateNew2);

                            order.superior_Parent_Rebate_Amount = orderRebateNew2.reciver_rebate;
                            order.Member.Superior_Agent.Superior_Agent.total_point += orderRebateNew2.reciver_rebate;
                        }
                    }

                    #endregion

                    #endregion
                }

                Product_Order_Record record = new Product_Order_Record();
                record.order_id         = args.order_id;
                record.modify_comment   = args.modify_comment;
                record.modify_user_id   = args.modify_user_id;
                record.modify_date_time = DateTime.Now;

                db.Product_Order_Record.Add(record);
                db.SaveChanges();
            }

            return(new NormalResult());
        }