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); } } } ?>