You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
191 lines
6.7 KiB
191 lines
6.7 KiB
5 years ago
|
<?php
|
||
|
/**
|
||
|
* Created by PhpStorm.
|
||
|
* User: Administrator
|
||
|
* Date: 2017/12/12
|
||
|
* Time: 14:19
|
||
|
*/
|
||
|
|
||
|
namespace app\extensions;
|
||
|
|
||
|
|
||
|
use app\models\Goods;
|
||
|
use app\models\MailSetting;
|
||
|
use app\models\MsGoods;
|
||
|
use app\models\MsOrder;
|
||
|
use app\models\Order;
|
||
|
use app\models\OrderDetail;
|
||
|
use app\models\PtGoods;
|
||
|
use app\models\PtOrder;
|
||
|
use app\models\PtOrderDetail;
|
||
|
use app\models\Store;
|
||
|
use app\models\YyGoods;
|
||
|
use app\models\YyOrder;
|
||
|
|
||
|
class SendMail
|
||
|
{
|
||
|
public $store_id;
|
||
|
public $order_id;
|
||
|
public $type;
|
||
|
|
||
|
/**
|
||
|
* 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->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);
|
||
|
} else if($this->type == 1) {
|
||
|
$order = MsOrder::find()->where(['id' => $this->order_id])->asArray()->one();
|
||
|
$goods_list = $this->getMsOrderGoodsList($this->order_id);
|
||
|
}else if($this->type == 2){
|
||
|
$order = PtOrder::findOne(['id' => $this->order_id]);
|
||
|
$goods_list = $this->getPtOrderGoodsList($this->order_id);
|
||
|
}else if ($this->type == 3){
|
||
|
$order = YyOrder::find()->where(['id' => $this->order_id])->asArray()->one();
|
||
|
$goods_list = $this->getYyOrderGoodsList($this->order_id);
|
||
|
}
|
||
|
$store = Store::findOne($this->store_id);
|
||
|
$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' => $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 = MsGoods::find()->alias('g')
|
||
|
->leftJoin(['o'=>MsOrder::tableName()],'o.goods_id=g.id and o.id='.$order_id)
|
||
|
->where([
|
||
|
'o.is_delete'=>0,
|
||
|
])->select('g.*')->asArray()->all();
|
||
|
$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;
|
||
|
}
|
||
|
$store = Store::findOne($this->store_id);
|
||
|
$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' => $store->name,
|
||
|
]);
|
||
|
$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;
|
||
|
}
|
||
|
}
|