using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using UUN;
using System.Data.SqlClient;

public partial class Club_DXZC_ZC : System.Web.UI.Page
{
    private 访问 访问;
    protected void Page_Load(object sender, EventArgs e)
    {
        访问 = new 访问(this.Context);
        访问.开始处理("短信注册", "社区其它", "短信注册", new 访问.回调委托(ZhiXing));
        访问.关闭连接();
    }
    private void ZhiXing()
    {
        if (!Convert.ToBoolean(程序.设置["注册用户_是否开启注册"]))
            throw new Exception(程序.设置["注册用户_暂停注册提示"].ToString());

        //短信注册接口设置，短信注册提供者只需设置以下两项设置即可完成接口。

        String 手机号码 =  Request.Form["mobile"];

        //短信注册接口注册结束

        SqlCommand 语句 = new SqlCommand("SELECT [ID] FROM [用户] WHERE [手机号]=@手机号", 访问.连接);
        语句.Parameters.Add("@手机号", SqlDbType.NVarChar).Value = 手机号码;
        SqlDataReader 读取 = 语句.ExecuteReader();
        bool 是否存在手机号 = 读取.HasRows;
        读取.Close();

        bool 注册_取密 = !是否存在手机号;

        if (注册_取密)
            if (!Convert.ToBoolean(程序.设置["注册用户_是否启用短信注册"]))
                throw new Exception("短信注册尚未启用");

        if (注册_取密)
            注册用户(手机号码);
        else
            取回密码(手机号码);
    }
    private void 注册用户(String 手机号)
    {
        int ZGID = 常用.SQL_最高ID(访问.连接, "用户");
        SqlCommand 语句 = new SqlCommand("INSERT INTO [用户]([ID],[昵称],[性别],[头像],[手机号],[密码],[标识],[用户类型],[最后登录IP],[最后登录地区],[用户组],[个人资料])" +
            "VALUES(@ID,@昵称,@性别,@头像,@手机号,@密码,@标识,@用户类型,@最后登录IP,@最后登录地区,@用户组,@个人资料)", 访问.连接);
        语句.Parameters.Add("@ID", SqlDbType.Int).Value = ZGID;
        语句.Parameters.Add("@昵称", SqlDbType.NVarChar).Value = "会员" + ZGID;
        语句.Parameters.Add("@性别", SqlDbType.Bit).Value = false;
        语句.Parameters.Add("@头像", SqlDbType.NVarChar).Value = "/Data/TouXiang/0/1.gif";
        语句.Parameters.Add("@手机号", SqlDbType.NVarChar).Value = 手机号;
        语句.Parameters.Add("@密码", SqlDbType.NVarChar).Value = 常用.MD5加密(常用.MD5加密(手机号.Substring(5)));
        语句.Parameters.Add("@标识", SqlDbType.NVarChar).Value = "U"+ZGID+常用.随机字符(30);
        语句.Parameters.Add("@用户类型", SqlDbType.NVarChar).Value = "会员";
        语句.Parameters.Add("@最后登录IP", SqlDbType.NVarChar).Value = Request.UserHostAddress;
        语句.Parameters.Add("@最后登录地区", SqlDbType.NVarChar).Value = 常用.获取城市(访问.连接, Request.UserHostAddress);
        语句.Parameters.Add("@用户组", SqlDbType.NVarChar).Value = "普通会员";
        语句.Parameters.Add("@个人资料", SqlDbType.NVarChar).Value = 获取XML数据();
        语句.ExecuteNonQuery();

        new 会员活动信息(this.Context, 访问.连接).记录(ZGID,
            "会员" + ZGID,
            "加入了社区",
            程序.安装位置+"Club/YongHu_ChaKan.aspx?ID=" + ZGID);
    }
    private String 获取XML数据()
    {
        DataSet 数据 = new DataSet();
        SqlCommand 语句 = new SqlCommand("SELECT [数据名称],[默认值] FROM [用户资料结构] ORDER BY [ID]", 访问.连接);
        SqlDataAdapter 填充 = new SqlDataAdapter(语句);
        填充.Fill(数据, "用户资料结构");

        String 返回值 = "<?xml version=\"1.0\" encoding=\"utf-8\"?><data>";
        for (int i = 0; i < 数据.Tables[0].Rows.Count; i++)
        {
            DataRow 行 = 数据.Tables[0].Rows[i];
            返回值 += "<set name=\"" + Server.HtmlEncode(行["数据名称"].ToString()) + "\" value=\"" + Server.HtmlEncode(行["默认值"].ToString()) + "\" />";
        }
        返回值 += "</data>";
        return 返回值;
    }
    private void 取回密码(String 手机号)
    {
        SqlCommand 语句 = new SqlCommand("UPDATE [用户] SET [密码]=@密码 WHERE [手机号]=@手机号", 访问.连接);
        语句.Parameters.Add("@密码", SqlDbType.NVarChar).Value = 常用.MD5加密(常用.MD5加密(手机号.Substring(5)));
        语句.Parameters.Add("@手机号", SqlDbType.NVarChar).Value = 手机号;
        语句.ExecuteNonQuery();
    }
}
