123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559 |
- <?php
- require_once(BASE_ROOT_PATH . '/mobile/control/merchantweb.php');
- class merchant_infoControl extends mbMerchantControl
- {
- public function __construct()
- {
- parent::__construct();
- }
- public function indexOp()
- {
- $mchid = $this->mchid();
- $model_merchant = Model('merchant');
- $field = 'mchid,admin_id,name,alarm_amount,ip_white_list,use_key,contact_name,contact_phone,warning_phone,company_name,quality,time_out,credit_bonus';
- $merchant_info = $model_merchant->getMerchantInfo(['mchid' => $mchid], $field);
- $model_member = Model('member');
- $member_info = $model_member->getMemberInfo(['member_id' => $merchant_info['admin_id']], 'available_predeposit');
- if (empty($member_info)) {
- $member_info['available_predeposit'] = 0;
- }
- if(!empty($merchant_info['credit_bonus'])) {
- $member_info['available_predeposit'] = ncPriceFormat($member_info['available_predeposit'] - $merchant_info['credit_bonus']);
- }
- $merchant_info['member'] = $member_info;
- if (empty($merchant_info['ip_white_list'])) {
- $merchant_info['ips'] = [];
- } else {
- $merchant_info['ips'] = unserialize($merchant_info['ip_white_list']);
- }
- if (empty($merchant_info['warning_phone'])) {
- $merchant_info['warning_phone'] = [];
- } else {
- $merchant_info['warning_phone'] = unserialize($merchant_info['warning_phone']);
- }
- $cond['status'] = $cond['is_operation'] = 2;
- $cond['mchid'] = $mchid;
- $stats = Model('')->table('refill_evidence')
- ->field('sum(amount) as amounts')
- ->where($cond)->select();
- $merchant_info['evidence_amounts'] = empty($stats) ? 0 : $stats[0]['amounts'];
- $cond['add_time'] = ['between', [strtotime(date("Y-m-d",time())), time()]];
- $day_evidence = $model_merchant->getRefillEvidence($cond);
- $merchant_info['evidence_count'] = count($day_evidence);
- $merchant_info['time_out'] = intval($merchant_info['time_out'] / 60);
- $merchant_info['quality'] = intval($merchant_info['quality']);
- $pub = new message\publisher();
- $pub->modify_refill_merchant();
- return self::outsuccess($merchant_info);
- }
- public function SetQualityTimeOutOp()
- {
- $mchid = $this->mchid();
- $save = [];
- $quality = intval($_POST['quality']);
- if($quality > 0) {
- if(!in_array($quality , [1,2,3])) {
- return self::outerr(errcode::ErrParamter, "通道质量类型错误");
- }
- $save['quality'] = $quality;
- }
- $time_out = intval($_POST['time_out']);
- if($quality > 0) {
- if($time_out <3) {
- return self::outerr(errcode::ErrParamter, "超时时间应大于3分钟");
- }
- $time_out = intval($time_out * 60);
- $save['time_out'] = $time_out;
- }
- if(empty($save)) {
- return self::outsuccess([]);
- }
- $model_merchant = Model('merchant');
- $resp = $model_merchant->editMerchant($save, ['mchid' => $mchid]);
- if($resp) {
- return self::outsuccess([]);
- }else{
- return self::outerr(errcode::ErrOperation, "系统错误.");
- }
- }
- public function homeOp()
- {
- $mchid = $this->mchid();
- $model_merchant = Model('merchant');
- $merchant_info = $model_merchant->getMerchantInfo(['mchid' => $mchid], 'mchid,admin_id,name,company_name,credit_bonus');
- $model_member = Model('member');
- $member_info = $model_member->getMemberInfo(['member_id' => $merchant_info['admin_id']], 'available_predeposit');
- if (empty($member_info)) {
- $merchant_info['available_predeposit'] = 0;
- } else {
- $merchant_info['available_predeposit'] = ncPriceFormat($member_info['available_predeposit'] - $merchant_info['credit_bonus']);
- }
- $statistics = $this->statistics();
- ksort($statistics);
- $result['merchant_info'] = $merchant_info;
- $result['todayStatistics'] = $statistics[strtotime(date("Y-m-d",time()))];
- $result['weeksStatistics'] = $statistics;
- $max = 0;
- foreach ($statistics as $key => $val){
- if($max == 0){
- $max = $val['successAmounts'];
- }
- if($max < $val['successAmounts']){
- $max = $val['successAmounts'];
- }
- }
- $result['max'] = ncPriceFormat(ceil($max * 1.1));
- $week_month_stats = $this->refillStats();
- $result['month'] = $week_month_stats['month'];
- $result['week'] = $week_month_stats['week'];
- return self::outsuccess($result);
- }
- private function statistics()
- {
- $date = date('Y-m-d',time());
- $today = strtotime("{$date}");
- $times_begin = function ($start) {
- $times = [];
- $begin = $start;
- for($i = 0; $i < 7; $i++) {
- $times[] = $begin;
- $begin -= 86400;
- }
- return $times;
- };
- $reader = function ($mchid,$time) {
- $cond['mchid'] = $mchid;
- $cond['inner_status'] = 0;
- $cond['refill_order.order_time'] = ['between', [$time, $time + 86400 -1]];
- $items = Model('')->table('refill_order,vr_order')->join('inner')
- ->on('refill_order.order_id=vr_order.order_id')
- ->field('count(*) as order_count, vr_order.order_state, sum(mch_amount) as mch_amounts')
- ->group('order_state')
- ->where($cond)->select();
- return $this->refillCountDispose($items);
- };
- $begins = $times_begin($today);
- $states = rcache($this->mchid() , 'refillstat-');
- if(empty($states)){
- $states = [];
- }else{
- $states = unserialize($states['data']);
- }
- $result = [];
- $cache = [];
- foreach ($begins as $begin)
- {
- if(array_key_exists($begin,$states)) {
- $item = $states[$begin];
- }
- else {
- $item = $reader($this->mchid(),$begin);
- }
- $result[$begin] = $item;
- //判断item 中充值中的状态是否为0,为0且不是今天的情况下放进cache
- if($item['sendCount'] == 0 && $begin != $today){
- $cache[$begin] = $item;
- }
- }
- if(!empty($cache) && !$this->isSame($states,$cache)) {
- wcache($this->mchid() ,['data' => serialize($cache)], 'refillstat-');
- }
- return $result;
- }
- private function isSame($arr1, $arr2)
- {
- ksort($arr1);
- ksort($arr2);
- return $arr1 == $arr2;
- }
- private function refillCountDispose($stats)
- {
- $result['count'] = $result['sendCount'] = $result['errorCount'] = $result['successCount'] = $result['amountCount'] = $result['errorAmounts'] = $result['successAmounts'] = 0;
- foreach ($stats as $count) {
- $result['count'] += $count['order_count'];
- $result['amountCount'] += ncPriceFormat($count['mch_amounts']);
- if($count['order_state'] == ORDER_STATE_SEND) {
- $result['sendCount'] = $count['order_count'];
- }
- if($count['order_state'] == ORDER_STATE_CANCEL) {
- $result['errorCount'] = $count['order_count'];
- $result['errorAmounts'] = ncPriceFormat($count['mch_amounts']);
- }
- if($count['order_state'] == ORDER_STATE_SUCCESS) {
- $result['successCount'] = $count['order_count'];
- $result['successAmounts'] = ncPriceFormat($count['mch_amounts']);
- }
- }
- $result['amountCount'] = ncPriceFormat($result['amountCount']);
- $result['errorAmounts'] = ncPriceFormat($result['errorAmounts']);
- $result['successAmounts'] = ncPriceFormat($result['successAmounts']);
- return $result;
- }
- private function refillStats()
- {
- $reader = function ($mchid,$time,$end_time) {
- $cond['mchid'] = $mchid;
- $cond['inner_status'] = 0;
- $cond['refill_order.order_time'] = ['between', [$time, $end_time]];
- $items = Model('')->table('refill_order,vr_order')->join('inner')
- ->on('refill_order.order_id=vr_order.order_id')
- ->field('count(*) as order_count, vr_order.order_state, sum(mch_amount) as mch_amounts')
- ->group('order_state')
- ->where($cond)->select();
- return $this->refillCountDispose($items);
- };
- $date = date("Y-m-d");
- $first = 1;
- $w = date('w',strtotime($date));
- $week_start = strtotime(date('Y-m-d',strtotime("$date -".($w ? $w - $first : 6).' days')));
- $w = 7 - $w + 1;
- $week_end = strtotime(date('Y-m-d',strtotime("+{$w} days"))) - 1;
- $week = $reader($this->mchid(), $week_start,$week_end);
- $month_start = strtotime(date("Y-m-1"));
- $month_end = strtotime(date("Y-m-1",strtotime("+1month")))-1;
- $month = $reader($this->mchid(), $month_start, $month_end);
- return ['week' => $week , 'month' => $month];
- }
- public function addipOp()
- {
- $mchid = $this->mchid();
- $ip = $_POST['ip'];
- if (empty($ip)) {
- return self::outerr(errcode::ErrParamter, "参数错误");
- }
- $ip = trim($ip);
- if (filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4))
- {
- $model_merchant = Model('merchant');
- $merchant_info = $model_merchant->getMerchantInfo(['mchid' => $mchid]);
- if (empty($merchant_info['ip_white_list'])) {
- $ips = [];
- } else {
- $ips = unserialize($merchant_info['ip_white_list']);
- }
- $ips[] = $ip;
- $ips = array_unique($ips);
- $model_merchant->editMerchant(['ip_white_list' => serialize($ips)], ['mchid' => $merchant_info['mchid']]);
- return self::outsuccess([]);
- } else {
- return self::outerr(errcode::ErrParamter, "ip地址错误");
- }
- }
- public function ipdelOp()
- {
- $mchid = $this->mchid();
- $ip = $_POST['ip'];
- if (empty($ip)) {
- return self::outerr(errcode::ErrParamter, "参数错误");
- }
- $ip = trim($ip);
- $model_merchant = Model('merchant');
- $merchant_info = $model_merchant->getMerchantInfo(['mchid' => $mchid]);
- $ips = unserialize($merchant_info['ip_white_list']);
- $new_ips = [];
- foreach ($ips as $value) {
- if ($value != $ip) {
- $new_ips[] = $value;
- }
- }
- if (empty($new_ips)) {
- $new_ips = '';
- } else {
- $new_ips = serialize($new_ips);
- }
- $model_merchant->editMerchant(['ip_white_list' => $new_ips], ['mchid' => $merchant_info['mchid']]);
- return self::outsuccess([]);
- }
- public function setcontactOp(){
- $mchid = $this->mchid();
- if(!empty($_POST['contact_name']))
- {
- $params['contact_name'] = trim($_POST['contact_name']);
- }
- if(!empty($_POST['contact_phone']))
- {
- $params['contact_phone'] = trim($_POST['contact_phone']);
- }
- if(!empty($_POST['alarm_amount']))
- {
- $params['alarm_amount'] = trim($_POST['alarm_amount']);
- }
- if(empty($params))
- {
- return self::outsuccess([]);
- }
- $model_merchant = Model('merchant');
- $ret = $model_merchant->editMerchant($params, ['mchid' => $mchid]);
- if ($ret) {
- return self::outsuccess([]);
- } else {
- return self::outerr(errcode::ErrOperation, "系统错误.");
- }
- }
- public function addwphoneOp()
- {
- $mchid = $this->mchid();
- $phone = $_POST['phone'];
- if (empty($phone)) {
- return self::outerr(errcode::ErrParamter, "参数错误");
- }
- $phone = explode(',' ,trim($phone));
- $model_merchant = Model('merchant');
- $merchant_info = $model_merchant->getMerchantInfo(['mchid' => $mchid]);
- if (empty($merchant_info['warning_phone'])) {
- $phones = [];
- } else {
- $phones = unserialize($merchant_info['warning_phone']);
- }
- foreach ($phone as $item) {
- $phones[] = $item;
- }
- $phones = array_unique($phones);
- $model_merchant->editMerchant(['warning_phone' => serialize($phones)], ['mchid' => $merchant_info['mchid']]);
- return self::outsuccess([]);
- }
- public function wphonedelOp()
- {
- $mchid = $this->mchid();
- $phone = $_POST['phone'];
- if (empty($phone)) {
- return self::outerr(errcode::ErrParamter, "参数错误");
- }
- $phone = trim($phone);
- $model_merchant = Model('merchant');
- $merchant_info = $model_merchant->getMerchantInfo(['mchid' => $mchid]);
- $phones = unserialize($merchant_info['warning_phone']);
- $new_phones = [];
- foreach ($phones as $value) {
- if ($value != $phone) {
- $new_phones[] = $value;
- }
- }
- if (empty($new_phones)) {
- $new_phones = '';
- } else {
- $new_phones = serialize($new_phones);
- }
- $model_merchant->editMerchant(['warning_phone' => $new_phones], ['mchid' => $merchant_info['mchid']]);
- return self::outsuccess([]);
- }
- public function setkeyOp()
- {
- $mchid = $this->mchid();
- $secure_key = $_POST['secure_key'];
- if (empty($secure_key)) {
- return self::outerr(errcode::ErrParamter, "参数错误");
- }
- $model_merchant = Model('merchant');
- $ret = $model_merchant->editMerchant(['secure_key' => $secure_key, 'use_key' => 1], ['mchid' => $mchid]);
- if ($ret) {
- return self::outsuccess([]);
- } else {
- return self::outerr(errcode::ErrOperation, "系统错误.");
- }
- }
- public function modifypwOp()
- {
- $mchid = $this->mchid();
- $new_pw = $_POST['new_pw'];
- $new_pw2 = $_POST['new_pw2'];
- if (trim($new_pw) !== trim($new_pw2)) {
- return self::outerr(errcode::ErrPasswd, "密码错误");
- }
- $model_merchant = Model('merchant');
- $merchant_info = $model_merchant->getMerchantInfo(['mchid' => $mchid]);
- if (!$merchant_info) {
- return self::outerr(errcode::ErrMemberNotExist, "用户不存在.");
- }
- $pwd = trim($new_pw);
- if (md5($pwd) == $merchant_info['password']) {
- return self::outsuccess([]);
- }
- $ret = $model_merchant->editMerchant(['password' => md5($pwd), 'org_pwd' => $pwd], ['mchid' => $merchant_info['mchid']]);
- if ($ret) {
- return self::outsuccess([]);
- } else {
- return self::outerr(errcode::ErrOperation, "系统错误.");
- }
- }
- public function pdlogOp()
- {
- $mchid = $this->mchid();
- $model_merchant = Model('merchant');
- $merchant_info = $model_merchant->getMerchantInfo(['mchid' => $mchid]);
- if (!$merchant_info) {
- return self::outerr(errcode::ErrMemberNotExist, "用户不存在.");
- }
- $model_pd = Model('merchant');
- if (empty($merchant_info['admin_id'])) {
- $result['data'] = [];
- $result['total'] = 0;
- return self::outsuccess($result);
- }
- $cond['lg_member_id'] = $merchant_info['admin_id'];
- if (!empty($_GET['lg_type'])) {
- $cond['lg_type'] = $_GET['lg_type'];
- }
- if ($_GET['start_time'] && $_GET['end_time']) {
- $cond['lg_add_time'] = ['between', [$_GET['start_time'], $_GET['end_time']]];
- }
- $list = $model_pd->getPdlog($cond, $this->page, '*', 'lg_id desc');
- $list = $this->PdLogFormat($list);
- $result['data'] = $list;
- $result['total'] = $model_pd->gettotalpage();
- return self::outsuccess($result);
- }
- private function PdLogFormat($pdlog)
- {
- $data = [];
- foreach ($pdlog as $key => $value) {
- if (isset($value['lg_add_time'])) {
- $value['lg_add_time'] = date('Y-m-d H:i:s', $value['lg_add_time']);
- }
- switch ($value['lg_type']) {
- case 'order_pay':
- $value['lg_type_text'] = '下单减款';
- break;
- case 'order_cancel':
- $value['lg_type_text'] = '下单失败返回余款';
- break;
- case 'recharge':
- $value['lg_type_text'] = '余款充值';
- break;
- case 'sys_add_money':
- $value['lg_type_text'] = '管理员调节预存款【增加】';
- break;
- case 'sys_del_money':
- $value['lg_type_text'] = '管理员调节预存款【减少】';
- break;
- case 'sys_freeze_money':
- $value['lg_type_text'] = '管理员调节预存款【冻结】';
- break;
- case 'sys_unfreeze_money':
- $value['lg_type_text'] = '管理员调节预存款【解冻】';
- break;
- default:
- $value['lg_type_text'] = 'unknown';
- break;
- }
- $data[] = $value;
- }
- return $data;
- }
- public function pdlogexportOp()
- {
- $mchid = $this->mchid();
- $model_merchant = Model('merchant');
- $merchant_info = $model_merchant->getMerchantInfo(['mchid' => $mchid]);
- if (!$merchant_info) {
- return self::outerr(errcode::ErrMemberNotExist, "用户不存在.");
- }
- $condition['lg_member_id'] = $merchant_info['admin_id'];
- if (!empty($_GET['lg_type'])) {
- $condition['lg_type'] = $_GET['lg_type'];
- }
- if ($_GET['start_time'] && $_GET['end_time']) {
- $condition['lg_add_time'] = ['between', [$_GET['start_time'], $_GET['end_time']]];
- }
- $list = Model('')->table('pd_log,refill_order')->join('left')
- ->on('pd_log.lg_order_sn=refill_order.order_sn')
- ->field('pd_log.lg_type,pd_log.lg_av_amount,pd_log.lg_add_time,refill_order.card_no,refill_order.mchid,refill_order.card_type,pd_log.lg_available,refill_order.refill_amount')
- ->where($condition)->select();
- $result = $this->export_pdlog_exec($list);
- return self::outsuccess($result);
- }
- private function export_pdlog_exec($list)
- {
- $title = [
- ['value' => '代理商账号'],
- ['value' => '金额'],
- ['value' => '账户余额'],
- ['value' => '交易日期'],
- ['value' => '类型'],
- ['value' => '备注']
- ];
- $mchid = $this->mchid();
- $card_type = ['1'=>'中石油' , '2' =>'中石化' , '4' => '移动' , '5' => '联通' , '6' => '电信'];
- foreach ($list as $value) {
- if (isset($value['lg_add_time'])) {
- $value['lg_add_time'] = date('Y-m-d H:i:s', $value['lg_add_time']);
- }
- switch ($value['lg_type']) {
- case 'order_pay':
- $value['lg_type_text'] = '消费';
- break;
- case 'order_cancel':
- $value['lg_type_text'] = '退款';
- break;
- case 'recharge':
- $value['lg_type_text'] = '充值';
- break;
- case 'sys_add_money':
- $value['lg_type_text'] = '管理员充值【增加】';
- break;
- case 'sys_del_money':
- $value['lg_type_text'] = '管理员减款';
- break;
- default:
- $value['lg_type_text'] = '';
- break;
- }
- $data = [];
- $str = "{$value['card_no']}-{$card_type[$value['card_type']]}{$value['refill_amount']}元";
- if(empty($value['card_no']) || empty($value['card_type']) || empty($value['refill_amount'])) {
- $str = '';
- }
- $data[] = ['value' => $mchid];
- $data[] = ['value' => $value['lg_av_amount']];
- $data[] = ['value' => ncPriceFormat($value['lg_available'] + $value['lg_av_amount'])];
- $data[] = ['value' => $value['lg_add_time']];
- $data[] = ['value' => $value['lg_type_text']];
- $data[] = ['value' => $str];
- $datas[] = $data;
- }
- Log::record(json_encode($datas),Log::DEBUG);
- return ['title' => $title , 'data' => $datas];
- }
- }
|