"无","1"=>"个人","2"=>"银行"]; public $charging_method = ["1"=>"评估总值区间","2"=>"评估总值物业区间","3"=>"物业类型","4"=>"单笔","5"=>"单套评估总值"]; /** * 产品设置列表 * @author cavan */ public function ProductList() { $bank_id = $this->request->post('bank_id', '','trim'); //银行 $type = $this->request->post('type', '','trim'); //业务类型 $keyword = $this->request->post('keyword', '','trim'); //产品名称搜索 $page = $this->request->post('page', '','trim'); //页码 $size = $this->request->post('limit', '','trim'); //单页数量 $where = array(); if(!empty($bank_id)){ $where[]=['bank_id','=',$bank_id]; } if(!empty($type)){ $where[]=['type','=',$type]; } if(!empty($keyword)){ $where[]=['product_name','like',"%".$keyword."%"]; } if(empty($order)){ $order=json_encode(array('create_time'=>'desc')); } if(empty($page)){ $page=1; } if(empty($size)){ $size=10; } $config = array( "list_rows" => $size, "page" => $page ); $Product = new Product(); $Attachment = new Attachment(); $ReportTemplate = new ReportTemplate(); $resultData=$Product->where($where) ->order(json_decode($order,true)) ->field('id,bank,product_name,type,charging_object,charging_method,report_template,report_cost,state,create_time,update_time,many_report_template') ->paginate($size,false,$config); if(!empty($resultData)){ foreach ($resultData as $k => $v){ $resultData[$k]['type_name'] = ($v['type']==1)?"住宅":(($v['type']==2)?"商业":""); $resultData[$k]['charging_object_name'] = $this->charging_object[$v['charging_object']]; $resultData[$k]['charging_method_name'] = $this->charging_method[$v['charging_method']]; $resultData[$k]['state_name'] = $v['state']==1?"有效":"无效"; $resultData[$k]['time'] = !empty($v['update_time'])?date("Y-m-d H:i:s",$v['update_time']):date("Y-m-d H:i:s",$v['create_time']); $resultData[$k]['report_template_name'] = $ReportTemplate->where("id",$v['report_template'])->value("name"); $resultData[$k]['many_report_template_name'] = $ReportTemplate->where("id",$v['many_report_template'])->value("name"); } } return $this->buildSuccess($resultData); } /** * 产品设置详情--修改调用接口 * @author cavan * */ public function ProductDetails(){ $id = $this->request->post('id', '', 'trim'); if(!$id){ return $this->buildFailed("缺少参数id"); } $Product = new Product(); $ProductItem = new ProductItem(); $Attachment = new Attachment(); $ReportTemplate = new ReportTemplate(); //主表信息 $list = $Product->where("id",$id) ->field("id,bank,bank_id,product_name,charging_object,charging_method,report_template,report_cost,type,many_report_template") ->find(); if(!empty($list)){ if($list['charging_method'] == 2){ $list['json_data'] = $ProductItem->where("product_id",$id)->where("type",1)->field("id,product_id,type,tvoa_rise,tvoa_stop,money,ratio,minimum_standard_amount,minimum_standard_ratio,extra_charge")->select(); $list['business_json_data'] = $ProductItem->where("product_id",$id)->where("type",2)->field("id,product_id,type,tvoa_rise,tvoa_stop,money,ratio,minimum_standard_amount,minimum_standard_ratio,extra_charge")->select(); }else{ $list['json_data'] = $ProductItem->where("product_id",$id)->field("id,product_id,type,tvoa_rise,tvoa_stop,money,ratio,minimum_standard_amount,minimum_standard_ratio,extra_charge")->select(); } if(!empty($list['json_data'])){ foreach ($list['json_data'] as $kj => $vj){ $list['json_data'][$kj]['money'] = is_null($vj['money'])?"":$vj['money']; $list['json_data'][$kj]['ratio'] = is_null($vj['ratio'])?"":$vj['ratio']; $list['json_data'][$kj]['minimum_standard_amount'] = is_null($vj['minimum_standard_amount'])?"":$vj['minimum_standard_amount']; $list['json_data'][$kj]['minimum_standard_ratio'] = is_null($vj['minimum_standard_ratio'])?"":$vj['minimum_standard_ratio']; } } if(!empty($list['business_json_data'])){ foreach ($list['business_json_data'] as $kb => $vb){ $list['json_data'][$kb]['money'] = is_null($vb['money'])?"":$vb['money']; $list['json_data'][$kb]['ratio'] = is_null($vb['ratio'])?"":$vb['ratio']; $list['json_data'][$kb]['minimum_standard_amount'] = is_null($vb['minimum_standard_amount'])?"":$vb['minimum_standard_amount']; $list['json_data'][$kb]['minimum_standard_ratio'] = is_null($vb['minimum_standard_ratio'])?"":$vb['minimum_standard_ratio']; } } $list['report_template_name'] = $ReportTemplate->where("id",$list['report_template'])->value("name"); $list['type_name'] = ($list['type'] == 1)?"住宅":(($list['type'] == 2)?"商业":""); $list['many_report_template_name'] = $ReportTemplate->where("id",$list['many_report_template'])->value("name"); } return $this->buildSuccess($list); } /** * 产品设置状态修改 * @author cavan * * @parameter id 数据id * @parameter state 当前状态 */ public function ProductModify(){ $id = $this->request->post('id', '', 'trim'); //数据id $state = $this->request->post('state', '','trim'); //当前状态 if(!$id){ return $this->buildFailed("缺少参数id"); } if(!$state){ return $this->buildFailed("缺少参数状态值"); } $Product = new Product(); // if($state != 1){ //2020年4月22日09:02:40 $rt = $Product->where("id",$id)->field("bank_id,product_name,type")->find(); $old_id = $Product->where("id","<>",$id)->where(["bank_id"=>$rt['bank_id'],"product_name"=>$rt['product_name'],"type"=>$rt['type'],"state"=>1])->value("id"); if($old_id){ return $this->buildFailed("已经存在该银行同一产品信息"); } } $update_data = array(); if($state == 1){ $update_data['state'] = 2; $msg = "禁用成功"; $errormsg = "禁用失败"; }else{ $update_data['state'] = 1; $msg = "启用成功"; $errormsg = "启用失败"; } $do = $Product->where("id",$id)->update($update_data); if($do > 0){ return $this->buildSuccess("",$msg); }else{ return $this->buildFailed($errormsg); } } /** * 新增计税银行税费设置 * @author cavan * * @parameter bank_id 银行id * @parameter product_name 产品名称 * @parameter type 业务类型 * @parameter charging_object 收费对象 * @parameter charging_method 收费方式 * @parameter report_template 报告模板id * @parameter report_cost 报告工本费 * @parameter json_data 收费规则 (charging_method 为2时代表住宅收费规则) * @parameter business_json_data 收费规则 (charging_method 为2时代表商业收费规则) */ public function save() { $id = $this->request->post('id', '', 'trim'); $bank_id = $this->request->post('bank_id', '', 'trim'); $product_name = $this->request->post('product_name', '', 'trim'); $type = $this->request->post('type', '', 'trim'); $charging_object = $this->request->post('charging_object', '', 'trim'); $charging_method = $this->request->post('charging_method', '', 'trim'); $report_template = $this->request->post('report_template', '', 'trim'); $many_report_template = $this->request->post('many_report_template', '', 'trim'); $report_cost = $this->request->post('report_cost', '', 'trim'); $json_data = $this->request->post('json_data', '', 'trim'); $business_json_data = $this->request->post('business_json_data', '', 'trim'); if (!$bank_id) { return $this->buildFailed("缺少银行信息"); } if (!$product_name) { return $this->buildFailed("缺少产品名称"); } if (!$type) { return $this->buildFailed("业务类型为必选项"); } if ($charging_object && $charging_object === "") { return $this->buildFailed("缺少收费对象"); } if (!$charging_method) { return $this->buildFailed("缺少收费方式"); } if (!$report_template) { return $this->buildFailed("请选择单套报告模板"); } if (!$many_report_template) { return $this->buildFailed("请选择多套报告模板"); } if (!$report_cost) { return $this->buildFailed("缺少报告工本费"); } if (empty($json_data)) { return $this->buildFailed("缺少收费规则信息"); } if($charging_method == 2){ if (empty($business_json_data)) { return $this->buildFailed("缺少收费规则信息"); } } // $json_data = json_decode($json_data,true); $Product = new Product(); $ProductItem = new ProductItem(); if($charging_method == 2){ $json_data = array_merge($json_data,$business_json_data); } if (!$id){ $return = $Product->where("id","<>",$id)->where(['bank_id' => $bank_id, 'product_name' => $product_name, 'type' => $type, 'state' => 1])->value("id"); if ($return) { return $this->buildFailed("该银行已存在有效状态的产品设置"); } } if(!empty($json_data)){ foreach ($json_data as $k => $v){ if($charging_method == 3){ if(!array_key_exists("type",$v)){ return $this->buildFailed("类型不能为空"); }else if(!array_key_exists("money",$v)){ return $this->buildFailed("金额不能为空"); } }else if($charging_method == 4){ if(!array_key_exists("money",$v)){ return $this->buildFailed("金额不能为空"); }else if(!array_key_exists("extra_charge",$v)){ return $this->buildFailed("增加一套加收费不能为空"); } }else{ if(!array_key_exists("tvoa_rise",$v) && !array_key_exists("tvoa_stop",$v)){ return $this->buildFailed("评估总值-起止必须存在一个值"); }else if(!array_key_exists("money",$v) && !array_key_exists("ratio",$v)){ return $this->buildFailed("金额和比率必须存在一个值"); } $tvoa_rise = $v['tvoa_rise']; $tvoa_stop = $v['tvoa_stop']; $money = $v['money']; $ratio = $v['ratio']; if($tvoa_rise <= 0 && $tvoa_stop <= 0){ return $this->buildFailed("评估总值-起止必须存在一个值为有效数值"); } if($money === "" && $ratio === ""){ return $this->buildFailed("金额和比率必须存在一个值为有效数值"); } } } } $bank = Db::name("bank")->where("id",$bank_id)->value("name"); $insert_data['bank'] = $bank; $insert_data['bank_id'] = $bank_id; $insert_data['product_name'] = $product_name; $insert_data['type'] = $type; $insert_data['charging_object'] = $charging_object; $insert_data['charging_method'] = $charging_method; $insert_data['report_template'] = $report_template; $insert_data['many_report_template'] = $many_report_template; $insert_data['report_cost'] = $report_cost; $insert_data['state'] = 1; Db::startTrans(); try { if($id){ $old_id = $Product->where("id","<>",$id)->where(["bank_id"=>$bank_id,"product_name"=>$product_name,"type"=>$type,"state"=>1])->value("id"); if($old_id){ return $this->buildFailed("该银行已存在有效状态的产品设置"); } $insert_data['update_time'] = time(); $Product->where("id",$id)->update($insert_data); $ids = $ProductItem->where("product_id",$id)->column("id"); if(!empty($json_data)) { foreach ($json_data as $k => $v) { $item_data = array(); if ($charging_method == 2) { //评估总值物业区间 $item_data['type'] = !empty($v['type']) ? $v['type'] : ""; $item_data['tvoa_rise'] = (!$v['tvoa_rise'] && $v['tvoa_rise'] === "") ? null : $v['tvoa_rise']; $item_data['tvoa_stop'] = (!$v['tvoa_stop'] && $v['tvoa_stop'] === "") ? null : $v['tvoa_stop']; $item_data['money'] = (!$v['money'] && $v['money'] === "") ? null : $v['money']; $item_data['ratio'] = (!$v['ratio'] && $v['ratio'] === "") ? null : $v['ratio']; $item_data['minimum_standard_amount'] = (!$v['minimum_standard_amount'] && $v['minimum_standard_amount'] === "") ? null : $v['minimum_standard_amount']; $item_data['minimum_standard_ratio'] = (!$v['minimum_standard_ratio'] && $v['minimum_standard_ratio'] === "") ? null : $v['minimum_standard_ratio']; } elseif ($charging_method == 3) { //物业类型 $item_data['money'] = (!$v['money'] && $v['money'] === "") ? null : $v['money']; $item_data['type'] = !empty($v['type']) ? $v['type'] : ""; } else if ($charging_method == 4) { //单笔 $item_data['extra_charge'] = (!$v['extra_charge'] && $v['extra_charge'] === "")?null:$v['extra_charge']; $item_data['money'] = (!$v['money'] && $v['money'] === "") ? null : $v['money']; } else { //评估总值区间、单套评估总值 $item_data['tvoa_rise'] = (!$v['tvoa_rise'] && $v['tvoa_rise'] === "") ? null : $v['tvoa_rise']; $item_data['tvoa_stop'] = (!$v['tvoa_stop'] && $v['tvoa_stop'] === "") ? null : $v['tvoa_stop']; $item_data['money'] = (!$v['money'] && $v['money'] === "") ? null : $v['money']; $item_data['ratio'] = (!$v['ratio'] && $v['ratio'] === "") ? null : $v['ratio']; $item_data['minimum_standard_amount'] = (!$v['minimum_standard_amount'] && $v['minimum_standard_amount'] === "") ? null : $v['minimum_standard_amount']; $item_data['minimum_standard_ratio'] = (!$v['minimum_standard_ratio'] && $v['minimum_standard_ratio'] === "") ? null : $v['minimum_standard_ratio']; } $item_data['create_time'] = time(); if (!empty($v['id'])) { if (in_array($v['id'], $ids)) { foreach ($ids as $ks => $vs) { if ($v['id'] == $vs) unset($ids[$ks]); } $ids = array_merge($ids); } $ProductItem->where("id", $v['id'])->update($item_data); } else { $item_data['product_id'] = $id; $ProductItem->insert($item_data); } } if (!empty($ids)) { $idstr = implode(",", $ids); $ProductItem->where("id", "in", $idstr)->delete(); } } $msg = "编辑成功"; // 提交事务 Db::commit(); }else{ $insert_data['create_time'] = time(); $id = $Product->insertGetId($insert_data); if($id > 0){ if(!empty($json_data)){ $item_data = array(); foreach ($json_data as $k =>$v){ $item_data[$k]['product_id'] = $id; if($charging_method == 2){ //评估总值物业区间 $item_data[$k]['type'] = !empty($v['type'])?$v['type']:""; $item_data[$k]['tvoa_rise'] = (!$v['tvoa_rise'] && $v['tvoa_rise'] === "")?null:$v['tvoa_rise']; $item_data[$k]['tvoa_stop'] = (!$v['tvoa_stop'] && $v['tvoa_stop'] === "")?null:$v['tvoa_stop']; $item_data[$k]['money'] = (!$v['money'] && $v['money'] === "")?null:$v['money']; $item_data[$k]['ratio'] = (!$v['ratio'] && $v['ratio'] === "")?null:$v['ratio']; $item_data[$k]['minimum_standard_amount'] = (!$v['minimum_standard_amount'] && $v['minimum_standard_amount'] === "")?null:$v['minimum_standard_amount']; $item_data[$k]['minimum_standard_ratio'] = (!$v['minimum_standard_ratio'] && $v['minimum_standard_ratio'] === "")?null:$v['minimum_standard_ratio']; }elseif($charging_method == 3){ //物业类型 $item_data[$k]['money'] = (!$v['money'] && $v['money'] === "")?null:$v['money']; $item_data[$k]['type'] = !empty($v['type'])?$v['type']:""; }else if($charging_method == 4){ //单笔 $item_data[$k]['extra_charge'] = (!$v['extra_charge'] && $v['extra_charge'] === "")?null:$v['extra_charge']; $item_data[$k]['money'] = (!$v['money'] && $v['money'] === "")?null:$v['money']; }else{ //评估总值区间、单套评估总值 $item_data[$k]['tvoa_rise'] = (!$v['tvoa_rise'] && $v['tvoa_rise'] === "")?null:$v['tvoa_rise']; $item_data[$k]['tvoa_stop'] = (!$v['tvoa_stop'] && $v['tvoa_stop'] === "")?null:$v['tvoa_stop']; $item_data[$k]['money'] = (!$v['money'] && $v['money'] === "")?null:$v['money']; $item_data[$k]['ratio'] = (!$v['ratio'] && $v['ratio'] === "")?null:$v['ratio']; $item_data[$k]['minimum_standard_amount'] = (!$v['minimum_standard_amount'] && $v['minimum_standard_amount'] === "")?null:$v['minimum_standard_amount']; $item_data[$k]['minimum_standard_ratio'] = (!$v['minimum_standard_ratio'] && $v['minimum_standard_ratio'] === "")?null:$v['minimum_standard_ratio']; } $item_data[$k]['create_time'] = time(); } $ProductItem->insertAll($item_data); } } $msg = "保存成功"; // 提交事务 Db::commit(); } } catch (\Exception $e) { // 回滚事务 Db::rollback(); return $e->getMessage(); } return $this->buildSuccess([],$msg); } /** * 报告模板列表 * */ public function ReportTemplateList(){ $ReportTemplate = new ReportTemplate(); $list = $ReportTemplate->where("status",1)->where("type",1)->field("id as value,name")->select(); return $this->buildSuccess($list); } }