| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515 |
- <?php
- namespace addons\Xhs\api\modules\v1\controllers;
- use addons\Xhs\common\enums\XhsEnum;
- use addons\Xhs\common\models\AddonsXhsAllStatistics;
- use addons\Xhs\common\models\AddonsXhsCate;
- use addons\Xhs\common\models\AddonsXhsComment;
- use addons\Xhs\common\models\AddonsXhsContent;
- use addons\Xhs\common\models\AddonsXhsGoodsStatistics;
- use addons\Xhs\common\models\AddonsXhsStatistics;
- use addons\Xhs\common\models\AddonsXhsUserLike;
- use common\components\sensitivewords\SensitiveWords;
- use common\enums\StatusEnum;
- use common\helpers\FormatHelper;
- use common\models\order\Order;
- use common\models\order\OrderDetail;
- use common\models\user\User;
- use common\models\user\UserFollow;
- use Yii;
- use api\controllers\OnAuthController;
- use common\models\goods\Goods;
- use common\models\goods\GoodsCate;
- use common\models\goods\GoodsCateRelate;
- use yii\db\Exception;
- use function EasyWeChat\Kernel\data_to_array;
- /**
- * 默认控制器
- *
- * Class DefaultController
- * @package addons\Material\api\modules\v1\controllers
- */
- class DefaultController extends OnAuthController
- {
- public $modelClass = '';
- /**
- * 不用进行登录验证的方法
- *
- * 例如: ['index', 'update', 'create', 'view', 'delete']
- * 默认全部需要验证
- *
- * @var array
- */
- protected $authOptional = ['index'];
- /**
- * 首页
- *
- * @return string
- */
- public function actionIndex()
- {
- return 'Hello world';
- }
- /**
- * ltm
- * 2022/01/05 14:39
- * 获取分类数据
- * @return string
- */
- public function actionGetCateList()
- {
- if (\Yii::$app->request->isGet) {
- $get = Yii::$app->request->get();
- // 检查提交的参数
- $res = Yii::$app->services->validate->validate($get,[
- [['keyword'], 'safe'],
- [['limit'],'default','value' => '100'],
- ]);
- if($res === false) return $this->error(Yii::$app->services->validate->getErrorMessage());
- $where = [];
- if($get['keyword']) $where[] = ['like', 'name', $get['keyword']];
- $where[] = ['=', 'mall_id', $this->mall_id];
- $where[] = ['>', 'status', StatusEnum::DISABLED];
- $order = 'sort,created_at desc';
- $params = array('where' => $where, 'order'=>$order, 'limit' => $get['limit'],'select' =>'id,mall_id,sort,name');
- $list = AddonsXhsCate::listPage($params, false, true);
- //获取配置
- $data = Yii::$app->services->setting->addons->get($this->mall_id, XhsEnum::ADDONS_NAME, 'basic');
- $result_array = explode(',',$data['user_level_limit']);
- $config = Yii::$app->services->setting->addons->get($this->mall_id,XhsEnum::ADDONS_NAME , 'basic');
- if(in_array($this->user['level'],$result_array)||empty($data['user_level_limit'])) {
- $config['is_publish'] = '1';
- } else {
- $config['is_publish'] = '0';
- }
- return $this->success('操作成功',compact('list','config'));
- }
- }
- /**
- * @Author: ltm
- * 详细
- * @DateTime: 2022/1/7 0007 18:06
- * @Copyright: copyright (c) 2021 广东七件事集团
- * @param $data
- * @return string
- */
- public function actionDetail(){
- if (\Yii::$app->request->isGet) {
- $get = Yii::$app->request->get();
- // 检查提交的参数
- $res = Yii::$app->services->validate->validate($get,[
- [['id'], 'required'],
- ]);
- if($res === false) return $this->error(Yii::$app->services->validate->getErrorMessage());
- $where[] = ['=', 'mall_id', $this->mall_id];
- $where[] = ['>=', 'status', StatusEnum::DISABLED];
- $where[] = ['=', 'id', $get['id']];
- $comment = AddonsXhsComment::lists([['content_id' => $get['id']]]);
- $detail = AddonsXhsContent::getOne($where, true,['goods','user']);
- $detail['source'] = json_decode($detail['source']);
- $like = AddonsXhsUserLike::getOne([['content_id' => $get['id']],['user_id' => $this->user_id]]);
- if($like && $like['is_likes'] == StatusEnum::ENABLED) {
- $detail['is_likes'] = StatusEnum::ENABLED;
- }else {
- $detail['is_likes'] = StatusEnum::DISABLED;
- }
- $follow = UserFollow::getOne([['follow_id' => $detail['user_id']],['user_id' => $this->user_id]]);
- if($follow && $follow['status'] == StatusEnum::ENABLED) {
- $detail['follow'] = StatusEnum::ENABLED;
- }else {
- $detail['follow'] = StatusEnum::DISABLED;
- }
- return $this->success('操作成功',compact('detail','comment'));
- }
- }
- /**
- * ltm
- * 2022/01/05 14:39
- * 获取小红书列表
- * @return string
- */
- public function actionGetList()
- {
- $retuest = Yii::$app->request;
- if ($retuest->isPost) {
- $post = Yii::$app->request->post();
- //检查提交的参数
- $res = Yii::$app->services->validate->validate($post,[
- [['id'], 'integer'],
- [['keyword','check_status','date_end','date_start','user_id','cate_id','page'], 'safe'],
- [['limit'],'default','value' => '15'],
- ]);
- if($res === false) return $this->error(Yii::$app->services->validate->getErrorMessage());
- $post = AddonsXhsContent::exceptNullVal($post);
- // 根据搜索会员昵称查询用户id
- if (!empty($post['user_name'])) {
- $user_ids = User::find()->select("id")->where(['mall_id' => $this->mall_id])->andWhere(['like', 'nickname', $post['user_name'] . '%', false])->asArray()->column();
- $where[] = ['or',['in', 'user_id', $user_ids],['like','user_name',$post['user_name']]];
- }
- if($post['date_start'] && $post['date_end']) $where[] = ['between', 'created_at', strtotime($post['date_start']),strtotime($post['date_end'])];
- $where[] = ['=', 'mall_id', $this->mall_id];
- if($post['keyword']) $where[] = ['or',['like','title',$post['keyword']],['like', 'main_text', $post['keyword']]];
- if($post['cate_id']) $where[] = ['=', 'cate_id', $post['cate_id']];
- if($post['user_id']) $where[] = ['=', 'user_id', $post['user_id']];
- if($post['user_id'] != $this->user_id) {
- $where[] = ['=', 'check_status', StatusEnum::ENABLED];
- $order = 'id desc';
- }else{
- $order = 'is_top desc, check_status asc, id desc';
- }
- $where[] = ['>','status',StatusEnum::DISABLED];
- $params = array('where' => $where, 'order'=>$order,'limit' => $post['limit']);
- $params['with'] = ['user','like' => function ($query) {
- $query->where(['user_id' => $this->user_id]);
- }];
- $list = AddonsXhsContent::listPage($params, false, true);
- if($list['list']) foreach ($list['list'] as $k => $v) {
- if($v['source']) $list['list'][$k]['source'] = json_decode($v['source']);
- if($v['like']['user_id'] == $this->user_id && $v['like']['is_likes'] == StatusEnum::ENABLED) {
- $list['list'][$k]['is_likes'] = StatusEnum::ENABLED;
- } else {
- $list['list'][$k]['is_likes'] = StatusEnum::DISABLED;
- }
- }
- $this->success('获取成功', $list);
- }
- }
- /**
- * @Author: ltm
- * @DateTime: 2022/1/10 0010 17:53
- * @Copyright: copyright (c) 2021 广东七件事集团
- * @param $data
- * @return String
- */
- public function actionGetVideoList()
- {
- $retuest = Yii::$app->request;
- if ($retuest->isPost) {
- $post = Yii::$app->request->post();
- //检查提交的参数
- $res = Yii::$app->services->validate->validate($post,[
- [['id'], 'required'],
- [['title','page'], 'safe'],
- [['limit'],'default','value' => '15'],
- ]);
- if($res === false) return $this->error(Yii::$app->services->validate->getErrorMessage());
- $post = AddonsXhsContent::exceptNullVal($post);
- if($post['title']) $where[] = ['=', 'title', $post['title']];
- if($post['user_id'] != $this->user_id) {
- $where[] = ['=', 'check_status', StatusEnum::ENABLED];
- $order = 'id desc';
- }else{
- $order = 'check_status,id desc';
- }
- $where[] = ['=', 'mall_id', $this->mall_id];
- $where[] = ['>','status',StatusEnum::DISABLED];
- $where[] = ['>=','content_type','2'];
- $where[] = ['<=','id',$post['id']];
- $params = array('where' => $where, 'order'=>$order, 'limit' => $post['limit']);
- $params['with'] = ['user','goods','like' => function ($query) {
- $query->where(['user_id' => $this->user_id]);
- }];
- $list = AddonsXhsContent::listPage($params, false, true);
- if($list['list']) foreach ($list['list'] as $k => $v) {
- if($v['source']) $list['list'][$k]['source'] = json_decode($v['source']);
- if($list['list'][$k]['user']){
- unset($list['list'][$k]['user']['id']);
- $list['list'][$k] = array_merge($list['list'][$k],$list['list'][$k]['user']);
- unset($list['list'][$k]['user']);
- }
- if($list['list'][$k]['goods']) {
- $list['list'][$k]['goods']['name'] = $list['list'][$k]['goods']['goods_name'];
- $list['list'][$k]['goods_list'] = $list['list'][$k]['goods'];
- unset($list['list'][$k]['goods']);
- }
- $list['list'][$k]['related_type'] = 1;//判断商品是否显示
- //配合前端修改数据结构,获取点赞数
- $list['list'][$k]['share_num'] = $list['list'][$k]['shares_count'];
- unset($list['list'][$k]['shares_count']);
- $list['list'][$k]['comment_num'] = $list['list'][$k]['discuss_count'];
- unset($list['list'][$k]['discuss_count']);
- $list['list'][$k]['like_num'] = $list['list'][$k]['stars_count'];
- unset($list['list'][$k]['stars_count']);
- if($v['like']['user_id'] == $this->user_id && $v['like']['is_likes'] == StatusEnum::ENABLED) {
- $list['list'][$k]['is_likes'] = StatusEnum::ENABLED;
- } else {
- $list['list'][$k]['is_likes'] = StatusEnum::DISABLED;
- }
- // 判断当前用户是否对发布视频用户进行关注
- $followExists = UserFollow::find()
- ->where(['user_id' => $this->user_id, 'follow_id' => $v['user_id'],
- 'status' => StatusEnum::ENABLED, 'mall_id' => $this->mall_id])
- ->exists();
- if ($followExists) {
- $list['list'][$k]['is_follow'] = StatusEnum::ENABLED;
- } else {
- $list['list'][$k]['is_follow'] = StatusEnum::DISABLED;
- }
- }
- $this->success('获取成功', $list);
- }
- }
- /**
- * ltm
- * 2021/01/05 14:39
- * 提交小红书
- * @return string
- */
- public function actionEdit()
- {
- if (\Yii::$app->request->isPost) {
- $params = Yii::$app->request->post();
- $res = Yii::$app->services->validate->validate($params, [
- [['cate_id','title','main_text'], 'required'],
- [['goods_id','id','source','content_type'],'safe']
- ]);
- if ($res === false) return $this->error(Yii::$app->services->validate->getErrorMessage());
- $params = AddonsXhsContent::exceptNullVal($params); //var_dump($params['source']);die;
- if($params['source']['source'] && $params['source']['type'] == StatusEnum::ENABLED) $params['source']['cover'] = $params['source']['source'][0];
- $params['source'] = json_encode($params['source']);
- $config = Yii::$app->services->setting->addons->get($this->mall_id, XhsEnum::ADDONS_NAME, 'basic');
- if($config['is_audit']== StatusEnum::DISABLED){ //开启不需要审核
- $params['check_status'] = StatusEnum::ENABLED;
- }else{
- $params['check_status'] = StatusEnum::DISABLED;
- }
- $params['status'] = StatusEnum::ENABLED;
- //判断后台是否开启会员等级限制
- $result_array = explode(',',$config['user_level_limit']);
- if($this->user['level']&&!in_array($this->user['level'],$result_array)&&$config['user_level_limit']) return $this->error('暂无权限发布');
- if($params['id']) $params['updated_at'] = time(); else $params['create_at'] = time();//更新时间
- $params['user_id'] = $this->user_id;
- $params['mall_id'] = $this->mall_id;
- //验证标题内容是否有敏感词汇
- if ($config['is_filter'] == StatusEnum::ENABLED) {
- $common = new SensitiveWords();
- $textStatus = $common->getTextStatus($params['main_text'],$this->mall_id);
- $titleStatus = $common->getTextStatus($params['title'],$this->mall_id);
- if ($textStatus['status'] != 0 || $titleStatus['status'] != 0 ) {
- $msg = $textStatus['msg'] ? $textStatus['msg'] : $titleStatus['msg'];
- return $this->error('敏感词过滤报错:'.$msg);
- }
- };
- if($params['pic_url']) $params['pic_url'] = json_encode($params['pic_url']);
- $res = AddonsXhsContent::setData($params);
- if ($res === false) throw new Exception(AddonsXhsContent::getStaticError());
- if(!$params['id']){
- AddonsXhsContent::handle($this->mall_id,'','push_count',$this->user_id);
- }
- return $this->success('操作成功');
- }
- }
- /**
- * ltm
- * 2021/01/06 14:39
- * 用户操作,点赞,浏览商品,访问
- * @return string
- */
- public function actionHandle()
- {
- if (\Yii::$app->request->isPost) {
- $params = Yii::$app->request->post();
- $res = Yii::$app->services->validate->validate($params, [
- [['id','type'], 'required']
- ]);
- if ($res === false) return $this->error(Yii::$app->services->validate->getErrorMessage());
- $res = AddonsXhsContent::handle($this->mall_id,$params['id'],$params['type'],$this->user_id);
- if ($res === false) throw new Exception(AddonsXhsStatistics::getStaticError());
- return $this->success('操作成功');
- }
- }
- /**
- * ltm
- * 2021/01/05 14:39
- * 删除
- * @return string
- */
- public function actionDel()
- {
- if (\Yii::$app->request->isPost) {
- $params = Yii::$app->request->post();
- $res = Yii::$app->services->validate->validate($params, [
- [['id'],'required'],
- ]);
- if ($res === false) return $this->error(Yii::$app->services->validate->getErrorMessage());
- $params['status'] = '-1';
- $params['mall_id'] = $this->mall_id;
- $params['updated_at'] = time();
- $params['user_id'] = $this->user_id;
- //var_dump($params);die;
- $find = AddonsXhsContent::getOne([['id'=>$params['id']]],true);
- if($find['user_id'] != $this->user_id) return $this->error('操作失败,你无权限操作');
- $res = AddonsXhsContent::setData($params); //var_dump($res);
- if ($res === false) throw new Exception(AddonsXhsContent::getStaticError());
- return $this->success('操作成功');
- }
- }
- /**
- * ltm
- * 2021/01/06 14:39
- * 评论
- * @return string
- */
- public function actionComment()
- {
- if (\Yii::$app->request->isPost) {
- $params = Yii::$app->request->post();
- $res = Yii::$app->services->validate->validate($params, [
- [['content_id','content','is_anonymous'],'required'],
- [['id','score'],'safe'],
- ]);
- $params = AddonsXhsComment::exceptNullVal($params);
- if ($res === false) return $this->error(Yii::$app->services->validate->getErrorMessage());
- $params['user_id'] = $this->user_id;
- $params['mall_id'] = $this->mall_id;
- $config = Yii::$app->services->setting->addons->get($this->mall_id, XhsEnum::ADDONS_NAME, 'basic');
- //验证标题内容是否有敏感词汇
- if ($config['is_filter'] == StatusEnum::ENABLED) {
- $common = new SensitiveWords();
- $textStatus = $common->getTextStatus($params['content'],$this->mall_id);
- if ($textStatus['status'] != 0) {
- $msg = $textStatus['msg'];
- return $this->error('敏感词过滤报错:'.$msg);
- }
- };
- $trans = Yii::$app->db->beginTransaction();
- try {
- if($params['id']) {
- $find = AddonsXhsComment::getOne([['id'=>$params['id']]],true);
- if($find['user_id'] != $this->user_id) return $this->error('操作失败,你无权限操作');
- }
- $find_content = AddonsXhsContent::getOne([['id' => $params['content_id']]],true);
- if($find_content['check_status'] == StatusEnum::DISABLED) return $this->error('审核中不可以评论,操作失败');
- $res = AddonsXhsComment::setData($params);
- AddonsXhsContent::handle($this->mall_id,$params['content_id'],'discuss', $this->user_id);
- $trans->commit();
- } catch (\Exception $e) {
- $trans->rollBack();
- $exception = FormatHelper::exception($e, "小红书点评论,访问统计操作失败");
- Yii::error($exception);
- }
- if ($res === false) return $this->success('操作失败');
- $data = data_to_array($res);
- $data['user']['avatar_url'] = $this->user['avatar_url'];
- $data['user']['id'] = $this->user['id'];
- $data['user']['nickname'] = $this->user['nickname'];
- return $this->success('操作成功',$data);
- }
- }
- /**
- * @Author: ltm
- * @DateTime: 2022/1/10 0010 17:04
- * @Copyright: copyright (c) 2021 广东七件事集团
- * @param $data
- * @return bool
- */
- public function actionCommentList(){
- if (\Yii::$app->request->isGet) {
- $get = Yii::$app->request->get();
- // 检查提交的参数
- $res = Yii::$app->services->validate->validate($get,[
- [['id'], 'required'],
- ]);
- if($res === false) return $this->error(Yii::$app->services->validate->getErrorMessage());
- $params['where'][] = ['content_id' => $get['id'],'status'=>StatusEnum::ENABLED];
- $params['with'] = ['user'];
- $params['order'] = 'is_top desc,id desc';
- $comment = AddonsXhsComment::listPage($params);
- if($comment['list']){
- foreach ($comment['list'] as $k => $v){
- $comment['list'][$k]['created_at'] = date('Y-m-d H:i:s',$v['created_at']);
- $comment['list'][$k]['updated_at'] = date('Y-m-d H:i:s',$v['updated_at']);
- }
- }
- return $this->success('操作成功',$comment);
- }
- }
- /**
- * 用户点赞过数据
- * @return void
- */
- public function actionLink()
- {
- // 获取用户提交数据
- $page = Yii::$app->request->post('page', 1);
- $limit = Yii::$app->request->post('limit', 15);
- //检查提交的参数
- if (!is_numeric($page) || !is_numeric($limit)) {
- return $this->error('分页参数必须为数字');
- }
- $user_id = $this->user_id;
- $mall_id = $this->mall_id;
- try {
- // 获取用户点赞过的数据
- $contentIds = AddonsXhsUserLike::getLikeContentIds($user_id, $mall_id);
- $contentIds = array_column($contentIds, 'content_id');
- // 根据点赞过的数据ID,获取点赞过的数据
- $where = [
- ['>', 'status', StatusEnum::DISABLED],
- ['in', 'id', $contentIds],
- ];
- $order = 'check_status asc,id desc';
- $params = compact('where', 'order', 'limit');
- $params['with'] = [
- 'user',
- 'like' => function ($query) use ($user_id) {
- $query->where(['user_id' => $user_id]);
- },
- ];
- $params['page'] = $page;
- $contentList = AddonsXhsContent::listPage($params, false, true);
- if ($contentList['list']) {
- foreach ($contentList['list'] as &$value) {
- if ($value['source']) {
- $value['source'] = json_decode($value['source'], true);
- }
- }
- unset($value);
- }
- return $this->success('请求成功', $contentList);
- } catch (\Exception $e) {
- return $this->error('请求失败');
- }
- }
- // 置顶
- public function actionPinned(){
- if (\Yii::$app->request->isPost) {
- $params = Yii::$app->request->post();
- $res = Yii::$app->services->validate->validate($params, [
- [['id','is_top'],'required'],
- ]);
- if ($res === false) return $this->error(Yii::$app->services->validate->getErrorMessage());
- $params['mall_id'] = $this->mall_id;
- $params['updated_at'] = time();
- $params['user_id'] = $this->user_id;
- $find = AddonsXhsContent::getOne([['id'=>$params['id']]],true);
- if($find['user_id'] != $this->user_id) return $this->error('操作失败,你无权限操作');
- $res = AddonsXhsContent::setData($params);
- if ($res === false) throw new Exception(AddonsXhsContent::getStaticError());
- return $this->success('操作成功');
- }
- }
- }
|