validate()) { return ['code' => 1, 'msg' => $this->getErrorSummary(false)[0]]; } $orderClass = 'app\models\Order'; $commentClass = 'app\models\OrderComment'; $detailClass = 'app\models\OrderDetail'; $order = $orderClass::findOne([ 'id' => $this->order_id, 'saas_id' => $this->saas_id, 'is_delete' => 0, ]); if (!$order) { return [ 'code' => 1, 'msg' => '订单不存在或已删除', ]; } $goods_list = Json::decode($this->goods_list); if (!$goods_list) { return [ 'code' => 1, 'msg' => '商品信息不能为空', ]; } Yii::error($goods_list); $t = \Yii::$app->db->beginTransaction(); foreach ($goods_list as $goods) { $order_detail = $detailClass::findOne([ 'id' => $goods['order_detail_id'], 'order_id' => $order->id, 'goods_id' => $goods['goods_id'], 'is_delete' => 0, ]); if (!$order_detail) { continue; } if (empty($goods['content'])) { return [ 'code' => 1, 'msg' => '评论失败,请输入评价内容!', ]; } if(is_wechat_platform()){ if (!is_open_platform()) { $app = Yii::$app->controller->wechatMini; } else { if($order->store_id == -1){ $storeInfo = []; }else{ $storeInfo = Store::findOne($order->store_id); } $plugin = \Yii::$app->getAttr('plugin'); $open = false; if (in_array('duli_store', $plugin['union'])) { $open = true; } $self_mini = Option::get('self_mini', $order->store_id,'store', 0)['value']; if (\Yii::$app->prod_is_dandianpu() && (!$self_mini || !$open)) { $app = $this->setSingleStoreWechat($order->is_platform); } else { if((isset($storeInfo->business_model) && $storeInfo->business_model != 1) || !$storeInfo || $order->is_platform){ $app = $this->setBussinessWechat(); }else{ $app = $this->setWechat($order->store_id); } } } if ($app) { $res = $app->content_security->checkText($goods['content']); if ($res['errcode'] > 0) { return [ 'code' => 1, 'msg' => '评论失败,内容违法!'.json_encode($res['errmsg']), ]; } } } $user_id = 0; if ($order->store_id > 0) { $saasUser = SaasUser::findOne($this->saas_id); $user = User::findOne(['binding' => $saasUser->mobile, 'store_id' => $order->store_id]); $user_id = $user->id ?? 0; } $order_comment = new $commentClass(); $order_comment->store_id = $this->store_id; $order_comment->order_detail_id = $order_detail->id; $order_comment->user_id = $user_id; $order_comment->saas_id = $this->saas_id; $order_comment->order_id = $this->order_id; $order_comment->goods_id = $order_detail->goods_id; $order_comment->score = $goods['score']; $order_comment->content = Html::encode($goods['content']); $order_comment->created_at = time(); if ($this->is_virtual) { $order_comment->is_virtual = 1; $order_comment->virtual_user = '匿名用户'; $order_comment->virtual_avatar = \Yii::$app->request->hostInfo . \Yii::$app->request->baseUrl . '/web/v1/statics/images/avatar.png'; } if ($order->mch_id > 0) { $order_comment->mch_id = $order->mch_id; } $order_comment->content = preg_replace('/[\xf0-\xf7].{3}/', '', $order_comment->content); $pic_list = []; foreach ($goods['pic_list'] as $pic) { if ($pic['url']) { $pic_list[] = Html::encode($pic['url']); } else { $pic_list[] = Html::encode($pic); } } $order_comment->pic_list = Json::encode($pic_list); if (!$order_comment->save()) { $t->rollBack(); return ['code' => 1, 'msg' => $order_comment->errors[0]]; } } $order->is_comment = 1; if ($order->save()) { $t->commit(); return [ 'code' => 0, 'msg' => '提交成功', 'type' => $this->type, ]; } else { $t->rollBack(); return ['code' => 1, 'msg' => $order->errors[0]]; } } // 单店铺 public function setSingleStoreWechat($is_platform = false) { if($is_platform){ // 证书 if (!is_dir(\Yii::$app->runtimePath . '/pem_dandianpu')) { mkdir(\Yii::$app->runtimePath . '/pem_dandianpu'); file_put_contents(\Yii::$app->runtimePath . '/pem_dandianpu/index.html', ''); } $config = [ 'app_id' => Option::get('platform_mch_appid', 0, 'saas', '')['value'], 'secret' => Option::get('platform_mch_key', 0, 'saas', '')['value'], 'response_type' => 'array' ]; $wechatMini = Factory::miniProgram($config); return $wechatMini->app_code; } // 证书 if (!is_dir(\Yii::$app->runtimePath . '/pem')) { mkdir(\Yii::$app->runtimePath . '/pem'); file_put_contents(\Yii::$app->runtimePath . '/pem/index.html', ''); } $config = [ 'app_id' => Option::get('one_store_wechat_appid', 0, 'saas', '')['value'], 'secret' => Option::get('one_store_wechat_secret', 0, 'saas', '')['value'], 'response_type' => 'array' ]; return Factory::miniProgram($config); } public function setBussinessWechat() { // 证书 if (!is_dir(\Yii::$app->runtimePath . '/pem')) { mkdir(\Yii::$app->runtimePath . '/pem'); file_put_contents(\Yii::$app->runtimePath . '/pem/index.html', ''); } $config = [ 'app_id' => Option::get('platform_appid', 0, 'saas')['value'], 'secret' => Option::get('platform_key', 0, 'saas')['value'], 'response_type' => 'array' ]; return Factory::miniProgram($config); } }