/// <summary>
///
/// </summary>
/// <param name="curId"></param>
/// <param name="strIp"></param>
/// <param name="emT"></param>
/// <param name="emLHT"></param>
/// <param name="xdbHelper"></param>
/// <returns></returns>
public SlowX.WebLib.Model.UTB_WEB_LOG_HIT
WebLogHitModelGet
(
long curId,
string strIp,
SlowX.WebLib.Enums.Table.EmTable emT,
SlowX.WebLib.Enums.LogHitType.EmLogHitType emLHT,
DBHelper xdbHelper
)
{
SlowX.WebLib.Model.UTB_WEB_LOG_HIT
theResult = null;
bool bIsCreate = true;
if (xdbHelper == null)
{
xdbHelper = SlowX.DAL.Helpers.DBHelper.CreateDBHelper();
}
else
{
// 没有打开链接 //
bIsCreate = xdbHelper.IsNotOpen();
}
try
{
if (bIsCreate)
xdbHelper.OpenDBHelper();
SlowX.WebLib.Business.UTB_WEB_LOG_HIT
bll = SlowX.WebLib.Business.UTB_WEB_LOG_HIT.instance;
SlowX.WebLib.Entity.UTB_WEB_LOG_HIT
entity = new SlowX.WebLib.Entity.UTB_WEB_LOG_HIT();
IOrderByDriver iorder = entity;
IQueryDriver iq = entity;
iorder.AddIOrderByItem(entity._CreateTime, SlowX.Core.Enums.OrderBy.EmOrderBy.DESC);
iorder.AddIOrderByItem(entity._ID, SlowX.Core.Enums.OrderBy.EmOrderBy.DESC);
// 是否删除 //
iq.AddIQueryItemWithEntityFieldInfoByBoolean(entity._IsDelete, false);
iq.AddIQueryItemWithEntityFieldInfo(entity._Item_Id, curId);
iq.AddIQueryItemWithEntityFieldInfo(entity._EmTableV,(int)emT);
iq.AddIQueryItemWithEntityFieldInfo(entity._EmLogHitTypeV, (int)emLHT);
iq.AddIQueryItemWithEntityFieldInfo(entity._FromIP, strIp);
theResult = bll.GetBaseModel(entity, xdbHelper)
as
SlowX.WebLib.Model.UTB_WEB_LOG_HIT;
if (bIsCreate)
xdbHelper.EndDBHelper();
}
catch (Exception err)
{
if (bIsCreate)
xdbHelper.TranDBHelper();
throw err;
}
finally
{
if (bIsCreate)
xdbHelper.FinallyDBHelper();
}
return theResult;
}
/// <summary>
///
/// </summary>
/// <param name="curId"></param>
/// <param name="strIp"></param>
/// <param name="emT"></param>
/// <param name="emLHT"></param>
/// <param name="xdbHelper"></param>
/// <returns></returns>
public SlowX.WebLib.Model.UTB_WEB_CODE_ITEM
CodeItemModelGet
(
long curId,
DBHelper xdbHelper
)
{
SlowX.WebLib.Model.UTB_WEB_CODE_ITEM
theResult = null;
bool bIsCreate = true;
if (xdbHelper == null)
{
xdbHelper = SlowX.DAL.Helpers.DBHelper.CreateDBHelper();
}
else
{
// 没有打开链接 //
bIsCreate = xdbHelper.IsNotOpen();
}
try
{
if (bIsCreate)
xdbHelper.OpenDBHelper();
SlowX.WebLib.Business.UTB_WEB_CODE_ITEM
bll = SlowX.WebLib.Business.UTB_WEB_CODE_ITEM.instance;
SlowX.WebLib.Entity.UTB_WEB_CODE_ITEM
entity = new SlowX.WebLib.Entity.UTB_WEB_CODE_ITEM();
IOrderByDriver iorder = entity;
IQueryDriver iq = entity;
iorder.AddIOrderByItem(entity._CreateTime, SlowX.Core.Enums.OrderBy.EmOrderBy.DESC);
iorder.AddIOrderByItem(entity._ID, SlowX.Core.Enums.OrderBy.EmOrderBy.DESC);
iq.AddIQueryItemWithEntityFieldInfo(entity._ID, curId);
theResult = bll.GetBaseModel(entity, xdbHelper)
as
SlowX.WebLib.Model.UTB_WEB_CODE_ITEM;
if (bIsCreate)
xdbHelper.EndDBHelper();
}
catch (Exception err)
{
if (bIsCreate)
xdbHelper.TranDBHelper();
throw err;
}
finally
{
if (bIsCreate)
xdbHelper.FinallyDBHelper();
}
return theResult;
}
/// <summary>
///
/// </summary>
/// <param name="model"></param>
/// <returns></returns>
public string CodeItemUpDownClickResult
(
SlowX.WebLib.Model.UTB_WEB_CODE_ITEM model
)
{
return model.UpClick.ToString() + "|" + model.DownClick.ToString();
}
/// <summary>
///
/// </summary>
/// <param name="isUp"></param>
/// <param name="curId"></param>
/// <param name="theClick"></param>
/// <param name="strIp"></param>
/// <param name="ipAddress"></param>
/// <param name="dt"></param>
/// <param name="xdbHelper"></param>
public void CodeItemUpdateUpDownClick
(
bool isUp,
long curId,
int theClick,
string strIp,
string ipAddress,
DateTime? dt,
DBHelper xdbHelper
)
{
if (theClick < 0)
{
return;
}
bool bIsCreate = true;
if (xdbHelper == null)
{
xdbHelper = SlowX.DAL.Helpers.DBHelper.CreateDBHelper();
}
else
{
// 没有打开链接 //
bIsCreate = xdbHelper.IsNotOpen();
}
try
{
if (bIsCreate)
xdbHelper.OpenDBHelper();
SlowX.WebLib.Business.UTB_WEB_CODE_ITEM
bll = SlowX.WebLib.Business.UTB_WEB_CODE_ITEM.instance;
SlowX.WebLib.Entity.UTB_WEB_CODE_ITEM
entity = new SlowX.WebLib.Entity.UTB_WEB_CODE_ITEM();
ISaveDriver isave = entity;
IQueryDriver iq = entity;
iq.AddIQueryItemWithEntityFieldInfo(entity._ID, curId);
if (isUp)
{
isave.AddISaveItem(entity._UpClick, theClick);
isave.AddISaveItem(entity._UpClickIp, strIp);
isave.AddISaveItem(entity._UpClickIpAddress, ipAddress);
isave.AddISaveItem(entity._UpClickTime, dt);
}
else
{
isave.AddISaveItem(entity._DownClick, theClick);
isave.AddISaveItem(entity._DownClickIp, strIp);
isave.AddISaveItem(entity._DownClickIpAddress, ipAddress);
isave.AddISaveItem(entity._DownClickTime, dt);
}
bll.Update(entity, xdbHelper);
if (bIsCreate)
xdbHelper.EndDBHelper();
}
catch (Exception err)
{
if (bIsCreate)
xdbHelper.TranDBHelper();
throw err;
}
finally
{
if (bIsCreate)
xdbHelper.FinallyDBHelper();
}
}
/// <summary>
///
/// </summary>
/// <param name="theId"></param>
/// <param name="xdbHelper"></param>
/// <returns></returns>
public int WebLogHitUpdateDeleteById
(
long theId,
DBHelper xdbHelper
)
{
int theResult = 0;
bool bIsCreate = true;
if (xdbHelper == null)
{
xdbHelper = SlowX.DAL.Helpers.DBHelper.CreateDBHelper();
}
else
{
// 没有打开链接 //
bIsCreate = xdbHelper.IsNotOpen();
}
try
{
if (bIsCreate)
xdbHelper.OpenDBHelper();
SlowX.WebLib.Business.UTB_WEB_LOG_HIT
bll = SlowX.WebLib.Business.UTB_WEB_LOG_HIT.instance;
SlowX.WebLib.Entity.UTB_WEB_LOG_HIT
entity = new SlowX.WebLib.Entity.UTB_WEB_LOG_HIT();
ISaveDriver isave = entity;
IQueryDriver iq = entity;
iq.AddIQueryItemWithEntityFieldInfo(entity._ID, theId);
isave.AddISaveItemByBoolean(entity._IsDelete, true);
theResult = bll.Update(entity, xdbHelper);
if (bIsCreate)
xdbHelper.EndDBHelper();
}
catch (Exception err)
{
if (bIsCreate)
xdbHelper.TranDBHelper();
throw err;
}
finally
{
if (bIsCreate)
xdbHelper.FinallyDBHelper();
}
return theResult;
}
/// <summary>
///
/// </summary>
/// <param name="context"></param>
/// <param name="isUp"></param>
/// <param name="curId"></param>
/// <param name="xdbHelper"></param>
/// <returns></returns>
public string CodeItemUpDownClick
(
HttpContext context,
bool isUp,
long curId,
DBHelper xdbHelper
)
{
bool bIsCreate = true;
if (xdbHelper == null)
{
xdbHelper = SlowX.DAL.Helpers.DBHelper.CreateDBHelper();
}
else
{
// 没有打开链接 //
bIsCreate = xdbHelper.IsNotOpen();
}
try
{
if (bIsCreate)
xdbHelper.OpenDBHelper();
SlowX.WebLib.Model.UTB_WEB_CODE_ITEM
model
=
CodeItemModelGet(curId, xdbHelper);
if (model == null)
{
if (bIsCreate)
xdbHelper.EndDBHelper();
return "";
}
BrowserInfoClass info
=
BrowserInfoClass.GetBrowserInfoClass(context, false);
bool isChange = true;
if (model.UpClickIp == info.FromIP)
{
if (isUp)
isChange = true;
else
isChange = false;
}
else if (model.DownClickIp == info.FromIP)
{
if (isUp)
isChange = false;
else
isChange = true;
}
else
{
isChange = true;
}
if (!isChange)
{
if (bIsCreate)
xdbHelper.EndDBHelper();
return model.UpClick.ToString() + "|" + model.DownClick.ToString();
}
int upClick = model.UpClick;
int downClick = model.DownClick;
SlowX.WebLib.Model.UTB_WEB_LOG_HIT
upModel = WebLogHitModelGet
(
curId,
info.FromIP,
SlowX.WebLib.Enums.Table.EmTable.UTB_WEB_CODE_ITEM,
SlowX.WebLib.Enums.LogHitType.EmLogHitType.点赞,
xdbHelper
);
if (upModel != null)
{
// 找到点赞记录 //
if (!isUp)
{
// 点踩要求 //
// 相反逻辑 //
// 不做处理 //
if (bIsCreate)
xdbHelper.EndDBHelper();
return model.UpClick.ToString() + "|" + model.DownClick.ToString();
}
// 删除记录 //
WebLogHitUpdateDeleteById
(
upModel.ID,
xdbHelper
);
if (upClick < 1)
{
if (bIsCreate)
xdbHelper.EndDBHelper();
return model.UpClick.ToString() + "|" + model.DownClick.ToString();
}
// 点赞减一 //
upClick = upClick - 1;
CodeItemUpdateUpDownClick
(
isUp,
model.ID,
upClick,
"",
"",
null,
xdbHelper
);
if (bIsCreate)
xdbHelper.EndDBHelper();
return upClick.ToString() + "|" + downClick.ToString();
}
SlowX.WebLib.Model.UTB_WEB_LOG_HIT
downModel = WebLogHitModelGet
(
curId,
info.FromIP,
SlowX.WebLib.Enums.Table.EmTable.UTB_WEB_CODE_ITEM,
SlowX.WebLib.Enums.LogHitType.EmLogHitType.点踩,
xdbHelper
);
if (downModel != null)
{
// 找到点踩记录 //
if (isUp)
{
if (bIsCreate)
xdbHelper.EndDBHelper();
return model.UpClick.ToString() + "|" + model.DownClick.ToString();
}
// 删除记录 //
WebLogHitUpdateDeleteById
(
downModel.ID,
xdbHelper
);
if (downClick < 1)
{
if (bIsCreate)
xdbHelper.EndDBHelper();
return model.UpClick.ToString() + "|" + model.DownClick.ToString();
}
// 点踩减一 //
downClick = downClick - 1;
CodeItemUpdateUpDownClick
(
isUp,
model.ID,
downClick,
"",
"",
null,
xdbHelper
);
if (bIsCreate)
xdbHelper.EndDBHelper();
return upClick.ToString() + "|" + downClick.ToString();
}
string ipAddress = null;
ipAddress
=
IpAddressUtil.IpAddressReturn(info.FromIP, xdbHelper);
if (ipAddress == null)
{
ipAddress = "-";
}
// 没有找到记录 //
if (isUp)
{
upClick += 1;
CodeItemUpdateUpDownClick
(
isUp,
model.ID,
upClick,
info.FromIP,
ipAddress,
DateTime.Now,
xdbHelper
);
SlowX.WebLib.Business.UTB_WEB_LOG_HIT.instance.InsertLogHit
(
info,
ipAddress,
SlowX.WebLib.Enums.Table.EmTable.UTB_WEB_CODE_ITEM,
SlowX.WebLib.Enums.LogHitType.EmLogHitType.点赞,
model.ID,
upClick,
DateTime.Now,
xdbHelper
);
}
else
{
downClick += 1;
CodeItemUpdateUpDownClick
(
isUp,
model.ID,
downClick,
info.FromIP,
ipAddress,
DateTime.Now,
xdbHelper
);
SlowX.WebLib.Business.UTB_WEB_LOG_HIT.instance.InsertLogHit
(
info,
ipAddress,
SlowX.WebLib.Enums.Table.EmTable.UTB_WEB_CODE_ITEM,
SlowX.WebLib.Enums.LogHitType.EmLogHitType.点踩,
model.ID,
downClick,
DateTime.Now,
xdbHelper
);
}
if (bIsCreate)
xdbHelper.EndDBHelper();
return upClick.ToString() + "|" + downClick.ToString();
}
catch (Exception err)
{
if (bIsCreate)
xdbHelper.TranDBHelper();
throw err;
}
finally
{
if (bIsCreate)
xdbHelper.FinallyDBHelper();
}
}
--| create table 脚本 |--
--+ 创建表(dbo.UTB_WEB_LOG_HIT) |--
create table dbo.UTB_WEB_LOG_HIT
(
ID bigint not null primary key, -- 点击率日志 --
TheName nvarchar(2000) not null, -- 名称 --
EmTableV int not null, -- 所属表 --
EmLogHitTypeV int default 1 not null, -- 日志类型 --
Item_Id bigint not null, -- 所属记录 --
Hits int not null, -- 点击率 --
SessionID nvarchar(255) not null, -- SessionID --
VisitWeb nvarchar(1000), -- 访问页面 --
UrlReferrer nvarchar(1000), -- 来源地址 --
FromIP nvarchar(50), -- 来源IP --
IPAddress nvarchar(1000), -- IP地址 --
BrowserInfo nvarchar(255), -- 浏览器信息 --
BrowserVersion nvarchar(255), -- 浏览器版本 --
ClientLanguage nvarchar(255), -- 语言 --
Platform nvarchar(255), -- 操作系统 --
IsDelete char(1) default 0 not null, -- 是否删除 --
CreateTime datetime default getdate() not null -- 创建时间 --
);
--| create 注释 |--
--+ 创建注释(dbo.UTB_WEB_LOG_HIT) |--
--+ [表]dbo.UTB_WEB_LOG_HIT:点击率日志 |--
EXECUTE sp_addextendedproperty N'MS_Description', N'点击率日志', N'user', N'dbo', N'table', N'UTB_WEB_LOG_HIT', NULL, NULL;
--+ ID:点击率日志 |--
EXECUTE sp_addextendedproperty N'MS_Description', N'点击率日志', N'user', N'dbo', N'table', N'UTB_WEB_LOG_HIT', 'column', 'ID';
--+ TheName:名称 |--
EXECUTE sp_addextendedproperty N'MS_Description', N'名称', N'user', N'dbo', N'table', N'UTB_WEB_LOG_HIT', 'column', 'TheName';
--+ EmTableV:所属表 |--
EXECUTE sp_addextendedproperty N'MS_Description', N'所属表', N'user', N'dbo', N'table', N'UTB_WEB_LOG_HIT', 'column', 'EmTableV';
--+ EmLogHitTypeV:日志类型 |--
EXECUTE sp_addextendedproperty N'MS_Description', N'日志类型', N'user', N'dbo', N'table', N'UTB_WEB_LOG_HIT', 'column', 'EmLogHitTypeV';
--+ Item_Id:所属记录 |--
EXECUTE sp_addextendedproperty N'MS_Description', N'所属记录', N'user', N'dbo', N'table', N'UTB_WEB_LOG_HIT', 'column', 'Item_Id';
--+ Hits:点击率 |--
EXECUTE sp_addextendedproperty N'MS_Description', N'点击率', N'user', N'dbo', N'table', N'UTB_WEB_LOG_HIT', 'column', 'Hits';
--+ SessionID:SessionID |--
EXECUTE sp_addextendedproperty N'MS_Description', N'SessionID', N'user', N'dbo', N'table', N'UTB_WEB_LOG_HIT', 'column', 'SessionID';
--+ VisitWeb:访问页面 |--
EXECUTE sp_addextendedproperty N'MS_Description', N'访问页面', N'user', N'dbo', N'table', N'UTB_WEB_LOG_HIT', 'column', 'VisitWeb';
--+ UrlReferrer:来源地址 |--
EXECUTE sp_addextendedproperty N'MS_Description', N'来源地址', N'user', N'dbo', N'table', N'UTB_WEB_LOG_HIT', 'column', 'UrlReferrer';
--+ FromIP:来源IP |--
EXECUTE sp_addextendedproperty N'MS_Description', N'来源IP', N'user', N'dbo', N'table', N'UTB_WEB_LOG_HIT', 'column', 'FromIP';
--+ IPAddress:IP地址 |--
EXECUTE sp_addextendedproperty N'MS_Description', N'IP地址', N'user', N'dbo', N'table', N'UTB_WEB_LOG_HIT', 'column', 'IPAddress';
--+ BrowserInfo:浏览器信息 |--
EXECUTE sp_addextendedproperty N'MS_Description', N'浏览器信息', N'user', N'dbo', N'table', N'UTB_WEB_LOG_HIT', 'column', 'BrowserInfo';
--+ BrowserVersion:浏览器版本 |--
EXECUTE sp_addextendedproperty N'MS_Description', N'浏览器版本', N'user', N'dbo', N'table', N'UTB_WEB_LOG_HIT', 'column', 'BrowserVersion';
--+ ClientLanguage:语言 |--
EXECUTE sp_addextendedproperty N'MS_Description', N'语言', N'user', N'dbo', N'table', N'UTB_WEB_LOG_HIT', 'column', 'ClientLanguage';
--+ Platform:操作系统 |--
EXECUTE sp_addextendedproperty N'MS_Description', N'操作系统', N'user', N'dbo', N'table', N'UTB_WEB_LOG_HIT', 'column', 'Platform';
--+ IsDelete:是否删除 |--
EXECUTE sp_addextendedproperty N'MS_Description', N'是否删除', N'user', N'dbo', N'table', N'UTB_WEB_LOG_HIT', 'column', 'IsDelete';
--+ CreateTime:创建时间 |--
EXECUTE sp_addextendedproperty N'MS_Description', N'创建时间', N'user', N'dbo', N'table', N'UTB_WEB_LOG_HIT', 'column', 'CreateTime';
--| create SequenceName |--
--+ 创建序列号(seq_web_log_hit) |--
insert into utb_sys_dual (SequenceName, ID, CreateTime, UpdateTime,TableName) values
(
'seq_web_log_hit', 1, getdate(), getdate(),'dbo.UTB_WEB_LOG_HIT'
);