212 lines
8.9 KiB
PHP
212 lines
8.9 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)
|
|
{
|
|
$mkKpiData = new Market_sylive_activity_kpidata_model();
|
|
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', $mkKpiData::KYP_SHARE]) || $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'] . '记录');
|
|
}
|
|
}
|
|
if ($params['kpi'] == $mkKpiData::KYP_SHARE) {
|
|
$where = [
|
|
"activityId" => $params['a_id'],
|
|
'userId' => $params['uid'],
|
|
'kpi' => $params['kpi'],
|
|
'cfShare' => $params['cfShare']
|
|
];
|
|
$re_kpi = $this->ci->mdSytActivityKpiData->get($where);
|
|
if ($re_kpi) {
|
|
return ['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);
|
|
$params['cfShare'] && $addData['cfShare'] = $params['cfShare'];
|
|
$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;
|
|
}
|
|
}
|