CALCLEVEL_.sql 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125
  1. DROP PROCEDURE IF EXISTS `CALCLEVEL_`;
  2. CREATE PROCEDURE `CALCLEVEL_`(IN `PLAYER` INT,IN `PCPID` INT)
  3. BEGIN
  4. DECLARE
  5. FLAG,
  6. MLAYER,
  7. MUSERTYPE INT DEFAULT 0;
  8. DECLARE
  9. MUSERID,
  10. MBONUSID,
  11. MNEWBONUSID VARCHAR ( 50 );
  12. DECLARE
  13. MGPV DECIMAL ( 10, 2 );
  14. DECLARE
  15. MC CURSOR FOR SELECT
  16. C.USER_ID,
  17. C.TEAM_GPV
  18. FROM
  19. AR_BS_BONUS_103_CALC_NET C
  20. WHERE
  21. C.USER_TYPE >= 30
  22. AND LAYER = PLAYER;
  23. DECLARE
  24. CONTINUE HANDLER FOR NOT FOUND
  25. SET FLAG = 1;
  26. START TRANSACTION;
  27. -- 打开游标
  28. OPEN MC;-- 获取结果
  29. L2 :
  30. LOOP
  31. FETCH MC INTO MUSERID,
  32. MGPV;
  33. IF
  34. FLAG = 1 THEN-- 当无法FETCH会触发HANDLER CONTINUE
  35. LEAVE L2;
  36. END IF;-- 这里是为了显示获取结果
  37. SET MLAYER := 1;
  38. SET MBONUSID := MUSERID;
  39. OUTER_LABEL :
  40. WHILE
  41. ( MLAYER <= 9 ) DO
  42. IF
  43. ( MLAYER > 1 ) THEN
  44. CALL CALCREFEREE ( MBONUSID, MNEWBONUSID );
  45. IF
  46. ( ISNULL( MNEWBONUSID ) OR MNEWBONUSID = 0 ) THEN
  47. LEAVE OUTER_LABEL;
  48. ELSE
  49. SET MBONUSID := MNEWBONUSID;
  50. END IF;
  51. END IF;
  52. IF
  53. ( MLAYER = 1 ) THEN
  54. INSERT INTO AR_CALC_BONUS_BS_DETAIL_BONUS ( USER_ID, INTRODUCER_ID, LAST_EMP_LV, PV, PERIOD_NUM )
  55. VALUES
  56. ( MBONUSID, NULL, 30, MGPV ,PCPID);
  57. ELSEIF ( MLAYER = 2 ) THEN
  58. INSERT INTO AR_CALC_BONUS_BS_DETAIL_BONUS ( USER_ID, INTRODUCER_ID, LAST_EMP_LV, PV, PERIOD_NUM )
  59. VALUES
  60. ( MBONUSID, MUSERID, 40, MGPV,PCPID);
  61. ELSEIF ( MLAYER = 3 ) THEN
  62. INSERT INTO AR_CALC_BONUS_BS_DETAIL_BONUS ( USER_ID, INTRODUCER_ID, LAST_EMP_LV, PV, PERIOD_NUM )
  63. VALUES
  64. ( MBONUSID, MUSERID, 50, MGPV, PCPID );
  65. ELSEIF ( MLAYER = 4 ) THEN
  66. INSERT INTO AR_CALC_BONUS_BS_DETAIL_BONUS ( USER_ID, INTRODUCER_ID, LAST_EMP_LV, PV, PERIOD_NUM )
  67. VALUES
  68. ( MBONUSID, MUSERID, 60, MGPV, PCPID );
  69. ELSEIF ( MLAYER = 5 ) THEN
  70. INSERT INTO AR_CALC_BONUS_BS_DETAIL_BONUS ( USER_ID, INTRODUCER_ID, LAST_EMP_LV, PV, PERIOD_NUM )
  71. VALUES
  72. ( MBONUSID, MUSERID, 70, MGPV, PCPID );
  73. ELSEIF ( MLAYER = 6 ) THEN
  74. INSERT INTO AR_CALC_BONUS_BS_DETAIL_BONUS ( USER_ID, INTRODUCER_ID, LAST_EMP_LV, PV, PERIOD_NUM )
  75. VALUES
  76. ( MBONUSID, MUSERID, 80, MGPV, PCPID );
  77. ELSEIF ( MLAYER = 7 ) THEN
  78. INSERT INTO AR_CALC_BONUS_BS_DETAIL_BONUS ( USER_ID, INTRODUCER_ID, LAST_EMP_LV, PV, PERIOD_NUM )
  79. VALUES
  80. ( MBONUSID, MUSERID, 90, MGPV, PCPID );
  81. ELSEIF ( MLAYER = 8 ) THEN
  82. INSERT INTO AR_CALC_BONUS_BS_DETAIL_BONUS ( USER_ID, INTRODUCER_ID, LAST_EMP_LV, PV, PERIOD_NUM )
  83. VALUES
  84. ( MBONUSID, MUSERID, 100, MGPV, PCPID );
  85. ELSEIF ( MLAYER = 9 ) THEN
  86. INSERT INTO AR_CALC_BONUS_BS_DETAIL_BONUS ( USER_ID, INTRODUCER_ID, LAST_EMP_LV, PV, PERIOD_NUM )
  87. VALUES
  88. ( MBONUSID, MUSERID, 110, MGPV, PCPID );
  89. END IF;-- 计算会员的级别
  90. UPDATE AR_BS_BONUS_103_CALC_NET T
  91. SET T.USER_TYPE = ( MLAYER + 2 )* 10
  92. WHERE
  93. T.USER_ID = MBONUSID
  94. AND USER_TYPE <=(
  95. MLAYER + 1
  96. )* 10;
  97. SET MLAYER := MLAYER + 1;
  98. END WHILE;-- 关闭游标
  99. END LOOP;
  100. CLOSE MC;
  101. COMMIT;
  102. END
  103. ;;