NopCommerce上二次开发 触发器记录

最近要在NopCommerce上二次开发。

开发也就算了,该项目的架构设计很好,但性能不可谓不低。

扯远了,为了保持项目以后升级顺利,开次开发不允许在原项目基础上大改,只能以插件形式开发……

因一个功能,不好改代码,所以在数据层用触发器实现。代码记录在此

  1 USE [NopCommerce]
  2 GO
  3 /****** Object:  Trigger [dbo].[InsertAffiliate]    Script Date: 2014/7/22 11:10:03 ******/
  4 SET ANSI_NULLS ON
  5 GO
  6 SET QUOTED_IDENTIFIER ON
  7 GO
  8
  9
 10 -- =============================================
 11 -- Author:        崔大鹏
 12 -- Create date: 2014.7.21
 13 -- Description:    <Description,,> 需要去affiate 的外键关联
 14 -- =============================================
 15 ALTER TRIGGER [dbo].[InsertAffiliate]
 16    ON  [dbo].[Customer]
 17    AFTER INSERT,UPDATE
 18 AS
 19
 20 BEGIN
 21
 22
 23 declare @CustomUserName nvarchar(1000)
 24 select @CustomUserName=inserted.Username from inserted
 25  If (@CustomUserName is not null)
 26   begin
 27    -- print(‘用户名不为空(实注册用户,临时用户不进)
 28 Declare @CustomId int
 29 declare @errno int
 30 DECLARE @AddressId  int
 31 DECLARE @AffiliateId  int
 32
 33 DECLARE @User_FirstName  nvarchar(100)
 34 DECLARE @User_LastName  nvarchar(100)
 35 DECLARE @Company  nvarchar(100)
 36
 37 select @CustomId=inserted.Id from inserted
 38
 39
 40  -- print(‘不存在关联AFF)
 41    if not exists(select 1 from   P_CustomId_AffiliateId P WHERE P.Id=@CustomId)
 42    BEGIN
 43
 44    Begin TransAction
 45
 46    select @AddressId from  CustomerAddresses as Ca WHERE CA.Customer_Id=@CustomId
 47  -- print(‘关联CustomerAddresses 表 查出addressge表的ID
 48
 49  -- print(‘如果没查到,插入一条。ADDRESS 并插入一条关联。
 50 if(@AddressId is null)
 51 begin
 52
 53 --with sr as( select * from GenericAttribute with nolock
 54 --                        where [email protected] and KeyGroup=‘Customer‘
 55 --                        )
 56 --select @User_FirstName=Value from sr
 57 --where sr.[Key]=‘FirstName‘
 58
 59 --select @User_LastName=Value from sr
 60
 61 with sr as(select  case [Key] when ‘FirstName‘ THEN VALUE   END  AS ‘FirstName‘,case [Key] when ‘LastName‘ THEN VALUE   END  AS ‘LastName‘,  case [Key] when ‘Company‘ THEN VALUE   END  AS ‘Company‘
 62    FROM [NopCommerce].[dbo].[GenericAttribute]
 63   where [EntityId]=@CustomId)
 64
 65   select @User_FirstName=STUFF((SELECT ‘,‘ + FirstName
 66          FROM sr AS G2 FOR XML PATH(‘‘)), 1, 1, ‘‘) ,@User_LastName=STUFF((SELECT ‘,‘ + LastName
 67          FROM sr AS G2 FOR XML PATH(‘‘)), 1, 1, ‘‘),@Company= STUFF((SELECT ‘,‘ + Company
 68          FROM sr AS G2 FOR XML PATH(‘‘)), 1, 1, ‘‘)
 69
 70 INSERT INTO [dbo].[Address]
 71            ([FirstName]
 72            ,[LastName]
 73            ,[Email]
 74            ,[Company]
 75            ,[CountryId]
 76            ,[StateProvinceId]
 77            ,[City]
 78            ,[Address1]
 79            ,[Address2]
 80            ,[ZipPostalCode]
 81            ,[PhoneNumber]
 82            ,[FaxNumber]
 83            ,[CreatedOnUtc])
 84      VALUES
 85            (@User_FirstName
 86            ,@User_LastName
 87            ,@CustomUserName
 88            ,@Company
 89            ,NULL
 90            ,NULL
 91            ,‘‘
 92            ,‘‘
 93            ,‘‘
 94            ,‘‘
 95            ,‘‘
 96            ,‘‘
 97            ,GETDATE())
 98 SELECT @AddressId=@@IDENTITY
 99
100 set @errno=@errno+@@error
101
102 INSERT INTO [dbo].[CustomerAddresses]
103            ([Customer_Id]
104            ,[Address_Id])
105      VALUES
106            (@CustomId
107            ,@AddressId)
108 set @errno=@errno+@@error
109 end
110
111  -- print(‘插入Affiliate 以上对ADDRESS表的处理,因为,AFF表有外键关联,ADDRESS无数据,不能INSERT
112 insert into Affiliate  ([AddressId]
113            ,[Deleted]
114            ,[Active])
115            values(@AddressId,0,1)
116 SELECT @AffiliateId=@@IDENTITY
117
118 set @errno=@errno+@@error
119 -- print(‘插入P_CustomId_AffiliateId
120 insert into P_CustomId_AffiliateId
121            values(@CustomId,@AffiliateId)
122
123 set @errno=@errno+@@error
124  If @errno>0
125   begin
126    -- print(‘事务处理失败,回滚事务!‘)
127    rollback TransAction
128   end
129  Else
130   Begin
131    -- print(‘事务处理成功,提交事务!‘)
132    Commit TransAction
133   End
134
135     -- SET NOCOUNT ON added to prevent extra result sets from
136     -- interfering with SELECT statements.
137     SET NOCOUNT ON;
138     -- Insert statements for trigger here
139
140
141
142   end
143
144    END
145
146
147
148 END

NopCommerce上二次开发 触发器记录

时间: 2024-11-08 23:33:43

NopCommerce上二次开发 触发器记录的相关文章

discuzx3.2自定义积分操作日志,discuzx积分二次开发完全记录

详情参考:http://www.infosz.com/forum.php?mod=viewthread&tid=265 1 source\include\spacecp\spacecp_credit.php,分支中加入自己操作的标识(KEY),例如: 2 source\language\lang_spacecp.php 语言包中加入自己操作事件的名称,其中'credit_for_duihuan_gift'为积分日志, 'logs_credit_update_DLP' 积分日志查询类型 例如: 3

jquery easyui根据需求二次开发记录

1.tree需要显示多个图标 实际需求:设备树上节点需搁三个图片,分别标识运行状态.告警状态.设备类型 解决方法:给tree的iconCls传入一个数组,分别是各状态下的class(css),然后要改动easyui关于tree节点组装部分的代码 if(item.iconCls ){ cc.push("<span class=\"tree-icon tree-folder "+(item.iconCls?item.iconCls:"")+"\

踏上Revit二次开发之路 1 准备工作

1 准备工作 工欲善其事,必先利其器.在正式开始之前,我觉得有必要先盘点一下需要准备些什么. 1.1 硬件设备 PC机一台(谢绝Apple). 配置不能太低,至少要i3以上的cpu.4g以上的内存和支持DX11的独立显卡,否则跑不动Revit,建议不低于i5 CPU和8g内存.SSD不是必须品,我敢保证,当你把360.电脑管家和金山毒霸之类装了四五个以后,开机时间肯定会比裸奔的5400转机械硬盘长很多(珍爱生命,远离国产软件全家桶). 1.2 必要软件 1.2.1 64位Windows 7或8操

phpcms程序二次开发记录

1. phpcms/base.php 中的 pc_base 类 静态类,主要加载各个文件使用.2. pc_base 中 load_sys_func 等带 sys的函数,基本都是加载 lib下文件. func加载functions下: class 加载 class下3. pc_base 中 函数一般第一个参数为文件名,第二个参数为路径,第3个参数有一般为:加载类是否实体化4. pc_base 中 load_app开头则为加载modules下的 functions和class等5. 网站开始入口控制

微信二次开发sdk使用教程--手机微信上回复好友的聊天消息通知服务端

微信二次开发sdk使用教程--手机微信上回复好友的聊天消息通知服务端 case WeChatTalkToFriendNotice: {// 手机上回复好友的聊天消息 log.debug("socket:msgtype=WeChatTalkToFriendNotice"); weChatTalkToFriendNoticeHandler.handleMsg(ctx, msgVo); break; } package com.jubotech.framework.netty.handler

[PC]PHPCMS二次开发指南(上)

------------------------------------------------------------------------------------- PHPCMS本身功能已经很完善,自带的模块可用可不用,松耦合特性使其非常适合企业的二次开发. PC的默认路由在 phpcms/caches/configs/route.php 中定义,为content模块下index控制器的init方法 一. PC所有模块都在module目录下,与数据表名字相同: module目录中文件就是控

ODI KM二次开发手册

ODI KM二次开发手册 分类: ODI(16) 目录(?)[+] 1 引言 1.1 编写目的 本手册面向的读者对象为具备数据集成业务知识及对ODI操作了解的开发人员,作为其完成基于ODI基础上KM二次开发的参考手册.详细介绍了如何在ODI上进行KM二次开发,以满足用户数据集成特定场合下的个性化需求. 2 开发模板KM介绍 2.1 KM概述 KM(Knowledge Modules:知识模块)在ODI中是一组代码模板.在集成过程中,每一个KM对应一个特定任务,整个数据集成过程通过选择若干个KM代

Arcengine 二次开发添加右键菜单

最近在搞arcengine 二次开发,遇到了好多问题,也通过网上查资料试着慢慢解决了,把解决的步骤记录下来,有需要帮助的可以看一下,也欢迎各位来批评指正. 想给自己的map application在图层上添加右键菜单,谷歌了一下,找到了解决的方法,原文的地址edndoc.esri.com/arcobjects/9.2/NET/1ED14BF2-A0E3-4e56-A70D-B9A7F7EC7880.htm.然后我根据这个添加了自己的右键菜单,又有一些改动. 效果如图所示(有点简陋),仅仅是简单的

dedecms二次开发:dedesql.class.php 数据库类

dedecms二次开发目录点这个:dedecms二次开发教程目录 系统会自动载入 dedesql.class.php 文件,并用 $dsql = $db = new DedeSql(false); 进行初始化数据库连接,因此在工程所有文件中均不需要单独初始化这个类,可直接用 $dsql 或 $db 进行操作,为了防止错误,操作完后不必关闭数据库. 常用的方法: 1.执行一个非查询类型的SQL语句,如 insert .create .update 等 $rs = $db->ExecuteNoneQ