You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
zhishifufei_php/application/admin/controller/setting/SystemMessage.php

265 lines
9.8 KiB

9 months ago
<?php
// +----------------------------------------------------------------------
// | 天诚科技 [ 刘海东 17600099397赋能开发者,助力企业发展 ]
// +----------------------------------------------------------------------
// | Copyright (c) 2016~2020 https://www.tczxkj.com All rights reserved.
// +----------------------------------------------------------------------
// | Licensed 该系统并不是自由软件,未经许可不能去掉相关版权
// +----------------------------------------------------------------------
// | Author:甘肃天诚志信电子商务有限公司 刘海东 联系电话维系17600099397
// +----------------------------------------------------------------------
namespace app\admin\controller\setting;
use app\admin\controller\AuthController;
use service\FormBuilder as Form;
use app\admin\model\system\SystemMessage as MessageModel;
use app\admin\model\wechat\WechatTemplate as WechatTemplateModel;
use service\JsonService;
use service\WechatTemplateService;
use service\SystemConfigService;
use think\Request;
use think\Url;
/**
* 消息通知 控制器
* Class SystemMessage
* @package app\admin\controller\setting
*/
class SystemMessage extends AuthController
{
/**
* 消息通知展示
* @return
* */
public function index()
{
$data = [];
if (SystemConfigService::get('wechat_appid') && SystemConfigService::get('wechat_appsecret')) {
try {
$data = WechatTemplateService::getIndustry();
$data = count($data) > 0 ? $data->toArray() : [];
} catch (\Exception $e) {
}
}
$this->assign('data', $data);
return $this->fetch();
}
/**
* 同步微信模版消息
*/
public function synchronousWechatTemplate()
{
if (!SystemConfigService::get('wechat_appid') || !SystemConfigService::get('wechat_appsecret')) return JsonService::fail('请先配置公众号');
try {
$data = WechatTemplateService::getIndustry();
$data = count($data) > 0 ? $data->toArray() : [];
} catch (\Exception $e) {
return JsonService::fail($e->getMessage());
}
if ($data['primary_industry']['first_class'] == 'IT科技' && $data['primary_industry']['second_class'] == '互联网|电子商务' &&
$data['secondary_industry']['first_class'] == 'IT科技' && $data['secondary_industry']['second_class'] == 'IT软件与服务') {
$this->set_template();
} else {
try {
WechatTemplateService::setIndustry(1, 2);
} catch (\Exception $e) {
return JsonService::fail('同步失败,请检查公众号配置' . $e->getMessage());
}
$this->set_template();
}
return JsonService::successful('同步完成');
}
/**模版消息同步
* @throws \think\db\exception\DataNotFoundException
* @throws \think\db\exception\ModelNotFoundException
* @throws \think\exception\DbException
*/
public function set_template()
{
$list = WechatTemplateModel::where('status', 1)->select();
foreach ($list as $key => $value) {
try {
$res = WechatTemplateService::addTemplate($value['tempkey']);
} catch (\Exception $e) {
continue;
}
if ($res['errcode'] == 0 && $res['errmsg'] == 'ok' && $res['template_id']) {
$data['tempid'] = $res['template_id'];
WechatTemplateModel::edit($data, $value['tempkey'], 'tempkey');
}
}
return JsonService::successful('模版消息同步完成');
}
/**
* 消息通知获取
* @return
* */
public function system_message_list()
{
$where = parent::getMore([
['page', 1],
['limit', 20],
['title', '']
]);
return JsonService::successlayui(MessageModel::systemMessageList($where));
}
/**添加/编辑
* @return mixed|void
* @throws \think\exception\DbException
*/
public function create()
{
return $this->fetch();
}
/**
* 添加和修改讲师
* @param int $id 修改
* @return JsonService
* */
public function save_message()
{
$data = parent::postMore([
['name', ''],
['template_const', ''],
['tempkey', ''],
['temp_id', ''],
['sms_content', ''],
['is_wechat', 1],
['is_sms', 1],
]);
if (!$data['name']) return JsonService::fail('请输入消息名称');
if (!$data['template_const']) return JsonService::fail('请输入模版常数');
if (!$data['tempkey']) return JsonService::fail('请编辑模板编号');
$data['add_time'] = time();
if (!MessageModel::be(['name' => $data['name']])) {
$res = MessageModel::set($data);
} else {
return JsonService::fail('消息已存在');
}
if ($res)
return JsonService::successful('添加成功');
else
return JsonService::fail('添加失败');
}
/**
* 编辑模板消息
* @param $id
* @return mixed|\think\response\Json|void
*/
public function edit($tempkey)
{
if (!$tempkey) return $this->failed('数据不存在');
$template = WechatTemplateModel::where('tempkey', $tempkey)->find();
$status = MessageModel::where('tempkey', $tempkey)->value('is_wechat');
$f = array();
$f[] = Form::input('tempkey', '模板编号', $template->getData('tempkey'))->disabled(1);
$f[] = Form::input('name', '模板名', $template->getData('name'))->disabled(1);
$f[] = Form::input('content', '内容', $template->getData('content'))->type('textarea')->disabled(1);
$f[] = Form::input('tempid', '模板ID', $template->getData('tempid'));
$f[] = Form::radio('status', '状态', $status)->options([['label' => '开启', 'value' => 1], ['label' => '关闭', 'value' => 0]]);
$form = Form::make_post_form('编辑模板消息', $f, Url::build('update', compact('tempkey')), 2);
$this->assign(compact('form'));
return $this->fetch('public/form-builder');
}
/**微信模版保存
* @param Request $request
* @param $tempkey
* @throws \think\db\exception\DataNotFoundException
* @throws \think\db\exception\ModelNotFoundException
* @throws \think\exception\DbException
*/
public function update(Request $request, $tempkey)
{
$data = parent::postMore([
'tempid',
['status', 0]
], $request);
if ($data['tempid'] == '') return JsonService::fail('请输入模板ID');
if (!$tempkey) return JsonService::fail('数据不存在');
$template = WechatTemplateModel::where('tempkey', $tempkey)->find();
if (!$template) return JsonService::fail('数据不存在!');
WechatTemplateModel::edit($data, $tempkey, 'tempkey');
MessageModel::where('tempkey', $tempkey)->update(['is_wechat' => $data['status']]);
return JsonService::successful('修改成功!');
}
/**
* 编辑短信模板消息
* @param $id
* @return mixed|\think\response\Json|void
*/
public function sms($id)
{
if (!$id) return $this->failed('数据不存在');
$template = MessageModel::where('id', $id)->find();
$f = array();
$f[] = Form::input('temp_id', '模板编号', $template->getData('temp_id'))->disabled(1);
$f[] = Form::input('name', '模板名', $template->getData('name'))->disabled(1);
$f[] = Form::input('sms_content', '内容', $template->getData('sms_content'))->type('textarea')->disabled(1);
$f[] = Form::radio('is_sms', '状态', $template->getData('is_sms'))->options([['label' => '开启', 'value' => 1], ['label' => '关闭', 'value' => 0]]);
$form = Form::make_post_form('编辑短信模板消息', $f, Url::build('sms_update', compact('id')), 2);
$this->assign(compact('form'));
return $this->fetch('public/form-builder');
}
/**短信状态保存
* @param Request $request
* @param $id
*/
public function sms_update(Request $request, $id)
{
$data = parent::postMore([
['is_sms', 0]
], $request);
if (!$id) return JsonService::fail('数据不存在');
MessageModel::edit($data, $id);
return JsonService::successful('修改成功!');
}
/**
* 快速编辑
* @param string $field 字段名
* @param int $id 修改的主键
* @param string value 修改后的值
* @return JsonService
*/
public function set_value($field = '', $id = '', $value = '')
{
($field == '' || $id == '' || $value == '') && JsonService::fail('缺少参数');
$message = MessageModel::where('id', $id)->find();
if ($field == 'is_wechat' && $value == 1 && $message['tempkey'] == '') {
return JsonService::fail('微信模板编号不能为空');
}
if ($field == 'is_sms' && $value == 1 && $message['temp_id'] == '') {
return JsonService::fail('短信模板ID不能为空');
}
$res = MessageModel::where('id', $id)->update([$field => $value]);
if ($res)
return JsonService::successful('保存成功');
else
return JsonService::fail('保存失败');
}
/**
* 删除讲师
* @param int $id 修改的主键
* @return json
* */
public function delete($id = 0)
{
if (!$id) return JsonService::fail('缺少参数');
if (MessageModel::del($id))
return JsonService::successful('删除成功');
else
return JsonService::fail(MessageModel::getErrorInfo('删除失败'));
}
}