/[LeafOK_CVS]/fenglin/manage/score_calculate.php
ViewVC logotype

Annotation of /fenglin/manage/score_calculate.php

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.6 - (hide annotations)
Tue Apr 29 03:37:21 2025 UTC (10 months, 2 weeks ago) by sysadm
Branch: MAIN
Changes since 1.5: +6 -10 lines
Fix bug

1 sysadm 1.3 <?php
2 sysadm 1.4 if (isset($_SERVER["argv"]))
3 sysadm 1.1 {
4 sysadm 1.4 chdir(dirname($_SERVER["argv"][0]));
5 sysadm 1.1 }
6    
7     require_once "../lib/common.inc.php";
8     require_once "../lib/db_open.inc.php";
9    
10     if (!isset($_SERVER["argc"]))
11     {
12     require_once "../bbs/session_init.inc.php";
13    
14     force_login();
15 sysadm 1.6
16     if (!(isset($_SESSION["BBS_priv"]) && $_SESSION["BBS_priv"]->checklevel(P_ADMIN_M | P_ADMIN_S)))
17     {
18     echo ("没有权限!");
19     exit();
20     }
21 sysadm 1.1 }
22    
23     $result_set = array(
24     "return" => array(
25     "code" => 0,
26     "message" => "",
27     "errorFields" => array(),
28     )
29     );
30    
31     header("Content-Type:application/json; charset=utf-8");
32    
33     // Begin transaction
34     $rs = mysqli_query($db_conn, "SET autocommit=0");
35     if ($rs == false)
36     {
37     $result_set["return"]["code"] = -2;
38     $result_set["return"]["message"] = "Mysqli error: " . mysqli_error($db_conn);
39    
40     mysqli_close($db_conn);
41     exit(json_encode($result_set));
42     }
43 sysadm 1.5
44 sysadm 1.1 $rs = mysqli_query($db_conn, "BEGIN");
45     if ($rs == false)
46     {
47     $result_set["return"]["code"] = -2;
48     $result_set["return"]["message"] = "Mysqli error: " . mysqli_error($db_conn);
49    
50     mysqli_close($db_conn);
51     exit(json_encode($result_set));
52     }
53    
54     $sql = "SELECT user_list.UID, exp FROM user_list
55     INNER JOIN user_pubinfo ON user_list.UID = user_pubinfo.UID
56     WHERE enable";
57    
58     $rs = mysqli_query($db_conn, $sql);
59     if ($rs == false)
60     {
61     $result_set["return"]["code"] = -2;
62     $result_set["return"]["message"] = "Query exp error: " . mysqli_error($db_conn);
63    
64     mysqli_close($db_conn);
65     exit(json_encode($result_set));
66     }
67    
68     while ($row = mysqli_fetch_array($rs))
69     {
70 sysadm 1.2 $sql = "SELECT last_exp, exp_left FROM user_score WHERE UID = " .
71     $row["UID"] . " FOR UPDATE";
72 sysadm 1.1
73     $rs_score = mysqli_query($db_conn, $sql);
74     if ($rs_score == false)
75     {
76     $result_set["return"]["code"] = -2;
77     $result_set["return"]["message"] = "Query score error: " . mysqli_error($db_conn);
78 sysadm 1.5
79 sysadm 1.1 mysqli_close($db_conn);
80     exit(json_encode($result_set));
81     }
82    
83     if ($row_score = mysqli_fetch_array($rs_score))
84     {
85     $exp_left = $row["exp"] - $row_score["last_exp"] + $row_score["exp_left"];
86    
87     $sql = "UPDATE user_score SET last_exp = " . $row["exp"] .
88     " WHERE UID = " . $row["UID"];
89    
90     $ret = mysqli_query($db_conn, $sql);
91     if ($ret == false)
92     {
93     $result_set["return"]["code"] = -2;
94     $result_set["return"]["message"] = "Update score error: " . mysqli_error($db_conn);
95 sysadm 1.5
96 sysadm 1.1 mysqli_close($db_conn);
97     exit(json_encode($result_set));
98     }
99     }
100     else
101     {
102     $exp_left = $row["exp"];
103    
104     $sql = "INSERT INTO user_score(UID, last_exp) VALUES(" .
105     $row["UID"] . ", " . $row["exp"] . ")";
106    
107     $ret = mysqli_query($db_conn, $sql);
108     if ($ret == false)
109     {
110     $result_set["return"]["code"] = -2;
111     $result_set["return"]["message"] = "Insert score error: " . mysqli_error($db_conn);
112 sysadm 1.5
113 sysadm 1.1 mysqli_close($db_conn);
114     exit(json_encode($result_set));
115     }
116     }
117    
118     mysqli_free_result($rs_score);
119 sysadm 1.5
120 sysadm 1.1 $score_change = intdiv($exp_left, $BBS_exp_score_rate);
121     $exp_left %= $BBS_exp_score_rate;
122    
123     if ($score_change != 0)
124     {
125     $sql = "UPDATE user_score SET score = score + ($score_change), exp_left = $exp_left
126     WHERE UID = " . $row["UID"];
127    
128     $ret = mysqli_query($db_conn, $sql);
129     if ($ret == false)
130     {
131     $result_set["return"]["code"] = -2;
132     $result_set["return"]["message"] = "Update score error: " . mysqli_error($db_conn);
133    
134     mysqli_close($db_conn);
135     exit(json_encode($result_set));
136     }
137    
138     $sql = "INSERT INTO user_score_log(UID, score_change, reason, dt)
139     VALUES(" . $row["UID"] . ", $score_change, '积分计算', NOW())";
140     $ret = mysqli_query($db_conn, $sql);
141     if ($ret == false)
142     {
143     $result_set["return"]["code"] = -2;
144     $result_set["return"]["message"] = "Add log error: " . mysqli_error($db_conn);
145    
146     mysqli_close($db_conn);
147     exit(json_encode($result_set));
148     }
149     }
150     }
151    
152     mysqli_free_result($rs);
153    
154     // Commit transaction
155     $rs = mysqli_query($db_conn, "COMMIT");
156     if ($rs == false)
157     {
158     $result_set["return"]["code"] = -2;
159     $result_set["return"]["message"] = "Mysqli error: " . mysqli_error($db_conn);
160    
161     mysqli_close($db_conn);
162     exit(json_encode($result_set));
163     }
164    
165     mysqli_close($db_conn);
166     exit(json_encode($result_set));
167     ?>

webmaster@leafok.com
ViewVC Help
Powered by ViewVC 1.3.0-beta1