| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 |
- DROP PROCEDURE IF EXISTS `CALCLEVEL`;
- delimiter ;;
- CREATE PROCEDURE `CALCLEVEL`(IN `PCPID` INT)
- BEGIN
- DECLARE
- FLAG,
- MLAYER,
- MUSERTYPE INT DEFAULT 0;
- DECLARE
- MGPV,
- MLIMITPV DECIMAL ( 10, 2 );
-
- DECLARE
- MC CURSOR FOR SELECT
- LAYER
- FROM
- AR_BS_BONUS_103_CALC_NET T
- WHERE
- T.USER_TYPE = 30 GROUP BY LAYER ORDER BY LAYER DESC;
- DECLARE
- CONTINUE HANDLER FOR NOT FOUND
- SET FLAG = 1;
- START TRANSACTION;-- 打开游标
- OPEN MC;-- 获取结果
- L2 :
- LOOP
- FETCH MC INTO MLAYER;
- IF
- FLAG = 1 THEN-- 当无法FETCH会触发HANDLER CONTINUE
- LEAVE L2;
-
- END IF;
-
- -- 计算当前层数的奖金以及向上所贡献的奖金
- CALL CALCLEVEL_ ( MLAYER ,PCPID);
- END LOOP;
- CLOSE MC;
- /*WHILE
- ( MLAYER >= 0 ) DO-- 计算当前层数的奖金以及向上所贡献的奖金
- CALL CALCLEVEL_ ( MLAYER );
-
- SET MLAYER := MLAYER - 1;
-
- END WHILE;*/-- 级别更新
-
- UPDATE AR_BS_BONUS_103_CALC C1
- INNER JOIN AR_BS_BONUS_103_CALC_NET C2 ON C1.USER_ID = C2.USER_ID
- AND C1.USER_TYPE <> C2.USER_TYPE
- SET C1.USER_TYPE = C2.USER_TYPE;
-
- SELECT
- T.ACHIEVE_PV INTO MLIMITPV
- FROM
- AR_EMPLOY_LEVEL T
- WHERE
- T.ID = 'E121497617216708615';
- UPDATE AR_BS_BONUS_103_CALC SET USER_TYPE = 0 WHERE USER_TYPE = 10;
- UPDATE AR_BS_BONUS_103_CALC SET USER_TYPE = 10 WHERE GPV10 >= MLIMITPV AND USER_TYPE = 0;
-
- END
- ;;
|