| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475 | 
							- <?php
 
- namespace api\modules\v1\controllers;
 
- use api\common\controllers\Controller;
 
- use common\helpers\CodeImgGenerate;
 
- use common\helpers\Util;
 
- use common\modules\config\models\Config;
 
- use common\models\Survey;
 
- use common\models\SurveyNew;
 
- use Yii;
 
- use yii\helpers\ArrayHelper;
 
- use api\common\behaviors\QueryParamAuth;
 
- use yii\captcha\CaptchaAction;
 
- use common\enums\CodeEnum;
 
- use common\models\Policy;
 
- class SurveyController extends Controller {
 
-     public function behaviors()
 
-     {
 
-         return ArrayHelper::merge(parent::behaviors(), [
 
-             [
 
-                 'class' => QueryParamAuth::className(),
 
-                 'tokenParam' => 'token',
 
-                 'optional' => ['index','submit','enterprise','captcha']
 
-             ]
 
-         ]);
 
-     }
 
-     
 
-     
 
-     public function actionCaptcha()
 
-     {
 
-         $CodeImgGenerate = new CodeImgGenerate(\Yii::$app->controller->id,\Yii::$app->controller);
 
-         $codeInfo = $CodeImgGenerate->inline();                  // 验证码二进制流
 
-         header("Content-type: image/png");                       // 输出图片
 
-         exit($codeInfo);
 
-     }
 
-     /**
 
-      * @api {get} /v1/survey 列表
 
-      * @apiVersion 1.0.0
 
-      * @apiName index
 
-      * @apiGroup Survey
 
-      *
 
-      *
 
-      */
 
-     public function actionIndex()
 
-     {
 
-         $type = request()->get('type');
 
-         if(empty($type)) $type = 'industry';
 
-         
 
-         $lists = ArrayHelper::toArray(Config::find()->select(['name','value','extra','description','type'])->where(['group' => $type])->all());
 
- 		foreach ($lists as &$value) {
 
- 			$value['value'] = explode("\r\n",$value['extra']);
 
- 			foreach($value['value'] as &$val){
 
- 				$val = trim($val);
 
- 			}
 
- 			unset($value['extra']);
 
-         }
 
-         return ['data' => $lists];
 
-     }
 
- 	public function actionEnterprise()
 
-     {
 
- 		$params = request()->post();
 
-   
 
-        
 
- // 		$params = [
 
- // 			'name'=>'企业名称1',
 
- // 			'address'=>'企业注册地',
 
- // 			'estdate'=>'2023-10-23',
 
- // 			'busAddress'=>'企业实际经营地',
 
- // 			'propertyNumber'=>1, //企业有效l类知识产权数
 
- // 			'propertyNumber2'=>2, //有效、高企认定中未使用过的II类知识产权数
 
- // 			'propertyMode'=>1, //知识产权获取方式 1:自主研发 2:仅有受让、受赠和并购等
 
- //  			'isStandard'=>0, //企业参与编制国家标准、行业标准、检测方法、技术规范的情况  1:是 0:否
 
- // 			'achievementNumber'=>1, //科技成果数,
 
- // 			'manageLevel1'=>1, //定制了企业研究开发组织管理制度
 
- // 			'manageLevel2'=>1, //建立了研发投入核算体系
 
- // 			'manageLevel3'=>1,  //编制了研发费用辅助帐
 
- // 			'manageLevel4'=>1,  //设立了内部科技技术研究开发机构并具备相应的科研条件
 
- // 			'manageLevel5'=>1,  //与国内外研究开发机构开展多种形式的产学研合作
 
- // 			'manageLevel6'=>1,  //建立了科技成果转化的组织实施与激励奖励制度
 
- // 			'manageLevel7'=>1,  //建立开放式的创新创业平台
 
- // 			'manageLevel8'=>1,  //建立了科技人员的培养进修制度
 
- //             'manageLevel9'=>1,  //建立了职工技能培训制度
 
-             
 
- // 			'netAssets1'=>111, //第1年   净资产
 
- // 			'netAssets2'=>222, //第2年   净资产
 
- // 			'netAssets3'=>333, //第3年   净资产
 
- // 			'saleRevenue1'=>444, //第1年  销售收入
 
- // 			'saleRevenue2'=>555, //第2年  销售收入
 
- // 			'saleRevenue3'=>666 //第3年  销售收入
 
- // 		];
 
-         
 
-         //知识产权数量
 
-         $numberScore = 0;
 
-         if($params['propertyNumber2'] == 1 || $params['propertyNumber2'] == 2) $numberScore = 2;
 
-         if($params['propertyNumber2'] == 3 || $params['propertyNumber2'] == 4) $numberScore = 4;
 
-         if($params['propertyNumber2'] >= 5) $numberScore = 6;
 
-         if($params['propertyNumber'] > 1) $numberScore = 8;
 
-         
 
-         //知识产权获得方式
 
-         $modeScore = 0;
 
-         if($params['propertyMode'] == 1) $numberScore = 6;
 
-         if($params['propertyMode'] == 2) $numberScore = 3;
 
-         
 
-         //企业参与编制国家标准、行业标准、检测方法、技术规范的情况
 
-         $standardScore = 0;
 
-         if($params['isStandard'] == 1) $standardScore = 2;
 
-         
 
-         //科技成果转化能力
 
-         $techniquesAchieveScore = 0;
 
-         if($params['achievementNumber'] == 1) $techniquesAchieveScore = 6;
 
-         if($params['achievementNumber'] == 2) $techniquesAchieveScore = 12;
 
-         if($params['achievementNumber'] == 3) $techniquesAchieveScore = 18;
 
-         if($params['achievementNumber'] == 4) $techniquesAchieveScore = 25;
 
-         if($params['achievementNumber'] >= 5) $techniquesAchieveScore = 30;
 
-         
 
-         //研究开发组织管理水平
 
-         $manageLevelScore = 0;
 
-         if($params['manageLevel1'] == 1) $manageLevelScore += 2;
 
-         if($params['manageLevel2'] == 1) $manageLevelScore += 2;
 
-         if($params['manageLevel3'] == 1) $manageLevelScore += 2;
 
-         if($params['manageLevel4'] == 1) $manageLevelScore += 3;
 
-         if($params['manageLevel5'] == 1) $manageLevelScore += 3;
 
-         if($params['manageLevel6'] == 1) $manageLevelScore += 2;
 
-         if($params['manageLevel7'] == 1) $manageLevelScore += 2;
 
-         if($params['manageLevel8'] == 1) $manageLevelScore += 2;
 
-         if($params['manageLevel9'] == 1) $manageLevelScore += 2;
 
-         
 
-         //净资产增长率
 
-         $growthRate = (0.5 * ($params['netAssets2'] / $params['netAssets1'] + $params['netAssets3'] / $params['netAssets2']) - 1) * 100;
 
-         
 
-         $growthRateScore = 0;
 
-         if($growthRate > 0) $growthRateScore = 2;
 
-         if($growthRate > 5) $growthRateScore = 4;
 
-         if($growthRate > 10) $growthRateScore = 6;
 
-         if($growthRate > 20) $growthRateScore = 9;
 
-         
 
-         //销售收入增长率
 
-         $saleRate = (0.5 * ($params['saleRevenue2'] / $params['saleRevenue1'] + $params['saleRevenue3'] / $params['saleRevenue2']) - 1) * 100;
 
-         
 
-         $saleRateScore = 0;
 
-         if($saleRate > 0) $saleRateScore = 2;
 
-         if($saleRate > 10) $saleRateScore = 4;
 
-         if($saleRate > 20) $saleRateScore = 6;
 
-         if($saleRate > 30) $saleRateScore = 7;
 
-         
 
-         
 
- 		$result = [ 
 
- 			'totalScore'=>8 + 8 + $numberScore + $modeScore + $standardScore +  $numberScore + $modeScore + $standardScore + $techniquesAchieveScore + $manageLevelScore + $growthRateScore + $saleRateScore, //企业评测总得分
 
- 			'basic'=>[
 
- 				'name'=>$params['name'],
 
- 				'address'=>$params['address'],
 
- 				'estdate'=>$params['estdate'],
 
- 				'busAddress'=>$params['busAddress'],
 
- 				'propertyNumber'=>$params['propertyNumber'],
 
- 				'propertyNumber2'=>$params['propertyNumber2'],
 
- 				'propertyMode'=>$params['propertyMode'],
 
- 				'isStandard'=>$params['isStandard'],
 
- 				'achievementNumber'=>$params['achievementNumber'],
 
- 			],
 
- 			'knowledgeVo'=>[
 
- 				'knowledgeTotalScore'=>$numberScore + $modeScore + $standardScore + 8 + 8, //知识产权
 
- 				'techniquesScore'=>8, //技术的先进程度  
 
- 				'effectScore'=>8, //对主要产品(服务)在技术上发挥核心支持作用(8分)
 
- 				'numberScore'=>$numberScore, //知识产权数量
 
- 				'modeScore'=>$modeScore, //知识产权获得方式
 
- 				'standardScore'=>$standardScore  //企业参与编制国家标准、行业标准、检测方法、技术规范的情况
 
- 			],
 
- 			'techniquesAchieveScore'=>$techniquesAchieveScore, //科技成果转化能力
 
- 			'manageLevelScore'=>$manageLevelScore,  //研究开发组织管理水平
 
- 			'enterpriseGrowthVo'=>[
 
- 				'totalScore'=>$growthRateScore + $saleRateScore, //企业成长性
 
- 				'growthRateScore'=>$growthRateScore, //净资产增长率得分
 
- 				'saleRateScore'=>$saleRateScore, //销售收入增长率得分
 
- 				
 
- 			]
 
- 		];
 
- 	
 
-         return ['data' => $result];
 
-     }
 
- 	public function actionSubmit()
 
-     {
 
- 		
 
- 		$data = request()->post();
 
- 		$type = request()->post('type');
 
-         if(empty($type)) $type = 'industry';
 
-         
 
- 		$survey = ArrayHelper::toArray(SurveyNew::find()->where(['type' => $type])->all());
 
-         $captcha = new CodeImgGenerate(\Yii::$app->controller->id,\Yii::$app->controller);
 
-         $result = $captcha->validate($data['code']);
 
-          if(!$result){
 
-              return ['errcode' => CodeEnum::CODE_ERROR, 'errmsg' => '验证码错误'];
 
-          }
 
-         $selects = ArrayHelper::toArray(Config::find()->where(['group' => 'industry','type' => 'select'])->all());
 
- 		$list = [];
 
- 		if($type == 'special'){
 
-             foreach ($survey as $key=>$value) {
 
-                 $filter = explode(';',$value['filter']);//先判断第一层and关系
 
-                 $is_match = [];
 
-                 foreach ($filter as $key1 => $value1){
 
-                     if(!empty($value1)){
 
-                         if(strpos($value1,'|') !== false){//如果有存在判断大小
 
-                             $filter2 = explode('|',$value1);
 
-                             if(array_key_exists($filter2[0],$data) && !empty($data[$filter2[0]]) && $data[$filter2[0]] != '请选择'){
 
-                                 switch ($filter2[1]){
 
-                                     case '>=':
 
-                                         if($data[$filter2[0]] >= $filter2[2]){
 
-                                             $is_match[$key1] = true;
 
-                                         }else{
 
-                                             $is_match[$key1] = false;
 
-                                             continue 2;
 
-                                         }
 
-                                         break;
 
-                                     case '=':
 
-                                         if($data[$filter2[0]] == $filter2[2]){
 
-                                             $is_match[$key1] = true;
 
-                                         }else{
 
-                                             $is_match[$key1] = false;
 
-                                             continue 2;
 
-                                         }
 
-                                         break;
 
-                                     case '<=':
 
-                                         if($data[$filter2[0]] <= $filter2[2] && $data[$filter2[0]] > 0){
 
-                                             $is_match[$key1] = true;
 
-                                         }else{
 
-                                             $is_match[$key1] = false;
 
-                                             continue 2;
 
-                                         }
 
-                                         break;
 
-                                     case 'in':
 
-                                         $arr = explode(',',$filter2[2]);
 
-                                         if(in_array($data[$filter2[0]],$arr)){
 
-                                             $is_match[$key1] = true;
 
-                                         }else{
 
-                                             $is_match[$key1] = false;
 
-                                             continue 2;
 
-                                         }
 
-                                         break;
 
-                                 }
 
-                             }else{
 
-                                 $is_match[$key1] = false;
 
-                                 continue 2;
 
-                             }
 
-                         }
 
-                     }
 
-                 }
 
-                 $match_count = 0;
 
-                 foreach ($is_match as $v){
 
-                     if($v){
 
-                         $match_count++;
 
-                     }
 
-                 }
 
-                 if($match_count == count($filter)){
 
-                     $list[] = [
 
-                         'id'=>$value['id'],
 
-                         'title'=>$value['title'],
 
-                         'content'=>$value['content'],
 
-                         'level' => $value['cengci']
 
-                     ];
 
-                 }
 
-             }
 
-             $cengci = [];
 
-             $level = [];
 
-             foreach($list as $k => $v){
 
-                 if(!in_array($v['level'],$level)){
 
-                     $cengci[] = [
 
-                         'id' => $v['id'],
 
-                         'title' => $v['title'],
 
-                         'content' => '',
 
-                         'level' => $v['level'],
 
-                         'policy' => [],
 
-                         'zc_title' => 0
 
-                     ];
 
-                     array_push($level,$v['level']);
 
-                     $index = count($level) - 1;
 
-                 }else{
 
-                     $index = array_search($v['level'],$level);
 
-                 }
 
-                 $zclist = Policy::find()->where(['type' => Policy::TYPE_SURVEY, 'estate' => $type,'title' => $v['title']])->andWhere(['like','cengci',"{$v['level']}"])->all();
 
-                 $cengci[$index]['policy'] = array_merge($cengci[$index]['policy'],$zclist);
 
-             }
 
-         }else{
 
-             foreach ($survey as $key=>$value) {
 
-                 $filter = explode(';',$value['filter']);//先判断第一层and关系
 
-                 $is_match = [];
 
-                 foreach ($filter as $key1 => $value1){
 
-                     if(!empty($value1)){
 
-                         if(array_key_exists($value1,$data) && !empty($data[$value1]) && $data[$value1] != '请选择' && !in_array($value1,['shengte','shenga','quanyi','shengb','rencaileixing','zhuanyelingyunianxian'])){
 
-                             if(strpos($value['title'],(string)$data[$value1]) === false){//如果用户提交的信息字眼有出现在政策条件内,相当于条件符合
 
-                                 $is_match[$key1] = false;
 
-                                 continue 2;
 
-                             }else{
 
-                                 $is_match[$key1] = true;
 
-                             }
 
-                         }
 
-                         if(strpos($value1,'-') !== false){//如果有存在或关系
 
-                             $filter1 = explode('-',$value1);
 
-                             $i = 0;
 
-                             foreach ($filter1 as $key2 => $value2){
 
-                                 if(!in_array($value2,['shengte','shenga','quanyi','shengb','rencaileixing','zhuanyelingyunianxian'])){
 
-                                     if(array_key_exists($value2,$data) && !empty($data[$value2]) && $data[$value2] != '请选择'){
 
-                                         if(strpos($value['title'],(string)$data[$value2]) !== false){//如果用户提交的信息字眼有出现在政策条件内,相当于条件符合
 
-                                             $i++;
 
-                                         }
 
-                                     }
 
-                                 }else{
 
-                                     if(strpos($value2,'|') !== false){
 
-                                         $filter3 = explode('|',$value2);
 
-                                         if(array_key_exists($filter3[0],$data) && !empty($data[$filter3[0]]) && $data[$filter3[0]] != '请选择'){
 
-                                             switch ($filter3[1]){
 
-                                                 case '>=':
 
-                                                     if($data[$filter3[0]] >= $filter3[2]){
 
-                                                         $i++;
 
-                                                     }
 
-                                                     break;
 
-                                                 case '=':
 
-                                                     if($data[$filter3[0]] == $filter3[2]){
 
-                                                         $i++;
 
-                                                     }
 
-                                                     break;
 
-                                                 case '<=':
 
-                                                     if($data[$filter3[0]] <= $filter3[2] && $data[$filter3[0]] > 0){
 
-                                                         $i++;
 
-                                                     }
 
-                                                     break;
 
-                                             }
 
-                                         }
 
-                                     }
 
-                                 }
 
-                             }
 
-                             if($i == 0){
 
-                                 $is_match[$key1] = false;
 
-                                 continue 2;
 
-                             }else{
 
-                                 $is_match[$key1] = true;
 
-                             }
 
-                         }
 
-                         if(strpos($value1,'|') !== false){//如果有存在判断大小
 
-                             $filter2 = explode('|',$value1);
 
-                             if(array_key_exists($filter2[0],$data) && !empty($data[$filter2[0]]) && $data[$filter2[0]] != '请选择'){
 
-                                 switch ($filter2[1]){
 
-                                     case '>=':
 
-                                         if($data[$filter2[0]] >= $filter2[2]){
 
-                                             $is_match[$key1] = true;
 
-                                         }else{
 
-                                             $is_match[$key1] = false;
 
-                                             continue 2;
 
-                                         }
 
-                                         break;
 
-                                     case '=':
 
-                                         if($data[$filter2[0]] == $filter2[2]){
 
-                                             $is_match[$key1] = true;
 
-                                         }else{
 
-                                             $is_match[$key1] = false;
 
-                                             continue 2;
 
-                                         }
 
-                                         break;
 
-                                     case '<=':
 
-                                         if($data[$filter2[0]] <= $filter2[2] && $data[$filter2[0]] > 0){
 
-                                             $is_match[$key1] = true;
 
-                                         }else{
 
-                                             $is_match[$key1] = false;
 
-                                             continue 2;
 
-                                         }
 
-                                         break;
 
-                                 }
 
-                             }else{
 
-                                 $is_match[$key1] = false;
 
-                                 continue 2;
 
-                             }
 
-                         }
 
-                     }
 
-                 }
 
-                 $match_count = 0;
 
-                 foreach ($is_match as $v){
 
-                     if($v){
 
-                         $match_count++;
 
-                     }
 
-                 }
 
-                 if($match_count == count($filter)){
 
-                     switch ($value['cengci']){
 
-                         case '1':
 
-                             $level = '第一层次';
 
-                             break;
 
-                         case '2':
 
-                             $level = '第二层次';
 
-                             break;
 
-                         case '3':
 
-                             $level = '第三层次';
 
-                             break;
 
-                         case '4':
 
-                             $level = '第四层次';
 
-                             break;
 
-                         case '5':
 
-                             $level = '第五层次';
 
-                             break;
 
-                         case '6':
 
-                             $level = '第六层次';
 
-                             break;
 
-                         case '7':
 
-                             $level = '第七层次';
 
-                             break;
 
-                     }
 
-                     $list[] = [
 
-                         'id'=>$value['id'],
 
-                         'title'=>$value['title'],
 
-                         'content'=>$value['content'],
 
-                         'level' => $level,
 
-                         'zc_title' => 1
 
-                     ];
 
-                 }
 
-             }
 
-             foreach($list as $k => $v){
 
-                 $zclist = Policy::find()->where(['type' => Policy::TYPE_SURVEY, 'estate' => $type])->andWhere(['like','cengci',"{$v['level']}"])->orderBy(['sort' => SORT_ASC])->all();
 
-                 $list[$k]['policy'] = $zclist;
 
-             }
 
-             //去重复
 
-             $cengci = [];
 
-             foreach ($list as $value) {
 
-                 if(isset($cengci[$value['level']])){
 
-                     unset($value['level']);
 
-                 }else{
 
-                     $cengci[$value['level']] = $value;
 
-                 }
 
-             }
 
-             $cengci = array_values($cengci);
 
-         }
 
-         return ['data' => $cengci];
 
-     }
 
-     /**
 
-      * @api {get} /v1/category/id:\d+ 分类详情
 
-      * @apiVersion 1.0.0
 
-      * @apiName view
 
-      * @apiGroup Category
 
-      *
 
-      */
 
-     public function actionView($id)
 
-     {
 
-         $model = Category::find()->where(['id' => $id])->one();
 
-         return ['data' => $model];
 
-     }
 
- }
 
 
  |