| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262 |
- DROP PROCEDURE IF EXISTS `CALCLEVEL_kevin_01`;
- delimiter ;;
- CREATE PROCEDURE `CALCLEVEL_kevin_01`(IN PLAYER int, IN PCPID int)
- BEGIN
- DECLARE
- FLAG,
- MLAYER,
- MUSERTYPE INT DEFAULT 0;
- DECLARE
- MUSERID,
- MBONUSID,
- MNEWBONUSID VARCHAR ( 50 );
- DECLARE
- MRATE,
- MRATE30,
- MRATE40,
- MRATE50,
- MRATE60,
- MRATE70,
- MRATE80,
- MRATE90,
- MRATE100,
- MRATE110,
- MBONUS,
- MGPV DECIMAL ( 10, 2 );
- DECLARE
- MC CURSOR FOR SELECT
- C.USER_ID,
- C.TEAM_GPV
- FROM
- AR_BS_BONUS_103_CALC_NET C
- WHERE
- C.USER_TYPE >= 30
- AND LAYER = PLAYER;
- DECLARE
- CONTINUE HANDLER FOR NOT FOUND
- SET FLAG = 1;
- START TRANSACTION;
- SELECT
- T.BS_PERCENT / 100 INTO MRATE30
- FROM
- AR_EMPLOY_LEVEL T
- WHERE
- T.ID = 'E121497617216708616';
- SELECT
- T.BS_PERCENT / 100 INTO MRATE40
- FROM
- AR_EMPLOY_LEVEL T
- WHERE
- T.ID = '67BE6A4D03C52288E055736AECE8644D';
- SELECT
- T.BS_PERCENT / 100 INTO MRATE50
- FROM
- AR_EMPLOY_LEVEL T
- WHERE
- T.ID = '67BE6EA2070D22EBE055736AECE8644D';
- SELECT
- T.BS_PERCENT / 100 INTO MRATE60
- FROM
- AR_EMPLOY_LEVEL T
- WHERE
- T.ID = '67BE742A336F2370E055736AECE8644D';
- SELECT
- T.BS_PERCENT / 100 INTO MRATE70
- FROM
- AR_EMPLOY_LEVEL T
- WHERE
- T.ID = '67BE805032C22492E055736AECE8644D';
- SELECT
- T.BS_PERCENT / 100 INTO MRATE80
- FROM
- AR_EMPLOY_LEVEL T
- WHERE
- T.ID = '67BE82019BE524CAE055736AECE8644D';
- SELECT
- T.BS_PERCENT / 100 INTO MRATE90
- FROM
- AR_EMPLOY_LEVEL T
- WHERE
- T.ID = '99BE5FE7857C216AE055736AECE8644D';
- SELECT
- T.BS_PERCENT / 100 INTO MRATE100
- FROM
- AR_EMPLOY_LEVEL T
- WHERE
- T.ID = '99BE5FE9008C216AE055736AECE8644D';
- SELECT
- T.BS_PERCENT / 100 INTO MRATE110
- FROM
- AR_EMPLOY_LEVEL T
- WHERE
- T.ID = '99BE5FE7857C216AE000223AECE8644D';-- 打开游标
- OPEN MC;-- 获取结果
- L2 :
- LOOP
- FETCH MC INTO MUSERID,
- MGPV;
- IF
- FLAG = 1 THEN-- 当无法FETCH会触发HANDLER CONTINUE
- LEAVE L2;
- END IF;-- 这里是为了显示获取结果
- SET MLAYER := 1;
- SET MBONUSID := MUSERID;
- OUTER_LABEL :
- WHILE
- ( MLAYER <= 9 ) DO
- IF
- ( MLAYER > 1 ) THEN
- CALL CALCREFEREE ( MBONUSID, MNEWBONUSID );
- IF
- ( ISNULL( MNEWBONUSID ) OR MNEWBONUSID = 0 ) THEN
- LEAVE OUTER_LABEL;
- ELSE
- SET MBONUSID := MNEWBONUSID;
- END IF;
- END IF;
- IF
- ( MLAYER = 1 ) THEN
- SET MRATE := MRATE30;
- ELSEIF ( MLAYER = 2 ) THEN
- SET MRATE := MRATE40;
- ELSEIF ( MLAYER = 3 ) THEN
- SET MRATE := MRATE50;
- ELSEIF ( MLAYER = 4 ) THEN
- SET MRATE := MRATE60;
- ELSEIF ( MLAYER = 5 ) THEN
- SET MRATE := MRATE70;
- ELSEIF ( MLAYER = 6 ) THEN
- SET MRATE := MRATE80;
- ELSEIF ( MLAYER = 7 ) THEN
- SET MRATE := MRATE90;
- ELSEIF ( MLAYER = 8 ) THEN
- SET MRATE := MRATE100;
- ELSEIF ( MLAYER = 9 ) THEN
- SET MRATE := MRATE110;
- END IF;
- SET MBONUS := MGPV * MRATE;
- IF
- ( MLAYER = 1 ) THEN
- UPDATE AR_BS_BONUS_103_CALC T
- SET T.BONUS30 = T.BONUS30 + MBONUS
- WHERE
- T.USER_ID = MBONUSID;
- INSERT INTO AR_CALC_BONUS_BS_DETAIL_BONUS ( USER_ID, INTRODUCER_ID, LAST_EMP_LV, ORI_BONUS, PV, RATE,PERIOD_NUM )
- VALUES
- ( MBONUSID, NULL, 30, MBONUS, MGPV, MRATE ,PCPID);
- ELSEIF ( MLAYER = 2 ) THEN
- UPDATE AR_BS_BONUS_103_CALC T
- SET T.BONUS40 = T.BONUS40 + MBONUS
- WHERE
- T.USER_ID = MBONUSID;
- INSERT INTO AR_CALC_BONUS_BS_DETAIL_BONUS ( USER_ID, INTRODUCER_ID, LAST_EMP_LV, ORI_BONUS, PV, RATE,PERIOD_NUM )
- VALUES
- ( MBONUSID, MUSERID, 40, MBONUS, MGPV, MRATE ,PCPID);
- ELSEIF ( MLAYER = 3 ) THEN
- UPDATE AR_BS_BONUS_103_CALC T
- SET T.BONUS50 = T.BONUS50 + MBONUS
- WHERE
- T.USER_ID = MBONUSID;
- INSERT INTO AR_CALC_BONUS_BS_DETAIL_BONUS ( USER_ID, INTRODUCER_ID, LAST_EMP_LV, ORI_BONUS, PV, RATE,PERIOD_NUM )
- VALUES
- ( MBONUSID, MUSERID, 50, MBONUS, MGPV, MRATE,PCPID );
- ELSEIF ( MLAYER = 4 ) THEN
- UPDATE AR_BS_BONUS_103_CALC T
- SET T.BONUS60 = T.BONUS60 + MBONUS
- WHERE
- T.USER_ID = MBONUSID;
- INSERT INTO AR_CALC_BONUS_BS_DETAIL_BONUS ( USER_ID, INTRODUCER_ID, LAST_EMP_LV, ORI_BONUS, PV, RATE,PERIOD_NUM )
- VALUES
- ( MBONUSID, MUSERID, 60, MBONUS, MGPV, MRATE,PCPID );
- ELSEIF ( MLAYER = 5 ) THEN
- UPDATE AR_BS_BONUS_103_CALC T
- SET T.BONUS70 = T.BONUS70 + MBONUS
- WHERE
- T.USER_ID = MBONUSID;
- INSERT INTO AR_CALC_BONUS_BS_DETAIL_BONUS ( USER_ID, INTRODUCER_ID, LAST_EMP_LV, ORI_BONUS, PV, RATE,PERIOD_NUM )
- VALUES
- ( MBONUSID, MUSERID, 70, MBONUS, MGPV, MRATE,PCPID );
- ELSEIF ( MLAYER = 6 ) THEN
- UPDATE AR_BS_BONUS_103_CALC T
- SET T.BONUS80 = T.BONUS80 + MBONUS
- WHERE
- T.USER_ID = MBONUSID;
- INSERT INTO AR_CALC_BONUS_BS_DETAIL_BONUS ( USER_ID, INTRODUCER_ID, LAST_EMP_LV, ORI_BONUS, PV, RATE,PERIOD_NUM )
- VALUES
- ( MBONUSID, MUSERID, 80, MBONUS, MGPV, MRATE,PCPID );
- ELSEIF ( MLAYER = 7 ) THEN
- UPDATE AR_BS_BONUS_103_CALC T
- SET T.BONUS90 = T.BONUS90 + MBONUS
- WHERE
- T.USER_ID = MBONUSID;
- INSERT INTO AR_CALC_BONUS_BS_DETAIL_BONUS ( USER_ID, INTRODUCER_ID, LAST_EMP_LV, ORI_BONUS, PV, RATE,PERIOD_NUM )
- VALUES
- ( MBONUSID, MUSERID, 90, MBONUS, MGPV, MRATE,PCPID );
- ELSEIF ( MLAYER = 8 ) THEN
- UPDATE AR_BS_BONUS_103_CALC T
- SET T.BONUS100 = T.BONUS100 + MBONUS
- WHERE
- T.USER_ID = MBONUSID;
- INSERT INTO AR_CALC_BONUS_BS_DETAIL_BONUS ( USER_ID, INTRODUCER_ID, LAST_EMP_LV, ORI_BONUS, PV, RATE,PERIOD_NUM )
- VALUES
- ( MBONUSID, MUSERID, 100, MBONUS, MGPV, MRATE,PCPID );
- ELSEIF ( MLAYER = 9 ) THEN
- UPDATE AR_BS_BONUS_103_CALC T
- SET T.BONUS110 = T.BONUS110 + MBONUS
- WHERE
- T.USER_ID = MBONUSID;
- INSERT INTO AR_CALC_BONUS_BS_DETAIL_BONUS ( USER_ID, INTRODUCER_ID, LAST_EMP_LV, ORI_BONUS, PV, RATE,PERIOD_NUM )
- VALUES
- ( MBONUSID, MUSERID, 110, MBONUS, MGPV, MRATE,PCPID );
- END IF;-- 计算会员的级别
- UPDATE AR_BS_BONUS_103_CALC_NET T
- SET T.USER_TYPE = ( MLAYER + 2 )* 10
- WHERE
- T.USER_ID = MBONUSID
- AND USER_TYPE <=(
- MLAYER + 1
- )* 10;
- SET MLAYER := MLAYER + 1;
- END WHILE;-- 关闭游标
- END LOOP;
- CLOSE MC;
- COMMIT;
- END
- ;;
|