Skip to content
AjaxSummaryOrder.ashx 3.99 KiB
Newer Older
Jack Dan's avatar
Jack Dan committed
<%@ WebHandler Language="C#" Class="AjaxSummaryOrder" %>

using System;
using System.Web;
using System.Data;
using System.Data.SqlClient;

public class AjaxSummaryOrder : IHttpHandler, System.Web.SessionState.IRequiresSessionState
{
    Kenanfans.KDO.SqlDataBaseOperator _Sdbo = null;
       
    public void ProcessRequest (HttpContext context) {
        _Sdbo = DataService.Sdbo;
        //System.Threading.Thread.Sleep(2000);
        String act = context.Request["Action"];
        String msg = "";
        JSONObject jo = new JSONObject();
        jo.Add("Action", act);

        if (act == "SummaryOrder")
        {            
            String dateStr = context.Request["DateStr"];
            Guid orderID = Guid.NewGuid();

            Boolean ifNewOrder = true;

            DataRow orderRow = _Sdbo.ExecuteDataRow("SELECT OrderID,OrderStatus FROM MyOrder.Info WHERE DeliveryID='{0}' AND CreateDate={1}", MySession.UserGroupID, dateStr);
            SqlConnection conn = _Sdbo.GetConnection();
            conn.Open();
            SqlTransaction st = conn.BeginTransaction();
            SqlCommand cmd = conn.CreateCommand();
            cmd.Transaction = st;
            try
            {
                cmd.CommandType = CommandType.Text;

                String sql = "";

                if (orderRow != null)
                {
                    GlobalDefine.OrderStatus oldStatus = (GlobalDefine.OrderStatus)Convert.ToInt32(orderRow["OrderStatus"]);
                    //如果订单已存在,则只有未提交的订单可以汇总审核
                    if (oldStatus != GlobalDefine.OrderStatus.NotSubmit)
                    {
                        throw new Exception("当前订单状态不能提交或保存");
                    }
                    ifNewOrder = false;
                    orderID = (Guid)orderRow["OrderID"];
                }

                
                
                if (ifNewOrder)
                {
                    sql = String.Format("INSERT INTO MyOrder.Info VALUES ('{0}','{1}','{2}',{3},'{4}','{5}',{6})", orderID, MySession.UserGroupID, MySession.UserID, dateStr, DateTime.Now, "", (int)GlobalDefine.OrderStatus.NotAuth);
                    cmd.CommandText = sql;
                    int res = cmd.ExecuteNonQuery();
                }
                else
                {
                    sql = String.Format("DELETE FROM MyOrder.Detail WHERE OrderID='{0}'", orderID);
                    cmd.CommandText = sql;
                    cmd.ExecuteNonQuery();

                    sql = String.Format("UPDATE MyOrder.Info SET OrderStatus={0} WHERE OrderID='{1}'", (int)GlobalDefine.OrderStatus.NotAuth, orderID);
                    cmd.CommandText = sql;
                    cmd.ExecuteNonQuery();
                }

                String[] postDatas = context.Request["OrderData"].Split("|".ToCharArray(), StringSplitOptions.RemoveEmptyEntries);
                foreach (String pd in postDatas)
                {
                    //商品ID,价格,数量
                    String[] pdArr = pd.Split(",".ToCharArray());
                    sql = String.Format("INSERT INTO MyOrder.Detail VALUES ('{0}','{1}',{2},{3},0)", orderID, pdArr[0], pdArr[1], pdArr[2]);
                    cmd.CommandText = sql;
                    cmd.ExecuteNonQuery();
                }
                
                st.Commit();
                jo.Add("status", "success");
                _Sdbo.ExecuteNonQueryProc("msp_OrderTrace", MySession.UserID, orderID, DateTime.Now, "汇总审核订单");
                msg = "汇总审核成功";
            }
            catch (Exception ex)
            {
                st.Rollback();
                jo.Add("status", "failed");
                msg = String.Format("汇总审核失败,原因是:<div>{0}</div>", ex.Message);
            }
            
            jo.Add("msg", msg);
            context.Response.Write(JSONConvert.SerializeObject(jo));
        }
    }
 
    public bool IsReusable {
        get {
            return false;
        }
    }

}