WechatTemplateMsgs.php 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148
  1. <?php
  2. namespace App\Modules\OfficialAccount\Models;
  3. use Illuminate\Database\Eloquent\Model;
  4. use DB;
  5. class WechatTemplateMsgs extends Model
  6. {
  7. protected $tables = 'wechat_template_msgs';
  8. protected $fillable = ['template_id','name','send_time','appid','template_content','redirect_url','status','remark','distribution_channel_id','subscribe_time','sex','balance','order_type','category_id','user_num','del_flag','is_full_send','is_show_list','description','book_name','chapter_name','is_activity'];
  9. /**
  10. * 获取单个模板消息,根据模板id
  11. */
  12. static function wechatTemplateMsgsByTemplateId($template_id)
  13. {
  14. return self::where('template_id', isset($template_id) ? $template_id : '')->first();
  15. }
  16. /**
  17. * 获取全部模板消息,根据模板id
  18. */
  19. static function allWechatTemplateMsgsByTemplateId($template_id)
  20. {
  21. return self::where('template_id', $template_id)->get();
  22. }
  23. /**
  24. * 更新模板消息template_id
  25. */
  26. static function updateWechatTemplateMsgsByTemplateId($new_template_id,$old_template_id)
  27. {
  28. return DB::table('wechat_template_msgs')->where('template_id', $old_template_id)->update(['template_id'=>$new_template_id,'updated_at'=>date('Y-m-d H:i:s')]);
  29. }
  30. /**
  31. * 根据状态获取模板消息
  32. */
  33. static function wechatTemplateMsgsByStatusStandBy($status)
  34. {
  35. return self::where(['status'=>$status,'del_flag'=>0])->get();
  36. }
  37. /**
  38. * 根据id获取模板消息
  39. */
  40. static function wechatTemplateMsgsById($id)
  41. {
  42. return self::where('id', isset($id) ? $id : '')->first();
  43. }
  44. /**
  45. * 判断1小时内是否有相同的模板消息插入过
  46. */
  47. static function isSendTemplateAtSameTime($distribution_channel_id,$appid,$send_time,$template_id)
  48. {
  49. return self::where(['distribution_channel_id'=>$distribution_channel_id,'appid'=>$appid,'del_flag'=>0,'template_id'=>$template_id])->where('status','!=','4')->where('send_time','<',date('Y-m-d H:i:s',strtotime($send_time)+3600))->where('send_time','>',date('Y-m-d H:i:s',strtotime($send_time)-3600))->first();
  50. }
  51. /**
  52. * 根据appid获取模板消息 is_show_list为1则界面展示
  53. */
  54. static function wechatTemplateMsgsBydistributionChannelId($distribution_channel_id)
  55. {
  56. return self::where('distribution_channel_id', isset($distribution_channel_id) ? $distribution_channel_id : '')->where('del_flag',0)->where('is_show_list',1)->orderBy('id','desc')->paginate();
  57. }
  58. /**
  59. * 根据分页获取模板消息
  60. */
  61. static function wechatTemplateMsgsPaginate($start_time,$end_time,$is_all=false)
  62. {
  63. \Log::info('$wechatTemplateMsgsPaginate');
  64. $search_obj = self::select('wechat_template_msgs.distribution_channel_id as site_id',
  65. 'wechat_template_msgs.name as task_name',
  66. DB::raw('date(wechat_template_msgs.created_at) as created_date'),
  67. 'wechat_template_msgs.send_time',
  68. 'wechat_template_msgs.user_num as suc_send_num',
  69. // DB::raw('"" as template_name'),
  70. DB::raw('(select t.title from wechat_templates w inner join wechat_public_templates t ON w.common_template_id=t.common_template_id where w.template_id=wechat_template_msgs.template_id limit 1) as template_name'),
  71. DB::raw('"" as tag'),
  72. DB::raw('(select group_concat(nickname) from official_accounts where distribution_channel_id=wechat_template_msgs.distribution_channel_id group by distribution_channel_id) as official_account_name')//official_account_name
  73. )
  74. ->where(['del_flag'=>0,'status'=>3])
  75. ->where('wechat_template_msgs.created_at','>=',$start_time)
  76. ->where('wechat_template_msgs.created_at','<',$end_time)
  77. ->orderBy('wechat_template_msgs.id','desc');
  78. if($is_all)
  79. {
  80. return $search_obj->get();
  81. }else{
  82. return $search_obj->paginate();
  83. }
  84. }
  85. function wechatTemplates(){
  86. return $this->hasOne('App\Modules\OfficialAccount\Models\WechatTemplates','template_id','template_id');
  87. }
  88. static function searchWechatTemplateMsgs($param,$is_all=false){
  89. $res = self::where('distribution_channel_id', $param['distribution_channel_id'])
  90. ->select('*')
  91. ->where('del_flag',0)
  92. ->where('is_show_list',1);
  93. if(isset($param['start_time']) && $param['start_time']){
  94. $res->where('wechat_template_msgs.created_at', '>=', $param['start_time']);
  95. }
  96. if(isset($param['end_time']) && $param['end_time']){
  97. $res->where('wechat_template_msgs.created_at', '<=', $param['end_time']);
  98. }
  99. if(isset($param['book_name']) && $param['book_name']){
  100. $res->where('wechat_template_msgs.book_name', 'like', '%'.$param['book_name'].'%');
  101. }
  102. if(isset($param['task_name']) && $param['task_name']){
  103. $res->where('wechat_template_msgs.name', 'like', '%'.$param['task_name'].'%');
  104. }
  105. if ($is_all){
  106. $wechat_template_msgs = $res->orderBy('id','desc')->get();
  107. }else{
  108. $wechat_template_msgs = $res->orderBy('id','desc')->paginate();
  109. }
  110. return $wechat_template_msgs;
  111. }
  112. }