free_membr($member_id); $mod_divert->create_member($member_id); $mod_divert->divert_member($member_id,$minfo->available_predeposit(), $minfo->freeze_predeposit()); $trans->commit(); [$succ, $available_amounts, $freeze_amounts] = $mod_divert->stat_member($member_id); if (round($available_amounts - $minfo->available_predeposit(), 4) == 0.0000) { Log::record("available_predeposit = {$available_amounts} is ok",Log::DEBUG); } else { Log::record("available_predeposit = {$available_amounts} is fail",Log::ERR); } if (round($freeze_amounts - $minfo->freeze_predeposit(), 4) == 0.0000) { Log::record("freeze_predeposit = {$freeze_amounts} is ok",Log::DEBUG); } else { Log::record("freeze_predeposit = {$freeze_amounts} is fail",Log::ERR); } return true; } catch (Exception $ex) { $trans->rollback(); Log::record($ex->getMessage(), Log::ERR); return false; } } #重设离散账号维度 public function resize_member($member_id) { $trans = null; try { $mod_divert = Model('account_divert'); $trans = new trans_wapper($mod_divert,__METHOD__); [$succ,$available_amounts,$freeze_amounts] = $mod_divert->check_member($member_id); if(!$succ) { $mod_divert->free_membr($member_id); $mod_divert->create_member($member_id); $mod_divert->divert_member($member_id,$available_amounts,$freeze_amounts); } $trans->commit(); return true; } catch (Exception $ex) { $trans->rollback(); Log::record($ex->getMessage(), Log::ERR); return false; } } #加款 public function add_member($member_id, $available_amounts, $freeze_amounts = 0.00) { $trans = null; try { $mod_divert = Model('account_divert'); $trans = new trans_wapper($mod_divert,__METHOD__); $mod_divert->divert_member($member_id,$available_amounts,$freeze_amounts); $trans->commit(); return true; } catch (Exception $ex) { $trans->rollback(); Log::record($ex->getMessage(), Log::ERR); return false; } } #减款 public function reduce_member($member_id, $available_amounts, $freeze_amounts = 0.00) { $trans = null; try { $mod_divert = Model('account_divert'); $trans = new trans_wapper($mod_divert,__METHOD__); $mod_divert->divert_member($member_id,-$available_amounts,$freeze_amounts); $trans->commit(); return true; } catch (Exception $ex) { $trans->rollback(); Log::record($ex->getMessage(), Log::ERR); return false; } } public function init_merchant($mchid) { $trans = null; try { $mchinfo = Model('merchant')->getMerchantInfo(['mchid' => $mchid]); $member_id = intval($mchinfo['admin_id']); $mod_divert = Model('account_divert'); $minfo = new member_info($member_id); $trans = new trans_wapper($mod_divert, __METHOD__); $mod_divert->free_membr($member_id); $mod_divert->create_member($member_id); $mod_divert->divert_member($member_id, $minfo->available_predeposit(), $minfo->freeze_predeposit()); $trans->commit(); return true; } catch (Exception $ex) { $trans->rollback(); Log::record($ex->getMessage(), Log::ERR); return false; } } public function init_merchants() { $mids = $this->unique_mids(); foreach ($mids as $mid) { $ret = $this->init_member($mid); Log::record("init_merchants {$mid}:" . $ret ? 'true' : 'false', Log::DEBUG); } } private function unique_mids() { $mids = []; $i = 0; while (true) { $start = $i * 100; $items = Model('')->table('merchant')->field('admin_id')->where(['mchid' => ['gt',0]])->order('mchid asc')->limit("{$start},100")->select(); if(empty($items)) { break; } $i++; foreach ($items as $item) { $mids[] = intval($item['admin_id']); } } $mids = array_unique($mids); return $mids; } public function update_merchants() { $mod_divert = Model('account_divert'); $mids = $this->unique_mids(); foreach ($mids as $mid) { [$succ, $available_amounts, $freeze_amounts] = $mod_divert->stat_member($mid); if($succ) { $update = Model('member')->where(['member_id' => $mid])->update(['available_predeposit' => $available_amounts,'freeze_predeposit' => $freeze_amounts]); } } } }