NGToolsCSharp/NGTools/Pages/Z_System/BUY_GN.aspx.cs

392 lines
16 KiB
C#
Raw Normal View History

2024-09-13 08:44:13 +00:00
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();
}
}
/// <summary>
/// 检查购买功能到期情况,付款后激活购买功能
/// </summary>
/// <param name="userID"></param>
/// <returns></returns>
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;
}
/// <summary>
/// 从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);
/// </summary>
/// by liaodeyun
/// <param name="dtTemp"></param>
/// <returns></returns>
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(',');
}
/// <summary>
/// 从datatable获取批量插入的字段字符串
/// </summary>
/// <param name="dtTemp"></param>
/// by 廖德云
/// <returns>逗号分隔的字段名字符串,,,,</returns>
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;
}
/// <summary>
/// 从datatable获取批量插入的字段值字符串
/// </summary>
/// <param name="dtTemp"></param>
/// by 廖德云
/// <returns>逗号单引号分隔的字段名字符串‘’,‘’,‘’</returns>
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;
}
/// <summary>
/// 获取网格数据表格并转换成JSON
/// 传入的参数格式是:"tableName,条件字段~条件字段值
/// </summary>
/// <returns>JSON格式</returns>
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 "";
}
}
/// <summary>
/// 把DataTable数据转换为Json格式
/// </summary>
/// <param name="dt">传入DataTable数据</param>
/// <returns></returns>
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 "";
}
}
}
}