<?php

namespace app\api\controller;

use app\api\BaseController;
use app\api\middleware\Auth;
use think\Exception;
use think\facade\Db;
use think\exception\ValidateException;


/**
 * 维护录入接口
 */
class Maintainentry extends BaseController
{

    /**
     * 控制器中间件 [不需要鉴权]
     * @var array
     */
    protected $middleware = [
        Auth::class => ['except' 	=> ['getcategory'] ]
    ];

    /**
     * 获取已录入信息
     *
     * @ApiTitle    (获取已录入信息)
     * @ApiSummary  (获取已录入信息)
     * @ApiMethod   (GET)
     * @ApiRoute    (/api/Maintainentry/pickUpInfo)
     * @ApiHeaders  (name=token, type=string, required=true, description="请求的Token")
     * @ApiParams   (name="page", type="integer", required=true, description="页数")
     * @ApiParams   (name="name", type="string", required=false, description="用户名")
     * @ApiParams   (name="limit", type="string", required=false, description="每页条数")
     * @ApiParams   (name="idcard", type="string", required=false, description="身份证号")
     * @ApiReturnParams   (name="code", type="integer", required=true, sample="0")
     * @ApiReturnParams   (name="msg", type="string", required=true, sample="返回成功")
     * @ApiReturnParams   (name="data", type="object", sample="{'user_id':'int','user_name':'string','profile':{'email':'string','age':'integer'}}", description="扩展数据返回")
     * @ApiReturn   {
     * "code": 1,
     * "msg": "获取成功",
     * "time": "1668664754",
     * "data": {
     * "total_num": 555,
     * "now_num": 1,
     * "data": [
     * {
     * "id": 1,
     * "name": "张三",
     * "age": 42,
     * "gender": "男",
     * "family_num": null,
     * "political_outlook": null,
     * "householder_id": 1
     * }
     * ]
     * }
     * }
     */
    public function pickUpInfo()
    {
        //村id
        $village_id = Db::table('fa_szxc_information_useraddress')->where('user_id',JWT_UID)->value('village_id');
        //获取当前村总人数
        $map['village_id'] = $village_id;
        $total     = Db::table('fa_szxc_information_useraddress')->where($map)->count();
        //获取已录入人数
        $www[] = ['village_id','=',$village_id];
        $www[] = ['status','=','1'];
        $www[] = ['enter_id','=',JWT_UID];
        $have                = Db::table('fa_szxc_information_usermsg')->where($www)->count();
        $man_num                = Db::table('fa_szxc_information_usermsg')->where($www)->where('gender',1)->count();
        $woman_num                = Db::table('fa_szxc_information_usermsg')->where($www)->where('gender',2)->count();
        $page                = get_params('page')??1;
        $limit               = get_params('limit')??10;
//        $name                = get_params('name', '');
        $idcard              = get_params('keyword');
//        if ($name) {
//            $where['name'] = ['like', '%' . $name . '%']; //搜索姓名
//        }
        if ($idcard) {
            $where[] = ['name','like', '%' . $idcard . '%']; // 搜索身份证
        }
        $where[] = ['village_id','=',$village_id];
        $where[] = ['status','=',1];
        $type = get_params('type');
        if ($type==2){
            $where[] = ['is_hz','=',1];
        }
//        获取已录入的人员信息
        $res                 = Db::table('fa_szxc_information_usermsg')->where($where)
            ->order('id desc')
            ->field("id,user_id,name,age,gender,family_num,political_outlook,householder_id,is_hz,address_name,phone")
            ->page($page, $limit)
            ->withAttr('householder_name',function ($data,$value){
                if($value['is_hz']==1){
                    return '本人';
                }else{
                    $msg= Db::table('fa_szxc_information_usermsg')->where('user_id',$value['householder_id'])->value('name');
                    return $msg??'暂无户主';
                }
            })
            ->withAttr('family_num',function ($data,$value){
                if($value['householder_id']){
                    $is_family = Db::table('fa_szxc_information_usermsg')->where('householder_id',$value['householder_id'])->count();
                }else{
                    $is_family = 1;
                }
                return $is_family;
            })
            ->withAttr('is_family',function ($data,$value){
                if($value['householder_id']){
                    return 1;
                }else{
                    return 0;
                }
            })
            ->withAttr('is_planting',function ($data,$value){
                $is_planting = Db::table('fa_szxc_information_planting')->where('user_id',$value['user_id'])->find();
                if($is_planting){
                    return 1;
                }else{
                    return 0;
                }
            })
            ->withAttr('political_outlook',function ($data,$value){
                $political_outlook=Db::table('fa_category')->where('id',$value['political_outlook'])->find();
                return $political_outlook?$political_outlook['name']:'无';
            })
            ->withAttr('gender',function ($data,$value){
                if ($value['gender']==1){
                    return '男';
                }else{
                    return '女';
                }
            })
            ->withAttr('avatar',function ($data,$value){
                if($value['is_hz']==1){
                    return 'https://lihai001.oss-cn-chengdu.aliyuncs.com/uploads/20230129/0dc8d0a0f3bcc168550ef263a9a170dc.png';
                }else{
                    $msg= Db::table('fa_user')->where('id',$value['user_id'])->value('avatar');
                    return $msg??'';
                }
            })
            ->select();
        $return['total_num'] = $total;
        $return['now_num']   = $have;
        $return['man_num'] = $man_num;
        $return['woman_num']   = $woman_num;
        $return['data']      = $res;
        $this->apiSuccess('获取成功', $return, 1);
    }

    /**
     * 获取家庭成员列表
     *
     * @ApiTitle    (获取家庭成员列表)
     * @ApiSummary  (获取家庭成员列表)
     * @ApiMethod   (GET)
     * @ApiRoute    (/api/Maintainentry/getFamily)
     * @ApiHeaders  (name=token, type=string, required=true, description="请求的Token")
     * @ApiParams   (name="user_id", type="integer", required=true, description="用户id")
     * @ApiReturnParams   (name="code", type="integer", required=true, sample="0")
     * @ApiReturnParams   (name="msg", type="string", required=true, sample="返回成功")
     * @ApiReturnParams   (name="data", type="object", sample="{'user_id':'int','user_name':'string','profile':{'email':'string','age':'integer'}}", description="扩展数据返回")
     * @ApiReturn   {
     * "code": 1,
     * "msg": "获取成功",
     * "time": "1668742364",
     * "data": {
     * "yz_num": 0,
     * "crops_num": 2,
     * "land_area": "5",
     * "address_name": "龙马潭区石洞镇顺江村1组",
     * "data": [
     * {
     * "id": 18,
     * "user_id": 22,
     * "name": "王七",
     * "age": 55,
     * "gender": "男",
     * "family_num": null,
     * "political_outlook": "群众",
     * "householder_id": 1,
     * "is_hz": 0,
     * "address_name": "龙马潭区石洞镇顺江村1组"
     * },
     * {
     * "id": 17,
     * "user_id": 21,
     * "name": "王七",
     * "age": 55,
     * "gender": "男",
     * "family_num": null,
     * "political_outlook": "群众",
     * "householder_id": 1,
     * "is_hz": 0,
     * "address_name": "龙马潭区石洞镇顺江村1组"
     * }
     * ]
     * }
     * }
     */
    public function getFamily()
    {
        //用户id
        $user_id = get_params('user_id');
        if (empty($user_id)) {
            $this->apiSuccess('缺少参数', null, '0');
        }
//        获取户主id
        $where['user_id'] = $user_id;
        $where['status']  = 1;
        $householder_id   = Db::table('fa_szxc_information_usermsg')->where($where)->value('householder_id');
        $name = Db::table('fa_szxc_information_usermsg')->where($where)->value('name');
        if ($householder_id) {
            $map['householder_id'] = $householder_id;
            $map['status']         = 1;
        } else {
            $map['user_id'] = $user_id;
            $map['status']  = 1;
        }
//        获取家庭的人员信息
            $res = Db::table('fa_szxc_information_usermsg')->where($map)
            ->order('id desc')
            ->field("id,user_id,name,age,gender,family_num,political_outlook,householder_id,is_hz,address_name,family_relation")
            ->select()->toArray();
        if ($res){
            if($householder_id){
                $is_family = Db::table('fa_szxc_information_usermsg')->where('householder_id',$householder_id)->count();
            }else{
                $is_family = 1;
            }
            foreach ($res as $k=>$v){
                if($v['is_hz']==1){
                    $res[$k]['householder_name'] = '本人';
                }else{
                    $msg= Db::table('fa_szxc_information_usermsg')->where('user_id',$v['householder_id'])->value('name');
                    $res[$k]['householder_name'] = $msg?:'暂无户主';
                }
                if($v['householder_id']){
                    $res[$k]['is_family'] = 1;
                }else{
                    $res[$k]['is_family'] = 0;
                }
                $is_planting = Db::table('fa_szxc_information_planting')->where('user_id',$v['user_id'])->field('id')->find();
                if($is_planting){
                    $res[$k]['is_planting'] = 1;
                }else{
                    $res[$k]['is_planting'] = 0;
                }
                if($v['gender'] == 1){
                    $res[$k]['gender'] = '男';
                }else{
                    $res[$k]['gender'] = '女';
                }
                $family_relationship = $v['family_relation'];
                $family_relationship_name=Db::table('fa_category')->where('id',$family_relationship)->field('name')->find();
                $res[$k]['family_relationship']=$family_relationship_name?$family_relationship_name['name'] :'';
                $political_outlook=Db::table('fa_category')->where('id',$v['political_outlook'])->field('name')->find();
                $res[$k]['political_outlook'] = $political_outlook?$political_outlook['name']:'无';
            }
        }
//        获取种植信息
//        $www['user_id'] = $user_id;
//        $planting       = Db::table('fa_szxc_information_planting')->where($www)->field('id,crops_msg,land_area')->find();
//            if($planting && $planting['crops_msg']){
//            $crops_msg      = json_decode($planting['crops_msg'], 1);
//            $crops_msg = array_filter(array_column($crops_msg,'name'));
//        }else{
//            $crops_msg      = [];
//        }

//        获取养殖信息
        $www['user_id'] = $user_id;
        $breed                  = Db::table('fa_szxc_breed')->where($www)->count();
        $crops_msg              = Db::table('fa_szxc_planting')->where($www)->count();
        $return['yz_num']       = $breed; //养殖种类
        $return['crops_num']    = $crops_msg;//种植种类
        $return['land_area']    = $planting['land_area'] ??0;//土地面积
        $return['address_name'] = $res[0]['address_name'] ?? '';
        $return['name']         = $name;
        $return['family_num']   = $is_family;
        $return['data']         = $res;
        $this->apiSuccess('获取成功', $return, 1);
    }

    /**
     * 获取个人信息
     *
     * @ApiTitle    (获取个人信息)
     * @ApiSummary  (获取个人信息)
     * @ApiMethod   (GET)
     * @ApiRoute    (/api/Maintainentry/getUserMsg)
     * @ApiHeaders  (name=token, type=string, required=true, description="请求的Token")
     * @ApiParams   (name="user_id", type="integer", required=true, description="用户id")
     * @ApiReturnParams   (name="code", type="integer", required=true, sample="0")
     * @ApiReturnParams   (name="msg", type="string", required=true, sample="返回成功")
     * @ApiReturnParams   (name="data", type="object", sample="{'user_id':'int','user_name':'string','profile':{'email':'string','age':'integer'}}", description="扩展数据返回")
     * @ApiReturn   {
     * "code": 1,
     * "msg": "获取成功",
     * "time": "1668750751",
     * "data": {
     * "id": 17,
     * "user_id": 21,
     * "name": "王七",
     * "age": 55,
     * "gender": "男",
     * "phone": "13666666666",
     * "idcard": "510504185612345678",
     * "nation": "汉族",
     * "education": null,
     * "occupation": null,
     * "family_num": null,
     * "political_outlook": "群众",
     * "householder_id": 1,
     * "is_hz": 0,
     * "address_name": "龙马潭区石洞镇顺江村1组",
     * "house_msg": null,
     * "car_msg": null
     * }
     * }
     */
    public function getUserMsg()
    {
        //用户id
        $user_id = get_params('user_id');
        if (empty($user_id)) {
            $this->apiSuccess('缺少参数', null, '0');
        }
//Db::table('fa_szxc_information_usermsg')->where($map)
//        $map['user_id'] = $user_id;
//        $map['status']  = 1;
//        获取人员信息
        $res = Db::table('fa_szxc_information_usermsg')->where('status',1)->where('user_id',$user_id)
            ->field("id,user_id,name,age,gender,gender as gender_id,phone,idcard,nation,nation as nation_id,
        education,education as education_id,occupation,occupation as occupation_id,family_num,
        political_outlook,political_outlook as political_outlook_id,householder_id,is_hz,address_name,house_msg,house_msg as house_id,
        car_msg,car_msg as car_id,family_relation,family_relation as family_relation_id,marital_status,marital_status as marriage_id")
            ->withAttr('address_info',function ($data,$value){
                $find=Db::table('fa_szxc_information_useraddress')->where('user_id',$value['user_id'])->find();
                return $find;
            })
            ->withAttr('gender',function ($data,$value){
                if ($value['gender']==1){
                    return '男';
                }else{
                    return '女';
                }
            })
            ->withAttr('nation',function ($data,$value){
                $find=Db::table('fa_category')->where('id',$value['nation'])->find();
                return $find?$find['name']:'';
            })
            ->withAttr('family_relation',function ($data,$value){
                $find=Db::table('fa_category')->where('id',$value['family_relation'])->find();
                return $find?$find['name']:'';
            })
            ->withAttr('political_outlook',function ($data,$value){
                $find=Db::table('fa_category')->where('id',$value['political_outlook'])->find();
                return $find?$find['name']:'';
            })
            ->withAttr('education',function ($data,$value){
                $find=Db::table('fa_category')->where('id',$value['education'])->find();
                return $find?$find['name']:'';
            })
            ->withAttr('occupation',function ($data,$value){
                $find=Db::table('fa_category')->where('id',$value['occupation'])->find();
                return $find?$find['name']:'';
            })
            ->withAttr('house_msg',function ($data,$value){
                $find=Db::table('fa_category')->where('id',$value['house_msg'])->find();
                return $find?$find['name']:'';
            })
            ->withAttr('car_msg',function ($data,$value){
                $find=Db::table('fa_category')->where('id',$value['car_msg'])->find();
                return $find?$find['name']:'';
            })
            ->withAttr('marital_status',function ($data,$value){
                $find=Db::table('fa_category')->where('id',$value['marital_status'])->find();
                return $find?$find['name']:'';
            })
            ->find();
        if ($res) {
            $this->apiSuccess('获取成功', $res, 1);
        } else {
            $this->apiSuccess('暂无数据', null, '0');
        }
    }

    /**
     * 修改个人信息
     *
     * @ApiTitle    (修改个人信息)
     * @ApiSummary  (修改个人信息)
     * @ApiMethod   (POST)
     * @ApiRoute    (/api/Maintainentry/changeUserMsg)
     * @ApiHeaders  (name=token, type=string, required=true, description="请求的Token")
     * @ApiParams   (name="user_id", type="integer", required=true, description="用户id")
     * @ApiParams   (name="name", type="integer", required=true, description="姓名")
     * @ApiParams   (name="nation", type="integer", required=true, description="民族")
     * @ApiParams   (name="political_outlook", type="integer", required=true, description="政治面貌")
     * @ApiParams   (name="phone", type="integer", required=true, description="联系电话")
     * @ApiParams   (name="idcard", type="integer", required=true, description="身份证号")
     * @ApiParams   (name="gender", type="integer", required=true, description="性别")
     * @ApiParams   (name="age", type="integer", required=true, description="年龄")
     * @ApiParams   (name="address_name", type="integer", required=true, description="村组名称")
     * @ApiParams   (name="house_msg", type="integer", required=true, description="房屋情况")
     * @ApiParams   (name="car_msg", type="integer", required=true, description="车辆情况")
     * @ApiReturnParams   (name="code", type="integer", required=true, sample="0")
     * @ApiReturnParams   (name="msg", type="string", required=true, sample="返回成功")
     * @ApiReturnParams   (name="data", type="object", sample="{'user_id':'int','user_name':'string','profile':{'email':'string','age':'integer'}}", description="扩展数据返回")
     * @ApiReturn   {
     * "code": 1,
     * "msg": "修改成功",
     * "time": "1668757016",
     * "data": []
     * }
     */
    public function changeUserMsg()
    {
        //用户id
        $user_id = get_params('user_id');
        $post    = get_params();
        if (empty($user_id)) {
            $this->apiError('缺少参数');
        }
        try {
            validate('Maintainentry.edit')->check($post);
        } catch (\Exception $e) {
            $this->apiError($e->getMessage());
        }
        $map['user_id'] = $user_id;
        if ($post['householder_id']==$user_id) {
            $data['is_hz']=1;
        }
//        修改人员信息
        $data['name']              = $post['name'];
        $data['nation']            = $post['nation_id'];
        $data['political_outlook'] = $post['political_outlook_id'];
        $data['phone']             = $post['phone'];
        $data['idcard']            = $post['idcard'];
        $data['gender']            = $post['gender_id'];
        $data['age']               = $post['age'];
//        $data['address_name']      = $post['address_name'];
        $data['house_msg']         = $post['house_id'];
        $data['car_msg']           = $post['car_id'];
        $data['occupation']        = $post['occupation_id'];
        $data['education']        = $post['education_id'];
        $data['family_relation']        = $post['family_relation_id'];
        $data['householder_id']        = empty($post['householder_id'])?0:$post['householder_id'];
        $data['updatetime']        = time();
        $res                       = Db::table('fa_szxc_information_usermsg')->where($map)->update($data);
        if ($res) {
            $this->apiSuccess('修改成功',  '修改成功');
        } else {
            $this->apiSuccess('修改失败',  '修改失败');
        }
    }

    /**
     * 获取家庭信息
     *
     * @ApiTitle    (获取家庭信息)
     * @ApiSummary  (获取家庭信息)
     * @ApiMethod   (GET)
     * @ApiRoute    (/api/Maintainentry/getFamilyMsg)
     * @ApiHeaders  (name=token, type=string, required=true, description="请求的Token")
     * @ApiParams   (name="user_id", type="integer", required=true, description="用户id")
     * @ApiReturnParams   (name="code", type="integer", required=true, sample="0")
     * @ApiReturnParams   (name="msg", type="string", required=true, sample="返回成功")
     * @ApiReturnParams   (name="data", type="object", sample="{'user_id':'int','user_name':'string','profile':{'email':'string','age':'integer'}}", description="扩展数据返回")
     * @ApiReturn   {
     * "code": 1,
     * "msg": "获取成功",
     * "time": "1668758641",
     * "data": {
     * "id": 1,
     * "user_id": 1,
     * "name": "张三",
     * "age": 42,
     * "gender": "男",
     * "phone": null,
     * "idcard": "1351351351",
     * "householder_id": 1,
     * "is_hz": 1,
     * "address_name": "龙马潭区石洞镇顺江村1组",
     * "family_relation": "父子"
     * }
     * }
     */
    public function getFamilyMsg()
    {
        //用户id
        $user_id = get_params('user_id');
        if (empty($user_id)) {
            $this->apiSuccess('缺少参数', null, '0');
        }
//        获取户主id
        $map['user_id'] = $user_id;
        $map['status']  = 1;
        $householder_id = Db::table('fa_szxc_information_usermsg')->where($map)->field('householder_id,family_relation')->find();
        if (empty($householder_id['householder_id'])) {
            $this->apiSuccess('未绑定户主', null, 1);
        }
//        获取户主信息
        $where['user_id'] = $householder_id['householder_id'];
        $where['status']  = 1;
        $res              = Db::table('fa_szxc_information_usermsg')->where($where)->field("id,user_id,name,age,gender,phone,idcard,householder_id,is_hz,address_name")->find();
        if ($res) {
            $res['family_relation'] = $householder_id['family_relation'];
            $this->apiSuccess('获取成功', $res, 1);
        } else {
            $this->apiSuccess('暂无数据', null, '0');
        }
    }

    /**
     * 修改家庭信息
     *
     * @ApiTitle    (修改家庭信息)
     * @ApiSummary  (修改家庭信息)
     * @ApiMethod   (POST)
     * @ApiRoute    (/api/Maintainentry/changeFamilyMsg)
     * @ApiHeaders  (name=token, type=string, required=true, description="请求的Token")
     * @ApiParams   (name="user_id", type="integer", required=true, description="用户id")
     * @ApiParams   (name="householder_id", type="integer", required=true, description="户主id")
     * @ApiParams   (name="family_relation", type="integer", required=true, description="与户主关系")
     * @ApiReturnParams   (name="code", type="integer", required=true, sample="0")
     * @ApiReturnParams   (name="msg", type="string", required=true, sample="返回成功")
     * @ApiReturnParams   (name="data", type="object", sample="{'user_id':'int','user_name':'string','profile':{'email':'string','age':'integer'}}", description="扩展数据返回")
     * @ApiReturn   {
     * "code": 1,
     * "msg": "修改成功",
     * "time": "1668757016",
     * "data": []
     * }
     */
    public function changeFamilyMsg()
    {
        $post = get_params();
        //用户id
        $user_id = get_params('user_id');
        if (empty($user_id)) {
            $this->apiSuccess('缺少参数', null, '0');
        }
        $map['user_id'] = $user_id;
//        修改人员信息
        $data['householder_id']  = $post['householder_id'];
        $data['family_relation'] = $post['family_relation'];
        $data['updatetime']      = time();
        $res                     = Db::table('fa_szxc_information_usermsg')->where($map)->update($data);
        if ($res) {
            $this->apiSuccess('修改成功', '修改成功');
        } else {
            $this->apiSuccess('修改失败');
        }
    }

    /**
     * 获取种植信息
     *
     * @ApiTitle    (获取种植信息)
     * @ApiSummary  (获取种植信息)
     * @ApiMethod   (GET)
     * @ApiRoute    (/api/Maintainentry/getPlantingMsg)
     * @ApiHeaders  (name=token, type=string, required=true, description="请求的Token")
     * @ApiParams   (name="user_id", type="integer", required=true, description="用户id")
     * @ApiReturnParams   (name="code", type="integer", required=true, sample="0")
     * @ApiReturnParams   (name="msg", type="string", required=true, sample="返回成功")
     * @ApiReturnParams   (name="data", type="object", sample="{'user_id':'int','user_name':'string','profile':{'email':'string','age':'integer'}}", description="扩展数据返回")
     * @ApiReturn   {
     * "code": 1,
     * "msg": "获取成功",
     * "time": "1668993420",
     * "data": {
     * "id": 7,
     * "user_id": 21,
     * "tools_msg": [
     * {
     * "name": "水稻",
     * "num": 20,
     * "mianji": 2
     * },
     * {
     * "name": "玉米",
     * "num": 30,
     * "mianji": 3
     * }
     * ],
     * "crops_msg": [
     * {
     * "name": "水稻",
     * "num": 20,
     * "mianji": 2
     * },
     * {
     * "name": "玉米",
     * "num": 30,
     * "mianji": 3
     * }
     * ],
     * "createtime": 1668736746,
     * "land_area": "5",
     * "is_wz": null,
     * "nature_of_land": "国有",
     * "work_name": "张三",
     * "work_gender": "男",
     * "work_phone": null,
     * "work_relation": "本人"
     * }
     * }
     */
    public function getPlantingMsg()
    {
        //用户id
        $user_id = get_params('user_id');
        if (empty($user_id)) {
            $this->apiError('缺少参数');
        }

//        获取种植信息
        $where['user_id'] = $user_id;
        $res              = Db::table('fa_szxc_information_planting')->where($where)->field("id,user_id,tools_msg,crops_msg,createtime,land_area,is_wz,nature_of_land,work_name,work_gender,work_phone,work_relation,work_id,breed_area,breed_msg")->find();
        if ($res) {
            $find=Db::table('fa_category')->where('id',$res['nature_of_land'])->find();
            $res['nature_of_land_id']=$res['nature_of_land'];
            $res['nature_of_land']=$find['name'];
            $res['tools_msg'] = $res['tools_msg'] ? json_decode($res['tools_msg'], 1):[];
            $res['crops_msg'] = $res['crops_msg'] ? json_decode($res['crops_msg'], 1):[];
            $res['breed_msg'] = $res['breed_msg'] ? json_decode($res['breed_msg'], 1):[];
            $this->apiSuccess('获取成功', $res, 1);
        } else {
            $this->apiError('暂无数据');
        }
    }

    /**
     * 修改种植信息
     *
     * @ApiTitle    (修改种植信息)
     * @ApiSummary  (修改种植信息)
     * @ApiMethod   (POST)
     * @ApiRoute    (/api/Maintainentry/changePlantingMsg)
     * @ApiHeaders  (name=token, type=string, required=true, description="请求的Token")
     * @ApiParams   (name="user_id", type="integer", required=true, description="用户id")
     * @ApiParams   (name="tools_msg", type="integer", required=true, description="农机农具信息")
     * @ApiParams   (name="crops_msg", type="integer", required=true, description="农作物信息")
     * @ApiParams   (name="land_area", type="integer", required=true, description="土地面积")
     * @ApiParams   (name="nature_of_land", type="integer", required=true, description="土地性质")
     * @ApiParams   (name="is_wz", type="integer", required=true, description="土地外租")
     * @ApiParams   (name="work_name", type="integer", required=true, description="劳动人姓名")
     * @ApiParams   (name="work_gender", type="integer", required=true, description="劳动人口性别")
     * @ApiParams   (name="work_phone", type="integer", required=false, description="劳动人联系方式")
     * @ApiParams   (name="work_relation", type="integer", required=true, description="劳动人与户主关系")
     * @ApiParams   (name="work_id", type="integer", required=true, description="劳动人id")
     * @ApiReturnParams   (name="code", type="integer", required=true, sample="0")
     * @ApiReturnParams   (name="msg", type="string", required=true, sample="返回成功")
     * @ApiReturnParams   (name="data", type="object", sample="{'user_id':'int','user_name':'string','profile':{'email':'string','age':'integer'}}", description="扩展数据返回")
     * @ApiReturn   {
     * "code": 1,
     * "msg": "修改成功",
     * "time": "1668757016",
     * "data": []
     * }
     */
    public function changePlantingMsg()
    {
        $post    = get_params();
        $user_id = get_params('user_id');
        if (empty($user_id)) {
            $this->apiError('缺少参数');
        }
        $time = time();
        $map[] = ['user_id','=',$user_id];
        $find=Db::table('fa_szxc_information_planting')->where($map)->find();
        // 新增写入种植表
        Db::table('fa_szxc_planting')->where('user_id',$user_id)->delete();
        $mianji = 0;
        if($post['crops_msg']){
            $crops_msg_arr = json_decode($post['crops_msg'],1);
            foreach ($crops_msg_arr as $k=>$v){
                // 根据名字查询分类
                if($v['name']){
                    $type = Db::table('fa_szxc_planting_type')->where('name',$v['name'])->find();
                    if($type){
                        $planting_data['type_id'] = $type['id'];
                    }else{
                        $type_data['name'] = $v['name'];
                        $type_data['createtime'] = $time;
                        $type_id = Db::table('fa_szxc_planting_type')->strict(false)->insertGetId($type_data);
                        $planting_data['type_id'] = $type_id;
                    }
                    $planting_data['user_id'] = $user_id;
                    $planting_data['num'] = $v['num']??0;
                    $planting_data['measure'] = $v['mianji']??0;
                    $planting_data['createtime'] = $time;
                    Db::table('fa_szxc_planting')->strict(false)->insertGetId($planting_data);
                }
                //                            计算面积
                if($v['mianji']){
                    $mianji += $v['mianji'];
                }
            }
        }

        // 新增写入养殖表
        Db::table('fa_szxc_breed')->where('user_id',$user_id)->delete();
//        $mianji = 0;
        if(isset($post['breed_msg']) && !empty($post['breed_msg'])){
            $breed_msg_arr = json_decode($post['breed_msg'],1);
            foreach ($breed_msg_arr as $k=>$v){
//                            根据名字查询分类
                if($v['name']){
                    $type = Db::table('fa_szxc_breed_type')->where('name',$v['name'])->find();
                    if($type){
                        $breed_data['type_id'] = $type['id'];
                    }else{
                        $type_data['name'] = $v['name'];
                        $type_data['createtime'] = $time;
                        $type_id = Db::table('fa_szxc_breed_type')->strict(false)->insertGetId($type_data);
                        $breed_data['type_id'] = $type_id;
                    }
                    $breed_data['user_id'] = $user_id;
                    $breed_data['num'] = $v['num']??0;
                    $breed_data['measure'] = $v['mianji']??0;
                    $breed_data['createtime'] = $time;
                    Db::table('fa_szxc_breed')->strict(false)->insertGetId($breed_data);
                }
////                            计算面积
//                            if($v['mianji']){
//                                $mianji += $v['mianji'];
//                            }
            }
        }

        $waste_land_area = $post['land_area'] - $mianji;
        if($waste_land_area < 0){
            $waste_land_area = 0;
        }

        if ($find) {
            //        修改人员信息
            $data['tools_msg']      = $post['tools_msg'];
            $data['breed_msg']      = $post['breed_msg']??'';
            $data['breed_area']      = $post['breed_area']??'';
            $data['crops_msg']      = $post['crops_msg'];
            $data['land_area']      = $post['land_area'];
            $data['nature_of_land'] = $post['nature_of_land_id'];
            $data['is_wz']          = $post['is_wz'];
//            $data['work_name']      = $post['work_name'];
//            $data['work_gender']    = $post['work_gender'];
//            $data['work_phone']     = $post['work_phone'] ?? '';
//            $data['work_relation']  = $post['work_relation'];
//            $data['work_id']        = $post['work_id'];
            $data['waste_land_area']        = $waste_land_area;
            $data['user_id']        = $user_id;
            $data['updatetime']     = time();
            $res                    = Db::table('fa_szxc_information_planting')->where($map)->update($data);
            if ($res) {
                $this->apiSuccess('修改成功', '修改成功');
            } else {
                $this->apiError('修改失败');
            }
        }else{
            //        修改人员信息
            $data['tools_msg']      = $post['tools_msg'];
            $data['breed_msg']      = $post['breed_msg']??'';
            $data['breed_area']      = $post['breed_area']??'';
            $data['crops_msg']      = $post['crops_msg'];
            $data['land_area']      = $post['land_area'];
            $data['nature_of_land'] = $post['nature_of_land_id'];
            $data['is_wz']          = $post['is_wz'];
//            $data['work_name']      = $post['work_name'];
//            $data['work_gender']    = $post['work_gender'];
//            $data['work_phone']     = $post['work_phone'] ?? '';
//            $data['work_relation']  = $post['work_relation'];
//            $data['work_id']        = $post['work_id'];
            $data['waste_land_area']        = $waste_land_area;
            $data['user_id']        = $user_id;

            $data['createtime']     = time();
            $res                    = Db::table('fa_szxc_information_planting')->insert($data);
            if ($res) {
                $this->apiSuccess('保存成功', '保存成功');
            } else {
                $this->apiError('保存失败');
            }
        }

    }

    /**
     * 获取保险信息
     *
     * @ApiTitle    (获取保险信息)
     * @ApiSummary  (获取保险信息)
     * @ApiMethod   (GET)
     * @ApiRoute    (/api/Maintainentry/getInsuranceMsg)
     * @ApiHeaders  (name=token, type=string, required=true, description="请求的Token")
     * @ApiParams   (name="user_id", type="integer", required=true, description="用户id")
     * @ApiReturnParams   (name="code", type="integer", required=true, sample="0")
     * @ApiReturnParams   (name="msg", type="string", required=true, sample="返回成功")
     * @ApiReturnParams   (name="data", type="object", sample="{'user_id':'int','user_name':'string','profile':{'email':'string','age':'integer'}}", description="扩展数据返回")
     * @ApiReturn  {
     * "code": 1,
     * "msg": "获取成功",
     * "time": 1669019298,
     * "data": {
     * "id": 1,
     * "user_id": 3,
     * "endowment_insurance_status": "已买",
     * "is_subsidy": "是",
     * "insurance_reason": "",
     * "medical_insurance_type": "农村医保",
     * "whether_disabled": "否",
     * "disability_num": "",
     * "disability_type": "",
     * "disability_level": "",
     * "insurance_type": "农村社保",
     * "ny_insurance": "是",
     * "sy_insurance": "是"
     * }
     * }
     */
    public function getInsuranceMsg()
    {
        //用户id
        $user_id = get_params('user_id');
        if (empty($user_id)) {
            $this->apiError('缺少参数');
        }
//        获取种植信息
        $where['user_id'] = $user_id;
        $res              = Db::table('fa_szxc_information_insurance')->where($where)
        ->withAttr('endowment_insurance_status',function($value,$data){
            if($value==1){
                $find='已交';
            }elseif($value==2){
                $find='未交';
            }else{
                $find='代缴';
            }
            return $find;
        })
        ->withAttr('insurance_type',function($value,$data){
            $find=Db::table('fa_category')->where('id',$value)->value('name');
            return $find;
        })
        ->withAttr('whether_disabled',function($value,$data){
            $find=Db::table('fa_category')->where('id',$value)->value('name');
            return $find;
        })
        ->withAttr('disability_type',function($value,$data){
            $find=Db::table('fa_category')->where('id',$value)->value('name');
            return $find;
        })
        ->withAttr('disability_level',function($value,$data){
            $find=Db::table('fa_category')->where('id',$value)->value('name');
            return $find;
        })
        ->withAttr('ny_insurance',function($value,$data){
            $find=Db::table('fa_category')->where('id',$value)->value('name');
            return $find;
        })
        ->withAttr('sy_insurance',function($value,$data){
            $find=Db::table('fa_category')->where('id',$value)->value('name');
            return $find;
        })
        ->field("id,user_id,endowment_insurance_status,endowment_insurance_status as endowment_insurance_status_id,is_subsidy,insurance_reason,insurance_type,insurance_type as insurance_type_id,
        whether_disabled,whether_disabled as whether_disabled_id,disability_num,disability_type,disability_type as disability_type_id,disability_level,disability_level as disability_level_id,ny_insurance,ny_insurance as ny_insurance_id,
        sy_insurance,sy_insurance as sy_insurance_id")
        ->find();
        if ($res) {
            $this->apiSuccess('获取成功', $res, 1);
        } else {
            $this->apiError('暂无数据');
        }
    }

    /**
     * 修改保险信息
     *
     * @ApiTitle    (修改保险信息)
     * @ApiSummary  (修改保险信息)
     * @ApiMethod   (POST)
     * @ApiRoute    (/api/Maintainentry/changeInsuranceMsg)
     * @ApiHeaders  (name=token, type=string, required=true, description="请求的Token")
     * @ApiParams   (name="user_id", type="integer", required=true, description="用户id")
     * @ApiParams   (name="endowment_insurance_status", type="integer", required=true, description="养老保险状态")
     * @ApiParams   (name="is_subsidy", type="integer", required=true, description="是否领取社保补贴")
     * @ApiParams   (name="insurance_reason", type="integer", required=false, description="参保原因")
     * @ApiParams   (name="medical_insurance_type", type="integer", required=true, description="医保类型")
     * @ApiParams   (name="whether_disabled", type="integer", required=true, description="是否残疾")
     * @ApiParams   (name="disability_num", type="integer", required=fasle, description="残疾证号")
     * @ApiParams   (name="disability_type", type="integer", required=fasle, description="残疾类别")
     * @ApiParams   (name="disability_level", type="integer", required=fasle, description="残疾等级")
     * @ApiParams   (name="insurance_type", type="integer", required=true, description="参保类型")
     * @ApiParams   (name="ny_insurance", type="integer", required=true, description="农业保险")
     * @ApiParams   (name="sy_insurance", type="integer", required=true, description="商业保险")
     * @ApiReturnParams   (name="code", type="integer", required=true, sample="0")
     * @ApiReturnParams   (name="msg", type="string", required=true, sample="返回成功")
     * @ApiReturnParams   (name="data", type="object", sample="{'user_id':'int','user_name':'string','profile':{'email':'string','age':'integer'}}", description="扩展数据返回")
     * @ApiReturn   {
     * "code": 1,
     * "msg": "修改成功",
     * "time": "1668757016",
     * "data": []
     * }
     */
    public function changeInsuranceMsg()
    {
        $post    = get_params();
        $user_id = get_params('user_id');

//        try {
//            validate('Maintainentry.insurancemsg')->check($post);
//        } catch (\Exception $e) {
//            $this->apiError($e->getMessage());
//        }

        if (empty($user_id)) {
            $this->apiError('缺少参数');
        }
        $map['user_id'] = $user_id;
        $is_have        = Db::table('fa_szxc_information_insurance')->where($map)->find();
        if ($is_have) {
            //        修改信息
            $data['endowment_insurance_status'] = $post['endowment_insurance_status_id']?? '';
            $data['is_subsidy']                 = 0;
            $data['insurance_reason']           = $post['insurance_reason'] ?? '';
//            $data['insurance_type']             = $post['insurance_type_id'];
//            $data['whether_disabled']           = $post['whether_disabled'];
            $data['disability_num']             = $post['disability_num'] ?? '';
            $data['disability_type']            = $post['disability_type_id']?? '';
            $data['disability_level']           = $post['disability_level_id']?? '';
            $data['insurance_type']             = $post['insurance_type_id']?? '';
            $data['ny_insurance']               = $post['ny_insurance_id']?? '';
            $data['sy_insurance']               = $post['sy_insurance_id']?? '';
            $data['updatetime']                 = time();
            $res                                = Db::table('fa_szxc_information_insurance')->where($map)->update($data);
            if ($res) {
                $this->apiSuccess('修改成功', '修改成功');
            } else {
                $this->apiError('修改失败');
            }
        } else { //新增
            $data['endowment_insurance_status'] = $post['endowment_insurance_status_id']?? '';
            $data['is_subsidy']                 = 0;
            $data['insurance_reason']           = $post['insurance_reason'] ?? '';
//            $data['whether_disabled']           = $post['whether_disabled'];
            $data['disability_num']             = $post['disability_num'] ?? '';
            $data['disability_type']            = $post['disability_type_id']?? '';
            $data['disability_level']           = $post['disability_level_id']?? '';
            $data['insurance_type']             = $post['insurance_type_id']?? '';
            $data['ny_insurance']               = $post['ny_insurance_id']?? '';
            $data['sy_insurance']               = $post['sy_insurance_id']?? '';
            $data['createtime'] = time();
            $data['user_id']             = $post['user_id'];
            $res                = Db::table('fa_szxc_information_insurance')->strict(false)->insert($data);
            if ($res) {
                $this->apiSuccess('修改成功', '修改成功');
            } else {
                $this->apiError('修改失败');
            }
        }
    }


    /**
     * 获取健康信息
     *
     * @ApiTitle    (获取健康信息)
     * @ApiSummary  (获取健康信息)
     * @ApiMethod   (GET)
     * @ApiRoute    (/api/Maintainentry/getHealthyMsg)
     * @ApiHeaders  (name=token, type=string, required=true, description="请求的Token")
     * @ApiParams   (name="user_id", type="integer", required=true, description="用户id")
     * @ApiReturnParams   (name="code", type="integer", required=true, sample="0")
     * @ApiReturnParams   (name="msg", type="string", required=true, sample="返回成功")
     * @ApiReturnParams   (name="data", type="object", sample="{'user_id':'int','user_name':'string','profile':{'email':'string','age':'integer'}}", description="扩展数据返回")
     * @ApiReturn  {
     * "code": 1,
     * "msg": "获取成功",
     * "time": 1669019298,
     * "data": {
     * "id": 1,
     * "user_id": 3,
     * "endowment_insurance_status": "已买",
     * "is_subsidy": "是",
     * "insurance_reason": "",
     * "medical_insurance_type": "农村医保",
     * "whether_disabled": "否",
     * "disability_num": "",
     * "disability_type": "",
     * "disability_level": "",
     * "insurance_type": "农村社保",
     * "ny_insurance": "是",
     * "sy_insurance": "是"
     * }
     * }
     */
    public function getHealthyMsg()
    {
        //用户id
        $user_id = get_params('user_id');
        if (empty($user_id)) {
            $this->apiError('缺少参数');
        }
//        获取种植信息
        $where['user_id'] = $user_id;
        $res              = Db::table('fa_szxc_information_healthy')->where($where)
        ->withAttr('blood_type',function($value,$data){
            $find=Db::table('fa_category')->where('id',$value)->value('name');
            return $find;
        })
        ->withAttr('drug_allergy',function($value,$data){
            $find=Db::table('fa_category')->where('id',$value)->value('name');
            return $find;
        })
        ->withAttr('exposure_history',function($value,$data){
            $find=Db::table('fa_category')->where('id',$value)->value('name');
            return $find;
        })
        ->withAttr('history_of_disease',function($value,$data){
            $find=Db::table('fa_category')->where('id',$value)->value('name');
            return $find;
        })
        ->withAttr('genetic_name',function($value,$data){
            $find=Db::table('fa_category')->where('id',$value)->value('name');
            return $find;
        })
        ->withAttr('cfpfss',function($value,$data){
            $find=Db::table('fa_category')->where('id',$value)->value('name');
            return $find;
        })
        ->withAttr('poultry_corral',function($value,$data){
            $find=Db::table('fa_category')->where('id',$value)->value('name');
            return $find;
        })
        ->withAttr('toilet_msg',function($value,$data){
            $find=Db::table('fa_category')->where('id',$value)->value('name');
            return $find;
        })
        ->withAttr('family_history',function($value,$data){
            $find=Db::table('fa_category')->where('id',$value)->value('name');
            return $find;
        })
        ->withAttr('fuel_type',function($value,$data){
            $find=Db::table('fa_category')->where('id',$value)->value('name');
            return $find;
        })
        ->withAttr('drinking_water',function($value,$data){
            $find=Db::table('fa_category')->where('id',$value)->value('name');
            return $find;
        })
        ->withAttr('familial_diseases',function($value,$data){
            $find=Db::table('fa_category')->where('id',$value)->value('name');
            return $find;
        })
        ->withAttr('history_of_surgery',function($value,$data){
            if($value==1){
                $find='有';
            }else{
                $find='无';
            }
            return $find;
        })
        ->field("id,user_id,medical_insurance_type,insurance_type,blood_type,blood_type as blood_type_id,drug_allergy,drug_allergy as drug_allergy_id,exposure_history,exposure_history as exposure_history_id,history_of_disease,history_of_disease as history_of_disease_id,
        history_of_surgery,history_of_surgery as history_of_surgery_id,family_history,family_history as family_history_id,familial_diseases,familial_diseases as familial_diseases_id,genetic_history,genetic_name,genetic_name as genetic_name_id,whether_disabled,cfpfss,cfpfss as cfpfss_id,fuel_type,fuel_type as fuel_type_id,drinking_water,drinking_water as drinking_water_id,
        toilet_msg,toilet_msg as toilet_msg_id,poultry_corral,poultry_corral as poultry_corral_id")
        ->find();
        if ($res) {
            $this->apiSuccess('获取成功', $res, 1);
        } else {
            $this->apiError('暂无数据');
        }
    }


    /**
     * 修改健康信息
     *
     * @ApiTitle    (修改健康信息)
     * @ApiSummary  (修改健康信息)
     * @ApiMethod   (POST)
     * @ApiRoute    (/api/Maintainentry/changeHealthyMsg)
     * @ApiHeaders  (name=token, type=string, required=true, description="请求的Token")
     * @ApiParams   (name="user_id", type="integer", required=true, description="用户id")
     * @ApiParams   (name="endowment_insurance_status", type="integer", required=true, description="养老保险状态")
     * @ApiParams   (name="is_subsidy", type="integer", required=true, description="是否领取社保补贴")
     * @ApiParams   (name="insurance_reason", type="integer", required=false, description="参保原因")
     * @ApiParams   (name="medical_insurance_type", type="integer", required=true, description="医保类型")
     * @ApiParams   (name="whether_disabled", type="integer", required=true, description="是否残疾")
     * @ApiParams   (name="disability_num", type="integer", required=fasle, description="残疾证号")
     * @ApiParams   (name="disability_type", type="integer", required=fasle, description="残疾类别")
     * @ApiParams   (name="disability_level", type="integer", required=fasle, description="残疾等级")
     * @ApiParams   (name="insurance_type", type="integer", required=true, description="参保类型")
     * @ApiParams   (name="ny_insurance", type="integer", required=true, description="农业保险")
     * @ApiParams   (name="sy_insurance", type="integer", required=true, description="商业保险")
     * @ApiReturnParams   (name="code", type="integer", required=true, sample="0")
     * @ApiReturnParams   (name="msg", type="string", required=true, sample="返回成功")
     * @ApiReturnParams   (name="data", type="object", sample="{'user_id':'int','user_name':'string','profile':{'email':'string','age':'integer'}}", description="扩展数据返回")
     * @ApiReturn   {
     * "code": 1,
     * "msg": "修改成功",
     * "time": "1668757016",
     * "data": []
     * }
     */
    public function changeHealthyMsg()
    {
        $post    = get_params();
        $user_id = get_params('user_id');
        if (empty($user_id)) {
            $this->apiError('缺少参数');
        }

        $map['user_id'] = $user_id;
        $is_have        = Db::table('fa_szxc_information_healthy')->where($map)->find();
        if ($is_have) {
            //        修改信息
//            $data['medical_insurance_type'] = $post['medical_insurance_type'];
//            $data['insurance_type']         = $post['insurance_type'];
            $data['blood_type']             = $post['blood_type_id']?? '';
            $data['drug_allergy']           = $post['drug_allergy_id']?? '';
            $data['exposure_history']       = $post['exposure_history_id']?? '';
            $data['history_of_disease']     = $post['history_of_disease_id']?? '';
            $data['history_of_surgery']     = $post['history_of_surgery_id']?? '';
            $data['family_history']         = $post['family_history_id']?? '';
            $data['familial_diseases']      = $post['familial_diseases_id']?? '';
            $data['genetic_history']        = 0;
            $data['genetic_name']           = $post['genetic_name_id']?? '';
//            $data['whether_disabled']       = $post['whether_disabled'];
            $data['cfpfss']                 = $post['cfpfss_id']?? '';
            $data['fuel_type']              = $post['fuel_type_id']?? '';
            $data['drinking_water']         = $post['drinking_water_id']?? '';
            $data['toilet_msg']             = $post['toilet_msg_id']?? '';
            $data['poultry_corral']         = $post['poultry_corral_id']?? '';
            $data['updatetime']             = time();
            $res                            = Db::table('fa_szxc_information_healthy')->where($map)->update($data);
            if ($res) {
                $this->apiSuccess('修改成功', '修改成功');
            } else {
                $this->apiError('修改失败');
            }
        } else { //新增
            $data['blood_type']             = $post['blood_type_id']?? '';
            $data['drug_allergy']           = $post['drug_allergy_id']?? '';
            $data['exposure_history']       = $post['exposure_history_id']?? '';
            $data['history_of_disease']     = $post['history_of_disease_id']?? '';
            $data['history_of_surgery']     = $post['history_of_surgery_id']?? '';
            $data['family_history']         = $post['family_history_id']?? '';
            $data['familial_diseases']      = $post['familial_diseases_id']?? '';
            $data['genetic_history']        = 0;
            $data['genetic_name']           = $post['genetic_name_id']?? '';
//            $data['whether_disabled']       = $post['whether_disabled'];
            $data['cfpfss']                 = $post['cfpfss_id']?? '';
            $data['fuel_type']              = $post['fuel_type_id']?? '';
            $data['drinking_water']         = $post['drinking_water_id']?? '';
            $data['toilet_msg']             = $post['toilet_msg_id']?? '';
            $data['poultry_corral']         = $post['poultry_corral_id']?? '';
            $data['createtime'] = time();
            $data['user_id']             = $post['user_id'];
            $res                = Db::table('fa_szxc_information_healthy')->strict(false)->insert($data);
            if ($res) {
                $this->apiSuccess('修改成功','修改成功');
            } else {
                $this->apiError('修改失败');
            }
        }
    }


    /**
     * 新增录入接口
     *
     * @ApiTitle    (新增录入接口)
     * @ApiSummary  (新增录入接口)
     * @ApiMethod   (POST)
     * @ApiRoute    (/api/Maintainentry/newEntry)
     * @ApiHeaders  (name=token, type=string, required=true, description="请求的Token")
     * @ApiParams   (name="page", type="integer", required=true, description="页数")
     * @ApiParams   (name="name", type="string", required=false, description="用户名")
     * @ApiParams   (name="limit", type="string", required=false, description="每页条数")
     * @ApiParams   (name="idcard", type="string", required=false, description="身份证号")
     * @ApiReturnParams   (name="code", type="integer", required=true, sample="0")
     * @ApiReturnParams   (name="msg", type="string", required=true, sample="返回成功")
     * @ApiReturnParams   (name="data", type="object", sample="{'user_id':'int','user_name':'string','profile':{'email':'string','age':'integer'}}", description="扩展数据返回")
     * @ApiReturn   ({
    'code':'1',
    'msg':'返回成功'
    })
     */
    public function newEntry()
    {
        $post = get_params();
//        try {
//            validate('Maintainentry.add')->check($post);
//        } catch (\Exception $e) {
//            $this->apiError($e->getMessage());
//        }

        if ($post) {
            Db::startTrans();
            //        获取录入人地址
            $add = Db::table('fa_szxc_information_useraddress')->where('user_id',JWT_UID)->find();
            if(empty($add)){
                $this->apiError('录入出错,请联系系统管理员');
            }
            //              判断手机号是否已经注册
            $is_mobile = Db::table('fa_user')->where('mobile',$post['phone'])->find();
            if ($is_mobile) {
                $this->apiError('手机号已被使用');
            }

            //判断身份证号是否已被使用
            $InformationUsermsg = Db::table('fa_szxc_information_usermsg')->where('idcard',$post['idcard'])->field('idcard')->find();
            if ($InformationUsermsg) {
                $this->apiError('身份证号已被使用');
            }

            //            组装地址名
            if ($add['area_id'] != '') {
                $area_name = Db::table('fa_geo_area')->where('area_code', $add['area_id'])->value('area_name');
            }
            if ($add['street_id'] != '') {
                $street_name = Db::table('fa_geo_street')->where('street_code', $add['street_id'])->value('street_name');
            }
            if ($add['village_id'] != '') {
                $village = Db::table('fa_geo_village')->where('village_code', $add['village_code'])->value('village_name');
            }
            if ($add['brigade_id'] != '') {
                $brigade_name = Db::table('fa_geo_brigade')->where('id', $add['brigade_id'])->value('brigade_name');
            }
            $post['address_name'] = $area_name.$street_name.$village.$brigade_name;
            $village_code = $add['village_code'];

            try {
                $mobile = $post['phone'];
                $ip     = request()->ip();
                $time   = time();
                $salt   = set_salt(); //随机字符串
//                注册用户
                $params = [
                    'username'   => $mobile,
                    'nickname'   => $post['name'],
                    'group_id'   => 1,
                    'password'   => $this->getEncryptPassword('', $salt),
                    'email'      => '',
                    'mobile'     => $mobile,
                    'level'      => 1,
                    'score'      => 0,
                    'avatar'     => 'https://lihai001.oss-cn-chengdu.aliyuncs.com/uploads/20230111/58c84995456bc63b2660d9526f7062fc.png',
                    'salt'       => $salt,
                    'jointime'   => $time,
                    'joinip'     => $ip,
                    'logintime'  => $time,
                    'loginip'    => $ip,
                    'prevtime'   => $time,
                    'status'     => 'normal',
                    'createtime' => $time,
                    'updatetime' => $time
                ];
                //写入用户表
                $userid = Db::table('fa_user')->strict(false)->insertGetId($params);

                // 写入商城关系表
                $nk_user['n_user_id'] = $userid;
                $is_user_phone = Db::connect('shop')->name('user')->where('phone',$mobile)->find();
                if(!$is_user_phone){
                    Db::connect('shop')->name('nk_user')->insert($nk_user);
                }else{
                    $is_user_id = Db::connect('shop')->name('nk_user')->where('user_id',$is_user_phone['uid'])->find();
                    if($is_user_id){
                        Db::connect('shop')->name('nk_user')->where('user_id',$is_user_phone['uid'])->update($nk_user);
                    }else{
                        $nk_user['user_id'] = $is_user_phone['uid'];
                        Db::connect('shop')->name('nk_user')->insert($nk_user);
                    }
                }

                //写入用户信息表
                $post['user_id']    = $userid;
                $post['createtime'] = $time;
                $post['enter_id']   = JWT_UID;
                $post['gender']= $post['gender_id'];
                $post['nation']=$post['nation_id'];
                $post['political_outlook']=$post['zzmm_id'];
                $post['marital_status']=$post['marriage_id'];
                $post['area_id'] = $add['area_id'];
                $post['street_id'] = $add['street_id'];
                $post['village_id'] = $add['village_id'];
                $post['brigade_id'] = $add['brigade_id'];
                if($post['is_hz']==1){
                    $post['householder_id']=$userid;
                }
                Db::table('fa_szxc_information_usermsg')->strict(false)->insert($post);

                //写入用户地区表
                $address_data['user_id']    = $userid;
                $address_data['area_id']    = $add['area_id'];
                $address_data['street_id']  = $add['street_id'];
                $address_data['village_id'] = $add['village_id'];
                $address_data['brigade_id'] = $add['brigade_id'];
                $address_data['village_code'] =$village_code;
                $address_data['createtime'] = date('Y-m-d H:i:s');
                Db::table('fa_szxc_information_useraddress')->strict(false)->insert($address_data);

                // if($post['is_hz'] == 0){
                    //写入家庭关系表
                    $family_relations['user_id']        = $userid;  //用户id
                    $family_relations['householder_id'] = $post['householder_id'];  //户主id
                    $family_relations['family_name'] = $post['name'];  //家庭成员姓名
                    $family_relations['family_relationship'] = $post['family_relation'];; //家庭成员与户主关系
                    $family_relations['family_gender'] = $post['gender_id'];  //家庭成员性别
                    $family_relations['family_phone'] = $mobile;  //家庭成员联系方式
                    $family_relations['family_age'] = $post['age'];  //家庭成员年龄
                    $family_relations['createtime'] = $time;//创建时间
                    Db::table('fa_szxc_family_relations')->strict(false)->insert($family_relations);
                // }

                //     写入家庭成员表
                $my_user_id = $post['householder_id'];
                $f_where[] = ['user_ids','find in set',$my_user_id];
                $family_arr = Db::table('fa_szxc_family')->where($f_where)->find();
                if($family_arr){
                    $u_data['user_ids'] = \think\facade\Db::raw("concat(user_ids ,"."',".$userid."')");
                    $u_data['updatetime'] = $time;
                    Db::table('fa_szxc_family')->where('id',$family_arr['id'])->update($u_data);
                }else{
                    $szxc_family['user_ids'] = $my_user_id.','.$userid;
                    $szxc_family['createtime'] = $time;
                    Db::table('fa_szxc_family')->strict(false)->insert($szxc_family);
                }

                //判断土地是否外租,0没有外租
                if ($post['is_waizu'] == 0) {

                    // 新增写入种植表
                    Db::table('fa_szxc_planting')->where('user_id',$userid)->delete();
                    $mianji = 0;
                    if($post['crops_msg']){
                        $crops_msg_arr = json_decode($post['crops_msg'],1);
                        foreach ($crops_msg_arr as $k=>$v){
//                            根据名字查询分类
                            if($v['name']){
                                $type = Db::table('fa_szxc_planting_type')->where('name',$v['name'])->find();
                                if($type){
                                    $planting_data['type_id'] = $type['id'];
                                }else{
                                    $type_data['name'] = $v['name'];
                                    $type_data['createtime'] = $time;
                                    $type_id = Db::table('fa_szxc_planting_type')->strict(false)->insertGetId($type_data);
                                    $planting_data['type_id'] = $type_id;
                                }
                                $planting_data['user_id'] = $userid;
                                $planting_data['num'] = $v['num']??0;
                                $planting_data['measure'] = $v['mianji']??0;
                                $planting_data['createtime'] = $time;
                                Db::table('fa_szxc_planting')->strict(false)->insertGetId($planting_data);
                            }
//                            计算面积
                            if($v['mianji']){
                                $mianji += $v['mianji'];
                            }
                        }
                    }

                    // 新增写入养殖表
                    Db::table('fa_szxc_breed')->where('user_id',$userid)->delete();
                    if(isset($post['breed_msg']) && !empty($post['breed_msg'])){
                        $breed_msg_arr = json_decode($post['breed_msg'],1);
                        foreach ($breed_msg_arr as $k=>$v){
//                            根据名字查询分类
                            if($v['name']){
                                $type = Db::table('fa_szxc_breed_type')->where('name',$v['name'])->find();
                                if($type){
                                    $breed_data['type_id'] = $type['id'];
                                }else{
                                    $type_data['name'] = $v['name'];
                                    $type_data['createtime'] = $time;
                                    $type_id = Db::table('fa_szxc_breed_type')->strict(false)->insertGetId($type_data);
                                    $breed_data['type_id'] = $type_id;
                                }
                                $breed_data['user_id'] = $userid;
                                $breed_data['num'] = $v['num']??0;
                                $breed_data['measure'] = $v['mianji']??0;
                                $breed_data['createtime'] = $time;
                                Db::table('fa_szxc_breed')->strict(false)->insertGetId($breed_data);
                            }
////                            计算面积
//                            if($v['mianji']){
//                                $mianji += $v['mianji'];
//                            }
                        }
                    }

                    $waste_land_area = $post['land_area'] - $mianji;
                    if($waste_land_area < 0){
                        $waste_land_area = 0;
                    }
                    // 写入种植信息表
                    $cropsarr['user_id']        = $userid;  //用户id
                    $cropsarr['tools_msg']      = $post['tools_msg'];//农机农具信息
                    $cropsarr['crops_msg']      = $post['crops_msg'];//农作物信息
                    $cropsarr['land_area']      = $post['land_area'];//土地面积
                    $cropsarr['nature_of_land'] = $post['nature_of_land'];//土地性质
//                    $cropsarr['work_name']      = $post['work_name'];//劳动人姓名
//                    $cropsarr['work_gender']    = $post['work_gender'];//劳动人口性别
//                    $cropsarr['work_relation']  = $post['work_relation'];//劳动人与户主关系
//                    $cropsarr['work_id']        = $post['work_id'];//劳动人id
                    $cropsarr['waste_land_area']       =  $waste_land_area;//荒地面积
                    $cropsarr['breed_msg']      = $post['breed_msg']??'';//养殖详情信息
                    $cropsarr['breed_area']      = $post['breed_area']??'';//养殖面积
                    $cropsarr['createtime']     = $time;//创建时间
                    Db::table('fa_szxc_information_planting')->strict(false)->insert($cropsarr);

                }
                Db::commit();
                $this->apiSuccess('录入成功','录入成功');
            } catch (ValidateException | PDOException | Exception $e) {
                Db::rollback();
                $this->apiError($e->getMessage());
            }
        } else {
            $this->apiError('缺少参数');
        }
    }

    /**
     * 获取密码加密后的字符串
     * @param string $password 密码
     * @param string $salt 密码盐
     * @return string
     */
    public function getEncryptPassword($password, $salt = '')
    {
        return md5(md5($password) . $salt);
    }

    /**
     * 获取分类
     *
     */
    public function getcategory()
    {
//        分类标识
        $type = get_params('type');
        if (empty($type)) {
            $this->apiError('缺少参数');
        } else {

            $where[]   = ['pid','<>',0];
            $where[]   = ['type','=',$type];
            $where[]   = ['status','=','normal'];
            $result          = Db::table('fa_category')->where($where)->field('id,name,weigh')->order('weigh desc')->select();
            if ($result) {
                $this->apiSuccess('获取成功', $result, 1);
            } else {
                $this->apiError('暂无数据');
            }
        }
    }


    /**
     * 用户新增录入接口
     *
     * @ApiTitle    (用户新增录入接口)
     * @ApiSummary  (用户新增录入接口)
     * @ApiMethod   (POST)
     * @ApiRoute    (/api/Maintainentry/userEntry)
     * @ApiHeaders  (name=token, type=string, required=true, description="请求的Token")
     * @ApiParams   (name="page", type="integer", required=true, description="页数")
     * @ApiParams   (name="name", type="string", required=false, description="用户名")
     * @ApiParams   (name="limit", type="string", required=false, description="每页条数")
     * @ApiParams   (name="idcard", type="string", required=false, description="身份证号")
     * @ApiReturnParams   (name="code", type="integer", required=true, sample="0")
     * @ApiReturnParams   (name="msg", type="string", required=true, sample="返回成功")
     * @ApiReturnParams   (name="data", type="object", sample="{'user_id':'int','user_name':'string','profile':{'email':'string','age':'integer'}}", description="扩展数据返回")
     * @ApiReturn   ({
    'code':'1',
    'msg':'返回成功'
    })
     */
    public function userEntry()
    {
        $post = get_params();
//        try {
//            validate('Maintainentry.myadd')->check($post);
//        } catch (\Exception $e) {
//            $this->apiError($e->getMessage());
//        }

        if ($post) {
////            验证验证码
//            if (! Sms::check($post['phone'], $post['captcha'], 'mobilelogin')) {
//                $this->apiError(__('Captcha is incorrect'));
//            }

            Db::startTrans();
            //        获取录入人地址
            $add = Db::table('fa_szxc_information_useraddress')->where('user_id',JWT_UID)->find();
            if(empty($add)){
                $this->apiError('录入出错,请联系系统管理员');
            }
            //              判断手机号是否已经注册
            $is_mobile = Db::table('fa_user')->where('mobile',$post['phone'])->find();
            if ($is_mobile) {
                $this->apiError('手机号已被使用');
            }

            //判断身份证号是否已被使用
            $InformationUsermsg = Db::table('fa_szxc_information_usermsg')->where('idcard',$post['idcard'])->field('idcard')->find();
            if ($InformationUsermsg) {
                $this->apiError('身份证号已被使用');
            }

            //            组装地址名
            if ($add['area_id'] != '') {
                $area_name = Db::table('fa_geo_area')->where('area_code', $add['area_id'])->value('area_name');
            }
            if ($add['street_id'] != '') {
                $street_name = Db::table('fa_geo_street')->where('street_code', $add['street_id'])->value('street_name');
            }
            if ($add['village_id'] != '') {
                $village = Db::table('fa_geo_village')->where('village_code', $add['village_code'])->value('village_name');
            }
            if ($add['brigade_id'] != '') {
                $brigade_name = Db::table('fa_geo_brigade')->where('id', $add['brigade_id'])->value('brigade_name');
            }
            $post['address_name'] = $area_name.$street_name.$village.$brigade_name;
            $village_code = $add['village_code'];

            try {
                $mobile = $post['phone'];
                $ip     = request()->ip();
                $time   = time();
                $salt   = set_salt(); //随机字符串
//                注册用户
                $params = [
                    'username'   => $mobile,
                    'nickname'   => $post['name'],
                    'group_id'   => 1,
                    'password'   => $this->getEncryptPassword('', $salt),
                    'email'      => '',
                    'mobile'     => $mobile,
                    'level'      => 1,
                    'score'      => 0,
                    'avatar'     => 'https://lihai001.oss-cn-chengdu.aliyuncs.com/uploads/20230111/58c84995456bc63b2660d9526f7062fc.png',
                    'salt'       => $salt,
                    'jointime'   => $time,
                    'joinip'     => $ip,
                    'logintime'  => $time,
                    'loginip'    => $ip,
                    'prevtime'   => $time,
                    'status'     => 'normal',
                    'createtime' => $time,
                    'updatetime' => $time
                ];
                //写入用户表
                $userid = Db::table('fa_user')->strict(false)->insertGetId($params);

                // 写入商城关系表
                $nk_user['n_user_id'] = $userid;
                $is_user_phone = Db::connect('shop')->name('user')->where('phone',$mobile)->find();
                if(!$is_user_phone){
                    Db::connect('shop')->name('nk_user')->insert($nk_user);
                }else{
                    $is_user_id = Db::connect('shop')->name('nk_user')->where('user_id',$is_user_phone['uid'])->find();
                    if($is_user_id){
                        Db::connect('shop')->name('nk_user')->where('user_id',$is_user_phone['uid'])->update($nk_user);
                    }else{
                        $nk_user['user_id'] = $is_user_phone['uid'];
                        Db::connect('shop')->name('nk_user')->insert($nk_user);
                    }
                }

                //写入用户信息表
                $post['user_id']    = $userid;
                $post['createtime'] = $time;
                $post['enter_id']   = JWT_UID;
                $post['gender']= $post['gender_id'];
                $post['nation']=$post['nation_id'];
                $post['political_outlook']=$post['zzmm_id'];
                $post['marital_status']=$post['marriage_id'];
                $post['area_id'] = $add['area_id'];
                $post['street_id'] = $add['street_id'];
                $post['village_id'] = $add['village_id'];
                $post['brigade_id'] = $add['brigade_id'];
                Db::table('fa_szxc_information_usermsg')->strict(false)->insert($post);

                //写入用户地区表
                $address_data['user_id']    = $userid;
                $address_data['area_id']    = $add['area_id'];
                $address_data['street_id']  = $add['street_id'];
                $address_data['village_id'] = $add['village_id'];
                $address_data['brigade_id'] = $add['brigade_id'];
                $address_data['village_code'] =$village_code;
                $address_data['createtime'] = date('Y-m-d H:i:s');
                Db::table('fa_szxc_information_useraddress')->strict(false)->insert($address_data);

//                写入家庭成员表
                $my_user_id = JWT_UID;
                $f_where[] = ['user_ids','find in set',$my_user_id];
                $family_arr = Db::table('fa_szxc_family')->where($f_where)->find();
                if($family_arr){
                    $u_data['user_ids'] = \think\facade\Db::raw("concat(user_ids ,"."',".$userid."')");
                    $u_data['updatetime'] = $time;
                    Db::table('fa_szxc_family')->where('id',$family_arr['id'])->update($u_data);
//                    如果已经设置户主,更新当前人员户主ID
                    if($family_arr['householder_id']){
                        $h_data['householder_id'] = $family_arr['householder_id'];
                        Db::table('fa_szxc_information_usermsg')->where('user_id',$userid)->update($h_data);
                    }
                }else{
                    $szxc_family['user_ids'] = $my_user_id.','.$userid;
                    $szxc_family['createtime'] = $time;
                    Db::table('fa_szxc_family')->strict(false)->insert($szxc_family);
                }

                Db::commit();
                $this->apiSuccess('录入成功','录入成功');
            } catch (ValidateException | PDOException | Exception $e) {
                Db::rollback();
                $this->apiError($e->getMessage());
            }
        } else {
            $this->apiError('缺少参数');
        }
    }

//    获取我的家庭成员
    public function getmyFamily(){
        //用户id
        $user_id = JWT_UID;

//        获取户主id
        $f_where[] = ['user_ids','find in set',$user_id];
        $family_arr = Db::table('fa_szxc_family')->where($f_where)->find();
        if ($family_arr) {
            $map[] = ['user_id','in',$family_arr['user_ids']];
        } else {
            $where['user_id'] = $user_id;
            $where['status']  = 1;
            $householder_id   = Db::table('fa_szxc_information_usermsg')->where($where)->value('householder_id');
            if ($householder_id) {
                $map[] = ['householder_id','=',$householder_id];
                $map[]  = ['status','=',1];
            } else {
                $map[] = ['user_id','=',$user_id];
                $map[]  = ['status','=',1];
            }
        }
//        获取家庭的人员信息
        $res = Db::table('fa_szxc_information_usermsg')->where($map)
            ->order('id desc')
            ->field("id,user_id,name,age,gender,family_num,political_outlook,householder_id,is_hz,address_name,family_relation,phone")
            ->withAttr('avatar', function ($value, $data) {
                return Db::table('fa_user')->where('id', $data['user_id'])->value('avatar');
            })
            ->select()->toArray();
        if ($res){
            //        获取户主id
            $where['user_id'] = $user_id;
            $where['status']  = 1;
            $name = Db::table('fa_szxc_information_usermsg')->where($where)->value('name');
            $is_set_hz = 0;
            foreach ($res as $k=>$v){
                if($v['is_hz']==1){
                    $is_set_hz = 1;
                    $res[$k]['householder_name'] = '本人';
                    $res[$k]['avatar'] = 'https://lihai001.oss-cn-chengdu.aliyuncs.com/uploads/20230129/0dc8d0a0f3bcc168550ef263a9a170dc.png';
                }else{
                    $msg= Db::table('fa_szxc_information_usermsg')->where('user_id',$v['householder_id'])->value('name');
                    $res[$k]['householder_name'] = $msg?:'暂无户主';
                }
                if($v['householder_id']){
                    $res[$k]['is_family'] = 1;
                }else{
                    $res[$k]['is_family'] = 0;
                }
                $is_planting = Db::table('fa_szxc_information_planting')->where('user_id',$v['user_id'])->field('id')->find();
                if($is_planting){
                    $res[$k]['is_planting'] = 1;
                }else{
                    $res[$k]['is_planting'] = 0;
                }
                if($v['gender'] == 1){
                    $res[$k]['gender'] = '男';
                }else{
                    $res[$k]['gender'] = '女';
                }
                $family_relationship = $v['family_relation'];
                $family_relationship_name=Db::table('fa_category')->where('id',$family_relationship)->field('name')->find();
                $res[$k]['family_relationship']=$family_relationship_name?$family_relationship_name['name'] :'';
                $political_outlook=Db::table('fa_category')->where('id',$v['political_outlook'])->field('name')->find();
                $res[$k]['political_outlook'] = $political_outlook?$political_outlook['name']:'无';
            }
        }
//        获取种植信息
//        $www['user_id'] = $user_id;
//        $planting       = Db::table('fa_szxc_information_planting')->where($www)->field('id,crops_msg,land_area')->find();
//        if($planting && $planting['crops_msg']){
//            $crops_msg      = json_decode($planting['crops_msg'], 1);
//            $crops_msg = array_filter(array_column($crops_msg,'name'));
//        }else{
//            $crops_msg      = [];
//        }

//        获取养殖信息
        $www['user_id'] = $user_id;
        $breed                  = Db::table('fa_szxc_breed')->where($www)->count();
        $crops_msg              = Db::table('fa_szxc_planting')->where($www)->count();
        $return['yz_num']       = $breed; //养殖种类
        $return['crops_num']    = $crops_msg;//种植种类
        $return['land_area']    = $planting['land_area'] ??0;//土地面积
        $return['address_name'] = $res[0]['address_name'] ?? '';
        $return['name']         = $name;
        $return['family_num']   = Db::table('fa_szxc_information_usermsg')->where($map)->count();
        $return['is_set_hz']    = $is_set_hz;
        $return['avatar']       = Db::table('fa_user')->where('id', $user_id)->value('avatar');
        $return['data']         = $res;
        $this->apiSuccess('获取成功', $return, 1);
    }

//    设置为户主
    public function setFamily(){
        $user_id = get_params('user_id');
        if (empty($user_id)) {
            $this->apiError('缺少参数');
        }
        $f_where[] = ['user_ids','find in set',$user_id];
        $family_arr = Db::table('fa_szxc_family')->where($f_where)->find();
        if($family_arr){
            if($family_arr['householder_id']){
                  $this->apiError('已经设置户主');
            }else{
                Db::startTrans();
                try {
                    $map[] = ['user_id','in',$family_arr['user_ids']];
//                    更新家庭成员表
                    Db::table('fa_szxc_family')->where('id',$family_arr['id'])->update(['householder_id'=>$user_id]);
//                    更新用户信息表
                    $hz_data['householder_id'] = $user_id;
                    $hz_data['is_hz'] = 0;
                    Db::table('fa_szxc_information_usermsg')->where($map)->update($hz_data);
                    $hz_data['is_hz'] = 1;
                    Db::table('fa_szxc_information_usermsg')->where('user_id',$user_id)->update($hz_data);

                    Db::commit();
                    $this->apiSuccess('设置成功','设置成功');
                } catch (ValidateException | \PDOException | Exception $e) {
                    Db::rollback();
                    $this->apiError($e->getMessage());
                }
           }
        }else{
            Db::startTrans();
            try {
                $map[] = ['user_id','=',$user_id];
//              更新用户信息表
                $hz_data['householder_id'] = $user_id;
                $hz_data['is_hz'] = 1;
                Db::table('fa_szxc_information_usermsg')->where($map)->update($hz_data);

                Db::commit();
                $this->apiSuccess('设置成功','设置成功');
            } catch (ValidateException | \PDOException | Exception $e) {
                Db::rollback();
                $this->apiError($e->getMessage());
            }
        }
    }

//    验证手机号、身份证是否使用
    public function is_have($phone=0,$idcard=0,$captcha=0){

        //            验证验证码
//        if (! Sms::check($phone, $captcha, 'mobilelogin')) {
//            $this->apiError(__('验证码不正确'));
//        }

        // 判断手机号是否已经注册
        $is_mobile = Db::table('fa_user')->where('mobile',$phone)->find();
        if ($is_mobile) {
            $this->apiError('手机号已被使用');
        }

        //判断是否已被使用
        $is_phone = Db::table('fa_szxc_information_usermsg')->where('phone',$phone)->field('phone')->find();
        if ($is_phone) {
            $this->apiError('手机号已被使用');
        }

        //判断身份证号是否已被使用
        $InformationUsermsg = Db::table('fa_szxc_information_usermsg')->where('idcard',$idcard)->field('idcard')->find();
        if ($InformationUsermsg) {
            $this->apiError('身份证号已被使用');
        }
        $this->apiSuccess('验证通过','验证通过');
    }





}