2023-07-29 15:57:31 +08:00
< ? php
2023-08-01 15:41:14 +08:00
namespace app\common\model\informationg ;
2023-07-29 15:57:31 +08:00
use app\common\model\BaseModel ;
use think\facade\Db ;
use think\facade\Log ;
use app\common\logic\BaseLogic ;
2023-07-31 17:01:03 +08:00
use app\common\model\Company ;
2023-08-07 12:00:27 +08:00
use app\common\model\user\User ;
2023-10-14 16:47:25 +08:00
use app\job\AiAianalyse ;
2023-07-29 15:57:31 +08:00
class UserInformationg extends BaseModel
{
2023-08-01 15:41:14 +08:00
/**
* @ 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' );
}
2023-07-29 15:57:31 +08:00
2023-08-09 15:44:41 +08:00
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' );
2023-08-07 12:00:27 +08:00
return [
2023-08-09 15:44:41 +08:00
'company_name' => $company_name ,
'nickname' => $nickname
2023-08-07 12:00:27 +08:00
];
}
2023-08-01 15:41:14 +08:00
public static function list ( $param , $page = 1 , $size = 10 )
{
2023-07-31 17:01:03 +08:00
return self :: where ( $param ) -> with ( 'company' )
2023-08-01 15:41:14 +08:00
-> 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' )
2023-08-23 16:57:19 +08:00
-> order ( 'update_time' , 'desc' )
2023-08-01 15:41:14 +08:00
-> page ( $page ) -> limit ( $size ) -> select ();
2023-07-29 15:57:31 +08:00
}
public static function add ( $param )
{
$family_json = json_encode ( $param [ 'family' ]);
$child_arr_json = json_encode ( $param [ 'child_arr' ]);
// 插入数据
$data = [
2023-08-01 15:41:14 +08:00
'create_user_id' => $param [ 'admin_id' ],
2023-08-07 15:13:34 +08:00
'company_id' => $param [ 'company_id' ],
2023-07-29 15:57:31 +08:00
'name' => $param [ 'name' ],
'phone' => $param [ 'phone' ],
'age' => $param [ 'age' ],
2023-08-09 15:44:41 +08:00
'sex' => $param [ 'sex' ],
'id_card' => $param [ 'id_card' ],
2023-07-29 15:57:31 +08:00
'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 ();
2023-08-01 15:41:14 +08:00
try {
2023-07-29 15:57:31 +08:00
$result = self :: create ( $data );
2023-08-07 09:36:32 +08:00
// foreach ($param['datas'] as $k => $v) {
// self::informationg_demand($v, $result['id'], $param['admin_id']);
// }
2023-07-31 15:06:51 +08:00
// switch($param['data_type']){
// case 1:
// self::informationg_demand($param,$result['id']);
// break;
// }
2023-07-29 15:57:31 +08:00
Db :: commit ();
2023-08-01 15:41:14 +08:00
} catch ( \Exception $e ) {
2023-07-29 15:57:31 +08:00
Db :: rollback ();
BaseLogic :: setError ( $e -> getMessage ());
return false ;
}
return true ;
}
2023-08-01 15:41:14 +08:00
public static function informationg_demand ( $param , $id , $admin_id )
{
2023-10-14 10:38:51 +08:00
$data_field = [];
2023-08-09 15:44:41 +08:00
if ( isset ( $param [ 'card_id' ]) && $param [ 'card_id' ] > 0 ) {
2023-10-14 09:40:04 +08:00
$category_info = Db :: name ( 'category_business' ) -> where ( 'id' , $param [ 'card_id' ]) -> field ([ 'pid' , 'data_field' ]) -> find ();
2023-08-09 15:44:41 +08:00
$category_child = $param [ 'card_id' ];
2023-10-14 10:38:51 +08:00
$field_array = json_decode ( $category_info [ 'data_field' ], true );
if ( ! empty ( $field_array ) && is_array ( $field_array )) {
2023-10-14 11:56:12 +08:00
// 拼装词语
2023-10-14 10:38:51 +08:00
foreach ( $param [ 'datas' ] as $k => $v ) {
if ( ! empty ( $field_array [ $k ][ 'text' ])) {
$key = $field_array [ $k ][ 'text' ];
if ( ! empty ( $field_array [ $k ][ 'enum' ])) {
$data_field [ $key ] = $field_array [ $k ][ 'enum' ][ $v ] ? ? '' ;
} else {
$data_field [ $key ] = $v ;
}
}
}
}
2023-08-09 15:44:41 +08:00
} else {
$category_id = 0 ;
$category_child = 0 ;
2023-08-01 17:19:30 +08:00
}
2023-08-01 15:41:14 +08:00
$data = [
'create_user_id' => $admin_id ,
2023-10-14 09:35:09 +08:00
'category_id' => $category_info [ 'pid' ] ? ? 0 ,
2023-08-01 17:19:30 +08:00
'category_child' => $category_child ,
2023-08-01 15:41:14 +08:00
'data' => json_encode ( $param [ 'datas' ]),
2023-10-14 10:43:01 +08:00
'data_field' => json_encode ( $data_field ),
2023-08-01 15:41:14 +08:00
'create_time' => time (),
'update_time' => time (),
'status' => 1 ,
'information_id' => $id ,
2023-07-29 15:57:31 +08:00
];
2023-10-14 17:24:49 +08:00
$res = UserInformationgDemand :: create ( $data );
if ( $res ) {
queue ( AiAianalyse :: class , $data );
}
return $res ;
2023-07-29 15:57:31 +08:00
}
2023-07-31 17:01:03 +08:00
2023-08-01 15:41:14 +08:00
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 );
2023-10-07 17:12:43 +08:00
$data = UserInformationgDemand :: where ( 'information_id' , $id ) -> order ( 'id' , 'desc' ) -> select () -> toArray ();
2023-08-01 15:41:14 +08:00
$item [ 'datas' ] = [];
$datas = [];
if ( $data ) {
foreach ( $data as $k => $v ) {
$arr = [
2023-08-01 17:19:30 +08:00
'id' => $v [ 'category_child' ],
2023-08-09 15:44:41 +08:00
'update_time' => $v [ 'update_time' ],
2023-10-16 14:09:55 +08:00
'datas' => $v [ 'data' ],
'data_field' => json_decode ( $v [ 'data_field' ]),
'ai_question' => $v [ 'ai_question' ],
'ai_aianalyse' => $v [ 'ai_aianalyse' ],
2023-07-31 17:01:03 +08:00
];
2023-10-07 17:12:43 +08:00
if ( $v [ 'data' ]) {
2023-08-01 15:41:14 +08:00
array_push ( $datas , $arr );
2023-07-31 17:01:03 +08:00
}
}
2023-08-01 15:41:14 +08:00
$item [ 'datas' ] = $datas ;
2023-07-31 17:01:03 +08:00
}
return $item ;
}
2023-10-16 11:30:57 +08:00
public static function business_opportunity ( $informationg_id_array )
{
$demand_id_array = UserInformationgDemand :: whereIn ( 'information_id' , $informationg_id_array ) -> where ( 'status' , 1 ) -> field ([ 'max(id) as demand_id' ]) -> group ( 'information_id' ) -> select () -> column ( 'demand_id' );
$data = UserInformationgDemand :: whereIn ( 'id' , $demand_id_array ) -> column ( '*' , 'information_id' );
foreach ( $data as & $item ) {
$item [ 'data' ] = json_decode ( $item [ 'data' ], true );
$item [ 'data_field' ] = json_decode ( $item [ 'data_field' ], true );
$item [ 'relation_goods' ] = [];
}
unset ( $item );
return $data ;
}
2023-07-31 17:01:03 +08:00
public function company ()
{
2023-08-01 15:41:14 +08:00
return $this -> hasOne ( Company :: class , 'id' , 'company_id' ) -> field ([ 'id' , 'company_name' , 'admin_id' ]);
2023-07-31 17:01:03 +08:00
}
public function getCityNameAttr ( $value )
{
return Db :: name ( 'geo_city' ) -> where ([ 'city_code' => $this -> city ]) -> value ( 'city_name' );
}
public function getAreaNameAttr ( $value )
{
2023-08-01 14:37:06 +08:00
return Db :: name ( 'geo_area' ) -> where ([ 'area_code' => $this -> area_id ]) -> value ( 'area_name' );
2023-07-31 17:01:03 +08:00
}
public function getStreetNameAttr ( $value )
{
2023-08-01 14:37:06 +08:00
return Db :: name ( 'geo_street' ) -> where ([ 'street_code' => $this -> street_id ]) -> value ( 'street_name' );
}
public function getVillageNameAttr ( $value )
{
2023-08-01 15:43:42 +08:00
return Db :: name ( 'geo_village' ) -> where ([ 'village_code' => $this -> village_id ]) -> value ( 'village_name' );
2023-08-01 14:37:06 +08:00
}
public function getBrigadeNameAttr ( $value )
{
2023-08-12 16:58:40 +08:00
return Db :: name ( 'geo_brigade' ) -> where ( 'id' , $this -> brigade_id ) -> value ( 'brigade_name' );
2023-07-31 17:01:03 +08:00
}
2023-07-29 15:57:31 +08:00
}