收藏 分销(赏)

积分获取和消费的存储过程学习示例.doc

上传人:人****来 文档编号:9760285 上传时间:2025-04-06 格式:DOC 页数:3 大小:22KB 下载积分:5 金币
下载 相关 举报
积分获取和消费的存储过程学习示例.doc_第1页
第1页 / 共3页
积分获取和消费的存储过程学习示例.doc_第2页
第2页 / 共3页


点击查看更多>>
资源描述
  1.GM_JF客户账户积分表   2. GM_JF_DETAIL客户账户积分消费记录   3. GM_JF_ACTION _RULES积分动作规则表   4.GM_JF_GOODS _RULES积分商品规则表   代码如下:   -- ===============测试=======================================================   /*   declare @StatusCode int = 1;   exec sp_GM_JF_AddScore 'admin','AN_JF_001_001',1,5,0,'',@StatusCode output   print @StatusCode   */   -- ===========================================================================   /*   * 判断是否重复获取积分(首次完善个人资料,首次修改密码等等不能重复获取积分)   * 判断是根据 从GM_JF_DETAIL(详情表)查询周期内的数据条数与GM_JF_ACTION_RULES(动作规则表)内的周期重复次数对比   * 如果大于等于周期重复次数,则为重复获取积分   * 接下来   * 1.详情表的数据入库   * 2.判断总积分表是否存在对应客户的总积分 没有则插入一条新的,有 则读取其数据,并更新   *   */   ALTER PROCEDURE [dbo].[sp_GM_JF_AddScore]   @ACCOUNT_ID varchar(30),   @JF_CategoryNumber varchar(15),   @CARD_NUM int,   @HQ_JF_AMOUNT int,   @State varchar(16),   @USE_DESC varchar(400),   @StatusCode int output -- 状态码: 0:失败 1:成功 2: 不能重复获取   AS   BEGIN   -- SET NOCOUNT ON added to prevent extra result sets from   -- interfering with SELECT statements.   SET NOCOUNT ON;   declare   @repetitionsCycle float=0, --周期(天)   @repetitionsCycle_second int=0,--周期(秒)   @repetitionsFrequency int=0, --一个周期内允许最大次数   @realFrequency int=0, --实际周期   @USE_DATE datetime = GETDATE();   --是否重复获取积分   select top(1) @repetitionsCycle=RepetitionsCycle,@repetitionsFrequency=RepetitionsFrequency from GM_JF_ACTION_RULES where AN_CategoryNumber=@JF_CategoryNumber;   if(@repetitionsCycle<1)   BEGIN   set @repetitionsCycle_second = (@repetitionsCycle-1)*24*60*60;   select @realFrequency=COUNT(1) from GM_JF_DETAIL where ACCOUNT_ID=@ACCOUNT_ID and JF_CategoryNumber=@JF_CategoryNumber and USE_DATE <= @USE_DATE and USE_DATE >= CONVERT(varchar(19),DATEADD(SECOND,-@repetitionsCycle_second,@USE_DATE),120)   END   ELSE   BEGIN   select @realFrequency=COUNT(1) from GM_JF_DETAIL where ACCOUNT_ID=@ACCOUNT_ID and JF_CategoryNumber=@JF_CategoryNumber and USE_DATE <= @USE_DATE and USE_DATE >= CONVERT(varchar(10),DATEADD(DAY,-(@repetitionsCycle-1),@USE_DATE),120)   END   if(@realFrequency>=@repetitionsFrequency) --实际周期大于周期次数   begin   set @StatusCode = 2;   return 2;   end   declare @count int = 0; --数据条数   declare @temp_table table --表变量   (   ACCOUNT_ID varchar(30),   JF_AMOUNT decimal(16,2),   TTL_JF_AMOUNT decimal(16,2),   Last_Update_Time datetime,   [Version] int   );   begin tran;   --插入详情   insert into GM_JF_DETAIL   (ACCOUNT_ID,JF_CategoryNumber,CARD_NUM,HQ_JF_AMOUNT,[State],USE_DESC)   values   (@ACCOUNT_ID,@JF_CategoryNumber,@CARD_NUM,@HQ_JF_AMOUNT,@State,@USE_DESC)   --填充表变量   insert into @temp_table select ACCOUNT_ID,JF_AMOUNT,TTL_JF_AMOUNT,Last_Update_Time,[Version] from GM_JF where ACCOUNT_ID=@ACCOUNT_ID   select @count = count(1) from @temp_table;   --判断并更新总积分(0:添加 其他:修改)   IF(@count=0)   begin   insert into GM_JF(ACCOUNT_ID,JF_AMOUNT,TTL_JF_AMOUNT)   values   (@ACCOUNT_ID,@HQ_JF_AMOUNT,@HQ_JF_AMOUNT)   end   else   begin   declare @JF_AMOUNT int, --总积分   @TTL_JF_AMOUNT int, --可用积分   @Version int; --版本号   select @JF_AMOUNT=JF_AMOUNT,@TTL_JF_AMOUNT=TTL_JF_AMOUNT,@Version=[Version] from @temp_table where ACCOUNT_ID=@ACCOUNT_ID;   update GM_JF set JF_AMOUNT=(@JF_AMOUNT+@HQ_JF_AMOUNT),TTL_JF_AMOUNT=(@TTL_JF_AMOUNT+@HQ_JF_AMOUNT),Last_Update_Time=GETDATE(),[Version]=(@Version+1) where ACCOUNT_ID=@ACCOUNT_ID   end   Commit tran;   set @StatusCode = 1;   IF(@@ERROR<>0)   BEGIN   set @StatusCode = 0;   ROLLBACK tran;   END   END   更多信息请查看IT技术专栏   
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服