王总上门按摩后台代码
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

2561 lines
93 KiB

<?php
namespace app\card\controller;
use app\Activity\controller\WxAppActivityItem;
use app\admin\info\PermissionAdmin;
use app\ApiRest;
use app\boss\info\PermissionBoss;
use app\card\model\CardBoss;
use app\card\model\CardCount;
use app\card\model\CardCoupon;
use app\card\model\CardCouponRecord;
use app\card\model\CardExtension;
use app\card\model\CardFormId;
use app\card\model\CardJob;
use app\card\model\CardTags;
use app\card\model\CardType;
use app\card\model\CardUserLabel;
use app\card\model\CardUserTags;
use app\card\model\Collection;
use app\card\model\Company;
use app\card\model\Config;
use app\card\model\DefaultSetting;
use app\card\model\Job;
use app\card\model\User;
use app\card\model\UserInfo;
use app\card\model\UserPhone;
use app\card\model\UserSk;
use app\Common\model\LongbingCardFromId;
use app\company\model\CardCompany;
use app\diy\model\DiyModel;
use app\radar\model\RadarCount;
use app\shop\model\IndexCoupon;
use app\shop\model\IndexUserInfo;
use app\shop\model\IndexShopCollage;
use app\website\model\CardTimelineComment;
use longbingcore\permissions\Tabbar;
use longbingcore\wxcore\WxSetting;
use think\App;
use think\facade\Cache;
use think\facade\Db;
use function Qiniu\explodeUpToken;
class Index extends ApiRest
{
protected $modelUser;
protected $modelUserInfo;
protected $modelCollection;
protected $modelCompany;
protected $modelConfig;
protected $app;
protected $noNeedLogin = ['getWxCodeData'];
// 继承 验证用户登陆
public function __construct ( App $app )
{
parent::__construct( $app );
$this->app = $app;
$this->modelUser = new User();
$this->modelUserInfo = new UserInfo();
$this->modelCollection = new Collection();
$this->modelCompany = new Company();
$this->modelConfig = new Config();
//$this->_user_id = '2';
}
/**
* @Purpose: 清除缓存
*
* @Method:GET
*
* @Author: zzf
*
* @Return: mixed 查询返回值(结果集对象)
*/
public function clearCacheData ()
{
clearCache( $this->_uniacid );
return $this->success( [] );
}
/**
* @Purpose: 用户在小程序授权之后跟新信息
*
* @Method:POST
*
* @Author: zzf
*
* @Return: mixed 查询返回值(结果集对象)
*/
public function updateWechatInfo ()
{
$userId = $this->getUserId();
$userInfo = $this->getUserInfo();
$verify = [ 'avatarUrl' => '', 'city' => '', 'country' => '', 'gender' => '', 'language' => '', 'nickName' => '',
'province' => '' ];
$params = lbGetParamVerify( $this->_input, $verify );
$result = User::update( $params, [ 'id' => $userId ] );
if ( $result === false )
{
return $this->error( 'update failed' );
}
$key = 'longbing_user_autograph_' . $userId;
$key = md5( $key );
$userInfo[ 'need_auth' ] = 0;
setCache( $key, $userInfo, 3600, $this->_uniacid );
if(!empty($params))
{
$user = longbingGetUser($userId ,$this->_uniacid);
if(!empty($user)){
if(isset($params['avatarUrl']) && !empty($params['avatarUrl'])) $user['avatarUrl'] = $params['avatarUrl'];
if(isset($params['city']) && !empty($params['city'])) $user['city'] = $params['city'];
if(isset($params['country']) && !empty($params['country'])) $user['country'] = $params['country'];
if(isset($params['gender']) && !empty($params['gender'])) $user['gender'] = $params['gender'];
if(isset($params['language']) && !empty($params['language'])) $user['language'] = $params['language'];
if(isset($params['nickName']) && !empty($params['nickName'])) $user['nickName'] = $params['nickName'];
if(isset($params['province']) && !empty($params['avataprovincerUrl'])) $user['province'] = $params['province'];
if(!in_array($user['avatarUrl'] ,[$this->defaultImage['avatar']]) && !empty($user['avatarUrl'])) $user[ 'need_auth' ] = 0;
longbingSetUser($userId ,$this->_uniacid ,$user);
}
}
return $this->success( [] );
}
/**
* @Purpose: 个人中心
*
* @Author: zzf
*
* @Return: mixed 查询返回值(结果集对象)
*/
public function userCenter()
{
$userInfo = $this->getUserInfo();
$userId = $this->getUserId();
$userInfo = longbingGetUser($userId, $this->_uniacid);
// $modelCompany = new Company();
// $company = $modelCompany->getInfo($this->_uniacid, $userId, 0);
$page = isset( $this->_param[ 'page' ] ) ? $this->_param[ 'page' ] : 1;
// 判断有没有浏览过名片
$checkCollection = $this->modelCollection->where( [ [ 'uniacid', '=', $this->_uniacid ], [ 'uid', '=', $userId ],
[ 'status', '=', 1 ] ]
)
->count();
// 浏览过名片,返回已绑定的名片列表
if ( $checkCollection )
{
$cardList = $this->modelCollection->bindCardList( $userId, $userInfo, $page, $this->_uniacid );
}
// 没有浏览过名片返回推荐名片列表
else
{
$cardList = $this->modelCollection->defaultCardList( $page, $this->_uniacid ,$userId);
}
// $cardList['company_info'] = $company;
$cardList['is_staff'] = $userInfo['is_staff'];
return $this->success( $cardList, 200 );
}
/**
* @Purpose: 用户信息
*
* @Author: zzf
*
* @Return: mixed 查询返回值(结果集对象)
*/
public function userInfo ()
{
$uniacid = $this->_uniacid;
$permissionAdmin = new PermissionAdmin($this->_uniacid);
$longbing_auth_mini = $permissionAdmin->getAuthNumber();
$userModel = new User();
$userInfoModel = new UserInfo();
$cardCountModel = new CardCount();
//By.jingshuixian 2020年4月21日12:12:53
//解决微擎版本同一个域名授权问题
if($this->_is_weiqin ){
$app_model_name = APP_MODEL_NAME;
$wxapp = Db::name('account')
->alias('a')
->join('wxapp_versions v' , 'a.uniacid = v.uniacid')
->join('account_wxapp account_wxapp' , 'a.uniacid = account_wxapp.uniacid')
->field(['account_wxapp.name as mini_name', 'account_wxapp.uniacid as modular_id' , 'account_wxapp.uniacid' ])
->where([ ['v.modules', 'like', "%{$app_model_name}%"] , ['a.type', '=', 4] ,['a.isdeleted', '=', 0] ])
->group('account_wxapp.uniacid')
->order('account_wxapp.uniacid asc')
->select()
->toArray();
$check_mini_user_count = count($wxapp) ;
if ( $check_mini_user_count > $longbing_auth_mini) {
foreach ($wxapp as $index => $item) {
$now = $index + 1;
if ($item['uniacid'] == $uniacid && $now > $longbing_auth_mini) {
$msg = '小程序数量达到上限! 请联系管理员(' . $check_mini_user_count . '-' . $longbing_auth_mini.')';
//echo json_encode(['code' => 402, 'error' => $msg]);
//exit;
return $this->error( $msg , 402);
}
}
}
}else{
$check_mini_user = $userModel
->field('uniacid')
->group('uniacid')
->order('id asc')
->select();
$check_mini_user_count = count($check_mini_user);
if ($check_mini_user_count > $longbing_auth_mini) {
foreach ($check_mini_user as $index => $item) {
$now = $index + 1;
if ($item['uniacid'] == $uniacid && $now > $longbing_auth_mini) {
$msg = '小程序数量达到上限! 请联系管理员' . $check_mini_user_count . '-' . $longbing_auth_mini;
//echo json_encode(['code' => 402, 'error' => $msg]);
//exit;
return $this->error( $msg , 402);
}
}
}
$check_mini_info = $userInfoModel
->field('uniacid')
->group('uniacid')
->order('id asc')
->select();
$check_mini_info_count = count($check_mini_user);
if ($check_mini_info_count > $longbing_auth_mini) {
foreach ($check_mini_info as $index => $item) {
$now = $index + 1;
if ($item['uniacid'] == $uniacid && $now > $longbing_auth_mini) {
$msg = '小程序数量达到上限!! 请联系管理员' . $check_mini_info_count . '-' . $longbing_auth_mini;
//echo json_encode(['code' => 402, 'error' => $msg]);
//exit;
return $this->error( $msg , 402);
}
}
}
$check_mini_count = $cardCountModel
->field('uniacid')
->group('uniacid')
->order('id asc')
->select();
$check_mini_count_count = count($check_mini_user);
if ($check_mini_count_count > $longbing_auth_mini) {
foreach ($check_mini_count as $index => $item) {
$now = $index + 1;
// longbingDebugOneService('now ' . $now . 'uniacid '. $item[ 'uniacid' ]);
if ($item['uniacid'] == $uniacid && $now > $longbing_auth_mini) {
$msg = '小程序数量达到上限!!! 请联系管理员' . $check_mini_count_count . '-' . $longbing_auth_mini;
//echo json_encode(['code' => 402, 'error' => $msg]);
//exit;
return $this->error( $msg , 402);
}
}
}
}
$user_id = $this->getUserId();
$userInfo = longbingGetUser($user_id, $this->_uniacid);
//最后访问的名片处理
if (!empty($userInfo) && isset($userInfo['last_staff_id'])) {
//判断last_staff_id是否是员工 chenniang
$staff_user = $userModel->where(['id'=>$userInfo['last_staff_id'],'is_staff'=>1])->count();
//如果不是
if(empty($staff_user)){
//模型
$collectionModel = new Collection();
//分配一个
$user['last_staff_id'] = $collectionModel->getCard($user_id,$uniacid);
//从新获取信息
$userInfo = longbingGetUser($user_id, $this->_uniacid);
}
}
$userInfo['cardInfo'] = [];
//是员工则把名片信息查出来
if (isset($userInfo['is_staff']) && $userInfo['is_staff'] == 1) {
$key = 'longbing_user_card_info_' . $userInfo['id'];
// $value = getCache( $key, $this->_uniacid );
$value = [];
if ($value && false) {
$value['from_cache'] = 1;
$userInfo['cardInfo'] = $value;
} else {
// $cardInfo = UserInfo::where( [ [ 'fans_id', '=', $userInfo[ 'id' ] ] ] )
// ->find();
$cardInfo = longbingGetUserInfo($user_id, $this->_uniacid);
if ($cardInfo) {
// $cardInfo = $cardInfo->toArray();
$job = Job::where([['id', '=', $cardInfo['job_id']]])
->find();
if (!$job) {
$cardInfo['job_name'] = '未设置职位';
} else {
$job = $job->toArray();
$cardInfo['job_name'] = $job['name'];
}
$cardInfo = transImages($cardInfo, ['images'], ',');
$cardInfo = transImagesOne($cardInfo, ['avatar', 'voice', 'my_url', 'my_video', 'my_video_cover', 'bg',
'vr_cover', 'vr_path']
);
if (isset($cardInfo['my_video']) && is_array($cardInfo['my_video']) && !empty($cardInfo['my_video'])) {
$cardInfo['my_video_vid'] = lbGetTencentVideo($cardInfo['my_video'][0]);
}
$modelCount = new RadarCount();
list($viewCount, $thumbCount) = $modelCount->RadarNumber($userInfo['id'], $this->_uniacid);
$cardInfo['viewCount'] = $viewCount;
$cardInfo['thumbCount'] = $thumbCount;
//获取公司信息
$company = longbingGetUserCompany($cardInfo['company_id'], $uniacid);
if (isset($company['name'])) $company_name = $company['name'];
$cardInfo['company_info'] = $company;
$modelCompany = new Company();
$cardInfo[ 'company_info' ] = $modelCompany->changeTopName($cardInfo[ 'company_info' ]);
$cardInfo['company_name'] = !empty($cardInfo[ 'company_info' ]['name'])? $cardInfo[ 'company_info' ]['name']:$cardInfo['company_name'];
//获取递名片数量
$radar_model = new RadarCount();
$cardInfo['share_number'] = $radar_model->getShareNumberV2($user_id);
//生成活动二维码
$qrData = [
'pid' => $this->_user_id,
'staff_id' => $this->_user_id,
'type' => 12,
'key' => 1
];
$src = 'image/' . $this->_uniacid . '/' . 'wxcode/' . md5($this->_uniacid . json_encode($qrData, true)) . '.jpeg';
if (!longbingHasLocalFile($src)) {
$push_data = array(
'action' => 'longbingCreateWxCode',
'event' => 'longbingCreateWxCode',
'uniacid' => $this->_uniacid,
'data' => $qrData,
'page' => 'pages/user/home',
'type' => 3
);
publisher(json_encode($push_data, true));
}
//获取名片图
$cardInfo['share_img'] = "images/share_img/{$uniacid}/share-{$this->_user_id}.png";
if (!longbingHasLocalFile($cardInfo['share_img'])) {
$user['share_img'] = null;
$cardInfo['share_img'] = null;
} else {
$cardInfo = transImagesOne($cardInfo, ['share_img']);
}
//
$cardInfo['posterQr'] = $src;
$cardInfo = transImagesOne($cardInfo, ['posterQr'], $this->_uniacid);
//获取名片码
$card_code_data = ["data" => ["staff_id" => (string)$user_id, "pid" => (string)$user_id, "type" => 4, "key" => 1]];
$qr_path = 'image/' . $this->_uniacid . '/' . 'wxcode/' . md5($this->_uniacid . json_encode($card_code_data, true)) . '.jpeg';
$cardInfo['qr_path'] = null;
if (longbingHasLocalFile($qr_path)) {
$cardInfo['qr_path'] = $qr_path;
} else {
$wxcode_data = longbingCreateWxCode($this->_uniacid, $card_code_data);
if (isset($wxcode_data['path']) && !empty($wxcode_data['path'])) $cardInfo['qr_path'] = $wxcode_data['path'];
}
if (!empty($cardInfo['qr_path'])) $cardInfo = transImagesOne($cardInfo, ['qr_path'], $this->_uniacid);
$userInfo['cardInfo'] = $cardInfo;
setCache($key, $cardInfo, 1800, $this->_uniacid);
//数据处理
if (isset($cardInfo['share_text']) && !empty($cardInfo['share_text'])) {
$share_text = $cardInfo['share_text'];
if (strpos($share_text, '#公司#')) $share_text = str_replace('#公司#', $company_name, $share_text);
if (strpos($share_text, '#职务#')) $share_text = str_replace('#职务#', $cardInfo['job_name'], $share_text);
if (strpos($share_text, '#我的名字#')) $share_text = str_replace('#我的名字#', $cardInfo['name'], $share_text);
if (strpos($share_text, '$company')) $share_text = str_replace('$company', $company_name, $share_text);
if (strpos($share_text, '$job')) $share_text = str_replace('$job', $cardInfo['job_name'], $share_text);
if (strpos($share_text, '$name')) $share_text = str_replace('$name', $cardInfo['name'], $share_text);
$userInfo['cardInfo']['share_text'] = $share_text;
} else {
$userInfo['cardInfo']['share_text'] = lang("card share text");
}
}
}
}
return $this->success($userInfo);
}
/**
* @Purpose: 小程序配置接口
*
* @Method GET
*
* @Author: zzf
*
* @Return: mixed 查询返回值(结果集对象)
*/
public function config ()
{
$data = longbingGetAppConfig($this->_uniacid);
unset( $data[ 'auth_code' ] );
$exist = Db::query( 'show tables like "%longbing_card_config%"' );
$auth_info = false;
$cardauth2_config_exist = Db::query('show tables like "%longbing_cardauth2_config%"');
if (!empty($exist) && !empty($cardauth2_config_exist)) {
$auth_info = Db::name('longbing_cardauth2_config')
->where([['modular_id', '=', $this->_uniacid]])
->find();
}
$data[ 'is_pay_shop' ] = 1;
// 判断能不能使用商城的支付功能
if ( $auth_info && isset( $auth_info[ 'pay_shop' ] ) && $auth_info[ 'pay_shop' ] == 0 )
{
$data[ 'is_pay_shop' ] = 0;
}
if ( isset( $data[ 'btn_talk' ] ) && !$data[ 'btn_talk' ] )
{
$data[ 'btn_talk' ] = '面议';
}
$data['tabBar1'] = [];
//tabbar用新的方式返回
$data['tabBar1'] = Tabbar::all($this->_uniacid, $this->_user_id);
$pluginAuth = longbingGetPluginAuth($this->_uniacid, $this->_user_id, $auth_info);
$data = array_merge($data, $pluginAuth);
return $this->success($data);
}
/**
* @Purpose: 小程序允许使用的名片样式
*
* @Method GET
*
* @Author: zzf
*
* @Return: mixed 查询返回值(结果集对象)
*/
public function cardType ()
{
$userId = $this->getUserId();
$card = UserInfo::where( [ [ 'fans_id', '=', $userId ], [ 'is_staff', '=', 1 ], [ 'uniacid', '=', $this->_uniacid ] ] )
->field( [ 'card_type' ] )
->find();
if ( !$card )
{
$this->error( 'card info not found', 402 );
}
$modelCardType = new CardType();
$count = $modelCardType->where( [ [ 'uniacid', '=', $this->_uniacid ] ] )
->count();
if ( !$count )
{
// 初始化名片样式
$data = $modelCardType->initCardType( $this->_uniacid );
}
else
{
$data = $modelCardType->where( [ [ 'uniacid', '=', $this->_uniacid ], [ 'status', '=', 1 ] ] )
->field( [ 'card_type', 'img' ] )
->select();
}
foreach ( $data as $index => $item )
{
$data[ $index ][ 'selected' ] = 0;
if ( $item[ 'card_type' ] == $card->card_type )
{
$data[ $index ][ 'selected' ] = 1;
}
}
return $this->success( $data );
}
/**
* @Purpose: 修改名片样式
*
* @Method POST
*
* @Author: zzf
*
* @Return: mixed 查询返回值(结果集对象)
*/
public function editCardType ()
{
$userId = $this->getUserId();
$verify = [ 'card_type' => 'required' ];
$params = lbGetParamVerify( $this->_input, $verify );
$card = UserInfo::where( [ [ 'fans_id', '=', $userId ], [ 'is_staff', '=', 1 ], [ 'uniacid', '=', $this->_uniacid ] ] )
->field( [ 'card_type' ] )
->find();
if ( !$card )
{
$this->error( 'card info not found', 402 );
}
$card->card_type = $params[ 'card_type' ];
$result = $card->save();
if ( $result === false )
{
$this->error( 'edit fail', 402 );
}else{
//清除名片缓存
$key = 'longbing_card_card_info_' . $userId;
delCache($key ,$this->_uniacid);
}
return $this->success( [] );
}
/**
* @Purpose: 修改名片录音
*
* @Method POST
*
* @Author: zzf
*
* @Return: mixed 查询返回值(结果集对象)
*/
public function editCardVoice ()
{
$userId = $this->getUserId();
$verify = [ 'voice_id' => 'required', 'voice_time' => 0 ];
$params = lbGetParamVerify( $this->_input, $verify );
$card = UserInfo::where( [ [ 'fans_id', '=', $userId ], [ 'is_staff', '=', 1 ], [ 'uniacid', '=', $this->_uniacid ] ] )
->field( [ 'voice', 'voice_time' ] )
->find();
if ( !$card )
{
$this->error( 'card info not found', 402 );
}
$card->voice = $params[ 'voice_id' ];
$card->voice_time = $params[ 'voice_time' ];
$result = $card->save();
if ( $result === false )
{
$this->error( 'edit fail', 402 );
}else{
//清除名片缓存
$key = 'longbing_card_info_' . $userId;
delCache($key ,$this->_uniacid);
longbingGetUserInfo($userId ,$this->_uniacid ,true);
}
return $this->success( [] );
}
/**
* @Purpose: 创建 / 编辑名片时回显数据
*
* @Method GET
*
* @Author: zzf
*
* @Return: mixed 查询返回值(结果集对象)
*/
public function reviewData ()
{
$userId = $this->getUserId();
$userInfo = $this->getUserInfo();
$modelCompany = new Company();
$modelJob = new CardJob();
$modelType = new CardType();
$card = UserInfo::where( [ [ 'uniacid', '=', $this->_uniacid ], [ 'fans_id', '=', $userId ] ] )
->find();
if ( $card )
{
$card = $card->toArray();
$data = transImagesOne( $card, [ 'avatar' ] ,$this->_uniacid);
$data[ 'companyList' ] = $modelCompany->getListByUser( $userId, $this->_uniacid, 0, $card[ 'company_id' ] );
$data[ 'jobList' ] = $modelJob->getListByUser( $card[ 'job_id' ], $this->_uniacid );
$data[ 'typeList' ] = $modelType->getCardTypeList( $this->_uniacid, $card[ 'card_type' ] );
$data[ 'company_info' ] = $modelCompany->getInfo( $this->_uniacid, 0, $card[ 'company_id' ] );
if(!empty($data['company_info'])){
$data[ 'company_info' ]['top_name'] = $modelCompany->where(['id'=>$data['company_info']['top_id'],'status'=>1])->value('name');
}
}
else
{
$data = [ 'avatar' => $userInfo[ 'avatarUrl' ], 'name' => $userInfo[ 'nickName' ],
'phone' => $userInfo[ 'phone' ], 'email' => '' ];
$data[ 'companyList' ] = $modelCompany->getListByUser( $userId, $this->_uniacid, 1, 0 );
$data[ 'jobList' ] = $modelJob->getListByUser( 0, $this->_uniacid );
$data[ 'typeList' ] = $modelType->getCardTypeList( $this->_uniacid );
$data[ 'company_info' ] = [];
}
$config = $this->modelConfig->getConfig( $this->_uniacid );
$data[ 'job_switch' ] = $config[ 'job_switch' ];
return $this->success( $data );
}
/**
* @Purpose: 名片信息
*
* @Method GET
*
* @Author: zzf
*
* @Return: mixed 查询返回值(结果集对象)
*/
public function cardInfo ()
{
//获取用户id
$userId = $this->getUserId();
$uniacid = $this->_uniacid;
//获取必要参数
$verify = [ 'staff_id' => 'required' ];
$params = lbGetParamVerify( $this->_param, $verify );
$staff_id = $params['staff_id'];
$staff = longbingGetUserInfo($staff_id ,$this->_uniacid);
if(empty($staff) || empty($staff['is_staff'])) return $this->error(lang('card info not found') ,403);
/*
//获取缓存数据
$key = 'longbing_card_info_'.$staff_id;
$plugin_model = new PluginManager($this->app);
if(hasCache($key ,$this->_uniacid))
{
$result = getCache($key ,$this->_uniacid);
$result['plugin'] = $plugin_model->trigger('decorate');
if(!empty($result)) return $this->success($result);
}
*/
//获取名片数据
$card = UserInfo::alias( 'a' )
->field( [ 'a.*', 'b.name as job_name' ] )
->join( 'longbing_card_job b', 'a.job_id = b.id', 'LEFT' )
->where( [ [ 'a.fans_id', '=', $params[ 'staff_id' ] ], [ 'a.is_staff', '=', 1 ],
[ 'a.uniacid', '=', $this->_uniacid ] ]
)
->find();
//判断名片是否存在
if ( empty($card) )
{
return $this->error( lang('card info not found') ,403);
}
//更新最后查看信息
if(!in_array($userId, [$params[ 'staff_id' ]]))
{
$user_update = User::update( [ 'last_staff_id' => $params[ 'staff_id' ] ], [ 'id' => $userId] );
if(!empty($user_update)){
$user = longbingGetUser($userId ,$this->_uniacid);
$user['last_staff_id'] = $params[ 'staff_id' ];
longbingSetUser($userId ,$this->_uniacid ,$user);
}
}
$cardInfo = $card->toArray();
//判断名片是否拥有职位(没有就默认)
if ( !$cardInfo[ 'job_name' ] )
{
$cardInfo[ 'job_name' ] = lang('not set job');
}
//默认vr数据
if(!isset($cardInfo['vr_tittle']) || empty($cardInfo['vr_tittle']))
{
$config = longbingGetAppConfig($this->_uniacid);
if(!empty($config) && !empty($config['vr_tittle']))
{
$cardInfo['vr_tittle'] = $config['vr_tittle'];
}else{
$cardInfo['vr_tittle'] = lang('panoramic');
}
}
$modelConfig = new Config();
// $config = $modelConfig->getConfig( $this->_uniacid );
$config = longbingGetAppConfig($this->_uniacid);
//默认背景音乐
if ( !$cardInfo[ 'bg' ] )
{
$cardInfo[ 'bg' ] = $config[ 'default_voice' ];
}
if ( !$cardInfo[ 'bg_switch' ] )
{
$cardInfo[ 'bg_switch' ] = $config[ 'default_voice_switch' ];
}
// 处理图片
$cardInfo = transImages( $cardInfo, [ 'images' ], ',' );
$cardInfo = transImagesOne( $cardInfo, [ 'avatar', 'voice', 'my_url', 'my_video', 'my_video_cover', 'bg', 'vr_cover',
'vr_path' ]
);
$modelCount = new RadarCount();
list( $viewCount, $thumbCount ) = $modelCount->RadarNumber( $cardInfo[ 'fans_id' ] ,$this->_uniacid);
$cardInfo[ 'viewCount' ] = $viewCount;
$cardInfo[ 'thumbCount' ] = $thumbCount;
// 名片最近浏览情况
list( $cardInfo[ 'view_list' ], $cardInfo[ 'view_count' ] ) = $modelCount->getCardViewInfo( $params[ 'staff_id' ], $this->_uniacid );
//获取公司信息
$modelCompany = new Company();
if ( $cardInfo[ 'company_id' ] )
{
$card_company = new CardCompany();
$company_id = $card_company->getUserTopCompanyId($cardInfo[ 'company_id' ]);
$company = $card_company->getinfo(['uniacid'=>$this->_uniacid,'id'=>$company_id]);
// $company = $modelCompany->getInfo( $this->_uniacid, 0, $cardInfo[ 'company_id' ] );
}
else
{
$company = $modelCompany->getInfo( $this->_uniacid, 0, 0 );
}
$cardInfo[ 'company_info' ] = $company;
$company_name = '';
if(isset($company['name'])) $company_name = $company['name'];
//获取名片码
$card_code_data = ["data" => ["staff_id" => $params['staff_id'] ,"pid" => $userId ,"type" => 4 ,"key" => 1]];
$qr_path = 'image/' . $this->_uniacid . '/' . 'wxcode/' . md5($this->_uniacid . json_encode($card_code_data ,true)) . 'jpeg';
$cardInfo['qr_path'] = null;
if(longbingHasLocalFile($qr_path))
{
$cardInfo['qr_path'] = $qr_path;
}else{
$wxcode_data = longbingCreateWxCode($this->_uniacid ,$card_code_data);
if(isset($wxcode_data['path']) && !empty($wxcode_data['path'])) $cardInfo['qr_path'] = $wxcode_data['path'];
}
if(!empty($cardInfo['qr_path'])) $cardInfo = transImagesOne($cardInfo ,['qr_path']);
//设置分享数据
if(isset($cardInfo['share_text']) && !empty($cardInfo['share_text']))
{
$share_text = $cardInfo['share_text'];
if(strpos($share_text,'#公司#')) $share_text = str_replace('#公司#',$company_name,$share_text);
if(strpos($share_text,'#职务#')) $share_text = str_replace('#职务#',$cardInfo[ 'job_name' ],$share_text);
if(strpos($share_text,'#我的名字#')) $share_text = str_replace('#我的名字#',$cardInfo[ 'name' ],$share_text);
if(strpos($share_text,'$company')) $share_text = str_replace('$company',$company_name,$share_text);
if(strpos($share_text,'$job')) $share_text = str_replace('$job',$cardInfo[ 'job_name' ],$share_text);
if(strpos($share_text,'$name')) $share_text = str_replace('$name',$cardInfo[ 'name' ],$share_text);
$cardInfo['share_text'] = $share_text;
}else{
$cardInfo['share_text'] = lang("card share text");
}
//名片分享链接
$cardInfo['share_img'] = "images/share_img/{$uniacid}/share-{$staff_id}.png";
if(!longbingHasLocalFile($cardInfo['share_img'])) {
$user['share_img'] = null;
$cardInfo['share_img'] = null;
}else{
$cardInfo = transImagesOne($cardInfo, ['share_img']);
}
//判断视频等参数
// $config = longbingGetAppConfig($this->_uniacid);
//默认视频
if(isset($config['default_video']) && empty($cardInfo['my_video'])) $cardInfo['my_video'] = $config['default_video'];
//默认视频图片
if(isset($config['default_video_cover']) && empty($cardInfo['my_video_cover'])) $cardInfo['my_video_cover'] = $config['default_video_cover'];
//默认背景音乐
if(isset($config['default_voice']) && empty($cardInfo['bg'])) $cardInfo['bg'] = $config['default_voice'];
//VR图片
if(isset($config['vr_cover']) && empty($cardInfo['vr_cover'])) $cardInfo['vr_cover'] = $config['vr_cover'];
//默认VR路径
if(isset($config['vr_path']) && empty($cardInfo['vr_path'])) {
$cardInfo['vr_path'] = $config['vr_path'];
//默认VR switch
$cardInfo['vr_switch'] = $config['vr_switch'];
}
//默认VR标题
if(isset($config['vr_tittle']) && empty($cardInfo['vr_tittle'])) $cardInfo['vr_tittle'] = $config['vr_tittle'];
//默认视频(处理)
if ( isset( $cardInfo[ 'my_video' ] ) && $cardInfo[ 'my_video' ] ) $cardInfo[ 'my_video_vid' ] = lbGetTencentVideo( $cardInfo[ 'my_video' ] );
$modelTags = new CardTags();
$cardInfo[ 'tag_list' ] = $modelTags->cardTagList( $params[ 'staff_id' ], $userId, $this->_uniacid );
//获取商品推荐列表 By.jingshuixian
/*$modelExtension = new CardExtension();
$cardInfo[ 'goods_list' ] = $modelExtension->cardExtensionList( $params[ 'staff_id' ], $this->_uniacid );
foreach($cardInfo[ 'goods_list'] as $key => $val)
{
$cardInfo[ 'goods_list'][$key]['is_collage'] = 0;
$collage_model = new IndexShopCollage();
$count = $collage_model->getCollage(['goods_id' => $val['id'] ,'uniacid' => $this->_uniacid ,'status' => 1]);
if(!empty($count)) $cardInfo[ 'goods_list'][$key]['is_collage'] = 1;
}*/
if ( isset( $cardInfo[ 'vr_tittle' ] ) && !$cardInfo[ 'vr_tittle' ] )
{
$cardInfo[ 'vr_tittle' ] = 'VR全景';
}
// 是否语音点赞
$checkVoice = CardCount::where( [ [ 'type', '=', 1 ], [ 'user_id', '=', $userId ],
[ 'to_uid', '=', $params[ 'staff_id' ] ], [ 'sign', '=', 'praise' ] ]
)
->count();
// 是否给名片点赞
$checkThumb = CardCount::where( [ [ 'type', '=', 3 ], [ 'user_id', '=', $userId ],
[ 'to_uid', '=', $params[ 'staff_id' ] ], [ 'sign', '=', 'praise' ] ]
)
->count();
//递名片
$radar_model = new RadarCount();
$share_number = $radar_model->getShareNumberV2($params['staff_id']);
if ( $checkVoice )
{
$cardInfo[ 'voiceThumbs' ] = 1;
}
else
{
$cardInfo[ 'voiceThumbs' ] = 0;
}
if ( $checkThumb )
{
$cardInfo[ 'isThumbs' ] = 1;
}
else
{
$cardInfo[ 'isThumbs' ] = 0;
}
$cardInfo[ 'view_count' ] = $cardInfo[ 'view_count' ] + $cardInfo[ 'view_number' ];
$cardInfo[ 'thumbCount' ] = $cardInfo[ 'thumbCount' ] + $cardInfo[ 't_number' ];
$cardInfo[ 'share_number' ] = $share_number;
$time = time();
$coupon = CardCoupon::where( [ [ 'end_time', '>', $time ], [ 'status', '=', 1 ], [ 'uniacid', '=', $this->_uniacid ] , [ 'number' , '>' , 0]] )
->order( [ 'top' => 'desc', 'id' => 'desc' ] )
->select()
->toArray();
$cardInfo[ 'coupon' ] = array();
$cardInfo[ 'coupon_last_record' ] = array();
$cardInfo[ 'coupon_last_record_user' ] = array();
if ( $coupon )
{
foreach ( $coupon as $index => $item )
{
$record_list = CardCouponRecord::where( [ [ 'coupon_id', '=', $item[ 'id' ] ],
[ 'staff_id', '=', $params[ 'staff_id' ] ],
[ 'uniacid', '=', $this->_uniacid ] ,
] )
->order( [ 'id' => 'desc' ] )
->select()
->toArray();
if ( count( $record_list ) < $item[ 'number' ] )
{
$cardInfo[ 'coupon' ] = $item;
if ( count( $record_list ) )
{
$cardInfo[ 'coupon_last_record' ] = $record_list;
}
break;
}
}
}
if ( !empty( $cardInfo[ 'coupon_last_record' ] ) )
{
foreach ( $cardInfo[ 'coupon_last_record' ] as $index => $item )
{
$user = longbingGetUser($item[ 'user_id' ] ,$this->_uniacid);
if ( mb_strlen( $user[ 'nickName' ], 'utf8' ) > 4 )
{
$user[ 'nickName' ] = mb_substr( $user[ 'nickName' ], 0, 4, "UTF-8" );
}
$cardInfo[ 'coupon_last_record' ][ $index ][ 'user_info' ] = $user;
}
}
//By.jingshuixian 删除 缓存 和 装修
/*if(!empty($cardInfo)) setCache($key ,$cardInfo ,600 ,$this->_uniacid);
$cardInfo['plugin'] = $plugin_model->trigger('decorate');*/
return $this->success( $cardInfo );
}
/**
* @Purpose: 名片信息
*
* @Method GET
*
* @Author: zzf
*
* @Return: mixed 查询返回值(结果集对象)
*/
public function cardInfoV2 ()
{
//获取用户id
$userId = (string) $this->getUserId();
$uniacid = $this->_uniacid;
//获取必要参数
$verify = [ 'staff_id' => 'required' ,'is_base' => 0];
$params = lbGetParamVerify( $this->_param, $verify );
$input = $this->_param;
$staff_id = $params['staff_id'];
//获取员工数据
$cardInfo = longbingGetUserCard($staff_id ,$this->_uniacid);
if(empty($cardInfo) || empty($cardInfo['is_staff'])) return $this->error(lang('card info not found') ,403);
//判断名片是否拥有职位(没有就默认)
if ( !$cardInfo[ 'job_name' ] )
{
$cardInfo[ 'job_name' ] = lang('not set job');
}
//获取名片码
$card_code_data = ["data" => ["staff_id" => $params['staff_id'] ,"pid" => $userId ,"type" => 4 ,"key" => 1]];
$qr_path = 'image/' . $this->_uniacid . '/' . 'wxcode/' . md5($this->_uniacid . json_encode($card_code_data ,true)) . '.jpeg';
if(!longbingHasLocalFile($qr_path))
{
$push_data = array(
'action' => 'longbingCreateWxCode',
'event' => 'longbingCreateWxCode',
'uniacid' => $this->_uniacid,
'data' => $card_code_data,
'page' => '',
'type' => 3
);
publisher(json_encode($push_data ,true));
}
$cardInfo['qr_path'] = $qr_path;
if(!empty($cardInfo['qr_path'])) $cardInfo = transImagesOne($cardInfo ,['qr_path']);
$modelCompany = new Company();
//检查公司默认数据
if ( empty($cardInfo['company_info']) )
{
//jingshuixian 0 = $cardInfo['fans_id']
$company = $modelCompany->getInfo( $this->_uniacid, $cardInfo['fans_id'], 0 );
$cardInfo[ 'company_info' ] = $company;
if(isset($company['name'])) $company_name = $company['name'];
}
$cardInfo[ 'company_info' ] = $modelCompany->changeTopName($cardInfo[ 'company_info' ]);
$cardInfo['company_name'] = !empty($cardInfo[ 'company_info' ]['name'])? $cardInfo[ 'company_info' ]['name']:$cardInfo['company_name'];
//设置分享数据
if(isset($cardInfo['share_text']) && !empty($cardInfo['share_text']))
{
$share_text = $cardInfo['share_text'];
if(strpos($share_text,'#公司#')) $share_text = str_replace('#公司#',$cardInfo[ 'company_name' ],$share_text);
if(strpos($share_text,'#职务#')) $share_text = str_replace('#职务#',$cardInfo[ 'job_name' ],$share_text);
if(strpos($share_text,'#我的名字#')) $share_text = str_replace('#我的名字#',$cardInfo[ 'name' ],$share_text);
if(strpos($share_text,'$company')) $share_text = str_replace('$company',$cardInfo[ 'company_name' ],$share_text);
if(strpos($share_text,'$job')) $share_text = str_replace('$job',$cardInfo[ 'job_name' ],$share_text);
if(strpos($share_text,'$name')) $share_text = str_replace('$name',$cardInfo[ 'name' ],$share_text);
$cardInfo['share_text'] = $share_text;
}else{
// $cardInfo['share_text'] = lang("card share text");
$cardInfo['share_text'] = '您好,我是'.$cardInfo[ 'company_name' ].'的'.$cardInfo[ 'job_name' ].$cardInfo[ 'name' ].',请惠存';
}
//名片分享链接
$cardInfo['share_img'] = "images/share_img/{$uniacid}/share-{$staff_id}.png";
// var_dump($cardInfo['share_img']);die;
if(!longbingHasLocalFile($cardInfo['share_img'])) {
$user['share_img'] = null;
$cardInfo['share_img'] = null;
}else{
$cardInfo = transImagesOne($cardInfo, ['share_img']);
}
//更新最后查看信息
//By.jingshuixian 最后访问的员工ID不同是更新
// if(!in_array($userId, [$params[ 'staff_id' ]]))
// {
$user_update = User::update( [ 'last_staff_id' => $params[ 'staff_id' ] ], [ 'id' => $userId] );
if(!empty($user_update)){
$user = longbingGetUser($userId ,$this->_uniacid);
$user['last_staff_id'] = $params[ 'staff_id' ];
longbingSetUser($userId ,$this->_uniacid ,$user);
}
// }
//是否只需要基础数据======================================================================================================有返回结果==============================
if(isset($params['is_base']) && !empty($params['is_base']))
{
$cardInfo = transImagesOne( $cardInfo, [ 'avatar']);
return $this->success($cardInfo);
}
//是否只需要基础数据======================================================================================================有返回结果==============================
//默认vr数据
if(!isset($cardInfo['vr_tittle']) || empty($cardInfo['vr_tittle']))
{
$config = longbingGetAppConfig($this->_uniacid);
if(!empty($config) && !empty($config['vr_tittle']))
{
$cardInfo['vr_tittle'] = $config['vr_tittle'];
}else{
$cardInfo['vr_tittle'] = lang('panoramic');
}
}
$config = longbingGetAppConfig($this->_uniacid);
//默认背景音乐
if ( !$cardInfo[ 'bg' ] )
{
$cardInfo[ 'bg' ] = $config[ 'default_voice' ];
}
if ( !$cardInfo[ 'bg_switch' ] )
{
$cardInfo[ 'bg_switch' ] = $config[ 'default_voice_switch' ];
}
// 处理图片
$cardInfo = transImages( $cardInfo, [ 'images' ], ',' );
$cardInfo = transImagesOne( $cardInfo, [ 'avatar', 'voice', 'my_url', 'my_video', 'my_video_cover', 'bg', 'vr_cover',
'vr_path' ]
);
//判断视频等参数
$config = longbingGetAppConfig($this->_uniacid);
//默认视频
if(isset($config['default_video']) && empty($cardInfo['my_video'])) $cardInfo['my_video'] = $config['default_video'];
//默认视频图片
if(isset($config['default_video_cover']) && empty($cardInfo['my_video_cover'])) $cardInfo['my_video_cover'] = $config['default_video_cover'];
//默认背景音乐
if(isset($config['default_voice']) && empty($cardInfo['bg'])) $cardInfo['bg'] = $config['default_voice'];
//VR图片
if(isset($config['vr_cover']) && empty($cardInfo['vr_cover'])) $cardInfo['vr_cover'] = $config['vr_cover'];
//默认VR路径
if(isset($config['vr_path']) && empty($cardInfo['vr_path'])) {
$cardInfo['vr_path'] = $config['vr_path'];
//默认VR switch
$cardInfo['vr_switch'] = $config['vr_switch'];
}
//默认VR标题
if(isset($config['vr_tittle']) && empty($cardInfo['vr_tittle'])) $cardInfo['vr_tittle'] = $config['vr_tittle'];
//默认视频(处理)
if ( isset( $cardInfo[ 'my_video' ] ) && $cardInfo[ 'my_video' ] ) $cardInfo[ 'my_video_vid' ] = lbGetTencentVideo( $cardInfo[ 'my_video' ] );
//设置vr tatile
if ( isset( $cardInfo[ 'vr_tittle' ] ) && !$cardInfo[ 'vr_tittle' ] )
{
$cardInfo[ 'vr_tittle' ] = 'VR全景';
}
if(isset($input['is_update'])&&$input['is_update']!=1){
//新的默认配置模型
$defult_setting = new DefaultSetting();
//默认配置数据
$defult_setting_data = $defult_setting->settingInfo(['uniacid'=>$this->_uniacid]);
$defult_setting_data = transImages($defult_setting_data,['my_photo_cover']);
//我的签名
$cardInfo['desc'] = !empty($cardInfo['desc'])?$cardInfo['desc']:$defult_setting_data['my_sign'];
//我的照片
$cardInfo['images'] = !empty($cardInfo['images'])?$cardInfo['images']:$defult_setting_data['my_photo_cover'];
//我的照片链接
$cardInfo['my_url'] = !empty($cardInfo['my_url'])?$cardInfo['my_url']:$defult_setting_data['my_photo_link'];
//个人简介语音
$cardInfo['voice'] = !empty($cardInfo['voice'])?$cardInfo['voice']:$defult_setting_data['voice_text'];
//我的语音时长
$cardInfo['voice_time'] = !empty($cardInfo['voice_time'])?$cardInfo['voice_time']:$defult_setting_data['voice_time'];
}
//获取福报
// $coupon = CardCoupon::where( [ [ 'end_time', '>', time() ], [ 'status', '=', 1 ], [ 'uniacid', '=', $this->_uniacid ] , [ 'number' , '>' , 0]] )
// ->order( [ 'top' => 'desc', 'id' => 'desc' ] )
// ->select()
// ->toArray();
$coupon_dis = ['status'=>1,'uniacid'=>$this->_uniacid];
$coupon_model = new IndexCoupon();
$coupon = $coupon_model->couponListSelect($coupon_dis,$this->getUserId(),$staff_id,100);
$cardInfo[ 'coupon' ] = array();
$cardInfo[ 'coupon_last_record' ] = array();
$cardInfo[ 'coupon_last_record_user' ] = array();
if ( $coupon )
{
foreach ( $coupon as $index => $item )
{
$record_list = CardCouponRecord::where( [ [ 'coupon_id', '=', $item[ 'id' ] ],
[ 'staff_id', '=', $params[ 'staff_id' ] ],
[ 'uniacid', '=', $this->_uniacid ] ,
] )
->order( [ 'id' => 'desc' ] )
->select()
->toArray();
if ( count( $record_list ) < $item[ 'number' ] )
{
$cardInfo[ 'coupon' ] = $item;
if ( count( $record_list ) )
{
$cardInfo[ 'coupon_last_record' ] = $record_list;
}
break;
}
}
}
if ( !empty( $cardInfo[ 'coupon_last_record' ] ) )
{
foreach ( $cardInfo[ 'coupon_last_record' ] as $index => $item )
{
//
$user = longbingGetUser($item[ 'user_id' ] ,$this->_uniacid);
if ( mb_strlen( $user[ 'nickName' ], 'utf8' ) > 4 )
{
$user[ 'nickName' ] = mb_substr( $user[ 'nickName' ], 0, 4, "UTF-8" );
}
$cardInfo[ 'coupon_last_record' ][ $index ][ 'user_info' ] = $user;
}
}
//数据统计
$modelCount = new RadarCount();
list( $viewCount, $thumbCount ) = $modelCount->RadarNumber( $staff_id ,$this->_uniacid);
$cardInfo[ 'view_count' ] = $viewCount;
$cardInfo[ 'thumbCount' ] = $thumbCount;
// 是否语音点赞
$checkVoice = CardCount::where( [ [ 'type', '=', 1 ], [ 'user_id', '=', $userId ],
[ 'to_uid', '=', $params[ 'staff_id' ] ], [ 'sign', '=', 'praise' ] ]
)
->count();
// 是否给名片点赞
$checkThumb = CardCount::where( [ [ 'type', '=', 3 ], [ 'user_id', '=', $userId ],
[ 'to_uid', '=', $params[ 'staff_id' ] ], [ 'sign', '=', 'praise' ] ]
)
->count();
//递名片
$radar_model = new RadarCount();
$share_number = $radar_model->getShareNumber($params['staff_id']);
if ( $checkVoice )
{
$cardInfo[ 'voiceThumbs' ] = 1;
}
else
{
$cardInfo[ 'voiceThumbs' ] = 0;
}
if ( $checkThumb )
{
$cardInfo[ 'isThumbs' ] = 1;
}
else
{
$cardInfo[ 'isThumbs' ] = 0;
}
$cardInfo[ 'view_count' ] = $cardInfo[ 'view_count' ] + $cardInfo[ 'view_number' ];
$cardInfo[ 'thumbCount' ] = $cardInfo[ 'thumbCount' ] + $cardInfo[ 't_number' ];
$cardInfo[ 'share_number' ] = $share_number;
$modelTags = new CardTags();
$cardInfo[ 'tag_list' ] = $modelTags->cardTagList( $params[ 'staff_id' ], $userId, $this->_uniacid );
//By.jingshuixian
//监听获取名片展示信息
$eventCardInfoData = event("CardInfo" , $params);
//兼容老数据
foreach ($eventCardInfoData as $items){
foreach ($items as $key => $item){
if( $key == 'decorate'){ //装修老板兼容
$cardInfo['plugin'] = $item ;
}else{ //默认都放到根节点上 例如: goods_list
$cardInfo[$key] = $item ;
}
}
}
return $this->success( $cardInfo );
}
/**
* @Purpose: 名片信息
*
* @Method GET
*
* @Author: zzf
*
* @Return: mixed 查询返回值(结果集对象)
*/
public function cardInfoV3 ()
{
//获取diy的数据
$diy_data = DiyModel::where([['status', '=', 1],['uniacid', '=', $this->_uniacid]])->find();
//获取商城的
$page_data= json_decode($diy_data['page'], true)[1] ?? [];
//判断有没有diy过
if(empty($page_data)|| (array_key_exists('list',$page_data) && empty($page_data['list']))){
$page_data = longbing_default_Page(1);
}
//获取用户id
$userId = (string) $this->getUserId();
$uniacid = $this->_uniacid;
//获取必要参数
$verify = [ 'staff_id' => 'required' ,'is_base' => 0];
$params = lbGetParamVerify( $this->_param, $verify );
$input = $this->_param;
$staff_id = $params['staff_id'];
//获取员工数据
$cardInfo = longbingGetUserCard($staff_id ,$this->_uniacid);
if(empty($cardInfo) || empty($cardInfo['is_staff'])) return $this->error(lang('card info not found') ,403);
//判断名片是否拥有职位(没有就默认)
if ( !$cardInfo[ 'job_name' ] )
{
$cardInfo[ 'job_name' ] = lang('not set job');
}
//获取名片码
$card_code_data = ["data" => ["staff_id" => $params['staff_id'] ,"pid" => $userId ,"type" => 4 ,"key" => 1]];
$qr_path = 'image/' . $this->_uniacid . '/' . 'wxcode/' . md5($this->_uniacid . json_encode($card_code_data ,true)) . '.jpeg';
if(longbingHasLocalFile($qr_path))
{
$cardInfo['qr_path'] = $qr_path;
}else{
// $wxcode_data = longbingCreateWxCode($this->_uniacid ,$card_code_data);
// if(isset($wxcode_data['path']) && !empty($wxcode_data['path'])) $cardInfo['qr_path'] = $wxcode_data['path'];
$push_data = array(
'action' => 'longbingCreateWxCode',
'event' => 'longbingCreateWxCode',
'uniacid' => $this->_uniacid,
'data' => $card_code_data,
'page' => '',
'type' => 3
);
publisher(json_encode($push_data ,true));
$cardInfo['qr_path'] = $qr_path;
}
if(!empty($cardInfo['qr_path'])) $cardInfo = transImagesOne($cardInfo ,['qr_path']);
$modelCompany = new Company();
//检查公司默认数据
if ( empty($cardInfo['company_info']) )
{
//jingshuixian 0 = $cardInfo['fans_id']
$company = $modelCompany->getInfo( $this->_uniacid, $cardInfo['fans_id'], 0 );
$cardInfo[ 'company_info' ] = $company;
if(isset($company['name'])) $company_name = $company['name'];
}
$cardInfo[ 'company_info' ] = $modelCompany->changeTopName($cardInfo[ 'company_info' ]);
$cardInfo['company_name'] = !empty($cardInfo[ 'company_info' ]['name'])? $cardInfo[ 'company_info' ]['name']:$cardInfo['company_name'];
//设置分享数据
if(isset($cardInfo['share_text']) && !empty($cardInfo['share_text']))
{
$share_text = $cardInfo['share_text'];
if(strpos($share_text,'#公司#')) $share_text = str_replace('#公司#',$cardInfo[ 'company_name' ],$share_text);
if(strpos($share_text,'#职务#')) $share_text = str_replace('#职务#',$cardInfo[ 'job_name' ],$share_text);
if(strpos($share_text,'#我的名字#')) $share_text = str_replace('#我的名字#',$cardInfo[ 'name' ],$share_text);
if(strpos($share_text,'$company')) $share_text = str_replace('$company',$cardInfo[ 'company_name' ],$share_text);
if(strpos($share_text,'$job')) $share_text = str_replace('$job',$cardInfo[ 'job_name' ],$share_text);
if(strpos($share_text,'$name')) $share_text = str_replace('$name',$cardInfo[ 'name' ],$share_text);
$cardInfo['share_text'] = $share_text;
}else{
// $cardInfo['share_text'] = lang("card share text");
$cardInfo['share_text'] = '您好,我是'.$cardInfo[ 'company_name' ].'的'.$cardInfo[ 'job_name' ].$cardInfo[ 'name' ].',请惠存';
}
//名片分享链接
$cardInfo['share_img'] = "images/share_img/{$uniacid}/share-{$staff_id}.png";
// var_dump($cardInfo['share_img']);die;
if(!longbingHasLocalFile($cardInfo['share_img'])) {
$user['share_img'] = null;
$cardInfo['share_img'] = null;
}else{
$cardInfo = transImagesOne($cardInfo, ['share_img']);
}
//更新最后查看信息
//By.jingshuixian 最后访问的员工ID不同是更新
// if(!in_array($userId, [$params[ 'staff_id' ]]))
// {
$user_update = User::update( [ 'last_staff_id' => $params[ 'staff_id' ] ], [ 'id' => $userId] );
if(!empty($user_update)){
$user = longbingGetUser($userId ,$this->_uniacid);
$user['last_staff_id'] = $params[ 'staff_id' ];
longbingSetUser($userId ,$this->_uniacid ,$user);
}
// }
//是否只需要基础数据======================================================================================================有返回结果==============================
if(isset($params['is_base']) && !empty($params['is_base']))
{
$cardInfo = transImagesOne( $cardInfo, [ 'avatar']);
return $this->success($cardInfo);
}
//是否只需要基础数据======================================================================================================有返回结果==============================
//默认vr数据
if(!isset($cardInfo['vr_tittle']) || empty($cardInfo['vr_tittle']))
{
$config = longbingGetAppConfig($this->_uniacid);
if(!empty($config) && !empty($config['vr_tittle']))
{
$cardInfo['vr_tittle'] = $config['vr_tittle'];
}else{
$cardInfo['vr_tittle'] = lang('panoramic');
}
}
$config = longbingGetAppConfig($this->_uniacid);
//默认背景音乐
if ( !$cardInfo[ 'bg' ] )
{
$cardInfo[ 'bg' ] = $config[ 'default_voice' ];
}
if ( !$cardInfo[ 'bg_switch' ] )
{
$cardInfo[ 'bg_switch' ] = $config[ 'default_voice_switch' ];
}
// 处理图片
$cardInfo = transImages( $cardInfo, [ 'images' ], ',' );
$cardInfo = transImagesOne( $cardInfo, [ 'avatar', 'voice', 'my_url', 'my_video', 'my_video_cover', 'bg', 'vr_cover',
'vr_path' ]
);
//判断视频等参数
$config = longbingGetAppConfig($this->_uniacid);
//默认视频
if(isset($config['default_video']) && empty($cardInfo['my_video'])) $cardInfo['my_video'] = $config['default_video'];
//默认视频图片
if(isset($config['default_video_cover']) && empty($cardInfo['my_video_cover'])) $cardInfo['my_video_cover'] = $config['default_video_cover'];
//默认背景音乐
if(isset($config['default_voice']) && empty($cardInfo['bg'])) $cardInfo['bg'] = $config['default_voice'];
//VR图片
if(isset($config['vr_cover']) && empty($cardInfo['vr_cover'])) $cardInfo['vr_cover'] = $config['vr_cover'];
//默认VR路径
if(isset($config['vr_path']) && empty($cardInfo['vr_path'])) {
$cardInfo['vr_path'] = $config['vr_path'];
//默认VR switch
$cardInfo['vr_switch'] = $config['vr_switch'];
}
//默认VR标题
if(isset($config['vr_tittle']) && empty($cardInfo['vr_tittle'])) $cardInfo['vr_tittle'] = $config['vr_tittle'];
//默认视频(处理)
if ( isset( $cardInfo[ 'my_video' ] ) && $cardInfo[ 'my_video' ] ) $cardInfo[ 'my_video_vid' ] = lbGetTencentVideo( $cardInfo[ 'my_video' ] );
//设置vr tatile
if ( isset( $cardInfo[ 'vr_tittle' ] ) && !$cardInfo[ 'vr_tittle' ] )
{
$cardInfo[ 'vr_tittle' ] = 'VR全景';
}
if(empty($input['is_update'])){
//新的默认配置模型
$defult_setting = new DefaultSetting();
//默认配置数据
$defult_setting_data = $defult_setting->settingInfo(['uniacid'=>$this->_uniacid]);
$defult_setting_data = transImages($defult_setting_data,['my_photo_cover']);
//我的签名
$cardInfo['desc'] = !empty($cardInfo['desc'])?$cardInfo['desc']:$defult_setting_data['my_sign'];
//我的照片
$cardInfo['images'] = !empty($cardInfo['images'])?$cardInfo['images']:$defult_setting_data['my_photo_cover'];
//我的照片链接
$cardInfo['my_url'] = !empty($cardInfo['my_url'])?$cardInfo['my_url']:$defult_setting_data['my_photo_link'];
//个人简介语音
$cardInfo['voice'] = !empty($cardInfo['voice'])?$cardInfo['voice']:$defult_setting_data['voice_text'];
//我的语音时长
$cardInfo['voice_time'] = !empty($cardInfo['voice_time'])?$cardInfo['voice_time']:$defult_setting_data['voice_time'];
}
//获取福报
// $coupon = CardCoupon::where( [ [ 'end_time', '>', time() ], [ 'status', '=', 1 ], [ 'uniacid', '=', $this->_uniacid ] , [ 'number' , '>' , 0]] )
// ->order( [ 'top' => 'desc', 'id' => 'desc' ] )
// ->select()
// ->toArray();
$coupon_model = new IndexCoupon();
//循环diy获取优惠券样式
foreach ($page_data['list'] as &$value){
if($value['type']=='couponList'&&empty($value['data']['dataList'])) {
$coupon_dis = ['status'=>1,'uniacid'=>$this->_uniacid];
$dataList = $coupon_model->couponListSelect($coupon_dis,$this->getUserId(),$staff_id);
if(!empty($dataList)){
//列表样式
if($value['data']['type']==2){
$value['data']['dataList'] = $dataList;
$cardInfo['coupon'] = $dataList;
}else{
//弹窗样式
$cardInfo['coupon'] = $dataList[0];
//领取记录
$r_dis = [
//优惠券id
'coupon_id' => $dataList[0]['id'],
//员工
'staff_id' => $staff_id,
//uniacid
'uniacid' => $this->_uniacid
];
$cardInfo['coupon_last_record'] = CardCouponRecord::where($r_dis)->order('id desc')->limit(3)->select()->toArray();
if ( !empty( $cardInfo[ 'coupon_last_record' ] ) )
{
foreach ( $cardInfo[ 'coupon_last_record' ] as $index => $item )
{
//
$user = longbingGetUser($item[ 'user_id' ] ,$this->_uniacid);
if ( mb_strlen( $user[ 'nickName' ], 'utf8' ) > 4 )
{
$user[ 'nickName' ] = mb_substr( $user[ 'nickName' ], 0, 4, "UTF-8" );
}
$cardInfo[ 'coupon_last_record' ][ $index ][ 'user_info' ] = $user;
}
}
}
}
}
}
//数据统计
$modelCount = new RadarCount();
list( $viewCount, $thumbCount ) = $modelCount->RadarNumber( $staff_id ,$this->_uniacid);
$cardInfo[ 'view_count' ] = $viewCount;
$cardInfo[ 'thumbCount' ] = $thumbCount;
// 是否语音点赞
$checkVoice = CardCount::where( [ [ 'type', '=', 1 ], [ 'user_id', '=', $userId ],
[ 'to_uid', '=', $params[ 'staff_id' ] ], [ 'sign', '=', 'praise' ] ]
)
->count();
// 是否给名片点赞
$checkThumb = CardCount::where( [ [ 'type', '=', 3 ], [ 'user_id', '=', $userId ],
[ 'to_uid', '=', $params[ 'staff_id' ] ], [ 'sign', '=', 'praise' ] ]
)
->count();
//递名片
$radar_model = new RadarCount();
$share_number = $radar_model->getShareNumber($params['staff_id']);
if ( $checkVoice )
{
$cardInfo[ 'voiceThumbs' ] = 1;
}
else
{
$cardInfo[ 'voiceThumbs' ] = 0;
}
if ( $checkThumb )
{
$cardInfo[ 'isThumbs' ] = 1;
}
else
{
$cardInfo[ 'isThumbs' ] = 0;
}
$cardInfo[ 'view_count' ] = $cardInfo[ 'view_count' ] + $cardInfo[ 'view_number' ];
$cardInfo[ 'thumbCount' ] = $cardInfo[ 'thumbCount' ] + $cardInfo[ 't_number' ];
$cardInfo[ 'share_number' ] = $share_number;
$modelTags = new CardTags();
$cardInfo[ 'tag_list' ] = $modelTags->cardTagList( $params[ 'staff_id' ], $userId, $this->_uniacid );
//By.jingshuixian
//监听获取名片展示信息
$eventCardInfoData = event("CardInfo" , $params);
//兼容老数据
foreach ($eventCardInfoData as $items){
foreach ($items as $key => $item){
if( $key == 'decorate'){ //装修老板兼容
$cardInfo['plugin'] = $item ;
}else{ //默认都放到根节点上 例如: goods_list
$cardInfo[$key] = $item ;
}
}
}
$arr_data['card_info'] = $cardInfo;
$arr_data['list'] = $page_data['list'];
return $this->success( $arr_data );
}
/**
* @author chenniang
* @DataTime: 2020-03-18 16:11
* @功能说明:默认配置
*/
public function defaultSetting(){
$d_model = new DefaultSetting();
$data = $d_model->settingInfo(['uniacid'=>$this->_uniacid]);
return $this->success( $data );
}
/**
* 获取统计数据
*/
public function getCardCount()
{
//获取用户id
$userId = $this->getUserId();
$uniacid = $this->_uniacid;
//获取必要参数
$verify = [ 'staff_id' => 'required' ];
$params = lbGetParamVerify( $this->_param, $verify );
$staff_id = $params['staff_id'];
//获取员工数据
$cardInfo_default = longbingGetUserCard($staff_id ,$this->_uniacid);
if(empty($cardInfo_default) || empty($cardInfo_default['is_staff'])) return $this->success([]);
$cardInfo=[];
// 名片最近浏览情况
$modelCount = new RadarCount();
list( $cardInfo[ 'view_list' ] ) = $modelCount->getCardViewInfo( $params[ 'staff_id' ], $this->_uniacid );
return $this->success($cardInfo);
}
/**
* @Purpose: 编辑自我描述
*
* @Method POST
*
* @Author: zzf
*
* @Return: mixed 查询返回值(结果集对象)
*/
public function editDesc ()
{
$userId = $this->getUserId();
$verify = [ 'desc' => '' ];
$params = lbGetParamVerify( $this->_input, $verify );
$card = UserInfo::where( [ [ 'fans_id', '=', $userId ], [ 'is_staff', '=', 1 ], [ 'uniacid', '=', $this->_uniacid ] ] )
->field( [ 'desc' ] )
->find();
if ( !$card )
{
$this->error( 'card info not found', 402 );
}
$card->desc = $params[ 'desc' ] ?? '';
$result = $card->save();
if ( $result === false )
{
$this->error( 'edit fail', 402 );
}else{
//清除名片缓存
$key = 'longbing_card_info_' . $userId;
delCache($key ,$this->_uniacid);
}
longbingGetUserInfo($userId ,$this->_uniacid ,true);
return $this->success( [] );
}
/**
* @Purpose: 编辑名片详情图片
*
* @Method POST
*
* @Author: zzf
*
* @Return: mixed 查询返回值(结果集对象)
*/
public function editImages ()
{
$userId = $this->getUserId();
$verify = [ 'images' => 'required' ];
$params = lbGetParamVerify( $this->_input, $verify );
$card = UserInfo::where( [ [ 'fans_id', '=', $userId ], [ 'is_staff', '=', 1 ], [ 'uniacid', '=', $this->_uniacid ] ] )
->field( [ 'images' ] )
->find();
if ( !$card )
{
$this->error( 'card info not found', 402 );
}
$params[ 'images' ] = implode(',', $params[ 'images' ]);
$card->images = trim( $params[ 'images' ], ',' );
$result = $card->save();
if ( $result === false )
{
$this->error( 'edit fail', 402 );
}else{
//清除名片缓存
$key = 'longbing_card_info_' . $userId;
delCache($key ,$this->_uniacid);
}
longbingGetUserInfo($userId ,$this->_uniacid ,true);
return $this->success( [] );
}
/**
* @Purpose: 创建 / 修改名片
*
* @Method POST
*
* @Author: zzf
*
* @Return: mixed 查询返回值(结果集对象)
*/
public function createCard ()
{
$userId = $this->getUserId();
$uniacid = $this->_uniacid;
$verify = [ 'avatar' => '', 'name' => 'required', 'job_id' => 'required', 'phone' => 'required', 'email' => '',
'company_id' => 'required', 'auth_code' => '', 'ww_account' => '', 'telephone' => '', 'wechat' => '' ];
$params = lbGetParamVerify( $this->_input, $verify );
//微信库类
$service_model = new WxSetting($this->_uniacid);
//违禁词检查
$rest = $service_model->wxContentRlue($params['name']);
if($rest['errcode'] != 0){
return $this->error('内容含有违法违规内容');
}
$modelConfig = new Config();
// $config = $modelConfig->getConfig( $this->_uniacid );
//获取配置信息
$config = longbingGetAppConfig($this->_uniacid);
$defaultCode = $config[ 'code' ];
$companyInfo = $this->modelCompany->getInfo( $this->_uniacid, 0, $params[ 'company_id' ] );
if ( !$companyInfo )
{
return $this->error( lang('not the company') );
}
$modelCompany= new Company();
$companyInfo = $modelCompany->changeTopName($companyInfo);
//获取工作信息
$job_model = new CardJob();
$job = $job_model->getJob(['uniacid' => $uniacid ,'id' => $params['job_id']]);
if(empty($job)) return $this->error( lang('not the job') );
$companyCode = $companyInfo[ 'auth_code' ];
// 是否需要免审口令
$code = '';
if ( $companyCode )
{
$code = $companyCode;
}
if ( !$code && $defaultCode )
{
$code = $defaultCode;
}
$modelUserInfo = new UserInfo();
$userInfo = $modelUserInfo->where( [ [ 'fans_id', '=', $userId ], [ 'uniacid', '=', $this->_uniacid ] ] )
->find();
$user = longbingGetUser($userId ,$this->_uniacid);
if ( $code && $code != $params[ 'auth_code' ] && empty($user['is_staff']))
{
if(isset($params['auth_code']) && !empty($params['auth_code']))
{
if(isset($config['btn_code_err']) && !empty($config['btn_code_err']))
{
return $this->error($config['btn_code_err'] ,402);
}
}else{
if(isset($config['btn_code_miss']) && !empty($config['btn_code_miss']))
{
return $this->error($config['btn_code_miss'] ,402);
}
}
return $this->error(lang('code error') ,402);
}
// 编辑
if(empty($userInfo) || empty($userInfo['is_staff']))
{
$permissions = longbingGetPluginAuth($this->_uniacid);
if(!empty($permissions) && isset($permissions['card_number']) && !empty($permissions['card_number']) && !(longbingGetCardNum($this->_uniacid) < $permissions['card_number']))
{
return $this->error(lang('not card num'));
}
}
if ( $userInfo )
{
$userInfo->avatar = $params[ 'avatar' ];
$userInfo->name = $params[ 'name' ];
$userInfo->job_id = $params[ 'job_id' ];
$userInfo->phone = $params[ 'phone' ];
$userInfo->email = $params[ 'email' ];
$userInfo->company_id = $params[ 'company_id' ];
$userInfo->ww_account = $params[ 'ww_account' ];
$userInfo->telephone = $params[ 'telephone' ];
$userInfo->wechat = !empty($params[ 'wechat' ])?$params[ 'wechat' ]:'';
$userInfo->is_staff = 1;
User::update( [ 'is_staff' => 1 ], [ 'id' => $userId ] );
$result = $userInfo->save();
//清除名片缓存
$key = 'longbing_card_info_' . $userId;
delCache($key ,$this->_uniacid);
}
// 创建
else
{
$modelUserInfo = new UserInfo();
$modelUserInfo->uniacid = $this->_uniacid;
$modelUserInfo->fans_id = $userId;
$modelUserInfo->avatar = $params[ 'avatar' ];
$modelUserInfo->name = $params[ 'name' ];
$modelUserInfo->job_id = $params[ 'job_id' ];
$modelUserInfo->phone = $params[ 'phone' ];
$modelUserInfo->email = $params[ 'email' ];
$modelUserInfo->company_id = $params[ 'company_id' ];
$modelUserInfo->ww_account = $params[ 'ww_account' ];
$modelUserInfo->telephone = $params[ 'telephone' ];
$modelUserInfo->wechat = $params[ 'wechat' ];
$modelUserInfo->is_staff = 1;
$modelUserInfo->auto_count = longbingGetUserInfoMinAutoCount($this->_uniacid);;
$modelUserInfo->is_default = 1;
User::update( [ 'is_staff' => 1 ], [ 'id' => $userId ] );
// if ( $is_staff )
// {
// User::update( [ 'is_staff' => $is_staff ], [ 'id' => $userId ] );
// }
$result = $modelUserInfo->save();
}
//By.jingshuixian 判断是否拥有分公司的boss权限
$permissions = new PermissionBoss($uniacid);
//有分公司权限 自动绑定当前公司
if( $permissions->pAuth() ) {
//如果没有Boss信息就绑定一个
$bossData = CardBoss::where( [ [ 'user_id', '=', $userId ] , ['uniacid' , '=' , $this->_uniacid ] ] )->find();
if(empty($bossData)){
CardBoss::create( [ 'user_id' => $userId , 'boss' => $params[ 'company_id' ], 'uniacid' => $this->_uniacid ] );
}
}
if ( $result === false )
{
return $this->error( 'operation failed' );
}else{
//画像
$file_path = "images/share_img/{$uniacid}/share-{$userId}.png";
// longbingchmodr(FILE_UPLOAD_PATH);
if(longbingHasLocalFile($file_path)) unlink(FILE_UPLOAD_PATH . $file_path);
$params = transImagesOne($params ,['avatar']);
$gData = array(
'company_logo' => $companyInfo['logo'],
'company_name' => longbingSortStr ( $companyInfo['name'] ,10),
'name' => longbingSortStr ( $params[ 'name' ] ,10),
'job' => longbingSortStr ( $job['name'] ,10),
'phone' => longbingSortStr ( $params[ 'phone' ] ,12),
'email' => longbingSortStr ( $params[ 'email' ] ,18),
'address' => longbingSortStr ( $companyInfo['addr'] ,10),
'img' => $params['avatar']
);
if(empty($gData['company_logo'])) $gData['company_logo'] = $this->defaultImage['image'];
if(empty($gData['img'])) $gData['img'] = $this->defaultImage['avatar'];
try{
// longbingCreateSharePng( $gData, $userId, $uniacid );
$push_data = array(
'action' => 'longbingCreateSharePng',
'event' => 'longbingCreateSharePng',
'gData' => $gData,
'user_id' => $userId,
'uniacid' => $uniacid
);
publisher(json_encode($push_data ,true));
// longbingCreateWxCode($data['gData'] ,$data['user_id'] ,$data['uniacid']);
}catch (Exception $e) { }
}
longbingGetUser($userId ,$this->_uniacid ,true);
longbingGetUserInfo($userId ,$this->_uniacid ,true);
return $this->success( [] );
}
/**
* @Purpose: 点赞 / 取消点赞 名片 / 语音
*
* @Param: $type number 操作类型 0 = 名片 1 = 语音
*
* @Method POST
*
* @Author: zzf
*
* @Return: mixed 查询返回值(结果集对象)
*/
public function thumbStaff ()
{
$userId = $this->getUserId();
$verify = [ 'staff_id' => 'required', 'type' => 0 ];
$params = lbGetParamVerify( $this->_input, $verify );
if ( $params[ 'type' ] == 0 )
{
// 是否给名片点赞
$check = CardCount::where( [ [ 'type', '=', 3 ], [ 'user_id', '=', $userId ],
[ 'to_uid', '=', $params[ 'staff_id' ] ], [ 'sign', '=', 'praise' ] ]
)
->find();
$type = 3;
}
else
{
// 是否语音点赞
$check = CardCount::where( [ [ 'type', '=', 1 ], [ 'user_id', '=', $userId ],
[ 'to_uid', '=', $params[ 'staff_id' ] ], [ 'sign', '=', 'praise' ] ]
)
->find();
$type = 1;
}
if ( $check )
{
$check = $check->toArray();
$result = CardCount::where( [ [ 'id', '=', $check[ 'id' ] ] ] )
->delete();
}
else {
$result = CardCount::create( [ 'type' => $type, 'user_id' => $userId, 'to_uid' => $params[ 'staff_id' ],
'sign' => 'praise', 'uniacid' => $this->_uniacid ]
);
}
return $this->success( [] );
}
/**
* @Purpose: 点赞 / 取消点赞 印象标签
*
* @Method POST
*
* @Author: zzf
*
* @Return: mixed 查询返回值(结果集对象)
*/
public function thumbTag ()
{
$userId = $this->getUserId();
$verify = [ 'tag_id' => 'required' ];
$params = lbGetParamVerify( $this->_input, $verify );
$check = CardUserTags::where( [ [ 'user_id', '=', $userId ], [ 'tag_id', '=', $params[ 'tag_id' ] ] ] )
->find();
if ( $check )
{
CardUserTags::where( [ [ 'id', '=', $check[ 'id' ] ] ] )
->delete();
CardTags::where( [ [ 'id', '=', $check[ 'tag_id' ] ] ] )
->dec( 'count' )
->update();
}
else
{
CardUserTags::create( [ 'user_id' => $userId, 'tag_id' => $params[ 'tag_id' ], 'uniacid' => $this->_uniacid ] );
CardTags::where( [ [ 'id', '=', $params[ 'tag_id' ] ] ] )
->inc( 'count' )
->update();
}
return $this->success( [] );
}
/**
* @Purpose: 收集formId
*
* @Method POST
*
* @Author: zzf
*
* @Return: mixed 查询返回值(结果集对象)
*/
public function getFormIdFromMini ()
{
$userId = $this->getUserId();
$verify = [ 'form_id' => 'required' ];
$params = lbGetParamVerify( $this->_input, $verify );
$data = explode( ',', $params[ 'form_id' ] );
$insertData = [];
foreach ( $data as $index => $item )
{
if ($item !== 'the formId is a mock one')
{
$insertData[] = [ 'user_id' => $userId, 'formId' => $item, 'uniacid' => $this->_uniacid ];
}
}
if(empty($insertData)) return $this->success( [] );
$push_data = array(
'action' => 'longbingSaveFormId',
'event' => 'longbingSaveFormId',
'data' => $insertData
);
publisher(json_encode($push_data ,true));
return $this->success( [] );
}
/**
* @Purpose: 上报手机号
*
* @Method POST
*
* @Author: zzf
*
* @Return: mixed 查询返回值(结果集对象)
*/
public function reportPhone ()
{
$userId = $this->getUserId();
$verify = [ 'staff_id' => 'required', 'encryptedData' => 'required', 'iv' => 'required' ];
$params = lbGetParamVerify( $this->_input, $verify );
$staff_id = $params[ 'staff_id' ];
$uniacid = $this->_uniacid;
$encryptedData = $params[ 'encryptedData' ];
$iv = $params[ 'iv' ];
$info = UserPhone::where( [ [ 'user_id', '=', $userId ], [ 'uniacid', '=', $uniacid ] ] )
->find();
if ( $info )
{
return $this->success( [ 'phone' => $info[ 'phone' ], 'new' => 3, 'iv' => $iv ] );
}
$config = longbingGetAppConfig($this->_uniacid);
// var_dump(json_encode($config));die;
$appid = $config[ 'appid' ];
$appsecret = $config[ 'app_secret' ];
$check_sk = UserSk::where( [ [ 'user_id', '=', $userId ] ] )
->find();
if ( !$check_sk )
{
return $this->error( -1, 'need login', [] );
}
else
{
$session_key = $check_sk[ 'sk' ];
}
$data = null;
// 解密
$errCode = decryptDataLongbing( $appid, $session_key, $encryptedData, $iv, $data );
// $errCode = baiduDecryptDataLongbing( $appid, $session_key, $encryptedData, $iv, $data );
if ( $errCode == 0 )
{
$data = json_decode( $data, true );
$phone = $data[ 'purePhoneNumber' ];
}
else
{
return $this->error( $errCode );
}
$data = [ 'user_id' => $userId, 'to_uid' => $params[ 'staff_id' ], 'phone' => $phone, 'uniacid' => $uniacid ];
$data = UserPhone::create( $data );
if(!empty($data))
{
$user = longbingGetUser($userId ,$this->_uniacid);
$user['phone'] = $phone;
longbingSetUser($userId ,$this->_uniacid ,$user);
}
return $this->success( [ 'phone' => $phone, 'new' => 1, ] );
}
/**
* @Purpose: 上报手机号
*
* @Method POST
*
* @Author: zzf
*
* @Return: mixed 查询返回值(结果集对象)
*/
public function baiduReportPhone ()
{
$userId = $this->getUserId();
$verify = [ 'staff_id' => 'required', 'encryptedData' => 'required', 'iv' => 'required' ];
$params = lbGetParamVerify( $this->_input, $verify );
$staff_id = $params[ 'staff_id' ];
$uniacid = $this->_uniacid;
$encryptedData = $params[ 'encryptedData' ];
$iv = $params[ 'iv' ];
$info = UserPhone::where( [ [ 'user_id', '=', $userId ], [ 'uniacid', '=', $uniacid ] ] )
->find();
if ( $info )
{
return $this->success( [ 'phone' => $info[ 'phone' ], 'new' => 3, 'iv' => $iv ] );
}
$config = Db::name('longbing_card_baidu_setting')->where(['uniacid'=>$this->_uniacid])->find();
$appid = $config[ 'client_id' ];
$appsecret = $config[ 'client_secret' ];
$check_sk = UserSk::where( [ [ 'user_id', '=', $userId ] ] )->find();
if ( !$check_sk )
{
return $this->error( -1, 'need login', [] );
}
else
{
$session_key = $check_sk[ 'sk' ];
}
$data = null;
// 解密
$errCode = baiduDecryptDataLongbing( $encryptedData,$iv,$appid, $session_key);
if ( $errCode!=false)
{
$errCode = json_decode($errCode,true);
$phone = $errCode['mobile'];
} else {
return $this->error( $errCode );
}
$data = [ 'user_id' => $userId, 'to_uid' => $params[ 'staff_id' ], 'phone' => $phone, 'uniacid' => $uniacid ];
$data = UserPhone::create( $data );
if(!empty($data))
{
$user = longbingGetUser($userId ,$this->_uniacid);
$user['phone'] = $phone;
longbingSetUser($userId ,$this->_uniacid ,$user);
}
return $this->success( [ 'phone' => $phone, 'new' => 1, ] );
}
/**
* @Purpose: 编辑标签回显数据
*
* @Method GET
*
* @Author: zzf
*
* @Return: mixed 查询返回值(结果集对象)
*/
public function reviewTags ()
{
$userId = $this->getUserId();
$staffTags = CardTags::where( [ [ 'user_id', '=', $userId ], [ 'uniacid', '=', $this->_uniacid ], [ 'status', '=', 1 ] ] )
->field( [ 'id', 'tag', 'count' ] )
->select()
->toArray();
$sysTags = CardTags::where( [ [ 'user_id', '=', 0 ], [ 'uniacid', '=', $this->_uniacid ], [ 'status', '=', 1 ] ] )
->field( [ 'id', 'tag', 'count' ] )
->select()
->toArray();
foreach ( $sysTags as $index => $item )
{
$sysTags[ $index ][ 'selected' ] = 0;
foreach ( $staffTags as $index2 => $item2 )
{
if ( $item2[ 'tag' ] == $item[ 'tag' ] )
{
$sysTags[ $index ][ 'selected' ] = 1;
break;
}
}
}
$data[ 'staffTags' ] = $staffTags;
$data[ 'sysTags' ] = $sysTags;
return $this->success( $data );
}
/**
* @Purpose: 编辑标签
*
* @Method POST
*
* @Author: zzf
*
* @Return: mixed 查询返回值(结果集对象)
*/
public function editTags ()
{
$userId = $this->getUserId();
$verify = [ 'tags' => 'required' ];
$params = lbGetParamVerify( $this->_input, $verify );
$model = new CardTags();
$staffTags = $model->where( [ [ 'user_id', '=', $userId ], [ 'uniacid', '=', $this->_uniacid ], [ 'status', '=', 1 ] ] )
->field( [ 'id', 'tag', 'count' ] )
->select()
->toArray();
$tmpArr = [];
$updateData = [];
foreach ( $staffTags as $index => $item )
{
$tmpArr[] = $item[ 'tag' ];
if ( !in_array( $item[ 'tag' ], $params[ 'tags' ] ) )
{
$updateData[] = [ 'id' => $item[ 'id' ], 'status' => -1 ];
}
}
if ( !empty( $updateData ) )
{
$model->saveAll( $updateData );
}
$insertData = [];
foreach ( $params[ 'tags' ] as $index => $item )
{
if ( !in_array( $item, $tmpArr ) )
{
$insertData[] = [ 'user_id' => $userId, 'tag' => $item, 'count' => 0, 'uniacid' => $this->_uniacid, 'status' => 1,
'top' => 0 ];
}
}
if ( !empty( $insertData ) )
{
$model->saveAll( $insertData );
}
return $this->success( [] );
}
//收藏名片
public function collectionCard()
{
//获取用户信息
$userInfo = $this->getUserInfo();
$userId = $this->getUserId();
//获取参数
$input = $this->_input;
if(isset($input['collection'])) $input =$input['collection'] ;
//判断员工id是否存在
// if(!isset($input['staff_id']) || empty($input['staff_id'])) return $this->error(lang('not staff id ,please check param.'));
if(!isset($input['staff_id']) || empty($input['staff_id'])) return $this->success([]);
//检查员工是否已被收藏
$check_filter = array(
'uniacid' => $this->_uniacid,
'uid' => $userId,
'to_uid' => $input['staff_id']
);
$check = $this->modelCollection->checkCollection($check_filter);
// var_dump($check);die;
// if(!empty($check) && isset($check['status']) && in_array($check['status'], ['1' ,1])) return $this->error(lang('the card has been collected ,Please don not double collect'));
if(!empty($check) && isset($check['status']) && in_array($check['status'], ['1' ,1])) return $this->success([]);
//检查员工是否存在
$staff = longbingGetUserInfo($input['staff_id'] ,$this->_uniacid);
//检查被收藏的员工是否存在和是否是员工
// if(!isset($staff['is_staff']) || empty($staff['is_staff'])) return $this->error(lang('the staff is not exist.'));
if(!isset($staff['is_staff']) || empty($staff['is_staff'])) return $this->success([]); //Update by jingshuixian $this->success([])
//判断来源
if(isset($input['from_uid']))
{
$from_user = longbingGetUser($input['from_uid'] ,$this->_uniacid);
if(!empty($from_user)) $check_filter['from_uid'] = $input['from_uid'];
}
//判断encryptedData 和 iv是否存在
if(isset($input['encryptedData'])){
if(!isset($input['iv'])) $input['iv'] = '';
//获取session key
$sk = longbingGetUserSk($userId ,$this->_uniacid);
//获取appid
$appid = null;
//获取config
$config = longbingGetAppConfig($this->_uniacid);
if(isset($config['appid']) && !empty($config['appid'])) $appid = $config['appid'];
//判断session key 是否存在
if(!empty($sk) && !empty($appid)) {
$data = null;
$errCode = decryptDataLongbing( $appid, $sk, $input['encryptedData'], $input['iv'], $data );
// 判断解密是否有错误
if ( $errCode == 0 )
{
$data = json_decode( $data, true );
$check_filter['openGId'] = $data[ 'openGId' ];
}
}
}
//判断scene是否存在
if(isset($input['scene'])) $check_filter['scene'] = $input['scene'];
//判断type是否存在
if(isset($input['type'])) $check_filter['type'] = $input['type'];
//创建收藏关系
$result = false;
if(empty($check)){
$result = $this->modelCollection->createCollection($check_filter);
}else{
$check_filter['status'] = 1;
$result = $this->modelCollection->updateCollection(['id' => $check['id']] ,$check_filter);
}
return $this->success([]);
// return $this->success($result);
}
//取消收藏
public function unCollectionCard()
{
//获取用户信息
$userInfo = $this->getUserInfo();
$userId = $this->getUserId();
//获取参数
$input = $this->_input;
if(isset($input['collection'])) $input =$input['collection'] ;
//判断员工id是否存在
if(!isset($input['staff_id']) || empty($input['staff_id'])) return $this->error(lang('not staff id ,please check param.'));
//检查员工是否已被收藏
$check_filter = array(
'uniacid' => $this->_uniacid,
'uid' => $userId,
'to_uid' => $input['staff_id']
);
$check = $this->modelCollection->checkCollection($check_filter);
if(empty($check) || !isset($check['status']) || !in_array($check['status'], ['1' ,1])) return $this->error(lang('the card has not been collected ,Please collect'));
//创建收藏关系
$result = $this->modelCollection->updateCollection(['id' => $check['id']] ,['status' => 0]);
return $this->success($result);
}
//生成小程序码
public function getWxCode()
{
//获取数据
$input = null;
if(isset($this->_input['data'])) $input = $this->_input['data'];
if(empty($input)) return $this->error('not data ,please check input data.');
$input['user_id'] = $this->_user_id;
$result = longbingCreateWxCode($this->_uniacid ,$input);
return $this->success($result);
}
//获取微信小程序码信息
public function getWxCodeData()
{
$code_id = null;
if(isset($this->_param['code_id'])) $code_id = $this->_param['code_id'];
if(empty($code_id)) return $this->error('not code id ,please check param.');
$result = longbingGetWxCode($code_id ,$this->_uniacid , $is_update = false);
return $this->success($result);
}
/**
* 将线上图片转为本地图片用于前端cavans画图
*/
public function getImage ()
{
$path = $this->_param['path'] ?? 'http://longbing.cncnconnect.com/attachment/image/2/wxcode/8e1cc25f24bd0c10ad238e1ce8b7a2e2.jpeg' ;
if (!$path ) {
return $this->error('请传入参数');
}
//
// $path = $_SERVER[ 'QUERY_STRING' ];
// $position = strpos($path, 'getImage&path=');
// $sub_str = substr($path, $position + 14);
// $path = urldecode($sub_str);
//判断类型
$type_img = getimagesize($path);
ob_start();
if ( strpos($type_img[ 'mime' ], 'jpeg') ) {
$resourch = imagecreatefromjpeg($path);
imagejpeg($resourch);
} elseif ( strpos($type_img[ 'mime' ], 'png') ) {
$resourch = imagecreatefrompng($path);
imagepng($resourch);
}
$content = ob_get_clean();
imagedestroy($resourch);
return response($content, 200, [ 'Content-Length' => strlen($content) ])->contentType('image/png');
}
/**
* 剩余通知条数
* @access public
* @return json
*/
public function formIds ()
{
global $_GPC, $_W;
$uid = $this->_user_id ?? $_GPC[ 'user_id' ] ?? null;
$beginTime = mktime( 0, 0, 0, date( 'm' ), date( 'd' ) - 7, date( 'Y' ) );
$m_form_id = new LongbingCardFromId();
$count = $m_form_id->where([
['uniacid', '=', $this->_uniacid],
['user_id', '=', $uid],
['create_time', '>', $beginTime]
])->count();
return $this->success(['count' => $count]);
}
//删除录音
public function clearCardInfoVoice()
{
//获取员工信息
$userId = $this->getUserId();
$card = longbingGetUserInfo($userId ,$this->_uniacid);
//判断员工是否存在
if ( !$card )
{
return $this->success([]);
}
//清除录音数据
$result = $this->modelUserInfo->updateUser(['fans_id' => $userId] ,['voice' => null , 'voice_time' => 0]);
if(!empty($result)) longbingGetUserInfo($userId ,$this->_uniacid ,true);
return $this->success( [] );
}
/**
* User: chenniang
* Date: 2019-09-26 10:32
* @return void
* descption:生成商品二维码
*/
public function getQr(){
$input = $this->_input;
$qr = getCache($this->getUserId().'-'.$input['type'].'-'.$input['staff_id'].'-'.$input['id']."-qr",$this->_uniacid);
if(empty($qr)){
$user = $this->getUserInfo();
$input['user_id'] = $this->getUserId();
$input['pid'] = $user['pid'];
$data = longbingCreateWxCode($this->_uniacid,$input,$input['page']);
$data = transImagesOne($data ,['qr_path'] ,$this->_uniacid);
$qr = $data['qr_path'];
setCache($this->getUserId().'-'.$input['type'].'-'.$input['staff_id'].'-'.$input['id']."-qr",$qr,3600,$this->_uniacid);
}
return $this->success($qr);
}
/**
**@author lichuanming
* @DataTime: 2020/5/15 10:58
* @功能说明:判断当前套餐是否过期
*/
public function authStatus(){
$user_id = $this->getUserId();
$is_staff = (new User())->where('id','=',$user_id)->value('is_staff');
$info = longbing_auth_status($this->_uniacid);
$info['is_staff'] = $is_staff;
return $this->success($info);
}
// public function
}