| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520 |
- <?php
- namespace app\backend\modules\goods\controllers;
- use app\backend\modules\uploadVerificate\UploadVerificationBaseController;
- use app\common\helpers\Url;
- use app\common\models\comment\CommentConfig;
- use app\common\models\Goods;
- use app\common\models\Member;
- use app\backend\modules\goods\models\Comment;
- use app\backend\modules\goods\services\CommentService;
- use app\common\components\BaseController;
- use app\common\helpers\PaginationHelper;
- use app\common\models\MemberLevel;
- /**
- * Created by PhpStorm.
- * Author: 芸众商城 www.yunzshop.com
- * Date: 2017/2/27
- * Time: 下午5:09
- */
- class CommentController extends UploadVerificationBaseController
- {
- /**
- * 评论设置
- */
- public function index()
- {
- return view('goods.comment.index')->render();
- }
- /**
- * 评论列表
- */
- public function list()
- {
- return view('goods.comment.list')->render();
- }
- /**
- * 审核列表
- */
- public function audit()
- {
- return view('goods.comment.audit')->render();
- }
- //评论设置数据&保存
- public function saveSet()
- {
- $data = request()->form;
- $config_data = CommentConfig::getSetConfig();
- if ($data) {
- if ($config_data) {
- $res = CommentConfig::find($config_data['id']);
- $res->delete();
- }
- $res = new CommentConfig();
- $resData = [
- 'uniacid' => \YunShop::app()->uniacid,
- 'is_comment_audit' => $data['is_comment_audit'],
- 'is_default_good_reputation' => $data['is_default_good_reputation'],
- 'is_order_comment_entrance' => $data['is_order_comment_entrance'],
- 'is_additional_comment' => $data['is_additional_comment'],
- 'is_score_latitude' => $data['is_score_latitude'],
- 'top_sort' => $data['top_sort'],
- 'is_order_detail_comment_show' => $data['is_order_detail_comment_show'],
- ];
- $res->fill($resData);
- $res->save();
- }
- return $this->successJson('success',[
- 'data' => $config_data
- ]);
- }
- /**
- * 更改评论状态
- * @return \Illuminate\Http\JsonResponse
- */
- public function changeCommentStatus()
- {
- $comment_id = request()->comment_id;
- $type = request()->type;
- switch ($type) {
- case 'show':
- $column = 'is_show';
- break;
- case 'top':
- $column = 'is_top';
- break;
- default:
- $column = '';
- }
- if (!$column || !$comment_id) {
- return $this->errorJson('参数错误');
- }
- $commentModel = Comment::uniacid()->find($comment_id);
- $commentModel->$column = request()->$column;
- $commentModel->save();
- return $this->successJson('success');
- }
- //修改审核状态
- public function changeAuditStatus()
- {
- $comment_id = request()->comment_id;
- $commentModel = Comment::uniacid()->find($comment_id);
- if ($commentModel->audit_status != Comment::wait_audit) {
- return $this->errorJson('该评论状态不可审核');
- }
- $commentModel->audit_status = Comment::pass_audit;
- //追评审核
- if ($commentModel->type == 3) {
- $commentModel::updatedAdditionalCommentId($commentModel->comment_id,$comment_id);
- }
- $commentModel->save();
- \Log::info('后台通过评论审核',\YunShop::app()->uid);
- return $this->successJson('success');
- }
- public function commentData()
- {
- $pageSize = 10;
- $search = CommentService::Search(request()->search);
- if (isset(request()->type) && request()->type == 'audit') {
- $list = Comment::getComments(request()->search,'audit')->where('audit_status',Comment::wait_audit)->paginate($pageSize)->toArray();
- } else {
- $list = Comment::getComments(request()->search)->whereIn('audit_status',[Comment::not_audit,Comment::pass_audit])->paginate($pageSize)->toArray();
- }
- foreach ($list['data'] as &$item) {
- if (request()->type == 'audit' && $item['type'] == 3) {
- $item['level'] = 5;//追评默认好评
- }
- $item['head_img_url'] = yz_tomedia($item['head_img_url']);
- $item['goods']['thumb'] = yz_tomedia($item['goods']['thumb']);
- }
- $data = [
- 'list' => $list,
- 'total' => $list['total'],
- 'search' => $search,
- ];
- return $this->successJson('ok', $data);
- }
- public function editView()
- {
- return view('goods.comment.info', ['id' => request()->id, 'goods_id' => request()->goods_id, 'default_level' => \Setting::get('shop.member')['level_name']?:'普通会员','levels' => $this->getLevels()])->render();
- }
- /**
- * 添加评论
- */
- public function addComment()
- {
- $goods_id = request()->goods_id;
- $goods = [];
- if (!empty($goods_id)) {
- $goods = Goods::getGoodsById($goods_id);
- if (!$goods) {
- return $this->message('未找到此商品或该商品已被删除', Url::absoluteWeb('goods.comment.index'));
- }
- $goods = $goods->toArray();
- }
- $commentModel = new Comment();
- $commentModel->goods_id = $goods_id;
- $requestComment = request()->comment;
- if ($requestComment) {
- $requestComment['goods_id'] = $goods_id;
- $comment_time = time();
- if ( $requestComment['time_state'] && $requestComment['comment_time'] > 0){
- $comment_time = $requestComment['comment_time'] / 1000;
- }
- unset($requestComment['time_state']);
- unset($requestComment['comment_time']);
- if (!CommentConfig::isScoreLatitude()) {
- unset($requestComment['score_latitude']);
- } else {
- //insert方法不走模型,手动转换json
- $requestComment['score_latitude'] = json_encode($requestComment['score_latitude']);
- }
- //将数据赋值到model
- $commentModel->setRawAttributes($requestComment);
- //其他字段赋值
- $commentModel->uniacid = \YunShop::app()->uniacid;
- if (empty($commentModel->nick_name)) {
- $commentModel->nick_name = Member::getRandNickName()->nickname;
- }
- if (empty($commentModel->head_img_url)) {
- $commentModel->head_img_url = Member::getRandAvatar()->avatar;
- }
- $commentModel = CommentService::comment($commentModel);
- //字段检测
- $validator = $commentModel->validator($commentModel->getAttributes());
- if ($validator->fails()) {
- $this->errorJson($validator->messages());
- } else {
- $commentData = $commentModel->getAttributes();
- $commentData['created_at'] = $comment_time;
- $commentData['updated_at'] = $comment_time;
- //数据保存
- // if ($commentModel->save()) {
- if ($commentModel->insert($commentData)) {
- Goods::updatedComment($commentModel->goods_id);
- //显示信息并跳转
- return $this->successJson('评论创建成功');
- } else {
- $this->errorJson('评论创建失败');
- }
- }
- }
- $goods['thumb'] = yz_tomedia($goods['thumb']);
- $data = [
- 'comment' => $commentModel,
- 'goods' => $goods,
- 'is_score_latitude' => CommentConfig::isScoreLatitude()
- ];
- return $this->successJson('ok', $data);
- // return view('goods.comment.info', [
- // 'comment' => $commentModel,
- // 'goods' => $goods
- // ])->render();
- }
- public function searchGoodsV2()
- {
- $keyword = request()->keyword;
- $goods = Goods::select('id', 'title', 'thumb')
- ->where('title', 'like', '%' . $keyword . '%')
- ->where('status', 1)
- ->get();
- if (!$goods->isEmpty()) {
- $goods = set_medias($goods->toArray(), array('thumb', 'share_icon'));
- }
- $data = [
- 'goods' => $goods,
- 'exchange' => request()->exchange,
- ];
- return $this->successJson('ok', $data);
- // return view('goods.query', [
- // 'goods' => $goods,
- // 'exchange' => \YunShop::request()->exchange,
- // ])->render();
- }
- public function searchGoods()
- {
- $keyword = \YunShop::request()->keyword;
- $goods = Goods::select('id', 'title', 'thumb')
- ->where('title', 'like', '%' . $keyword . '%')
- ->where('status', 1)
- ->get();
- if (!$goods->isEmpty()) {
- $goods = set_medias($goods->toArray(), array('thumb', 'share_icon'));
- }
- return view('goods.query', [
- 'goods' => $goods,
- 'exchange' => \YunShop::request()->exchange,
- ])->render();
- }
- /**
- * 修改评论
- */
- public function updated()
- {
- $id = request()->id;
- $commentModel = Comment::getComment($id)->first();
- if (!$commentModel) {
- return $this->errorJson('无此记录或已被删除');
- }
- $requestComment = request()->comment;
- if ($requestComment) {
- $goods_id = $commentModel->goods_id;
- if (!empty(request()->goods_id) && request()->goods_id != $goods_id){
- if (!$goods = Goods::getGoodsById(request()->goods_id)) return $this->errorJson('选择的商品不存在或已删除');
- $goods_id = $goods->id;
- }
- $comment_time = 0;
- if ($requestComment['time_state'] && $requestComment['comment_time'] > 0){
- $comment_time = $requestComment['comment_time'] / 1000;
- }
- unset($requestComment['time_state']);
- unset($requestComment['comment_time']);
- if (!CommentConfig::isScoreLatitude()) {
- unset($requestComment['score_latitude']);
- } else {
- //insert方法不走模型,手动转换json
- $requestComment['score_latitude'] = json_encode($requestComment['score_latitude']);
- }
- //将数据赋值到model
- $commentModel->setRawAttributes($requestComment);
- if (empty($commentModel->nick_name)) {
- $commentModel->nick_name = Member::getRandNickName()->nick_name;
- }
- if (empty($commentModel->head_img_url)) {
- $commentModel->head_img_url = Member::getRandAvatar()->avatar;
- }
- $commentModel->images = isset($commentModel->images) && is_array($commentModel->images) ? serialize($commentModel->images) : serialize([]);
- if ($comment_time) $commentModel->created_at = $comment_time;
- $commentModel->goods_id = $goods_id;
- //字段检测
- $validator = $commentModel->validator($commentModel->getAttributes());
- if ($validator->fails()) {
- $this->errorJson($validator->messages());
- } else {
- //数据保存
- if ($commentModel->save()) {
- //显示信息并跳转
- return $this->successJson('评论保存成功');
- } else {
- $this->errorJson('评论保存失败');
- }
- }
- }
- $commentModel['head_img_url_url'] = yz_tomedia($commentModel['head_img_url']);
- $commentModel['images'] = unserialize($commentModel['images']);
- $imgs = $commentModel['images'];
- foreach ($imgs as &$item) {
- $item = yz_tomedia($item);
- }
- $commentModel['images_url'] = $imgs;
- $commentModel['comment_time'] = is_numeric($commentModel['created_at']) ? : strtotime($commentModel['created_at']);
- $goods = Goods::getGoodsById($commentModel->goods_id);
- $goods['thumb'] = yz_tomedia($goods['thumb']);
- $data = [
- 'id' => $id,
- 'comment' => $commentModel,
- 'goods' => $goods,
- 'score_latitude' => $commentModel['score_latitude'],
- 'is_score_latitude' => CommentConfig::isScoreLatitude()
- ];
- return $this->successJson('ok', $data);
- // return view('goods.comment.info', [
- // 'id' => $id,
- // 'comment' => $commentModel,
- // 'goods' => $goods
- // ])->render();
- }
- public function replyView()
- {
- return view('goods.comment.reply', ['id' => request()->id,'page_type' => request()->page_type])->render();
- }
- /**
- * 评论回复
- */
- public function reply()
- {
- $id = intval(request()->id);
- $commentModel = Comment::getComment($id)->first();
- if (!$commentModel) {
- return $this->errorJson('无此记录或已被删除');
- }
- if (request()->reply) {
- return $this->createReply();
- }
- $commentModel = $commentModel->toArray();
- $goods = Goods::getGoodsById($commentModel['goods_id']);
- $commentModel['images'] = unserialize($commentModel['images']);
- foreach ($commentModel['images'] as $key=>$item) {
- $commentModel['images'][$key] = yz_tomedia($item);
- }
- foreach ($commentModel['has_many_reply'] as &$item) {
- $item['images'] = unserialize($item['images']);
- foreach ($item['images'] as &$it) {
- $it = yz_tomedia($it);
- }
- }
- $goods['thumb'] = yz_tomedia($goods['thumb']);
- $after_content = Comment::getAfterContent($commentModel['id']);
- if ($after_content) {
- $after_content = $after_content->toArray();
- $after_content['images'] = unserialize($after_content['images']);
- foreach ($after_content['images'] as &$image) {
- $image = yz_tomedia($image);
- }
- }
- if ($commentModel['type'] == 3) {
- $commentModel['level'] = 5;//追评默认好评
- }
- $data = [
- 'comment' => $commentModel,
- 'goods' => $goods,
- 'page_type' => request()->page_type,
- 'after_content' => $after_content,
- 'score_latitude' => $commentModel['score_latitude'],
- ];
- if(!is_null($comment_detail_arr = \app\common\modules\shop\ShopConfig::current()->get('comment_detail_data'))){
- foreach ($comment_detail_arr as $v){
- $class = array_get($v, 'class');
- $function = array_get($v, 'function');
- if ($other_data = $class::$function($commentModel)){
- $data[$other_data['key']] = $other_data;
- }
- }
- }
- return $this->successJson('ok', $data);
- // return view('goods.comment.reply', [
- // 'comment' => $commentModel,
- // 'goods' => $goods
- // ])->render();
- }
- public function createReply()
- {
- $id = intval(request()->id);
- $commentModel = new Comment;
- $requestReply = request()->reply;
- if ($requestReply) {
- //主评论状态修改
- $commentStatusModel = Comment::uniacid()->find($id);
- $commentStatusModel->is_show = request()->is_show;
- $commentStatusModel->is_top = request()->is_top;
- $commentStatusModel->save();
- //内容为空
- if (empty($requestReply['reply_content'])) {
- return $this->successJson('修改状态成功');
- }
- $member = Member::getMemberById($requestReply['reply_id']);
- $requestReply = CommentService::reply($requestReply, $member);
- //将数据赋值到model
- $commentModel->setRawAttributes($requestReply);
- $validator = $commentModel->validator($commentModel->getAttributes());
- //字段检测
- if ($validator->fails()) {
- return $this->errorJson($validator->messages());
- } else {
- //数据保存
- if (Comment::saveComment($commentModel->getAttributes())) {
- //显示信息并跳转
- // return $this->message('评论回复保存成功', Url::absoluteWeb('goods.comment.reply', ['id' => $id]));
- return $this->successJson('评论回复保存成功');
- } else {
- return $this->errorJson('评论回复保存失败');
- }
- }
- }
- }
- /**
- * 删除评论
- */
- public function deleted()
- {
- $comment = Comment::getComment(request()->id);
- if (!$comment) {
- return $this->errorJson('无此评论或已经删除');
- }
- $result = Comment::daletedComment(request()->id);
- if ($result) {
- return $this->successJson('删除评论成功');
- } else {
- return $this->errorJson('删除评论失败');
- }
- }
- private function getLevels()
- {
- $levels = MemberLevel::uniacid()
- ->select('id', 'level', 'level_name')
- ->get();
- return $levels;
- }
- }
|