<?php
// +----------------------------------------------------------------------
// | likeadmin快速开发前后端分离管理后台（PHP版）
// +----------------------------------------------------------------------
// | 欢迎阅读学习系统程序代码，建议反馈是我们前进的动力
// | 开源版本可自由商用，可去除界面版权logo
// | gitee下载：https://gitee.com/likeshop_gitee/likeadmin
// | github下载：https://github.com/likeshop-github/likeadmin
// | 访问官网：https://www.likeadmin.cn
// | likeadmin团队 版权所有 拥有最终解释权
// +----------------------------------------------------------------------
// | author: likeadminTeam
// +----------------------------------------------------------------------

namespace app\adminapi\controller\notice;

use app\adminapi\controller\BaseAdminController;
use app\adminapi\lists\notice\NoticeSettingLists;
use app\adminapi\logic\notice\NoticeLogic;
use app\adminapi\validate\notice\NoticeValidate;
use app\common\enum\notice\NoticeEnum;
use app\common\model\notice\NoticeSetting;
use app\common\service\wechat\WeChatOaService;

/**
 * 通知控制器
 * Class NoticeController
 * @package app\adminapi\controller\notice
 */
class NoticeController extends BaseAdminController
{
    public array $notNeedLogin = ['testNotice'];
    /**
     * @notes 查看通知设置列表
     * @return \think\response\Json
     * @author 段誉
     * @date 2022/3/29 11:18
     */
    public function settingLists()
    {
        return $this->dataLists(new NoticeSettingLists());
    }


    /**
     * @notes 查看通知设置详情
     * @return \think\response\Json
     * @author 段誉
     * @date 2022/3/29 11:18
     */
    public function detail()
    {
        $params = (new NoticeValidate())->goCheck('detail');
        $result = NoticeLogic::detail($params);
        return $this->data($result);
    }


    /**
     * @notes 通知设置
     * @return \think\response\Json
     * @author 段誉
     * @date 2022/3/29 11:18
     */
    public function set()
    {
        $params = $this->request->post();
        $result = NoticeLogic::set($params);
        if ($result) {
            return $this->success('设置成功');
        }
        return $this->fail(NoticeLogic::getError());
    }

    /**
     * @notes 获取通知弹框信息
     */
    public function getInformation()
    {
        $params = $this->request->post();
        if(isset($params['business_codes']) && !empty($params['business_codes'])){
            $result = NoticeLogic::getInformationBatch($params);
        }else{
            $result = NoticeLogic::getInformation($params);
        }
        if ($result) {
            return $this->success('获取成功', $result);
        }
        return $this->fail(NoticeLogic::getError());
    }

    /**
     * @notes 后台测试通知
     * http://api.weixiuloc.com:5175/adminapi/notice.notice/testNotice?scene_id=1&params={}
     */
    public function testNotice()
    {
        try {
            $params = $this->request->get();
            if(!isset($params['scene_id'])){
                throw new \Exception('scene_id不存在');
            }
            $noticeSetting = NoticeSetting::where('scene_id', $params['scene_id'])->findOrEmpty()->toArray();
            if(isset($noticeSetting['sms_notice']['status'])){
                $res = event('Notice',  [
                    'scene_id' => $params['scene_id'],
                    'params' => json_decode($params['params'],true)
                    /*[
                        'user_id' => $params['user_id'],
                    ]*/
                ]);
            }
            if(isset($noticeSetting['oa_notice']['status'])){
                $res = event('Notice',  [
                    'scene_id' => $params['scene_id'],
                    'params' => json_decode($params['params'],true)
                    /*[
                        'user_id' => $params['user_id'],
                        'order_id' => $params['order_id']?:'',
                        'thing9' => '测试项目名称'.time(),
                        'time7' => date("Y-m-d H:i:s", time()),
                        'thing8' => '预约地址'.time(),
                        'phone_number6' => 18162757399,
                    ]*/
                ]);
            }
            dd($params,json_decode($params['params'],true),$noticeSetting,$res??[]);
        } catch (\Exception  $e) {
            dd($e->getMessage());
        }
    }


}