关于用户消费一定金额等级自动升级
本帖最后由 huangwenquan123 于 2011-03-22 22:30:22 编辑
目前做的项目有个关于用户消费一定金钱的时候等级自动升级
比如:
用户A,目前消费:990,等级:银牌代理商
当消费到1000的时候 升级为金牌代理商,不是人工设置升级。
目前想法:
(1)用存储过程,结帐的时候扣除相应购买商品的库存数,用户金钱数,增加用户消费数量等等,然后根据当前用户等级ID取到该等级ID的上一级等级的消费下限,和该用户消费金额进行判断,大于等于的话就修改用户等级
(2)在业务逻辑中判断,写个相应方法,当结帐完进行判断
问题:
(1)以前没接触过这种类型的项目,像论坛一些用户到达一定积分自动升级用户组是怎么做的?
(2)以上两种方法该选哪种?还有其他方法吗?望各位提供个思路!
------解决方案--------------------用户的多的话。还是用定时任务来做
每天夜里悄悄地 遍历用户ID 取出积分和上下线 一个个进行更新等级。
比如CSDN 就是每天4点更新整站用户数据。。
------解决方案--------------------需要及时更新等级的话,还是结账时处理比较好
个人比较赞同存储过程来处理
半夜定时更新数据可以作为一个辅助手段,用来进一步保证数据的正确性(由于可以通过存储过程返回值来判断,所以这个可能没有必要)
------解决方案--------------------等级应该是实时计算来的吧,准确!
------解决方案--------------------
你这个需求是这样的啊。
如果是用夜里的方法的话 那么当然要更新今天的消费记录了。。打折后在返还给用户就是了。
如果访问不大的话 实时更新也可以。。
------解决方案--------------------这个问题可以用后台的windowsservice服务处理,业务逻辑很清晰,只需要判断用户积分,表全有的,只需要一个后台服务一天跑2次(中午晚上),统计积分,符合条件的就更新等级表
------解决方案--------------------用户消费记录表,添加信息的时候写个触发器,在触发器中判断总消费金额,如果超过1000, 更新用户状态。
不愿意用触发器就用存储过程是一样的。
------解决方案--------------------查询的时候 直接 case when then 不就可以了吗 ~
------解决方案--------------------结账的时候一起处理不是很好吗 结账时反正是需要更新金额的 判断下连等级一起更新不是很好
------解决方案--------------------如果不是什么大的数据量访问的话 就即时操作
免得造成用户的 一些 误会 或者什么的
如果是大批量数据 就 在晚上 偷偷的 给升级掉
------解决方案--------------------
go
--创建用户表
create table 用户表(id int identity,username varchar(6),userstate varchar(20))