1.GM_JF客户账户积分表 2.GM_JF_DETAIL客户账户积分消费记录 3.GM_JF_ACTION_RULES积分动作规则表 4.GM_JF_GOODS_RULES积分商品规则表 无 -- ===============测试=======================================================/*declare @StatusCode int = 1;exec
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
-- ===============测试======================================================= /* declare @StatusCode int = 1; exec sp_GM_JF_CutScore 'admin','GS_JF_0004',2,1,'',@StatusCode output print @StatusCode*/ -- =============================华丽的分割线=================================== SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO ALTER proc [dbo].[sp_GM_JF_CutScore] @ACCOUNT_ID varchar(30), --兑换ID 如admin @GS_CategoryNumber varchar(12), --兑换商品类型 @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;--不返回计数(表示受 Transact-SQL 语句影响的行数) declare --判断处理 自定义变量 @score int , --要兑换商品类型的积分值 @scoreSum int, --要兑换商品类型的积分总值 @JF_AMOUNT int, --可用积分 @Version int; --版本号 select @score=GS_SCORE from GM_JF_GOOD_RULES where GS_CategoryNumber=@GS_CategoryNumber --'GS_JF_0003' if(@CARD_NUM>0) begin set @scoreSum=@score*@CARD_NUM*(-1) end select @JF_AMOUNT=JF_AMOUNT,@Version=[Version] from GM_JF where ACCOUNT_ID=@ACCOUNT_ID; if(@JF_AMOUNT>@scoreSum*(-1)) --判断可用余额是否大于 兑换所需要的积分 begin begin tran; --插入详情 GM_JF_DETAIL insert into GM_JF_DETAIL (ACCOUNT_ID,JF_CategoryNumber,CARD_NUM,HQ_JF_AMOUNT,[State],USE_DESC) values (@ACCOUNT_ID,@GS_CategoryNumber,@CARD_NUM,@scoreSum,@State,@USE_DESC) --修改总表字段 可用余额 版本号 GM_JF update GM_JF set JF_AMOUNT= (@JF_AMOUNT+@scoreSum) ,Last_Update_Time=GETDATE(), [Version]=(@Version+1) where ACCOUNT_ID=@ACCOUNT_ID set @StatusCode = 1; Commit tran; end else begin set @StatusCode = 2; --可用积分小于要兑换物品的积分总值 兑换失败 end IF(@@ERROR<>0) BEGIN set @StatusCode = 2; ROLLBACK tran; end END

使用math.Max函数获取一组数中的最大值在数学和编程中,经常需要找出一组数中的最大值。在Go语言中,我们可以使用math包中的Max函数来实现这个功能。本文将介绍如何使用math.Max函数来获取一组数中的最大值,并提供相应的代码示例。首先,我们需要导入math包。在Go语言中,导入包可以使用import关键字,如下所示:import"mat

从Java中的LinkedHashSet中检索最后一个元素意味着检索其集合中的最后一个元素。尽管Java没有内置方法来帮助检索LinkedHashSets中的最后一个项,但存在多种有效的技术,可以提供灵活性和便利性,有效地检索此最后一个元素而不破坏插入顺序-这是Java开发人员必须在其应用程序中有效处理的问题。通过将这些策略有效地应用于他们的软件项目中,他们可以实现满足此要求的最佳解决方案LinkedHashSetLinkedHashSet是Java中的一种高效数据结构,它结合了HashSet和

QQ音乐是一款拥有很多音乐类型的播放软件,大家想要收听什么类型的音乐都可以在这里搜索查找。所有音乐的音质都是非常不错的,它有很多不同的音质选择。那么大家知道QQ音乐怎么领取积分吗?QQ音乐领取积分详细教程: 1、首先打开【QQ音乐】APP软件,点击底部功能栏内【我的】功能按钮。 2、然后点击【活动中心】功能按钮。 3、接着点击【领积分】按钮,即可领取到积分了。软件介绍 1、高品质音乐播放; 2、专辑图片和全屏歌词显示; 3、登录QQ同步电脑上QQ音乐我的收藏歌曲; 4、海量在线

铁路12306app怎么用积分兑换火车票?铁路12306app是一款可以方便人们生活的非常智能的软件。用这个软件买票是非常方便的,而且还比较迅速,大家都比较喜欢用这个软件来买票,因为用这个软件买票还可以获得一些积分,用户就可以用这些积分来兑换火车票的,很多用户都不知道要怎么用积分来兑换火车票,下面小编整理了用积分兑换火车票的方法供大家参考。铁路12306app积分兑换火车票的方法 1、打开手机上到铁路12306软件,选择乘车地方以及时间后点击“查询车票”。 2、在查询的车票

天猫积分怎么兑换?在软件天猫中,我们每次消费会获得对应的积分。有些用户想要知道天猫怎么兑换物品。可以在会员中心的天猫积分中兑换。接下来就是小编为用户带来的有关积分兑换方式的介绍,感兴趣的用户快来一起看看吧!天猫积分怎么兑换答:在会员中心的天猫积分中兑换详情介绍:1、进入淘宝,点击右下方【我的淘宝】。2、点击进入【会员中心】。3、即可看到自己的【天猫积分】,点击进入。4、可以看到兑换物品。选择想要的物品进行【兑换】。5、使用天猫积分兑换即可。

使用path/filepath.Ext函数获取文件路径的扩展名部分在编程过程中,经常会遇到需要获取文件的扩展名的需求。Go语言提供了一个非常方便的函数path/filepath.Ext来实现这个功能。本文将介绍如何使用该函数来获取文件路径的扩展名部分。首先,让我们来看一个简单的示例:packagemainimport("fmt&q

日常使用手机获得的电信积分可以用来兑换话费进行抵扣,有些用户还不清楚电信积分兑换话费怎么操作,可以在电信营业厅中的积分兑换中选择积分充话费即可,接下来就是小编为用户带来的积分兑换话费操作方法的介绍,感兴趣的用户快来一起看看吧!电信积分兑换话费怎么操作答:在电信营业厅中的积分兑换中选择积分充话费即可详情介绍:1、进入软件电信营业厅,再点击下方的【积分兑换】。2、进入页面,点击【我可兑换】。3、选择其中的【积分充话费】。4、输入使用积分后,获取验证码并确认即可。

支付宝会员积分在哪看?支付宝APP是可以积累到超多的积分,但是多数的小伙伴不知道支付宝会员如何的查看积分,接下来就是小编为用户带来的支付宝会员积分查看方法图文教程,感兴趣的用户快来一起看看吧!支付宝使用教程支付宝会员积分在哪看1、首先打开支付宝APP,主页面右下角【我的】专区;2、然后在我的专区中,点击【支付宝会员】服务功能;


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

PhpStorm Mac 版本
最新(2018.2.1 )专业的PHP集成开发工具

Dreamweaver Mac版
视觉化网页开发工具

SecLists
SecLists是最终安全测试人员的伙伴。它是一个包含各种类型列表的集合,这些列表在安全评估过程中经常使用,都在一个地方。SecLists通过方便地提供安全测试人员可能需要的所有列表,帮助提高安全测试的效率和生产力。列表类型包括用户名、密码、URL、模糊测试有效载荷、敏感数据模式、Web shell等等。测试人员只需将此存储库拉到新的测试机上,他就可以访问到所需的每种类型的列表。

DVWA
Damn Vulnerable Web App (DVWA) 是一个PHP/MySQL的Web应用程序,非常容易受到攻击。它的主要目标是成为安全专业人员在合法环境中测试自己的技能和工具的辅助工具,帮助Web开发人员更好地理解保护Web应用程序的过程,并帮助教师/学生在课堂环境中教授/学习Web应用程序安全。DVWA的目标是通过简单直接的界面练习一些最常见的Web漏洞,难度各不相同。请注意,该软件中

MinGW - 适用于 Windows 的极简 GNU
这个项目正在迁移到osdn.net/projects/mingw的过程中,你可以继续在那里关注我们。MinGW:GNU编译器集合(GCC)的本地Windows移植版本,可自由分发的导入库和用于构建本地Windows应用程序的头文件;包括对MSVC运行时的扩展,以支持C99功能。MinGW的所有软件都可以在64位Windows平台上运行。