| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520 | <?phpnamespace Active\Lib;use Dever;Class Manage {	#全额退款	public function refund_api($id)    {		$data = Dever::db('active/order')->find($id);        // if ($data['mid'] && $data['mid'] > 0) {        //     $user = Dever::db('active/user')->find(array('mid'=>$data['mid']));        //     if ($user && $user['id']) {        //         $uid = $user['id'];        //     }        // } else {        //     $uid = $data['uid'];        // }        $this->common($data,1);  		return 'reload';	}    public function insertInfoRefund ($id,$name,$data)    {        $num = Dever::param('num',$data);        $order_id = Dever::param('order_id',$data);        $data = Dever::db('active/order')->find($order_id);        if($num > $data['num']) {            Dever::alert('退款数量大于购买数量');        }        $info = Dever::db('active/info_refund')->state(array('order_id'=>$order_id,'status'=>2));        $count = $data['num'] - count($info);        if ($num > $count) {            Dever::alert('退款数量大于购买数量');        }    }    public function updateInfoRefund ($id,$name,$data)    {        $num = Dever::param('num',$data);        $order_id = Dever::param('order_id',$data);        $code_id = Dever::param('code_id',$data);        $data = Dever::db('active/order')->find($order_id);        // $info = Dever::db('active/info_refund')->state(array('order_id'=>$order_id));        // $active = Dever::db('active/info')->find($data['active_id']);       $this->common($data,2,$num,$id);        return 'reload';    }        public function show($id)    {        $data = Dever::db('active/order')->find($id);        $refund_admin = '-';        $rdate = '-';        if ($data && isset($data['refund_admin']) && $data['refund_admin'] && $data['refund_admin']>0 && $data['rdate']) {            $admin = Dever::load('manage/admin-find',$data['refund_admin']);            $refund_admin = $admin['username'];            $rdate = date('Y-m-d H:i',$data['rdate']);        }        $html = $refund_admin.'<br/>'.$rdate;        return $html;    }    public function active($id)    {        $data = Dever::db('active/info')->find($id);        $html = array();        $html['active_name'] = $data['name'];        $info = Dever::db('active/code')->find($id);        if ($info && isset($info['audit_admin']) && $info['audit_admin']  && $info['audit_admin'] > 0) {            $aduit = Dever::load('manage/admin-find',$info['audit_admin']);            $html['admin_name'] = $aduit['username'];        } elseif ($info && $info['top_admin']) {            $off = Dever::db('active/info_off')->find($info['top_admin']);            $html['admin_name'] = $off['name'];        }        return $html;    }    public function user($id)    {        $html = '';        $data = Dever::db('active/user')->find($id);        if ($data) {            $member = Dever::load('active/lib/user')->agent($data);            if ($member) {                $user = '<br/>(代理商)';            } else {                $user = '';            }            $html = $data['name'].'<br/>'.$data['mobile'].$user;        }                return $html;    }    public function dOff($id)    {        $data = Dever::db('active/code')->state(array('active_id' => $id,'status'=>1));        $html = count($data);        return $html;    }    public function insertInfoCode($id, $name, $data)    {        $code = Dever::param('code',$data);        if ($code) {            $info = Dever::db('active/info_code')->find(array('code'=>$code));            if ($info['code']) {                Dever::alert('核销码已核销');            }        }    }    public function updateInfoCode($id, $name, $data)    {        $code = Dever::param('code',$data);        $data = Dever::db('active/code')->find(array('write_code'=>$code));        if ($data) {            $where['where_id'] = $data['id'];            $where['status'] = 2;            $where['offdate'] = time();            $admin = Dever::load('manage/auth.info');            $where['audit_admin'] = $admin['id'];            Dever::db('active/code')->update($where);        }    }    public function get()    {        $data[0]['name'] = '头衔';        $data[0]['child'] = Dever::db('setting/title')->select();        $data['state'] = 1;        return $data;    }    public function search_api()    {        $value = Dever::input('value');        if (!$value) {            return '核销码不存在';        }        if ($value) {            $data = Dever::db('active/code')->one(array('write_code' => $value,'state' =>1));            $table = array();            if ($data) {                $user = Dever::db('active/user')->find(array('id'=>$data['join_uid']));                $parent = Dever::db('active/user')->find(array('id'=>$data['buy_uid']));                $table = array();                $table['head'] = array('姓名', '手机号','邀请人', '邀请人手机号');                $table['body'] = array();                $table['body'] = array($user['name'], $user['mobile'],$parent['name'], $parent['mobile']);                                $result[] = array                (                    'type' => 'table',                    'content' => $table,                );                $html = Dever::show('', $result, false, false);                return $html;            }else{                return '核销码不存在';            }        } else {            return '';        }    }    public function checkMcode()    {        $mobile = Dever::input('mobile');        $code = Dever::input('mcode');        if (!$code) {            Dever::alert('请输入验证码');        }        $code = Dever::load('passport/reg')->mcode($mobile, $code, 2);        if (!$code) {            Dever::alert('验证码输入错误');        }        return 'ok';    }    public function list()    {        $id = Dever::input('id');        $info = Dever::db('active/order')->find($id);        $active = Dever::db('active/info')->find($info['active_id']);        $config = Dever::db('active/order')->config['config_status'];        $status = Dever::status($config,$info['status']);        if ( !$info['uid']) {            $user = Dever::db('active/user')->find($info['mid']);            $info['uid'] = $user['id'];        }        $code = Dever::db('active/code')->getCode(array('order_id' => $id,'status'=>'1,2'));        $use_code = count($code);#已领取的所有数量        // print_R($use_code);die;        if (!$info['refund_num']) {            $info['refund_num'] = 0;        }        $no_code = $info['num'] - $use_code - $info['refund_num'];#未使用的数量        if ($info['uid'] && $info['uid'] > 0) {            $user = Dever::db('active/user')->find($info['uid']);            $user_name = $user['name'];            $user_mobile = $user['mobile'];            $user_idcard = $user['idcard'];            $member = Dever::load('active/lib/user')->agent($user);            if ($member) {                 $role = Dever::db('setting/role')->find($member['role']);                if (isset($role) && $role && isset($role['name']) && $role['name']) {                    $role_name = '<br/>'.$role['name'];                } else {                    $role_name = '';                }                $title = Dever::db('setting/title')->find($member['title_id']);                if (isset($title) && $title && isset($title['name']) && $title['name']) {                    $title_name = '('.$title['name'].')';                } else {                    $title_name = '';                }                $level = Dever::db('setting/level')->find($member['level_id']);                if (isset($level) && $level && isset($level['name']) && $level['name']) {                    $level_name = '('.$level['name'].')';                } else {                    $level_name = '';                }                $user_name = $member['name'].$role_name.$title_name.$level_name;                $user_mobile = $member['mobile'];                $user_idcard = $member['idcard'];            }        }        if ($active['col'] && $active['col'] == 'idcard') {            $user_idcard = $user['idcard'];        } else {            $user_idcard = '';        }        $field_name = '';        $field_value = '';        $field_sname = '';        $field_svalue = '';        $path = array();        if ($info['path']) {            $path = json_decode($info['path']);            // print_R($path);die;            foreach ($path as $k => $v) {                $v = (array)$v;                $field = Dever::db('active/info_field')->find($v['id']);                if ($field['type'] == 1) {                    $field_name = $field['name'];                    $field_value = $v['value'];                } elseif ($field['type'] == 2) {                    $value = Dever::db('active/info_field_value')->find($v['value']);                    // print_R($value['name']);die;                    if ($value) {                        $field_sname = $field['name'];                        $field_svalue = $value['name'];                    }                }            }        }        $result['订单信息'] = array        (            'type' => 'info',            'content' => array            (                array                (                    array('订单单号', $info['order_num']),                    array('活动名称', $active['name']),                    array('订单状态', $status),                ),                array                (                    array('购买数量', $info['num']),                    array('支付金额', $info['price']),                ),                array                (                    array('已使用', $use_code),                    array('未使用', $no_code),                    array('退款数量', $info['refund_num']),                ),            ),        );        $result['用户信息'] = array        (            'type' => 'info',            'content' => array            (                array                (                    array('用户姓名', $user_name),                    array('用户电话', $user_mobile),                    array('用户身份证号', $user_idcard),                ),            ),        );        if ($path) {            $result['报名信息'] = array            (                'type' => 'info',                'content' => array                (                    array                    (                        array($field_name, $field_value),                        array($field_sname, $field_svalue),                        // array('用户身份证号', $user_idcard),                    ),                ),            );        }                $button = array();        if ($info['status'] > 1 && $no_code > 0 && $info['status'] != 3) {            if (Dever::load('manage/auth')->checkFunc('active.order', 'editrefund', '未使用退款')) {                $purl = Dever::url('project/database/update?project=active&table=info_refund&search_option_order_id='.$info['id'].'&col=num,order_id', 'manage');                $button[] = array                (                    'type' => 'edit',                    'link' => $purl,                    'name' => '未使用退款',                );            }        }                if ($use_code >= 0) {           $result +=  $this->table($id);                    }        $head = array        (            'name' => '基本资料',            'btn' => $button,        );        $html = Dever::show($head, $result);        return $html;    }    private function table ($id)     {        $data = Dever::db('active/code')->state(array('order_id' => $id));        if ($data) {            $head = array('参加人信息', '核销码', '核销状态', '领取时间', '核销时间', '核销人', '管理');            $body = array();            foreach ($data as $k => $v) {                $user = Dever::db('active/user')->find($v['join_uid']);                $join_name = '';                if ($user) {                    $join_name = $user['name'].'<br/>'.$user['mobile'];                }                $admin_name = '';                if ($v['status'] == 1) {                    $status = '待核销';                } elseif($v['status'] == 2) {                    $status = '已核销';                   if ($v['audit_admin'] && $v['audit_admin'] >0) {                       $admin = Dever::load('manage/admin-find',$v['audit_admin']);                       if ($admin) {                            $admin_name = $admin['username'];                       }                    } else {                        if ($v['top_admin'] && $v['top_admin'] > 0) {                            $admin = Dever::db('active/info_off')->find($v['top_admin']);                            if ($admin) {                                $admin_name = $admin['name'];                            }                        }                   }                } else {                    $status = '已作废';                }                $cdate = '';                if ($v['cdate']) {                    $cdate = date('Y-m-d H:i',$v['cdate']);                }                $offdate = '';                if ($v['offdate']) {                    $offdate = date('Y-m-d H:i',$v['offdate']);                }                $m = '';                if ($v['status'] == 1) {                    $url = Dever::url('lib/manage.setOrder&order_id=' . $v['order_id'].'&code_id='.$v['id'], 'active');                    $m = '<a href="javascript:;" onclick="load( \''.$url.'\')" class="layui-btn">退款</a>';                }                $d = array                (                    $join_name,                    $v['write_code'],                    $status,                    $cdate,                    $offdate,                    $admin_name,                    $m,                );                $body[] = $d;            }            $result['核销码使用列表'] = array            (                'type' => 'table',                'content' => array                (                    'head' => $head,                    'body' => $body,                )            );           return $result;        } else {            return array();        }    }    public function setOrder_api($order_id,$code_id){        $data = Dever::db('active/order')->find($order_id);        $ids = $this->common($data,3,'',$code_id);        if ($ids) {            $w['where_id'] = $code_id;            $w['status'] = 3;            Dever::db('active/code')->update($w);        }        return 'reload';    }    public function common($data,$type,$num=false,$refund_id=false){        $active = Dever::db('active/info')->find($data['active_id']);        $info = Dever::db('active/info_refund')->state(array('order_id'=>$data['id']));        if (time() > $active['act_start']) {            Dever::alert('活动已开始,不能退款');        }        if ($type == 1) {            $code = Dever::db('active/code')->find(array('order_id'=>$data['id']));            if ($data['code_num'] > 0 || (isset($code) && $code)) {                Dever::alert('此状态下不可退款');            }            if ($data['status'] != 2) {                Dever::alert('此状态下不可退款');            }            $refund_num = $data['num'];            $price = $data['price'];        }        if ($type == 2) {            $price = $num * $active['price'];            $refund_num = $num;        }        if ($type == 3) {            $refund_num = 1;            $price = $active['price'];        }                $param = array        (            'project_id' => 6,            'channel_id' => 1,            'system_source' => 1,            'account_id' => 8,            'order_id' => $data['order_num'],            'refund_cash' => $price,            //'refund_order_id' => '',        );        if ($type != 1) {            $param['refund_order_id'] = $data['order_num'] . '_' . count($info);        }                if ($data['price'] > 0) {            $result = Dever::load('pay/api.refund', $param);            if (!$result) {                # 退款失败,抛出错误                //throw new \Exception('退款失败');                Dever::alert('退款失败,请联系管理员');            } else {                 $admin = Dever::load('manage/auth.info');                $time = time();                $where['where_id'] = $data['id'];                $where['status'] = 6;                $where['refund_admin'] = $admin['id'];                $where['rdate'] = $time;                if (!$data['refund_num']) {                    $data['refund_num'] = 0;                }                $where['refund_num'] = $refund_num + $data['refund_num'];                if ($type == 1 || ($type == 2 && $price = $data['price'])) {                    Dever::db('active/order')->update($where);                } elseif (($type == 2 && $price != $data['price']) || $type == 3) {                    $where['status'] = 5;                    $ids = Dever::db('active/order')->update($where);                    return $ids;                }                if ($type == 2) {                    $insert['status'] = 2;                    $insert['where_id'] = $refund_id;                    $insert['audit_admin'] = $admin['id'];                    Dever::db('active/info_refund')->update($insert);                }            }        }    }    #更新数量    public function upNum($order_id)    {        $data = Dever::db('active/order')->find($order_id);        if (!$data['refund_num']) {            $w['refund_num'] = 0;        } else {            $w['refund_num'] =$data['refund_num'];        }        if (!$data['code_num'] || $data['code_num'] < 0) {            $w['code_num'] = 0;        }        if (!$data['no_num']) {            $w['no_num'] = 0;        }        #已使用的数量        $code = Dever::db('active/code')->getCode(array('order_id'=>$data['id'],'status'=>'1,2'));        $w['code_num'] = count($code);        #待核销的数量        $no_code = Dever::db('active/code')->getCode(array('order_id'=>$data['id'],'status'=>1));        $w['no_num'] = count($no_code);        $w['where_id'] = $data['id'];        Dever::db('active/order')->update($w);    }}
 |