Files
liche/common/libraries/market/Sylive2_entity.php
T
2023-07-18 14:38:17 +08:00

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;
}
}