SiteMsg.php 2.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. <?php
  2. namespace app\common\model;
  3. use think\db\Query;
  4. use think\Model;
  5. use Yansongda\Supports\Arr;
  6. /**
  7. * @method static Query|static hot($hot=1)
  8. */
  9. class SiteMsg extends Model
  10. {
  11. protected $autoWriteTimestamp=true;
  12. protected $updateTime=null;
  13. const TYPE_COUPON='coupon';
  14. const TYPE_ORDER_OFFLINE_PAY_PASS='order_offline_pay_pass';
  15. const TYPE_ORDER_OFFLINE_PAY_REJECT='order_offline_pay_reject';
  16. const TYPE_ORDER_REFUND_PASS='order_refund_pass';
  17. const TYPE_ORDER_REFUND_REJECT='order_refund_reject';
  18. const TYPE_NEW_GOODS='new_goods';
  19. public function read(){
  20. return $this->hasMany(SiteMsgRead::class);
  21. }
  22. protected $type=[
  23. 'data'=>'json',
  24. ];
  25. protected static function init()
  26. {
  27. self::afterDelete(function (self $msg){
  28. $msg->read()->delete();
  29. });
  30. }
  31. public static function sendMsg($msgType,$user,$extend=[]){
  32. list($title,$content,$data)=self::getTitleByType($msgType,$extend);
  33. if($title && $content){
  34. return self::create([
  35. 'msg_type'=>$msgType,
  36. 'user_id'=>$user instanceof User?$user['id']:$user,
  37. 'title'=>$title,
  38. 'content'=>$content,
  39. 'data'=>$data,
  40. ]);
  41. }
  42. }
  43. public static function getTitleByType($type,$extend=[]){
  44. $arr=['','',null];
  45. switch ($type){
  46. case self::TYPE_COUPON:
  47. $arr[0]='您获得了新的优惠券';
  48. $arr[1]='您获得了新的优惠券券,请注意查收';
  49. break;
  50. case self::TYPE_ORDER_OFFLINE_PAY_PASS:
  51. $arr[0]='您的线下付款核销已通过';
  52. $arr[1]='您的线下付款核销已通过,请注意查看';
  53. break;
  54. case self::TYPE_ORDER_OFFLINE_PAY_REJECT:
  55. $arr[0]='您的线下付款核销未通过';
  56. $arr[1]='您的线下付款核销未通过,请注意查看';
  57. break;
  58. case self::TYPE_ORDER_REFUND_PASS:
  59. $arr[0]='您申请的退货退款已通过';
  60. $arr[1]='您申请的退货退款已通过,请注意查看';
  61. break;
  62. case self::TYPE_ORDER_REFUND_REJECT:
  63. $arr[0]='您申请的退货退款未通过';
  64. $arr[1]='您申请的退货退款未通过,请注意查看';
  65. break;
  66. case self::TYPE_NEW_GOODS:
  67. $goods=$extend['goods'];
  68. $arr[0]="新产品【{$goods['name']}】全新上市";
  69. $arr[1]="【{$goods['name']}】全新发布,请注意查看";
  70. $arr[2]=[
  71. 'id'=>$goods['id'],
  72. ];
  73. break;
  74. }
  75. return $arr;
  76. }
  77. }