www.gusucode.com > CC校友录贴吧 CCBar源码程序asp编程 > inc/logic/logic_admin.asp

    <!-- #include file = "../inc_md5.asp" -->
<!-- #include file = "../inc_serv_func.asp" -->
<%
''===================================================================
'= ASP FILENAME	: /inc/logic/logic_admin.asp
'= CREATED TIME : 2006-4-30
'= LAST MODIFIED: 2006-4-30
'= VERSION INFO : CCASP Framework Ver 2.0.1 ALL RIGHTS RESERVED BY www.cclinux.com
'= DESCRIPTION  : 管理员业务逻辑
'= Change Log:
'==================================================================='
%>

<%
'== const define

Const CONST_ADMIN_NORMAL_STATUS = 0
Const CONST_ADMIN_SUPEND_STATUS = 1
Const CONST_ADMIN_DEL_STATUS = 2

''===================================================================
'= Function    : GetAdminsLogic()
'= Time		   : Created At 2006-5-5
'= Input	   : strWhere : 符合条件
'= Return      : boolean
'= Description : 取管理员记录集
'==================================================================='
Function GetAdminsLogic(strWhere)
	GBL_objPubDB.Clear()
	GBL_objPubDB.AllSQL = "SELECT * FROM CLASS_ADMIN  WHERE ADMIN_ID<>25 " & strWhere & " ORDER BY ADMIN_ID DESC"
	If Not GBL_objPubDB.SQLRSExecute() Then
		GetAdminsLogic = False
		Exit Function
	End If
	GetAdminsLogic = True
End Function

''===================================================================
'= Function    : GetAdminLogic()
'= Time		   : Created At 2006-5-5
'= Input	   : intAdminId : 管理员ID
'= Return      : boolean
'= Description : 取单个管理员记录(by id)
'==================================================================='
Function GetAdminLogic(intAdminId)
	GBL_objPubDB.Clear()
	GBL_objPubDB.TableName = "CLASS_ADMIN"
	GBL_objPubDB.SQLType = "SELECT"
	GBL_objPubDB.AddField "ADMIN_ID",""
	GBL_objPubDB.AddField "ADMIN_LEVEL",""
	GBL_objPubDB.AddField "ADMIN_STATUS",""
	GBL_objPubDB.AddField "ADMIN_ACCOUNT",""
	GBL_objPubDB.AddField "ADMIN_PASSWORD",""
	GBL_objPubDB.AddField "ADMIN_ADD_TIME",""
	GBL_objPubDB.AddField "ADMIN_LAST_LOGIN_TIME",""
	GBL_objPubDB.AddField "ADMIN_LOGIN_COUNT",""
	GBL_objPubDB.AddField "ADMIN_IP",""
	GBL_objPubDB.Where = "ADMIN_ID=" & intAdminId
	If Not GBL_objPubDB.SQLRSExecute() Then
		GetAdminLogic = False
		Exit Function
	End If
	GetAdminLogic = True
End Function

''===================================================================
'= Function    : GetAdminByAccountLogic()
'= Time		   : Created At 2006-5-5
'= Input	   : strAccount : 管理员帐号
'= Return      : boolean
'= Description : 取单个管理员记录(by account)
'==================================================================='
Function GetAdminByAccountLogic(strAccount)
	GBL_objPubDB.Clear()
	GBL_objPubDB.TableName = "CLASS_ADMIN"
	GBL_objPubDB.SQLType = "SELECT"
	GBL_objPubDB.AddField "ADMIN_ID",""
	GBL_objPubDB.AddField "ADMIN_LEVEL",""
	GBL_objPubDB.AddField "ADMIN_STATUS",""
	GBL_objPubDB.AddField "ADMIN_ACCOUNT",""
	GBL_objPubDB.AddField "ADMIN_PASSWORD",""
	GBL_objPubDB.Where = "ADMIN_ACCOUNT='" & strAccount & "'"
	If Not GBL_objPubDB.SQLRSExecute() Then
		GetAdminByAccountLogic = False
		Exit Function
	End If
	GetAdminByAccountLogic = True
End Function

''===================================================================
'= Function    : SaveSelfPwdLogic()
'= Time		   : Created At 2006-5-13
'= Input	   : intAdminId : 管理员ID
'= Input	   : strOldPwd : 老密码
'= Input	   : strNewPwd : 新密码
'= Return      : boolean
'= Description : 添加/编辑管理员
'==================================================================='
Function SaveSelfPwdLogic(intAdminId,strOldPwd,strNewPwd)
	
	'== 老密码是否正确
	GBL_objPubDB.Clear()
	GBL_objPubDB.TableName = "CLASS_ADMIN"
	GBL_objPubDB.SQLType = "SELECT"
	GBL_objPubDB.AddField "ADMIN_ID",""
	GBL_objPubDB.Where = "ADMIN_PASSWORD='" & Md5(strOldPwd) & "' AND ADMIN_ID=" & intAdminId
	If Not GBL_objPubDB.SQLRSExecute() Then
		SaveSelfPwdLogic = False
		Exit Function
	End If
	
	If GBL_objPubDB.intRSNum <= 0 Then
		Call GBL_objException.catchErr(E_USER_PUB,"老密码不正确")
		SaveSelfPwdLogic = False
		Exit Function
	End If

	'== 修改为新密码
	GBL_objPubDB.Clear()
	GBL_objPubDB.TableName = "CLASS_ADMIN"
	GBL_objPubDB.SQLType = "UPDATE"
	GBL_objPubDB.AddField "ADMIN_PASSWORD",Md5(strNewPwd)
	GBL_objPubDB.Where = "ADMIN_ID=" & intAdminId
	If Not GBL_objPubDB.SQLExecute() Then
		SaveSelfPwdLogic = False
		Exit Function
	End If

	SaveSelfPwdLogic = True
End Function

''===================================================================
'= Function    : SaveAdminLogic()
'= Time		   : Created At 2006-5-5
'= Input	   : intAdminId : 管理员ID  ""--add other--edit
'= Input	   : objFormData : 表单数据
'= Return      : boolean
'= Description : 添加/编辑管理员
'==================================================================='
Function SaveAdminLogic(intAdminId,objFormData)
	Dim strAccount,intLevel,strPassword,strPassword2,intStatus,strCheckPwd

	'== 获取表单数据
	strAccount = objFormData("Account")
	intLevel = objFormData("Level")
	intStatus = objFormData("Status")
	strPassword = objFormData("Password")
	strPassword2 = objFormData("Password2")
	strCheckPwd = objFormData("MydPwd")

	'==密码确认
	If intAdminId = "" Or strCheckPwd = "on" Then
		If strPassword <> strPassword2 Then
			Call GBL_objException.catchErr(E_USER_PUB,"两次输入的密码不一致")
			SaveAdminLogic = False
			Exit Function
		End If
	End If

	'== 是否重复
	GBL_objPubDB.Clear()
	GBL_objPubDB.TableName = "CLASS_ADMIN"
	GBL_objPubDB.SQLType = "SELECT"
	GBL_objPubDB.AddField "ADMIN_ID",""
	If intAdminId = "" Then
		GBL_objPubDB.Where = "ADMIN_ACCOUNT='" & strAccount & "'"
	Else
		GBL_objPubDB.Where = "ADMIN_ACCOUNT='" & strAccount & "' AND ADMIN_ID <>" & intAdminId
	End If
	If Not GBL_objPubDB.SQLRSExecute() Then
		SaveAdminLogic = False
		Exit Function
	End If
	If GBL_objPubDB.intRSNum > 0 Then
		Call GBL_objException.catchErr(E_USER_PUB,"该用户名(" & strAccount & ")已存在")
		SaveAdminLogic = False
		Exit Function
	End If

	GBL_objPubDB.Clear()
	GBL_objPubDB.TableName = "CLASS_ADMIN"
	If intAdminId = "" Then
		GBL_objPubDB.SQLType = "INSERT"
	Else
		GBL_objPubDB.SQLType = "UPDATE"
	End If
	GBL_objPubDB.AddField "ADMIN_ACCOUNT",strAccount
	GBL_objPubDB.AddField "ADMIN_LEVEL",intLevel
	GBL_objPubDB.AddField "ADMIN_ADD_TIME",Now()
	GBL_objPubDB.AddField "ADMIN_STATUS",intStatus
	If intAdminId = "" Or strCheckPwd = "on" Then GBL_objPubDB.AddField "ADMIN_PASSWORD",Md5(strPassword)
	If intAdminId <> "" Then GBL_objPubDB.Where = "ADMIN_ID=" & intAdminId
	If Not GBL_objPubDB.SQLRSExecute() Then
		SaveAdminLogic = False
		Exit Function
	End If
	SaveAdminLogic = True
End Function

''===================================================================
'= Function    : RemoveAdminsLogic()
'= Time		   : Created At 2006-5-5
'= Input	   : strWhere : 删除条件
'= Return      : boolean
'= Description : 删除管理员
'==================================================================='
Function RemoveAdminsLogic(strWhere,intSelfAdminId)	
	Dim strSql

	'== 是否是本身
	strSql = strWhere & " AND ADMIN_ID=" & intSelfAdminId
	If Not GetAdminsLogic(strSql) Then
		RemoveAdminsLogic = False
		Exit Function
	End If

	If GBL_objPubDB.intRSNum > 0 Then
		Call GBL_objException.catchErr(E_USER_PUB,"您选择的管理员中存在管理员自身,不能删除")
		RemoveAdminsLogic = False
		Exit Function
	End If

	'== 是否是本身
	strSql = strWhere & " AND ADMIN_LEVEL=0 "
	If Not GetAdminsLogic(strSql) Then
		RemoveAdminsLogic = False
		Exit Function
	End If

	If GBL_objPubDB.intRSNum > 0 Then
		Call GBL_objException.catchErr(E_USER_PUB,"您选择的管理员中存在最高管理员,不能删除")
		RemoveAdminsLogic = False
		Exit Function
	End If

	'== 是否为超级管理员

	'== 删除记录
	'GBL_objPubDB.Clear()
	'GBL_objPubDB.TableName = "CLASS_ADMIN"
	'GBL_objPubDB.SQLType = "UPDATE"
	'GBL_objPubDB.AddField "ADMIN_STATUS",CONST_ADMIN_DEL_STATUS
	'GBL_objPubDB.Where = " 1=1 " & strWhere
	'If Not GBL_objPubDB.SQLRSExecute() Then
	'	RemoveAdminsLogic = False
	'	Exit Function
	'End If

	GBL_objPubDB.Clear()
	GBL_objPubDB.TableName = "CLASS_ADMIN"
	GBL_objPubDB.SQLType = "DELETE"
	GBL_objPubDB.AddField "ADMIN_STATUS",CONST_ADMIN_DEL_STATUS
	GBL_objPubDB.Where = " 1=1 " & strWhere
	If Not GBL_objPubDB.SQLRSExecute() Then
		RemoveAdminsLogic = False
		Exit Function
	End If

	RemoveAdminsLogic = True
End Function

''===================================================================
'= Function    : AdminLoginLogic()
'= Time		   : Created At 2006-5-5
'= Input	   : objFormData : 表单数据(Account,Password,VerfiyCode)
'= Return      : boolean
'= Description : 校验登陆
'==================================================================='
Function AdminLoginLogic(objFormData)
	Dim strAccount,strPassword,strVerifyCode
	strAccount = objFormData.Item("Account")
	strPassword = objFormData.Item("Password")
	strVerifyCode = objFormData.Item("VerifyCode")

	'== 验证码
	If strVerifyCode = "" Then
		Call GBL_objException.catchErr(E_USER_PUB,"返回后请刷新登录页面后重新输入正确的信息")
		AdminLoginLogic = False
		Exit Function
	ElseIf Session("SEN_GetCode") = "9999" Then
		Session("SEN_GetCode") = ""
	ElseIf Session("SEN_GetCode") = "" Then
		Call GBL_objException.catchErr(E_USER_PUB,"请不要重复提交,如需重新登录请返回登录页面")
		AdminLoginLogic = False
		Exit Function
	ElseIf Cstr(strVerifyCode) <> Cstr(Trim(Session("SEN_GetCode"))) Then
		Call GBL_objException.catchErr(E_USER_PUB,"您输入的确认码和系统产生的不一致,请重新输入")
		AdminLoginLogic = False
		Exit Function
	End If


	GBL_objPubDB.Clear()
	GBL_objPubDB.TableName = "CLASS_ADMIN"
	GBL_objPubDB.SQLType = "SELECT"
	GBL_objPubDB.AddField "ADMIN_ID",""
	GBL_objPubDB.AddField "ADMIN_ACCOUNT",""
	GBL_objPubDB.AddField "ADMIN_LEVEL",""
	GBL_objPubDB.AddField "ADMIN_STATUS",""
	GBL_objPubDB.AddField "ADMIN_LAST_LOGIN_TIME",""
	GBL_objPubDB.Where = "ADMIN_ACCOUNT='" & strAccount & "'" & " AND ADMIN_PASSWORD='" & Md5(strPassword) & "'"
	If Not GBL_objPubDB.SQLRSExecute() Then
		AdminLoginLogic = False
		Exit Function
	End If
	If GBL_objPubDB.intRSNum <= 0 Then
		Call GBL_objException.catchErr(E_USER_PUB,"登陆管理员不存在或者密码错误")
		AdminLoginLogic = False
		Exit Function
	End If

	If GBL_objPubDB.objPubRS("ADMIN_STATUS") = CONST_ADMIN_SUPEND_STATUS Then
		Call GBL_objException.catchErr(E_USER_PUB,"登陆管理员为停止使用状态")
		AdminLoginLogic = False
		Exit Function
	End If

	If GBL_objPubDB.objPubRS("ADMIN_STATUS") = CONST_ADMIN_DEL_STATUS Then
		Call GBL_objException.catchErr(E_USER_PUB,"登陆管理员已删除")
		AdminLoginLogic = False
		Exit Function
	End If

	Dim intAdminId
	intAdminId = GBL_objPubDB.objPubRS("ADMIN_ID")
	
	'== set session
	Session.Contents.RemoveAll()  '==???
	Session(GBL_strCookieURL & "SEN_AdminAccount")=_
			GBL_objPubDB.objPubRS("ADMIN_ACCOUNT")
	Session(GBL_strCookieURL & "SEN_AdminId") =_
			GBL_objPubDB.objPubRS("ADMIN_ID")
	Session(GBL_strCookieURL & "SEN_AdminLevel") =_
			GBL_objPubDB.objPubRS("ADMIN_LEVEL")
	Session(GBL_strCookieURL & "SEN_AdminLastLoginTime") =_
			GBL_objPubDB.objPubRS("ADMIN_LAST_LOGIN_TIME")

	'== 更新登陆情况
	GBL_objPubDB.Clear()
	GBL_objPubDB.ALLSQL = "UPDATE CLASS_ADMIN SET ADMIN_LOGIN_COUNT=ADMIN_LOGIN_COUNT+1,ADMIN_IP='" & GetUserIp & "' ,ADMIN_LAST_LOGIN_TIME='" & Now() & "' WHERE ADMIN_ID=" & intAdminId 
	If Not GBL_objPubDB.SQLRSExecute() Then
		AdminLoginLogic = False
		Exit Function
	End If

	AdminLoginLogic = True
End Function

''===================================================================
'= Function    : AdminLoginLogic()
'= Time		   : Created At 2006-5-5
'= Output	   : 影响数据session数据(SEN_AdminAccount,SEN_AdminId,SEN_AdminLevel,SEN_AdminLastLoginTime)
'= Return      : boolean
'= Description : 管理员登出
'==================================================================='
Function AdminLogoutLogic()
	Session.Contents.RemoveAll() 
	Session(GBL_strCookieURL & "SEN_AdminAccount") = ""
	Session(GBL_strCookieURL & "SEN_AdminId") = ""
	Session(GBL_strCookieURL & "SEN_AdminLevel") = ""
	Session(GBL_strCookieURL & "SEN_AdminLastLoginTime") = ""
	AdminLogoutLogic = True
End Function

''===================================================================
'= Function    : GetAdminLevelLogic()
'= Time		   : Created At 2006-5-5
'= Input	   : intLevel : 管理员级别的数字
'= Return      : 管理员级别的中文含义
'= Description : 取管理员级别
'==================================================================='
'== 取级别
Function GetAdminLevelLogic(intLevel)
	Dim strTmp
	Select Case intLevel
		Case 0:
			strTmp = "超级管理员"
		Case 1:
			strTmp = "副超级管理员"
		Case 2:
			strTmp = "一般管理员"
	End Select
	GetAdminLevelLogic = strTmp
End Function

''===================================================================
'= Function    : GetAdminStatusLogic()
'= Time		   : Created At 2006-5-5
'= Input	   : intStatus : 管理员级别的数字
'= Return      : 管理员状态的中文含义
'= Description : 取管理员状态
'==================================================================='
Function GetAdminStatusLogic(intStatus)
	Dim strTmp
	Select Case intStatus
		Case CONST_ADMIN_NORMAL_STATUS:
			strTmp = "正常"
		Case CONST_ADMIN_SUPEND_STATUS:
			strTmp = "停止使用"
		Case CONST_ADMIN_DEL_STATUS:
			strTmp = "已删除"
	End Select
	GetAdminStatusLogic = strTmp
End Function

%>