123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253 |
- <?php
- /**
- * Created by PhpStorm.
- * User: Bear
- * Date: 2019/8/23
- * Time: 下午2:43
- */
- use app\common\library\Ip;
- use app\common\library\Redis;
- use app\main\constants\PayConstants;
- use app\main\service\AdminKlService;
- use app\main\service\AdminService;
- use app\main\service\UserService;
- use think\Config;
- class AdminKlTest extends TestInit
- {
- public function testConfig()
- {
- $qds_ids = model('admin_config')->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);
- }
- }
|