using NGTools.Tools; using System; using System.Collections.Generic; using System.Data; using System.Linq; using System.Text; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; namespace NGTools.Pages.Z_System { public partial class BUY_GN : System.Web.UI.Page { public DataTable dtFieldName = MySQLHelper.ExecuteDataTable("select * from field_name order by ID"); protected void Page_Load(object sender, EventArgs e) { if ( Request["action"] == "getDataGrid") { Response.Write(getData( Request.Form["par"])); Response.End(); } if (Request["action"] == "activeOrderNo") { string userID = Request.Form["userID"]; string orderID = Request.Form["orderID"]; Response.Write(sumBuyMenu_ID(userID,orderID)); Response.End(); } } /// /// 检查购买功能到期情况,付款后激活购买功能 /// /// /// public static string sumBuyMenu_ID(string userID, string orderID) { DataTable dtBuy_PayNo = MySQLHelper.ExecuteDataTable("select * from buy_detail where user_id='" + userID + "' and payFlag='0' and ORDER_ID='" + orderID + "'"); DataTable dtBuySum = MySQLHelper.ExecuteDataTable("select * from buy_total where user_id='" + userID + "'"); DataTable dtOldMenu_ID = dtBuySum.Clone(); DataTable dtNewMenu_ID = dtBuySum.Clone(); DataTable dtBuy_PayNoUpdateSetPay = dtBuy_PayNo.Clone(); DataTable dtBuy_PayNoinsertSetPay = dtBuy_PayNo.Clone(); if (dtBuy_PayNo.Rows.Count > 0) //有新买未付款激活 { if (dtBuySum.Rows.Count > 0) //曾经买过 { for (int i = 0; i < dtBuy_PayNo.Rows.Count; i++) //逐项功能判断是否购买过 { DataRow[] drTemp = dtBuySum.Select("Menu_ID='" + dtBuy_PayNo.Rows[i]["Menu_ID"] + "'"); if (drTemp.Length > 0)//购买过此功能 { if (dtBuy_PayNo.Rows[i]["buy_type"].ToString() == "包月") { drTemp[0]["endDate"] = DateTime.Parse(drTemp[0]["endDate"].ToString()).AddMonths(int.Parse(dtBuy_PayNo.Rows[i]["buy_num"].ToString())); } if (dtBuy_PayNo.Rows[i]["buy_type"].ToString() == "买次数") { drTemp[0]["remaintimes"] = int.Parse(drTemp[0]["remaintimes"].ToString()) + (int.Parse(dtBuy_PayNo.Rows[i]["buy_num"].ToString())); } if (dtBuy_PayNo.Rows[i]["buy_type"].ToString() == "无限制") { drTemp[0]["buy_type"] = "无限制"; } DataRow dr = dtOldMenu_ID.NewRow(); dr.ItemArray = drTemp[0].ItemArray; dtOldMenu_ID.Rows.Add(dr); dtBuy_PayNo.Rows[i]["payFlag"] = '1'; dr = dtBuy_PayNoUpdateSetPay.NewRow(); dr.ItemArray = dtBuy_PayNo.Rows[i].ItemArray; dtBuy_PayNoUpdateSetPay.Rows.Add(dr); } else //未买过 此功能 { drTemp[0]["USER_ID"] = dtBuy_PayNo.Rows[i]["USER_ID"]; drTemp[0]["ORG_ID"] = dtBuy_PayNo.Rows[i]["ORG_ID"]; drTemp[0]["USER_ID"] = dtBuy_PayNo.Rows[i]["USER_ID"]; drTemp[0]["buy_type"] = dtBuy_PayNo.Rows[i]["buy_type"]; if (dtBuy_PayNo.Rows[i]["buy_type"].ToString() == "包月") { drTemp[0]["endDate"] = DateTime.Now.AddMonths(int.Parse(dtBuy_PayNo.Rows[i]["buy_num"].ToString())); } if (dtBuy_PayNo.Rows[i]["buy_type"].ToString() == "买次数") { drTemp[0]["remaintimes"] = (int.Parse(dtBuy_PayNo.Rows[i]["buy_num"].ToString())); } if (dtBuy_PayNo.Rows[i]["buy_type"].ToString() == "无限制") { drTemp[0]["buy_type"] = "无限制"; } DataRow dr = dtOldMenu_ID.NewRow(); dr.ItemArray = drTemp[0].ItemArray; dtNewMenu_ID.Rows.Add(dr); dtBuy_PayNo.Rows[i]["payFlag"] = '1'; dr = dtBuy_PayNoinsertSetPay.NewRow(); dr.ItemArray = dtBuy_PayNo.Rows[i].ItemArray; dtBuy_PayNoinsertSetPay.Rows.Add(dr); } } } else //第一次购买 全部存入 { for (int i = 0; i < dtBuy_PayNo.Rows.Count; i++) //逐项功能判断是否购买过 { DataRow drTemp = dtNewMenu_ID.NewRow(); drTemp["USER_ID"] = dtBuy_PayNo.Rows[i]["USER_ID"]; drTemp["ORG_ID"] = dtBuy_PayNo.Rows[i]["ORG_ID"]; drTemp["Menu_ID"] = dtBuy_PayNo.Rows[i]["Menu_ID"]; drTemp["buy_type"] = dtBuy_PayNo.Rows[i]["buy_type"]; if (dtBuy_PayNo.Rows[i]["buy_type"].ToString() == "包月") { drTemp["endDate"] = DateTime.Now.AddMonths(int.Parse(dtBuy_PayNo.Rows[i]["buy_num"].ToString())); } if (dtBuy_PayNo.Rows[i]["buy_type"].ToString() == "买次数") { drTemp["remaintimes"] = (int.Parse(dtBuy_PayNo.Rows[i]["buy_num"].ToString())); } if (dtBuy_PayNo.Rows[i]["buy_type"].ToString() == "无限制") { drTemp["buy_type"] = "无限制"; } dtNewMenu_ID.Rows.Add(drTemp); dtBuy_PayNo.Rows[i]["payFlag"] = '1'; DataRow dr = dtBuy_PayNoinsertSetPay.NewRow(); dr.ItemArray = dtBuy_PayNo.Rows[i].ItemArray; dtBuy_PayNoinsertSetPay.Rows.Add(dr); } } } string strSQL = ""; int num = 0; string strResult = ""; if (dtOldMenu_ID.Rows.Count > 0) { strSQL = "update buy_total set "; strSQL += getUpdateSQL(dtOldMenu_ID); num = MySQLHelper.ExecuteNonQuery(strSQL); if (num > 0) //保存成功后 把新买的置已激活存入total表中 { num = 0; strSQL = "update buy_detail set "; strSQL += getUpdateSQL(dtBuy_PayNoUpdateSetPay); num = MySQLHelper.ExecuteNonQuery(strSQL); if (num > 0) { strResult = "续费已开通" + num + "项功能!"; } } } if (dtNewMenu_ID.Rows.Count > 0) { strSQL = "INSERT INTO buy_total ("; strSQL += getInsertFieldName(dtNewMenu_ID) + ") Values"; strSQL += getInsertFieldValue(dtNewMenu_ID); num = MySQLHelper.ExecuteNonQuery(strSQL); if (num > 0) //保存成功后 把新买的置已激活存入total表中 { num = 0; strSQL = "update buy_detail set "; strSQL += getUpdateSQL(dtBuy_PayNoinsertSetPay); num = MySQLHelper.ExecuteNonQuery(strSQL); if (num > 0) { strResult += "新购买" + num + "项功能!"; } } } return strResult; } /// /// 从datatable获取批量更新的SQL字符串 格式如下 /// UPDATE user SET ///phoneno = CASE id /// WHEN 1 THEN 3 /// WHEN 2 THEN 4 ///END, ///authority = CASE id /// WHEN 1 THEN 'New Title 1' /// WHEN 2 THEN 'New Title 2' ///END ///WHERE id IN (1,2); /// /// by liaodeyun /// /// public static string getUpdateSQL(DataTable dtTemp) { string strTemp = ""; string strID = ""; string[] strFieldValue = new string[dtTemp.Columns.Count]; for (int i = 0; i < dtTemp.Columns.Count; i++) { if (dtTemp.Columns[i].ColumnName != "ID") { strFieldValue[i] = dtTemp.Columns[i].ColumnName + " = case ID "; for (int j = 0; j < dtTemp.Rows.Count; j++) { strFieldValue[i] += "when '" + dtTemp.Rows[j]["ID"] + "' then '" + dtTemp.Rows[j][i] + "' "; } strFieldValue[i] += " end"; } } strTemp = String.Join(",", strFieldValue); strTemp = strTemp.TrimEnd(','); string[] SID = new string[dtTemp.Rows.Count]; for (int j = 0; j < dtTemp.Rows.Count; j++) { SID[j] = dtTemp.Rows[j]["ID"].ToString(); } strID = String.Join("','", SID); strTemp = strTemp + " where ID in ('" + strID + "')"; return strTemp.TrimStart(','); } /// /// 从datatable获取批量插入的字段字符串 /// /// /// by 廖德云 /// 逗号分隔的字段名字符串,,,, public static string getInsertFieldName(DataTable dtTemp) { string strTemp = ""; for (int i = 0; i < dtTemp.Columns.Count; i++) { if (dtTemp.Columns[i].ColumnName != "ID") { strTemp += dtTemp.Columns[i].ColumnName + ","; } } strTemp = strTemp.TrimEnd(','); return strTemp; } /// /// 从datatable获取批量插入的字段值字符串 /// /// /// by 廖德云 /// 逗号单引号分隔的字段名字符串‘’,‘’,‘’ public static string getInsertFieldValue(DataTable dtTemp) { string strTemp = ""; for (int i = 0; i < dtTemp.Rows.Count; i++) { strTemp += "("; for (int j = 0; j < dtTemp.Columns.Count; j++) { if (dtTemp.Columns[j].ColumnName != "ID") { strTemp += "'" + dtTemp.Rows[i][j].ToString() + "',"; } } strTemp = strTemp.TrimEnd(',') + "),"; } strTemp = strTemp.TrimEnd(','); return strTemp; } /// /// 获取网格数据表格并转换成JSON /// 传入的参数格式是:"tableName,条件字段~条件字段值 /// /// JSON格式 private string getData(string strPar) { string strSQL = ""; try { strSQL = "select * from system_menu where parent_id <> 'M10' and parent_id <> 'M00' order by parent_id,showorder"; DataTable dtTemp = MySQLHelper.ExecuteDataTable(strSQL); DataView dv = dtTemp.DefaultView; DataTable dtAllMenu = dv.ToTable(false, "ID", "Menu_ID", "Menu_Name", "MDJG", "CSJG", "BNJG"); dtAllMenu.Columns.Add("Buy_Type", typeof(string)); dtAllMenu.Columns.Add("Buy_Num", typeof(string)); dv = dtAllMenu.DefaultView; dtTemp = dv.ToTable(false, "ID", "Menu_ID", "Menu_Name", "Buy_Type", "Buy_Num", "MDJG", "CSJG", "BNJG"); string json = DataTableToJson(dtTemp, true); return json; } catch (Exception ex) { return ""; } } /// /// 把DataTable数据转换为Json格式 /// /// 传入DataTable数据 /// public string DataTableToJson(DataTable dt, bool multRow) { StringBuilder jsonBuilder = new StringBuilder(); jsonBuilder.Append("{\"total\""); jsonBuilder.Append(":"); jsonBuilder.Append(dt.Rows.Count); jsonBuilder.Append(",\"rows\":"); if (dt.Rows.Count != 1 || multRow) jsonBuilder.Append("["); for (int i = 0; i < dt.Rows.Count; i++) { jsonBuilder.Append("{"); for (int j = 0; j < dt.Columns.Count; j++) { jsonBuilder.Append("\""); jsonBuilder.Append(dt.Columns[j].ColumnName); jsonBuilder.Append("\":\""); if (dt.Columns[j].ColumnName == "RQ") { jsonBuilder.Append(dt.Rows[i][j].ToString().Split(' ')[0]); } else { jsonBuilder.Append(dt.Rows[i][j].ToString()); } jsonBuilder.Append("\","); } jsonBuilder.Remove(jsonBuilder.Length - 1, 1); jsonBuilder.Append("},"); } if (dt.Rows.Count > 0) { jsonBuilder.Remove(jsonBuilder.Length - 1, 1); } if (dt.Rows.Count != 1 || multRow) { jsonBuilder.Append("],"); } else { jsonBuilder.Append(","); }; jsonBuilder.Append("\"title"); //jsonBuilder.Append(dt.TableName); jsonBuilder.Append("\":["); //这是循环获取列名称 jsonBuilder.Append("{\"title\": \"\", \"field\":\"ck\",\"checkbox\":\"true\"},"); for (int n = 0; n < dt.Columns.Count; n++) { jsonBuilder.Append("{"); jsonBuilder.Append("\"field"); jsonBuilder.Append("\":\""); jsonBuilder.Append(dt.Columns[n].ColumnName); jsonBuilder.Append("\","); jsonBuilder.Append("\"title"); jsonBuilder.Append("\":\""); jsonBuilder.Append(getStrColumnName(dt.Columns[n].ColumnName)); jsonBuilder.Append("\""); jsonBuilder.Append("},"); } jsonBuilder.Remove(jsonBuilder.Length - 1, 1); jsonBuilder.Append("},"); jsonBuilder.Remove(jsonBuilder.Length - 2, 2); jsonBuilder.Append("]"); jsonBuilder.Append("}"); return jsonBuilder.ToString(); } private string getStrColumnName(string strName) { try { string temp = dtFieldName.Select("field_text='" + strName + "'")[0]["field_name"].ToString(); return temp; } catch (Exception) { return ""; } } } }