ソースを参照

三观匹配度

linwu 1 週間 前
コミット
a04cef4be4

+ 132 - 21
app/love/controller/AdminActiveController.php

@@ -11,10 +11,13 @@
 
 namespace app\love\controller;
 
+use app\admin\model\UserModel;
 use app\common\Excel;
 use app\common\Fun;
 use app\love\model\ActiveApplyModel;
 use app\love\model\ActiveModel;
+use app\love\model\QuestionModel;
+use app\love\model\UserOutlookModel;
 use cmf\controller\AdminBaseController;
 
 class AdminActiveController extends AdminBaseController
@@ -130,12 +133,12 @@ class AdminActiveController extends AdminBaseController
         }
         $sexWhere = [];
         if (!empty($param['sex'])) {
-            $sexWhere = ['sex'=>$param['sex']];
+            $sexWhere = ['sex' => $param['sex']];
         }
-        $total = ActiveApplyModel::hasWhere('user',$sexWhere)->where($where)->count();
+        $total = ActiveApplyModel::hasWhere('user', $sexWhere)->where($where)->count();
         $this->assign('total', $total);
 
-        $list  = ActiveApplyModel::hasWhere('user',$sexWhere)->with('user')->where($where)->order('check_status asc')->paginate(10, false, [
+        $list = ActiveApplyModel::hasWhere('user', $sexWhere)->with('user')->where($where)->order('check_status asc')->paginate(10, false, [
             'query' => $param,//不丢失已存在的url参数
         ]);
         foreach ($list as $v) {
@@ -175,20 +178,20 @@ class AdminActiveController extends AdminBaseController
         }
         $sexWhere = [];
         if (!empty($param['sex'])) {
-            $sexWhere = ['sex'=>$param['sex']];
+            $sexWhere = ['sex' => $param['sex']];
         }
 
-        $list  = ActiveApplyModel::hasWhere('user',$sexWhere)->with('user')->where($where)->order('check_status asc')->select();
+        $list = ActiveApplyModel::hasWhere('user', $sexWhere)->with('user')->where($where)->order('check_status asc')->select();
         $data = [];
         foreach ($list as $v) {
             $data[] = [
-                'name' => $v['user']['realname'],
-                'sex' => $v['user']['sex_text'],
-                'age' => Fun::getAgeByBirth($v['user']['birthday']),
-                'mobile' => $v['user']['mobile'],
-                'company' => $v['user']['company'],
-                'native' => $v['user']['native'],
-                'marry' => $v['user']['marry'],
+                'name'         => $v['user']['realname'],
+                'sex'          => $v['user']['sex_text'],
+                'age'          => Fun::getAgeByBirth($v['user']['birthday']),
+                'mobile'       => $v['user']['mobile'],
+                'company'      => $v['user']['company'],
+                'native'       => $v['user']['native'],
+                'marry'        => $v['user']['marry'],
                 'check_status' => $v['status_text'],
             ];
         }
@@ -199,15 +202,123 @@ class AdminActiveController extends AdminBaseController
 
         $excel = new Excel();
         $title = [
-            ['name','姓名'],
-            ['sex','性别'],
-            ['age','年龄'],
-            ['mobile','电话'],
-            ['company','单位'],
-            ['native','籍贯'],
-            ['marry','婚姻状况'],
-            ['check_status','审核状态'],
+            ['name', '姓名'],
+            ['sex', '性别'],
+            ['age', '年龄'],
+            ['mobile', '电话'],
+            ['company', '单位'],
+            ['native', '籍贯'],
+            ['marry', '婚姻状况'],
+            ['check_status', '审核状态'],
         ];
-        $excel->export('报名列表',$title,$data,['mobile']);
+        $excel->export('报名列表', $title, $data, ['mobile']);
+    }
+
+    public function exportoutlook()
+    {
+        $id       = $this->request->param('id');
+        $outlook  = UserOutlookModel::all();
+        $question = QuestionModel::all();
+        $user_ids = $outlook->column('user_id');
+        $user     = UserModel::where('id', 'in', $user_ids)->column('user_nickname,sex', 'id');
+        $active   = ActiveApplyModel::where('active_id', $id)->column('user_no', 'user_id');
+
+        if ($outlook->isEmpty()) {
+            return '暂时无人填写三观';
+        }
+
+        //分出男女
+        $outlook_man   = [];
+        $outlook_woman = [];
+        foreach ($outlook as $v) {
+            $v['user_nickname'] = $user[$v['user_id']]['user_nickname'];
+            $v['sex']           = $user[$v['user_id']]['sex'];
+            if ($v['sex'] == 1) {
+                $outlook_man[] = $v;
+            } else {
+                $outlook_woman[] = $v;
+            }
+        }
+
+        if (empty($outlook_man)) {
+            return '暂无男生填写三观';
+        }
+
+        if (empty($outlook_woman)) {
+            return '暂无女生填写三观';
+        }
+
+        $data    = [];
+        $options = [1 => 'A', 2 => 'B', 3 => 'C', 4 => 'D'];
+        foreach ($outlook_man as $man) {
+            foreach ($outlook_woman as $woman) {
+                $item                   = [];
+                $item['man_nickname']   = $man['user_nickname'];
+                $item['man_no']         = empty($active[$man['user_id']]) ? '未签到' : $active[$man['user_id']];
+                $item['woman_nickname'] = $woman['user_nickname'];
+                $item['woman_no']       = empty($active[$woman['user_id']]) ? '未签到' : $active[$woman['user_id']];;
+                $item['match_num'] = $this->_matchOption($man, $woman);
+                $item['match']     = $item['match_num'] . '0%';
+                $item['title1']    = "男:" . $options[$man['question1']] . ",女:" . $options[$woman['question1']] . "。";
+                $item['title2']    = "男:" . $options[$man['question2']] . ",女:" . $options[$woman['question2']] . "。";
+                $item['title3']    = "男:" . $options[$man['question3']] . ",女:" . $options[$woman['question3']] . "。";
+                $item['title4']    = "男:" . $options[$man['question4']] . ",女:" . $options[$woman['question4']] . "。";
+                $item['title5']    = "男:" . $options[$man['question5']] . ",女:" . $options[$woman['question5']] . "。";
+                $item['title6']    = "男:" . $options[$man['question6']] . ",女:" . $options[$woman['question6']] . "。";
+                $item['title7']    = "男:" . $options[$man['question7']] . ",女:" . $options[$woman['question7']] . "。";
+                $item['title8']    = "男:" . $options[$man['question8']] . ",女:" . $options[$woman['question8']] . "。";
+                $item['title9']    = "男:" . $options[$man['question9']] . ",女:" . $options[$woman['question9']] . "。";
+                $item['title10']   = "男:" . $options[$man['question10']] . ",女:" . $options[$woman['question10']] . "。";
+                $data[]            = $item;
+            }
+        }
+        usort($data, function ($a, $b) {
+            return $b['match_num'] - $a['match_num']; // 倒序排列
+        });
+
+        //抬头
+        $title1  = "题目:{$question[0]['title']}。选项:A.{$question[0]['option1']}。B.{$question[0]['option2']}。C.{$question[0]['option3']}。D.{$question[0]['option4']}。";
+        $title2  = "题目:{$question[1]['title']}。选项:A.{$question[1]['option1']}。B.{$question[1]['option2']}。C.{$question[1]['option3']}。D.{$question[1]['option4']}。";
+        $title3  = "题目:{$question[2]['title']}。选项:A.{$question[2]['option1']}。B.{$question[2]['option2']}。C.{$question[2]['option3']}。D.{$question[2]['option4']}。";
+        $title4  = "题目:{$question[3]['title']}。选项:A.{$question[3]['option1']}。B.{$question[3]['option2']}。C.{$question[3]['option3']}。D.{$question[3]['option4']}。";
+        $title5  = "题目:{$question[4]['title']}。选项:A.{$question[4]['option1']}。B.{$question[4]['option2']}。C.{$question[4]['option3']}。D.{$question[4]['option4']}。";
+        $title6  = "题目:{$question[5]['title']}。选项:A.{$question[5]['option1']}。B.{$question[5]['option2']}。C.{$question[5]['option3']}。D.{$question[5]['option4']}。";
+        $title7  = "题目:{$question[6]['title']}。选项:A.{$question[6]['option1']}。B.{$question[6]['option2']}。C.{$question[6]['option3']}。D.{$question[6]['option4']}。";
+        $title8  = "题目:{$question[7]['title']}。选项:A.{$question[7]['option1']}。B.{$question[7]['option2']}。C.{$question[7]['option3']}。D.{$question[7]['option4']}。";
+        $title9  = "题目:{$question[8]['title']}。选项:A.{$question[8]['option1']}。B.{$question[8]['option2']}。C.{$question[8]['option3']}。D.{$question[8]['option4']}。";
+        $title10 = "题目:{$question[9]['title']}。选项:A.{$question[9]['option1']}。B.{$question[9]['option2']}。C.{$question[9]['option3']}。D.{$question[9]['option4']}。";
+
+        $title = [
+            ['man_nickname', '男生'],
+            ['man_no', '男生编号'],
+            ['woman_nickname', '女生编号'],
+            ['woman_no', '女生编号'],
+            ['match', '匹配度'],
+            ['title1', $title1],
+            ['title2', $title2],
+            ['title3', $title3],
+            ['title4', $title4],
+            ['title5', $title5],
+            ['title6', $title6],
+            ['title7', $title7],
+            ['title8', $title8],
+            ['title9', $title9],
+            ['title10', $title10],
+        ];
+
+
+        $excel = new Excel();
+        $excel->export('三观匹配度', $title, $data);
+    }
+
+    private function _matchOption($man, $woman)
+    {
+        $match_num = 0;
+        for ($i = 1; $i <= 10; $i++) {
+            if ($man['question' . $i] == $woman['question' . $i]) {
+                $match_num++;
+            }
+        }
+        return $match_num;
     }
 }

+ 3 - 0
public/themes/admin_simpleboot3/love/admin_active/index.html

@@ -42,6 +42,9 @@
                         >签到码</a>
                         <a class="btn btn-xs btn-primary" target="_blank" href="{:url('love/scene/sceneList',array('id'=>$vo['id']))}">签到墙</a>
                         <a class="btn btn-xs btn-primary" target="_blank" href="{:url('love/scene/randomPeople',array('id'=>$vo['id']))}">随机抽人</a>
+                        <eq name="vo.id" value="2">
+                            <a class="btn btn-xs btn-primary" target="_blank" href="{:url('love/AdminActive/exportOutlook',array('id'=>$vo['id']))}">导出三观匹配度</a>
+                        </eq>
                     </td>
                 </tr>
             </foreach>