这个也是做的项目,保存做个备份先。

UCENTER里的 兑换

ucenter_reducelfb //调用数据 call ucenter_reducelfb(参数1,参数2,....)

DELIMITER $USE `root`$DROP PROCEDURE IF EXISTS `ucenter_reducelfb`$CREATE DEFINER=`root`@`localhost` PROCEDURE `ucenter_reducelfb`(in_appid INT,in_tel VARCHAR(11),in_num INT,in_oreason VARCHAR(1000))
/*by 夜色紫宸風 2011-10-25
*/
BEGIN
DECLARE t_tel VARCHAR(11) DEFAULT '';
DECLARE t_uid INT DEFAULT 0;
DECLARE t_uid2 INT DEFAULT 0;
DECLARE t_extcredits2 INT DEFAULT 0;
/*来福币设置*/
DECLARE t_tablename VARCHAR(100) DEFAULT 0;/*来福币表名称*/
DECLARE t_month VARCHAR(10) DEFAULT '';/*本月初*/
DECLARE t_month_next VARCHAR(10) DEFAULT '';/*下月初*/
DECLARE t_day VARCHAR(10) DEFAULT '';/*今天*/
DECLARE t_day_next VARCHAR(10) DEFAULT '';/*明天*/
DECLARE t_total INT DEFAULT 0;/*累计*/
/*兑换来福币设置*/
DECLARE t_appid INT DEFAULT 0;
DECLARE t_lfbeachmax INT DEFAULT 0;/*单次兑换数值大于配置的值*/
DECLARE t_lfblimit INT DEFAULT 0;/*剩余来福币*/
DECLARE t_lfbpersondaymax INT DEFAULT 0;/*用户当天累计大于配置的值*/
DECLARE t_lfbpersonmonthmax INT DEFAULT 0;/*用户当月累计大于配置的值*/
DECLARE t_lfbappdaymax INT DEFAULT 0;/*应用当天累计大于配置的值*/
DECLARE t_lfbappmonthmax INT DEFAULT 0;/*应用当月累计大于配置的值*/
DECLARE t_operate VARCHAR(10);DECLARE t_check INT DEFAULT 0;
DECLARE out_return INT DEFAULT 0;
DECLARE tmp INT DEFAULT 0;
DECLARE t_ym INT DEFAULT 0;SET t_tablename=CONCAT('sz_app_credit_log_',DATE_FORMAT(NOW() ,'%Y%m'));SET @sqlstr = CONCAT('CREATE TABLE IF NOT EXISTS `',t_tablename,'` (',
'`lid` int(11) NOT NULL AUTO_INCREMENT,',
'`uid` int(11) NOT NULL DEFAULT 0,',
'`operate` enum(''query'',''add'',''reduce'') NOT NULL,',
'`appid` int(11) NOT NULL DEFAULT 0,',
'`ovalue` int(11) NOT NULL DEFAULT 0,',
'`ostatus` int(11) NOT NULL DEFAULT 0,',
'`oreason` varchar(255) NOT NULL,',
'`dateline` int(11) NOT NULL DEFAULT 0,',
'`credittype` tinyint(4) NOT NULL,',
'PRIMARY KEY (`lid`)',
') ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;');
PREPARE stmt FROM @sqlstr;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;SELECT uid,tel INTO t_uid,t_tel FROM sz_ucenter_members WHERE tel=in_tel;IF t_uid>0 THEN/*检测主站是否存在该用户*/SELECT uid,extcredits2 INTO t_uid2,t_extcredits2 FROM sz_common_member_count WHERE uid=t_uid;IF t_uid2>0 THEN/*兑换来福币检测开始-----------------------------------------------*/SET t_operate='reduce';SELECT appid,lfbeachmax,lfblimit,lfbpersondaymax,lfbpersonmonthmax,lfbappdaymax,lfbappmonthmax INTO t_appid,t_lfbeachmax,t_lfblimit,t_lfbpersondaymax,t_lfbpersonmonthmax,t_lfbappdaymax,t_lfbappmonthmax FROM sz_app_credit_config WHERE appid = in_appid;IF t_appid>0 THEN/*单次兑换数值大于配置的值*/IF in_num>t_lfbeachmax THENSET t_check=-12;ELSEIF t_operate='reduce' THEN/*用户来福币不足兑换*/IF (t_extcredits2-in_num)<t_lfblimit THENSET t_check=-12;ELSEIF (t_extcredits2-in_num)<0 THENSET t_check=-12;    END IF;END IF;END IF;SET t_day=UNIX_TIMESTAMP(DATE_FORMAT(NOW() ,'%Y-%m-%d'));SET t_day_next=UNIX_TIMESTAMP(DATE_ADD(DATE_FORMAT(NOW() ,'%Y-%m-%d'),INTERVAL 1 DAY));SET t_month=UNIX_TIMESTAMP(DATE_FORMAT(NOW() ,'%Y-%m-01'));SET t_month_next=UNIX_TIMESTAMP(DATE_ADD(DATE_FORMAT(NOW() ,'%Y-%m-01'),INTERVAL 1 MONTH));LABLEpersonday : BEGINIF t_check<0 THENLEAVE LABLEpersonday;END IF;/*比较当天累计*/SET @sqlstr = CONCAT('select sum(ovalue) INTO @total FROM ',t_tablename,' where appid=',in_appid,' and credittype =1  and uid=',t_uid,' and operate=''',t_operate,'''  and  dateline>=',t_day,' AND dateline<',t_day_next);PREPARE stmt FROM @sqlstr;EXECUTE stmt;DEALLOCATE PREPARE stmt;SET t_total=IFNULL(@total,0);/*用户当天累计大于配置的值*/IF (t_total+in_num)>t_lfbpersondaymax THENSET t_check=-13;END IF;END LABLEpersonday;/*比较当月累计*/LABLEpersonmonth : BEGINIF t_check<0 THENLEAVE LABLEpersonmonth;END IF;SET @sqlstr = CONCAT('select sum(ovalue) INTO @total FROM ',t_tablename,' where appid =',in_appid,' and credittype =1 and uid=',t_uid,' and operate =''',t_operate,''' and dateline>=',t_month,' and dateline <',t_month_next);PREPARE stmt FROM @sqlstr;EXECUTE stmt;DEALLOCATE PREPARE stmt;SET t_total=IFNULL(@total,0);/*用户当月累计大于配置的值*/IF (t_total+in_num)>t_lfbpersonmonthmax THENSET t_check=-14;END IF;END LABLEpersonmonth;/*比较应用当天累计*/LABLEappday : BEGINIF t_check<0 THENLEAVE LABLEappday;END IF;SET @sqlstr = CONCAT('select sum(ovalue) INTO @total FROM ',t_tablename,' where appid =',in_appid,' and credittype = 1  and operate =''',t_operate,''' and dateline>=',t_day,' and dateline <',t_day_next);PREPARE stmt FROM @sqlstr;EXECUTE stmt;DEALLOCATE PREPARE stmt;SET t_total=IFNULL(@total,0);/*应用当天累计大于配置的值*/IF (t_total+in_num)>t_lfbappdaymax THENSET t_check=-15;END IF;END LABLEappday;/*比较当月累计*/LABLEappmonth : BEGINIF t_check<0 THENLEAVE LABLEappmonth;END IF;SET @sqlstr = CONCAT('select sum(ovalue) INTO @total FROM ',t_tablename,' where appid=',in_appid,' and credittype =1  and operate =''',t_operate,''' and dateline>=',t_month,' and dateline<',t_month_next);PREPARE stmt FROM @sqlstr;EXECUTE stmt;DEALLOCATE PREPARE stmt;SET t_total=IFNULL(@total,0);/*应用当月累计大于配置的值*/IF (t_total+in_num)>t_lfbappmonthmax THENSET t_check=-16;ELSE/*符合兑换条件*/SET t_check=1;END IF;END LABLEappmonth;END IF;ELSE/*该应用没有配置积分兑换限制或者没有该应用*/SET t_check=-11;END IF;/*兑换来福币检测结束-----------------------------------------------*/IF t_check=1 THEN/*判断用户积分是否足够*/IF t_extcredits2<in_num THEN/*来福币操作日志*/SET tmp= common_lfbchange_log(in_appid,in_tel,in_num,2,in_oreason,4);SET t_check=-3;SET out_return= -3;ELSE/*更新用户积分*/UPDATE sz_common_member_count SET extcredits2 =extcredits2-in_num WHERE uid=t_uid;/*查询用户积分*/SELECT extcredits2 INTO t_extcredits2 FROM sz_common_member_count WHERE uid=t_uid;/*写更新日志*/SET @sqlstr=CONCAT('INSERT INTO ',t_tablename,' (`uid`,`operate`,`credittype`,`appid`,`ovalue`,`oreason`,`dateline`,`ostatus`) values (',t_uid,',''reduce'',1,',in_appid,',',in_num,',''',in_oreason,''',',UNIX_TIMESTAMP(NOW()),',',t_extcredits2,')');PREPARE stmt FROM @sqlstr;EXECUTE stmt;DEALLOCATE PREPARE stmt;/*来福币操作日志*/SET tmp= common_lfbchange_log(in_appid,in_tel,in_num,2,in_oreason,0);SET out_return= t_extcredits2;END IF;ELSE/*来福币操作日志*/SET tmp= common_lfbchange_log(in_appid,in_tel,in_num,2,in_oreason,t_check);SET out_return= t_check;END IF;/*苏州生活网不存在该用户*/ELSE/*来福币日志*/SET tmp= common_lfbchange_log(in_appid,in_tel,in_num,2,in_oreason,2);SET out_return=-1;END IF;
/*ucenter 中不存在该用户*/
ELSE/*来福币日志*/SET tmp= common_lfbchange_log(in_appid,in_tel,in_num,2,in_oreason,1);SET out_return= -1;
END IF;
SELECT out_return;
END$DELIMITER ;

common_lfbchange_log

DELIMITER $USE `root`$DROP FUNCTION IF EXISTS `common_lfbchange_log`$CREATE DEFINER=`root`@`localhost` FUNCTION `common_lfbchange_log`(in_appid INT,in_tel VARCHAR(11),in_num INT,in_type INT,in_oreason VARCHAR(500),in_result INT) RETURNS INT(11)NO SQLCOMMENT 'type 1:添加 2:减少\r\nresult  0:成功 1:ucenter中没有该用户 2:苏州生活网中不存在该用户'
BEGIN
/*by 夜色紫宸風 2011-10-25
*/
INSERT INTO sz_common_lfbchange_log (`appid`,`tel`,`num`,`type`,`oreason`,`result`,`dateline`) VALUES (in_appid,in_tel,in_num,in_type,in_oreason,in_result,UNIX_TIMESTAMP(NOW()));
RETURN 0;
END$DELIMITER ;

MYSQL 存储过程和函数 案例 例子相关推荐

  1. mysql存储过程与函数、触发器、游标、变量等知识点详解

    引言:该文章仅供自己学习整理 mysql执行顺序 语法顺序 写sql的关键字顺序 select [distinct] from join(如left join) on where group by h ...

  2. mysql存储过程的一个小例子

    目录标题 mysql存储过程的一个小例子 mysql存储过程的一个小例子 1.首先创建一张表来供我们学习存储过程 三个字段,分别为:id.name.age 其中 id为自增字段,name与age不能为 ...

  3. WebDay18 MySQL存储过程 存储函数 触发器 事务

    MySQL存储过程 存储函数 触发器 事务 一.MySQL存储过程和函数 1.存储过程和函数的概念 2.存储过程和函数的好处 3.存储过程和函数的区别 4.创建存储过程 5.调用存储过程 6.查看存储 ...

  4. mysql存储过程或函数中传入参数与表字段名相同引发的悲剧

    真实案例.如下的一个存储过程: create procedure Apple(in user_id int) begin delete from users where user_id = user_ ...

  5. 【MySQL学习】4、MySQL存储过程和函数

    文章目录 1.存储过程和函数概念 2.存储过程的使用 (1)创建存储过程 (2)调用存储过程 (3)查看存储过程 (4)删除存储过程 3.存储过程的语法 (1)声明变量 (2)if条件判断 (3)传递 ...

  6. Mysql学习总结(11)——MySql存储过程与函数

    2019独角兽企业重金招聘Python工程师标准>>> 摘要:存储过程和函数是在数据库中定义一些SQL语句的集合,然后直接调用这些存储过程和函数来执行已经定义好的SQL语句.存储过程 ...

  7. MySql存储过程与函数

    林炳文Evankaka原创作品.转载请注明出处http://blog.csdn.net/evankaka 摘要:存储过程和函数是在数据库中定义一些SQL语句的集合,然后直接调用这些存储过程和函数来执行 ...

  8. mysql 存储过程与函数_12 MySQL存储过程与函数

    存储过程和函数 存储过程和函数是事先经过编译并存储在数据库中的一段SQL语句的集合. 调用存储过程和函数可以简化应用开发人员的工作,减少数据在数据库和应用服务器之间的传输,提高数据处理的效率. 存储过 ...

  9. MySQL存储过程和函数示例

    存储过程和函数是在数据库中定义的一些SQL语句的集合,然后直接调用这些存储过程和函数来执行定义好的SQL语句.存储过程和函数可以避免开发人员重复的编写相同的SQL语句,而且存储过程和函数是在MySQL ...

  10. 争议?MySQL存储过程与函数,封装,体,完整详细可收藏

    文章目录 1. 存储过程概述 2. 创建存储过程 3. 调用存储过程 4. 存储函数的使用 5. 存储过程和函数的查看.修改.删除 6. 关于存储过程使用的争议 MySQL从5.0版本开始支持存储过程 ...

最新文章

  1. 从json到抽取关键词
  2. 任意进制转换的递归实现
  3. 对“纯手工编写的第一个Hibernate程序”的改进
  4. exlsx表格教程_用Ctrl+E处理Excel表格,快到你无法想象!
  5. 区块链BaaS云服务(7)微软Azure区块链服务
  6. Sql Server2005性能
  7. boost::mpl模块实现lower_bound相关的测试程序
  8. java中main函数的args参数
  9. 【bzoj4444】[Scoi2015]国旗计划 倍增
  10. 基于STM32L476的锂电池SOC检测
  11. LeetCode之存在重复元素
  12. 华为服务器 修改为传统模式,电脑设置成服务器模式
  13. HTML动态分页函数
  14. 大厂面试爱问的「调度算法」,20 张图一举拿下
  15. phpcms一键清理数据后完整找回数据
  16. VS连接数据库运行后显示对象名无效
  17. 利用incapsula缓解ddos攻击
  18. 03 计算机视觉-opencv图像形态学处理
  19. 学习java随堂练习-20220610
  20. 一年内经验前端面试题记录

热门文章

  1. Delphi初浅入门笔记之六:高级数据类型
  2. MaxEnt: 最大熵模型(Maximum Entropy Models)(一)
  3. 递归经典案例汉诺塔 python实现_python实现汉诺塔递归算法经典案例
  4. LeetCode4 寻找两个正序数组的中位数
  5. (3)数据结构-线性表链式存储
  6. 使用IDEA 开发一个安卓HelloWorld的步骤
  7. struts教程笔记1
  8. 3、plt.figure()和Axes类
  9. PyTorch绘制训练过程的accuracy和loss曲线
  10. 使用TensorFlow在Transformers 上生成字幕的注意机制的实现