EvaluateController.php 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117
  1. <?php
  2. namespace addons\TinyShop\api\modules\v1\controllers\member;
  3. use Yii;
  4. use yii\helpers\Json;
  5. use yii\web\NotFoundHttpException;
  6. use yii\web\UnprocessableEntityHttpException;
  7. use api\controllers\UserAuthController;
  8. use common\helpers\ResultHelper;
  9. use common\enums\StatusEnum;
  10. use addons\TinyShop\common\models\product\Evaluate;
  11. use addons\TinyShop\common\forms\EvaluateForm;
  12. use addons\TinyShop\common\forms\EvaluateStatForm;
  13. /**
  14. * 评论
  15. *
  16. * Class EvaluateController
  17. * @package addons\TinyShop\api\modules\v1\controllers\member
  18. * @author jianyan74 <751393839@qq.com>
  19. */
  20. class EvaluateController extends UserAuthController
  21. {
  22. /**
  23. * @var Evaluate
  24. */
  25. public $modelClass = Evaluate::class;
  26. /**
  27. * @return mixed|\yii\db\ActiveRecord
  28. */
  29. public function actionCreate()
  30. {
  31. $data = Yii::$app->request->post('evaluate');
  32. if (!$data) {
  33. return ResultHelper::json(422, '找不到数据');
  34. }
  35. try {
  36. $data = Json::decode($data);
  37. } catch (\Exception $e) {
  38. return ResultHelper::json(422, '提交的数据格式有误');
  39. }
  40. // 开始事物
  41. $transaction = Yii::$app->db->beginTransaction();
  42. try {
  43. foreach ($data as $datum) {
  44. $model = new EvaluateForm();
  45. $model = $model->loadDefaultValues();
  46. $model->attributes = $datum;
  47. if (!$model->save()) {
  48. throw new UnprocessableEntityHttpException($this->getError($model));
  49. }
  50. }
  51. $transaction->commit();
  52. return ResultHelper::json(200, '评价成功');
  53. } catch (\Exception $e) {
  54. $transaction->rollBack();
  55. // 返回数据验证失败
  56. return ResultHelper::json(422, $e->getMessage());
  57. }
  58. }
  59. /**
  60. * 追加评价
  61. *
  62. * @param $id
  63. * @return mixed|\yii\db\ActiveRecord
  64. * @throws NotFoundHttpException
  65. */
  66. public function actionAgain()
  67. {
  68. $order_product_id = Yii::$app->request->get('order_product_id');
  69. $again_covers = Yii::$app->request->post('again_covers');
  70. $again_content = Yii::$app->request->post('again_content');
  71. /** @var Evaluate $model */
  72. if (!($model = Yii::$app->tinyShopService->productEvaluate->findByOrderProductId($order_product_id))) {
  73. return ResultHelper::json(422, '请先评价再来追加');
  74. }
  75. if ($model['member_id'] != Yii::$app->user->identity->member_id) {
  76. return ResultHelper::json(422, '权限不足');
  77. }
  78. if (!$again_content) {
  79. return ResultHelper::json(422, '请填写追加内容');
  80. }
  81. if (!empty($model->again_content)) {
  82. return ResultHelper::json(422, '您已追加评价');
  83. }
  84. $model->has_again = StatusEnum::ENABLED;
  85. $model->again_content = $again_content;
  86. $model->again_covers = Json::decode($again_covers);
  87. $model->again_addtime = time();
  88. if (!$model->save()) {
  89. return ResultHelper::json(422, $this->getError($model));
  90. }
  91. // 更新商品评价标签
  92. Yii::$app->tinyShopService->productEvaluateStat->updateNum(new EvaluateStatForm([
  93. 'has_again' => true,
  94. ]), $model->product_id);
  95. // 更新评价的追加状态
  96. Yii::$app->tinyShopService->orderProduct->superadditionEvaluate($model->order_product_id);
  97. return $model;
  98. }
  99. }
粤ICP备19079148号