model('cloud'); $cloud = cloud_prepare(); $cloud_error = 0; if(is_error($cloud)) { $cloud_error = 1; } $groups = pdo_fetch('SELECT * FROM ' . tablename('mc_fans_groups') . ' WHERE uniacid = :uniacid AND acid = :acid', array(':uniacid' => $_W['uniacid'], ':acid' => $_W['acid'])); $groups = iunserializer($groups['groups']); $time = strtotime(date('Y-m-d')); $record = pdo_fetchall('SELECT * FROM ' . tablename('mc_mass_record') . ' WHERE uniacid = :uniacid AND sendtime >= :time ORDER BY sendtime ASC LIMIT 7', array(':uniacid' => $_W['uniacid'], ':time' => $time), 'sendtime'); for($i = 0; $i < 7; $i++) { $time_key = date('Y-m-d', strtotime("+{$i} days", $time)); $mass_old[$time_key] = array( 'msgtype' => 'news', 'group' => -1, 'time' => $time_key, 'status' => 1, 'clock' => '20:00', 'media' => array( 'items' => array( array( 'title' => '请选择素材' ) ) ), ); } $mass_new = array(); if(!empty($record)) { foreach($record as &$li) { $time_key = date('Y-m-d', $li['sendtime']); $li['time'] = $time_key; $li['clock'] = date('H:i', $li['sendtime']); $li['media'] = pdo_get('wechat_attachment', array('id' => $li['attach_id'])); $li['media']['attach'] = tomedia($li['media']['attachment']); if($li['msgtype'] == 'video') { $li['media']['attach']['tag'] = iunserializer($li['media']['tag']); } elseif($li['msgtype'] == 'news') { $li['media']['items'] = pdo_getall('wechat_news', array('attach_id' => $li['attach_id'])); foreach($li['media']['items'] as &$row) { $row['thumb_url'] = url('utility/wxcode/image', array('attach' => $row['thumb_url'])); } } elseif($li['msgtype'] == 'wxcard') { $li['media'] = pdo_get('coupon', array('id' => $li['attach_id'])); $li['media']['media_id'] = $li['media']['card_id']; $li['media']['logo_url'] = url('utility/wxcode/image', array('attach' => $li['media']['logo_url'])); $li['media']['type'] = 'wxcard'; } $li['media']['createtime_cn'] = date('Y-m-d H:i', $li['media']['createtime']); $li['media_id'] = $li['media']['media_id']; $mass_new[$time_key] = $li; } unset($record); } $mass = array_values((array_merge($mass_old, $mass_new))); template('material/mass'); } if($do == 'del') { load()->func('cron'); load()->model('cloud'); $post = $_GPC['__input']; $mass = pdo_get('mc_mass_record', array('uniacid' => $_W['uniacid'], 'id' => intval($post['id']))); if(!empty($mass) && $mass['cron_id'] > 0) { $status = cron_delete(array($mass['cron_id'])); if(is_error($status)) { message($status, '', 'ajax'); } } pdo_delete('mc_mass_record', array('uniacid' => $_W['uniacid'], 'id' => intval($post['id']))); message(error(0, ''), '', 'ajax'); } if($do == 'post') { load()->func('cron'); load()->model('cloud'); $cloud = cloud_prepare(); if(is_error($cloud)) { message($cloud, '', 'ajax'); } set_time_limit(0); $records = pdo_fetchall('SELECT id, cron_id FROM ' . tablename('mc_mass_record') . ' WHERE uniacid = :uniacid AND sendtime >= :time AND status = 1 ORDER BY sendtime ASC LIMIT 8', array(':uniacid' => $_W['uniacid'], ':time' => strtotime(date('Y-m-d'))), 'id'); if(!empty($records)) { foreach($records as $re) { if(!$re['cron_id']) { continue; } $corn_ids[] = $re['cron_id']; } if(!empty($corn_ids)) { $status = cron_delete($corn_ids); if(is_error($status)) { message(error(-1, '删除群发错误,请重新提交'), '', 'ajax'); } } $ids = implode(',', array_keys($records)); pdo_query('DELETE FROM ' . tablename('mc_mass_record') . " WHERE uniacid = :uniacid AND id IN ({$ids})", array(':uniacid' => $_W['uniacid'])); } $groups = pdo_fetch('SELECT * FROM ' . tablename('mc_fans_groups') . ' WHERE uniacid = :uniacid AND acid = :acid', array(':uniacid' => $_W['uniacid'], ':acid' => $_W['acid'])); $groups = iunserializer($groups['groups']); $groups['-1'] = array('name' => '全部粉丝', 'count' => ''); $post = $_GPC['__input']; $mass = $post['data']; $message = ''; $sended = array(); foreach($mass as $key => $row) { if($row['media_id']) { if($row['id'] && (!$row['status'] || $row['sendtime'] < TIMESTAMP)) { $sended[] = $row['id']; } else { $row['sendtime'] = strtotime("{$row['time']} {$row['clock']}"); if($row['sendtime'] <= TIMESTAMP) { $message .= "{$row['time']}的群发时间不合法,必须大于当前时间
"; } } } else { unset($mass[$key]); } } if(empty($mass)) { message(error(-1, '没有设置群发'), '', 'ajax'); } if(!empty($message)) { message(error(-1, $message), '', 'ajax'); } $cron_status = 0; $message = ''; foreach($mass as $row) { if(!empty($sended) && in_array($row['id'], $sended)) { continue; } $data = array( 'uniacid' => $_W['uniacid'], 'acid' => $_W['acid'], 'groupname' => $groups[$row['group']]['name'], 'group' => $row['group'], 'attach_id' => $row['attach_id'], 'media_id' => $row['media_id'], 'fansnum' => $groups[$row['group']]['count'], 'msgtype' => $row['msgtype'], 'sendtime' => strtotime($row['time'] . " {$row['clock']}"), 'createtime' => TIMESTAMP, 'type' => 1, 'status' => 1, 'cron_id' => 0, ); pdo_insert('mc_mass_record', $data); $insert_id = pdo_insertid(); $cron = array( 'uniacid' => $_W['uniacid'], 'name' => $row['time'] . "微信群发任务", 'filename' => 'mass', 'type' => 1, 'lastruntime' => $row['sendtime'], 'extra' => $insert_id, 'module' => 'task', 'status' => 1, ); $status = cron_add($cron); if(is_error($status)) { $message .= "{$row['time']}的群发任务同步到云服务失败,请手动同步
"; $cron_status = 1; } else { pdo_update('mc_mass_record', array('cron_id' => $status), array('id' => $insert_id)); } } if($cron_status) { message(error(-1000, $message), '', 'ajax'); } message(error(0, 'success'), '', 'ajax'); } if($do == 'cron') { $id = intval($_GPC['id']); $record = pdo_get('mc_mass_record', array('uniacid' => $_W['uniacid'], 'id' => $id)); if(empty($record)) { message('群发任务不存在或已删除', referer(), 'error'); } load()->func('cron'); $cron = array( 'uniacid' => $_W['uniacid'], 'name' => date('Y-m-d', $record['sendtime']) . "微信群发任务", 'filename' => 'mass', 'type' => 1, 'lastruntime' => $record['sendtime'], 'extra' => $record['id'], 'module' => 'task', 'status' => 1 ); $status = cron_add($cron); if(is_error($status)) { message($status['message'], referer(), 'error'); } pdo_update('mc_mass_record', array('cron_id' => $status), array('uniacid' => $_W['uniacid'], 'id' => $id)); message('同步到云服务成功', referer(), 'success'); } if($do == 'send') { $_W['page']['title'] = '群发记录-微信群发'; $pindex = max(1, intval($_GPC['page'])); $psize = 20; $condition = ' WHERE `uniacid` = :uniacid AND `acid` = :acid'; $pars = array(); $pars[':uniacid'] = $_W['uniacid']; $pars[':acid'] = $_W['acid']; $total = pdo_fetchcolumn("SELECT COUNT(*) FROM ".tablename('mc_mass_record').$condition, $pars); $list = pdo_fetchall("SELECT * FROM ".tablename('mc_mass_record') . $condition ." ORDER BY `id` DESC LIMIT ".($pindex - 1) * $psize.','.$psize, $pars); $types = array('text' => '文本消息', 'image' => '图片消息', 'voice' => '语音消息', 'video' => '视频消息', 'news' => '图文消息', 'wxcard' => '微信卡券'); $pager = pagination($total, $pindex, $psize); template('material/send'); }