Merge pull request 'czchange_wm' (#676) from czchange_wm into master

Reviewed-on: http://8.136.139.249:3000/wmtx/platform/pulls/676
master
廖金灵 2 years ago
commit 70558ff165

@ -23,7 +23,7 @@ class IndexController extends AdminController {
public function index() public function index()
{ {
if(session('user_auth.uid')){ if(session('user_auth.uid')){
$data=M('Member') $data=SM('Member')
->field('uid,nickname,username,us.last_login_time,us.last_login_ip,login') ->field('uid,nickname,username,us.last_login_time,us.last_login_ip,login')
->join('sys_ucenter_member as us on sys_member.uid = us.id') ->join('sys_ucenter_member as us on sys_member.uid = us.id')
->where(array('uid'=>session('user_auth.uid'))) ->where(array('uid'=>session('user_auth.uid')))

@ -11,13 +11,17 @@ use Think\Controller;
class SubSpendSetController extends Controller class SubSpendSetController extends Controller
{ {
const LIMIT = 100; const LIMIT = 100;
const DEPOSIT_LIMIT = 30;
const ECHO = FALSE;
public $SubSpendModel; public $SubSpendModel;
public $DepositModel;
public $MainSpendModel; public $MainSpendModel;
public $SubKvModel; public $SubKvModel;
public $LastSynTime; public $LastSynTime;
public $SynTime; public $SynTime;
public $SynWhere = [ public $SynWhere = [
"pay_status"=>1, "pay_status"=>1,
"pay_way"=>['neq',0],
"partner_type"=>["in",[0,PARTNER_TYPE]] "partner_type"=>["in",[0,PARTNER_TYPE]]
]; ];
@ -26,6 +30,7 @@ class SubSpendSetController extends Controller
$this->SubSpendModel = M("spend","tab_",SUBSITE_DB);//指定子库 $this->SubSpendModel = M("spend","tab_",SUBSITE_DB);//指定子库
$this->MainSpendModel = M("spend","tab_");//指定子库 $this->MainSpendModel = M("spend","tab_");//指定子库
$this->SubKvModel = M("Kv","sub_",SUBSITE_DB);//指定子库 $this->SubKvModel = M("Kv","sub_",SUBSITE_DB);//指定子库
$this->DepositModel = M("Deposit","tab_");//指定子库
$this->LastSynTime = $this->SubKvModel->where("`key` = 'sub_spend_syn_time'")->getField("value"); $this->LastSynTime = $this->SubKvModel->where("`key` = 'sub_spend_syn_time'")->getField("value");
} }
@ -45,16 +50,15 @@ class SubSpendSetController extends Controller
die("时间不能小于最后同步时间"); die("时间不能小于最后同步时间");
} }
$this->SynWhere['payed_time'] = ['between', [$this->LastSynTime-0+1,$this->SynTime]]; $this->SynWhere['payed_time'] = ['between', [$this->LastSynTime-0+1,$this->SynTime]];
$this->pageSetSpend();
if($this->pageSetSpend()){ $this->pageSetDeposit();
$this->updateLastSynTime(); $this->updateLastSynTime();
};
echo "sub_spend syn ok".PHP_EOL; echo "sub_spend syn ok".PHP_EOL;
} }
public function recountSubSpend($begin,$end) public function recountSubSpend($begin,$end)
{ {
$patten = "/^\d{4}[\-](0?[1-9]|1[012])[\-](0?[1-9]|[12][0-9]|3[01])$/"; $patten = "/^\d{4}[\-](0?[1-9]|1[012])[\-](0?[1-9]|[12][0-9]|3[01])$/";
if (!preg_match($patten, $begin)) { if (!preg_match($patten, $begin)) {
die("开始时间格式错误"); die("开始时间格式错误");
} }
@ -70,13 +74,15 @@ class SubSpendSetController extends Controller
$end = strtotime($end)+86399; $end = strtotime($end)+86399;
$begin = strtotime($begin); $begin = strtotime($begin);
$this->SynWhere['payed_time'] = ['between', [$begin,$end]]; $this->SynWhere['payed_time'] = ['between', [$begin,$end]];
if($this->delSubSpend() !== false){ if($this->delSubSpend() !== false){
echo "delete sub_spend ok".PHP_EOL; echo "delete sub_spend ok".PHP_EOL;
$this->pageSetSpend(); $this->pageSetSpend();
$this->pageSetDeposit();
} }
echo "sub_spend update and syn ok".PHP_EOL; echo "sub_spend update and syn ok".PHP_EOL;
} }
//分页插入同步数据 //分页插入spend同步数据
protected function pageSetSpend() protected function pageSetSpend()
{ {
$count = $this->getSynCount(); $count = $this->getSynCount();
@ -85,10 +91,68 @@ class SubSpendSetController extends Controller
for ($i=1; $i <= $pageCount; $i++) { for ($i=1; $i <= $pageCount; $i++) {
$tres = $this->MainSpendModel->where($this->SynWhere)->page($i,self::LIMIT)->select(); $tres = $this->MainSpendModel->where($this->SynWhere)->page($i,self::LIMIT)->select();
$addRes = $this->SubSpendModel->addAll($tres); $addRes = $this->SubSpendModel->addAll($tres);
echo "[{$i}/{$pageCount}] {$addRes}".PHP_EOL; if(self::ECHO){
echo "[{$i}/{$pageCount}] {$addRes}".PHP_EOL;
}
} }
return true; return true;
} }
protected function pageSetDeposit(){
$rechargeAmount = $this->getDepositAmount();
$echoRechargeAmount = $rechargeAmount;
$depositCount = $this->getDepositCount();
$consumeAmount = $depositCount['pay_amount'];
$count = $depositCount['count'];
$DepositWhere = $this->getDepositWhere();
$pageCount = ceil($count/self::DEPOSIT_LIMIT);
for ($i=1; $i <= $pageCount; $i++) {
//预先统计
$tres = $this->MainSpendModel->where($DepositWhere)->page($i,self::DEPOSIT_LIMIT)->select();
$preAmount = $this->getDepositPageAmount($i);
if ($rechargeAmount - $preAmount >= 0) {
$addRes = $this->SubSpendModel->addAll($tres);
$rechargeAmount -= $preAmount;
if(self::ECHO){
echo "[{$rechargeAmount}/{$echoRechargeAmount}] $preAmount".PHP_EOL;
}
}else{
foreach ($tres as $key => $value) {
$preAmount = $value['pay_amount'];
if ($rechargeAmount - $preAmount < 0) {
return true;
}
$addRes = $this->SubSpendModel->add($value);
$rechargeAmount -= $preAmount;
if(self::ECHO){
echo "[{$rechargeAmount}/{$echoRechargeAmount}] $preAmount".PHP_EOL;
}
}
}
}
return true;
}
//获取平台币相关统计
protected function getDepositAmount()
{
return $this->DepositModel->where($this->SynWhere)->field("SUM(pay_amount) pay_amount")->find()['pay_amount'];
}
protected function getDepositCount()
{
return $this->MainSpendModel->where($this->getDepositWhere())->field("SUM(pay_amount) pay_amount,count(id) count")->find();
}
protected function getDepositPageAmount($page){
return $this->MainSpendModel
->where($this->getDepositWhere())
->field("SUM(pay_amount) pay_amount")
->page($i,self::DEPOSIT_LIMIT)
->find()['pay_amount'];
}
protected function getDepositWhere(){
$DepositWhere = $this->SynWhere;
$DepositWhere['pay_way'] = 0;
return $DepositWhere;
}
//删除本地已同步数据 //删除本地已同步数据
protected function delSubSpend() protected function delSubSpend()
{ {

@ -34,7 +34,7 @@ class MemberModel extends Model {
*/ */
public function login($uid){ public function login($uid){
/* 检测是否在当前应用注册 */ /* 检测是否在当前应用注册 */
$user = $this->field(true)->find($uid); $user = SM("Member","sys_")->field(true)->find($uid);
if(!$user || 1 != $user['status']) { if(!$user || 1 != $user['status']) {
$this->error = '用户不存在或已被禁用!'; //应用级别禁用 $this->error = '用户不存在或已被禁用!'; //应用级别禁用
return false; return false;

Loading…
Cancel
Save