why.xingtongworld.com项目
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

1125 lines
52 KiB

<?php
namespace app\api\controller;
use think\Request;
use think\Controller;
use think\Db;
use think\Validate;
use app\admin\model\Options;
//文化艺术资产托管
class Culture extends Controller{
public function __construct(){
$request=request();
$action=$request->action();
$post = $request->post();
$params=isset($post['data'])?$post['data']:[];
$keys=[
'import'=>'9417aaa07a16d1fa',
'importartbook'=>'2ce09d0fd2a21809',
'importebook'=>'2fdd1f00234aca81',
];
$agencykey=isset($keys[$action])?$keys[$action]:'';
/*
if(empty($agencykey)){
$this->error('缺少参数');
}
if (!isset($post['time'])) {
$this->error('缺少参数');
}
$timestamp = $post['time'];
if (empty($timestamp)) {
$this->error('缺少参数');
}
// 判断token
$token =$post['token'];
if(!$token) {
$this->error('缺少参数');
}
$curtime = time();
$expire = 60; // 允许延迟秒数
if (!$timestamp || $timestamp > $curtime || ($timestamp + $expire) < $curtime) {
$this->error('token验证超时');
}
$sign = $this->getSign($agencykey, $post);
if ($token != $sign) {
$this->error('token验证失败');
}
*/
}
protected function replaceTitle($title=""){
$keys=["","唐代","","北宋","南宋","宋-元","","元代","","金代","","元-明","","明代","大明万历年制款","清中期","清同治","清康熙","清嘉庆","清光绪","宋金","元末明初","清中期","大清雍正年制款","大清乾隆年制款","清末","清初",
"元-明初","南北朝","明永乐","明宣德","明成化","明崇祯","明晚清初","民国","宋代","金(或元)","雍正年制款","大清","乾隆年制款","中和堂(款)","金元","乾隆御制","明代弘治年制","清代","大清雍正","大清同治年制款",
"明早期","宣德","崇祯","新石器时代","春秋-战国","战国-汉","","汉代","古汉代","西汉","东汉","清代乾隆款","乾隆","北魏","明末","清末","唐-五代","明以前","康熙款",
"商代","洪武","","商周","年制","大年制","","万历","康熙","嘉靖","雍正","光绪","(大年制楷书款)","万历",",光绪(康熙款)","北,","内府",",万历",",雍正",",康熙",",嘉靖",
"春秋战国","五代","战国","永乐","大弘治","正德","大正德","枢府","老玉","中期","早期","明,","(清)","元·","(元)","","古玉","宋·","金(或元)·","清乾隆·","明永乐·","明万历·",
"南宋·","北宋·","“大清光绪”","(早期)","(清光绪款)","柜台面议"];
arsort($keys);
$title=str_replace($keys,"",$title);
return $title;
}
// 获取sign
protected function getSign($secret, $data)
{
if (isset($data['token']))
unset($data['token']);
// 对数组的值按key排序
ksort($data);
// 生成url的形式
$params = http_build_query($data);
// 生成sign
$sign = md5($params.$secret);
return $sign;
}
/**
* 我的托管
* @param Request $request
* @return string
*/
protected function mytg(Request $request){
$limit = $request->param('limit', 30);
$user_id = session('hid');
$where=['a.user_id' => $user_id];
$apply_type=2;//input('apply_type','','intval');
$fields=['a.apply_id', 'a.status', 'a.apply_status','b.contract','b.contract_status', 'a.create_time', 'b.hoster_name', 'b.capital_type', 'b.apply_type'];
$obj=DB::name('capitalapply a')->field($fields)->join('capitalbaseinfo b', 'a.apply_id = b.apply_id');
if($apply_type){
$user=session('user');
$groupid=isset($user['member_list_groupid'])?$user['member_list_groupid']:'';
if($groupid==6){
$where=['a.status'=>40,'a.apply_status'=>0];
}
$where['b.apply_type']=$apply_type;
$where['p.del_flag']=0;
array_push($fields,'p.score');
$obj->join('capitalproassign p', 'a.apply_id = p.apply_id');
}
$data =$obj->where($where)->order('a.apply_id', 'desc')->paginate($limit)->toArray();
if (!empty($data)) {
foreach ($data['data'] as $key => $val) {
$data['data'][$key]['capital_name'] =($val['apply_type']!=2)?config('capital_type')[$val['capital_type']]:'';
$data['data'][$key]['status_name'] = config('status')[$val['status']] . '中';
$data['data'][$key]['create_date'] =$val['create_time']?date("Y-m-d",$val['create_time']):'';
$applyid=$val['apply_id'];
$astatus=intval($val['apply_status']);
if ($astatus == 2) {
$data['data'][$key]['status_name'] = config('status')[$val['status']] . '(审核不通过)';
$advice=db('capitalcheck')->where(['apply_id'=>$applyid,'check_type'=>$val['status']])->order('check_id desc')->find();
$data['data'][$key]['advice'] =strip_tags($advice['advice']);
}else if ($val['status'] == 50) {
$check_type=($val['apply_type']==1)?20:40;
$advice=db('capitalcheck')->where(['apply_id'=>$applyid,'check_type'=>$check_type])->order('check_id desc')->find();
$data['data'][$key]['advice'] =$advice?strip_tags($advice['advice']):'';
}else {
$msg=config('status')[$val['status']].'中';
if($val['apply_type']==2&&$val['status']==100){
$msg='待签协议,我们的工作人员会尽快与您联系';
}
if($val['apply_type']==2&&$val['status']==110){
if($astatus==0)$msg='等待办理入库';
if($astatus==3)$msg='可办理入库';
if($astatus==1)$msg='完成入库';
}
$data['data'][$key]['status_name'] =$msg;
$data['data'][$key]['advice'] = '';
}
}
}
return json_encode(['code' => 200, 'msg' => 'success', 'data' => $data], JSON_UNESCAPED_UNICODE);
}
public function products(){
$products=Db::name('capitalbaseinfo')->alias('b')->field("d.apply_id,d.hoster_reason,d.capital_name,d.capital_size,d.capital_type,d.capital_price,d.capital_desc,d.capital_sprice,d.capital_agency,d.capital_date,d.capital_files")->join(config('database.prefix').'capitaldetail d','d.apply_id = b.apply_id')->where(['d.flag'=>1,'b.apply_type'=>2])->select();
if(count($products)){
foreach ($products as &$item){
$item['capital_date']=$item['capital_date']?date("Y-m-d",$item['capital_date']):'';
$item['type_name']=getCapitalType($item['capital_type']);
$files=html_entity_decode($item['capital_files']);
$files=explode(";",$files);
foreach ($files as $k=>$jow){
$files[$k]=str_replace('\\','/',$jow);
}
$item['capital_files']=implode(";",$files);
}
}
return json(['code' => 200, 'msg' => 'success','products'=>$products]);
}
/**
* 托管项目详情
* @param Request $request
* @return string
*/
protected function detail(Request $request){
$tg_type=2;
$tg_read1=input('tg_read1','');
$tg_read2=input('tg_read2','');
$tg_read3=input('tg_read3','');
$tgid=input('id');
if(empty($tgid)){
if(!$tg_read1||!$tg_read2||!$tg_read3){
$this->error("请勾选已阅读并同意");
}
}
$uid=session('hid');
$baseinfo=['apply_id'=>'','hoster_name'=>'','hoster_type'=>'','apply_type'=>'','tg_type'=>'','hoster_reason'=>'','company_addr'=>'','legal_person'=>'',
'reg_capital'=>'','eco_nature'=>'','leader_cardtype'=>'','leader_cardno'=>'','natural_name'=>'',
'natural_addr'=>'','natural_tel'=>'','natural_fax'=>'','natural_email'=>'','natural_code'=>'','business_code'=>'',
'capital_num'=>'','capital_type'=>'','proassign'=>'',
];
if($tgid){
$baseinfo=Db::name('capitalbaseinfo')->where(['apply_id'=>$tgid])->find();
$tg_type=$baseinfo['apply_type'];
$baseinfo['tg_type']=isset($baseinfo['tg_type'])?explode(',',$baseinfo['tg_type']):'';
}
$status='';
$applystatus='';
if($tgid){
$apply=Db::name('capitalapply')->where(['apply_id'=>$tgid,'user_id'=>$uid])->find();
if(!$apply){
$this->error("没权限查阅此项目");
}
$status=isset($apply['status'])?$apply['status']:'';
$applystatus=isset($apply['apply_status'])?$apply['apply_status']:'';
}
//挂牌需要上传的附件
$where=array();
$where['apply_id']=0;
$where['status']=0;
$where['isopen']=1;
$where['apply_type']=$tg_type;
if($tg_type==2)$where['mobile']=1;
$files=Db::name('capitaluptype')->where($where)->order('forder asc')->select();
$where=['new_flag'=>1,'apply_id'=>$tgid];
if($tg_type!=2||($tg_type==2&&!in_array($status,[10,30,40]))){
$where['flag']=1;
}
$upfiles=Db::name('capital_upfiles')->where($where)->select();
if(count($files)){
foreach ($files as $k=>$row){
$files[$k]['flag']=0;
$files[$k]['path']='';
$files[$k]['unique_code']='';
$files[$k]['fname']='';
$files[$k]['reload']=($tg_type==2&&in_array($status,[10,30,40]))?1:0;
foreach ($upfiles as $jow){
if($row['ftype_id']==$jow['ftype_id']){
$files[$k]['flag']=($tg_type==2&&in_array($status,[10,30,40]))?$jow['flag']:1;
$files[$k]['unique_code']=$jow['unique_code'];
$files[$k]['fname']=basename($jow['path']);
$files[$k]['path']=SITE_PATH.str_replace('\\','/',$jow['path']);
}
}
}
}
$products=Db::name('capitaldetail')->where(['apply_id'=>$tgid])->select();
if(count($products)){
foreach ($products as &$item){
$item['capital_date']=$item['capital_date']?date("Y-m-d",$item['capital_date']):'';
}
}
return json_encode(['code' => 200, 'msg' => 'success', 'baseinfo' => $baseinfo,'products'=>$products,'files'=>$files], JSON_UNESCAPED_UNICODE);
}
/**
* 托管申请
*
* @param Request $request
* @return string
*/
protected function apply(Request $request){
$this->check_login();
$params = $request->param();
$jump=isset($params['jump'])?$params['jump']:'';
$mobile=isset($params['mobile'])?$params['mobile']:0;
$user_id = session('hid');
$tgtype=isset($params['tg_type'])?(is_array($params['tg_type'])?implode(',', $params['tg_type']):$params['tg_type']):'';
$assagree=isset($params['assagree'])?$params['assagree']:'';
$apply_id =isset($params['apply_id'])&&$params['apply_id']?$params['apply_id']:'';
$config=[
'apply_type' => 'require|integer',
'hoster_type' => 'require|integer',
'hoster_name' => 'require',
];
$validate = new Validate($config);
if (!$validate->check($params)) {
$msg = $validate->getError();
return json_encode(['code' => 0, 'msg' => $msg, 'data' => []], JSON_UNESCAPED_UNICODE);
}
$unique_code=$params['unique_code'];
$unique_has=isset($params['unique_has'])?$params['unique_has']:1;
if(empty($unique_code)&&$unique_has){
return json_encode(['code' => 0, 'msg' => '附件不能为空', 'data' => []], JSON_UNESCAPED_UNICODE);
}
$products=isset($params['products'])?$params['products']:'';
if($products){
$products=html_entity_decode($products);
try {
$products=json_decode($products,true);
} catch (Exception $e) {}
}
//详情信息
$detail_data1 = [
'mobile' =>intval($mobile),
'apply_type' => intval($params['apply_type']),
'hoster_name' => $params['hoster_name'],
'hoster_type' => intval($params['hoster_type']),
'tg_type' =>$tgtype,
'hoster_reason' => !isset($params['hoster_reason']) ? '0' : $params['hoster_reason'],
'business_code' => !isset($params['business_code']) ? '' : $params['business_code'],
'company_addr' => !isset($params['company_addr']) ? '' : $params['company_addr'],
'company_name' => !isset($params['company_name']) ? '' : $params['company_name'],
'legal_person' => !isset($params['legal_person']) ? '' : $params['legal_person'],
'legal_code' => !isset($params['legal_code']) ? '' : $params['legal_code'],
'legal_cardno' => !isset($params['legal_cardno']) ? '' : $params['legal_cardno'],
'legal_tel' => !isset($params['legal_tel']) ? '' : $params['legal_tel'],
'reg_capital' => !isset($params['reg_capital']) ? '' : $params['reg_capital'],
'eco_nature' => !isset($params['eco_nature']) ? '' : $params['eco_nature'],
'leader_cardtype' => !isset($params['leader_cardtype']) ? '' : $params['leader_cardtype'],
'leader_cardno' => !isset($params['leader_cardno']) ? '' : $params['leader_cardno'],
'leader_name' => !isset($params['leader_name']) ? '' : $params['leader_name'],
'natural_name' => !isset($params['natural_name']) ? '' : $params['natural_name'],
'natural_addr' => !isset($params['natural_addr']) ? '' : $params['natural_addr'],
'natural_tel' => !isset($params['natural_tel']) ? '' : $params['natural_tel'],
'natural_fax' => !isset($params['natural_fax']) ? '' : $params['natural_fax'],
'natural_email' => !isset($params['natural_email']) ? '' : $params['natural_email'],
'natural_code' => !isset($params['natural_code']) ? '' : $params['natural_code'],
'capital_own' => !isset($params['capital_own']) ? 0: intval($params['capital_own']),
'capital_class' => !isset($params['capital_class']) ? 0: intval($params['capital_class']),
'capital_name' => !isset($params['capital_name']) ? '' : $params['capital_name'],
'capital_cycle' => !isset($params['capital_cycle']) ? '' : $params['capital_cycle'],
'capital_unit' => !isset($params['capital_unit']) ? '' : $params['capital_unit'],
'capital_price' => !isset($params['capital_price']) ? '' : $params['capital_price'],
'assessment' => !isset($params['assessment']) ? '' : $params['assessment'],
'assessment_date' => !isset($params['assessment_date']) ? '' : $params['assessment_date'],
'recom_agency' => !isset($params['recom_agency']) ? '' : $params['recom_agency']
];
$detail_data2=[
'capital_num' => !isset($params['capital_num']) ? '' :intval($params['capital_num']),
'capital_type' =>($params['apply_type']==2)?'':$params['capital_type'],
'capital_child' =>!isset($params['capital_child'])?0:intval($params['capital_child']),
];
$status='';
$baseInfo = Db::name('capitalbaseinfo')->where(['apply_id' => $apply_id])->find();
$file_data=$nfile_data=$detail_data=[];
if(!$apply_id){
$detail_data=array_merge($detail_data1,$detail_data2);
//基础信息
$base_data = [
'user_id' => $user_id,
'status' => 10,
'apply_status' => 0,
'create_time' => time(),
'pay_img' => !isset($params['pay_img']) ? '' : $params['pay_img'],
];
Db::name('capitalapply')->insert($base_data);
$apply_id = Db::name('capitalapply')->getLastInsID();
if (empty($apply_id)) {
return json_encode(['code' => 500, 'msg' => 'Fail', 'data' => []], JSON_UNESCAPED_UNICODE);
}
$detail_data['create_time']=time();
$detail_data['apply_id']=$apply_id;
Db::name('capitalbaseinfo')->insert($detail_data);
$fee_data = ['apply_id' => $apply_id,'fee_flag' => 0,'create_time' => time()];
Db::name('capitalfee')->insert($fee_data);
if (!empty($params['unique_code'])) {
$params['unique_code'] = explode(',', $params['unique_code']);
Db::name('capital_upfiles')->whereIn('unique_code',$unique_code)->update(['apply_id' => $apply_id]);
}
if(count($products)){
$details=[];
foreach ($products as $pro){
$detail=[];
$detail['apply_id']=$apply_id;
$detail['capital_type']=$pro['capital_type'];
$detail['hoster_reason']=implode(',', $pro['hoster_reason']);
$detail['capital_name']=$pro['capital_name'];
$detail['capital_price']=$pro['capital_price'];
$detail['capital_sprice']=$pro['capital_sprice'];
$detail['capital_agency']=$pro['capital_agency'];
$detail['capital_desc']=$pro['capital_desc'];
$detail['capital_size']=$pro['capital_size'];
$detail['capital_date']=$pro['capital_date']?strtotime($pro['capital_date']):'';
$detail['capital_files']=urldecode($pro['capital_files']);
$detail['create_time']=time();
if(count($detail))array_push($details,$detail);
}
Db::name('capitaldetail')->insertAll($details);
}
}else{
$info=[];
if($unique_has){
$unique_code2=[];
if($unique_code)$unique_code2=explode(',', $unique_code);
$info = Db::name('capital_upfiles')->where('unique_code', 'in', $unique_code2)->select();
$fileNum = count($info);
if ($fileNum == 0 || $fileNum != count($unique_code2)) {
return json_encode(['code' => 0, 'msg' => '没有对应的数据']);
}
}
$checkInfo = Db::name('capitalapply')->where(['apply_id' => $apply_id])->where(['user_id' => $user_id])->find();
$upfiles= Db::name('capital_upfiles')->where(['apply_id' => $apply_id,'status'=>0])->select();
$details= Db::name('capitaldetail')->where(['apply_id' => $apply_id])->select();
if (!$checkInfo) {
return json_encode(['code' => 0, 'msg' => '错误的记录']);
}
$proassign=$baseInfo['proassign'];
$status=$checkInfo['status'];
$apply_type=$baseInfo['apply_type'];
if($apply_type==2&&$status==40&&$proassign==1&&$assagree==0){
Db::name('capitalapply')->where(['apply_id' => $apply_id,'user_id' => $user_id])->update(['apply_status'=>2]);
return json_encode(['code' => 200, 'msg' => '提交成功','url'=>$jump,'data' => []], JSON_UNESCAPED_UNICODE);
}
if($apply_type==2&&$status==40&&$proassign==1&&$assagree==1){
Db::name('capitalbaseinfo')->where(['apply_id' => $apply_id])->update(['ass_agree'=>$assagree]);
}
//旧纪录取出个人附件、托管附件
$file_data1=[];
$file_data2=[];
foreach ($upfiles as $row){
if(!in_array($row['ftype_id'],[25,26])){
array_push($file_data2,$row['unique_code']);
}else{
array_push($file_data1,$row['unique_code']);
}
}
$file_data=array_merge($file_data1,$file_data2);
//新纪录取出个人附件、托管附件
$nfile_data1=[];
$nfile_data2=[];
if(count($info)){
foreach ($info as $row){
if(!in_array($row['ftype_id'],[25,26])){
array_push($nfile_data2,$row['unique_code']);
}else{
array_push($nfile_data1,$row['unique_code']);
}
}
}
$nfile_data=array_merge($nfile_data1,$nfile_data2);
//专委会审核通过前修改
if($status<=40){
$past_data1=[
'mobile' => intval($baseInfo['mobile']),
'apply_type' => intval($baseInfo['apply_type']),
'hoster_name' => $baseInfo['hoster_name'],
'hoster_type' => intval($baseInfo['hoster_type']),
'tg_type' => $baseInfo['tg_type'],
'hoster_reason' =>$baseInfo['hoster_reason'],
'business_code' =>$baseInfo['business_code'],
'company_addr' => $baseInfo['company_addr'],
'company_name' => $baseInfo['company_name'],
'legal_person' => $baseInfo['legal_person'],
'legal_code' => $baseInfo['legal_code'],
'legal_cardno' => $baseInfo['legal_cardno'],
'legal_tel' => $baseInfo['legal_tel'],
'reg_capital' => $baseInfo['reg_capital'],
'eco_nature' => $baseInfo['eco_nature'],
'leader_cardtype' =>$baseInfo['leader_cardtype'],
'leader_cardno' =>$baseInfo['leader_cardno'],
'leader_name' =>$baseInfo['leader_name'],
'natural_name' =>$baseInfo['natural_name'],
'natural_addr' =>$baseInfo['natural_addr'],
'natural_tel' => $baseInfo['natural_tel'],
'natural_fax' => $baseInfo['natural_fax'],
'natural_email' => $baseInfo['natural_email'],
'natural_code' => $baseInfo['natural_code'],
'capital_own' => intval($baseInfo['capital_own']),
'capital_class' => intval($baseInfo['capital_class']),
'capital_name' => $baseInfo['capital_name'],
'capital_cycle' => $baseInfo['capital_cycle'],
'capital_unit' => $baseInfo['capital_unit'],
'capital_price' => $baseInfo['capital_price'],
'assessment' => $baseInfo['assessment'],
'assessment_date' => $baseInfo['assessment_date'],
'recom_agency' => $baseInfo['recom_agency']
];
$past_data2=[
'capital_num' => intval($baseInfo['capital_num']),
'capital_type' => $baseInfo['capital_type'],
'capital_child' =>$baseInfo['capital_child']?$baseInfo['capital_child']:0
];
$all1=array_merge($past_data1,$file_data1);
$all2=array_merge($past_data2,$file_data2);
$nall1=array_merge($detail_data1,$nfile_data1);
$nall2=array_merge($detail_data2,$nfile_data2);
if(count($products)){
$last=Db::name('capitaldetail')->field('apply_id,capital_type,hoster_reason,capital_name,capital_price,capital_sprice,capital_agency,capital_desc,capital_size,capital_files,capital_date')->where(array('apply_id' => $apply_id))->select();
foreach ($last as $k=>$row){
$last[$k]['apply_id']=intval($row['apply_id']);
$last[$k]['capital_type']=intval($row['capital_type']);
}
$details=[];
foreach ($products as $pro){
$detail=[];
$detail['apply_id']=intval($apply_id);
$detail['capital_type']=intval($pro['capital_type']);
$detail['hoster_reason']=implode(',', $pro['hoster_reason']);
$detail['capital_name']=$pro['capital_name'];
$detail['capital_price']=$pro['capital_price'];
$detail['capital_sprice']=$pro['capital_sprice'];
$detail['capital_agency']=$pro['capital_agency'];
$detail['capital_desc']=$pro['capital_desc'];
$detail['capital_size']=$pro['capital_size'];
$detail['capital_files']=urldecode($pro['capital_files']);
$detail['capital_date']=$pro['capital_date']?strtotime($pro['capital_date']):'0';
if(count($detail))array_push($details,$detail);
}
$current=array_diff_key($details,['create_time'=>time()]);
$all2=array_merge($all2,$last);
$nall2=array_merge($nall2,$current);
array_walk($details,function(&$v, $k, $p) {
$v = array_merge($v, $p);
},['create_time'=>time()]);
Db::name('capitaldetail')->where(array('apply_id' => $apply_id))->delete();
Db::name('capitaldetail')->insertAll($details);
}
//个人信息专委会审核通过前都可以修改
if(in_array($status,[10,30,40])&&md5(json_encode($all1))!=md5(json_encode($nall1))){
$detail_data=$detail_data1;
Db::name('capitalbaseinfo')->where(['apply_id' => $apply_id])->update($detail_data);
}
//托管信息初审通过前可修改 专委会审核前就跳回
if(in_array($status,[10,30,40])&&md5(json_encode($all2))!=md5(json_encode($nall2))){
$detail_data=$detail_data2;
Db::name('capitalbaseinfo')->where(['apply_id' => $apply_id])->update($detail_data);
if(in_array($status,[10,30,40])){
$upInfo = array(
'status' => 10,
'apply_status' => 0
);
$statusInfo = Db::name('capitalapply')->where(['apply_id' => $apply_id])->where(['user_id' => $user_id])->update($upInfo);
Db::name('capitalproassign')->where(['apply_id' => $apply_id])->delete();
$msg='【深圳文化产权交易所】'.date("Y年m月d日 H:i").'系统官网后台收到一条艺术品托管修改消息,请及时查看处理!';
$tel=config('arttgnotice');
send_sms($tel,$msg);
}
}
}
if($unique_has){
if(md5(json_encode($file_data))!=md5(json_encode($nfile_data))){
$upInfo = array('apply_id' => $apply_id);
$upRtn = Db::name('capital_upfiles')->where('unique_code', 'in', explode(',', $unique_code))->update($upInfo);
foreach ($info as $row) {
$ftype_id = $row['ftype_id'];
$del = Db::name('capital_upfiles')->where('apply_id', $apply_id)->where('ftype_id', $ftype_id)->where('unique_code', 'not in', explode(',', $unique_code))->where('flag', 0)->delete();
}
}
}
}
return json_encode(['code' => 200, 'msg' => '提交成功','url'=>$jump,'data' => []], JSON_UNESCAPED_UNICODE);
}
/**
* 上传图片
*
* @param Request $request
* @return string
*/
protected function uploads(Request $request)
{
set_time_limit(0);
$params = $request->param();
//表名
$table = isset($params['table']) ? $params['table'] : 'capital_upfiles';
$user_id = session('hid');
//文件在哪个状态下添加
$status = $request->param('status', 0);
if (empty($user_id)) {
return json_encode(['code' => 500, 'msg' => '重新登陆', 'data' => []], JSON_UNESCAPED_UNICODE);
}
$files = $request->file('');
if (!$files) {
return json_encode(['code' => 500, 'msg' => '什么都没有上传', 'data' => []], JSON_UNESCAPED_UNICODE);
}
//上传地址
$upload_path = '/data' . DS . 'upload';
$img_url = '';
$unique_code = md5(time() + $user_id);
foreach ($files as $key => $file) {
if (!in_array(strtoupper(substr(strrchr($file->getInfo('name'), '.'), 1)), ['PDF', 'JPG', 'DOC', 'DOCX', 'RAR', 'ZIP'])) {
session('TOKEN', input('TOKEN'));
$this->error('上传文件类型错误!');
}
//处理file_one2,得到ftype_id
$ftype_id = intval(substr($key, 8));
$upath = $upload_path . DS . date('Y-m-d');
$validate = config('upload_validate');
$info = $file->rule('md5')->validate($validate)->move(ROOT_PATH . $upath);
$ftype = 1;
if (count($params) && isset($params[$ftype])) $ftype = ($params[$ftype_id]['apply_id'] == 0) ? 1 : 2;
if ($info) {
$img_url = $upath . DS . $info->getFilename();
//写入数据表capital_upfiles
$data = [
'user_id' => isset($user_id) ? $user_id : 0,
'user_type' => 1,
'status' => $status,
'upload_time' => time(),
'ftype_id' => $ftype_id,
'ftype' => $ftype,
'filesize' => $info->getSize(),
'path' => $img_url,
'flag' => 0,
'unique_code' => $unique_code
];
Db::name($table)->insert($data);
} else {
return json_encode(['code' => 500, 'msg' => $file->getError()]);
}
}
$retData = [
'unique_code' => $unique_code,
'img_url' => 'http://' . $_SERVER['HTTP_HOST'] . DS . $img_url
];
return json_encode(['code' => 200, 'msg' => '上传成功', 'data' => $retData], JSON_UNESCAPED_UNICODE);
}
/**
* 同意协议
* @return string
*/
protected function agreement(){
$agreesys1=Options::get_options('tgagree_options3',$this->lang);
$agreesys2=Options::get_options('tgagree_options4',$this->lang);
$agreesys3=Options::get_options('tgagree_options5',$this->lang);
return json_encode(['code' => 200, 'msg' => '上传成功', 'data' =>['agree1'=>$agreesys1,'agree2'=>$agreesys2,'agree3'=>$agreesys3]], JSON_UNESCAPED_UNICODE);
}
/**
* 托管公告
* @return string
*/
protected function notice(){
$uid=session('hid');
$lists=Db::name('capitalnotice')->alias('a')->where(['a.user_id'=>$uid])->order('a.create_time desc')->field('a.*')->paginate(config('paginate.list_rows'));
$show=$lists->render();
return json_encode(['code' => 200, 'msg' => '上传成功', 'data' =>['list'=>$lists,'page'=>$show]], JSON_UNESCAPED_UNICODE);
}
/**
* 已查阅
* @return string
*/
protected function read(){
$notice_id=input('notice_id',0,'intval');
//设置为已读
Db::name('capitalnotice')->update(['notice_id'=>$notice_id,'is_read'=>1]);
return json_encode(['code' => 200, 'msg' => '查阅成功'], JSON_UNESCAPED_UNICODE);
}
/**
* 托管产品列表
* @return string
*/
protected function index(){
$kind=4;
$childs=config("tuoguan.childs");
$parents=config('tuoguan.parents');
$state=input('state','','intval');
$states=[1=>['name'=>'预披露'],2=>['name'=>'正式披露'],['name'=>'成交公示'],['name'=>'艺术资产转让']];
$page=input('page',1);
$mprice=input('mprice');
$sprice=input('sprice');
if($mprice)$mprice=intval($mprice);
if($sprice)$sprice=intval($sprice);
$keyword=input('keyword','');
$cid=input('cid','','intval');
$kid=input('kid','','intval');
$showtype=input('showtype',0,'intval');
$yearsort=input('yearsort','asc');
$pricesort=input('pricesort','asc');
$timesort=input('timesort','asc');
if(!in_array($yearsort,['asc','desc']))$yearsort='asc';
if(!in_array($pricesort,['asc','desc']))$pricesort='asc';
if(!in_array($timesort,['asc','desc']))$timesort='asc';
if($cid||$state){
if($state){
$categorys=[];
$where=['c_status'=>1,'c_kind'=>$kind];
$where['c_state']=$state;
$stateslist=[1=>'预披露','正式披露','成交公示','艺术资产转让'];
$parent=isset($stateslist[$state])?$stateslist[$state]:'';
foreach ($states as $k=>$v){
if($k!=$state)unset($states[$k]);
}
}else{
$categorys=isset($childs[$cid])?$childs[$cid]:[];
$where=['c_status'=>1,'c_kind'=>$kind];
$where['c_parent']=array('like',[$cid.',%','%,'.$cid.'%',$cid],'OR');
foreach ($categorys as $k=>$v){
$where['c_child']=array('like',[$k.',%','%,'.$k.'%',$k],'OR');
$check=Db::name('finance')->where($where)->count();
if($check==0)unset($categorys[$k]);
}
if(isset($where['c_cid']))unset($where['c_cid']);
if(isset($where['c_child']))unset($where['c_child']);
$parent=isset($parents[$cid])?$parents[$cid]:'';
}
if($kid){
$where['c_child']=array('like',[$kid.',%','%,'.$kid.'%',$kid],'OR');
}
$db=Db::name('finance')->where($where);
if($keyword){
$db->where('c_name|c_code|c_content','like','%'.$keyword.'%');
}
if($mprice){
$db->where('c_price','<=',$mprice);
}
if($sprice){
$db->where('c_price','>=',$sprice);
}
$order=[];
$order['c_year']=$yearsort;
$order['c_price']=$pricesort;
$order['c_time']=$timesort;
$order['c_order']='desc';
$products=$db->order($order)->paginate(15,false,['query'=>get_query()]);
$show = $products->render();
if($products){
$products=$products->toArray();
$products=$products['data'];
foreach ($products as $k=>$item){
if($item['c_jump']){
if(strpos(strtolower($item['c_jump']),'http')===false){
$products[$k]['c_jump']='http://'.$item['c_jump'];
}
}
$products[$k]['c_name']=$this->replaceTitle($item['c_name']);
$products[$k]['c_content']=$this->replaceTitle($item['c_content']);
}
}
}else{
$list=[];
if(count($states)){
$where=['c_status'=>1,'c_kind'=>$kind];
foreach ($states as $id=>$item){
if($id==1){
unset($states[$id]);
continue;
}
$where['c_state']=$id;
$db=Db::name('finance')->where($where);
$products=$db->order('c_order desc,c_time desc')->limit(5)->select();
foreach ($products as $k=>$item){
if($item['c_jump']){
if(strpos(strtolower($item['c_jump']),'http')===false){
$products[$k]['c_jump']='http://'.$item['c_jump'];
}
}
$products[$k]['c_name']=$this->replaceTitle($item['c_name']);
$products[$k]['c_content']=$this->replaceTitle($item['c_content']);
}
$states[$id]['products']=$products;
}
}
if($kind==4&&$cid==''){
$row=[];
$id=11;
$row['id']=$id;
$row['name']=$parents[$id];
$childrow=isset($childs[$id])?$childs[$id]:[];
$row['has']=count($childrow)?1:0;
if(count($childrow)){
foreach ($childrow as $k=>$v){
$where['c_child']=array('like',[$k.',%','%,'.$k.'%',$k],'OR');
$check=Db::name('finance')->where($where)->count();
if($check==0)unset($childrow[$k]);
}
}
$row['childs']=$childrow;
$where=['c_status'=>1,'c_kind'=>$kind];
$where['c_parent']=array('like',[$id.',%','%,'.$id.'%',$id],'OR');
$db=Db::name('finance')->where($where)->order('c_order desc,c_time desc');
if($keyword){
$db->where('c_name|c_code','like','%'.$keyword.'%');
}
$products=$db->limit(10)->select();
foreach ($products as $k=>$item){
if($item['c_jump']){
if(strpos(strtolower($item['c_jump']),'http')===false){
$products[$k]['c_jump']='http://'.$item['c_jump'];
}
}
$products[$k]['c_name']=$this->replaceTitle($item['c_name']);
$products[$k]['c_content']=$this->replaceTitle($item['c_content']);
}
$row['products']=$products;
array_push($list, $row);
$row=[];
$row['id']='all';
$row['name']="专区";
$childrow=[];
$parentrow=[];
foreach ($parents as $k=>$jow){
if($k>4&&$k<11){
$childrow[$k]=$jow;
}else if($k>11){
$parentrow[$k]=$jow;
}
}
if(count($childrow)){
foreach ($childrow as $k=>$v){
$where['c_parent']=array('like',[$k.',%','%,'.$k.'%',$k],'OR');
$check=Db::name('finance')->where($where)->count();
if($check==0)unset($childrow[$k]);
}
}
$row['has']=count($childrow)?1:0;
$row['childs']=$childrow;
$where=['c_status'=>1,'c_kind'=>$kind];
$where['c_parent']=array('<>',10);
$db=Db::name('finance')->where($where)->order('c_order desc,c_time desc');
if($keyword){
$db->where('c_name|c_code','like','%'.$keyword.'%');
}
$products=$db->limit(10)->select();
foreach ($products as $k=>$item){
if($item['c_jump']){
if(strpos(strtolower($item['c_jump']),'http')===false){
$products[$k]['c_jump']='http://'.$item['c_jump'];
}
}
$products[$k]['c_name']=$this->replaceTitle($item['c_name']);
$products[$k]['c_content']=$this->replaceTitle($item['c_content']);
$cparent=$item['c_parent'];
$cparent=explode(",",$cparent);
$products[$k]['c_parent']=count($cparent)?$cparent[0]:'';
}
$row['products']=$products;
array_push($list, $row);
foreach ($parentrow as $k=>$item){
$id=$k;
$row=[];
$row['id']=$id;
$row['name']=$item;
$childrow=isset($childs[$id])?$childs[$id]:[];
$row['has']=count($childrow)?1:0;
if(count($childrow)){
foreach ($childrow as $k=>$v){
$where['c_child']=array('like',[$k.',%','%,'.$k.'%',$k],'OR');
$check=Db::name('finance')->where($where)->count();
if($check==0)unset($childrow[$k]);
}
}
$row['childs']=$childrow;
$where=['c_status'=>1,'c_kind'=>$kind];
$where['c_parent']=array('like',[$id.',%','%,'.$id.'%',$id],'OR');
$db=Db::name('finance')->where($where)->order('c_order desc,c_time desc');
if($keyword){
$db->where('c_name|c_code','like','%'.$keyword.'%');
}
$products=$db->limit(10)->select();
foreach ($products as $k=>$item){
if($item['c_jump']){
if(strpos(strtolower($item['c_jump']),'http')===false){
$products[$k]['c_jump']='http://'.$item['c_jump'];
}
}
$products[$k]['c_name']=$this->replaceTitle($item['c_name']);
$products[$k]['c_content']=$this->replaceTitle($item['c_content']);
}
$row['products']=$products;
array_push($list, $row);
}
}else{
if($kind==4&&$cid==0){
foreach ($parents as $k=>$item){
if($k<5||$k>10){unset($parents[$k]);}
}
}
foreach ($parents as $id=>$item){
$row=[];
$row['id']=$id;
$row['name']=$item;
$childrow=isset($childs[$id])?$childs[$id]:[];
$row['has']=count($childrow)?1:0;
$where=['c_status'=>1,'c_kind'=>$kind];
$where['c_parent']=array('like',[$id.',%','%,'.$id.'%',$id],'OR');
if(count($childrow)){
foreach ($childrow as $k=>$v){
$where['c_child']=array('like',[$k.',%','%,'.$k.'%',$k],'OR');
$check=Db::name('finance')->where($where)->count();
if($check==0)unset($childrow[$k]);
}
if(isset($where['c_cid']))unset($where['c_cid']);
if(isset($where['c_child']))unset($where['c_child']);
}
$row['childs']=$childrow;
$db=Db::name('finance')->where($where)->order('c_order desc,c_time desc');
if($keyword){
$db->where('c_name|c_code','like','%'.$keyword.'%');
}
$products=$db->limit(10)->select();
foreach ($products as $k=>$item){
if($item['c_jump']){
if(strpos(strtolower($item['c_jump']),'http')===false){
$products[$k]['c_jump']='http://'.$item['c_jump'];
}
}
$products[$k]['c_name']=$this->replaceTitle($item['c_name']);
$products[$k]['c_content']=$this->replaceTitle($item['c_content']);
}
$row['products']=$products;
array_push($list, $row);
}
}
}
$banners=Db::name('link')->where(['lk_status'=>1,'lk_cid'=>15])->order('lk_order desc')->select();
return json_encode(['code' => 200, 'msg' => 'success', 'list' =>$list,'banners'=>$banners,'states'=>$states], JSON_UNESCAPED_UNICODE);
}
/**
* 搜索
* @return string
*/
protected function search(){
$cid=input('cid','','intval');
$this->assign('cid',$cid);
$kid=input('kid','','intval');
$this->assign('kid',$kid);
$banners=Db::name('link')->where(['lk_status'=>1,'lk_cid'=>15])->order('lk_order desc')->select();
$kind=input('kind','','intval');
$page=input('page',1);
$mprice=input('mprice');
$sprice=input('sprice');
if($sprice){
$sprice=str_replace(',', '', $sprice);
$sprice=intval($sprice);
}
if($mprice){
$mprice=str_replace(',', '', $mprice);
$mprice=intval($mprice);
}
$keyword=input('keyword','');
$showtype=input('showtype',0,'intval');
$yearsort=input('yearsort','asc');
$pricesort=input('pricesort','asc');
$timesort=input('timesort','desc');
if(!in_array($yearsort,['asc','desc']))$yearsort='asc';
if(!in_array($pricesort,['asc','desc']))$pricesort='asc';
if(!in_array($timesort,['asc','desc']))$timesort='desc';
if($keyword)$keyword=$this->replaceTitle($keyword);
$where=['c_status'=>1,'c_kind'=>$kind];
$db=Db::name('finance')->where($where);
if($keyword){
$db->where('c_name|c_code|c_content|c_material|c_class','like','%'.$keyword.'%');
}
if($mprice){
$db->where('convert(`c_price`,SIGNED)<='.$mprice);
}
if($sprice){
$db->where('convert(`c_price`,SIGNED)>='.$sprice);
}
$order=['c_order'=>'desc','c_time'=>$timesort];
if($kind==4){
$db->order("c_year ".$yearsort);
}
$query=$db->order("c_price+0 ".$pricesort);
if($kind==4){
$order=[];
$order['c_time']=$timesort;
$order['c_order']='desc';
}
$query=$query->order($order);
$products=$query->paginate(20,false,['query'=>get_query(),'type'=>'bootstrap','var_page' =>'page']);
$show = $products->render();
if($products){
$products=$products->toArray();
$products=$products['data'];
foreach ($products as $k=>$item){
if($item['c_jump']){
if(strpos(strtolower($item['c_jump']),'http')===false){
$products[$k]['c_jump']='http://'.$item['c_jump'];
}
}
$products[$k]['c_name']=$this->replaceTitle($item['c_name']);
$products[$k]['c_content']=$this->replaceTitle($item['c_content']);
}
}
return json_encode(['code' => 200, 'msg' => 'success', 'products' =>$products,'banners'=>$banners,'page'=>$show], JSON_UNESCAPED_UNICODE);
}
/**
* 托管详情
* @return string
*/
protected function prodetail(){
$c_id=input('c_id',0,'intval');
$list=Db::name('finance')->where(['c_status'=>1,'c_id'=>$c_id])->find();
$pic_list = array_filter(explode(",", $list['c_photos']));
$list['photos']=$pic_list;
return json_encode(['code' => 200, 'msg' => 'success', 'list' =>$list], JSON_UNESCAPED_UNICODE);
}
/**
* 艺术资产托管申请
*/
protected function subscription(){
$params=request()->param();
$query=$this->_checksub($params);
if($query)$this->success('提交成功');
else $this->error('提交失败');
}
/**
* 预约登记
* @param array $params
* @return number|string
*/
protected function _checksub($params=array()){
$username=isset($params['username'])?$params['username']:'';
$mobile=isset($params['mobile'])?$params['mobile']:'';
$email=isset($params['email'])?$params['email']:'';
$kind=isset($params['kind'])?$params['kind']:'';
$pid=isset($params['c_id'])?$params['c_id']:'';
$type=isset($params['type'])?$params['type']:1;
$price=isset($params['price'])?$params['price']:'';
$prepay=isset($params['prepay'])?intval($params['prepay']):'';
$remark=isset($params['remark'])?$params['remark']:'';
$creditcard=isset($params['creditcard'])?$params['creditcard']:'';
$num=isset($params['num'])?intval($params['num']):0;
$role=isset($params['role'])?intval($params['role']):1;
if(in_array($type,[1,2])){
$validate=new Validate([
'__token__' => 'require|token',
]);
$post=input("post.");
if (!$validate->check($post)) {
$this->error('令牌失败,请刷新页面重新提交',url('news/finance',['c_id'=>$pid,'kind'=>$kind]));
}
}
if($type==2){
if(empty($price))$this->error('请输入价格');
}
if(isset($params['c_id'])){
if(empty($pid))$this->error('请输入产品id');
}
if(isset($params['num'])){
if(empty($num))$this->error('请输入出席人数');
}
if(isset($params['prepay'])){
if(empty($prepay))$this->error('请选择是否愿意交纳保证金');
}
if(isset($params['creditcard'])){
if(empty($creditcard))$this->error('请输入身份证号码');
}
if(empty($username))$this->error('请输入姓名');
if(!preg_match('/^[\x7f-\xff]+$/', $username))$this->error("请输入中文姓名");
if(empty($mobile))$this->error('请输入联系电话');
if(!preg_match("/^1[34578]\d{9}$/", $mobile)){
$this->error('请输入正确手机号码');
}
if(isset($params['email'])&&$kind!=4){
if(empty($email))$this->error('请输入邮箱');
$check=filter_var($email,FILTER_VALIDATE_EMAIL);
if(!$check)$this->error('请输入正确的邮箱');
}
$data=array();
$data['username']=$username;
if($type==2){
$data['price']=$price;
}
$data['type']=$type;
$data['kind']=$kind;
$data['mobile']=$mobile;
$data['email']=$email;
$data['created_time']=time();
$data['productid']=$pid;
$data['prepay']=$prepay;
$data['remark']=$remark;
$data['creditcard']=$creditcard;
$data['num']=$num;
$data['role']=$role;
$query=Db::name('subscription')->insert($data);
return $query;
}
}