|
@@ -4,7 +4,9 @@ namespace app\admin\controller\client;
|
|
|
|
|
|
use app\controller\Curd;
|
|
|
use app\model\ClientFavorite;
|
|
|
+use app\model\Goods;
|
|
|
use app\model\GoodsEvaluate;
|
|
|
+use support\exception\BusinessException;
|
|
|
use support\Request;
|
|
|
use support\Response;
|
|
|
|
|
@@ -17,9 +19,24 @@ class EvaluateController extends Curd
|
|
|
|
|
|
public function select(Request $request): Response
|
|
|
{
|
|
|
+ $goodsName = $request->get('goods_name','');
|
|
|
+ $searchTimes = $request->get('goods_evaluate_addtimes',[]);
|
|
|
+
|
|
|
[$where, $format, $limit, $field, $order] = $this->selectInput($request);
|
|
|
$order = $request->get('order', 'desc');
|
|
|
$field = $field ?? 'goods_evaluate_addtimes';
|
|
|
+
|
|
|
+ if ($goodsName != ''){
|
|
|
+ $goodsIds = Goods::where('goods_name','like','%'.$goodsName.'%')->pluck('goods_id')->toArray();
|
|
|
+ $where['join_evaluate_goods_id'] = ['in',implode(',',$goodsIds)];
|
|
|
+ }
|
|
|
+ if(!empty($searchTimes)){
|
|
|
+ $searchTimes[0] = !empty($searchTimes[0]) ? strtotime($searchTimes[0]) : time();
|
|
|
+ $searchTimes[1] = !empty($searchTimes[1]) ? strtotime($searchTimes[1]) : time();
|
|
|
+
|
|
|
+ $where['goods_evaluate_addtimes'] = $searchTimes;
|
|
|
+ }
|
|
|
+
|
|
|
$query = $this->doSelect($where, $field, $order);
|
|
|
return $this->doFormat($query, $format, $limit);
|
|
|
}
|
|
@@ -70,4 +87,167 @@ class EvaluateController extends Curd
|
|
|
}
|
|
|
return $model;
|
|
|
}
|
|
|
+
|
|
|
+ public function afterQuery($items)
|
|
|
+ {
|
|
|
+ foreach ($items as &$item){
|
|
|
+ if (!empty($item->goods_evaluate_json)){
|
|
|
+ $imagesStr = '';
|
|
|
+ $goodsEvaluateJson = json_decode($item->goods_evaluate_json,true);
|
|
|
+ if (isset($goodsEvaluateJson['images'])){
|
|
|
+ foreach ($goodsEvaluateJson['images'] as $images){
|
|
|
+ $imagesStr = $imagesStr .= getenv('STORAGE_DOMAIN').$images.',';
|
|
|
+ }
|
|
|
+ }
|
|
|
+ $item->goods_evaluate_json = rtrim($imagesStr,',');
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return $items;
|
|
|
+ }
|
|
|
+
|
|
|
+ public function info(Request $request):Response
|
|
|
+ {
|
|
|
+ $goodsEvaluateId = $request->get('goods_evaluate_id','');
|
|
|
+ if (!$goodsEvaluateId){
|
|
|
+ return json_fail('参数异常');
|
|
|
+ }
|
|
|
+
|
|
|
+ $evaluate = GoodsEvaluate::with([
|
|
|
+ 'member'=>function($query){
|
|
|
+ $query->select('member_id','member_mobile');
|
|
|
+ },
|
|
|
+ 'cert' => function ($query){
|
|
|
+ $query->select('join_cert_member_id','member_cert_name');
|
|
|
+ },
|
|
|
+ 'info' => function ($query){
|
|
|
+ $query->select('join_info_member_id','member_info_nickname','member_info_headimg');
|
|
|
+ },
|
|
|
+ 'goods' => function($query){
|
|
|
+ $query->select('goods_id','goods_name','goods_cover','goods_sales_price');
|
|
|
+ },
|
|
|
+ 'order' => function($query){
|
|
|
+ $query->select('order_id','order_amount_pay','order_is_complete','order_status_system','order_status_payment','order_addtimes');
|
|
|
+ }
|
|
|
+ ])->where('goods_evaluate_id',$goodsEvaluateId)
|
|
|
+ ->first();
|
|
|
+
|
|
|
+ if (!empty($evaluate->goods_evaluate_json)){
|
|
|
+ $imagesStr = '';
|
|
|
+ $originStr = '';
|
|
|
+ $goodsEvaluateJson = json_decode($evaluate->goods_evaluate_json,true);
|
|
|
+ if (isset($goodsEvaluateJson['images'])){
|
|
|
+ foreach ($goodsEvaluateJson['images'] as $images){
|
|
|
+ $imagesStr = $imagesStr .= getenv('STORAGE_DOMAIN').$images.',';
|
|
|
+ $originStr = $originStr .= str_replace('/thumb','',$imagesStr);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ $evaluate->goods_evaluate_json_origin = rtrim($originStr,',');
|
|
|
+ $evaluate->goods_evaluate_json = rtrim($imagesStr,',');
|
|
|
+ }
|
|
|
+
|
|
|
+ if (!empty($evaluate->info)){
|
|
|
+ $evaluate->info->member_info_headimg = $evaluate->info->member_info_headimg ?? getenv('STORAGE_DOMAIN').'/images/avatar_default.png';
|
|
|
+ $evaluate->info->member_info_nickname ?? substr($evaluate->member->member_mobile,-4).'用户';
|
|
|
+ }
|
|
|
+ if (!empty($evaluate->goods)){
|
|
|
+ $evaluate->goods->goods_cover = getenv('STORAGE_DOMAIN').$evaluate->goods->goods_cover;
|
|
|
+ $evaluate->goods->goods_cover_origin = str_replace('/thumb','',$evaluate->goods->goods_cover);
|
|
|
+ }
|
|
|
+
|
|
|
+ return json_success('success',$evaluate);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 添加
|
|
|
+ * @param Request $request
|
|
|
+ * @return Response
|
|
|
+ * @throws BusinessException
|
|
|
+ */
|
|
|
+ public function insert(Request $request): Response
|
|
|
+ {
|
|
|
+ try {
|
|
|
+ $data = $this->insertInput($request);
|
|
|
+ $this->doInsert($data);
|
|
|
+
|
|
|
+ } catch (BusinessException $customException) {
|
|
|
+ return json_fail($customException->getMessage());
|
|
|
+ } catch (\Exception $e) {
|
|
|
+ dump($e->getMessage());
|
|
|
+ return json_fail('数据写入失败');
|
|
|
+ }
|
|
|
+ return json_success('success');
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 插入前置方法
|
|
|
+ * @param Request $request
|
|
|
+ * @return array
|
|
|
+ * @throws BusinessException
|
|
|
+ */
|
|
|
+ protected function insertInput(Request $request): array
|
|
|
+ {
|
|
|
+ $data = $this->inputFilter($request->post());
|
|
|
+
|
|
|
+ if (!empty($data['goods_evaluate_json'])){
|
|
|
+ $goodsEvaluateJson = explode(',',$data['goods_evaluate_json']);
|
|
|
+ foreach ($goodsEvaluateJson as $key => $item){
|
|
|
+ $goodsEvaluateJson[$key] = str_replace(getenv('STORAGE_DOMAIN'), '', $item);
|
|
|
+ }
|
|
|
+
|
|
|
+ $data['goods_evaluate_json'] = json_encode(['images'=>$goodsEvaluateJson]);
|
|
|
+ }
|
|
|
+
|
|
|
+ return $data;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 更新
|
|
|
+ * @param Request $request
|
|
|
+ * @return Response
|
|
|
+ * @throws BusinessException
|
|
|
+ */
|
|
|
+ public function update(Request $request): Response
|
|
|
+ {
|
|
|
+ try {
|
|
|
+ [$id, $data] = $this->updateInput($request);
|
|
|
+ $this->doUpdate($id, $data);
|
|
|
+ } catch (BusinessException $e) {
|
|
|
+ return json_fail($e->getMessage());
|
|
|
+ } catch (\Exception $e) {
|
|
|
+ dump($e->getMessage());
|
|
|
+ return json_fail('数据更新失败');
|
|
|
+ }
|
|
|
+
|
|
|
+ return json_success('success');
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 更新前置方法
|
|
|
+ * @param Request $request
|
|
|
+ * @return array
|
|
|
+ * @throws BusinessException
|
|
|
+ */
|
|
|
+ protected function updateInput(Request $request): array
|
|
|
+ {
|
|
|
+ $primary_key = $this->model->getKeyName();
|
|
|
+ $id = $request->post($primary_key);
|
|
|
+ $data = $this->inputFilter($request->post());
|
|
|
+ $model = $this->model->find($id);
|
|
|
+ if (!$model) {
|
|
|
+ throw new BusinessException('记录不存在', 2);
|
|
|
+ }
|
|
|
+
|
|
|
+ if (!empty($data['goods_evaluate_json'])){
|
|
|
+ $goodsEvaluateJson = explode(',',$data['goods_evaluate_json']);
|
|
|
+ foreach ($goodsEvaluateJson as $key => $item){
|
|
|
+ $goodsEvaluateJson[$key] = str_replace(getenv('STORAGE_DOMAIN'), '', $item);
|
|
|
+ }
|
|
|
+
|
|
|
+ $data['goods_evaluate_json'] = json_encode(['images'=>$goodsEvaluateJson]);
|
|
|
+ }
|
|
|
+
|
|
|
+ unset($data[$primary_key]);
|
|
|
+ return [$id, $data];
|
|
|
+ }
|
|
|
+
|
|
|
}
|