Files
littleTiger/application/common/logic/MessageNoticeLogic.php
2019-02-28 19:48:21 +08:00

277 lines
8.6 KiB
PHP
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?php
/**
* tpshop
* ============================================================================
* 版权所有 2015-2027 深圳搜豹网络科技有限公司,并保留所有权利。
* 网站地址: http://www.tp-shop.cn
* ----------------------------------------------------------------------------
* 这不是一个自由软件!您只能在不用于商业目的的前提下对程序代码进行修改和使用 .
* 不允许对程序代码以任何形式任何目的的再发布。
* ============================================================================
* Author: IT宇宙人
* Date: 2015-09-09
*/
namespace app\common\logic;
use app\common\model\CouponList;
use app\common\model\UserMessage;
use app\common\util\TpshopException;
use think\Model;
use think\db;
/**
* 通知消息逻辑定义
* Class CatsLogic
* @package admin\Logic
*/
class MessageNoticeLogic extends MessageBase
{
/**
* 添加一条通知消息
*/
public function addMessage(){
$this->message['category'] = 0;
db('message_notice')->insert($this->message);
$message_id = db('message_notice')->getLastInsID();
if($message_id) {
$this->message['message_id'] = $message_id;
}
}
/**
* 发一条通知消息,数组参数如 data
* @param array $send_data |发送内容
*/
public function sendMessageNotice($send_data=[])
{
$data['message_type'] = 0; // 0个人1全体
$data['message_title'] = ''; // 消息标题,如果空,则用模板名称
$data['message_content'] = ''; // 如果空,则用模板内容
// type:0系统公告1降价通知2优惠券到账提醒3优惠券使用成功提醒4优惠券即将过期提醒5预售订单尾款支付提醒6提现到账提醒
$data['type'] = 0;
$data['prom_id'] = ''; // 活动id
$data['message_uri'] = ''; // 查看详情
$data['mmt_code'] = ''; // 消息模板编号
$data['users'] = []; // 向用户发消息
$data['message_val'] = []; // ['key1'=>'val','key2'=>'val']; // 模板消息变量名key和值
$data = array_merge($data, $send_data);
if (!empty($data['users'])) {
$where['user_id'] = ['in', $data['users']];
$where['email_validated'] = 1;
$data['email'] = db('users')->where($where)->column('email');
}
$data['category'] = 0; // 通知类型
$this->setSendData($data);
$this->sendMessage();
}
/**
* 删除消息
* @param $prom_id |活动id
* @param $type |活动类型
* @throws \think\Exception
*/
public function deletedMessage($prom_id, $type)
{
$message_id = db('message_notice')->where(['prom_id' => $prom_id, 'type' => $type])->value('message_id');
if ($message_id) {
db('message_notice')->where(['prom_id' => $prom_id, 'type' => $type])->delete();
db('user_message')->where(['message_id' => $message_id, 'category' => 0])->delete();
}
}
/**
* 获取编号
* @param $type
* @return string
*/
public function getCodeByType($type)
{
switch ($type) {
case 0:
$mmt_code = 'message_notice';
break;
case 1:
$mmt_code = '';
break;
case 2:
$mmt_code = 'coupon_get_notice';
break;
case 3:
$mmt_code = 'coupon_use_notice';
break;
case 4:
$mmt_code = 'coupon_will_expire_notice';
break;
case 5:
$mmt_code = '';
break;
case 6:
$mmt_code = 'withdrawals_notice';
break;
default:
$mmt_code = '';
break;
}
return $mmt_code;
}
/**
* 提现到账消息,多次调用
* @param $withdrawals_id
* @param $uid
* @param $money
*/
public function withdrawalsNotice($withdrawals_id, $uid, $money)
{
$this->setType(6);
$this->setMessageTitle('提现已到账');
$this->setMessageContent(''); // 空着,使用模板内容
$this->setPromId($withdrawals_id);
$this->setUsers([$uid]);
$this->setMessageVal(['money' => $money]);
$this->sendMessage();
}
/**
* 发放优惠券到账消息
* @param $cid
* @param $uid_arr
*/
public function getCouponNotice($cid, $uid_arr)
{
$data['prom_id'] = $cid;
$data['type'] = 2;
$data['mmt_code'] = 'coupon_get_notice';
$data['message_title'] = '优惠券已到账';
$name = db('coupon')->where('id', $cid)->value('name');
foreach ($uid_arr as $user_id) {
$data['users'] = [$user_id];
$data['message_content'] = $name;
$this->sendMessageNotice($data);
}
}
/**
* 优惠券使用消息
* @param order_id
* @param couponId
* @param user_id
*/
public function useCouponNotice($order_id, $couponId, $user_id)
{
$data['prom_id'] = $order_id;
$data['type'] = 3;
$data['mmt_code'] = 'coupon_use_notice';
$data['message_title'] = '优惠券已使用';
$data['users'] = [$user_id];
$cid = db('coupon_list')->where('id', $couponId)->value('cid');
$data['message_content'] = db('coupon')->where('id', $cid)->value('name');
$this->sendMessageNotice($data);
}
/**
* 删除优惠券消息
* @param $cid
* @throws \think\Exception
*/
public function delCouponNotice($cid)
{
$uid = db('coupon_list')->where('cid', $cid)->value('uid');
if ($uid) {
$where['type'] = 2;
$where['prom_id'] = $cid;
$message_id = db('message_notice')->where($where)->column('message_id');
if ($message_id) {
db('message_notice')->where($where)->delete();
db('user_message')->where(['message_id' => ['in', $message_id], 'category' => 0])->delete();
}
}
}
/**
* 优惠券将过期
* @param user_id
*/
public function couponWillExpire($user_id)
{
$where_list['uid'] = $user_id;
$where_list['status'] = 0;
$couponList = new CouponList();
$coupon_list = $couponList->where($where_list)->select();
foreach ($coupon_list as $coupon) {
if ($coupon->coupon->is_expiring_notice == 1
&& $coupon->coupon->use_end_time > time()
&& $coupon->coupon->status == 1) {
$this->couponWillExpireNotice($coupon['cid'], $user_id);
}
}
}
/**
* 发送优惠券将过期消息
* @param $cid
* @param $user_id
*/
public function couponWillExpireNotice($cid, $user_id)
{
// 谁没有领
$where = [
'message_type' => 0,
'type' => 4,
'prom_id' => $cid
];
$message_id_arr = db('message_notice')->where($where)->column('message_id');
$where_message['category'] = 0;
$where_message['user_id'] = $user_id;
$where_message['message_id'] = ['in', $message_id_arr];
$message_id = db('user_message')->where($where_message)->value('message_id');
if ($message_id) {
return;
}
$data['prom_id'] = $cid;
$data['type'] = 4;
$data['mmt_code'] = 'coupon_will_expire_notice';
$data['message_title'] = '优惠券即将过期';
$message_content = db('coupon')->where('id', $cid)->value('name');
$data['users'] = [$user_id];
$data['message_content'] = $message_content;
$this->sendMessageNotice($data);
}
/**
* 检测必填参数
* @return bool
*/
public function checkParam()
{
if (empty($this->message['message_title']) || empty($this->message['mmt_code'])
|| empty($this->message['type']) || empty($this->message['send_time'])
) {
return false;
}
return true;
}
/**
* 必填
* type: 0系统公告1降价通知2优惠券到账提醒3优惠券使用提醒4优惠券即将过期提醒5预售订单尾款支付提醒6提现到账提醒
* @param $value
*/
public function setType($value){
$this->message['type'] = $value;
$this->message['mmt_code'] = $this->getCodeByType($value);
}
/**
* 可空
* @param $value
*/
public function setPromId($value){
$this->message['prom_id'] = $value;
}
}