| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191 |
- <?php
- /**
- * 重庆赤晓店信息科技有限公司
- * https://www.chixiaodian.com
- * Copyright (c) 2023 赤店商城 All rights reserved.
- */
- namespace app\utils;
- use app\models\Goods;
- use app\models\Option;
- use app\models\Order;
- use app\models\OrderDetail;
- class SendMail
- {
- public $store_id;
- public $order_id;
- public $type;
- public $store_name;
- /**
- * SendMail constructor.
- * @param int $store_id
- * @param int $order_id 订单id
- * @param int $type 订单类型 0--商城订单 1--秒杀订单 2--拼团订单 3--预约订单
- *
- */
- public function __construct($store_id, $order_id, $type = 0)
- {
- $this->store_id = $store_id;
- $this->store_name = Option::get('name', $this->store_id, 'store')['value'];
- $this->order_id = $order_id;
- $this->type = $type;
- }
- public function send()
- {
- $mail_setting = MailSetting::findOne(['store_id' => $this->store_id, 'is_delete' => 0, 'status' => 1]);
- if (!$mail_setting) {
- return false;
- }
- if ($this->type == 0) {
- $order = Order::findOne(['id' => $this->order_id]);
- $goods_list = $this->getOrderGoodsList($this->order_id);
- } elseif ($this->type == 1) {
- $order = MsOrder::find()->where(['id' => $this->order_id])->asArray()->one();
- $goods_list = $this->getMsOrderGoodsList($this->order_id);
- } elseif ($this->type == 2) {
- $order = PtOrder::findOne(['id' => $this->order_id]);
- $goods_list = $this->getPtOrderGoodsList($this->order_id);
- } elseif ($this->type == 3) {
- $order = YyOrder::find()->where(['id' => $this->order_id])->asArray()->one();
- $goods_list = $this->getYyOrderGoodsList($this->order_id);
- } else {
- \Yii::warning(['UNKNOWN ORDER TYPE', [$this->type]]);
- return false;
- }
- $receive = str_replace(",", ",", $mail_setting->receive_mail);
- $receive_mail = explode(",", $receive);
- $res = true;
- foreach ($receive_mail as $mail) {
- try {
- $mailer = \Yii::$app->mailer;
- $mailer->transport = $mailer->transport->newInstance('smtp.qq.com', 465, 'ssl');
- $mailer->transport->setUsername($mail_setting->send_mail);
- $mailer->transport->setPassword($mail_setting->send_pwd);
- $compose = $mailer->compose('setMail', [
- 'store_name' => $this->store_name,
- 'goods_list' => $goods_list,
- 'order' => $order,
- 'type' => $this->type
- ]);
- $compose->setFrom($mail_setting->send_mail); //要发送给那个人的邮箱
- $compose->setTo($mail); //要发送给那个人的邮箱
- $compose->setSubject($mail_setting->send_name); //邮件主题
- $res = $compose->send();
- } catch (\Exception $e) {
- \Yii::warning('邮件发送失败:' . $e->getMessage());
- }
- }
- return $res;
- }
- /**
- * @param $order_id
- * @return mixed
- * 拼团订单商品详情
- */
- private function getPtOrderGoodsList($order_id)
- {
- $order_detail_list = PtOrderDetail::find()->alias('od')
- ->leftJoin(['g' => PtGoods::tableName()], 'od.goods_id=g.id')
- ->where([
- 'od.is_delete' => 0,
- 'od.order_id' => $order_id,
- ])->select('od.*,g.name')->asArray()->all();
- return $order_detail_list;
- }
- /**
- * @param $order_id
- * @return mixed
- * 订单商品详情
- */
- private function getOrderGoodsList($order_id)
- {
- $order_detail_list = OrderDetail::find()->alias('od')
- ->leftJoin(['g' => Goods::tableName()], 'od.goods_id=g.id')
- ->where([
- 'od.is_delete' => 0,
- 'od.order_id' => $order_id,
- ])->select('od.*,g.name')->asArray()->all();
- return $order_detail_list;
- }
- /**
- * @param $order_id
- * @return mixed
- * 秒杀订单商品详情
- */
- private function getMsOrderGoodsList($order_id)
- {
- $order_detail_list = MsOrder::find()->alias('o')
- ->leftJoin(['g' => MsGoods::tableName()], 'g.id=o.goods_id')
- ->where(['o.id'=>$order_id,'o.is_delete'=>0])
- ->select(['o.*','g.name'])->asArray()->all();
- return $order_detail_list;
- }
- /**
- * @param $order_id
- * @return mixed
- * 订单商品详情
- */
- private function getYyOrderGoodsList($order_id)
- {
- $order_detail_list = YyGoods::find()->alias('g')
- ->leftJoin(['o'=>YyOrder::tableName()], 'o.goods_id=g.id and o.id='.$order_id)
- ->where([
- 'o.is_delete'=>0,
- ])->select('g.*')->asArray()->one();
- return $order_detail_list;
- }
- /**
- * @return bool
- * 新的售后订单
- */
- public function send_refund()
- {
- $mail_setting = MailSetting::findOne(['store_id' => $this->store_id, 'is_delete' => 0, 'status' => 1]);
- if (!$mail_setting) {
- return false;
- }
- if ($this->type == 0) {
- $order = Order::findOne(['id' => $this->order_id]);
- } elseif ($this->type == 1) {
- $order = MsOrder::find()->where(['id' => $this->order_id])->asArray()->one();
- } elseif ($this->type == 2) {
- $order = PtOrder::findOne(['id' => $this->order_id]);
- } elseif ($this->type == 3) {
- $order = YyOrder::find()->where(['id' => $this->order_id])->asArray()->one();
- }
- $receive = str_replace(",", ",", $mail_setting->receive_mail);
- $receive_mail = explode(",", $receive);
- $res = true;
- foreach ($receive_mail as $mail) {
- try {
- $mailer = \Yii::$app->mailer;
- $mailer->transport = $mailer->transport->newInstance('smtp.qq.com', 465, 'ssl');
- $mailer->transport->setUsername($mail_setting->send_mail);
- $mailer->transport->setPassword($mail_setting->send_pwd);
- $compose = $mailer->compose('setMailRefund', [
- 'store_name' => $this->store_name,
- 'order_no' => $order->order_no
- ]);
- $compose->setFrom($mail_setting->send_mail); //要发送给那个人的邮箱
- $compose->setTo($mail); //要发送给那个人的邮箱
- $compose->setSubject($mail_setting->send_name); //邮件主题
- $res = $compose->send();
- } catch (\Exception $e) {
- \Yii::warning('邮件发送失败:' . $e->getMessage());
- return false;
- }
- }
- return $res;
- }
- }
|