time = time();
$this->datetime = self::data_time($this->time);
$this->tsql = load::own_class('tsql','new');
$this->cloud = load::own_class('cloud','new');
// self::basics();
ini_set("display_errors", "On");
error_reporting(E_ERROR);
}
use appcmp;
//生成CSS
public function metcss() {
global $_M,$_YW;
$metcss = PATH_APP_FILE.'web/templates/met/css/metinfo.css';
if(!file_exists($metcss)) self::merge_css();
}
//前台常用信息
protected function basics() {
global $_M,$_YW;
$this->input['appcore'] .= ' data-m_name="'.$this->m_name.'" ';
$this->input['appcore'] .= ' data-own_name="'.$_M['url']['own_name'].'" ';
}
//合同内容
public function postdata($type,$arr) {
global $_M, $_YW;
//清理缓存
$this->postdata = [];
$this->tem_id = '';
//微信模板
switch ($type) {
case 1:
//预约到期提醒
//模板ID
$this->tem_id = $_YW['c']['tem_ida'];
//内容
$this->postdata = [
//开头 提醒的内容
'first' => ['value' => $arr['first']['value'], 'color' => $arr['first']['color'] ],
// 合同开始日期
'keyword1' => ['value' => $arr['h_starttime'] ],
// 合同结束日期
'keyword2' => ['value' => $arr['h_endtime'] ],
//结尾
'remark' => ['value' =>
"合同编号:{$arr['h_number']}".PHP_EOL
."签定企业:{$arr['c_allname']}".PHP_EOL
."相关人员:{$arr['wnamestr']}".PHP_EOL
."提醒时间:{$this->datetime}"
],
];
break;
case 2:
//合同到期提醒
//模板ID
$this->tem_id = $_YW['c']['tem_idb'];
//内容
$this->postdata = [
//开头 提醒的内容
'first' => ['value' => $arr['first']['value'], 'color' => $arr['first']['color'] ],
// 合同编号
'keyword1' => ['value' => $arr['h_number'] ],
// 合同开始日期
'keyword2' => ['value' => $arr['h_starttime'] ],
// 合同结束日期
'keyword3' => ['value' => $arr['h_endtime'] ],
//结尾
'remark' => ['value' =>
"签定企业:{$arr['c_allname']}".PHP_EOL
."相关人员:{$arr['wnamestr']}".PHP_EOL
."通知时间:{$this->datetime}"
],
];
break;
case 3:
//汇总数据通知
//模板ID
$this->tem_id = $_YW['c']['tem_idc'];
//内容
$this->postdata = [
//开头 提醒的内容
'first' => ['value' => '合同提醒汇总结果,请登录后台查看详情', 'color' => '#BDBDBD'],
// 合同编号
'keyword1' => ['value' => '山东梯美广告有限公司' ],
// 合同开始日期
'keyword2' => ['value' => $this->datetime ],
// 合同结束日期
'keyword3' => ['value' => array_sum($arr) ],
//结尾
'remark' => ['value' =>
"定时提醒:{$arr['daya']}".PHP_EOL
."三天到期:{$arr['dayb']}".PHP_EOL
."今天到期:{$arr['dayc']}".PHP_EOL
."今天投放开始总数:{$arr['dayd']}"
],
];
break;
default:
break;
}
return $this;
}
//微信模板消息发送wesend
public function openid($openid = '')
{
global $_M, $_YW;
$openid .= ','.$_YW['c']['openid'];
$openid = stringto_array($openid,',');
foreach ($openid as $id) {
if($id) self::temmsg($id);
}
return $this;
}
//微信合同到期提醒
private function temmsg($openid)
{
global $_M, $_YW;
$return = ['errcode' => -1, 'errmsg' => "系统错误,用户openid:{$openid},消息模板Tem_id:{$this->tem_id}"];
if($openid && $this->tem_id){
$return = $this->webase->post_template_msg($openid, $this->tem_id, '', $this->postdata);
}
$json = is_array($return)?json_encode($return,JSON_UNESCAPED_UNICODE):$return;
//发送记录
$field = [
'openid' => $openid,
'text' => $this->postdata['first']['value'],
'content' => json_encode($this->postdata,JSON_UNESCAPED_UNICODE),
'returntext' => $json,
'state' => $return['errcode'] == 0?1:0,
'exetime' => $this->datetime,
'addtime' => $this->datetime
];
$this->tsql->table('welog')->field($field)->add();
return $return;
}
//参数处理
public function translate($p_type = 0) {
global $_M,$_YW;
$para = self::paralist($p_type);
return array_combine(array_column($para,'p_value'), array_column($para,'p_name'));
}
//场所名称
public function villagelist($id,$key = 'v_name') {
global $_M,$_YW;
$village = $this->tsql->table('village')->where(['id' => $id])->one();
return $village[$key];
}
//公司名称
public function customerlist($id,$key = 'c_allname') {
global $_M,$_YW;
$customer = $this->tsql->table('customer')->where(['id' => $id])->one();
return $customer[$key];
}
//相关人员
public function workerslist($id,$key = 'w_name') {
global $_M,$_YW;
$workers = $this->tsql->table('workers')->where(['id' => $id])->one();
return $key == false?$workers:$workers[$key];
}
//返回广告位对照地址
public function e_address($elevator) {
global $_M,$_YW;
//门口方位
$e_bno = self::paralist(['p_type' => 3, 'p_value' => $elevator['e_bno'] ]);
//广告位置
$e_aps = self::paralist(['p_type' => 0, 'p_value' => $elevator['e_aps'] ]);
//场所
$e_vid = self::villagelist($elevator['e_vid']);
return "({$elevator['e_number']})".$e_vid.$e_bno['p_name'].$e_aps['p_name'];
}
//字段颜色
public function state_color($state,$array = []) {
global $_M,$_YW;
$color = ['red-600','green-600','purple-600'];
$str = count($array) > 0?$array:['无效','有效'];
return ''.$str[$state].'';
}
//字体颜色
public function str_color($state,$str,$weight = 'unset') {
global $_M,$_YW;
$color = ['red-600','green-600','cyan-600','blue-600'];
return ''.$str.'';
}
//标签形式的分割显示
public function tab_tokenfield($ver,$type = 0,$decollator = ',',$length = 0) {
global $_M,$_YW;
$class = ['tag-default','tag-primary','tag-warning'];
$array = stringto_array($ver,$decollator);
$i = 0;
foreach ($array as $val) {
$html .= ''.$val.' ';
$i++;
if($length > 0 && $length == $i) break;
}
return $html;
}
//广告位的合同编号
public function e_state($title) {
global $_M,$_YW;
$class = ['tag-danger','tag-primary'];
$title = $title > 0?'已租赁':'空置';
$type = $title > 0?1:0;
return ''.$title.' ';
}
//参数的对应值获取
public function paralist($p_type = 0) {
global $_M,$_YW;
$this->tsql->table('para')
->where(is_array($p_type)?$p_type:['p_type' => $p_type])
->order('p_order DESC');
return is_array($p_type)?$this->tsql->one():$this->tsql->all();
}
//转化字符串形式
public function strchange($strarr = []) {
global $_M,$_YW;
foreach($strarr as $val) {
if($val != null) $idstr[] = "'{$val}'";
}
return arrayto_string($idstr,',');
}
//广告位状态变更
public function type_onoff($field,$value,$id,$array = ['无效','有效']) {
global $_M,$_YW;
$color = ['tag-danger','tag-success'];
$url = $_M['url']['own_name']."c=table_off&a=doindex&submit_type=typeonoff&field={$field}&all_id={$id}&tname={$this->tname}&method=ajax";
return ''.$array[$value].'';
}
//处理多选的ID
public function where_id(&$where) {
global $_M,$_YW;
$allid = array_filter(stringto_array($_M['form']['all_id'],','));
if($allid){
if($where) $where .= " AND ";
$idstr = self::strchange($allid);
switch ($this->tname) {
case 'elevators':
$where .= " el.e_number IN({$idstr}) ";
break;
case 'villages':
$where .= " vi.id IN({$idstr}) ";
break;
default:
break;
}
}
}
// 对现有广告位进行裂变,已经不再需要
public function fission() {
global $_M,$_YW;
//获取所有广告位
$elevator = $this->tsql->table('elevator')->all();
//划定什么位置裂变成什么 1裂变出2
$e_aps = [
'1' => 4,
'2' => 5,
'3' => 6,
];
//拼装数据
foreach ($elevator as $val) {
//计算广告位编号
$neweaps = $e_aps[$val['e_aps']];
self::e_number($val['e_number'],$neweaps);
$field = [
'e_number' => $val['e_number'],
'e_vid' => $val['e_vid'],
'e_bno' => $val['e_bno'],
'e_aps' => $neweaps,
'e_size' => $val['e_size'],
'e_enable' => $val['e_enable'],
'e_label' => $val['e_label'],
'e_text' => $val['e_text']
];
$this->tsql->table('elevator')
->field($field)
->add();
}
}
//对字符串处理
public function e_number(&$num,$neweaps,$type = false) {
global $_M,$_YW;
if($type) $neweaps++;
//新的编号
$enum = $num.$neweaps;
//验证
$elevator = $this->tsql->table('elevator')->where(['e_number' => $enum ])->one();
if($elevator == false){
$num = $enum;
}else{
self::e_number($num,$neweaps,true);
}
}
}
?>