Files
2024-08-26 09:41:01 +08:00

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