user_id], ['=', 'status', StatusEnum::ENABLED]], true);
if (empty($card)) {
Yii::$app->controller->asJson(['code' => 3, 'msg' => '请先创建名片'])->send();
return;
}
$this->card = $card;
return $action;
}
/**
* 客户列表&我的线索&新增线索
* @author hpei
* @param int $customer_type 0:全部 1:潜在客户 2:意向客户 3:比较客户 4:待成交客户 5:已成交客户
* @param int $deep 1:直推 2:间推
* @param int $date 新增线索传15,其他不用传
* @param int user_id 查询团队列表传
* @param string $keyword
* @return array
*/
public function actionCustomerList() {
$get = Yii::$app->request->get();
$where[] = ['=' ,'mall_id', $this->mall_id];
$where[] = ['=' , 'status', StatusEnum::ENABLED];
if (isset($get['customer_type']) && !empty($get['customer_type'])) $where[] = ['=', 'customer_type', $get['customer_type']];
$ids = [];
$customer_type = CardEnums::getCustomerTypeMap();
if (isset($get['date']) && !empty($get['date'])) {
$date = $get['date'];
$start_time = strtotime("-$date day 0:0:0");
$end_time = $start_time + ($date - 1) * 86400 + 86399;
$where[] = ['>', 'created_at', $start_time];
$where[] = ['<=', 'created_at', $end_time];
}
if (isset($get['keyword']) && !empty($get['keyword'])) {
$userModel = User::find();
$userParam['where'] = [['=', 'mall_id', $this->mall_id], ['=', 'status', StatusEnum::ENABLED], ['like', 'nickname', $get['keyword']]];
User::paramPack($userParam, $userModel);
$ids = $userModel->select(['id'])->column();
if (empty($ids)) $this->success('操作成功', ['list' => [], 'direct' => 0, 'second' => 0, 'customer_list' => $customer_type]);
}
$deep = $get['deep'] ? $get['deep'] : 1;
if ($deep > 2) return $this->error('层级异常');
$uid = isset($get['user_id']) ? $get['user_id'] : $this->user_id;
$direct_ids = UserPartitionRelationship::getChildIdArr($uid, 1);
$second_ids = UserPartitionRelationship::getChildIdArr($uid, 2);
$direct_ids = array_merge($ids, $direct_ids);
$second_ids = array_merge($ids, $second_ids);
$direct_count = BusinessCardUser::count(['where' => [['=', 'mall_id', $this->mall_id], ['=', 'status', StatusEnum::ENABLED], ['in', 'user_id', $direct_ids]]]);
$second_count = BusinessCardUser::count(['where' => [['=', 'mall_id', $this->mall_id], ['=', 'status', StatusEnum::ENABLED], ['in', 'user_id', $second_ids]]]);
$where[] = $deep == 1 ? ['in', 'user_id', $direct_ids] : ['in', 'user_id', $second_ids];
$params = [
'where' => $where,
'select' => ['user_id', 'customer_type', 'created_at'],
'order' => 'id desc',
'limit' => 10,
'with' => ['user' => function($query) {$query->select(['id', 'nickname', 'mobile', 'avatar_url']);}]
];
$list = BusinessCardUser::listPage($params);
if (!empty($list['list'])) {
foreach ($list['list'] as &$val) {
$val['nickname'] = $val['user']['nickname'];
$val['avatar_url'] = $val['user']['avatar_url'];
$val['mobile'] = $val['user']['mobile'];
unset($val['user']);
}
}
$list['customer_type'] = $customer_type;//客户类型
$list['direct_count'] = $direct_count;//直推数量
$list['second_count'] = $second_count;//间推数量
return $this->success('操作成功', $list);
}
/**
* 我的客户展示数据
* @author hpei
* @param string $keyword
* @return array team_count:团队人数 order_num:订单数 order_money:订单金额 deal_count:成交客户数 follow_customer:跟进中 deal_customer:成交 count:粉丝总数
*/
public function actionCustomerStatistics() {
if (Yii::$app->request->isGet) {
//从关系链中取智能卡片的下级用户
$ids = UserPartitionRelationship::getChildIdArr($this->user_id);
if (empty($ids)) {
$team_count = 0;
} else {
$team_count = BusinessCardUser::find()->where(['user_id' => $ids, 'mall_id' => $this->mall_id])->count();
}
$params = [
'where' => [['in', 'user_id', $ids], ['=', 'mall_id', $this->mall_id], ['=', 'status', StatusEnum::ENABLED]],
'group' => 'customer_type',
'index' => 'customer_type',
'select' => ['count(*) count', 'customer_type']
];
$data = BusinessCardUser::conversion($params);
$data['team_count'] = $team_count;
$statistics = BusinessCardStatistics::getList([['user_id' => $this->user_id, 'mall_id' => $this->mall_id]], ['sum(order_num) order_num', 'sum(order_money) order_money'], 'user_id');
$data['order_num'] = empty($statistics['order_num']) ? 0 : $statistics[0]['order_num'];
$data['order_money'] = empty($statistics['order_money']) ? 0 : $statistics[0]['order_money'];
$data['deal_count'] = BusinessCardUser::find()->where(['mall_id' => $this->mall_id, 'parent_id' => $this->user_id, 'customer_type' => CardEnums::CUSTOMER_TYPE_MONEY, 'status' => StatusEnum::ENABLED])->count();
return $this->success('操作成功', $data);
}
}
/**
* 修改客户类型
* @author hpei
* @param int customer_type
* @param int $user_id
* @return mixed
*/
public function actionSetCustomerType() {
if (Yii::$app->request->isPost) {
$post = Yii::$app->request->post();
$res = Yii::$app->services->validate->validate($post, [
[['user_id', 'customer_type'], 'required'],
[['user_id', 'customer_type'], 'integer'],
[['customer_type'], 'in', 'range' => array_values(array_keys(CardEnums::getCustomerTypeMap()))]
]);
if ($res === false) return $this->error(Yii::$app->services->validate->getErrorMessage());
$post['mall_id'] = $this->mall_id;
$post['parent_id'] = $this->user_id;
try {
$res = BusinessCardUser::setCustomerData($post);
if ($res == false) return $this->error(BusinessCardUser::getStaticError());
} catch (\Exception $e) {
return $this->error($e->getMessage());
}
return $this->success('操作成功');
}
}
/**
* 客户信息
* @author hpei
* @param int $user_id
* @param array $customer_info
* @return mixed
*/
public function actionCustomerDetail() {
if (Yii::$app->request->isGet) {
$user_id = Yii::$app->request->get('user_id', 0);
$where = [['=', 'user_id', $user_id], ['=', 'mall_id', $this->mall_id], ['=', 'status', StatusEnum::ENABLED]];
$select = ['user_id', 'tags', 'customer_nickname', 'customer_sex', 'customer_mobile', 'customer_email', 'customer_address', 'customer_birthday', 'customer_remark'];
$customer_info = BusinessCardUser::getOne($where, true, ['user' => function($query){$query->select(['id', 'nickname', 'avatar_url']);}], false, $select);
if (!empty($customer_info)) {
$customer_info['nickname'] = $customer_info['user']['nickname'];
$customer_info['avatar_url'] = $customer_info['user']['avatar_url'];
unset($customer_info['user']);
$customer_info['tags'] = empty($customer_info['tags']) ? [] : explode(',', $customer_info['tags']);
}
return $this->success('操作成功', $customer_info);
} else {
$post = Yii::$app->request->post();
$res = Yii::$app->services->validate->validate($post, [
[['user_id'], 'required'],
[['user_id'], 'integer'],
[['customer_nickname', 'customer_mobile', 'customer_email', 'customer_address', 'customer_birthday', 'customer_remark'], 'default', 'value' => ''],
[['customer_sex'], 'default', 'value' => 1]
]);
if ($res === false) return $this->error(Yii::$app->services->validate->getErrorMessage());
$post['mall_id'] = $this->mall_id;
$post['parent_id'] = $this->user_id;
try {
$res = BusinessCardUser::setCustomerData($post);
if ($res == false) return $this->error(BusinessCardUser::getStaticError());
} catch (\Exception $e) {
return $this->error($e->getMessage());
}
return $this->success('操作成功');
}
}
/**
* AI分析
*
*/
public function actionAiAnalysis() {
}
public function actionUserInfo() {
if (Yii::$app->request->isGet) {
$data['nickname'] = $this->user->nickname;
$data['avatar_url'] = $this->user->avatar_url;
$data['user_id'] = $this->user->id;
$data['card_id'] = $this->card['id'];
$position_id = BusinessCardUser::find()->select(['position_id'])->where(['user_id' => $this->user_id])->column();
if (empty($position_id)) {
$data['position_name'] = '';
} else {
$data['position_name'] = BusinessCardPosition::find()->select(['name'])->where(['id' => $position_id])->column()[0];
}
$setting = Yii::$app->services->setting->addons->get($this->mall_id, CardEnums::ADDONS_NAME, 'basic');
$data['share_desc'] = isset($setting['share_desc']) ? $setting['share_desc'] : '';
$data['share_title'] = isset($setting['share_title']) ? $setting['share_title'] : '';
$data['logo'] = isset($setting['logo']) ? $setting['logo'] : '';
return $this->success('操作成功', $data);
}
}
/**
* 跟进记录
* @author hpei
* @param int $user_id
* @return array|null
*/
public function actionFollowRecord() {
if (Yii::$app->request->isGet) {
$user_id = Yii::$app->request->get('user_id', 0);
$params = [
'where' => [['=', 'mall_id', $this->mall_id], ['=', 'user_id', $user_id]],
'select' => ['remark', 'user_id', 'operate_id', 'created_at'],
'order' => 'id desc',
'limit' => 10
];
$list = BusinessCardFollowLog::listPage($params);
if (!empty($list['list'])) {
$ids = array_unique(array_column($list['list'], 'operate_id'));
$user_list = User::find()->where(['id' => $ids])->select(['nickname', 'avatar_url', 'id'])->indexBy('id')->all();
array_walk($list['list'], function(&$val) use($user_list) {
$val['nickname'] = isset($user_list[$val['operate_id']]) ? $user_list[$val['operate_id']]['nickname'] : '';
$val['avatar_url'] = isset($user_list[$val['operate_id']]) ? $user_list[$val['operate_id']]['avatar_url'] : '';
});
}
return $this->success('操作成功', $list);
} else {
$post = Yii::$app->request->post();
$res = Yii::$app->services->validate->validate($post, [
[['operate_id', 'remark'], 'required'],
[['operate_id'], 'integer']
]);
if ($res === false) return $this->error(Yii::$app->services->validate->getErrorMessage());
if (BusinessCardUser::count(['where' => [['=', 'user_id', $this->user_id], ['=', 'parent_id', $post['operate_id']]]]) <= 0) return $this->error('只能添加下级的记录');
$data = ['user_id' => $this->user_id, 'mall_id' => $this->mall_id, 'operate_id' => $post['operate_id'], 'log_type' => 2, 'remark' => $post['remark']];
BusinessCardFollowLog::setData($data);
$this->success('操作成功');
}
}
/**
* 我的名片统计
* @author hpei
* @param int date
* @return array|null
*/
public function actionStatistics() {
if (Yii::$app->request->isGet) {
$date = Yii::$app->request->get('date', '');
$ids = UserPartitionRelationship::getChildIdArr($this->user_id);
$data = BusinessCardStatistics::survey($date, $ids);
return $this->success('操作成功', $data);
}
}
/**
* 授权手机号(废弃)
* @author hpei
* @param int mobile
* @param int card_id
* @return mixed
*/
public function actionBindPhone() {
if (Yii::$app->request->isPost) {
$post = Yii::$app->request->post();
$res = Yii::$app->services->validate->validate($post, [
[['mobile', 'card_id'], 'required'],
[['mobile', 'card_id'], 'integer'],
]);
if ($res === false) return $this->error(Yii::$app->services->validate->getErrorMessage());
try {
$bind_user = User::getUser([['=', 'mobile', $post['mobile']], ['=', 'mall_id', $this->mall_id]]);//绑定者,当前登录账号
if (empty($bind_user)) return $this->error('手机号未注册');
if ($bind_user->id != $this->user_id) return $this->error('该号码不是登录手机号');
$card = BusinessCard::getOne(['where' => ['=', 'id', $post['card_id']], ['=', 'mall_id', $this->mall_id], ['=', 'status', StatusEnum::ENABLED]]);
if (empty($card)) return $this->error('卡片不存在');
$parent = UserPartitionRelationship::getParentIdArr($bind_user->id);
if (!in_array($card->user_id, $parent)) return $this->error('您不存在对方关系链当中');
$is_extis_user = BusinessCardUser::find()->where(['user_id' => $bind_user->id, 'parent_id' => $card->user_id, 'mall_id' => $this->mall_id])->count();
if ($is_extis_user >= 1) return $this->error('已有绑定的上级');
if ($card->user_id == $bind_user->id || $this->user_id == $card->user_id) return $this->error('不允许绑定自己');
$insert_data = [
'mall_id' => $this->mall_id,
'tags' => $card->tags,
'user_id' => $bind_user->id,
'parent_id' => $card->user_id,
'department_id' => $card->department_id,
'position_id' => $card->position_id,
'is_clue' => $bind_user->parent_id == $card->user_id ? 1 : 0
];
$res = BusinessCardUser::setData($insert_data);
if ($res === false) return $this->error(BusinessCardUser::getStaticError());
} catch (\Exception $e) {
return $this->error($e->getMessage());
}
Statistics::handler(['mall_id' => $this->mall_id, 'item_id' => $bind_user->id, 'user_id' => $card->user_id, 'log_type' => CardEnums::LOG_TYPE_USER]);
return $this->success('操作成功', $res);
}
}
/**
* 复制手机号
* @author hpei
* @param int card_id
* @return void
*/
public function actionCopyPhone() {
if (Yii::$app->request->isGet) {
$card_id = Yii::$app->request->get('card_id', 0);
$card = BusinessCard::getOne(['where' => ['=', 'id', $card_id], ['=', 'mall_id', $this->mall_id], ['=', 'status', StatusEnum::ENABLED]]);
if (empty($card)) return $this->error('卡片不存在');
Statistics::handler(['mall_id' => $this->mall_id, 'user_id' => $this->user_id, 'item_id' => $card->user_id, 'log_type' => CardEnums::LOG_TYPE_PHONE]);
return $this->success('操作成功');
}
}
/**
* 转发名片
* @author hpei
* @param int card_id
* @return void
*/
public function actionShareCard() {
if (Yii::$app->request->isGet) {
$card_id = Yii::$app->request->get('card_id', 0);
$card = BusinessCard::getOne(['where' => ['=', 'id', $card_id], ['=', 'mall_id', $this->mall_id], ['=', 'status', StatusEnum::ENABLED]]);
if (empty($card)) return $this->error('卡片不存在');
Statistics::handler(['mall_id' => $this->mall_id, 'user_id' => $this->user_id, 'item_id' => $card->id, 'log_type' => CardEnums::LOG_TYPE_TURN]);
return $this->success('操作成功');
}
}
/**
* 客户信息
* @return mixed|null
*/
public function actionInfo()
{
$get = Yii::$app->request->get();
$res = Yii::$app->services->validate->validate($get, [
[['user_id'], 'required'],
[['user_id'], 'integer'],
]);
if ($res === false) return $this->error(Yii::$app->services->validate->getErrorMessage());
$label_ids = UserLabelRelationship::find()
->where(['user_id' => $get['user_id']])
->andWhere(['mall_id' => $this->mall_id])
->andWhere(['status' => StatusEnum::ENABLED])
->orderBy('id asc')
->select('label_id')
->column();
$ret['labels'] = [];
if (!empty($label_ids)) {
$ret['labels'] = UserLabel::find()->where(['id' => $label_ids])->andWhere(['mall_id' => $this->mall_id])
->select('name')->column();
}
return $this->success('获取成功', $ret);
}
/**
* 客户行为
* @return mixed|null
*/
public function actionBehavior()
{
$get = Yii::$app->request->get();
$res = Yii::$app->services->validate->validate($get, [
[['user_id'], 'required'],
[['user_id', 'page', 'limit'], 'integer'],
]);
if ($res === false) return $this->error(Yii::$app->services->validate->getErrorMessage());
$log_type_enum = array_keys(CardEnums::getLogTypeMap());
// 角色需要处理一下
$carduser = BusinessCardUser::getOne([['mall_id' => $this->mall_id,'user_id' => $this->user_id,'status' =>StatusEnum::ENABLED]],true);
if($carduser['role_type'] == CardEnums::ROLE_TYPE_STAFF || !$carduser['role_type']){ // 员工角色
$user_ids = BusinessCardUser::find()->select("user_id")
->where(['mall_id' => $this->mall_id])->andWhere(['=', 'parent_id', $this->user_id])->asArray()->column();
$card_data = BusinessCard::find()->select("id")->where(['mall_id' => $this->mall_id])->andWhere(['=', 'user_id', $user_ids])->asArray()->column();
$card_data[] = $this->card['id'];
}else if($carduser['role_type'] == CardEnums::ROLE_TYPE_LEADER){ // 主管角色
$user_ids = BusinessCardUser::find()->select("user_id")
->where(['mall_id' => $this->mall_id])->andWhere(['=', 'department_id', $carduser['department_id']])->asArray()->column();
$card_data = BusinessCard::find()->select("id")->where(['mall_id' => $this->mall_id])->andWhere(['=', 'user_id', $user_ids])->asArray()->column();
$card_data[] = $this->card['id'];
}
$query = BusinessCardCustomerLog::find()
->where(['mall_id' => $this->mall_id])
->andWhere(['user_id' => $get['user_id']])
->andWhere(['log_type' => $log_type_enum])
->select('id, log_type, created_at, updated_at, user_id, item_id, material_id as object_id, material_times, material_log_id');
$queryOrder = BusinessCardOrder::find()
->where(['mall_id' => $this->mall_id])
->andWhere(['user_id' => $get['user_id']])
->select('id, log_type, created_at, updated_at, user_id, item_id, order_id as object_id, status as material_times, status as material_log_id');
$queryPoint = BusinessCardBuriedPoint::find()
->where(['mall_id' => $this->mall_id])
->andWhere(['user_id' => $get['user_id']])
->select('id, log_type, created_at, updated_at, user_id, item_id, object_id, status as material_times, status as material_log_id');
if (!empty($card_data)) {
$card_data = array_unique($card_data);
$query->andWhere(['item_id' => $card_data]);
$queryPoint->andWhere(['item_id' => $card_data]);
}
$query->union($queryOrder)->union($queryPoint);
$ret['page_size'] = $get['limit'] ?? 10;
$ret['page'] = max($get['page'] ?? 1, 1);
$ret['count'] = $query->count();
$pages = new Pagination(['totalCount' => $ret['count']]);
$pages->pageSizeParam = "limit";
$pages->defaultPageSize = $ret['page_size'];
$pages->setPageSize($ret['page_size']);
$ret['pagination'] = $pages;
$ret['page_count'] = (!empty($ret['count'] ) && $ret['count'] > 0) ? ceil($ret['count'] / $ret['page_size']) : 1;
$offset = ($ret['page']-1) * $ret['page_size'];
$sql = $query->createCommand()->getRawSql();
$ret['list'] = Yii::$app->db->createCommand("$sql ORDER BY updated_at DESC LIMIT $offset, {$ret['page_size']}")->queryAll();
// 获取当前用户手机信息
$ret['user'] = User::getOne([
['id' => $get['user_id']],
['mall_id' => $this->mall_id]
], true, [], null, 'nickname, username, mobile, avatar_url');
// if (!empty($ret['list'])) {
// $get_date = [];
// $get_date_key = [];
// foreach ($ret['list'] as $k => $v) {
// $ret['list'][$k]['date'] = date('Y年m月d日',$v['created_at']);
// $ret['list'][$k]['time'] = date('H:i',$v['created_at']);
// $ret['list'][$k]['remark'] = CardEnums::getLogTypeMapV1($v['log_type']);
// $get_date[$ret['list'][$k]['date']][] = $ret['list'][$k];
// }
// if(!empty($get_date)){
// foreach($get_date as $key=>$value){
// $get_date_key[] = $value;
// }
// }
// $ret['list'] = $get_date_key;
// }
if (!empty($ret['list'])) {
$user_ids = array_column($ret['list'], 'user_id');
$user_list = User::find()->where(['id' => $user_ids])->select(['nickname', 'avatar_url','mobile', 'id'])->indexBy('id')->asArray()->all();
$material_times_arr = [CardEnums::LOG_TYPE_CARD];
$get_date = [];
$get_date_key = [];
foreach ($ret['list'] as &$val) {
if (!empty($user_list[$val['user_id']])) {
$val['nickname'] = $user_list[$val['user_id']]['nickname'];
$val['avatar_url'] = $user_list[$val['user_id']]['avatar_url'];
$val['mobile'] = $user_list[$val['user_id']]['mobile'];
}
$val['date'] = date('Y年m月d日',$val['created_at']);
$val['time'] = date('H:i',$val['created_at']);
if (!empty($val['object_id'])) {
switch ($val['log_type']) {
case CardEnums::LOG_TYPE_BURIED_POINT_GOODS_DETAIL:
// 查看商品
$val['remark'] = '查看了商品[' .
Goods::find()->where(['id' => $val['object_id']])->select('goods_name')->scalar() . '],请抓住机会吧';
break;
case CardEnums::LOG_TYPE_ORDER_TYPE:
// 下单
// 获取商品名称
$goods_names = OrderDetail::find()
->where(['mall_id' => $this->mall_id])
->andWhere(['order_id' => $val['object_id']])
->andWhere(['status' => StatusEnum::ENABLED])
->select('goods_name')
->column();
$goods_name = !empty($goods_names[0]) ? "[$goods_names[0]]" : '';
$goods_cnt = count($goods_names);
if ($goods_cnt > 1) {
$goods_name = "$goods_name 等, 共 [$goods_cnt] 款";
}
$val['remark'] = "购买了商品$goods_name,请抓住机会吧";
break;
default:
// 查看素材
$material_name = BusinessCardMaterials::getOne([['=','id',$val['object_id']]],true,'','','title');
$material_view_time = BusinessCardMaterialsBrowseLog::getOne([['=','id',$val['material_log_id']]],true,'','','view_seconds');
$times = $val['material_times']==1?'首次':'第'.$val['material_times'].'次';
$val['remark'] = "$times查看了素材《{$material_name['title']}》,本次TA观看了".BusinessCardCustomerLog::sec2Time($material_view_time['view_seconds']);
// $val['remark'] = $times.'查看素材《'.$material_name['title'].'》,本次TA观看了'.BusinessCardCustomerLog::sec2Time($material_view_time['view_seconds']);
}
} else {
// 判断是否为本人/非本人那么就需要获取名片名称
if ($this->card['id'] != $val['item_id']) {
$nickname = BusinessCard::find()->where(['id' => $val['item_id']])->select('nickname')->scalar();
}
$val['remark'] = CardEnums::getLogTypeMapV2($val['log_type'],
in_array($val['log_type'], $material_times_arr) ? $val['material_times'] : null, !empty($nickname) ? "[$nickname]" : "您");
}
$val['remark'] = str_replace('', '', $val['remark']);
$val['user'] = $ret['user'];
$get_date[$val['date']][] = $val;
}
if($get_date){
foreach($get_date as $value){
$get_date_key[] = $value;
}
$ret['list'] = $get_date_key;
}
}
return $this->success('获取成功', $ret);
}
/**
* 客户分析
* @return mixed|null
*/
public function actionAnalyze()
{
$get = Yii::$app->request->get();
$res = Yii::$app->services->validate->validate($get, [
[['user_id'], 'required'],
[['range'], 'in', 'range' => [0, 1, 7, 30]],
[['user_id', 'range'], 'integer'], // 0, 1, 7, 30
], [
'user_id' => '客户',
'range' => '区间'
]);
if ($res === false) return $this->error(Yii::$app->services->validate->getErrorMessage());
$user_id = $get['user_id'];
$range = intval($get['range']);
$log = BusinessCardCustomerLog::getOne([
['mall_id' => $this->mall_id],
['item_id' => $this->card['id']],
['user_id' => $user_id],
], true, [], null, 'id, created_at');
if (empty($log)) return $this->error('当前用户并未查看过你的名片');
$created_at = 0;
switch ($range) {
case 1:
$created_at = strtotime(date('Y-m-d'));
break;
case 7:
$created_at = time() - (7 * 86400);
break;
case 30:
$created_at = time() - (30 * 86400);
break;
}
// 查看名片
// 查看资料
// 查看商品
// 分享名片
$ret['browse_card'] = BusinessCardCustomerLog::find()
->where(['mall_id' => $this->mall_id])
->andWhere(['user_id' => $user_id])
->andWhere(['>=', 'created_at', $created_at])
->andWhere(['log_type' => CardEnums::LOG_TYPE_CARD])
->count() ?? 0;
$ret['browse_material'] = BusinessCardCustomerLog::find()
->where(['mall_id' => $this->mall_id])
->andWhere(['user_id' => $user_id])
->andWhere(['>=', 'created_at', $created_at])
->andWhere(['log_type' => CardEnums::LOG_TYPE_MATEREAL_DETAIL])
->count() ?? 0;
$ret['browse_goods'] = BusinessCardBuriedPoint::find()
->where(['mall_id' => $this->mall_id])
->andWhere(['user_id' => $user_id])
->andWhere(['>=', 'created_at', $created_at])
->andWhere(['log_type' => CardEnums::LOG_TYPE_BURIED_POINT_GOODS_DETAIL])
->count() ?? 0;
$ret['share_card'] = BusinessCardCustomerLog::find()
->where(['mall_id' => $this->mall_id])
->andWhere(['user_id' => $user_id])
->andWhere(['>=', 'created_at', $created_at])
->andWhere(['log_type' => CardEnums::LOG_TYPE_TURN])
->count() ?? 0;
/*
// 下单数量
$ret['order_cnt'] = BusinessCardOrder::find()
->where(['mall_id' => $this->mall_id])
->andWhere(['user_id' => $user_id])
->andWhere(['>=', 'created_at', $created_at])
->count() ?? 0;
// 支付金额
$ret['pay_money'] = BusinessCardOrder::find()
->where(['mall_id' => $this->mall_id])
->andWhere(['user_id' => $user_id])
->andWhere(['>=', 'created_at', $created_at])
->sum('pay_amount') ?? 0;
// 浏览人数
$ret['browse_people_num'] = BusinessCardCustomerLog::find()
->where(['mall_id' => $this->mall_id])
->andWhere(['user_id' => $user_id])
->andWhere(['log_type' => CardEnums::LOG_TYPE_CARD])
->groupBy('item_id')
->count() ?? 0;
// 访问次数 进入首页 + 商品详情
$ret['browse_num'] = BusinessCardBuriedPoint::find()
->where(['mall_id' => $this->mall_id])
->andWhere(['user_id' => $user_id])
->andWhere(['>=', 'created_at', $created_at])
// ->andWhere(['log_type' => CardEnums::LOG_TYPE_BURIED_POINT_HOME])
->count() ?? 0;
$ret['browse_num'] += BusinessCardCustomerLog::find()
->where(['mall_id' => $this->mall_id])
->andWhere(['user_id' => $user_id])
->andWhere(['>=', 'created_at', $created_at])
->andWhere(['log_type' => [CardEnums::LOG_TYPE_INDEX, CardEnums::LOG_TYPE_GOODS, CardEnums::LOG_TYPE_IMAGE,
CardEnums::LOG_TYPE_GOODS, CardEnums::LOG_TYPE_CARD, CardEnums::LOG_TYPE_VIDEO, CardEnums::LOG_TYPE_DYNAMIC,
CardEnums::LOG_TYPE_MATEREAL, CardEnums::LOG_TYPE_MATEREAL_DETAIL]])
->count() ?? 0;
*/
// 分数
$ret['analyze'] = [
'score' => BusinessCardSecretUserScore::getScoreByUserId($this->mall_id, $user_id),
];
return $this->success('获取成功', $ret);
}
}