汪总电商平台
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

352 lines
10 KiB

<?php
namespace app\api\controller\wanlshop\find;
use app\common\controller\Api;
use fast\Random;
/**
* WanlShop 发现创作中心接口
*/
class User extends Api
{
protected $noNeedLogin = ['getList', 'userInfo'];
protected $noNeedRight = ['*'];
public function _initialize()
{
parent::_initialize();
$this->model = model('app\api\model\wanlshop\find\User');
}
/**
* 获取关注列表
*
* @ApiSummary (WanlShop 发现接口获取关注列表)
* @ApiMethod (GET)
*
*/
public function getList($id = 0, $type = 'follow')
{
//设置过滤方法
$this->request->filter(['strip_tags']);
$model = model('app\api\model\wanlshop\find\Follow');
// 判断业务类型
if($type === 'follow'){
if($id){
$where['user_id'] = ['=', $this->getFindUser('user_no', $id)->user_id];
}else{
$where['user_id'] = ['=', $this->auth->id];
}
}else if($type === 'fans'){
if($id){
$where['user_no'] = ['=', $id];
}else{
$where['user_no'] = ['=', $this->getFindUser('user_id', $this->auth->id)->user_no];
}
}
$list = $model
->where($where)
->field('id, user_id, user_no')
->paginate();
foreach ($list as $row) {
if($type === 'follow'){
$row['user'] = $this->getFindUser('user_no', $row['user_no'])
->user->visible(['id', 'avatar', 'nickname', 'username', 'bio']);
$row['isFollow'] = $model
->where([
'user_no' => $row['user_no'],
'user_id' => $this->auth->id
])
->count();
$row['shop'] = model('app\api\model\wanlshop\Shop')
->where(['user_id' => $row['user']['id']])
->field('id, user_id, avatar, shopname, bio, isself')
->find();
}else if($type === 'fans'){
$find = $this->getFindUser('user_id', $row['user_id']);
$row['user'] = $find->user->visible(['id','avatar', 'nickname', 'username', 'bio']);
$row['user_no'] = $find->user_no;
$row['isFollow'] = $model
->where([
'user_no' => $find->user_no,
'user_id' => $this->auth->id
])
->count();
$row['shop'] = model('app\api\model\wanlshop\Shop')
->where(['user_id' => $row['user']['id']])
->field('id, user_id, avatar, shopname, bio, isself')
->find();
}
}
$this->success('返回成功', $list);
}
/**
* 获取关注商家列表
*
* @ApiSummary (WanlShop 发现接口获取关注商家列表)
* @ApiMethod (GET)
*
*/
public function getShopList()
{
//设置过滤方法
$this->request->filter(['strip_tags']);
$model = model('app\api\model\wanlshop\find\Follow');
$shopFindIds = [];
foreach ($model->where(['user_id' => $this->auth->id])->field('id, user_no')->select() as $row) {
$shop = model('app\api\model\wanlshop\Shop')
->where(['user_id' => $this->getFindUser('user_no', $row['user_no'])->user_id])
->find();
if($shop){
$shopFindIds = $row['id'];
}
}
$list = $model
->where('id', 'in', $shopFindIds)
->field('id, user_no')
->paginate();
foreach ($list as $row) {
$row['shop'] = model('app\api\model\wanlshop\Shop')
->where(['user_id' => $this->getFindUser('user_no', $row['user_no'])->user_id])
->field('id, user_id, shopname, avatar, state, level, city, isself')
->find();
$row['isFollow'] = 1;
}
$this->success('返回成功', $list);
}
/**
* 获取发现用户信息
*
* @ApiSummary (WanlShop 发现接口获取发现用户信息)
* @ApiMethod (POST)
*
*/
public function userInfo()
{
//设置过滤方法
$this->request->filter(['strip_tags']);
if ($this->request->isPost()) {
$id = $this->request->post('id');
if ($id) {
$where['user_no'] = $id;
} else {
$where['user_id'] = $this->auth->id;
}
// 获取社区会员详情
$row = $this->model->where($where)->find();
if (!$row) {
$row = $id ?
$this->error(__('未找到此用户')) :
$this->model->get( $this->addFindUser()->id );
}
$row->isFollow = model('app\api\model\wanlshop\find\Follow')
->where(['user_no' => $row['user_no'], 'user_id' => $this->auth->id])
->count();
$row->user->visible(['id','avatar','nickname','username','bio']);
$row->shop = model('app\api\model\wanlshop\Shop')
->where(['user_id' => $row->user->id])
->field('id, user_id, shopname, avatar, state, level, city, isself')
->find();
$config = get_addon_config('wanlshop');
$video = true;
$live = true;
// 判断客户端类型
switch ($this->request->server('HTTP_APP_CLIENT')){
case 'app-wanlshop':
$video = isset($config['find']['app_switch']['video']);
$live = isset($config['find']['app_switch']['live']);
break;
case 'h5-wanlshop':
$video = isset($config['find']['h5_switch']['video']);
$live = isset($config['find']['h5_switch']['live']);
break;
case 'mp-wanlshop':
$video = isset($config['find']['mp_switch']['video']);
$live = isset($config['find']['mp_switch']['live']);
break;
case 'wechat-wanlshop':
$video = isset($config['find']['wechat_switch']['video']);
$live = isset($config['find']['wechat_switch']['live']);
break;
}
$row->isVideo = $video;
$row->isLive = $live;
$this->success('返回成功', $row);
}
$this->error(__('非法请求'));
}
/**
* 喜欢或取消发现
*
* @ApiSummary (WanlShop 发现接口喜欢或取消发现)
* @ApiMethod (POST)
*
* @param string $id 发现ID
*/
public function setFindUser()
{
//设置过滤方法
$this->request->filter(['strip_tags']);
if ($this->request->isPost()) {
$id = $this->request->post('id');
$type = $this->request->post('type');
if (!$id) {
$this->error(__('未传入正确的FIND_ID'));
}
// 判断业务类型
switch ($type) {
case 'follow':
$model = model('app\api\model\wanlshop\find\Follow');
$where_type = 'user_no';
$my_type = 'fans';
break;
case 'likes':
$model = model('app\api\model\wanlshop\find\Like');
$where_type = 'find_id';
$my_type = 'praised';
break;
default:
$this->error(__('未传入正确的FIND_TYPE'));
}
// 查询我的创作中心
$myUser = $this->model->where(['user_id' => $this->auth->id])->find();
if (!$myUser) {
$myUser = $this->model->get($this->addFindUser()->id);
}
// 判断是否已经关注
$where[$where_type] = $id;
$where['user_id'] = $this->auth->id;
if ($model->where($where)->count() === 0) {
$model->save($where);
if($type === 'likes'){
$like = model('app\api\model\wanlshop\find\Find')->get($id);
$like->setInc($type);
$this->model->where('user_id', $like['user_id'])->setInc($my_type);
}else{
$this->model->where($where_type, $id)->setInc($my_type);
}
$myUser->setInc($type);
$this->success('返回成功', ['data' => 1]);
} else {
$model->where($where)->delete();
if($type === 'likes'){
$like = model('app\api\model\wanlshop\find\Find')->get($id);
$like->setDec($type);
$this->model->where('user_id', $like['user_id'])->setDec($my_type);
}else{
$this->model->where($where_type, $id)->setDec($my_type);
}
$myUser->setDec($type);
$this->success('返回成功', ['data' => 0]);
}
}
$this->error(__('非正常访问'));
}
/**
* 获取主题
*
* @ApiSummary (WanlShop 发现接口获取主题)
* @ApiMethod (GET)
*
*/
public function getTheme()
{
$row = $this->model
->where(['user_id' => $this->auth->id])
->field('user_no, color, image')
->find();
$row['list'] = model('app\api\model\wanlshop\Theme')
->field('id, color, image, name')
->select();
$this->success('返回成功', $row);
}
/**
* 修改创作中心主题
*
* @ApiSummary (WanlShop 发现接口修改创作中心主题)
* @ApiMethod (POST)
*
*/
public function editTheme()
{
//设置过滤方法
$this->request->filter(['strip_tags']);
if ($this->request->isPost()) {
$url = $this->request->post('url');
$type = $this->request->post('type');
// 上传图片
$update['image'] = $url;
if ($type && $type === 'upload') {
$imgUrl = cdnurl($url, true);
$imageInfo = getimagesize($imgUrl);
//图片类型
$imgType = strtolower(substr(image_type_to_extension($imageInfo[2]) , 1));
//对应函数
$imageFun = 'imagecreatefrom' . ($imgType == 'jpg' ? 'jpeg' : $imgType);
$i = $imageFun($imgUrl);
//循环色值
$rColorNum = $gColorNum = $bColorNum = $total = 0;
for ($x = 0; $x < imagesx($i); $x++) {
for ($y = 0; $y < imagesy($i); $y++) {
$rgb = imagecolorat($i, $x, $y);
//三通道
$r = ($rgb >> 16) & 0xFF;
$g = ($rgb >> 8) & 0xFF;
$b = $rgb & 0xFF;
$rColorNum+= $r;
$gColorNum+= $g;
$bColorNum+= $b;
$total++;
}
}
$r = round($rColorNum / $total);
$g = round($gColorNum / $total);
$b = round($bColorNum / $total);
$r = dechex($r < 0 ? 0 : ($r > 255 ? 255 : $r));
$g = dechex($g < 0 ? 0 : ($g > 255 ? 255 : $g));
$b = dechex($b < 0 ? 0 : ($b > 255 ? 255 : $b));
$color = (strlen($r) < 2 ? '0' : '') . $r;
$color.= (strlen($g) < 2 ? '0' : '') . $g;
$color.= (strlen($b) < 2 ? '0' : '') . $b;
$update['color'] = '#' . $color;
} else {
$update['color'] = $this->request->post('color');
}
if($this->model->where(['user_id' => $this->auth->id])->update($update)){
$this->success('返回成功', $update);
}else{
$this->error(__('修改主题失败'));
}
}
$this->error(__('非法请求'));
}
/**
* 新建用户 内部方法
*/
private function addFindUser()
{
// 新建用户并查询
$find_user = $this->model;
$find_user->user_id = $this->auth->id;
$find_user->user_no = Random::nozero(9);
$find_user->save();
return $find_user;
}
/**
* 查询用户 内部方法
*/
private function getFindUser($name = null, $id = null)
{
return $this->model->where($name, '=', $id)->find();
}
}