TaskSystem/app/common/model/informationg/UserInformationg.php
2023-08-07 15:13:34 +08:00

162 lines
5.5 KiB
PHP

<?php
namespace app\common\model\informationg;
use app\common\model\BaseModel;
use think\facade\Db;
use think\facade\Log;
use app\common\logic\BaseLogic;
use app\common\model\Company;
use app\common\model\user\User;
class UserInformationg extends BaseModel
{
/**
* @notes 关联商机信息
* @return \think\model\relation\HasOne
* @author likeadmin
* @date 2023/08/01 15:00
*/
public function informationInfo()
{
return $this->hasOne(\app\common\model\informationg\UserInformationgDemand::class, 'information_id', 'id');
}
public function getExtendAttr($valur,$data){
$company_name=Company::where('id',$data['company_id'])->value('company_name');
$nickname=User::where('id',$data['create_user_id'])->value('nickname');
return [
'company_name'=>$company_name,
'nickname'=>$nickname
];
}
public static function list($param, $page = 1, $size = 10)
{
return self::where($param)->with('company')
->field('id,area_id,area_id as area_name,street_id,street_id as street_name,village_id,village_id as village_name, street_id as street_name,brigade_id,brigade_id as brigade_name,name,phone,age,address,create_time,update_time')
->order('id','desc')
->page($page)->limit($size)->select();
}
public static function add($param)
{
$family_json = json_encode($param['family']);
$child_arr_json = json_encode($param['child_arr']);
// 插入数据
$data = [
'create_user_id' => $param['admin_id'],
'company_id' => $param['company_id'],
'name' => $param['name'],
'phone' => $param['phone'],
'age' => $param['age'],
'sex'=>$param['sex'],
'id_card'=>$param['id_card'],
'wechat' => $param['wechat'],
'area_id' => $param['area_id'],
'street_id' => $param['street_id'],
'village_id' => $param['village_id'],
'brigade_id' => $param['brigade_id'],
'address' => $param['address'],
'family' => $family_json,
'child' => $param['child'],
'child_arr' => $child_arr_json,
];
Db::startTrans();
try {
$result = self::create($data);
// foreach ($param['datas'] as $k => $v) {
// self::informationg_demand($v, $result['id'], $param['admin_id']);
// }
// switch($param['data_type']){
// case 1:
// self::informationg_demand($param,$result['id']);
// break;
// }
Db::commit();
} catch (\Exception $e) {
Db::rollback();
BaseLogic::setError($e->getMessage());
return false;
}
return true;
}
public static function informationg_demand($param, $id, $admin_id)
{
if(isset($param['card_id']) &&$param['card_id'] >0){
$category_id=Db::name('category_business')->where('id',$param['card_id'])->value('pid');
$category_child=$param['card_id'];
}else{
$category_id=0;
$category_child=0;
}
$data = [
'create_user_id' => $admin_id,
'category_id' => $category_id,
'category_child' => $category_child,
'data' => json_encode($param['datas']),
'create_time' => time(),
'update_time' => time(),
'status' => 1,
'information_id' => $id,
];
return UserInformationgDemand::create($data);
}
public static function details($id)
{
$item = self::where('id', $id)->field('*,area_id area_name,street_id street_name,village_id village_name,brigade_id brigade_name')->find();
$item['family'] = json_decode($item['family'], true);
$item['child_arr'] = json_decode($item['child_arr'], true);
$data = UserInformationgDemand::where('information_id', $id)->order('id', 'desc')->select();
$item['datas'] = [];
$datas = [];
if ($data) {
foreach ($data as $k => $v) {
$a = json_decode($v['data'], true);
$arr = [
'id' => $v['category_child'],
'update_time'=>$v['update_time'],
'datas' => $a
];
if ($a) {
array_push($datas, $arr);
}
}
$item['datas'] = $datas;
}
return $item;
}
public function company()
{
return $this->hasOne(Company::class, 'id', 'company_id')->field(['id', 'company_name', 'admin_id']);
}
public function getCityNameAttr($value)
{
return Db::name('geo_city')->where(['city_code' => $this->city])->value('city_name');
}
public function getAreaNameAttr($value)
{
return Db::name('geo_area')->where(['area_code' => $this->area_id])->value('area_name');
}
public function getStreetNameAttr($value)
{
return Db::name('geo_street')->where(['street_code' => $this->street_id])->value('street_name');
}
public function getVillageNameAttr($value)
{
return Db::name('geo_village')->where(['village_code' => $this->village_id])->value('village_name');
}
public function getBrigadeNameAttr($value)
{
return Db::name('geo_brigade')->where(['id' => $this->brigade_id])->value('brigade_name');
}
}