good balance

master
cn.yimian.xyz 4 years ago
parent bc64b12f06
commit 004aea3fa3
  1. 26
      api/checkout.php
  2. 16
      api/functions.php
  3. 9
      api/joinTable.php
  4. 6
      api/newItem.php
  5. 10
      index.html

@ -22,8 +22,26 @@ $data = getFinalData($cnn, $tableId);
echo '<script>alert("您已退出!请根据邮件提示进行checkout!!");window.location.href="https://cp-acc.yimian.xyz/"</script>';
db__pushData($cnn, "user", array(
"state" => '0',
"updated_at" => date("Y-m-d H:i:s", time())
), array(
"user" => $hash,
"table" => $tableId
));
$itemId = hash('sha256', time().$hash.$tableId.rand(222,999));
db__pushData($cnn, "account", array(
"id" => $itemId,
"table" => $tableId,
"user" => $hash,
"type" => 'placeholde',
"state" => '0',
"value" => -$data['average'],
"created_at" => date("Y-m-d H:i:s", time())
));
/* close connection */
ob_end_flush();
flush();
@ -36,7 +54,6 @@ set_time_limit(0);
if($data['average'] > $data['virtualTotals'][$hash]){
foreach($data['users'] as $user){
$to = $user;
@ -54,11 +71,4 @@ if($data['average'] < $data['virtualTotals'][$hash]){
}
db__pushData($cnn, "user", array(
"state" => '0',
"updated_at" => date("Y-m-d H:i:s", time())
), array(
"user" => $hash,
"table" => $tableId
));

@ -694,7 +694,7 @@ function getTotals($tableData){
$data = $tableData;
$data['total'] = 0;
foreach($data['items'] as $index=>$item){
$data['total'] += $item['value'];
if($item['type'] == 'external') $data['total'] += $item['value'];
$data['items'][$index]['timestamp'] = strtotime($item['created_at']);
}
@ -705,7 +705,7 @@ function getTotals($tableData){
$virtualTotal = 0;
foreach($data['items'] as $item){
if($item['user'] == $user){
if($item['state'] == 1){
if($item['type'] == 'external' || (($item['type'] == 'innerF' || $item['type'] == 'innerT') && $item['state'] == '1')){
$actualTotal += $item['value'];
}
$virtualTotal += $item['value'];
@ -719,9 +719,15 @@ function getTotals($tableData){
}
function getAverage($tableData){
$tableData['average'] = $tableData['total'] / count($tableData['users']);
return $tableData;
function getAverage($data){
$data['average'] = 0;
foreach($data['items'] as $item){
if($item['type'] == 'external' || $item['type'] == 'placeholde'){
$data['average'] += $item['value'];
}
};
$data['average'] = $data['average'] / count($data['users']);
return $data;
}
function getUsersInfo($tableData){

@ -10,11 +10,11 @@ if(!isset($hash) || !isset($tableId) || strlen($hash)<60 || strlen($tableId)<60)
$cnn = db__connect();
$data = getFinalData($cnn, $tableId);
if(!db__rowNum($cnn, "user", "user", $hash, "table", $tableId, "state", "1")){
$itemId = hash('sha256', time().$hash.$tableId.rand(222,999));
$data = getFinalData($cnn, $tableId);
$itemId = hash('sha256', time().$hash.$tableId.rand(222,999));
db__pushData($cnn, "account", array(
"id" => $itemId,
"table" => $tableId,
@ -24,7 +24,7 @@ if(!db__rowNum($cnn, "user", "user", $hash, "table", $tableId, "state", "1")){
"value" => $data['average'],
"created_at" => date("Y-m-d H:i:s", time())
));
}
db__pushData($cnn, "user", array(
"user" => $hash,
"table" => $tableId,
@ -34,6 +34,9 @@ if(!db__rowNum($cnn, "user", "user", $hash, "table", $tableId, "state", "1")){
"user" => $hash,
"table" => $tableId
));
}
setcookie("tableId", $tableId, time()+3600*12*60*365, "/");

@ -66,7 +66,11 @@ while(!checkBalance($data, $threshold)){
end($data['virtualTotals']);
$last = key($data['virtualTotals']);
if($data['average'] - $data['virtualTotals'][$first] > $threshold){
setBalance($first, $last, $threshold, $tableId, $cnn);
$divisor_f = ($data['average'] - $data['virtualTotals'][$first])/$threshold;
settype($divisor_f, "int");
$divisor_l = ($data['virtualTotals'][$last] - $data['average'])/$threshold;
settype($divisor_l, "int");
setBalance($first, $last, min($divisor_f, $divisor_l)*$threshold, $tableId, $cnn);
}
Sleep(10);
$data = getFinalData($cnn, $tableId);

@ -367,7 +367,7 @@ function load(){
$('#title').html(data.name);
$('#total').html(Number(data.total));
$('#total-usr').html(Number(data['actualTotals'][session.get('hash')]));
$('#total-usr-bar').css('width', (data['actualTotals'][session.get('hash')] / data.average)*100+'%');
$('#total-usr-bar').css('width', (data['virtualTotals'][session.get('hash')] / data.average)*100+'%');
$('#checkout').unbind();
$('#checkout').click(function(){
alert('You will checkout and quit from group '+data.name+'!!');
@ -381,6 +381,7 @@ function load(){
lastWeekByUser[user] = 0;
});
data.items.forEach(function(item){
if(item.state == '0') return;
if(item.timestamp > new Date().valueOf()/1000 - 7*24*60*60){
lastWeekTotal += Number(item.value);
lastWeekByUser[item.user] += Number(item.value);
@ -589,12 +590,13 @@ function load(){
var colors = ['#F782AA', '#0084B4', '#3FC5AC', '#FFD06B', '#CCCCCC', '#8F3D39', '#9A3481', '#492034', '#593204', '#71e39d', '#B32083', '#D39D32'];
Piedata = [];
Object.keys(data.actualTotals).forEach((user, index)=>{
Object.keys(data.virtualTotals).forEach((user, index)=>{
advStats += '<li style="color: '+colors[index]+';"><i class="fa fa-circle-o" style="color: '+colors[index]+';"></i>'+data.usersName[user]+' <span >'+((lastWeekByUser[user]/lastWeekTotal)*100).toFixed(2)+'%</span></li>';
Piedata.push({ label: "", data: Math.floor(data.actualTotals[user]) });
variance += Math.pow(data.actualTotals[user] - data.average, 2);
Piedata.push({ label: "", data: Math.floor(data.virtualTotals[user]) });
variance += Math.pow(data.virtualTotals[user] - data.average, 2);
});
//Piedata.reverse();
variance = variance/data.users.length;
$('#a-balance').html(variance.toFixed(2));
chartOptions = {

Loading…
Cancel
Save