<?php

namespace app\home\controller;
use think\Db;
use think\Controller;
/**
 * @title 钩子文档
 * @description 接口说明：这这里编写添加的钩子文档(hook 名和hook中参数)
 */
class HooksController
{

    /*  工单  */

     /**
     * @title 在管理区添加工单备注
     * @description 接口说明:无
     * @author hh
     * @url ticket_add_note
     * @method 
     * @param .name:ticketid type:int require:1 default:0 other: desc:工单ID
     * @param .name:content type:string require:1 default:0 other: desc:备注内容
     * @param .name:attachment type:array require:1 default:0 other: desc:工单附件储存路径
     * @param .name:adminid type:int require:1 default:0 other: desc:管理员ID
     * @return 响应：不支持回复
     */
    public function ticket_add_note(){}
    
     /**
     * @title 在管理区回复工单
     * @description 接口说明:无
     * @author hh
     * @url ticket_admin_reply
     * @method 
     * @param .name:ticketid type:int require:1 default:0 other: desc:工单ID
     * @param .name:replyid type:int require:1 default:0 other: desc:工单回复ID
     * @param .name:dptid type:int require:1 default:0 other: desc:工单部门ID
     * @param .name:dptname type:string require:1 default:0 other: desc:工单部门名称
     * @param .name:title type:string require:1 default:0 other: desc:工单标题
     * @param .name:content type:string require:0 default:0 other: desc:回复内容
     * @param .name:priority type:string require:0 default:0 other: desc:工单优先级
     * @param .name:admin type:string require:0 default:0 other: desc:管理员名称
     * @param .name:status type:int require:0 default:0 other: desc:工单状态ID
     * @param .name:status_title type:string require:0 default:0 other: desc:工单状态名称
     * @return 响应：不支持回复
     */
    public function ticket_admin_reply(){}

     /**
     * @title 关闭工单
     * @description 当工单关闭后执行
     * @author hh
     * @url ticket_close
     * @method 
     * @param .name:ticketid type:int require:1 default:0 other: desc:工单ID
     * @return 响应：不支持回复
     */
    public function ticket_close(){}

    /**
     * @title 在管理区删除工单
     * @description 接口说明:无
     * @author hh
     * @url ticket_delete
     * @method 
     * @param .name:ticketid type:array require:1 default:0 other: desc:工单ID
     * @param .name:adminid type:int require:1 default:0 other: desc:操作的管理员ID
     * @return 响应：不支持回复
     */
    public function ticket_delete(){}

    /**
     * @title 删除工单工单回复后执行
     * @description 接口说明:无
     * @author hh
     * @url ticket_delete_reply
     * @method 
     * @param .name:ticketid type:int require:1 default:0 other: desc:工单ID
     * @param .name:replyid type:int require:1 default:0 other: desc:工单回复ID
     * @param .name:adminid type:int require:1 default:0 other: desc:操作的管理员ID
     * @return 响应：不支持回复
     */
    public function ticket_delete_reply(){}

    /**
     * @title 工单部门变更后执行
     * @description 接口说明:无
     * @author hh
     * @url ticket_department_change
     * @method 
     * @param .name:ticketid type:int require:1 default:0 other: desc:工单ID
     * @param .name:dptid type:int require:1 default:0 other: desc:新部门ID
     * @param .name:dptname type:string require:1 default:0 other: desc:新部门名称
     * @return 响应：不支持回复
     */
    public function ticket_department_change(){}

    /**
     * @title 用户新建工单后执行
     * @description 接口说明:无
     * @author hh
     * @url ticket_open
     * @method 
     * @param .name:ticketid type:int require:1 default:0 other: desc:工单ID
     * @param .name:tid type:string require:1 default:0 other: desc:工单号
     * @param .name:uid type:int require:1 default:0 other: desc:用户ID
     * @param .name:dptid type:int require:1 default:0 other: desc:部门ID
     * @param .name:dptname type:string require:1 default:0 other: desc:部门名称
     * @param .name:title type:string require:1 default:0 other: desc:工单标题
     * @param .name:content type:string require:1 default:0 other: desc:工单内容
     * @param .name:priority type:string require:1 default:0 other: desc:优先级
     * @param .name:hostid type:int require:1 default:0 other: desc:产品ID
     * @param .name:attachment type:array require:1 default:0 other: desc:附件
     * @return 响应：不支持回复
     */
    public function ticket_open(){}

    /**
     * @title 在管理区新建工单
     * @description 接口说明:无
     * @author hh
     * @url ticket_open_admin
     * @method 
     * @param .name:ticketid type:int require:1 default:0 other: desc:工单ID
     * @param .name:tid type:string require:1 default:0 other: desc:工单号
     * @param .name:uid type:int require:1 default:0 other: desc:用户ID
     * @param .name:dptid type:int require:0 default:0 other: desc:部门ID
     * @param .name:dptname type:string require:0 default:0 other: desc:部门名称
     * @param .name:title type:string require:0 default:0 other: desc:工单标题
     * @param .name:content type:string require:0 default:0 other: desc:工单内容
     * @param .name:priority type:string require:0 default:0 other: desc:优先级high高,medium中,low低
     * @param .name:attachment type:array require:1 default:0 other: desc:附件
     * @return 响应：不支持回复
     */
    public function ticket_open_admin(){}

    /**
     * @title 工单状态被管理员手动改变时执行
     * @description 接口说明:无
     * @author hh
     * @url ticket_status_change
     * @method 
     * @param .name:ticketid type:array require:1 default:0 other: desc:工单ID
     * @param .name:status type:int require:1 default:0 other: desc:新状态ID
     * @param .name:status_title type:string require:1 default:0 other: desc:新状态名称
     * @param .name:adminid type:int require:1 default:0 other: desc:管理员ID
     * @return 响应：不支持回复
     */
    public function ticket_status_change(){}

    /**
     * @title 工单标题变更后执行
     * @description 接口说明:无
     * @author hh
     * @url ticket_title_change
     * @method 
     * @param .name:ticketid type:int require:1 default:0 other: desc:工单ID
     * @param .name:title type:string require:1 default:0 other: desc:新标题
     * @return 响应：不支持回复
     */
    public function ticket_title_change(){}

     /**
     * @title 用户回复工单后执行
     * @description 接口说明:无
     * @author hh
     * @url ticket_user_reply
     * @method 
     * @param .name:ticketid type:int require:1 default:0 other: desc:工单ID
     * @param .name:replyid type:int require:1 default:0 other: desc:工单回复ID
     * @param .name:uid type:int require:1 default:0 other: desc:用户ID
     * @param .name:dptid type:int require:1 default:0 other: desc:工单部门ID
     * @param .name:dptname type:string require:1 default:0 other: desc:工单部门名称
     * @param .name:title type:string require:1 default:0 other: desc:工单标题
     * @param .name:content type:string require:0 default:0 other: desc:回复内容
     * @param .name:priority type:string require:0 default:0 other: desc:工单优先级
     * @param .name:status type:int require:0 default:0 other: desc:工单状态ID
     * @param .name:status_title type:string require:0 default:0 other: desc:工单状态名称
     * @return 响应：不支持回复
     */
    public function ticket_user_reply(){}

    /* 定时任务 */

    /**
     * @title 每次定时任务之后执行
     * @author hh
     * @url after_cron
     * @method 
     * @return 响应：不支持回复
     */
    public function after_cron(){}

    /**
     * @title 每次定时任务之前执行
     * @author hh
     * @url before_cron
     * @method 
     * @return 响应：不支持回复
     */
    public function before_cron(){}

    /**
     * @title 每五分钟定时任务之后执行
     * @author hh
     * @url after_five_minute_cron
     * @method 
     * @return 响应：不支持回复
     */
    public function after_five_minute_cron(){}

    /**
     * @title 每天定时任务之后执行
     * @author hh
     * @url after_daily_cron
     * @method 
     * @return 响应：不支持回复
     */
    public function after_daily_cron(){}

    /**
     * @title 每天定时任务之前执行
     * @author hh
     * @url before_daily_cron
     * @method 
     * @return 响应：不支持回复
     */
    public function before_daily_cron(){}

    /**
     * @title 定时任务保存后执行
     * @author hh
     * @url cron_config_save
     * @method 
     * @param .name:adminid type:int require:1 default:0 other: desc:操作的管理员ID
     * @return 响应：不支持回复
     */
    public function cron_config_save(){}

    /* service module */

    /**
     * @title 模块升降级成功之后执行
     * @author hh
     * @url after_module_change_package
     * @method 
     * @param .name:params type:array require:1 default:0 other: desc:参考模块开发的params
     * @return 响应：不支持回复
     */
    public function after_module_change_package(){}

    /**
     * @title 模块升降级失败之后执行
     * @author hh
     * @url after_module_change_package_failed
     * @method 
     * @param .name:params type:array require:1 default:0 other: desc:参考模块开发的params
     * @param .name:msg type:string require:1 default:0 other: desc:失败原因
     * @return 响应：不支持回复
     */
    public function after_module_change_package_failed(){}

    /**
     * @title 模块重置密码成功之后执行
     * @author hh
     * @url after_module_crack_password
     * @method 
     * @param .name:hostid type:int require:1 default:0 other: desc:产品ID
     * @param .name:oldpassword type:string require:1 default:0 other: desc:原密码
     * @param .name:newspassword type:string require:1 default:0 other: desc:新密码
     * @return 响应：不支持回复
     */
    public function after_module_crack_password(){}

    /**
     * @title 模块重置密码失败之后执行
     * @author hh
     * @url after_module_crack_password_failed
     * @method 
     * @param .name:params type:array require:1 default:0 other: desc:参考模块开发的params
     * @param .name:msg type:string require:1 default:0 other: desc:失败原因
     * @return 响应：不支持回复
     */
    public function after_module_crack_password_failed(){}

    /**
     * @title 模块开通成功之后执行
     * @author hh
     * @url after_module_create
     * @method 
     * @param .name:params type:array require:1 default:0 other: desc:参考模块开发的params
     * @return 响应：不支持回复
     */
    public function after_module_create(){}

    /**
     * @title 模块开通失败之后执行
     * @author hh
     * @url after_module_create_failed
     * @method 
     * @param .name:params type:array require:1 default:0 other: desc:参考模块开发的params
     * @param .name:msg type:string require:1 default:0 other: desc:失败原因
     * @return 响应：不支持回复
     */
    public function after_module_create_failed(){}

    /**
     * @title 模块暂停成功之后执行
     * @author hh
     * @url after_module_suspend
     * @method 
     * @param .name:params type:array require:1 default:0 other: desc:参考模块开发的params
     * @return 响应：不支持回复
     */
    public function after_module_suspend(){}

    /**
     * @title 模块暂停失败之后执行
     * @author hh
     * @url after_module_suspend_failed
     * @method 
     * @param .name:params type:array require:1 default:0 other: desc:参考模块开发的params
     * @param .name:msg type:string require:1 default:0 other: desc:失败原因
     * @return 响应：不支持回复
     */
    public function after_module_suspend_failed(){}

    /**
     * @title 模块删除成功之后执行
     * @author hh
     * @url after_module_terminate
     * @method 
     * @param .name:params type:array require:1 default:0 other: desc:参考模块开发的params
     * @return 响应：不支持回复
     */
    public function after_module_terminate(){}

    /**
     * @title 模块删除失败之后执行
     * @author hh
     * @url after_module_terminate_failed
     * @method 
     * @param .name:params type:array require:1 default:0 other: desc:参考模块开发的params
     * @param .name:msg type:string require:1 default:0 other: desc:失败原因
     * @return 响应：不支持回复
     */
    public function after_module_terminate_failed(){}

    /**
     * @title 模块解除暂停成功之后执行
     * @author hh
     * @url after_module_unsuspend
     * @method 
     * @param .name:params type:array require:1 default:0 other: desc:参考模块开发的params
     * @return 响应：不支持回复
     */
    public function after_module_unsuspend(){}

    /**
     * @title 模块解除暂停之后执行
     * @author hh
     * @url after_module_unsuspend_failed
     * @method 
     * @param .name:params type:array require:1 default:0 other: desc:参考模块开发的params
     * @param .name:msg type:string require:1 default:0 other: desc:失败原因
     * @return 响应：不支持回复
     */
    public function after_module_unsuspend_failed(){}

    /**
     * @title 模块开机成功之后执行
     * @author hh
     * @url after_module_on
     * @method 
     * @param .name:params type:array require:1 default:0 other: desc:参考模块开发的params
     * @return 响应：不支持回复
     */
    public function after_module_on(){}

    /**
     * @title 模块开机失败之后执行
     * @author hh
     * @url after_module_on_failed
     * @method 
     * @param .name:params type:array require:1 default:0 other: desc:参考模块开发的params
     * @param .name:msg type:string require:1 default:0 other: desc:失败原因
     * @return 响应：不支持回复
     */
    public function after_module_on_failed(){}

    /**
     * @title 模块关机成功之后执行
     * @author hh
     * @url after_module_off
     * @method 
     * @param .name:params type:array require:1 default:0 other: desc:参考模块开发的params
     * @return 响应：不支持回复
     */
    public function after_module_off(){}

    /**
     * @title 模块关机失败之后执行
     * @author hh
     * @url after_module_off_failed
     * @method 
     * @param .name:params type:array require:1 default:0 other: desc:参考模块开发的params
     * @param .name:msg type:string require:1 default:0 other: desc:失败原因
     * @return 响应：不支持回复
     */
    public function after_module_off_failed(){}

    /**
     * @title 模块重启成功之后执行
     * @author hh
     * @url after_module_reboot
     * @method 
     * @param .name:params type:array require:1 default:0 other: desc:参考模块开发的params
     * @return 响应：不支持回复
     */
    public function after_module_reboot(){}

    /**
     * @title 模块重启失败之后执行
     * @author hh
     * @url after_module_reboot_failed
     * @method 
     * @param .name:params type:array require:1 default:0 other: desc:参考模块开发的params
     * @param .name:msg type:string require:1 default:0 other: desc:失败原因
     * @return 响应：不支持回复
     */
    public function after_module_reboot_failed(){}

    /**
     * @title 模块硬关机成功之后执行
     * @author hh
     * @url after_module_hard_off
     * @method 
     * @param .name:params type:array require:1 default:0 other: desc:参考模块开发的params
     * @return 响应：不支持回复
     */
    public function after_module_hard_off(){}

    /**
     * @title 模块硬关机失败之后执行
     * @author hh
     * @url after_module_hard_off_failed
     * @method 
     * @param .name:params type:array require:1 default:0 other: desc:参考模块开发的params
     * @param .name:msg type:string require:1 default:0 other: desc:失败原因
     * @return 响应：不支持回复
     */
    public function after_module_hard_off_failed(){}

    /**
     * @title 模块硬重启成功之后执行
     * @author hh
     * @url after_module_hard_reboot
     * @method 
     * @param .name:params type:array require:1 default:0 other: desc:参考模块开发的params
     * @return 响应：不支持回复
     */
    public function after_module_hard_reboot(){}

    /**
     * @title 模块硬重启失败之后执行
     * @author hh
     * @url after_module_hard_reboot_failed
     * @method 
     * @param .name:params type:array require:1 default:0 other: desc:参考模块开发的params
     * @param .name:msg type:string require:1 default:0 other: desc:失败原因
     * @return 响应：不支持回复
     */
    public function after_module_hard_reboot_failed(){}

    /**
     * @title 模块重装系统成功之后执行
     * @author hh
     * @url after_module_reinstall
     * @method 
     * @param .name:params type:array require:1 default:0 other: desc:参考模块开发的params
     * @return 响应：不支持回复
     */
    public function after_module_reinstall(){}

    /**
     * @title 模块重装系统失败之后执行
     * @author hh
     * @url after_module_reinstall_failed
     * @method 
     * @param .name:params type:array require:1 default:0 other: desc:参考模块开发的params
     * @param .name:msg type:string require:1 default:0 other: desc:失败原因
     * @return 响应：不支持回复
     */
    public function after_module_reinstall_failed(){}

    /**
     * @title 模块救援系统成功之后执行
     * @author hh
     * @url after_module_rescue_system
     * @method 
     * @param .name:params type:array require:1 default:0 other: desc:参考模块开发的params
     * @return 响应：不支持回复
     */
    public function after_module_rescue_system(){}

    /**
     * @title 模块救援系统失败之后执行
     * @author hh
     * @url after_module_rescue_system_failed
     * @method 
     * @param .name:params type:array require:1 default:0 other: desc:参考模块开发的params
     * @param .name:msg type:string require:1 default:0 other: desc:失败原因
     * @return 响应：不支持回复
     */
    public function after_module_rescue_system_failed(){}

    /**
     * @title 模块拉取信息成功之后执行
     * @author hh
     * @url after_module_sync
     * @method 
     * @param .name:params type:array require:1 default:0 other: desc:参考模块开发的params
     * @return 响应：不支持回复
     */
    public function after_module_sync(){}

    /**
     * @title 模块拉取信息失败之后执行
     * @author hh
     * @url after_module_sync_failed
     * @method 
     * @param .name:params type:array require:1 default:0 other: desc:参考模块开发的params
     * @param .name:msg type:string require:1 default:0 other: desc:失败原因
     * @return 响应：不支持回复
     */
    public function after_module_sync_failed(){}

    /**
     * @title 模块升降级之前执行
     * @author hh
     * @url before_module_change_package
     * @method 
     * @param .name:params type:array require:1 default:0 other: desc:参考模块开发的params
     * @return 返回键值对,键值对将会覆盖原来相同键的params,返回exit_module=true将会中断模块方法
     */
    public function before_module_change_package(){}

    /**
     * @title 模块重置密码之前执行
     * @author hh
     * @url before_module_crack_password
     * @method 
     * @param .name:params type:array require:1 default:0 other: desc:参考模块开发的params
     * @return 返回键值对,键值对将会覆盖原来相同键的params,返回exit_module=true将会中断模块方法
     */
    public function before_module_crack_password(){}

    /**
     * @title 模块开通之前执行
     * @author hh
     * @url before_module_create
     * @method 
     * @param .name:params type:array require:1 default:0 other: desc:参考模块开发的params
     * @return 返回键值对,键值对将会覆盖原来相同键的params,返回exit_module=true将会中断模块方法
     */
    public function before_module_create(){}

    /**
     * @title 模块续费之前执行
     * @author hh
     * @url before_module_renew
     * @method 
     * @param .name:params type:array require:1 default:0 other: desc:参考模块开发的params
     * @return 返回键值对,键值对将会覆盖原来相同键的params,返回exit_module=true将会中断模块方法
     */
    public function before_module_renew(){}

    /**
     * @title 模块暂停之前执行
     * @author hh
     * @url before_module_suspend
     * @method 
     * @param .name:params type:array require:1 default:0 other: desc:参考模块开发的params
     * @return 返回键值对,键值对将会覆盖原来相同键的params,返回exit_module=true将会中断模块方法
     */
    public function before_module_suspend(){}

    /**
     * @title 模块删除之前执行
     * @author hh
     * @url before_module_terminate
     * @method 
     * @param .name:params type:array require:1 default:0 other: desc:参考模块开发的params
     * @return 返回键值对,键值对将会覆盖原来相同键的params,返回exit_module=true将会中断模块方法
     */
    public function before_module_terminate(){}

    /**
     * @title 模块解除暂停之前执行
     * @author hh
     * @url before_module_unsuspend
     * @method 
     * @param .name:params type:array require:1 default:0 other: desc:参考模块开发的params
     * @return 返回键值对,键值对将会覆盖原来相同键的params,返回exit_module=true将会中断模块方法
     */
    public function before_module_unsuspend(){}

    /**
     * @title 模块开机之前执行
     * @author hh
     * @url before_module_on
     * @method 
     * @param .name:params type:array require:1 default:0 other: desc:参考模块开发的params
     * @return 返回键值对,键值对将会覆盖原来相同键的params,返回exit_module=true将会中断模块方法
     */
    public function before_module_on(){}

    /**
     * @title 模块关机之前执行
     * @author hh
     * @url before_module_off
     * @method 
     * @param .name:params type:array require:1 default:0 other: desc:参考模块开发的params
     * @return 返回键值对,键值对将会覆盖原来相同键的params,返回exit_module=true将会中断模块方法
     */
    public function before_module_off(){}

    /**
     * @title 模块重启之前执行
     * @author hh
     * @url before_module_reboot
     * @method 
     * @param .name:params type:array require:1 default:0 other: desc:参考模块开发的params
     * @return 返回键值对,键值对将会覆盖原来相同键的params,返回exit_module=true将会中断模块方法
     */
    public function before_module_reboot(){}

    /**
     * @title 模块硬关机之前执行
     * @author hh
     * @url before_module_hard_off
     * @method 
     * @param .name:params type:array require:1 default:0 other: desc:参考模块开发的params
     * @return 返回键值对,键值对将会覆盖原来相同键的params,返回exit_module=true将会中断模块方法
     */
    public function before_module_hard_off(){}

    /**
     * @title 模块硬重启之前执行
     * @author hh
     * @url before_module_hard_reboot
     * @method 
     * @param .name:params type:array require:1 default:0 other: desc:参考模块开发的params
     * @return 返回键值对,键值对将会覆盖原来相同键的params,返回exit_module=true将会中断模块方法
     */
    public function before_module_hard_reboot(){}

    /**
     * @title 模块重装系统之前执行
     * @author hh
     * @url before_module_reinstall
     * @method 
     * @param .name:params type:array require:1 default:0 other: desc:参考模块开发的params
     * @return 返回键值对,键值对将会覆盖原来相同键的params,返回exit_module=true将会中断模块方法
     */
    public function before_module_reinstall(){}

    /**
     * @title 模块救援系统之前执行
     * @author hh
     * @url before_module_rescue_system
     * @method 
     * @param .name:params type:array require:1 default:0 other: desc:参考模块开发的params
     * @return 返回键值对,键值对将会覆盖原来相同键的params,返回exit_module=true将会中断模块方法
     */
    public function before_module_rescue_system(){}

    /**
     * @title 模块拉取信息之前执行
     * @author hh
     * @url before_module_sync
     * @method 
     * @param .name:params type:array require:1 default:0 other: desc:参考模块开发的params
     * @return 返回键值对,键值对将会覆盖原来相同键的params,返回exit_module=true将会中断模块方法
     */
    public function before_module_sync(){}


    /* 交易流水 */

    /**
     * @title 后台手动添加交易流水后执行
     * @author hh
     * @url after_admin_add_account
     * @method 
     * @param .name:account_id type:int require:1 default:0 other: desc:交易流水ID
     * @param .name:amount_in type:float require:0  other: desc:收入
     * @param .name:amount_out type:float require:0  other: desc:支出
     * @param .name:currency type:string require:0  other: desc:货币代码
     * @param .name:description type:string require:0  other: desc:描述
     * @param .name:trans_id type:string require:0  other: desc:付款流水号
     * @param .name:invoice_id type:int require:0  other: desc:账单ID
     * @param .name:gateway type:string require:0  other: desc:付款方式
     * @param .name:refund type:int require:0  other: desc:是否退款至余额
     * @param .name:uid type:int require:0  other: desc:用户ID
     * @return 无
     */
    public function after_admin_add_account(){}

    /**
     * @title 后台手动编辑交易流水后执行
     * @author hh
     * @url after_admin_edit_account
     * @method 
     * @param .name:account_id type:int require:1 default:0 other: desc:交易流水ID
     * @param .name:amount_in type:float require:0  other: desc:收入
     * @param .name:amount_out type:float require:0  other: desc:支出
     * @param .name:invoice_id type:int require:0  other: desc:账单ID
     * @param .name:gateway type:string require:0  other: desc:付款方式
     * @return 无
     */
    public function after_admin_edit_account(){}

    /**
     * @title 后台手动删除交易流水后执行
     * @author hh
     * @url after_admin_delete_account
     * @method 
     * @param .name:account_id type:int require:1 default:0 other: desc:交易流水ID
     * @return 无
     */
    public function after_admin_delete_account(){}

    /* 管理员 */

    /**
     * @title 管理员退出登录执行
     * @author hh
     * @url admin_logout
     * @method 
     * @param .name:adminid type:int require:1 default:0 other: desc:管理员ID
     * @return 无
     */
    public function admin_logout(){}

    /**
     * @title 管理员登录执行
     * @author hh
     * @url admin_login
     * @method 
     * @param .name:adminid type:int require:1 default:0 other: desc:管理员ID
     * @param .name:admin type:string require:1 default:0 other: desc:管理员账号
     * @param .name:nickname type:string require:1 default:0 other: desc:管理员昵称
     * @return 无
     */
    public function admin_login(){}

    /**
     * @title 管理员登录系统验证全通过后执行
     * @author hh
     * @url auth_admin_login
     * @method 
     * @return status:true通过验证/false验证失败
     * @return msg:失败信息
     */
    public function auth_admin_login(){}

    /**
     * @title 添加管理员后执行
     * @author hh
     * @url add_admin
     * @method 
     * @param .name:adminid type:int require:1 default:0 other: desc:管理员ID
     */
    public function add_admin(){}

    /**
     * @title 编辑管理员后执行
     * @author hh
     * @url edit_admin
     * @method 
     * @param .name:adminid type:int require:1 default:0 other: desc:管理员ID
     */
    public function edit_admin(){}

    /**
     * @title 删除管理员后执行
     * @author hh
     * @url delete_admin
     * @method 
     * @param .name:adminid type:int require:1 default:0 other: desc:管理员ID
     */
    public function delete_admin(){}


    /* 产品/服务 */

    /**
     * @title 管理员手动保存产品后执行
     * @author hh
     * @url after_admin_edit_service
     * @method 
     * @param .name:adminid type:int require:1 default:0 other: desc:管理员ID
     * @param .name:hostid type:int require:1 default:0 other: desc:服务ID
     */
    public function after_admin_edit_service(){}

    /**
     * @title 产品转移后执行
     * @author 萧十一郎
     * @url transfer_service
     * @method GET
     * @param .name:uid type:int require:1 default:0 other: desc:用户id
     * @param .name:transfer_uid type:int require:1 default:0 other: desc:接收用户id
     * @param .name:hostid type:int require:1 default:0 other: desc:服务id
     * @return 响应：不支持回复
     */
    public function transfer_service(){}

    /**
     * @title 删除服务后执行。
     * @author 萧十一郎
     * @url service_delete
     * @method GET
     * @param .name:uid type:int require:1 default:0 other: desc:用户id
     * @param .name:hostid type:int require:1 default:0 other: desc:服务id
     * @return 响应：不支持回复
     */
    public function service_delete(){}

    /**
     * @title 删除商品后执行
     * @author 萧十一郎
     * @url product_delete
     * @method 
     * @param .name:pid type:int require:1 default:0 other: desc:商品id
     * @return 响应：不支持回复
     */
    public function product_delete(){}

    /**
     * @title 商品创建后执行
     * @author 萧十一郎
     * @url product_create
     * @method 
     * @param .name:pid type:int require:1 default:0 other: desc:商品id
     * @return 响应：不支持回复
     */
    public function product_create(){}

    /**
     * @title 商品编辑后执行
     * @author 萧十一郎
     * @url product_edit
     * @method 
     * @param .name:pid type:int require:1 default:0 other: desc:商品id
     * @return 响应：不支持回复
     */
    public function product_edit(){}

    /**
     * @title 在创建取消请求时执行
     * @author 萧十一郎
     * @url cancellation_request
     * @method GET
     * @param .name:uid type:int require:1 default:0 other: desc:用户id
     * @param .name:relid type:int require:1 default:0 other: desc:服务被取消的ID
     * @param .name:reason type:int require: default:0 other: desc:取消原因
     * @param .name:type type:string require: default:0 other: desc:取消类型
     * @return 响应：不支持回复
     */
    public function cancellation_request(){}

    /**
     * @title 产品升级后执行
     * @author wyh
     * @url after_product_upgrade
     * @method GET
     * @param .name:upgradeid type:int require:1 default:0 other: desc:升级ID
     * @return 响应：不支持回复
     */
    public function after_product_upgrade(){}

    /* 账单 */

    /**
     * @title 账单支付后邮件发送前执行
     * @author hh
     * @url invoice_paid_before_email
     * @method 
     * @param .name:invoiceid type:int require:1 default:0 other: desc:账单ID
     * @return 响应：不支持回复
     */
    public function invoice_paid_before_email(){}

    /**
     * @title 账单支付后邮件发送后执行
     * @author hh
     * @url invoice_paid
     * @method 
     * @param .name:invoiceid type:int require:1 default:0 other: desc:账单ID
     * @return 响应：不支持回复
     */
    public function invoice_paid(){}

    /**
     * @title 当账单标记为未支付后执行
     * @author hh
     * @url invoice_mark_unpaid
     * @method 
     * @param .name:invoiceid type:int require:1 default:0 other: desc:账单ID
     * @return 响应：不支持回复
     */
    public function invoice_mark_unpaid(){}

    /**
     * @title 当账单标记为已取消后执行
     * @author hh
     * @url invoice_mark_cancelled
     * @method 
     * @param .name:invoiceid type:int require:1 default:0 other: desc:账单ID
     * @return 响应：不支持回复
     */
    public function invoice_mark_cancelled(){}

    /**
     * @title 当账单删除后执行
     * @author hh
     * @url invoice_delete
     * @method 
     * @param .name:invoiceid type:int require:1 default:0 other: desc:账单ID
     * @return 响应：不支持回复
     */
    public function invoice_delete(){}

    /**
     * @title 账单退款后执行
     * @author hh
     * @url invoice_refunded
     * @method 
     * @param .name:invoiceid type:int require:1 default:0 other: desc:账单ID
     * @param .name:amount type:float require:1 default:0 other: desc:退款金额
     * @return 响应：不支持回复
     */
    public function invoice_refunded(){}

    /**
     * @title 账单备注后执行
     * @author hh
     * @url invoice_notes
     * @method 
     * @param .name:invoiceid type:int require:1 default:0 other: desc:账单ID
     * @param .name:content type:string require:1 default:0 other: desc:备注内容
     * @return 响应：不支持回复
     */
    public function invoice_notes(){}

    /**
     * @title 创建续费账单后
     * @author hh
     * @url renew_invoice_create
     * @method GET
     * @param .name:invoiceid type:int require:1 default:0 other: desc:生成的账单id
     * @param .name:hostid type:int require:1 default:0 other: desc:产品id
     * @return 响应：不支持回复
     */
    public function renew_invoice_create(){}

    /**
     * @title 创建流量包账单后
     * @author hh
     * @url flow_packet_invoice_create
     * @method GET
     * @param .name:invoiceid type:int require:1 default:0 other: desc:生成的账单id
     * @param .name:hostid type:int require:1 default:0 other: desc:产品id
     * @param .name:price type:float require:1 default:0 other: desc:流量包价格
     * @param .name:name type:string require:1 default:0 other: desc:流量包名称
     * @param .name:capacity type:string require:1 default:0 other: desc:流量包大小
     * @param .name:flowpacketid type:string require:1 default:0 other: desc:流量包ID
     * @return 响应：不支持回复
     */
    public function flow_packet_invoice_create(){}

    /**
     * @title 合并账单后执行
     * @author hh
     * @url invoice_combine
     * @method GET
     * @param .name:invoiceid type:int require:1 default:0 other: desc:生成的账单id
     * @param .name:combined_invoice type:array require:1 default:0 other: desc:合并的账单ID
     * @return 响应：不支持回复
     */
    public function invoice_combine(){}

    /* 订单 */

    /**
     * @title 订单审核通过后执行
     * @author hh
     * @url order_pass_check
     * @method GET
     * @param .name:orderid type:int require:1 default:0 other: desc:订单id
     * @return 响应：不支持回复
     */
    public function order_pass_check(){}

    /**
     * @title 订单取消后执行
     * @author hh
     * @url order_cancel
     * @method GET
     * @param .name:orderid type:int require:1 default:0 other: desc:订单id
     * @return 响应：不支持回复
     */
    public function order_cancel(){}

    /**
     * @title 订单删除后执行
     * @author hh
     * @url order_delete
     * @method GET
     * @param .name:orderid type:int require:1 default:0 other: desc:订单id
     * @return 响应：不支持回复
     */
    public function order_delete(){}

    // </------------客户----------
    /**
     * @title 客户添加后
     * @author wyh
     * @url client_add
     * @method POST
     * @param .name:userid type:int require:1 default:1 other: desc:用户名ID
     * @param .name:username type:int require:1 default:1 other: desc:用户名
     * @param .name:sex type:int require:1 default:1 other: desc:性别
     * @param .name:avatar type:int require:0 default:1 other: desc:头像
     * @param .name:profession type:int require:0 default:1 other: desc:职业
     * @param .name:signature type:int require:0 default:1 other: desc:个性签名
     * @param .name:companyname type:int require:0 default:1 other: desc:所在公司
     * @param .name:email type:int require:0 default:0 other: desc:邮件
     * @param .name:country type:int require:0 default:0 other: desc:国家
     * @param .name:province type:int require:0 default:0 other: desc:省份
     * @param .name:city type:int require:0 default:0 other: desc:城市
     * @param .name:region type:int require:0 default:0 other: desc:区
     * @param .name:address1 type:int require:0 default:1 other: desc:具体地址1
     * @param .name:address2 type:int require:0 default:1 other: desc:具体地址2
     * @param .name:postcode type:int require:0 default:1 other: desc:邮编
     * @param .name:phone_code type:int require:0 default:1 other: desc:电话区号
     * @param .name:phonenumber type:int require:0 default:1 other: desc:电话
     * @param .name:notes type:int require:0 default:0 other: desc:管理员备注
     * @param .name:groupid type:int require:0 default:0 other: desc:用户组ID
     * @return 响应：不支持回复
     */
    public function client_add(){}

    /**
     * @title 客户编辑
     * @author wyh
     * @url client_edit
     * @method POST
     * @param .name:userid type:int require:1 default:1 other: desc:用户名ID
     * @param .name:username type:int require:1 default:1 other: desc:用户名
     * @param .name:sex type:int require:1 default:1 other: desc:性别
     * @param .name:avatar type:int require:0 default:1 other: desc:头像
     * @param .name:profession type:int require:0 default:1 other: desc:职业
     * @param .name:signature type:int require:0 default:1 other: desc:个性签名
     * @param .name:companyname type:int require:0 default:1 other: desc:所在公司
     * @param .name:email type:int require:0 default:0 other: desc:邮件
     * @param .name:country type:int require:0 default:0 other: desc:国家
     * @param .name:province type:int require:0 default:0 other: desc:省份
     * @param .name:city type:int require:0 default:0 other: desc:城市
     * @param .name:region type:int require:0 default:0 other: desc:区
     * @param .name:address1 type:int require:0 default:1 other: desc:具体地址1
     * @param .name:address2 type:int require:0 default:1 other: desc:具体地址2
     * @param .name:postcode type:int require:0 default:1 other: desc:邮编
     * @param .name:phone_code type:int require:0 default:1 other: desc:电话区号
     * @param .name:phonenumber type:int require:0 default:1 other: desc:电话
     * @param .name:notes type:int require:0 default:0 other: desc:管理员备注
     * @param .name:groupid type:int require:0 default:0 other: desc:用户组ID
     * @return 响应：不支持回复
     */
    public function client_edit(){}

    /**
     * @title 关闭客户后
     * @author wyh
     * @url client_close
     * @method GET
     * @param .name:userid type:int require:1 default:1 other: desc:客户ID
     * @return 响应：不支持回复
     */
    public function client_close(){}

    /**
     * @title 删除客户前
     * @author wyh
     * @url pre_client_delete
     * @method GET
     * @param .name:userid type:int require:1 default:1 other: desc:客户ID
     * @return 响应：不支持回复
     */
    public function pre_client_delete(){}

    /**
     * @title 删除客户后
     * @author wyh
     * @url client_delete
     * @method GET
     * @param .name:userid type:int require:1 default:1 other: desc:客户ID
     * @return 响应：不支持回复
     */
    public function client_delete(){}

    /**
     * @title 添加客户前验证(客户端添加或者管理端添加)
     * @author wyh
     * @url client_details_validate
     * @method POST
     * @param .name:username type:int require:1 default:1 other: desc:用户名
     * @param .name:sex type:int require:1 default:1 other: desc:性别
     * @param .name:avatar type:int require:0 default:1 other: desc:头像
     * @param .name:profession type:int require:0 default:1 other: desc:职业
     * @param .name:signature type:int require:0 default:1 other: desc:个性签名
     * @param .name:companyname type:int require:0 default:1 other: desc:所在公司
     * @param .name:email type:int require:0 default:0 other: desc:邮件
     * @param .name:country type:int require:0 default:0 other: desc:国家
     * @param .name:province type:int require:0 default:0 other: desc:省份
     * @param .name:city type:int require:0 default:0 other: desc:城市
     * @param .name:region type:int require:0 default:0 other: desc:区
     * @param .name:address1 type:int require:0 default:1 other: desc:具体地址1
     * @param .name:address2 type:int require:0 default:1 other: desc:具体地址2
     * @param .name:postcode type:int require:0 default:1 other: desc:邮编
     * @param .name:phone_code type:int require:0 default:1 other: desc:电话区号
     * @param .name:phonenumber type:int require:0 default:1 other: desc:电话
     * @param .name:notes type:int require:0 default:0 other: desc:管理员备注
     * @param .name:groupid type:int require:0 default:0 other: desc:用户组ID
     * @return array.错误信息
     */
    public function client_details_validate()
    {
        return [
            'Error message feedback error 1',
            'Error message feedback error 2',
        ];
    }

    /**
     * @title 用户登录后执行
     * @author hh
     * @url client_login
     * @method 
     * @param .name:uid type:int require:1 default:0 other: desc:用户ID
     * @param .name:name type:string require:1 default:0 other: desc:用户名称
     * @param .name:ip type:string require:1 default:0 other: desc:登录IP
     * @param .name:jwt type:string require:1 default:0 other: desc:登录jwt
     * @return 无
     */
    public function client_login(){}

    /**
     * @title 用户API登录后执行
     * @author hh
     * @url client_api_login
     * @method 
     * @param .name:uid type:int require:1 default:0 other: desc:用户ID
     * @param .name:name type:string require:1 default:0 other: desc:用户名称
     * @param .name:ip type:string require:1 default:0 other: desc:登录IP
     * @return 无
     */
    public function client_api_login(){}

    /**
     * @title 用户重置密码后执行
     * @author hh
     * @url client_reset_password
     * @method 
     * @param .name:uid type:int require:1 default:0 other: desc:用户ID
     * @param .name:password type:string require:1 default:0 other: desc:新密码
     * @return 无
     */
    public function client_reset_password(){}

    /**
     * @title 用户退出登录后执行
     * @author hh
     * @url client_logout
     * @method 
     * @param .name:uid type:int require:1 default:0 other: desc:用户ID
     * @return 无
     */
    public function client_logout(){}




    /* 购物车 */

    /**
     * @title 前台购物车修改购买产品数量后执行
     * @author hh
     * @url shopping_cart_modify_num
     * @method 
     * @param .name:pid type:int require:1 default:0 other: desc:产品ID
     * @param .name:num type:int require:1 default:0 other: desc:修改后的数量
     * @return 响应：不支持回复
     */
    public function shopping_cart_modify_num(){}

    /**
     * @title 前台购物车结算后执行
     * @author hh
     * @url shopping_cart_settle
     * @method 
     * @param .name:total type:int require:1 default:0 other: desc:结算金额(可能是免费)
     * @param .name:invoiceid type:int require:1 default:0 other: desc:生成的账单ID
     * @param .name:hostid type:array require:1 default:0 other: desc:生成的产品ID
     * @return 响应：不支持回复
     */
    public function shopping_cart_settle(){}

    /**
     * @title 前台购物车添加商品后执行
     * @author hh
     * @url shopping_cart_add_product
     * @method 
     * @param  .name:pid type:number require:1 default: orther: desc:产品ID
     * @param  .name:qty type:string require:1  default: orther: desc:产品数量
     * @param  .name:serverid type:number require:0 default: orther: desc:服务器可用区ID
     * @param  .name:configoption type:array require:1 default: orther: desc:产品配置数组
     * @param  .name:customfield type:array require:1 default: orther: desc:产品自定义字段数组
     * @param  .name:currencyid type:array require:1 default: orther: desc:货币ID
     * @param  .name:host type:string require:0 default: orther: desc:主机名
     * @param  .name:password type:string require:0 default: orther: desc:密码
     * @return 响应：不支持回复
     */
    public function shopping_cart_add_product(){}

    /**
     * @title 前台购物车移除商品后执行
     * @author hh
     * @url shopping_cart_remove_product
     * @method 
     * @param  .name:pid type:number require:1 default: orther: desc:产品ID
     * @param  .name:qty type:string require:1  default: orther: desc:产品数量
     * @param  .name:serverid type:number require:0 default: orther: desc:服务器可用区ID
     * @param  .name:configoption type:array require:1 default: orther: desc:产品配置数组
     * @param  .name:customfield type:array require:1 default: orther: desc:产品自定义字段数组
     * @param  .name:currencyid type:array require:1 default: orther: desc:货币ID
     * @param  .name:host type:string require:0 default: orther: desc:主机名
     * @param  .name:password type:string require:0 default: orther: desc:密码
     * @return 响应：不支持回复
     */
    public function shopping_cart_remove_product(){}

    /**
     * @title 前台购物车清空后执行
     * @author hh
     * @url shopping_cart_clear
     * @method 
     * @param  .name:data type:array require:1 default: orther: desc:二维数组(pid=产品ID,billingcycle=购买周期,num=购买数量)
     * @return 响应：不支持回复
     */
    public function shopping_cart_clear(){}

    # >--------------------服务---------------

    /**
     * @title 添加服务器后
     * @author wyh
     * @url server_add
     * @method GET
     * @param .name:serverid type:int require:1 default:0 other: desc:服务器ID
     * @return 响应：不支持回复
     */
    public function server_add(){}

    /**
     * @title 删除服务器前
     * @author wyh
     * @url server_delete
     * @method GET
     * @param .name:serverid type:int require:1 default:0 other: desc:服务器ID
     * @return 响应：不支持回复
     */
    public function server_delete(){}

    /**
     * @title 编辑服务器前
     * @author wyh
     * @url server_edit
     * @method GET
     * @param .name:serverid type:int require:1 default:0 other: desc:服务器ID
     * @return 响应：不支持回复
     */
    public function server_edit(){}

    /* 其他 */

    /**
     * @title 在删除日志前执行
     * @author hh
     * @url before_delete_log
     * @method GET
     * @param .name:adminid type:int require:1 default:0 other: desc:管理员ID
     * @param .name:type type:string require:1 default:0 other: desc:日志类型
     * @return 响应：不支持回复
     */
    public function before_delete_log(){}

    /**
     * @title 添加系统活动日志
     * @author 萧十一郎
     * @url log_activity
     * @method GET
     * @param .name:description type:int require:1 default:0 other: desc:描述
     * @param .name:user type:int require:1 default:0 other: desc:操作名(Sub-Account,Client,System)
     * @param .name:uid type:int require: default:0 other: desc:用户id
     * @param .name:ipaddress type:string require: default:0 other: desc:ip地址
     * @return 响应：不支持回复
     */
    public function log_activity(){}

    /**
     * @title 用户推介计划激活后执行
     * @author hh
     * @url affiliate_activation
     * @method GET
     * @param .name:uid type:int require:1 default:0 other: desc:用户ID
     * @param .name:affid type:int require:1 default:0 other: desc:推介ID
     * @return 响应：不支持回复
     */
    public function affiliate_activation(){}

     /**
     * @title 自定义字段值更新时执行
     * @author hh
     * @url custom_field_save
     * @method GET
     * @param .name:fieldid type:int require:1 default:0 other: desc:自定义字段ID
     * @param .name:relid type:int require:1 default:0 other: desc:关联ID
     * @param .name:value type:string require:1 default:0 other: desc:自定义字段值
     * @return 返回['value'=>'新value']用来覆盖自定义字段值
     */
    public function custom_field_save(){}

     /**
     * @title 邮件发送前执行
     * @author hh
     * @url before_email_send
     * @method GET
     * @param .name:email type:string require:1 default:0 other: desc:邮箱
     * @param .name:subject type:string require:1 default:0 other: desc:主题
     * @param .name:content type:string require:1 default:0 other: desc:邮件正文
     * @return 
     */
    public function before_email_send(){}

    public function custom_host_create(){}

    /**
     * @title 购物车添加优惠码后执行,只执行一次
     * @author wyh
     * @url after_shop_add_promo
     * @method GET
     * @param .name:uid type:string require:1 default:0 other: desc:客户ID
     * @param .name:id type:string require:1 default:0 other: desc:优惠码ID
     * @return ['status'=>200/400,'msg'=>'消息'] 200成功,400失败且程序不再执行
     */
    public function after_shop_add_promo(){}


    public function check_divert_invoice(){}

    public function product_divert_upgrade(){}

    public function product_divert_delete(){}

    /**
     * @title 签订合同之后
     * @author wyh
     * @url after_sign_contract
     * @method GET
     * @param .name:id type:int require:1 default:0 other: desc:合同ID
     */
    public function after_sign_contract(){}

}