c5_labsci/web/admin/ap/usr_sendmail.php
2026-01-27 00:52:00 +08:00

207 lines
8.8 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
namespace web\admin\ap;
class usr_sendmail {
static function setwhere($db, $post, $rsuser) {
$query = $post->get('query', array());
$csql = new \ciy\sql('ap_usr_sendmail');
$liid = objint($query, 'liid');
if ($liid == 1)
$csql->where('');
if ($liid == 2)
$csql->where('');
if ($liid == 3)
$csql->where('');
if ($liid == 4)
$csql->where('');
$val = objstr($query, 'vuser');
if (!empty($val)) {
$csqlt = new \ciy\sql('ap_user');
$csqlt->where('name like', $val);
$trow = $db->getone($csqlt);
if (is_array($trow)) {
$csql->where('vuser', $trow['id']);
$query['vuser'] = $trow['name'];
} else {
$csql->where('vuser=0');
}
}
$csql->where('email like', objstr($query, 'email'));
$csql->where('chan like', objstr($query, 'chan'));
$csql->where('name like', objstr($query, 'name'));
$csql->wheredaterange('addtimes', objstr($query, 'addtimes'));
$csql->wheredaterange('sendtimes', objstr($query, 'sendtimes'));
$csql->wheredaterange('donetimes', objstr($query, 'donetimes'));
$order = objstr($query, 'order', 'id desc');
$csql->order($order);
$query['order'] = $order;
return [$query, $csql];
}
public static function json_list() {
global $db;
$rsuser = verifyfast();
$post = new \ciy\post();
list($where, $csql) = self::setwhere($db, $post, $rsuser);
$pageno = $post->getint('pageno', 1);
$pagecount = $post->getint('pagecount', 10);
$csql->limit($pageno, $pagecount);
$mainrowcount = $post->getint('count');
$rows = $db->get($csql, $mainrowcount);
if($rows === false)
return errjson($db->error);
$ret = array('searchwhere' => $where, 'pageno' => $pageno, 'pagecount' => $pagecount, 'count' => $mainrowcount, 'list' => $rows);
if ($post->getbool('field')) {
$field = array();
$fshow = $db->getfield($field, 'ap_usr_sendmail');
foreach ($field as $fr => $v) {
if (get('_' . $fr))
$field[$fr]['c'] = ',' . $field[$fr]['c'];
}
$ret['field'] = $field;
$ret['fshow'] = $fshow;
}
if ($post->getbool('once')) {
$ret['once'] = true;
$input = array();
$input[] = array('type' => 'input', 'form' => 'vuser', 'name' => '所属用户', 'prop' => ' style="width:8em;"');
$input[] = array('type' => 'input', 'form' => 'email', 'name' => '邮件地址', 'prop' => ' style="width:8em;"');
$input[] = array('type' => 'input', 'form' => 'chan', 'name' => '通道号', 'prop' => ' style="width:8em;"');
$input[] = array('type' => 'input', 'form' => 'name', 'name' => '标题', 'prop' => ' style="width:8em;"');
$input[] = array('type' => 'daterange', 'form' => 'addtimes', 'name' => '添加时间');
$input[] = array('type' => 'daterange', 'form' => 'sendtimes', 'name' => '发送时间');
$input[] = array('type' => 'daterange', 'form' => 'donetimes', 'name' => '完成时间');
$ret['searchinput'] = $input;
}
$ret['ap_user'] = getrelation($db, $rows, 'ap_user', 'vuser');
return succjson($ret);
}
public static function json_del() {
global $db;
$rsuser = verifyfast();
//if (nopower($db, $rsuser['id'], 'p d'))
// return errjson('您未被授权操作');
$post = new \ciy\post();
$ids = $post->get('ids');
if (empty($ids))
return errjson('请选择至少一条');
$csql = new \ciy\sql('ap_usr_sendmail');
$csql->where('id in', $ids);
$rows = $db->get($csql);
$vids = array();
try {
$db->begin();
foreach ($rows as $row) {
$delid = $row['id'];
//delcheck($db, $delid, 'tablexx', 'xxid', '管理员');
//delall($db, $delid, 'tablexx', 'xxid', '运动员'); //deltimeall
delme($db, $delid, 'ap_usr_sendmail');
savelogdb($db, $rsuser['id'], 'ap_usr_sendmail', $row, null);
$vids[] = $delid;
}
$db->commit();
} catch (\Exception $ex) {
$db->rollback();
savelogfile('err_db', $ex->getMessage());
return errjson($ex->getMessage());
}
$ret['ids'] = $vids;
return succjson($ret);
}
public static function json_multi_status() {
global $db;
$rsuser = verifyfast();
//if (nopower($db, $rsuser['id'], 'p m'))
// return errjson('您未被授权操作');
$post = new \ciy\post();
$status = $post->getint('status');
$ids = $post->get('ids');
if (empty($ids))
return errjson('请选择至少一条');
$csql = new \ciy\sql('ap_usr_sendmail');
$csql->where('id in', $ids);
$rows = $db->get($csql);
$ids = array();
try {
$db->begin();
foreach ($rows as $row) {
$updata = array();
$updata['status'] = $status;
$csql = new \ciy\sql('ap_usr_sendmail');
$csql->where('id', $row['id']);
if ($db->update($csql, $updata) === false)
throw new \Exception('批量操作失败:' . $db->error);
$ids[] = $row['id'];
}
$db->commit();
} catch (\Exception $ex) {
$db->rollback();
savelogfile('err_db', $ex->getMessage());
return errjson($ex->getMessage());
}
$ret['data'] = $updata;
$ret['ids'] = $ids;
return succjson($ret);
}
public static function json_exportxls() {
global $db;
$rsuser = verifyfast();
//if (nopower($db, $rsuser['id'], 'p e'))
// return errjson('您未被授权操作');
$post = new \ciy\post();
list($where, $csql) = self::setwhere($db, $post, $rsuser);
$rows = $db->get($csql);
if (count($rows) > 10000)
return errjson('将导出' . count($rows) . '条不建议超过1万条请筛选缩小范围');
$fields = array();
$fields[] = array('style' => 'l', 'width' => 60, 'field' => 'id', 'name' => '行码');
$fields[] = array('style' => 'l', 'width' => 100, 'field' => 'vuser', 'name' => '所属用户');
$fields[] = array('style' => 'l', 'width' => 150, 'field' => 'email', 'name' => '邮件地址');
$fields[] = array('style' => 'l', 'width' => 100, 'field' => 'chan', 'name' => '通道号');
$fields[] = array('style' => 'l', 'width' => 150, 'field' => 'name', 'name' => '标题');
$fields[] = array('style' => 'l', 'width' => 100, 'field' => 'addtimes', 'name' => '添加时间');
$fields[] = array('style' => 'l', 'width' => 100, 'field' => 'sendtimes', 'name' => '发送时间');
$fields[] = array('style' => 'l', 'width' => 100, 'field' => 'donetimes', 'name' => '完成时间');
$code_vuser = getrelation($db, $rows, 'ap_user', 'vuser', 'id,name');
$datas = array();
foreach ($rows as $row) {
$dat = array();
foreach ($fields as $field) {
$field = $field['field'];
$val = isset($row[$field]) ? $row[$field] : '';
if ($field == 'id')
$val = enid($val);
if ($field == 'vuser')
$val = ccode($code_vuser, $val);
if ($field == 'addtimes')
$val = ($val <= 0 ? '--' : date('Y-m-d H:i', $val));
if ($field == 'sendtimes')
$val = ($val <= 0 ? '--' : date('Y-m-d H:i', $val));
if ($field == 'donetimes')
$val = ($val <= 0 ? '--' : date('Y-m-d H:i', $val));
$dat[] = $val;
}
$datas[] = $dat;
}
$param = array();
$param['field'] = $fields;
$param['data'] = $datas;
$param['sheetname'] = '数据报表';
$param['titleheight'] = '25'; //列头高度
$param['landscape'] = true; //横向打印
$param['fixtopage'] = true; //打印整个工作表
$param['toptitle'] = '发送邮件数据报表';
$str = \ciy\excel::general_excel_xml($param);
$filename = '';
if (empty($filename))
$filename = date('Y-m-d_H-i-s') . rand(1000, 9999);
$filename .= '.xls';
file_put_contents(PATH_WEB . 'ud/tmp/' . $filename, $str);
return succjson(array('url' => '/ud/tmp/' . $filename));
}
}