| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382 | <?phpnamespace 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()->get('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 = [];		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                ];            }		}        foreach($list as $k => $v){            $zclist = Policy::find()->where(['type' => Policy::TYPE_SURVEY, 'estate' => $type])->andWhere(['like','cengci',"{$v['level']}"])->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];    }}
 |