create procedure scoreRule()
begin
declare v_count int default 0 ;
declare has_row int default 0;
declare v_agency_id int default 0;
declare v_static_time varchar(20);
declare v_oper_type int default 1;
declare v_money float default 0;
declare v_rate float ;
declare v_score_rule int;
declare v_create_time datetime ;
declare v_score int default 0;
declare v_total_score int default 0;
declare v_old_score int default 0;
declare vc_agency_id int default 0;
declare vc_create_time varchar(10);
declare vc_consume_type int default 0;
declare vc_area_id int default 0;
declare cur_agency_trans cursor for select min(f.agency_id) as agencyID
from t_ebiz_fund_transaction r ,t_ebiz_fund f where r.fund_inst_id = f.fund_inst_id and f.fund_type =2 and r.oper_type in ('1','2','7' ) and
DATE_FORMAT(r.create_Time,'%Y%m%d') =DATE_FORMAT(STR_TO_DATE(vc_create_time,'%Y%m%d'),'%Y%m%d') group by f.agency_id order by f.agency_id desc;
declare continue handler for not found set has_row = 1;
set v_create_time = now() ;
set vc_create_time =DATE_FORMAT(date_add(now(),interval -1 day),'%Y%m%d');
-- set vc_create_time='20120320';
/*遍历代理商钱包流水表的代理商钱包数据,往表t_ebiz_score_info中插入数据*/
open cur_agency_trans ;
agency_rec:loop
fetch cur_agency_trans into vc_agency_id ;
/* 如果没有找到记录,就跳出循环*/
if has_row =1 then
leave agency_rec;
end if;
/*计算下一个代理商,重置总积分和网点最近日期的积分值*/
set v_total_score = 0;
set v_old_score =0;
/*根据代理商iID,获取代理商的地市ID,增加地市ID选取积分规则*/
select t.area_id into vc_area_id from t_ebiz_agency_info t where t.agency_id = vc_agency_id ;
begin
declare has_detail_row int default 0;
declare cur_detail_trans cursor for select min(r.oper_type) as operType,-1*sum(r.amount) as money
from t_ebiz_fund_transaction r ,t_ebiz_fund f where r.fund_inst_id = f.fund_inst_id and f.fund_type =2 and r.oper_type in ('1','2','7' ) and f.agency_id = vc_agency_id and DATE_FORMAT(r.create_Time,'%Y%m%d') = vc_create_time group by
DATE_FORMAT(r.create_Time,'%Y%m%d'),f.agency_id ,r.oper_type;
declare continue handler for not found set has_detail_row =1;
/* 通过指定的代理商和日期,遍历代理商钱包流水记录表,往获取积分明细表插入数据*/
open cur_detail_trans;
detail_rec:loop
fetch cur_detail_trans into v_oper_type,v_money;
/* 如果没有找到记录,就跳出循环*/
if has_detail_row =1 then
leave detail_rec;
end if;
set v_count = v_count + 1;
/*根据钱包的类型,获取积分计算规则的类型*/
if v_oper_type =1 || v_oper_type =7 then
set vc_consume_type = 1 ;
end if;
if v_oper_type =2 then
set vc_consume_type =2;
end if;
/*获取积分比率和积分规则ID,地市id根据网点的地市id为先,要是网点对应的地市没有配置规则,就用默认的地市规则area_id =1 */
select r.rate,r.score_rule_seq into v_rate,v_score_rule from t_ebiz_score_rule r where r.consume_type = vc_consume_type and( abs(v_money)/100 between r.section_start and r.section_end) and r.area_id in( vc_area_id,'1') order by r.area_id desc limit 1;
set v_score = v_money * v_rate / 100;
insert into t_ebiz_get_score_detail (score_rule_seq,agency_id,create_time,create_staff,consume,score_amount)VALUES (v_score_rule,vc_agency_id,v_create_time,"system",v_money,v_score);
set v_total_score = v_total_score + v_score;
commit;
end loop detail_rec;
close cur_detail_trans;
end;
/*往表代理商积分信息表中插入记录 其中网点的积分值=网点最近日期的积分值 + 当天获取的积分值*/
select t.current_score into v_old_score from t_ebiz_score_info t where t.agency_id = vc_agency_id order by t.static_time desc limit 1;
insert into t_ebiz_score_info(agency_id,static_time,total_score,current_score) values(vc_agency_id,v_create_time,v_total_score,v_total_score+v_old_score);
commit;
end loop agency_rec;
close cur_agency_trans;
end
分享到:
相关推荐
开发商店积分管理系统为商店带来了巨大的改变,它具有强大的数据存储和计算能力,可以方便地进行经营管理的数据分析,并且能够加强商店与顾客之间的联系,提高顾客的忠诚度。因此,开发一个有效的商店积分管理系统...
2. **InnoDB作为默认存储引擎**:在MySQL5.5之前,MyISAM是默认的存储引擎,但5.5版本开始,InnoDB成为默认引擎,因为InnoDB支持事务处理和行级锁定,更适合大型企业应用。 3. **Full-text Search增强**:MySQL5.5...
- **存储过程**:利用存储过程实现复杂的业务逻辑,减少网络传输开销。 #### 五、系统亮点 - **高性能**:通过合理的架构设计和技术选型,确保系统在高并发场景下依然保持良好的响应速度。 - **易用性**:用户界面...
开发商店积分管理系统为商店带来了巨大的改变,它具有强大的数据存储和计算能力,可以方便地进行经营管理的数据分析,并且能够加强商店与顾客之间的联系,提高顾客的忠诚度。因此,开发一个有效的商店积分管理系统...
在本系统中,可能会有如“积分计算”、“会员管理”等不同的类,每个类代表一个特定的业务实体或功能。 数据库管理是系统的另一核心部分。可能采用关系型数据库如MySQL,用于存储会员信息、消费记录、积分余额等...
这些活动的积分计算需根据活动规则动态调整,并在活动期间内有效。 3. 积分有效期:积分并非永久有效,系统需设定积分的有效期,过期未使用的积分应自动清零。这有助于鼓励顾客定期消费以保持积分活跃。 二、通票...
开发商店积分管理系统为商店带来了巨大的改变,它具有强大的数据存储和计算能力,可以方便地进行经营管理的数据分析,并且能够加强商店与顾客之间的联系,提高顾客的忠诚度。因此,开发一个有效的商店积分管理系统...
- 积分计算:系统需要有准确的算法来计算每次消费的积分,这可能涉及到商品的单价、会员等级等因素。 - 积分有效期:积分通常设有有效期,过期未使用的积分可能会被清零。 - 积分查询:用户应能方便地查看自己的...
1. 数据库操作:积分信息通常存储在关系数据库中,如MySQL或Oracle,系统需要执行SQL语句来增加或更新积分记录。 2. 业务逻辑:根据不同的消费规则(如满额赠分、折扣换分等),系统需具备灵活的积分计算算法。 3. ...
26. **计算机发展历史**:ENIAC(埃克特-莫奇莱计算机公司的电子数值积分计算机)是世界上第一台实现存储程序的电子数字计算机。 27. **第二代计算机特点**:第二代计算机的主要特点是采用了晶体管作为基本元件,这...
本项目是一个基于Java的SSM框架开发的超市会员(积分)管理系统,采用了JSP作为前端展示技术,并结合MySQL数据库进行数据存储与管理。该系统旨在为超市提供一个完善的会员管理解决方案,通过积分机制激励会员消费,...
在业务逻辑实现上,积分点更新生成涉及用户消费后的积分计算规则。每次交易后,系统会根据消费金额自动计算并更新用户的积分。此外,通票回收处理可能涉及到通票的验证、状态更新以及积分的返还。当用户提交通票进行...
在Java编程语言中,"获取积分"通常是指在软件系统中处理用户积分的逻辑,这可能涉及到用户行为的记录、积分计算、积分存储以及积分查询等多个方面。在开发这样的功能时,我们需要关注以下几个核心知识点: 1. **...
- **数据库**:MySQL作为关系型数据库,存储系统数据。 - **服务器**:Tomcat作为Java Web应用服务器运行系统。 4. **系统设计原则**: - **高内聚低耦合**:确保各模块职责明确,减少模块间的相互依赖。 - **...
在本系统中,Java用于编写后端逻辑,处理数据存储、计算积分和通票管理等功能。 2. **POS系统**:Point of Sale(POS)系统是商家在销售点进行交易处理的软件硬件集成系统,包括收银机、扫描枪、打印机等硬件设备,...
商店积分管理系统具有强大的数据存储和计算能力,可以方便地进行经营管理的数据分析,并且能够加强商店与顾客之间的联系,提高顾客的忠诚度。 6. 商店积分管理系统的实施与维护 商店积分管理系统的实施与维护是非常...
数值计算涉及大量的数学运算,例如求解方程、数值积分、矩阵运算等。 ### 18. 端口号的概念 - **知识点**: 端口号的定义和作用。 - **解释**: 端口号是一个16位的二进制数,用于标识网络通信中的服务。每个端口都...