由于此功能为定制功能,所以不方便把所有代码都发上来,而且功能或许还有BUG,有兴趣的同学可以一起研究,大家也可以访问中文站www.nopchina.com或者 www.nopcommerce.org或者加入QQ群101675096一起讨论。
nopcommerce是开源的asp.net网店,从08年底出来第一个版本,截止本文发稿时最新版本为1.40,有兴趣的同学可以去http://www.nopcommerce.com了解详细情况。

nopcommerce本身不带用户积分功能,至少1.4还没有。基本目前的用户需求,等不到官方发布这个功能了。我们来自己实现一个简单的用户积分,积分历史记录暂时通过SQL查询

先来看看基本需求和大概流程。首先这个积分不像凡客那种买个东西就几千上万分,我们所定义的积分就是一种虚拟货币,而且和网店主要货币的汇率为1,我们的 目的很简单,用户在每次购物以后可以给用户的帐户里添加X元的货币,这个货币的名字用户可以自定义,比如这个网店我想取名叫A$,那个网店我想叫 Z$,或者直接叫RMB也行。为了简单起见我们规定在每次购物以后用户可以得到1%的货币(为了更好的区分,以下用“积分”代替),而且积分是扣掉打折以 后再开始计算的。例如用户购买了200元的东西,打折10%即20元,这样用户需要支付180元,所得积分为180*1%=1.8元。当然这个百分比是可 以随时更改的。

要注意的是用户下单后不是马上得到积分而是在网店收到钱以后,由管理员在更新状态时同时给用户添加积分。管理员也可以选择不给此人增加积分,或者给此人增 加另一个数额的积分,而且在用户管理页面管理员也可以直接对用户的积分进行修改。为了把积分概念深入人心,用户下单以后也要加到邮件通知里。

综上所述我们要的流程如下:

1.用户下单,结帐,email通知用户下单成功并能获得X元的积分,此积分下一次可以在购物时使用。
2.用户付款以后管理员给用户添加积分
3.用户获得积分,下次可以使用。

我们先来进行必要的设置,包括本地化、全局设置以及修改数据库。

configuration->all settings->add new,添加两项设置“RewardPercent”和“RewardPoint”,分别为获得积分的百分比和积分的货币符号。

content management->localization->add new,添加两项“Promotion.RewardMessageForGuest”和“Promotion.RewardPointName”分别为 guest user在结帐时的提示信息和本地化以后的货币符号,其实这个可以用上边的积分符号代替。

然后,我们在数据库里添加一个新的表
CREATE TABLE [dbo].[Nop_RewardAudit](
[RewardID] [int] IDENTITY(1,1) NOT NULL,
[OrderID] [int] NOT NULL,
[RewardTime] [datetime] NOT NULL,
[Status] [nchar](10) NOT NULL,
[Amount] [money] NOT NULL,
[RewardDetails] [nvarchar](2000) NULL,
CONSTRAINT [PK_Nop_RewardAudit] PRIMARY KEY CLUSTERED
(
[RewardID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, FILLFACTOR = 80) ON [PRIMARY]
) ON [PRIMARY]
这个表用来做audit,目前还没有把audit的界面做出来,不过功能倒是设计出来了,有空加上。然后分别再向customer表和order表加一个money字段:

ALTER TABLE dbo.Nop_Customer SET (LOCK_ESCALATION = TABLE)

order表的类似,我把代码搞没了,大家自己加上应该没问题。接下来老丁我还得改几个存储过程,不过强烈建议放到后边改,是更新用户和插入订单的。

CREATE PROCEDURE dbo.Nop_CustomerRewardPointCalculation
@cID int,
@orderID    int,
@points money,
@details nvarchar(2000)
AS
update nop_customer
set rewardPoint = rewardPoint + @points
where CustomerID = @cID

insert into Nop_RewardAudit
(OrderID,RewardTime,Status,Amount,RewardDetails)
values
(@orderID,getdate(),””,@points,@details)

还有:
CREATE PROCEDURE dbo.Nop_CustomerSetRewardPoint
@cID int,
@orderID    int,
@points money,
@details nvarchar(2000)
AS
update nop_customer
set rewardPoint = @points
where CustomerID = @cID

insert into Nop_RewardAudit
(OrderID,RewardTime,Status,Amount,RewardDetails)
values
(0,getdate(),””,@points,@details)
RETURN

更新用户信息:

CREATE PROCEDURE [dbo].[Nop_CustomerUpdate]
(
@CustomerId int,
@CustomerGUID uniqueidentifier,
@Email nvarchar(255),
@PasswordHash nvarchar(255),
@SaltKey nvarchar(255),
@AffiliateID int,
@BillingAddressID int,
@ShippingAddressID int,
@LastPaymentMethodID int,
@LastAppliedCouponCode nvarchar(100),
@LanguageID int,
@CurrencyID int,
@TaxDisplayTypeID int,
@IsTaxExempt bit,
@IsAdmin bit,
@IsGuest bit,
@IsForumModerator bit,
@TotalForumPosts int,
@Signature nvarchar(300),
@AdminComment nvarchar(4000),
@Active bit,
@Deleted bit,
@RegistrationDate datetime,
@TimeZoneID nvarchar(200),
@Username nvarchar(100),
@AvatarID int,
@RewardPoint money
)
AS
BEGIN

UPDATE [Nop_Customer]
SET
CustomerGUID=@CustomerGUID,
Email=@Email,
PasswordHash=@PasswordHash,
SaltKey=@SaltKey,
AffiliateID=@AffiliateID,
BillingAddressID=@BillingAddressID,
ShippingAddressID=@ShippingAddressID,
LastPaymentMethodID=@LastPaymentMethodID,
LastAppliedCouponCode=@LastAppliedCouponCode,
LanguageID=@LanguageID,
CurrencyID=@CurrencyID,
TaxDisplayTypeID=@TaxDisplayTypeID,
IsTaxExempt=@IsTaxExempt,
IsAdmin=@IsAdmin,
IsGuest=@IsGuest,
IsForumModerator=@IsForumModerator,
TotalForumPosts=@TotalForumPosts,
[Signature]=@Signature,
AdminComment=@AdminComment,
Active=@Active,
Deleted=@Deleted,
RegistrationDate=@RegistrationDate,
TimeZoneID=@TimeZoneID,
Username=@Username,
AvatarID=@AvatarID,
RewardPoint = @RewardPoint
WHERE
[CustomerId] = @CustomerId

END

Nop_OrderInsert的就不用我再放上来了吧,按上边这个SP来改问题不大。

今天先发到这儿。明天继续发CS代码部分。

转载于:https://www.cnblogs.com/dingsea/archive/2010/02/22/1670929.html

为nopcommerce自定义用户积分功能(1)相关推荐

  1. 用户积分和积分排行榜功能微服务实现

    文章目录 需求分析 什么是积分 积分的获取 为啥需要积分服务 数据库表 创建 ms-points 积分微服务 新增用户积分功能 用户积分实体 积分控制层 积分业务逻辑层 数据交互mapper层 网关 ...

  2. 安全无忧,函数计算推出访问用户VPC功能,实现自定义的多类VPC网络资源互通...

    去年10月,阿里云正式对外宣布函数计算(Function Compute)商业化.对于函数计算这个事件驱动的无服务器计算平台,用户只需要按需调用.按需付费,无需管理服务器等基础设施,满足有明显波峰波谷 ...

  3. 使用Redis实现用户积分及TopN排行榜功能

    1 需求 添加积分 在用户签到的基础上添加用户积分,签到 1 天送 10 积分,连续签到 2 天送 20 积分,3 天送 30 积分,4 天以上均送 50 积分. 积分排行榜 2 表设计 利用MySQ ...

  4. 用户互动功能,微信商城系统

    WeiKuCMS  (微酷CMS)功能特点:人工客服新功能正式上线!粉丝行为分析.微信支付.渠道二维码生成.二维码折扣,微菜单,微统计,会员卡签到,微会员,刮刮卡,大转盘,优惠券,积分兑换,微官网,砸 ...

  5. Fecyo扩展Walletyo-2.0.1发布,商用免费授权,支持三级分销,用户积分,用户钱包

    Fecyo扩展Walletyo-2.0.1发布,支持三级分销,用户积分,用户钱包 更新信息参看:http://www.fecmall.com/topic/4254 本扩展一如既往的商用免费,欢迎各位使 ...

  6. 3.Spring Security 自定义用户认证

    Spring Security自定义用户认证 自定义认证过程 自定义认证的过程需要实现Spring Security提供的UserDetailService接口,该接口只有一个抽象方法loadUser ...

  7. Apache Shiro实现用户登录功能

    apache shiro实现用户登录功能 配置shiro的Filter实现URL级别权限控制 配置web.xml <!-- shiro的过滤器 --> <filter>< ...

  8. boost::test模块自定义用户异常转换器注册表的单元测试

    boost::test模块自定义用户异常转换器注册表的单元测试 实现功能 C++实现代码 实现功能 boost::test模块自定义用户异常转换器注册表的单元测试 C++实现代码 #include & ...

  9. php redis 签到,基于Redis位图实现用户签到功能

    场景需求 适用场景如签到送积分.签到领取奖励等,大致需求如下: 签到1天送1积分,连续签到2天送2积分,3天送3积分,3天以上均送3积分等. 如果连续签到中断,则重置计数,每月初重置计数. 当月签到满 ...

最新文章

  1. 【实用】一个移动端简单的UI弹窗组件,虽算不上高大上,但至少耐看
  2. 计算机书籍-Go语言入门经典SAMS Teach Yourself
  3. linux单步跟踪命令,dbx调试跟踪的常用子命令
  4. 从用户不足2000万到27亿,这项技术真要上天了?
  5. [bzoj] 1257 余数之和sum || 数论
  6. 常用 API 函数(7): 位图、图标和光栅运算函数
  7. Java集合--WeakHashMap
  8. android查看数据库
  9. 网络工程交换技术之hsrp
  10. 人脸识别测试图片_人脸识别或将到达瓶颈,有监督的聚类算法探索新思路
  11. BZOJ1064[NOI2008] 假面舞会
  12. 计算机考试用户注册,全国计算机等级考试报名系统账号注册和登录
  13. GreatRiver研讨会 | ARINC 818的应用及发展
  14. 基于VHDL的交通灯设计(实训要求)
  15. 电脑出现蓝屏后自动重启是什么原因
  16. Trusted Computing and DRM
  17. 计算机组成原理——Part Three 性能指标
  18. [已解决]批处理查看文件大小的字节怎样转换成KB和MB?
  19. 微信分销商城如何推广比较吸引粉丝
  20. Python爬虫——Urllib

热门文章

  1. 如何查看单元测试的结果 以及异常处理
  2. svm工具箱快速入手简易教程
  3. 一起谈.NET技术,Linq学习笔记
  4. SCMagazine: SIEM走出阴影,迈向光明
  5. jquery 弹出遮罩层
  6. 【转载+思考】追问泄题之源:命题权寻租打开方便之门
  7. IT企业是如何选择容器管理平台的
  8. es5.4.0-CentOS-6.5-x86_64安装文档
  9. 《写给PHP开发者的Node.js学习指南》一2.2 预定义的PHP变量
  10. Mobius反演定理-BZOJ2154