where('is_blacklist', 0)->column('admin_id'); $agent_ids = model('admin_extend') ->alias('ae') ->join('admin_config ac', 'ae.create_by=ac.admin_id') ->where('ac.is_blacklist', 0) ->column('ae.admin_id'); $all_ids = implode(',', array_merge($qds_ids, $agent_ids)); $data = model('orders') ->where('state', \app\main\constants\OrderContents::ORDER_STATE_PAID) ->where('NOT FIND_IN_SET(IF(deduct=1,resource_id,admin_id),"' . $all_ids . '")') ->field([ 'FROM_UNIXTIME(createtime,"%Y-%m-%d")' => '日期', 'sum(IF(deduct=1,1,0))' => '扣单', 'count(1)' => '总单', 'sum(IF(deduct=1,money,0))' => '扣金额', 'sum(money)' => '总金额', ])->group('FROM_UNIXTIME(createtime,"%Y-%m-%d")') ->select(); var_dump($data); } public function testOrderKL() { $_SERVER['HTTP_X_FORWARDED_FOR'] = '103.121.164.210'; Ip::ip(); $admin_id = 1734; $order_data = [ 'day' => 0, 'user_id' => 60007, 'book_id' => '1', ]; $oAdminKl = new \app\main\model\object\AdminKl(); $oAdminKl->admin_id = $admin_id; $oAdminKl->business_line = PayConstants::BUSINESS_APP; $oAdminKl->is_blacklist = '0'; AdminService::instance()->insertOrUpdateAdminKl($oAdminKl); $admin_config = AdminService::instance()->getAdminKlModel()->getAdminKl($admin_id); $result = AdminKlService::instance()->orderKL($admin_id, $admin_id, $order_data, false); $this->assertFalse($result->data); $oAdminKl->is_blacklist = '1'; AdminService::instance()->insertOrUpdateAdminKl($oAdminKl); $result = AdminKlService::instance()->orderKL($admin_id, $admin_id, $order_data, false); $this->assertFalse($result->data); } public function testChannelCacheMoney() { $admin_id = 1734; AdminKlService::instance(PayConstants::BUSINESS_APP); $key = implode(':', ['KAM', AdminKlService::instance()->cache_param, $admin_id, date('dH')]); $money = 0.3; $before = Redis::instance()->get($key); $order_no = uniqid(); AdminKlService::instance(PayConstants::BUSINESS_APP)->addChannelOrderMoneyCache($admin_id, $money, $order_no); $after = Redis::instance()->get($key); $this->assertTrue($before + $money * 100 == $after); } public function testChannelCacheMoneyDeduct() { $admin_id = 1734; AdminKlService::instance(PayConstants::BUSINESS_APP); $key = implode(':', ['KDM', AdminKlService::instance()->cache_param, $admin_id, date('dH')]); $money = 0.3; $before = Redis::instance()->get($key); $order_no = uniqid(); AdminKlService::instance(PayConstants::BUSINESS_APP)->addChannelOrderMoneyCache($admin_id, $money, $order_no, true); $after = Redis::instance()->get($key); $this->assertTrue($before + $money * 100 == $after); } /** * 验证忽略信息 */ public function testIgnore() { $user_id = 6015; $admin_id = 1734; $ip = '103.121.164.210'; $_SERVER['HTTP_X_FORWARDED_FOR'] = $ip; $recentPay = 'UPT:' . $user_id; $user_create_pay_key = 'UCPT:' . $user_id; Ip::ip(); $province = Ip::province(); Redis::instance()->sRemove("ALI:{$admin_id}", $province); $aIp = explode('.', $ip); Redis::instance()->sRemove("KIP:{$aIp[0]}.{$aIp[1]}",$ip); var_dump(Redis::instance()->sIsMember("KIP:{$aIp[0]}.{$aIp[1]}",$ip)); var_dump(\app\common\utility\WhiteList::checkedIpWhite($ip)); Redis::instance()->delete($recentPay); Redis::instance()->delete($user_create_pay_key); UserService::instance() ->getUserModel() ->setConnect($user_id) ->update(['is_white' => 0], ['id' => $user_id]); $data = UserService::instance() ->getUserModel()->getUserInfo($user_id, true); var_dump($data); exit; $order_data = [ 'day' => 0, 'user_id' => $user_id, 'book_id' => '11000000034', ]; $user_id = $order_data['user_id']; AdminKlService::instance(PayConstants::BUSINESS_APP); //最近一小时内的充值用户 Redis::instance()->setex($recentPay, time(), 60); $result = AdminKlService::instance()->checkIgnore($admin_id, $admin_id, $order_data, 'Title', false); $this->assertFalse($result->data); Redis::instance()->del($recentPay); Redis::instance()->setex($user_create_pay_key, time(), 60); $result = AdminKlService::instance()->checkIgnore($admin_id, $admin_id, $order_data, 'Title', false); $this->assertFalse($result->data); Redis::instance()->del($user_create_pay_key); Redis::instance()->sAdd("KIP:{$aIp[0]}.{$aIp[1]}", $_SERVER['HTTP_X_FORWARDED_FOR']); $result = AdminKlService::instance()->checkIgnore($admin_id, $admin_id, $order_data, 'Title', false); $this->assertFalse($result->data); Redis::instance()->sRemove("KIP:{$aIp[0]}.{$aIp[1]}", $_SERVER['HTTP_X_FORWARDED_FOR']); UserService::instance() ->getUserModel() ->setConnect($order_data['user_id']) ->update(['is_white' => 1], ['id' => $order_data['user_id']]); UserService::instance() ->getUserModel()->getUserInfo($order_data['user_id'], true); $result = AdminKlService::instance()->checkIgnore($admin_id, $admin_id, $order_data, 'Title', false); $this->assertFalse($result->data); // UserService::instance() ->getUserModel() ->setConnect($order_data['user_id']) ->update(['is_white' => 0], ['id' => $order_data['user_id']]); UserService::instance() ->getUserModel()->getUserInfo($order_data['user_id'], true); $result = AdminKlService::instance()->checkIgnore($admin_id, $admin_id, $order_data, 'Title', false); $this->assertFalse($result->data); Redis::instance()->sRemove("ALI:{$admin_id}", $province); $result = AdminKlService::instance()->checkIgnore($admin_id, $admin_id, $order_data, 'Title', false); $this->assertFalse($result->data); Redis::instance()->sRemove("ALI:{$admin_id}", $province); $result = AdminKlService::instance()->checkIgnore($admin_id, $admin_id, $order_data, 'Title', false); $this->assertFalse($result->data); $order_data['book_id'] = 1; UserService::instance() ->getUserModel() ->setConnect($order_data['user_id']) ->update(['kandian' => 0], ['id' => $order_data['user_id']]); UserService::instance() ->getUserModel()->getUserInfo($order_data['user_id'], true); $result = AdminKlService::instance()->checkIgnore($admin_id, $admin_id, $order_data, 'Title', false); $this->assertTrue($result->data); } public function testKlRate() { $admin_id = 1734; $user_id = 60007; $admin_config = AdminService::instance()->getAdminKlModel()->getAdminKl($admin_id); AdminKlService::instance(PayConstants::BUSINESS_APP); AdminKlService::instance()->checkIsDeductThreshold($admin_id, $admin_config, $user_id); $before_time = AdminKlService::instance()->getBeforeTwentyFourTime(); foreach ($before_time as $val) { $key = AdminKlService::instance()->getOrderPayMoneyKey(true, $admin_id, $val)->data; Redis::instance()->del($key); $klkey = AdminKlService::instance()->getOrderPayMoneyKey(false, $admin_id, $val)->data; Redis::instance()->del($klkey); } $money = 50; $kl_money = 300; $key = AdminKlService::instance()->getOrderPayMoneyKey(true, $admin_id, $val)->data; Redis::instance()->set($key, $money); $klkey = AdminKlService::instance()->getOrderPayMoneyKey(false, $admin_id, $val)->data; Redis::instance()->set($klkey, $kl_money); if (isset($admin_config['kl_rate'])) { $kl_rate = floatval($admin_config['kl_rate']) ? $admin_config['kl_rate'] : Config::get('site.kl_rate_app'); } else { $kl_rate = Config::get('site.kl_rate_app'); } $result = AdminKlService::instance()->checkIsDeductThreshold($admin_id, $admin_config, $user_id); if ($money / $kl_money > $kl_rate) { $this->assertFalse($result->data); } else { $this->assertTrue($result->data); } } public function testCounter() { $admin_id = 1734; $admin_config = AdminService::instance()->getAdminKlModel()->getAdminKl($admin_id); AdminKlService::instance(PayConstants::BUSINESS_APP); //normal $nor_key = implode(':', ['KCN', AdminKlService::instance(PayConstants::BUSINESS_APP)->cache_param, $admin_id]); $normal_index = Config::get('site.normal_num_app'); if (!empty($admin_config['normal_num'])) { $normal_index = $admin_config['normal_num']; } Redis::instance()->set($nor_key, $normal_index); $data = AdminKlService::instance()->getDeductionCounter($admin_id, false, $is_transfer = false, $is_incr = false); $this->assertTrue($data->data == $normal_index); $data = AdminKlService::instance()->getDeductionCounter($admin_id, false, $is_transfer = false, $is_incr = true); $this->assertTrue($data->data == $normal_index + 1); $vip_key = implode(':', ['KAN', AdminKlService::instance(PayConstants::BUSINESS_APP)->cache_param, $admin_id]); $vip_index = Config::get('site.vip_num_app'); if (!empty($admin_config['vip_num'])) { $vip_index = $admin_config['vip_num']; } Redis::instance()->set($vip_key, $vip_index); $data = AdminKlService::instance()->getDeductionCounter($admin_id, false, $is_transfer = false, $is_incr = false); $this->assertTrue($data->data == $vip_index); $data = AdminKlService::instance()->getDeductionCounter($admin_id, false, $is_transfer = false, $is_incr = true); $this->assertTrue($data->data == $vip_index + 1); } public function testGetKlMoney() { echo AdminKlService::instance(PayConstants::BUSINESS_WECHAT)->getChannelOrderPayMoney('1734',true); } }