USE [ZCJ20_DB]
GO
/****** Object: StoredProcedure [dbo].[a_Set_PlatformRank] Script Date: 07/27/2016 17:22:08 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*
Desc:设置平台导航排序比重值(统计:平台初始化权重;平台项目数;平台资讯数;平台评论数;平台信息;平台评分;)六项总和所占百分比
Email:1225648393@qq.com
Author:LHB
UpdateDate:2016-07-27 14:45:56.570
QQ:1225648393
*/
ALTER PROCEDURE [dbo].[a_Set_PlatformRank]
AS
DECLARE @PlatformID UNIQUEIDENTIFIER --平台ID
DECLARE @BusinessStatus INT --平台运营状态(运营中(1); 已下线(2);已转型(3);)
DECLARE @UserID INT --用户ID
DECLARE @INITRank INT --1.初始化权重
DECLARE @YunkuNum INT --2.平台项目总数
DECLARE @CommentNum INT --3.平台评论总数
DECLARE @InfoNum INT --4.平台资讯总数
DECLARE @PlantFileds INT --5.平台信息
DECLARE @Scores INT --6.平台评分
DECLARE @PlatformRank DECIMAL(4,3) --所占(各个权重)百分比
DECLARE @MaxYunkuNum INT --所有平台中最大项目总数
DECLARE @MaxCommentNum INT --所有平台中最大项目总数
DECLARE @MaxInfoNum INT --所有平台中最大项目总数
-- 声明平台信息字段
DECLARE @IPC NVARCHAR(MAX)--平台ICP备案号
DECLARE @Scale NVARCHAR(MAX)--公司规模
DECLARE @ServiceQQ NVARCHAR(MAX)--在线客服
DECLARE @CredentialsImgs NVARCHAR(200)--公司证件照
DECLARE @ConditionImgs NVARCHAR(200)--办公环境照
--各个比重所占百分比
DECLARE @INITRankPercent DECIMAL(4,3);
DECLARE @YunkuNumPercent DECIMAL(4,3)
DECLARE @CommentNumPercent DECIMAL(4,3)
DECLARE @InfoNumPercent DECIMAL(4,3)
DECLARE @PlantFiledsPercent DECIMAL(4,3)
DECLARE @ScoresPercent DECIMAL(4,3)
--声明【平台】表变量
DECLARE @tempplatform TABLE
(
[PlatformID] UNIQUEIDENTIFIER,
[BusinessStatus] INT,
[INITRank] INT,
[YunkuNum] INT,
[CommentNum] INT ,
[IPC] NVARCHAR(MAX),--平台ICP备案号
[Scale] NVARCHAR(MAX),--公司规模
[ServiceQQ] NVARCHAR(MAX),--在线客服
[CredentialsImgs] NVARCHAR(200),--公司证件照
[ConditionImgs] NVARCHAR(200)--办公环境照
)
--将源表中的数据插入到变量【平台】表
INSERT @tempplatform
SELECT app.PlatformID,
app.BusinessStatus,
app.INITRank,
app.YunkuNum,
app.CommentNum,
app.IPC, --平台ICP备案号
app.Scale, --公司规模
app.ServiceQQ, --在线客服
(SELECT TOP 1 ami.ImgUrl FROM a_mst_Images AS ami WHERE ami.RefID=app.PlatformID AND ami.ImgType=1) AS CredentialsImgs , --CredentialsImgs 公司证件照
(SELECT TOP 1 ami.ImgUrl FROM a_mst_Images AS ami WHERE ami.RefID=app.PlatformID AND ami.ImgType=2) AS ConditionImgs --ConditionImgs 办公环境照
from a_pro_platform app WITH (NOLOCK);
--获取平台最大项目数量/平台最大的评论数量
SELECT @MaxYunkuNum=MAX(tapp.YunkuNum),@MaxCommentNum=MAX(tapp.CommentNum)
FROM @tempplatform AS tapp
--获取平台中最大平台资讯总数
SELECT TOP 1 @MaxInfoNum=COUNT(1)
FROM a_inf_InfoContent AS aiic WITH (NOLOCK) GROUP BY aiic.BelongToUserID
ORDER BY COUNT(aiic.BelongToUserID) DESC
--循环【平台】临时表
WHILE EXISTS(SELECT [PlatformID] FROM @tempplatform)
BEGIN
SET ROWCOUNT 1
--获取【平台在线状态;平台初始化权重;平台项目数;平台评论数;】
SELECT @PlatformID=tapp.PlatformID,
@BusinessStatus=tapp.BusinessStatus,
@INITRank=tapp.INITRank,
@YunkuNum=tapp.YunkuNum,
@CommentNum=tapp.CommentNum ,
@IPC=tapp.IPC,
@Scale=tapp.Scale,
@ServiceQQ=tapp.ServiceQQ,
@CredentialsImgs=tapp.CredentialsImgs,
@ConditionImgs=tapp.ConditionImgs
FROM @tempplatform AS tapp
--判断平台运营状态(运营中(1); 已下线(2);已转型(3))
IF (@BusinessStatus=2)--如果平台下线,修改“所占(各个权重)总百分比 【PlatformRank= -1】
BEGIN
UPDATE a_pro_platform SET PlatformRank=-1 WHERE PlatformID=@PlatformID
END
ELSE
BEGIN
--统计计算所占(各个权重)百分比
/*Summary:各项所占比重大小概况
1.初始权重(数据部):40%
2.项目数:15%
3.资讯数:15%
4.评论数:10%
5.平台信息:10%
6.评分:10%*/
SET @INITRankPercent=0;--初始权重百分比=(初始化权重值/最大初始化权重值)*40%
SET @YunkuNumPercent=0;--项目数百分比=(项目数量/项目最大数量)*15%
SET @InfoNumPercent=0;--资讯数百分比=(资讯数量/资讯最大数量)*15%
SET @CommentNumPercent=0;--评论数百分比=(评论数量/评论最大数量)*10%
SET @PlantFiledsPercent=0;--平台信息百分比=(选填字段数量/选择字段总数(5))*10%
SET @ScoresPercent=0;--评分百分比=(平方分数/总分数15)*10%
SET @PlatformRank=0;/*--平台(各项总和)百分比=@INITRankPercent
+@YunkuNumPercent
+@CommentNumPercent
+@InfoNumPercent
+@PlantFiledsPercent
+@ScoresPercent*/
--获取平台的用户ID
SELECT @UserID=auue.uid
FROM a_usr_UserExpand AS auue WITH (NOLOCK)
WHERE auue.PlatformId=@PlatformID
--【1】.获取平台初始化权重值(1~100)
----------------------平台初始化权重所占百分比(数据部提供)
--获取平台用户的平台资讯总数
SET @INITRankPercent=CASE WHEN ISNULL(@INITRank,0)=0 THEN 0 ELSE (@INITRank/100)*0.4 END;--(40%比重)
--【2】.获取平台项目总数(项目总数/所有平台中最大项目总数)
--项目数百分比=(项目数量/项目最大数量)*15%
SET @YunkuNumPercent=CASE WHEN ISNULL(@YunkuNum,0)=0 THEN 0 ELSE (@YunkuNum/@MaxYunkuNum)*0.15 END;--(15%比重)
--【3】.获取平台资讯总数
--获取平台用户的平台资讯总数
SELECT @InfoNum=COUNT(1) FROM a_inf_InfoContent AS aiic WITH (NOLOCK) WHERE 1=1 AND aiic.BelongToUserID=@UserID
----------------------平台资讯所占百分比
--评论数百分比=(评论数量/评论最大数量)*10%
SET @InfoNumPercent=CASE WHEN ISNULL(@InfoNum,0)=0 THEN 0 ELSE (@InfoNum/@MaxInfoNum)*0.15 END;--(15%比重)
--【4】.获取平台评论总数(评论总数/所有平台中最大评论总数)
----------------------平台评论所占百分比
--评论数百分比=(评论数量/评论最大数量)*10%
SET @CommentNumPercent=CASE WHEN ISNULL(@CommentNum,0)=0 THEN 0 ELSE (@CommentNum/@MaxCommentNum)*0.1 END;--(10%比重)
--【5】.获取平台信息百分比
---------统计平台信息(选填字段:目前五个)不为空的个数
SET @PlantFileds=0;
--平台ICP备案号
SET @PlantFileds=CASE WHEN ISNULL(@IPC,'')=''THEN 0 ELSE @PlantFileds +1 END;
--公司规模
SET @PlantFileds=CASE WHEN ISNULL(@Scale,'')=''THEN 0 ELSE @PlantFileds +1 END;
--在线客服
SET @PlantFileds=CASE WHEN ISNULL(@ServiceQQ,'')=''THEN 0 ELSE @PlantFileds +1 END;
--公司证件照
SET @PlantFileds=CASE WHEN ISNULL(@CredentialsImgs,'')=''THEN 0 ELSE @PlantFileds +1 END;
--办公环境照
SET @PlantFileds=CASE WHEN ISNULL(@ConditionImgs,'')=''THEN 0 ELSE @PlantFileds +1 END;
----------------平台信息所占百分比
----平台信息百分比=(选填字段数量/选择字段总数5)*10%
SET @PlantFiledsPercent = CASE WHEN ISNULL(@PlantFileds,0)=0 THEN 0 ELSE (@PlantFileds/5)*0.1 END ;--(10%比重)
--【6】.获取评分百分比(0~15分)
--获取并统计评分总数
SELECT @Scores=SUM(CASE WHEN pfr.CommentRuleValue IS NULL THEN 0 ELSE pfr.CommentRuleValue END)
FROM a_cache_PlatformCommentRankPush AS pfr WITH (NOLOCK)
WHERE pfr.PlatformID = @PlatformID
----------------平台评分所占百分比
--评分百分比=(平方分数/总分数15)*10%
SET @ScoresPercent= CASE WHEN ISNULL(@Scores,0)=0 THEN 0 ELSE (@Scores/15)*0.1 END;--(10%比重)
--【7】.统计所占(各个权重相加)总百分比
SET @PlatformRank=@INITRankPercent+@YunkuNumPercent+@CommentNumPercent+@InfoNumPercent+@PlantFiledsPercent+@ScoresPercent
--更新平台表中【统计所占(各个权重相加)百分比】字段
UPDATE a_pro_platform SET PlatformRank=@PlatformRank WHERE PlatformID=@PlatformID
END
SET ROWCOUNT 0
--删除临时表中的使用完的数据
DELETE from @tempplatform where [PlatformID] = @PlatformID
END