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)); }
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()); }