<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom"><title type="text">博客园_极地银狐.NET</title><subtitle type="text"/><id>http://feed.cnblogs.com/blog/u/14616/rss</id><updated>2010-02-23T01:30:47Z</updated><author><name>极地银狐.NET</name><uri>http://www.cnblogs.com/dingsea/</uri></author><generator>CNBlogs BlogServer</generator><link rel="alternate" type="text/html" href="http://www.cnblogs.com/dingsea/"/><link rel="self" type="application/atom+xml" href="http://feed.cnblogs.com/blog/u/14616/rss"/><entry><id>http://www.cnblogs.com/dingsea/archive/2010/02/23/1671670.html</id><title type="text">为nopcommerce自定义用户积分功能(2)</title><summary type="text">nopcommerce的总体架构我们就不多说了，从WEB到逻辑再到数据库访问都有地方要修改，本文主要演示逻辑和数据库访问的修改，Web界面上的后边会提到如何调用。</summary><published>2010-02-23T01:31:00Z</published><updated>2010-02-23T01:31:00Z</updated><author><name>极地银狐.NET</name><uri>http://www.cnblogs.com/dingsea/</uri></author><link rel="alternate" href="http://www.cnblogs.com/dingsea/archive/2010/02/23/1671670.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/dingsea/archive/2010/02/23/1671670.html"/><content type="html">&lt;p&gt;&lt;strong&gt;&lt;em&gt;由于此功能为定制功能，所以不方便把所有代码都发上来，而且功能或许还有BUG，有兴趣的同学可以一起研究，大家也可以访问中文站www.nopchina.com或者 www.nopcommerce.org或者加入QQ群101675096一起讨论。&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;p&gt;积分功能第二部，不了解情况的可以先看看&lt;a target="_blank" href="http://www.dingsea.com/?p=120"&gt;第一部&lt;/a&gt;&lt;/p&gt; &lt;p&gt;nopcommerce的总体架构我们就不多说了，从WEB到逻辑再到数据库访问都有地方要修改，本文主要演示逻辑和数据库访问的修改，Web界面上的后边会提到如何调用。&lt;/p&gt; &lt;p&gt;首先我们有一个新的reward point provider,那么在web.config的sectionGroup里要加上：&amp;lt;section name=&amp;#8221;RewardProvider&amp;#8221; type=&amp;#8221;NopSolutions.NopCommerce.DataAccess.DBProviderSection, Nop.DataAccess&amp;#8221; requirePermission=&amp;#8221;false&amp;#8221;/&amp;gt;&lt;/p&gt; &lt;p&gt;在nopDataProviders的最后也要加上：&lt;/p&gt; &lt;p&gt;&amp;lt;RewardProvider defaultProvider=&amp;#8221;SQLRewardProvider&amp;#8221;&amp;gt;&lt;br /&gt; &amp;lt;providers&amp;gt;&lt;br /&gt; &amp;lt;add name=&amp;#8221;SQLRewardProvider&amp;#8221; type=&amp;#8221;NopSolutions.NopCommerce.DataAccess.Promo.SQLRewardProvider, Nop.DataAccess.SqlServer&amp;#8221; connectionStringName=&amp;#8221;NopSqlConnection&amp;#8221;/&amp;gt;&lt;br /&gt; &amp;lt;/providers&amp;gt;&lt;br /&gt; &amp;lt;/RewardProvider&amp;gt;&lt;/p&gt; &lt;p&gt;NopContext里也要加个字段用来保存当前session下的积分值：&lt;/p&gt; &lt;p&gt;public decimal RewardPoint&lt;br /&gt; {&lt;br /&gt; get {&lt;br /&gt; if (HttpContext.Current.Session["RewardPoint"] == null)&lt;br /&gt; return decimal.Zero;&lt;/p&gt; &lt;p&gt;decimal ret = decimal.Zero;&lt;br /&gt; if (decimal.TryParse(HttpContext.Current.Session["RewardPoint"].ToString(), out ret))&lt;br /&gt; return ret;&lt;br /&gt; else&lt;br /&gt; return decimal.Zero;&lt;br /&gt; }&lt;br /&gt; set&lt;br /&gt; {&lt;br /&gt; HttpContext.Current.Session["RewardPoint"] = value;&lt;br /&gt; }&lt;br /&gt; }&lt;/p&gt; &lt;p&gt;现在再来看数据库抽象接口的代码，各个方法什么意思想必大家一看就懂：&lt;/p&gt; &lt;p&gt;namespace NopSolutions.NopCommerce.DataAccess.Promo&lt;br /&gt; {&lt;br /&gt; [DBProviderSectionName("nopDataProviders/RewardProvider")]&lt;br /&gt; public abstract partial class DBRewardProvider : BaseDBProvider&lt;br /&gt; {&lt;br /&gt; public abstract bool RewardCalculation(decimal point, int customerID, int orderid, string details);&lt;br /&gt; public abstract DBCustomerCollection CustomerRewardList();&lt;br /&gt; public abstract DBRewardAuditCollection GetAllAuditList(DateTime from, DateTime to);&lt;br /&gt; public abstract DBRewardAuditCollection GetAuditByOrderID(DateTime from, DateTime to, int OrderID);&lt;br /&gt; public abstract bool RewardPointSetTo(decimal point, int customerID, string details);&lt;br /&gt; }&lt;br /&gt; }&lt;/p&gt; &lt;p&gt;DBRewardAudit的定义：&lt;/p&gt; &lt;p&gt;namespace NopSolutions.NopCommerce.DataAccess.Promo&lt;br /&gt; {&lt;br /&gt; public partial class DBRewardAudit : BaseDBEntity&lt;br /&gt; {&lt;br /&gt; public int RewardID { get; set; }&lt;br /&gt; public int OrderID { get; set; }&lt;br /&gt; public DateTime RewardTime { get; set; }&lt;br /&gt; public string Status { get; set; }&lt;br /&gt; public decimal Amount { get; set; }&lt;br /&gt; public string RewardDetails { get; set; }&lt;br /&gt; }&lt;br /&gt; }&lt;/p&gt; &lt;p&gt;按照标配来说还得要个DBRewardAuditCollection，我形式上加了这个文件，但没实质内容，如果管理员要求在登录网店后看到历史记录，可以用这个。&lt;/p&gt; &lt;p&gt;数据层的DBCustomer还要加上个RewardPoint属性：&lt;/p&gt; &lt;p&gt;namespace NopSolutions.NopCommerce.DataAccess.CustomerManagement&lt;br /&gt; {&lt;br /&gt; public partial class DBCustomer : BaseDBEntity&lt;br /&gt; {&lt;br /&gt; public decimal RewardPoint { get; set; }&lt;br /&gt; }&lt;br /&gt; }&lt;/p&gt; &lt;p&gt;数据库层的UpdateCustomer方法的参数要修改，把reward point属性传进去，SQL里update的时候也能更新积分,在这儿就省略了。DBOrder也要加同样的public decimal RewardPoint { get; set; }属性。InsertOrder方法也要把RewardPoint包含进来。&lt;/p&gt; &lt;p&gt;具体的数据访问层，我这儿有个SQLRewardProvider.cs供参考。&lt;a target="_blank" onclick="javascript:pageTracker._trackPageview('/downloads/wp-content/uploads/2010/02/SQLRewardProvider.zip');" href="http://www.dingsea.com/wp-content/uploads/2010/02/SQLRewardProvider.zip"&gt;SQLRewardProvider&lt;/a&gt;&lt;/p&gt; &lt;p&gt;然后再看看业务逻辑层的RewardManager.cs，&lt;a target="_blank" onclick="javascript:pageTracker._trackPageview('/downloads/wp-content/uploads/2010/02/RewardManager.zip');" href="http://www.dingsea.com/wp-content/uploads/2010/02/RewardManager.zip"&gt;RewardManager&lt;/a&gt;，简单的代码，就不用再描述了。&lt;/p&gt; &lt;p&gt;OK到这儿大部分接口已经实现了，只等客户端代码调用了，所有的逻辑层，web层的代码都可以称为客户端代码，那么我们来试试下订单后消耗积分的情况。OrderManager.cs 中的PlaceOrder,&lt;/p&gt; &lt;p&gt;&amp;#8230;.&lt;/p&gt; &lt;p&gt;Order order = InsertOrder(OrderGuid,&amp;nbsp;&amp;nbsp;&amp;nbsp; //这儿注意，用刚才修改过的方法，把积分传进去。&lt;/p&gt; &lt;p&gt;&amp;#8230;.&lt;/p&gt; &lt;p&gt;等有了OrderID = order.OrderID;这句，订单也生成了，那么就要扣掉相应的积分了，直接在这句后边加上：&lt;/p&gt; &lt;p&gt;//reward function&lt;br /&gt; if (NopContext.Current.RewardPoint &amp;gt; customer.RewardPoint)//reward point cannot greater than customer&amp;#8217;s point.&lt;br /&gt; NopContext.Current.RewardPoint = customer.RewardPoint;&lt;/p&gt; &lt;p&gt;if (OrderID &amp;gt;= 0 &amp;amp;&amp;amp; NopContext.Current.RewardPoint &amp;gt; decimal.Zero)//success, deduct reward points&lt;br /&gt; RewardManager.RewardCalculation(decimal.Zero &amp;#8211; NopContext.Current.RewardPoint, customer.CustomerID, OrderID,&amp;#8221;Order placed with &amp;#8221; + RewardManager.RewardName + NopContext.Current.RewardPoint.ToString());&lt;/p&gt; &lt;p&gt;然后再接着往下走找到SendOrderPlacedStoreOwnerNotification和SendOrderPlacedCustomerNotification，里边的方法改改，让email可以支持reward point的消息：&lt;/p&gt; &lt;p&gt;首先要定义这些消息的token是什么，在GetListOfAllowedTokens里添加：&lt;/p&gt; &lt;p&gt;//added comments and reward points &amp;#8211; by dingsea:&lt;br /&gt; allowedTokens.Add(&amp;#8220;%Order.RewardPointApplied%&amp;#8221;);&lt;br /&gt; allowedTokens.Add(&amp;#8220;%Customer.CurrentRewardPoint%&amp;#8221;);&lt;br /&gt; allowedTokens.Add(&amp;#8220;%Customer.WinRewardPoint%&amp;#8221;);&lt;br /&gt; allowedTokens.Add(&amp;#8220;%Settings.RewardName%&amp;#8221;);&lt;br /&gt; //ends here.&lt;/p&gt; &lt;p&gt;ReplaceMessageTemplateTokens里加上如下字段以方便在正则替换的时候找到对应的文字：&lt;/p&gt; &lt;p&gt;//added: dingsea&lt;br /&gt; tokens.Add(&amp;#8220;Order.RewardPointApplied&amp;#8221;, HttpUtility.HtmlEncode(order.RewardPoint.ToString(&amp;#8220;N2&amp;#8243;)));&lt;br /&gt; tokens.Add(&amp;#8220;Customer.WinRewardPoint&amp;#8221;,HttpUtility.HtmlEncode((order.OrderTotal * RewardManager.RewardPercentage).ToString(&amp;#8220;N2&amp;#8243;)));&lt;br /&gt; tokens.Add(&amp;#8220;Customer.CurrentRewardPoint&amp;#8221;,HttpUtility.HtmlEncode(NopContext.Current.User.RewardPoint.ToString(&amp;#8220;N2&amp;#8243;)));&lt;br /&gt; tokens.Add(&amp;#8220;Settings.RewardName&amp;#8221;,HttpUtility.HtmlEncode(RewardManager.RewardName));&lt;/p&gt; &lt;p&gt;既然都到这里了，那也把nopcommerce的一个小BUG也补上：&lt;/p&gt; &lt;p&gt;ProductListToHtmlTable方法中没有打折信息（在order details页面也有同样问题，同学们自行加上吧），所以我把打折和积分信息一起加上了：&lt;/p&gt; &lt;p&gt;//fixed by dingsea &amp;#8211; discount is missing&lt;br /&gt; string CusDiscount = string.Empty;&lt;br /&gt; string CusRewardPoint = string.Empty;&lt;/p&gt; &lt;p&gt;&amp;#8230;&amp;#8230;&lt;/p&gt; &lt;p&gt;//fixed by dingsea &amp;#8211; discount and reward point&lt;br /&gt; CusDiscount = order.OrderDiscount == decimal.Zero ? string.Empty : PriceHelper.FormatPrice(order.OrderDiscount, true, order.CustomerCurrencyCode, language, false);&lt;br /&gt; CusRewardPoint = order.RewardPoint.ToString(&amp;#8220;N2&amp;#8243;);&lt;/p&gt; &lt;p&gt;&amp;#8230;&amp;#8230;.&lt;/p&gt; &lt;p&gt;//fixed by dingsea &amp;#8211; discount and reward point&lt;br /&gt; if(CusDiscount!=string.Empty)&lt;br /&gt; sb.AppendLine(&amp;#8220;&amp;lt;tr&amp;gt;&amp;lt;td style=\&amp;#8221;text-align:right;\&amp;#8221; colspan=\&amp;#8221;3\&amp;#8221;&amp;gt;&amp;lt;strong&amp;gt;&amp;#8221; + LocalizationManager.GetLocaleResourceString(&amp;#8220;ShoppingCart.Sub-TotalDiscount&amp;#8221;, LanguageID) + &amp;#8220;&amp;lt;/strong&amp;gt;&amp;lt;/td&amp;gt; &amp;lt;td style=\&amp;#8221;text-align:right;\&amp;#8221;&amp;gt;&amp;lt;strong&amp;gt;&amp;#8221; + CusDiscount + &amp;#8220;&amp;lt;/strong&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;#8221;);&lt;br /&gt; sb.AppendLine(&amp;#8220;&amp;lt;tr&amp;gt;&amp;lt;td style=\&amp;#8221;text-align:right;\&amp;#8221; colspan=\&amp;#8221;3\&amp;#8221;&amp;gt;&amp;lt;strong&amp;gt;&amp;#8221; + LocalizationManager.GetLocaleResourceString(&amp;#8220;Promotion.RewardPointName&amp;#8221;, LanguageID) + &amp;#8220;&amp;lt;/strong&amp;gt;&amp;lt;/td&amp;gt; &amp;lt;td style=\&amp;#8221;text-align:right;\&amp;#8221;&amp;gt;&amp;lt;strong&amp;gt;&amp;#8221; + CusRewardPoint + &amp;#8220;&amp;lt;/strong&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;#8221;);&lt;br /&gt; //fix ends&lt;/p&gt; &lt;p&gt;于是呼，在你的template-&amp;gt;message template里订单生成时向用户和店主发的email里就可以支持积分的token了。&lt;/p&gt; &lt;p&gt;至于在web如何调用，那就比较容易了，在你想要的页面加上一个textbox,确保用户输入的是decimal,那就够了，这个数字会存到session里直到用户下单。而且在管理界面，利用rewardmanager的方法可以直接操作积分，方便快捷。&lt;/p&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/dingsea/aggbug/1671670.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/dingsea/archive/2010/02/23/1671670.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/dingsea/archive/2010/02/22/1670929.html</id><title type="text">为nopcommerce自定义用户积分功能(1)</title><summary type="text">nopcommerce是开源的asp.net网店，从08年底出来第一个版本，截止本文发稿时最新版本为1.40，有兴趣的同学可以去http://www.nopcommerce.com了解详细情况。nopcommerce本身不带用户积分功能，至少1.4还没有。基本目前的用户需求，等不到官方发布这个功能了。我们来自己实现一个简单的用户积分，积分历史记录暂时通过SQL查询</summary><published>2010-02-22T02:16:00Z</published><updated>2010-02-22T02:16:00Z</updated><author><name>极地银狐.NET</name><uri>http://www.cnblogs.com/dingsea/</uri></author><link rel="alternate" href="http://www.cnblogs.com/dingsea/archive/2010/02/22/1670929.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/dingsea/archive/2010/02/22/1670929.html"/><content type="html">&lt;strong&gt;&lt;em&gt;由于此功能为定制功能，所以不方便把所有代码都发上来，而且功能或许还有BUG，有兴趣的同学可以一起研究，大家也可以访问中文站www.nopchina.com或者 www.nopcommerce.org或者加入QQ群101675096一起讨论。&lt;/em&gt;&lt;/strong&gt;&lt;br /&gt; nopcommerce是开源的asp.net网店，从08年底出来第一个版本，截止本文发稿时最新版本为1.40，有兴趣的同学可以去&lt;a href="http://www.nopcommerce.com/" target="_blank"&gt;http://www.nopcommerce.com&lt;/a&gt;了解详细情况。&lt;br /&gt; &lt;br /&gt; nopcommerce本身不带用户积分功能，至少1.4还没有。基本目前的用户需求，等不到官方发布这个功能了。我们来自己实现一个简单的用户积分，积分历史记录暂时通过SQL查询&lt;br /&gt; &lt;br /&gt; 先来看看基本需求和大概流程。首先这个积分不像凡客那种买个东西就几千上万分，我们所定义的积分就是一种虚拟货币，而且和网店主要货币的汇率为1，我们的 目的很简单，用户在每次购物以后可以给用户的帐户里添加X元的货币，这个货币的名字用户可以自定义，比如这个网店我想取名叫A$,那个网店我想叫 Z$,或者直接叫RMB也行。为了简单起见我们规定在每次购物以后用户可以得到1%的货币（为了更好的区分，以下用&amp;#8220;积分&amp;#8221;代替），而且积分是扣掉打折以 后再开始计算的。例如用户购买了200元的东西，打折10%即20元，这样用户需要支付180元，所得积分为180*1%=1.8元。当然这个百分比是可 以随时更改的。&lt;br /&gt; &lt;br /&gt; 要注意的是用户下单后不是马上得到积分而是在网店收到钱以后，由管理员在更新状态时同时给用户添加积分。管理员也可以选择不给此人增加积分，或者给此人增 加另一个数额的积分，而且在用户管理页面管理员也可以直接对用户的积分进行修改。为了把积分概念深入人心，用户下单以后也要加到邮件通知里。&lt;br /&gt; &lt;br /&gt; 综上所述我们要的流程如下：&lt;br /&gt; &lt;br /&gt; 1.用户下单，结帐，email通知用户下单成功并能获得X元的积分，此积分下一次可以在购物时使用。&lt;br /&gt; 2.用户付款以后管理员给用户添加积分&lt;br /&gt; 3.用户获得积分，下次可以使用。&lt;br /&gt; &lt;br /&gt; 我们先来进行必要的设置，包括本地化、全局设置以及修改数据库。&lt;br /&gt; &lt;br /&gt; configuration-&amp;gt;all settings-&amp;gt;add new,添加两项设置&amp;#8220;RewardPercent&amp;#8221;和&amp;#8220;RewardPoint&amp;#8221;，分别为获得积分的百分比和积分的货币符号。&lt;br /&gt; &lt;br /&gt; content management-&amp;gt;localization-&amp;gt;add new,添加两项&amp;#8220;Promotion.RewardMessageForGuest&amp;#8221;和&amp;#8220;Promotion.RewardPointName&amp;#8221;分别为 guest user在结帐时的提示信息和本地化以后的货币符号，其实这个可以用上边的积分符号代替。&lt;br /&gt; &lt;br /&gt; 然后，我们在数据库里添加一个新的表&lt;br /&gt; CREATE TABLE [dbo].[Nop_RewardAudit](&lt;br /&gt; [RewardID] [int] IDENTITY(1,1) NOT NULL,&lt;br /&gt; [OrderID] [int] NOT NULL,&lt;br /&gt; [RewardTime] [datetime] NOT NULL,&lt;br /&gt; [Status] [nchar](10) NOT NULL,&lt;br /&gt; [Amount] [money] NOT NULL,&lt;br /&gt; [RewardDetails] [nvarchar](2000) NULL,&lt;br /&gt; CONSTRAINT [PK_Nop_RewardAudit] PRIMARY KEY CLUSTERED&lt;br /&gt; (&lt;br /&gt; [RewardID] ASC&lt;br /&gt; )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, FILLFACTOR = 80) ON [PRIMARY]&lt;br /&gt; ) ON [PRIMARY]&lt;br /&gt; 这个表用来做audit,目前还没有把audit的界面做出来，不过功能倒是设计出来了，有空加上。然后分别再向customer表和order表加一个money字段：&lt;br /&gt; &lt;br /&gt; ALTER TABLE dbo.Nop_Customer SET (LOCK_ESCALATION = TABLE)&lt;br /&gt; &lt;br /&gt; order表的类似，我把代码搞没了，大家自己加上应该没问题。接下来老丁我还得改几个存储过程，不过强烈建议放到后边改，是更新用户和插入订单的。&lt;br /&gt; &lt;br /&gt; CREATE PROCEDURE dbo.Nop_CustomerRewardPointCalculation&lt;br /&gt; @cID int,&lt;br /&gt; @orderID&amp;nbsp; &amp;nbsp; int,&lt;br /&gt; @points money,&lt;br /&gt; @details nvarchar(2000)&lt;br /&gt; AS&lt;br /&gt; update nop_customer&lt;br /&gt; set rewardPoint = rewardPoint + @points&lt;br /&gt; where CustomerID = @cID&lt;br /&gt; &lt;br /&gt; insert into Nop_RewardAudit&lt;br /&gt; (OrderID,RewardTime,Status,Amount,RewardDetails)&lt;br /&gt; values&lt;br /&gt; (@orderID,getdate(),&amp;#8221;&amp;#8221;,@points,@details)&lt;br /&gt; &lt;br /&gt; 还有:&lt;br /&gt; CREATE PROCEDURE dbo.Nop_CustomerSetRewardPoint&lt;br /&gt; @cID int,&lt;br /&gt; @orderID&amp;nbsp; &amp;nbsp; int,&lt;br /&gt; @points money,&lt;br /&gt; @details nvarchar(2000)&lt;br /&gt; AS&lt;br /&gt; update nop_customer&lt;br /&gt; set rewardPoint = @points&lt;br /&gt; where CustomerID = @cID&lt;br /&gt; &lt;br /&gt; insert into Nop_RewardAudit&lt;br /&gt; (OrderID,RewardTime,Status,Amount,RewardDetails)&lt;br /&gt; values&lt;br /&gt; (0,getdate(),&amp;#8221;&amp;#8221;,@points,@details)&lt;br /&gt; RETURN&lt;br /&gt; &lt;br /&gt; 更新用户信息：&lt;br /&gt; &lt;br /&gt; CREATE PROCEDURE [dbo].[Nop_CustomerUpdate]&lt;br /&gt; (&lt;br /&gt; @CustomerId int,&lt;br /&gt; @CustomerGUID uniqueidentifier,&lt;br /&gt; @Email nvarchar(255),&lt;br /&gt; @PasswordHash nvarchar(255),&lt;br /&gt; @SaltKey nvarchar(255),&lt;br /&gt; @AffiliateID int,&lt;br /&gt; @BillingAddressID int,&lt;br /&gt; @ShippingAddressID int,&lt;br /&gt; @LastPaymentMethodID int,&lt;br /&gt; @LastAppliedCouponCode nvarchar(100),&lt;br /&gt; @LanguageID int,&lt;br /&gt; @CurrencyID int,&lt;br /&gt; @TaxDisplayTypeID int,&lt;br /&gt; @IsTaxExempt bit,&lt;br /&gt; @IsAdmin bit,&lt;br /&gt; @IsGuest bit,&lt;br /&gt; @IsForumModerator bit,&lt;br /&gt; @TotalForumPosts int,&lt;br /&gt; @Signature nvarchar(300),&lt;br /&gt; @AdminComment nvarchar(4000),&lt;br /&gt; @Active bit,&lt;br /&gt; @Deleted bit,&lt;br /&gt; @RegistrationDate datetime,&lt;br /&gt; @TimeZoneID nvarchar(200),&lt;br /&gt; @Username nvarchar(100),&lt;br /&gt; @AvatarID int,&lt;br /&gt; @RewardPoint money&lt;br /&gt; )&lt;br /&gt; AS&lt;br /&gt; BEGIN&lt;br /&gt; &lt;br /&gt; UPDATE [Nop_Customer]&lt;br /&gt; SET&lt;br /&gt; CustomerGUID=@CustomerGUID,&lt;br /&gt; Email=@Email,&lt;br /&gt; PasswordHash=@PasswordHash,&lt;br /&gt; SaltKey=@SaltKey,&lt;br /&gt; AffiliateID=@AffiliateID,&lt;br /&gt; BillingAddressID=@BillingAddressID,&lt;br /&gt; ShippingAddressID=@ShippingAddressID,&lt;br /&gt; LastPaymentMethodID=@LastPaymentMethodID,&lt;br /&gt; LastAppliedCouponCode=@LastAppliedCouponCode,&lt;br /&gt; LanguageID=@LanguageID,&lt;br /&gt; CurrencyID=@CurrencyID,&lt;br /&gt; TaxDisplayTypeID=@TaxDisplayTypeID,&lt;br /&gt; IsTaxExempt=@IsTaxExempt,&lt;br /&gt; IsAdmin=@IsAdmin,&lt;br /&gt; IsGuest=@IsGuest,&lt;br /&gt; IsForumModerator=@IsForumModerator,&lt;br /&gt; TotalForumPosts=@TotalForumPosts,&lt;br /&gt; [Signature]=@Signature,&lt;br /&gt; AdminComment=@AdminComment,&lt;br /&gt; Active=@Active,&lt;br /&gt; Deleted=@Deleted,&lt;br /&gt; RegistrationDate=@RegistrationDate,&lt;br /&gt; TimeZoneID=@TimeZoneID,&lt;br /&gt; Username=@Username,&lt;br /&gt; AvatarID=@AvatarID,&lt;br /&gt; RewardPoint = @RewardPoint&lt;br /&gt; WHERE&lt;br /&gt; [CustomerId] = @CustomerId&lt;br /&gt; &lt;br /&gt; END&lt;br /&gt; &lt;br /&gt; Nop_OrderInsert的就不用我再放上来了吧，按上边这个SP来改问题不大。&lt;br /&gt; &lt;br /&gt; 今天先发到这儿。明天继续发CS代码部分。&lt;img src="http://www.cnblogs.com/dingsea/aggbug/1670929.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/dingsea/archive/2010/02/22/1670929.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/dingsea/archive/2009/06/21/1507572.html</id><title type="text">21 June 2009, Preview @ OTP sign-off</title><summary type="text"/><published>2009-06-20T18:35:00Z</published><updated>2009-06-20T18:35:00Z</updated><author><name>极地银狐.NET</name><uri>http://www.cnblogs.com/dingsea/</uri></author><link rel="alternate" href="http://www.cnblogs.com/dingsea/archive/2009/06/21/1507572.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/dingsea/archive/2009/06/21/1507572.html"/></entry><entry><id>http://www.cnblogs.com/dingsea/archive/2009/03/19/1416827.html</id><title type="text">是不是骗子,大家看看</title><summary type="text">这样的文章明显不应该放在首页</summary><published>2009-03-19T07:22:00Z</published><updated>2009-03-19T07:22:00Z</updated><author><name>极地银狐.NET</name><uri>http://www.cnblogs.com/dingsea/</uri></author><link rel="alternate" href="http://www.cnblogs.com/dingsea/archive/2009/03/19/1416827.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/dingsea/archive/2009/03/19/1416827.html"/></entry><entry><id>http://www.cnblogs.com/dingsea/archive/2009/01/22/1379839.html</id><title type="text">国外便宜主机推荐</title><summary type="text">详见:http://www.mochasupport.com/aff/idevaffiliate.php?id=732经过比较后发见这家在功能上要比GGDY高,.NET的支持很不错,差点就是全能空间了Linux下支持RUBY和python,但是WIN空间不支持,这点有些可惜. 不过总的来说比市面上其它.NET空间便宜,而且有LIFE TIME的域名,是说只要不换空间商,此域名一直免费.很有吸引力....</summary><published>2009-01-22T05:04:00Z</published><updated>2009-01-22T05:04:00Z</updated><author><name>极地银狐.NET</name><uri>http://www.cnblogs.com/dingsea/</uri></author><link rel="alternate" href="http://www.cnblogs.com/dingsea/archive/2009/01/22/1379839.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/dingsea/archive/2009/01/22/1379839.html"/></entry><entry><id>http://www.cnblogs.com/dingsea/archive/2009/01/06/1370714.html</id><title type="text">草莓网 - 直销香水, 护肤品, 彩妆及化妆品, 网购资料收集</title><summary type="text">由于各位姐妹都喜欢从香港草莓网购入自己喜欢的品牌,我就为大家在网上收集了一些草莓网的相关资料以方便姐妹们参考草莓网的英文口号是: Buy Skincare Products and Cosmetics - from StrawberryNET.com 草莓网销售的是百分之百原厂正货、原厂的商品。商品采购自世界各地，有可能网上销售的的少部分商品，跟当地销售的货源不同；  但商品都是百分之百正货；另包...</summary><published>2009-01-06T14:56:00Z</published><updated>2009-01-06T14:56:00Z</updated><author><name>极地银狐.NET</name><uri>http://www.cnblogs.com/dingsea/</uri></author><link rel="alternate" href="http://www.cnblogs.com/dingsea/archive/2009/01/06/1370714.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/dingsea/archive/2009/01/06/1370714.html"/></entry><entry><id>http://www.cnblogs.com/dingsea/archive/2008/12/04/1347990.html</id><title type="text">新加坡站长交流群</title><summary type="text">开了一个QQ群 14767124,站长交流专用.欢迎加入.个人博客也算站长嘛,呵呵</summary><published>2008-12-04T15:54:00Z</published><updated>2008-12-04T15:54:00Z</updated><author><name>极地银狐.NET</name><uri>http://www.cnblogs.com/dingsea/</uri></author><link rel="alternate" href="http://www.cnblogs.com/dingsea/archive/2008/12/04/1347990.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/dingsea/archive/2008/12/04/1347990.html"/></entry><entry><id>http://www.cnblogs.com/dingsea/archive/2008/10/03/1303558.html</id><title type="text">印尼度假照片系列</title><summary type="text">经过三天两夜的度假,总算有的发点什么东西了.我特别请了9月最后两天的假,这样加上public holiday一共就有五天时间玩终于可以放松一下了,度假套餐是早在8月就订好,现在直接过去就行.本次度假选定印尼民丹岛(bintan lsland),度假村选的是Nirwana resort, 传说是四星,还好还好.其实下次我可能会选bintan largoon因为公司有福利可以定chalet的且比普通房...</summary><published>2008-10-03T13:45:00Z</published><updated>2008-10-03T13:45:00Z</updated><author><name>极地银狐.NET</name><uri>http://www.cnblogs.com/dingsea/</uri></author><link rel="alternate" href="http://www.cnblogs.com/dingsea/archive/2008/10/03/1303558.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/dingsea/archive/2008/10/03/1303558.html"/></entry><entry><id>http://www.cnblogs.com/dingsea/archive/2008/09/26/1299739.html</id><title type="text">老丁讲故事 - 为什么程序员的工资这么低?</title><summary type="text">为什么程序员的工资这么低?引用某朋友的话: 因为API最不保值!同学们,听懂了吧?</summary><published>2008-09-26T09:49:00Z</published><updated>2008-09-26T09:49:00Z</updated><author><name>极地银狐.NET</name><uri>http://www.cnblogs.com/dingsea/</uri></author><link rel="alternate" href="http://www.cnblogs.com/dingsea/archive/2008/09/26/1299739.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/dingsea/archive/2008/09/26/1299739.html"/></entry><entry><id>http://www.cnblogs.com/dingsea/archive/2008/09/17/1292141.html</id><title type="text">极地诅咒</title><summary type="text">诅咒那些楼下飙车的,TMD半夜一两点了,还一辆接一辆的飙,我很有把拖鞋丢下去的冲动.//end of post.</summary><published>2008-09-16T18:01:00Z</published><updated>2008-09-16T18:01:00Z</updated><author><name>极地银狐.NET</name><uri>http://www.cnblogs.com/dingsea/</uri></author><link rel="alternate" href="http://www.cnblogs.com/dingsea/archive/2008/09/17/1292141.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/dingsea/archive/2008/09/17/1292141.html"/></entry></feed>
