USE [MiLaiShopTemp]
GO
/****** Object: StoredProcedure [dbo].[StoreElementTransfer] Script Date: 08/03/2016 09:10:15 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
--导入店铺元素[LayerTB] TextElementTB ProductElementTB AdvertElementTB TextLinkElementTB SublineElementTB BlankElement SearchElement
/*广告元素太啰嗦 先不导*/
ALTER PROCEDURE [dbo].[StoreElementTransfer]
AS
declare @www varchar(100)--商户域名
declare @m varchar(100)--页面生成码
declare @t varchar(100)--店铺元素类型
declare @num int--元素顺序 (已废弃该变量)
declare @sort_id int=0
declare @htm varchar(2000)--元素内容
declare @sys varchar(2000)--元素属性?
declare @create_time datetime=getdate()
declare get_attr cursor for
select www,m,t,num,htm,[sys] from [BingSNS_Client].[dbo].[BingSNS_DivID]
BEGIN
begin transaction
open get_attr
fetch next from get_attr into @www,@m,@t,@num,@htm,@sys print('@www:')print(@www)
WHILE @@FETCH_STATUS = 0
begin
--根据商户域名获取StoreId
declare @store_id int=0
declare get_store_id cursor for
select ID from [MiLaiShopTemp].[dbo].[StoreTB]
where www=@www
open get_store_id
fetch get_store_id into @store_id --print('@store_id:')print(@store_id)
close get_store_id
DEALLOCATE get_store_id
--根据店铺ID和页面生成码获取PageID
declare @page_id int=0
declare get_page_id cursor for
select id from [MiLaiShopTemp].[dbo].[PageTB]
where StoreTBID=@store_id and GuidNumber=@m
open get_page_id
fetch get_page_id into @page_id
close get_page_id
DEALLOCATE get_page_id
/*插入元素楼层表及元素表*/
declare @element_name varchar(100)
declare @layer_id int=0
--------------------------------测试通过--------------------------------
if @t=1 --文本元素
begin
--获取楼层最大序号
set @sort_id=[MiLaiShopTemp].[dbo].[GetMaxSortIdFromLayerTBByPageId](@page_id) --获取装修页楼层的最大排序号
if (ISNULL(@sort_id,0)=0)
set @sort_id=1
else
set @sort_id=@sort_id+1
--1.插入楼层表
set @element_name='文本元素'
insert into [MiLaiShopTemp].[dbo].[LayerTB]
(PageTBID,SortID,CreateTime,ElementName)
values
(@page_id,@sort_id,@create_time,@element_name)
--获取刚插入的楼层表的ID
declare get_layer_id cursor for
SELECT TOP 1 [ID]
FROM [MiLaiShopTemp].[dbo].[LayerTB]
order by ID desc
open get_layer_id
fetch get_layer_id into @layer_id
close get_layer_id
DEALLOCATE get_layer_id
--2.文本元素表
insert into [MiLaiShopTemp].[dbo].[TextElementTB]
([Text],LayerTBID,CreateTime)
values
(@htm,@layer_id,@create_time)
end
--------------------------测试通过------------------------------------------
if @t=2 --商品元素
begin
print('商品元素')
--2.商品元素表
declare @display_number int=0--显示数量
declare @product_id_list varchar(1000)=''--商品id列表 ,123,22,135,
declare @product_type int=0--商品类别
declare @display_type int=0--显示类型
declare @is_display_price bit--是否显示价格
declare @is_display_title bit--是否显示标题
--解析变量@htm @sys
/* 图片元素信息htm:
14123|10|商品名称|http://test002.ddomi.com/UploadFiles/UserData/test002/image/20160421/20160421145165756575.jpg
$$$
206|0|【测试】面膜|http://test002.ddomi.com/UploadFiles/UserData/test002/image/20160421/20160421145247264726.jpg
$$$
14126|10|商品名称|http://test002.ddomi.com/UploadFiles/UserData/test002/image/20160421/20160421145165756575.jpg
元素属性sys:
0|0|0 大图
1|0|0 小图
2|0|0 一大两小
2|1|0 显示名称
2|1|1 显示价格
我们先解析元素属性sys,在去解析图片元素信息
1.大图:每一张作为一个楼层
2.小图:每两张作为一个楼层
3.一大两小:一大作为一个楼层 两小最为一个楼层
*/
declare @sys_1 varchar(100)=[MiLaiShopTemp].[dbo].[GetElementByIndex](@sys,'|',1)--获取显示类型
if ISNUMERIC(@sys_1)=1
set @display_type=convert(int,@sys_1)
else
begin
set @display_type=-1
print('商品元素显示类型异常')
end
--是否显示价格
if [MiLaiShopTemp].[dbo].[GetElementByIndex](@sys,'|',3)=1
set @is_display_price=1
else
set @is_display_price=0
--是否显示名称
if [MiLaiShopTemp].[dbo].[GetElementByIndex](@sys,'|',2)=1
set @is_display_title=1
else
set @is_display_title=0
set @product_type=0
declare @product_id varchar(100) --图片元素中商品ID
declare @element_index int=1--htm中元素的索引值
declare @element varchar(1000)--图片元素
print('@display_type') print(@display_type)
--1.大图---------------------------测试通过-----------------------------------
if @display_type=0
begin
set @element=[MiLaiShopTemp].[dbo].[GetElementByIndex](@htm,'$$$',@element_index)
while(ISNULL(@element,'')!='')
begin
set @sort_id=[MiLaiShopTemp].[dbo].[GetMaxSortIdFromLayerTBByPageId](@page_id) --获取装修页楼层的最大排序号
if (ISNULL(@sort_id,0)=0)
set @sort_id=1
else
set @sort_id=@sort_id+1
--插入楼层表
set @element_name='商品元素'
insert into [MiLaiShopTemp].[dbo].[LayerTB]
(PageTBID,SortID,CreateTime,ElementName)
values
(@page_id,@sort_id,@create_time,@element_name)
--获取刚插入的楼层表的ID
declare get_layer_id cursor for
SELECT TOP 1 [ID]
FROM [MiLaiShopTemp].[dbo].[LayerTB]
order by ID desc
open get_layer_id
fetch get_layer_id into @layer_id
close get_layer_id
DEALLOCATE get_layer_id
set @product_id_list=','
set @product_id=SUBSTRING(@element,1,CHARINDEX('|',@element)-1)--获取图片元素的属性产品Id
print('@product_id') print(@product_id)
set @product_id_list=@product_id_list+@product_id+','
set @display_number=1
set @element_index=@element_index+1
set @element=[MiLaiShopTemp].[dbo].[GetElementByIndex](@htm,'$$$',@element_index)
insert into [MiLaiShopTemp].[dbo].[ProductElementTB]
(LayerTBID,DisplayNumber,ProductIDList,DisplayType,IsDisplayPrice,IsDisplayTitle,CreateTime,ProductType)
values
(@layer_id,@display_number,@product_id_list,@display_type,@is_display_price,@is_display_title,@create_time,@product_type)
end
end
--2.小图------------------------测试通过---------------------------------
if @display_type=1
begin
set @element=[MiLaiShopTemp].[dbo].[GetElementByIndex](@htm,'$$$',@element_index)
print('@element:'+@element)
while(ISNULL(@element,'')!='')
begin
set @product_id=SUBSTRING(@element,1,CHARINDEX('|',@element)-1)--获取图片元素的属性产品Id
if @element_index%2=1
begin
set @product_id_list=','
set @product_id_list=@product_id_list+@product_id+','
end
else--索引值为2的时候,存数据到表中
begin
print('------------------1------------------------')
set @sort_id=[MiLaiShopTemp].[dbo].[GetMaxSortIdFromLayerTBByPageId](@page_id) --获取装修页楼层的最大排序号
if (ISNULL(@sort_id,0)=0)
set @sort_id=1
else
set @sort_id=@sort_id+1
--插入楼层表
set @element_name='商品元素'
insert into [MiLaiShopTemp].[dbo].[LayerTB]
(PageTBID,SortID,CreateTime,ElementName)
values
(@page_id,@sort_id,@create_time,@element_name)
--获取刚插入的楼层表的ID
declare get_layer_id cursor for
SELECT TOP 1 [ID]
FROM [MiLaiShopTemp].[dbo].[LayerTB]
order by ID desc
open get_layer_id
fetch get_layer_id into @layer_id
close get_layer_id
DEALLOCATE get_layer_id
set @product_id_list=@product_id_list+@product_id+','
set @display_number=2
insert into [MiLaiShopTemp].[dbo].[ProductElementTB]
(LayerTBID,DisplayNumber,ProductIDList,DisplayType,IsDisplayPrice,IsDisplayTitle,CreateTime,ProductType)
values
(@layer_id,@display_number,@product_id_list,@display_type,@is_display_price,@is_display_title,@create_time,@product_type)
end
set @element_index=@element_index+1--索引值+1
set @element=[MiLaiShopTemp].[dbo].[GetElementByIndex](@htm,'$$$',@element_index)
--索引值为奇数时,且该索引值的元素不为空,且该索引值的元素的下一个元素为空时也要存数据到表中
if (@element_index%2=1 and (ISNULL(@element,'')!=''))
begin
print('------------------2------------------------')
declare @element_next varchar(1000)--第奇数个元素的下一个元素
set @element_next=[MiLaiShopTemp].[dbo].[GetElementByIndex](@htm,'$$$',@element_index+1)
--print('@element_next:'+@element_next)
if (ISNULL(@element_next,'')='')
begin
set @product_id=SUBSTRING(@element,1,CHARINDEX('|',@element)-1)--获取图片元素的属性产品Id
set @product_id_list=','
set @product_id_list=@product_id_list+@product_id+','
set @sort_id=[MiLaiShopTemp].[dbo].[GetMaxSortIdFromLayerTBByPageId](@page_id) --获取装修页楼层的最大排序号
if (ISNULL(@sort_id,0)=0)
set @sort_id=1
else
set @sort_id=@sort_id+1
--插入楼层表
set @element_name='商品元素'
insert into [MiLaiShopTemp].[dbo].[LayerTB]
(PageTBID,SortID,CreateTime,ElementName)
values
(@page_id,@sort_id,@create_time,@element_name)
--获取刚插入的楼层表的ID
declare get_layer_id cursor for
SELECT TOP 1 [ID]
FROM [MiLaiShopTemp].[dbo].[LayerTB]
order by ID desc
open get_layer_id
fetch get_layer_id into @layer_id
close get_layer_id
DEALLOCATE get_layer_id
set @display_number=1
insert into [MiLaiShopTemp].[dbo].[ProductElementTB]
(LayerTBID,DisplayNumber,ProductIDList,DisplayType,IsDisplayPrice,IsDisplayTitle,CreateTime,ProductType)
values
(@layer_id,@display_number,@product_id_list,@display_type,@is_display_price,@is_display_title,@create_time,@product_type)
end
end
end
end
---------------------------测试通过--------------------------
--3.一大两小
if @display_type=2
begin
set @element=[MiLaiShopTemp].[dbo].[GetElementByIndex](@htm,'$$$',@element_index)
print('@element:'+@element)
while(ISNULL(@element,'')!='')
begin
set @product_id=SUBSTRING(@element,1,CHARINDEX('|',@element)-1)--获取图片元素的属性产品Id
if @element_index%3=1--第一张图作为大图
begin
set @product_id_list=','
set @product_id_list=@product_id_list+@product_id+','
set @sort_id=[MiLaiShopTemp].[dbo].[GetMaxSortIdFromLayerTBByPageId](@page_id) --获取装修页楼层的最大排序号
if (ISNULL(@sort_id,0)=0)
set @sort_id=1
else
set @sort_id=@sort_id+1
--插入楼层表
set @element_name='商品元素'
insert into [MiLaiShopTemp].[dbo].[LayerTB]
(PageTBID,SortID,CreateTime,ElementName)
values
(@page_id,@sort_id,@create_time,@element_name)
--获取刚插入的楼层表的ID
declare get_layer_id cursor for
SELECT TOP 1 [ID]
FROM [MiLaiShopTemp].[dbo].[LayerTB]
order by ID desc
open get_layer_id
fetch get_layer_id into @layer_id
close get_layer_id
DEALLOCATE get_layer_id
set @display_number=1
insert into [MiLaiShopTemp].[dbo].[ProductElementTB]
(LayerTBID,DisplayNumber,ProductIDList,DisplayType,IsDisplayPrice,IsDisplayTitle,CreateTime,ProductType)
values
(@layer_id,@display_number,@product_id_list,@display_type,@is_display_price,@is_display_title,@create_time,@product_type)
end
---------------------------------
if @element_index%3=2--第二张图作为小图
begin
set @product_id_list=','
set @product_id_list=@product_id_list+@product_id+','
end
--------------------------------------
if @element_index%3=0--第三张图作为小图
begin
set @sort_id=[MiLaiShopTemp].[dbo].[GetMaxSortIdFromLayerTBByPageId](@page_id) --获取装修页楼层的最大排序号
if (ISNULL(@sort_id,0)=0)
set @sort_id=1
else
set @sort_id=@sort_id+1
--插入楼层表
set @element_name='商品元素'
insert into [MiLaiShopTemp].[dbo].[LayerTB]
(PageTBID,SortID,CreateTime,ElementName)
values
(@page_id,@sort_id,@create_time,@element_name)
--获取刚插入的楼层表的ID
declare get_layer_id cursor for
SELECT TOP 1 [ID]
FROM [MiLaiShopTemp].[dbo].[LayerTB]
order by ID desc
open get_layer_id
fetch get_layer_id into @layer_id
close get_layer_id
DEALLOCATE get_layer_id
set @product_id_list=@product_id_list+@product_id+','
set @display_number=2
insert into [MiLaiShopTemp].[dbo].[ProductElementTB]
(LayerTBID,DisplayNumber,ProductIDList,DisplayType,IsDisplayPrice,IsDisplayTitle,CreateTime,ProductType)
values
(@layer_id,@display_number,@product_id_list,@display_type,@is_display_price,@is_display_title,@create_time,@product_type)
end
set @element_index=@element_index+1--索引值+1
set @element=[MiLaiShopTemp].[dbo].[GetElementByIndex](@htm,'$$$',@element_index)
--特殊情况,小图只有一张时单独建个楼层
if (@element_index%3=2 and (ISNULL(@element,'')!=''))
begin
declare @element_next1 varchar(1000)--第奇数个元素的下一个元素
set @element_next1=[MiLaiShopTemp].[dbo].[GetElementByIndex](@htm,'$$$',@element_index+1)
--print('@element_next:'+@element_next)
if (ISNULL(@element_next1,'')='')
begin
set @product_id=SUBSTRING(@element,1,CHARINDEX('|',@element)-1)--获取图片元素的属性产品Id
set @product_id_list=','
set @product_id_list=@product_id_list+@product_id+','
set @sort_id=[MiLaiShopTemp].[dbo].[GetMaxSortIdFromLayerTBByPageId](@page_id) --获取装修页楼层的最大排序号
if (ISNULL(@sort_id,0)=0)
set @sort_id=1
else
set @sort_id=@sort_id+1
--插入楼层表
set @element_name='商品元素'
insert into [MiLaiShopTemp].[dbo].[LayerTB]
(PageTBID,SortID,CreateTime,ElementName)
values
(@page_id,@sort_id,@create_time,@element_name)
--获取刚插入的楼层表的ID
declare get_layer_id cursor for
SELECT TOP 1 [ID]
FROM [MiLaiShopTemp].[dbo].[LayerTB]
order by ID desc
open get_layer_id
fetch get_layer_id into @layer_id
close get_layer_id
DEALLOCATE get_layer_id
set @display_number=1
insert into [MiLaiShopTemp].[dbo].[ProductElementTB]
(LayerTBID,DisplayNumber,ProductIDList,DisplayType,IsDisplayPrice,IsDisplayTitle,CreateTime,ProductType)
values
(@layer_id,@display_number,@product_id_list,@display_type,@is_display_price,@is_display_title,@create_time,@product_type)
end
end
end
end
end
-------------------------------测试成功-------------------------------
if @t=5 --文本链接元素( 文本链接 5 click|V1001_ABOUT lianjiemingchen|1 )
begin
--获取楼层最大序号
set @sort_id=[MiLaiShopTemp].[dbo].[GetMaxSortIdFromLayerTBByPageId](@page_id) --获取装修页楼层的最大排序号
if (ISNULL(@sort_id,0)=0)
set @sort_id=1
else
set @sort_id=@sort_id+1
--1.插入楼层表
set @element_name='文本链接元素'
insert into [MiLaiShopTemp].[dbo].[LayerTB]
(PageTBID,SortID,CreateTime,ElementName)
values
(@page_id,@sort_id,@create_time,@element_name)
--获取刚插入的楼层表的ID(理论上一定有值的)
declare get_layer_id cursor for
SELECT TOP 1 [ID]
FROM [MiLaiShopTemp].[dbo].[LayerTB]
order by ID desc
open get_layer_id
fetch get_layer_id into @layer_id
close get_layer_id
DEALLOCATE get_layer_id
--存入文本链接元素信息到表中
declare @link_name varchar(1000)--链接名称
declare @link_type int=0--链接类别
declare @link_type_str varchar(1000)--链接类别(记录老米来的文本链接元素链接类别)
declare @link varchar(1000) --链接内容
set @link_name=[MiLaiShopTemp].[dbo].[GetElementByIndex](@sys,'|',1)
set @link=[MiLaiShopTemp].[dbo].[GetElementByIndex](@htm,'|',2)
set @link_type_str= [MiLaiShopTemp].[dbo].[GetElementByIndex](@sys,'|',2)
if @link_type_str=2 set @link_type=1
if @link_type_str=3 set @link_type=3
if @link_type_str=4 set @link_type=4
if @link_type_str=5 set @link_type=5
insert into [MiLaiShopTemp].[dbo].[TextLinkElementTB]
(LayerTBID,LinkName,LinkType,Link,CreateTime)
values
(@layer_id,@link_name,@link_type,@link,@create_time)
end
------------------------测试通过---------------------------------
if @t=8 --辅助线元素
begin
--获取楼层最大序号
set @sort_id=[MiLaiShopTemp].[dbo].[GetMaxSortIdFromLayerTBByPageId](@page_id) --获取装修页楼层的最大排序号
if (ISNULL(@sort_id,0)=0)
set @sort_id=1
else
set @sort_id=@sort_id+1
--1.插入楼层表
set @element_name='辅助线元素'
insert into [MiLaiShopTemp].[dbo].[LayerTB]
(PageTBID,SortID,CreateTime,ElementName)
values
(@page_id,@sort_id,@create_time,@element_name)
--获取刚插入的楼层表的ID(理论上一定有值的)
declare get_layer_id cursor for
SELECT TOP 1 [ID]
FROM [MiLaiShopTemp].[dbo].[LayerTB]
order by ID desc
open get_layer_id
fetch get_layer_id into @layer_id
close get_layer_id
DEALLOCATE get_layer_id
--存入下划线元素信息到表中
declare @color varchar(100) --颜色
declare @subline_type int=2--默认直线
declare @margin_top_and_bottom int=10--上下间距
declare @subline_height int=1 --辅助线高度
set @color=@htm
insert into [MiLaiShopTemp].[dbo].[SublineElementTB]
(LayerTBID,Color,CreateTime,SublineType,MarginTopAndBottom,SublineHeight)
values
(@layer_id,@color,@create_time,@subline_type,@margin_top_and_bottom,@subline_height)
end
---------------------------------------------------------------
if @t=9 --辅助空白元素
begin
--获取楼层最大序号
set @sort_id=[MiLaiShopTemp].[dbo].[GetMaxSortIdFromLayerTBByPageId](@page_id) --获取装修页楼层的最大排序号
if (ISNULL(@sort_id,0)=0)
set @sort_id=1
else
set @sort_id=@sort_id+1
--1.插入楼层表
set @element_name='辅助线元素'
insert into [MiLaiShopTemp].[dbo].[LayerTB]
(PageTBID,SortID,CreateTime,ElementName)
values
(@page_id,@sort_id,@create_time,@element_name)
--获取刚插入的楼层表的ID(理论上一定有值的)
declare get_layer_id cursor for
SELECT TOP 1 [ID]
FROM [MiLaiShopTemp].[dbo].[LayerTB]
order by ID desc
open get_layer_id
fetch get_layer_id into @layer_id
close get_layer_id
DEALLOCATE get_layer_id
--存入辅助空白元素信息到表中
declare @color_blank varchar(100) --颜色
declare @height varchar(100)--高度
set @color_blank=[MiLaiShopTemp].[dbo].[GetElementByIndex](@htm,'|',2)
set @height=[MiLaiShopTemp].[dbo].[GetElementByIndex](@htm,'|',1)
if ISNUMERIC(@height)=1
begin
insert into [MiLaiShopTemp].[dbo].[BlankElementTB]
(LayerTBID,Color,Height,CreateTime)
values
(@layer_id,@color_blank,@height,@create_time)
end
end
-----------------------测试通过----------------------------
if @t=7--搜索框元素
begin
--获取楼层最大序号
set @sort_id=[MiLaiShopTemp].[dbo].[GetMaxSortIdFromLayerTBByPageId](@page_id) --获取装修页楼层的最大排序号
if (ISNULL(@sort_id,0)=0)
set @sort_id=1
else
set @sort_id=@sort_id+1
--1.插入楼层表
set @element_name='搜索框元素'
insert into [MiLaiShopTemp].[dbo].[LayerTB]
(PageTBID,SortID,CreateTime,ElementName)
values
(@page_id,@sort_id,@create_time,@element_name)
--获取刚插入的楼层表的ID(理论上一定有值的)
declare get_layer_id cursor for
SELECT TOP 1 [ID]
FROM [MiLaiShopTemp].[dbo].[LayerTB]
order by ID desc
open get_layer_id
fetch get_layer_id into @layer_id
close get_layer_id
DEALLOCATE get_layer_id
--存入搜索框元素信息到表中
declare @border_color varchar(100) --边框颜色
set @border_color=[MiLaiShopTemp].[dbo].[GetElementByIndex](@htm,'|',1)
insert into [MiLaiShopTemp].[dbo].[SearchElementTB]
(LayerTBID,BorderColor,CreateTime)
values
(@layer_id,@border_color,@create_time)
end
fetch next from get_attr into @www,@m,@t,@num,@htm,@sys
end
close get_attr
commit transaction
END