Notify.php 2.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. <?php
  2. namespace addons\Pk\common\logic\notify;
  3. use addons\Pk\common\enums\PkEnum;
  4. use addons\Pk\common\models\PkActivity;
  5. use addons\Pk\common\models\PkActivityStatistic;
  6. use addons\Pk\common\models\PkDateStatistic;
  7. use addons\Pk\common\models\PkOrder;
  8. use addons\Pk\common\models\PkStatistic;
  9. use common\enums\StatusEnum;
  10. use common\models\common\PaymentTrade;
  11. use common\models\common\PaymentTradeOrder;
  12. use common\traits\ErrorTrait;
  13. use Exception;
  14. /**
  15. * Class Notify
  16. * @Author: ltm
  17. * @DateTime: 2021/10/18 9:39
  18. * @Copyright: copyright (c) 2021
  19. * @package common\logic\notify
  20. */
  21. class Notify
  22. {
  23. use ErrorTrait;
  24. /**
  25. * @Author: hua
  26. * @DateTime: 2021/10/18 9:57
  27. * @Copyright: copyright (c) 2021
  28. * @param $order_info
  29. * @return bool
  30. */
  31. public function notify($order_info)
  32. {
  33. $trans = \Yii::$app->db->beginTransaction();
  34. try {
  35. $order = PkOrder::findOne(['order_no' => $order_info['order_no']]);
  36. if ($order['is_pay']) {
  37. throw new Exception("PK订单已支付");
  38. }
  39. $trade = PaymentTradeOrder::getOne([['order_no' => $order_info['order_no']]],true);
  40. //添加活动统计数据
  41. $activity_data['mall_id'] = $order['mall_id'];
  42. $activity_data['user_id'] = $order['user_id'];
  43. $activity_data['activity_id'] = $order['activity_id'];
  44. $activity_data['target'] = $order['performance_goal'];
  45. $activity_data['status'] = StatusEnum::ENABLED;
  46. $activity = PkActivityStatistic::setData($activity_data);
  47. $order->pay_type = $trade['pay_type'];
  48. $order->is_pay = PkEnum::IS_PAY;
  49. $order->save();
  50. if(!$activity) throw new Exception("活动统计插入失败");
  51. if($order === false) throw new Exception(PkOrder::getStaticError());
  52. $pkActivity = PkActivity::findOne(['id' => $order['activity_id']]);
  53. $pkActivity->member_num = $pkActivity->member_num + 1;
  54. $pkActivity->save();
  55. $statistic['mall_id'] = $order['mall_id'];
  56. $statistic['join_user_num'] = 1;
  57. $add_static = PkStatistic::setData($statistic);
  58. if (!$add_static) {
  59. throw new Exception("活动总统计插入失败");
  60. }
  61. $date_statistic['mall_id'] = $order['mall_id'];
  62. $date_statistic['join_user_num'] = 1;
  63. $date_statistic['date'] = date("Y-m-d");
  64. $date_static = PkDateStatistic::setData($date_statistic);
  65. if (!$date_static) {
  66. throw new Exception("活动日统计插入失败");
  67. }
  68. $trans->commit();
  69. return true;
  70. } catch (Exception $e) {
  71. $trans->rollBack();
  72. $this->setStaticError($e->getMessage());
  73. return false;
  74. }
  75. }
  76. }