CALC20_0.sql 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. DROP PROCEDURE IF EXISTS `CALC20_0`;
  2. delimiter ;;
  3. CREATE PROCEDURE `CALC20_0`(IN PLAYER INT,IN `PCPID` INT)
  4. BEGIN
  5. DECLARE
  6. FLAG INT DEFAULT 0;
  7. DECLARE
  8. MUSERID,
  9. MMAXUSERID VARCHAR ( 50 );
  10. DECLARE
  11. MGPV DECIMAL ( 10, 2 );
  12. DECLARE
  13. ACHIEVEPV DECIMAL ( 10, 2 );
  14. DECLARE
  15. MC CURSOR FOR SELECT
  16. C.USER_ID
  17. FROM
  18. AR_BS_BONUS_103_CALC_NET C
  19. WHERE
  20. C.DIRECTLY_UNDER >= 2
  21. AND C.USER_TYPE = 0
  22. AND LAYER = PLAYER;
  23. DECLARE
  24. CONTINUE HANDLER FOR NOT FOUND
  25. SET FLAG = 1;-- 打开游标
  26. OPEN MC;-- 获取结果
  27. L2 :
  28. LOOP
  29. FETCH MC INTO MUSERID;
  30. IF
  31. FLAG = 1 THEN-- 当无法FETCH会触发HANDLER CONTINUE
  32. LEAVE L2;
  33. END IF;-- 这里是为了显示获取结果
  34. SELECT
  35. MIN( GPV ) INTO MGPV
  36. FROM
  37. AR_BS_BONUS_103_CALC_NET C
  38. WHERE
  39. C.INTRODUCER_ID = MUSERID
  40. AND C.USER_TYPE >= 10;
  41. SELECT
  42. MAX( USER_ID ) INTO MMAXUSERID
  43. FROM
  44. AR_BS_BONUS_103_CALC_NET C
  45. WHERE
  46. C.INTRODUCER_ID = MUSERID
  47. AND C.GPV = MGPV;
  48. SELECT
  49. ACHIEVE_PV INTO ACHIEVEPV
  50. FROM
  51. AR_EMPLOY_LEVEL
  52. WHERE ID ='E121497617216708615';
  53. IF MGPV >= ACHIEVEPV THEN
  54. UPDATE AR_BS_BONUS_103_CALC_NET C
  55. SET C.USER_TYPE = 20,
  56. C.GPV = ACHIEVEPV
  57. WHERE
  58. USER_ID = MUSERID;
  59. UPDATE AR_BS_BONUS_103_CALC_NET C
  60. SET C.GPV = MGPV - ACHIEVEPV
  61. WHERE
  62. USER_ID = MMAXUSERID;
  63. INSERT INTO AR_CALC_BONUS_BS_DETAIL_GPV(USER_ID,INTRODUCER_ID,GPV,PERIOD_NUM)
  64. VALUES(MMAXUSERID,MUSERID,ACHIEVEPV,PCPID);
  65. ELSE
  66. UPDATE AR_BS_BONUS_103_CALC_NET C
  67. SET C.USER_TYPE = 20,
  68. C.GPV = MGPV
  69. WHERE
  70. USER_ID = MUSERID;
  71. UPDATE AR_BS_BONUS_103_CALC_NET C
  72. SET C.GPV = 0
  73. WHERE
  74. USER_ID = MMAXUSERID;
  75. INSERT INTO AR_CALC_BONUS_BS_DETAIL_GPV(USER_ID,INTRODUCER_ID,GPV,PERIOD_NUM)
  76. VALUES(MMAXUSERID,MUSERID,MGPV,PCPID);
  77. END IF;
  78. END LOOP;
  79. -- 关闭游标
  80. CLOSE MC;
  81. END
  82. ;;