191 lines
8.0 KiB
PHP
191 lines
8.0 KiB
PHP
<?php
|
|
/**
|
|
* 私域直播
|
|
*/
|
|
class Sylive2_entity{
|
|
|
|
private $ci;
|
|
private $map_kpi_biz = [
|
|
'browse' => 'browse', 'subscribe' => 'subscribe', 'order' => 'orderTotal','watch' => 'watch','beforeOrder' => 'beforeOrderTotal'
|
|
];
|
|
|
|
public function __construct(){
|
|
$this->ci = &get_instance();
|
|
$this->ci->load->model('market/market_sylive_user_model', 'user_model');
|
|
$this->ci->load->model('market/market_sylive_activity_user_model', 'act_user_model');
|
|
$this->ci->load->model('market/market_sylive_groups_model', 'groups_model');
|
|
$this->ci->load->model('market/market_sylive_groups_user_model', 'groups_user_model');
|
|
$this->ci->load->model('market/market_sys_dictionary_data_model');
|
|
$this->ci->load->model('market/market_sylive_activity_kpidata_model','mdSytActivityKpiData');
|
|
}
|
|
|
|
/**
|
|
* 获取等级数据
|
|
* @param $groupsId
|
|
* @param $data
|
|
* @return int
|
|
*/
|
|
public function get_group_lists($groupsId,$a_id,$data=[]){
|
|
$row = $this->ci->groups_model->get(['groupsId'=>$groupsId,'activityId'=>$a_id],'groupsId,parentId,groupsName');
|
|
if(!$row){
|
|
return $data;
|
|
}else{
|
|
array_unshift($data,$row);
|
|
if($row['parentId']){
|
|
return $this->get_group_lists($row['parentId'],$a_id,$data);
|
|
}else{
|
|
return $data;
|
|
}
|
|
}
|
|
}
|
|
|
|
/**
|
|
* 添加kpi记录
|
|
* @param $params
|
|
* @return array
|
|
*/
|
|
public function kpi_log($params)
|
|
{
|
|
if ($params['a_id'] && $params['uid'] && $params['cf_uid']) {
|
|
$user = $this->user_model->get(['userId'=>$params['uid']]);
|
|
$act_user = $this->act_user_model->get(['activityId'=>$params['a_id'],'userId'=>$params['cf_uid']]);
|
|
if(!$user || !$act_user){
|
|
debug_log("[info]# " .'uid:'.$params['uid'].' cf_uid:'.$params['cf_uid'].'顾问不存在', 'market/sylive','kpi.log');
|
|
return array('code' => 0, 'msg' => '顾问不存在');
|
|
}
|
|
if(!in_array($params['kpi'],['order']) || $params["itemId"]==19){ //订单可添加多条kpi 商品id=19也只能加一次
|
|
$re_kpi = $this->ci->mdSytActivityKpiData->get(array("activityId" => $params['a_id'], 'userId' => $params['uid'], 'kpi' => $params['kpi']));
|
|
if ($re_kpi) {//已添加过活动kpi(访活动只记录一次用户kpi记录)
|
|
return array('code' => 0, 'msg' => '已添加过' . $params['kpi'] . '记录');
|
|
}
|
|
}
|
|
//增加记录
|
|
$addData = [
|
|
'activityId' => $params['a_id'],
|
|
'userId' => $user['userId'],
|
|
'cfUserId' => $act_user['userId'],
|
|
'kpi' => $params['kpi'],
|
|
'createTime' => time(),
|
|
'day' => date('Y-m-d')
|
|
];
|
|
if($params['c_time']){ //指定创建时间
|
|
$addData['updateTime'] = date('Y-m-d H:i:s',$params['c_time']);
|
|
$addData['createTime'] = $params['c_time'];
|
|
$addData['day'] = date('Y-m-d',$params['c_time']);
|
|
}
|
|
$act_user['bizId'] && $addData['bizId'] = $act_user['bizId'];
|
|
$act_user['levelId1'] && $addData['levelId1'] = $act_user['levelId1'];
|
|
$act_user['levelId2'] && $addData['levelId2'] = $act_user['levelId2'];
|
|
$act_user['levelId3'] && $addData['levelId3'] = $act_user['levelId3'];
|
|
$params['tagId'] && $addData['tagId'] = $params['tagId'];
|
|
$params['itemId'] && $addData['itemId'] = $params['itemId'];
|
|
$jsondata = $params['jsondata'] ? $params['jsondata'] : [];
|
|
$jsondata && $addData['jsondata'] = json_encode($jsondata, JSON_UNESCAPED_UNICODE);
|
|
$id = $this->ci->mdSytActivityKpiData->add($addData);
|
|
if (!$id) {
|
|
return array('code' => 0, 'msg' => '添加记录失败');
|
|
}
|
|
$this->kpi_count($params['a_id'],$params['kpi'],$params['cf_uid']);
|
|
return array('code' => 1, 'msg' => '添加记录成功');
|
|
} else {
|
|
return array('code' => 0, 'msg' => '参数错误');
|
|
}
|
|
}
|
|
|
|
/**
|
|
* 更新统计数据
|
|
* @param $a_id
|
|
* @param $kpi
|
|
* @param $cf_uid
|
|
* @return array
|
|
*/
|
|
public function kpi_count($a_id,$kpi,$cf_uid){
|
|
if($this->map_kpi_biz[$kpi] && $cf_uid && $a_id){
|
|
$up_key = $this->map_kpi_biz[$kpi];
|
|
$total = $this->ci->mdSytActivityKpiData->count(['activityId'=>$a_id,'cfUserId'=>$cf_uid,'kpi'=>$kpi]);
|
|
$update = [
|
|
$up_key => $total
|
|
];
|
|
//更新活动用户表统计数据
|
|
$this->ci->act_user_model->update($update,['activityId'=>$a_id,'userId'=>$cf_uid]);
|
|
//更新分组用户统计
|
|
$this->ci->groups_user_model->update($update,['activityId'=>$a_id,'userId'=>$cf_uid]);
|
|
//更新分组统计
|
|
$group_user = $this->groups_user_model->get(['activityId'=>$a_id,'userId'=>$cf_uid]);
|
|
if($group_user['levelId1']){
|
|
$total = $this->ci->mdSytActivityKpiData->count(['activityId'=>$a_id,'levelId1'=>$group_user['levelId1'],'kpi'=>$kpi]);
|
|
$update = [
|
|
$up_key => $total
|
|
];
|
|
$this->ci->groups_model->update($update,['activityId'=>$a_id,'groupsId'=>$group_user['levelId1']]);
|
|
}
|
|
if($group_user['levelId2']){
|
|
$total = $this->ci->mdSytActivityKpiData->count(['activityId'=>$a_id,'levelId2'=>$group_user['levelId2'],'kpi'=>$kpi]);
|
|
$update = [
|
|
$up_key => $total
|
|
];
|
|
$this->ci->groups_model->update($update,['activityId'=>$a_id,'groupsId'=>$group_user['levelId2']]);
|
|
}
|
|
if($group_user['levelId3']){
|
|
$total = $this->ci->mdSytActivityKpiData->count(['activityId'=>$a_id,'levelId3'=>$group_user['levelId3'],'kpi'=>$kpi]);
|
|
$update = [
|
|
$up_key => $total
|
|
];
|
|
$this->ci->groups_model->update($update,['activityId'=>$a_id,'groupsId'=>$group_user['levelId3']]);
|
|
}
|
|
//更新门店
|
|
if($group_user['bizId']){
|
|
$total = $this->ci->mdSytActivityKpiData->count(['activityId'=>$a_id,'bizId'=>$group_user['bizId'],'kpi'=>$kpi]);
|
|
$update = [
|
|
$up_key => $total
|
|
];
|
|
$this->ci->groups_model->update($update,['activityId'=>$a_id,'groupsId'=>$group_user['bizId']]);
|
|
}
|
|
return ['code'=>1,'msg'=>'更新成功'];
|
|
}else{
|
|
return ['code'=>0,'msg'=>'参数错误'];
|
|
}
|
|
}
|
|
|
|
/**
|
|
* 获取等级字典
|
|
* @param $a_id
|
|
* @return array
|
|
*/
|
|
public function level_disk($a_id,$groupsLevel=0){
|
|
$top_group = $this->ci->groups_model->get(['activityId'=>$a_id,'parentId'=>0],'statisticsType');
|
|
$disk = [];
|
|
if($top_group['statisticsType']){
|
|
$where = ['dictId'=>$top_group['statisticsType']];
|
|
$groupsLevel && $where["dictDataCode>"] = $groupsLevel;
|
|
$disk = $this->ci->market_sys_dictionary_data_model->map('dictDataCode','dictDataName',$where,'','','','dictDataName,dictDataCode');
|
|
}
|
|
return $disk;
|
|
}
|
|
|
|
/**
|
|
* 获取等级字典
|
|
* @param $a_id
|
|
* @return array
|
|
*/
|
|
public function level_disk_lists($a_id){
|
|
$top_group = $this->ci->groups_model->get(['activityId'=>$a_id,'parentId'=>0],'statisticsType');
|
|
$disk = [];
|
|
if($top_group['statisticsType']){
|
|
$where = ['dictId'=>$top_group['statisticsType']];
|
|
$disk = $this->ci->market_sys_dictionary_data_model->select($where,'','','','dictDataName,dictDataCode');
|
|
}
|
|
return $disk;
|
|
}
|
|
|
|
public function __get($name)
|
|
{
|
|
if ('_model' === substr($name, -6)) {
|
|
return $this->ci->$name;
|
|
} elseif ('load' == $name) {
|
|
return $this->ci->load;
|
|
}
|
|
return null;
|
|
}
|
|
}
|