getOrSetOpenid( )设置或者获取openid

文档教程geeson 发表了文章 • 0 个评论 • 1088 次浏览 • 2017-10-12 12:25 • 来自相关话题

/*
* 设置、获取 openid
*/

function getOrSetOpenid($openid = '')
{
if ($openid != '') {
session('openid', $openid);
return $openid;
} else {
$openid = session('openid');
if ($openid) {
return $openid;
} else {
return null;
}
}

} 查看全部
/*
* 设置、获取 openid
*/

function getOrSetOpenid($openid = '')
{
if ($openid != '') {
session('openid', $openid);
return $openid;
} else {
$openid = session('openid');
if ($openid) {
return $openid;
} else {
return null;
}
}

}

addonUrl( )应用URL生成【常用】

文档教程geeson 发表了文章 • 0 个评论 • 1247 次浏览 • 2017-10-12 12:24 • 来自相关话题

/**
* 扩展应用 URL 生成
* @author geeson myrhzq@qq.com
* @param $url string 应用url/应用名称/控制器/方法
* @param $arr array 参数
*/
function addonUrl($url = '', $vars = '', $suffix = true, $domain = false)
{
if (!empty($addonRule = session('addonRule')) || $url != '') {
$addonName = isset($addonRule['addon']) ? $addonRule['addon'] : '';
$addonController = isset($addonRule['col']) ? $addonRule['col'] : '';
$addonAction = isset($addonRule['act']) ? $addonRule['act'] : '';
$node = '';
if ($url == '') {
$node = $addonName . DS . $addonController . DS . $addonAction;
} else {
$nodeArr = array_values(array_filter(explode('/', $url)));
switch (count($nodeArr)) {
case 1:
$node = $addonName . DS . $addonController . DS . $nodeArr[0];
break;
case 2:
$node = $addonName . DS . $nodeArr[0] . DS . $nodeArr[1];
break;
case 3:
$node = $node = $nodeArr[0] . DS . $nodeArr[1] . DS . $nodeArr[2];
break;
}
}
if (!empty($mid = input('mid'))) {
if (is_array($vars)) {
$vars = array_merge($vars, ['mid' => $mid]);
} elseif ($vars != '' && !is_array($vars)) {
$vars = $vars . '&' . 'mid=' . $mid;
} else {
$vars = ['mid' => $mid];
}
}
$url = \think\Url::build(ADDON_ROUTE . $node, $vars, $suffix, $domain);
return $url = str_replace('.' . config('template.view_suffix'), '', $url);

}
} 查看全部
/**
* 扩展应用 URL 生成
* @author geeson myrhzq@qq.com
* @param $url string 应用url/应用名称/控制器/方法
* @param $arr array 参数
*/
function addonUrl($url = '', $vars = '', $suffix = true, $domain = false)
{
if (!empty($addonRule = session('addonRule')) || $url != '') {
$addonName = isset($addonRule['addon']) ? $addonRule['addon'] : '';
$addonController = isset($addonRule['col']) ? $addonRule['col'] : '';
$addonAction = isset($addonRule['act']) ? $addonRule['act'] : '';
$node = '';
if ($url == '') {
$node = $addonName . DS . $addonController . DS . $addonAction;
} else {
$nodeArr = array_values(array_filter(explode('/', $url)));
switch (count($nodeArr)) {
case 1:
$node = $addonName . DS . $addonController . DS . $nodeArr[0];
break;
case 2:
$node = $addonName . DS . $nodeArr[0] . DS . $nodeArr[1];
break;
case 3:
$node = $node = $nodeArr[0] . DS . $nodeArr[1] . DS . $nodeArr[2];
break;
}
}
if (!empty($mid = input('mid'))) {
if (is_array($vars)) {
$vars = array_merge($vars, ['mid' => $mid]);
} elseif ($vars != '' && !is_array($vars)) {
$vars = $vars . '&' . 'mid=' . $mid;
} else {
$vars = ['mid' => $mid];
}
}
$url = \think\Url::build(ADDON_ROUTE . $node, $vars, $suffix, $domain);
return $url = str_replace('.' . config('template.view_suffix'), '', $url);

}
}

getAddonLogo( )获取应用LOGO

文档教程geeson 发表了文章 • 0 个评论 • 904 次浏览 • 2017-10-12 12:22 • 来自相关话题

/**
* @param string $name 应用标识
* @param $logoName
*/

function getAddonLogo($name = '')
{
if ($name == '') {
return false;
}
$model = new \app\common\model\Addons();
$info = $model->getAddonByFile($name);
$loginFile= ROOT_PATH. '/addons/' . $name . '/' . $info['logo'];
if(is_file($loginFile)){
if($fp = fopen($loginFile,"rb", 0))
{
$gambar = fread($fp,filesize($loginFile));
fclose($fp);
$base64 = chunk_split(base64_encode($gambar));
return $encode = 'data:image/jpg/png/gif;base64,' . $base64 ;
}
}
} 查看全部
/**
* @param string $name 应用标识
* @param $logoName
*/

function getAddonLogo($name = '')
{
if ($name == '') {
return false;
}
$model = new \app\common\model\Addons();
$info = $model->getAddonByFile($name);
$loginFile= ROOT_PATH. '/addons/' . $name . '/' . $info['logo'];
if(is_file($loginFile)){
if($fp = fopen($loginFile,"rb", 0))
{
$gambar = fread($fp,filesize($loginFile));
fclose($fp);
$base64 = chunk_split(base64_encode($gambar));
return $encode = 'data:image/jpg/png/gif;base64,' . $base64 ;
}
}
}

getAddonInfo( )获取应用配置信息

文档教程geeson 发表了文章 • 0 个评论 • 968 次浏览 • 2017-10-12 12:21 • 来自相关话题

/**
* 获取应用配置信息
* @author geeson myrhzq@qq.com
* $param $addonName string // 当前应用插件名称
* @param string mid 当前公众号标识ID
* @return array|bool|mixed
*/
function getAddonInfo($addonName = '', $mid = '')
{
if ($addonName == '' || $mid == '') {
$addonName = session('addonName');
$mid = session('mid')?session('mid'):input('mid');
}
if ($addonName == '' || $mid == '') {
exit('参数不完整:应用名称或者公众号标识不存在');
}
$addon = \think\Db::name('addons')->where(['addon' => $addonName])->find();
$addonInfo = \think\Db::name('addon_info')->where(['addon' => $addonName, 'mpid' => input('mid')])->find();
$addon['path'] = ADDON_PATH . $addonName . '/';
$addon['mp_config'] = json_decode($addonInfo['infos'], true);
$addon['common_config'] = json_decode($addon['config'], true);
unset($addon['config']);
return $addon;

}获取当前的应用一般不需要传参 查看全部
/**
* 获取应用配置信息
* @author geeson myrhzq@qq.com
* $param $addonName string // 当前应用插件名称
* @param string mid 当前公众号标识ID
* @return array|bool|mixed
*/
function getAddonInfo($addonName = '', $mid = '')
{
if ($addonName == '' || $mid == '') {
$addonName = session('addonName');
$mid = session('mid')?session('mid'):input('mid');
}
if ($addonName == '' || $mid == '') {
exit('参数不完整:应用名称或者公众号标识不存在');
}
$addon = \think\Db::name('addons')->where(['addon' => $addonName])->find();
$addonInfo = \think\Db::name('addon_info')->where(['addon' => $addonName, 'mpid' => input('mid')])->find();
$addon['path'] = ADDON_PATH . $addonName . '/';
$addon['mp_config'] = json_decode($addonInfo['infos'], true);
$addon['common_config'] = json_decode($addon['config'], true);
unset($addon['config']);
return $addon;

}
获取当前的应用一般不需要传参

getMpInfo( )获取公众号配置信息

文档教程geeson 发表了文章 • 0 个评论 • 1129 次浏览 • 2017-10-12 12:19 • 来自相关话题

/**
* 获取公众号配置信息
* @param $mid number
*/

function getMpInfo($mid = '')
{
$mid ? $mid : $mid = input('mid');
$mpInfo = 'mpInfo_' . $mid;
if ($mid) {
$mp = \think\Db::name('mp')->where(['id' => $mid])->find();
if (!empty($mp)) {
return $mp;
} else {
abort(500, lang('没有找到相应的公众号信息'));
}

} else {
abort(500, lang('没有找到相应的公众号信息'));
}

} 查看全部
/**
* 获取公众号配置信息
* @param $mid number
*/

function getMpInfo($mid = '')
{
$mid ? $mid : $mid = input('mid');
$mpInfo = 'mpInfo_' . $mid;
if ($mid) {
$mp = \think\Db::name('mp')->where(['id' => $mid])->find();
if (!empty($mp)) {
return $mp;
} else {
abort(500, lang('没有找到相应的公众号信息'));
}

} else {
abort(500, lang('没有找到相应的公众号信息'));
}

}

getQrshortUrl( )长链接转短链接接口

文档教程geeson 发表了文章 • 0 个评论 • 936 次浏览 • 2017-10-12 12:17 • 来自相关话题

/**
* 长链接转短链接接口
* @param string $long_url 传入要转换的长url
* @return boolean|string url 成功则返回转换后的短url
*/
function getQrshortUrl($long_url)
{
$weObj = getWechatActiveObj();
return $weObj->getShortUrl($long_url);
} 查看全部
/**
* 长链接转短链接接口
* @param string $long_url 传入要转换的长url
* @return boolean|string url 成功则返回转换后的短url
*/
function getQrshortUrl($long_url)
{
$weObj = getWechatActiveObj();
return $weObj->getShortUrl($long_url);
}

getQrRUL( )获取二维码图片

文档教程geeson 发表了文章 • 0 个评论 • 1181 次浏览 • 2017-10-12 12:16 • 来自相关话题

/**
* 获取二维码图片
* @param string $ticket 传入由get_qrcode方法生成的ticket参数
* @return string url 返回http地址
*/

function getQrRUL($ticket)
{
$weObj = getWechatActiveObj();
$result = $weObj->getQRUrl($ticket);
return $result;


} 查看全部
/**
* 获取二维码图片
* @param string $ticket 传入由get_qrcode方法生成的ticket参数
* @return string url 返回http地址
*/

function getQrRUL($ticket)
{
$weObj = getWechatActiveObj();
$result = $weObj->getQRUrl($ticket);
return $result;


}

get_qrcode( )创建二维码ticket

文档教程geeson 发表了文章 • 0 个评论 • 1192 次浏览 • 2017-10-12 12:15 • 来自相关话题

/**
* 创建二维码ticket
* @param int|string $scene_id 自定义追踪id,临时二维码只能用数值型
* @param int $type 0:临时二维码;1:永久二维码(此时expire参数无效);2:永久二维码(此时expire参数无效)
* @param int $expire 临时二维码有效期,最大为604800秒

* @return array('ticket'=>'qrcode字串','expire_seconds'=>1800,'url'=>'二维码图片解析后的地址')
*/
function get_qrcode($scene_id, $type = 0, $expire = 1800)
{
$weObj = getWechatActiveObj();
$result = $weObj->getQRCode($scene_id, $type, $expire);
if (!$result) {
$return['errcode'] = 1001;
$return['errmsg'] = $weObj->errMsg;
// abort(500, lang('ErrCode:' . $return['errcode'] . ' ErrMsg: ' . $return['errmsg']));
ajaxMsg(0, 'ErrCode:' . $return['errcode'] . ' ErrMsg: ' . $return['errmsg']);
}
return $result;
} 查看全部
/**
* 创建二维码ticket
* @param int|string $scene_id 自定义追踪id,临时二维码只能用数值型
* @param int $type 0:临时二维码;1:永久二维码(此时expire参数无效);2:永久二维码(此时expire参数无效)
* @param int $expire 临时二维码有效期,最大为604800秒

* @return array('ticket'=>'qrcode字串','expire_seconds'=>1800,'url'=>'二维码图片解析后的地址')
*/
function get_qrcode($scene_id, $type = 0, $expire = 1800)
{
$weObj = getWechatActiveObj();
$result = $weObj->getQRCode($scene_id, $type, $expire);
if (!$result) {
$return['errcode'] = 1001;
$return['errmsg'] = $weObj->errMsg;
// abort(500, lang('ErrCode:' . $return['errcode'] . ' ErrMsg: ' . $return['errmsg']));
ajaxMsg(0, 'ErrCode:' . $return['errcode'] . ' ErrMsg: ' . $return['errmsg']);
}
return $result;
}

sendGroupMassMessage( ) 高级群发消息

文档教程geeson 发表了文章 • 0 个评论 • 1267 次浏览 • 2017-10-12 12:14 • 来自相关话题

/**
* 高级群发消息, 根据群组id群发图文消息(认证后的订阅号可用)
* 注意:视频需要在调用uploadMedia()方法后,再使用 uploadMpVideo() 方法生成,
* 然后获得的 mediaid 才能用于群发,且消息类型为 mpvideo 类型。
* @param array $data 消息结构
* {
* "filter"=>array(
* "is_to_all"=>False, //是否群发给所有用户.True不用分组id,False需填写分组id
* "group_id"=>"2" //群发的分组id
* ),
* "msgtype"=>"mpvideo",
* // 在下面5种类型中选择对应的参数内容
* // mpnews | voice | image | mpvideo => array( "media_id"=>"MediaId")
* // text => array ( "content" => "hello")
* }
* @return boolean|array
*/
function sendGroupMassMessage($data)
{
$weObj = getWechatActiveObj();
$result = $weObj->sendGroupMassMessage($data);
if ($result) {
return $result;
} else {
$return['errCode'] = $weObj->errCode;
$return['errMsg'] = $weObj->errMsg;
return $return;
}
} 查看全部
/**
* 高级群发消息, 根据群组id群发图文消息(认证后的订阅号可用)
* 注意:视频需要在调用uploadMedia()方法后,再使用 uploadMpVideo() 方法生成,
* 然后获得的 mediaid 才能用于群发,且消息类型为 mpvideo 类型。
* @param array $data 消息结构
* {
* "filter"=>array(
* "is_to_all"=>False, //是否群发给所有用户.True不用分组id,False需填写分组id
* "group_id"=>"2" //群发的分组id
* ),
* "msgtype"=>"mpvideo",
* // 在下面5种类型中选择对应的参数内容
* // mpnews | voice | image | mpvideo => array( "media_id"=>"MediaId")
* // text => array ( "content" => "hello")
* }
* @return boolean|array
*/
function sendGroupMassMessage($data)
{
$weObj = getWechatActiveObj();
$result = $weObj->sendGroupMassMessage($data);
if ($result) {
return $result;
} else {
$return['errCode'] = $weObj->errCode;
$return['errMsg'] = $weObj->errMsg;
return $return;
}
}

replyNews( )回复图文

文档教程geeson 发表了文章 • 0 个评论 • 1251 次浏览 • 2017-10-12 12:12 • 来自相关话题

/**
* 回复图文
* @author geeson myrhzq@qq.com
* @param $news array
数组结构:
array(
"0"=>array(
'Title'=>'msg title',
'Description'=>'Description text',
'PicUrl'=>'http://www.domain.com/1.jpg',
'Url'=>'http://www.domain.com/1.html'
),
"1"=>....
)
*/
function replyNews($new = [])
{
if (is_array($new)) {
$weObj = getWechatObj();
return $weObj->news($new)->reply();
}

} 查看全部
/**
* 回复图文
* @author geeson myrhzq@qq.com
* @param $news array
数组结构:
array(
"0"=>array(
'Title'=>'msg title',
'Description'=>'Description text',
'PicUrl'=>'http://www.domain.com/1.jpg',
'Url'=>'http://www.domain.com/1.html'
),
"1"=>....
)
*/
function replyNews($new = [])
{
if (is_array($new)) {
$weObj = getWechatObj();
return $weObj->news($new)->reply();
}

}

replyVideo( )回复视频消息

文档教程geeson 发表了文章 • 0 个评论 • 887 次浏览 • 2017-10-12 12:09 • 来自相关话题

/*
* 回复视频消息
* @param $mediaid string
* @param $title string
* @param $description string
*/
function replyVideo($mediaid = '', $title = '', $description = '')
{
$weObj = getWechatObj();
return $weObj->video($mediaid, $title, $description)->reply();
} 查看全部
/*
* 回复视频消息
* @param $mediaid string
* @param $title string
* @param $description string
*/
function replyVideo($mediaid = '', $title = '', $description = '')
{
$weObj = getWechatObj();
return $weObj->video($mediaid, $title, $description)->reply();
}

replyVoice( )回复语音消息

文档教程geeson 发表了文章 • 0 个评论 • 916 次浏览 • 2017-10-12 12:08 • 来自相关话题

/**
* 回复语音消息
* @param string media_id
*
*/
function replyVoice($media_id = '')
{
$weObj = getWechatObj();
return $weObj->voice($media_id)->reply();
} 查看全部
/**
* 回复语音消息
* @param string media_id
*
*/
function replyVoice($media_id = '')
{
$weObj = getWechatObj();
return $weObj->voice($media_id)->reply();
}

replyMusic( )回复音乐

文档教程geeson 发表了文章 • 0 个评论 • 848 次浏览 • 2017-10-12 12:08 • 来自相关话题

/**
* 设置回复音乐
* @param string $title
* @param string $desc
* @param string $musicurl
* @param string $hgmusicurl
* @param string $thumbmediaid 音乐图片缩略图的媒体id,非必须
*/
function replyMusic($title, $desc, $musicurl, $hgmusicurl = '', $thumbmediaid = '')
{
$weObj = getWechatObj();
return $weObj->music($title, $desc, $musicurl, $hgmusicurl = '', $thumbmediaid = '')->reply();

} 查看全部
/**
* 设置回复音乐
* @param string $title
* @param string $desc
* @param string $musicurl
* @param string $hgmusicurl
* @param string $thumbmediaid 音乐图片缩略图的媒体id,非必须
*/
function replyMusic($title, $desc, $musicurl, $hgmusicurl = '', $thumbmediaid = '')
{
$weObj = getWechatObj();
return $weObj->music($title, $desc, $musicurl, $hgmusicurl = '', $thumbmediaid = '')->reply();

}

replyImage( )回复图片

文档教程geeson 发表了文章 • 0 个评论 • 940 次浏览 • 2017-10-12 12:07 • 来自相关话题

/**
* 回复图片
* @param string $media_id
*/

function replyImage($media_id = '')
{

$weObj = getWechatObj();
return $weObj->image($media_id)->reply();
} 查看全部
/**
* 回复图片
* @param string $media_id
*/

function replyImage($media_id = '')
{

$weObj = getWechatObj();
return $weObj->image($media_id)->reply();
}

replyText()回复文本

文档教程geeson 发表了文章 • 0 个评论 • 662 次浏览 • 2017-10-12 12:06 • 来自相关话题

/**
* 回复文本
* @param $text string
*/
function replyText($text = null)
{
if (is_string($text)) {
$weObj = getWechatObj();
return $weObj->text($text)->reply();
}

} 查看全部
/**
* 回复文本
* @param $text string
*/
function replyText($text = null)
{
if (is_string($text)) {
$weObj = getWechatObj();
return $weObj->text($text)->reply();
}

}

uploadForeverMedia( )上传永久素材

文档教程geeson 发表了文章 • 0 个评论 • 983 次浏览 • 2017-10-12 12:04 • 来自相关话题

/**
* 上传永久素材(认证后的订阅号可用)
* 新增的永久素材也可以在公众平台官网素材管理模块中看到
* $param string filePath 注意是物理路径
* @param type 类型:图片:image 语音:voice 视频:video 缩略图:thumb
* @param boolean $is_video 是否为视频文件,默认为否
* @param array $video_info 视频信息数组,非视频素材不需要提供 array('title'=>'视频标题','introduction'=>'描述')
* @return boolean|array
*/
function uploadForeverMedia($filePath = '', $type, $is_video = false, $video_info = array())
{

$weObj = getWechatActiveObj();
$media = $weObj->uploadForeverMedia(['media' => '@' . ROOT_PATH . $filePath], $type, $is_video, $video_info);
if (empty($media)) {
ajaxMsg(0, 'errCode:' . $weObj->errCode . 'errMsg' . $weObj->errMsg);
}
return $media;

} 查看全部
/**
* 上传永久素材(认证后的订阅号可用)
* 新增的永久素材也可以在公众平台官网素材管理模块中看到
* $param string filePath 注意是物理路径
* @param type 类型:图片:image 语音:voice 视频:video 缩略图:thumb
* @param boolean $is_video 是否为视频文件,默认为否
* @param array $video_info 视频信息数组,非视频素材不需要提供 array('title'=>'视频标题','introduction'=>'描述')
* @return boolean|array
*/
function uploadForeverMedia($filePath = '', $type, $is_video = false, $video_info = array())
{

$weObj = getWechatActiveObj();
$media = $weObj->uploadForeverMedia(['media' => '@' . ROOT_PATH . $filePath], $type, $is_video, $video_info);
if (empty($media)) {
ajaxMsg(0, 'errCode:' . $weObj->errCode . 'errMsg' . $weObj->errMsg);
}
return $media;

}

【第五篇】 RhaPHP微信应用开发之视图view

文档教程geeson 发表了文章 • 0 个评论 • 2979 次浏览 • 2017-10-10 13:08 • 来自相关话题

应用的视图是支持模板的继承,从官方提供的投票的应用中有使用到,如下图:




因为开发使用得最多的就是模板继承,在使用上也是比较简单与好用的。如果有同学从来都没有没有接触过,建议你去看一下 THINKPHP5文档中模板继承。如果你想按着老套路的当然也是可以的,但是我建议你要跟上流行的节奏。

如何引入应用下的 static里面的资源?如我要引入 static/css/style.css 代码如下:{CSS href="__ADDONSTATIC__/css/style.css" /}__ADDONSTATIC__也是自动的识别当前应用的路径。

如何使用微信的JSSDK?代码如下: {:hook('Jssdk')}当你使用此行为后,并需要你再去配置 JSSDK 任何的东西,系统已经本身已经配置好了,只要你使用了{:hook('Jssdk')}系统已经为你做好了一切。如果报错的话,(签名错误呀,URL不合Fa呀)请不要尝试在系统找原因,只要填写相应的参数是正确的,公众号配置是正确的,那么系统99%是正常的。

投票应用中的代码,如下图:





若配置成功,那么你就可以在 wx.ready中使用你需要的接口了。

使用上传组件:{:hook('Upload',['type'=>'image','name'=>'cover'])}如果你需要传入值:{:hook('Upload',['type'=>'image','name'=>'input name的名称','value'=>'路径'])}多图上传:{:hook('Upload',['type'=>'images','name'=>$v.name,'value'=>$v.value])}需要使用媒体库的话:{:hook('Upload',['type'=>'images','name'=>$v.name,'material'=>true,'value'=>$v.value])}上传文件:{:hook('Upload',['type'=>'file','name'=>$v.name,'bt_title'=>'选择文件','value'=>$v.value])}如何对应用生成 URL?使用:addonUrl()
// 与THINKPHP5 中的 URL()使用方法也是一样的,投票应用使用到
$.post("{:addonUrl('toVote')}",{'bm_id':id},function (res) {
layer.close(index);
layer.msg(res.msg);
})
完整的传入:应用名称/控制器/方法
如果在相同的控制器里跳转,可以只传方法名就可以了。更多可以参考 thinkphp中的 URL函数 查看全部
应用的视图是支持模板的继承,从官方提供的投票的应用中有使用到,如下图:
1.png

因为开发使用得最多的就是模板继承,在使用上也是比较简单与好用的。如果有同学从来都没有没有接触过,建议你去看一下 THINKPHP5文档中模板继承。如果你想按着老套路的当然也是可以的,但是我建议你要跟上流行的节奏。

如何引入应用下的 static里面的资源?如我要引入 static/css/style.css 代码如下:
{CSS href="__ADDONSTATIC__/css/style.css" /}
__ADDONSTATIC__也是自动的识别当前应用的路径。

如何使用微信的JSSDK?代码如下:
 {:hook('Jssdk')}
当你使用此行为后,并需要你再去配置 JSSDK 任何的东西,系统已经本身已经配置好了,只要你使用了{:hook('Jssdk')}系统已经为你做好了一切。如果报错的话,(签名错误呀,URL不合Fa呀)请不要尝试在系统找原因,只要填写相应的参数是正确的,公众号配置是正确的,那么系统99%是正常的。

投票应用中的代码,如下图

1.png

若配置成功,那么你就可以在 wx.ready中使用你需要的接口了。

使用上传组件:
{:hook('Upload',['type'=>'image','name'=>'cover'])}
如果你需要传入值:
{:hook('Upload',['type'=>'image','name'=>'input name的名称','value'=>'路径'])}
多图上传:
{:hook('Upload',['type'=>'images','name'=>$v.name,'value'=>$v.value])}
需要使用媒体库的话:
{:hook('Upload',['type'=>'images','name'=>$v.name,'material'=>true,'value'=>$v.value])}
上传文件:
{:hook('Upload',['type'=>'file','name'=>$v.name,'bt_title'=>'选择文件','value'=>$v.value])}
如何对应用生成 URL?使用:
addonUrl()
// 与THINKPHP5 中的 URL()使用方法也是一样的,投票应用使用到
$.post("{:addonUrl('toVote')}",{'bm_id':id},function (res) {
layer.close(index);
layer.msg(res.msg);
})

完整的传入:应用名称/控制器/方法
如果在相同的控制器里跳转,可以只传方法名就可以了。更多可以参考 thinkphp中的 URL函数

【第三篇】如何建立自己的业务逻辑处理控制层

文档教程geeson 发表了文章 • 0 个评论 • 2982 次浏览 • 2017-10-08 13:32 • 来自相关话题

可能有同学会问,比喻开发一个商城哇,我有很多业务菜单哇,有商城设置,栏目管理,产品管理,订单管理。等等。。。如何弄哇?看了第二篇文档的同学都相信都已经知道了,在 Config.php里面有一个menu数组配置项的:代码如下:'menu' => [
[
'name' => '红包记录',
'url' => 'redPack/Index/index',
'icon' => ''
],
],我这里只有一个菜单,如果你多个,就增在后台增加就可以了。如果你不了解请看第二篇:http://ask.rhaphp.com/article/8
然后在 在redPack的 controller目录下建立 Index.php控制器,然后写一个 index的方法。如下图:






蓝色框部分需要继承的,我们建议你继承!我们建议你继承!我们建议你继承!为什么?将会在第四篇讲解。
如何给模板赋值?$this->assign('值名',值);如果显示出模板? $this->fetch();//也可以自定如: $this->fetch('index')模板路径在当前应用下的 view目录中。这里是、view/inex/index。这里我还是说明一下吧。视频目录都是使用小写。不需要与控制器前面第一个字母是大写的。以 redPack为例如下图:







在这里我想说明一下:为什么我们不与其它的系统那样?表单这些都封装起来,现在咱们的应用插件中的 config那样那样??
第一点:我想减少你对系统研究时间,表单的控制你爱怎么样设计就怎么设计。
第二点:我还是想自由灵活一些吧。
不过你丫的我就是想这样啊,也行,目前只针对表单有做了处理:使用方法如下:$data= array(
[
'name' => 'keyword',
'title' => '关键词',
'type' => 'text',
'value' => '',
'placeholder' => '请输入关键词',
'tip' => '关键词哦',
],
[
'name' => 'password',
'title' => '密码',
'type' => 'password',
'value' => '',
'placeholder' => '请输入密码',
'tip' => '',
],
[
'name' => 'likes',
'title' => '喜欢谁?',
'type' => 'checkbox',
'value' => [
0 => [
'name'=>'ldh',
'title' => '刘德华',
'value' => '0',
'checked' => '0'
],
1 => [
'name'=>'fbb',
'title' => '冰冰',
'value' => '1',
'checked' => '1'
],
2 => [
'name'=>'fj',
'title' => '凤姐',
'value' => '1',
'checked' => '1'
]
],
'placeholder' => '',
'tip' => '',
],
[
'name' => 'time',
'title' => '时间',
'type' => 'date',
'value' => '',
'placeholder' => '',
'tip' => '',
],
[
'name' => 'sex',
'title' => '性别',
'type' => 'radio',
'value' => [
0 => [
'title' => '男',
'value' => '0',
'checked' => '0'
],
1 => [
'title' => '女',
'value' => '1',
'checked' => '1'
]
],
'placeholder' => '',
'tip' => '如果你男与女都不是,系统认为你是条汉子。',
],
[
'name' => 'content',
'title' => '描述',
'type' => 'textarea',
'value' => '',
'placeholder' => '',
'tip' => '',
],
[
'name' => 'myFile',
'title' => '上传文件',
'type' => 'file',
'value' => '',
'placeholder' => '',
'tip' => '',
],
[
'name' => 'myImage',
'title' => '上传图片',
'type' => 'image',
'value' => '',
'placeholder' => '',
'tip' => '',
],

);

$this->assign('menu_list',$data);
$this->fetch('default');
  查看全部
可能有同学会问,比喻开发一个商城哇,我有很多业务菜单哇,有商城设置,栏目管理,产品管理,订单管理。等等。。。如何弄哇?看了第二篇文档的同学都相信都已经知道了,在 Config.php里面有一个menu数组配置项的:代码如下:
'menu' => [
[
'name' => '红包记录',
'url' => 'redPack/Index/index',
'icon' => ''
],
],
我这里只有一个菜单,如果你多个,就增在后台增加就可以了。如果你不了解请看第二篇:http://ask.rhaphp.com/article/8
然后在 在redPack的 controller目录下建立 Index.php控制器,然后写一个 index的方法。如下图:

1.png


蓝色框部分需要继承的,我们建议你继承!我们建议你继承!我们建议你继承!为什么?将会在第四篇讲解。
如何给模板赋值?
$this->assign('值名',值);
如果显示出模板?
 $this->fetch();//也可以自定如: $this->fetch('index')
模板路径在当前应用下的 view目录中。这里是、view/inex/index。这里我还是说明一下吧。视频目录都是使用小写。不需要与控制器前面第一个字母是大写的。以 redPack为例如下图:

1.png



在这里我想说明一下:为什么我们不与其它的系统那样?表单这些都封装起来,现在咱们的应用插件中的 config那样那样??
第一点:我想减少你对系统研究时间,表单的控制你爱怎么样设计就怎么设计。
第二点:我还是想自由灵活一些吧。
不过你丫的我就是想这样啊,也行,目前只针对表单有做了处理:使用方法如下:
$data= array(
[
'name' => 'keyword',
'title' => '关键词',
'type' => 'text',
'value' => '',
'placeholder' => '请输入关键词',
'tip' => '关键词哦',
],
[
'name' => 'password',
'title' => '密码',
'type' => 'password',
'value' => '',
'placeholder' => '请输入密码',
'tip' => '',
],
[
'name' => 'likes',
'title' => '喜欢谁?',
'type' => 'checkbox',
'value' => [
0 => [
'name'=>'ldh',
'title' => '刘德华',
'value' => '0',
'checked' => '0'
],
1 => [
'name'=>'fbb',
'title' => '冰冰',
'value' => '1',
'checked' => '1'
],
2 => [
'name'=>'fj',
'title' => '凤姐',
'value' => '1',
'checked' => '1'
]
],
'placeholder' => '',
'tip' => '',
],
[
'name' => 'time',
'title' => '时间',
'type' => 'date',
'value' => '',
'placeholder' => '',
'tip' => '',
],
[
'name' => 'sex',
'title' => '性别',
'type' => 'radio',
'value' => [
0 => [
'title' => '男',
'value' => '0',
'checked' => '0'
],
1 => [
'title' => '女',
'value' => '1',
'checked' => '1'
]
],
'placeholder' => '',
'tip' => '如果你男与女都不是,系统认为你是条汉子。',
],
[
'name' => 'content',
'title' => '描述',
'type' => 'textarea',
'value' => '',
'placeholder' => '',
'tip' => '',
],
[
'name' => 'myFile',
'title' => '上传文件',
'type' => 'file',
'value' => '',
'placeholder' => '',
'tip' => '',
],
[
'name' => 'myImage',
'title' => '上传图片',
'type' => 'image',
'value' => '',
'placeholder' => '',
'tip' => '',
],

);

$this->assign('menu_list',$data);
$this->fetch('default');

 

【第二篇】使用RhaPHP开发微信应用之Config.php说明

文档教程geeson 发表了文章 • 0 个评论 • 4914 次浏览 • 2017-10-07 15:22 • 来自相关话题

第一篇已经说明参数作用说明,这一篇menu与config使用方法。使用上也是非常简单的,能够快速对应用插件配置建立表单。那么先看看一个完整Config.php代码:return array(
'name' => '',
'addon' => '',
'desc' => '',
'version' => '1.0',
'author' => 'Geeson',
'logo' => 'logo.jpg',
'menu_show' => '1',
'entry_url' => '',
'admin_url' => '',
'install_sql' => '',
'upgrade_sql' => '',
'menu' => [//后台菜单列表
[
'name' => '菜单1',
'url' => '应用名称/控制器/方法',
'icon' => ''
],

[ 'name' => '菜单2',
'url' => '应用名称/控制器/方法',
'icon' => ''
],


],
'config' => array(
[
'name' => 'name',
'title' => '名称',
'type' => 'text',
'value' => '',
'placeholder' => '请输入关名称',
'tip' => '这里是提示,比喻:名称请填写真实性名',
],
[
'name' => 'select',
'title' => '四大城市',
'type' => 'select',
'value' => [
0 => [
'title' => '北京',
'value' => '1',
'selected' => '1'
],
1 => [
'title' => '上海',
'value' => '2',
'selected' => '0'
],
2 => [
'title' => '广州',
'value' => '3',
'selected' => '0'
]
,
3 => [
'title' => '深圳',
'value' => '4',
'selected' => '0'
]
],
'placeholder' => '',
'tip' => '你的城市',
],
[
'name' => 'likes',
'title' => '喜欢谁?',
'type' => 'checkbox',
'value' => [
0 => [
'name'=>'ldh',
'title' => '刘德华',
'value' => '0',
'checked' => '0'
],
1 => [
'name'=>'fbb',
'title' => '冰冰',
'value' => '1',
'checked' => '1'
],
2 => [
'name'=>'fj',
'title' => '凤姐',
'value' => '1',
'checked' => '1'
]
],
'placeholder' => '',
'tip' => '',
],
[
'name' => 'time',
'title' => '时间',
'type' => 'date',
'value' => '',
'placeholder' => '',
'tip' => '',
],
[
'name' => 'sex',
'title' => '性别',
'type' => 'radio',
'value' => [
0 => [
'title' => '男',
'value' => '0',
'checked' => '0'
],
1 => [
'title' => '女',
'value' => '1',
'checked' => '1'
]
],
'placeholder' => '',
'tip' => '如果你男与女都不是,系统认为你是条汉子。',
],
[
'name' => 'content',
'title' => '描述',
'type' => 'textarea',
'value' => '',
'placeholder' => '',
'tip' => '',
],
[
'name' => 'myFile',
'title' => '上传文件',
'type' => 'file',
'value' => '',
'placeholder' => '',
'tip' => '',
],
[
'name' => 'myImage',
'title' => '上传图片',
'type' => 'image',
'value' => '',
'placeholder' => '',
'tip' => '',
],
[
'name' => 'myImages',
'title' => '多图上传',
'type' => 'images',
'value' => '',
'placeholder' => '',
'tip' => '',
],

)
);我们平时开发常用的,RhaPHP都已经集合好了。后台菜单相信大家一看就能懂,看看redPack中的menu 'menu' => [
[
'name' => '红包记录',
'url' => 'redPack/Index/index',
'icon' => ''
],
],进入红包应用后台,在后台的左侧就能看到这个菜单了,当然也是支持多个的。如下图:





那么再看Config表单配置项:redPack为例:'config' => array(
[
'name' => 'amount',//input 中的name值
'title' => '红包总额', //该input的名称
'type' => 'text',//input 类型
'value' => '0',// input 默认值
'placeholder' => '',
'tip' => '单位/元',
],
[
'name' => 'money',
'title' => '红包金额',
'type' => 'text',
'value' => '1',
'placeholder' => '',
'tip' => '领取红包份额,注意红包金额微信不能低于1蚊鸡(1元钱)。',
],
[
'name' => 'nick_name',
'title' => '提供方名',
'type' => 'text',
'value' => '',
'placeholder' => '',
'tip' => '列如:绮梦科技、 RhaPHP、冰冰工作室等等。',
],
[
'name' => 'send_name',
'title' => '红包发送者名',
'type' => 'text',
'value' => '',
'placeholder' => '',
'tip' => '例如:冰冰、努力就有希望、有钱的二狗子等等,字数尽量不要太多。',
],
[
'name' => 'wishing',
'title' => '红包祝福语',
'type' => 'text',
'value' => '',
'placeholder' => '',
'tip' => '例如:恭喜发财、早生贵子、早日分手、你想对领取红包的人说的话。',
],
[
'name' => 'reply_msg',
'title' => '成功回复',
'type' => 'text',
'value' => '红包发放成功,请你继续关注活动,后面福利多多!',
'placeholder' => '',
'tip' => '红包发送成功,回复的消息内容。',
],
[
'name' => 'act_name',
'title' => '活动名称',
'type' => 'text',
'value' => '',
'placeholder' => '',
'tip' => '例如:五一假日活动、三周年庆、等等。',
],
[
'name' => 'start_time',
'title' => '开始时间',
'type' => 'date',
'value' => '',
'placeholder' => '',
'tip' => '',
],
[
'name' => 'end_time',
'title' => '结束时间',
'type' => 'date',
'value' => '',
'placeholder' => '',
'tip' => '',
],
[
'name' => 'number_of_times',
'title' => '领取次数',
'type' => 'text',
'value' => '1',
'placeholder' => '',
'tip' => '每人领取红包次数,默认1次',
],
),那么进入应用后,在后台左侧看到,如下图:







提交表单,系统自动保存参数配置表单的值。不需要开发者写增删改查代码的。

重要的话要来了!重要的话要来了!重要的话要来了!
如果此应用已经安装后,你修改Config.php,请卸载应用重新安装才会生效。因为每一个应用可以对应多个公众号的。所有配置项需入库。
如何在应用中获取配置参数?以redPack为例:





对就是它,getAddonInfo()函数。一般不需要传参数系统自动处理获取到当前公众号的应用的配置参数。
可以dump下可以看到参数。
如何传参?请看代码:/**
* 获取应用配置信息
* @author geeson myrhzq@qq.com
* $param $addonName string //当前应用名称
* @param string $mid //公众号标识 ID
* @return array|bool|mixed
*/
function getAddonInfo($addonName = '', $mid = '')
{
if ($addonName == '' || $mid == '') {
$addonName = session('addonName');
$mid = session('mid')?session('mid'):input('mid');
}
if ($addonName == '' || $mid == '') {
exit('参数不完整:应用名称或者公众号标识不存在');
}
$addon = \think\Db::name('addons')->where(['addon' => $addonName])->find();
$addonInfo = \think\Db::name('addon_info')->where(['addon' => $addonName, 'mpid' => input('mid')])->find();
$addon['path'] = ADDON_PATH . $addonName . '/';
$addon['mp_config'] = json_decode($addonInfo['infos'], true);
$addon['common_config'] = json_decode($addon['config'], true);
unset($addon['config']);
return $addon;

}

  查看全部
第一篇已经说明参数作用说明,这一篇menu与config使用方法。使用上也是非常简单的,能够快速对应用插件配置建立表单。那么先看看一个完整Config.php代码:
return array(
'name' => '',
'addon' => '',
'desc' => '',
'version' => '1.0',
'author' => 'Geeson',
'logo' => 'logo.jpg',
'menu_show' => '1',
'entry_url' => '',
'admin_url' => '',
'install_sql' => '',
'upgrade_sql' => '',
'menu' => [//后台菜单列表
[
'name' => '菜单1',
'url' => '应用名称/控制器/方法',
'icon' => ''
],

[ 'name' => '菜单2',
'url' => '应用名称/控制器/方法',
'icon' => ''
],


],
'config' => array(
[
'name' => 'name',
'title' => '名称',
'type' => 'text',
'value' => '',
'placeholder' => '请输入关名称',
'tip' => '这里是提示,比喻:名称请填写真实性名',
],
[
'name' => 'select',
'title' => '四大城市',
'type' => 'select',
'value' => [
0 => [
'title' => '北京',
'value' => '1',
'selected' => '1'
],
1 => [
'title' => '上海',
'value' => '2',
'selected' => '0'
],
2 => [
'title' => '广州',
'value' => '3',
'selected' => '0'
]
,
3 => [
'title' => '深圳',
'value' => '4',
'selected' => '0'
]
],
'placeholder' => '',
'tip' => '你的城市',
],
[
'name' => 'likes',
'title' => '喜欢谁?',
'type' => 'checkbox',
'value' => [
0 => [
'name'=>'ldh',
'title' => '刘德华',
'value' => '0',
'checked' => '0'
],
1 => [
'name'=>'fbb',
'title' => '冰冰',
'value' => '1',
'checked' => '1'
],
2 => [
'name'=>'fj',
'title' => '凤姐',
'value' => '1',
'checked' => '1'
]
],
'placeholder' => '',
'tip' => '',
],
[
'name' => 'time',
'title' => '时间',
'type' => 'date',
'value' => '',
'placeholder' => '',
'tip' => '',
],
[
'name' => 'sex',
'title' => '性别',
'type' => 'radio',
'value' => [
0 => [
'title' => '男',
'value' => '0',
'checked' => '0'
],
1 => [
'title' => '女',
'value' => '1',
'checked' => '1'
]
],
'placeholder' => '',
'tip' => '如果你男与女都不是,系统认为你是条汉子。',
],
[
'name' => 'content',
'title' => '描述',
'type' => 'textarea',
'value' => '',
'placeholder' => '',
'tip' => '',
],
[
'name' => 'myFile',
'title' => '上传文件',
'type' => 'file',
'value' => '',
'placeholder' => '',
'tip' => '',
],
[
'name' => 'myImage',
'title' => '上传图片',
'type' => 'image',
'value' => '',
'placeholder' => '',
'tip' => '',
],
[
'name' => 'myImages',
'title' => '多图上传',
'type' => 'images',
'value' => '',
'placeholder' => '',
'tip' => '',
],

)
);
我们平时开发常用的,RhaPHP都已经集合好了。后台菜单相信大家一看就能懂,看看redPack中的menu
 'menu' => [
[
'name' => '红包记录',
'url' => 'redPack/Index/index',
'icon' => ''
],
],
进入红包应用后台,在后台的左侧就能看到这个菜单了,当然也是支持多个的。如下图:

QQ图片20171007145555.png

那么再看Config表单配置项:redPack为例:
'config' => array(
[
'name' => 'amount',//input 中的name值
'title' => '红包总额', //该input的名称
'type' => 'text',//input 类型
'value' => '0',// input 默认值
'placeholder' => '',
'tip' => '单位/元',
],
[
'name' => 'money',
'title' => '红包金额',
'type' => 'text',
'value' => '1',
'placeholder' => '',
'tip' => '领取红包份额,注意红包金额微信不能低于1蚊鸡(1元钱)。',
],
[
'name' => 'nick_name',
'title' => '提供方名',
'type' => 'text',
'value' => '',
'placeholder' => '',
'tip' => '列如:绮梦科技、 RhaPHP、冰冰工作室等等。',
],
[
'name' => 'send_name',
'title' => '红包发送者名',
'type' => 'text',
'value' => '',
'placeholder' => '',
'tip' => '例如:冰冰、努力就有希望、有钱的二狗子等等,字数尽量不要太多。',
],
[
'name' => 'wishing',
'title' => '红包祝福语',
'type' => 'text',
'value' => '',
'placeholder' => '',
'tip' => '例如:恭喜发财、早生贵子、早日分手、你想对领取红包的人说的话。',
],
[
'name' => 'reply_msg',
'title' => '成功回复',
'type' => 'text',
'value' => '红包发放成功,请你继续关注活动,后面福利多多!',
'placeholder' => '',
'tip' => '红包发送成功,回复的消息内容。',
],
[
'name' => 'act_name',
'title' => '活动名称',
'type' => 'text',
'value' => '',
'placeholder' => '',
'tip' => '例如:五一假日活动、三周年庆、等等。',
],
[
'name' => 'start_time',
'title' => '开始时间',
'type' => 'date',
'value' => '',
'placeholder' => '',
'tip' => '',
],
[
'name' => 'end_time',
'title' => '结束时间',
'type' => 'date',
'value' => '',
'placeholder' => '',
'tip' => '',
],
[
'name' => 'number_of_times',
'title' => '领取次数',
'type' => 'text',
'value' => '1',
'placeholder' => '',
'tip' => '每人领取红包次数,默认1次',
],
),
那么进入应用后,在后台左侧看到,如下图:

5B10F604-CF2C-403E-BC22-ADCDD0154E15.png



提交表单,系统自动保存参数配置表单的值。不需要开发者写增删改查代码的。

重要的话要来了!重要的话要来了!重要的话要来了!
如果此应用已经安装后,你修改Config.php,请卸载应用重新安装才会生效。因为每一个应用可以对应多个公众号的。所有配置项需入库。
如何在应用中获取配置参数?以redPack为例:

QQ图片20171007151443.png

对就是它,getAddonInfo()函数。一般不需要传参数系统自动处理获取到当前公众号的应用的配置参数。
可以dump下可以看到参数。
如何传参?请看代码:
/**
* 获取应用配置信息
* @author geeson myrhzq@qq.com
* $param $addonName string //当前应用名称
* @param string $mid //公众号标识 ID
* @return array|bool|mixed
*/
function getAddonInfo($addonName = '', $mid = '')
{
if ($addonName == '' || $mid == '') {
$addonName = session('addonName');
$mid = session('mid')?session('mid'):input('mid');
}
if ($addonName == '' || $mid == '') {
exit('参数不完整:应用名称或者公众号标识不存在');
}
$addon = \think\Db::name('addons')->where(['addon' => $addonName])->find();
$addonInfo = \think\Db::name('addon_info')->where(['addon' => $addonName, 'mpid' => input('mid')])->find();
$addon['path'] = ADDON_PATH . $addonName . '/';
$addon['mp_config'] = json_decode($addonInfo['infos'], true);
$addon['common_config'] = json_decode($addon['config'], true);
unset($addon['config']);
return $addon;

}


 

应用插件基本的目录结构

文档教程geeson 发表了文章 • 0 个评论 • 2355 次浏览 • 2017-10-03 13:04 • 来自相关话题

www
├─addons                应用插件目录
│  ├─myApp              应用名称
│     ├─controller      此控制器目录
│     ├─model           此模型目录
│     ├─view            视图目录
│     ├─static          此应用的静态目录JS,CSS,IMAGE
│     ├─common.php      此应用的函数文件
│     ├─config.php      此应用的配置文件
│     ├─install.sql     此应用的数据库安装文件
│     └─logo.jpg        此应用的LOGO
├─application           应用目录
│  ├─admin              后台模块
│  ├─behavior           行为目录
│  ├─common             公共模块
│  ├─install            系统安装模块
│  ├─mp                 操作管理微信公众号模块
│  ├─command.php        命令行工具配置文件
│  ├─common.php         公共函数文件
│  └─tags.php           应用行为扩展定义文件

├─public                静态目录JS,CSS,IMAGE
├─data                  存放数据
├─config                应用配置目录
│  ├─module_name        模块配置目录
│  │  ├─database.php    数据库配置
│  │  ├─cache           缓存配置
│  │  └─ ...            
│  │
│  ├─app.php            应用配置
│  ├─cache.php          缓存配置
│  ├─cookie.php         Cookie配置
│  ├─database.php       数据库配置
│  ├─log.php            日志配置
│  ├─session.php        Session配置
│  ├─template.php       模板引擎配置
│  └─trace.php          Trace配置
├─route                 路由定义目录
│  ├─route.php          路由定义
│  └─...                更多
├─runtime               应用的运行时目录
├─thinkphp              框架系统目录
│  ├─lang               语言文件目录
│  ├─library            框架类库目录
│  │  ├─think           Think类库包目录
│  │  └─traits          系统Trait目录
│  │
│  ├─tpl                系统模板目录
│  ├─base.php           基础定义文件
│  ├─convention.php     框架惯例配置文件
│  ├─helper.php         助手函数文件
│  └─logo.png           框架LOGO文件

├─extend                扩展类库目录
├─vendor                第三方类库目录(Composer依赖库)
├─build.php             自动生成定义文件(参考)
├─安装协议.txt
├─README.md             README 文件
├─index.php             系统入口文件
├─composer.json         composer 定义文件
├─think                 命令行入口文件 查看全部
www
├─addons                应用插件目录
│  ├─myApp              应用名称
│     ├─controller      此控制器目录
│     ├─model           此模型目录
│     ├─view            视图目录
│     ├─static          此应用的静态目录JS,CSS,IMAGE
│     ├─common.php      此应用的函数文件
│     ├─config.php      此应用的配置文件
│     ├─install.sql     此应用的数据库安装文件
│     └─logo.jpg        此应用的LOGO
├─application           应用目录
│  ├─admin              后台模块
│  ├─behavior           行为目录
│  ├─common             公共模块
│  ├─install            系统安装模块
│  ├─mp                 操作管理微信公众号模块
│  ├─command.php        命令行工具配置文件
│  ├─common.php         公共函数文件
│  └─tags.php           应用行为扩展定义文件

├─public                静态目录JS,CSS,IMAGE
├─data                  存放数据
├─config                应用配置目录
│  ├─module_name        模块配置目录
│  │  ├─database.php    数据库配置
│  │  ├─cache           缓存配置
│  │  └─ ...            
│  │
│  ├─app.php            应用配置
│  ├─cache.php          缓存配置
│  ├─cookie.php         Cookie配置
│  ├─database.php       数据库配置
│  ├─log.php            日志配置
│  ├─session.php        Session配置
│  ├─template.php       模板引擎配置
│  └─trace.php          Trace配置
├─route                 路由定义目录
│  ├─route.php          路由定义
│  └─...                更多
├─runtime               应用的运行时目录
├─thinkphp              框架系统目录
│  ├─lang               语言文件目录
│  ├─library            框架类库目录
│  │  ├─think           Think类库包目录
│  │  └─traits          系统Trait目录
│  │
│  ├─tpl                系统模板目录
│  ├─base.php           基础定义文件
│  ├─convention.php     框架惯例配置文件
│  ├─helper.php         助手函数文件
│  └─logo.png           框架LOGO文件

├─extend                扩展类库目录
├─vendor                第三方类库目录(Composer依赖库)
├─build.php             自动生成定义文件(参考)
├─安装协议.txt
├─README.md             README 文件
├─index.php             系统入口文件
├─composer.json         composer 定义文件
├─think                 命令行入口文件

系统目录结构

文档教程geeson 发表了文章 • 0 个评论 • 1623 次浏览 • 2017-10-03 12:36 • 来自相关话题

www
├─addons 应用插件目录
│ ├─myApp1 应用名称
│ ├─controller 此控制器目录
│ ├─model 此模型目录
│ ├─view 视图目录
│ ├─common.php 此应用的函数文件
│ ├─config.php 此应用的配置文件
│ └─logo.jpg 此应用的LOGO
├─application 应用目录
│ ├─admin 后台模块
│ ├─behavior 行为目录
│ ├─common 公共模块
│ ├─install 系统安装模块
│ ├─mp 操作管理微信公众号模块
│ ├─command.php 命令行工具配置文件
│ ├─common.php 公共函数文件
│ ├─config.php 公共配置文件
│ ├─route.php 路由配置文件
│ ├─tags.php 应用行为扩展定义文件
│ └─database.php 数据库配置文件
│ ├─public 静态目录JS,CSS,IMAGE
├─data 存放数据与runtime
│ ├─thinkphp 框架系统目录
│ ├─lang 语言文件目录
│ ├─library 框架类库目录
│ │ ├─think Think类库包目录
│ │ └─traits 系统Trait目录
│ │ │ ├─tpl 系统模板目录
│ ├─base.php 基础定义文件
│ ├─console.php 控制台入口文件
│ ├─convention.php 框架惯例配置文件
│ ├─helper.php 助手函数文件
│ ├─phpunit.xml phpunit配置文件
│ └─start.php 框架入口文件
│ ├─extend 扩展类库目录
├─vendor 第三方类库目录(Composer依赖库)
├─安装协议.txt
├─README.md README 文件
├─index.php 系统入口文件
  查看全部

www
├─addons 应用插件目录
│ ├─myApp1 应用名称
│ ├─controller 此控制器目录
│ ├─model 此模型目录
│ ├─view 视图目录
│ ├─common.php 此应用的函数文件
│ ├─config.php 此应用的配置文件
│ └─logo.jpg 此应用的LOGO
├─application 应用目录
│ ├─admin 后台模块
│ ├─behavior 行为目录
│ ├─common 公共模块
│ ├─install 系统安装模块
│ ├─mp 操作管理微信公众号模块
│ ├─command.php 命令行工具配置文件
│ ├─common.php 公共函数文件
│ ├─config.php 公共配置文件
│ ├─route.php 路由配置文件
│ ├─tags.php 应用行为扩展定义文件
│ └─database.php 数据库配置文件
│ ├─public 静态目录JS,CSS,IMAGE
├─data 存放数据与runtime
│ ├─thinkphp 框架系统目录
│ ├─lang 语言文件目录
│ ├─library 框架类库目录
│ │ ├─think Think类库包目录
│ │ └─traits 系统Trait目录
│ │ │ ├─tpl 系统模板目录
│ ├─base.php 基础定义文件
│ ├─console.php 控制台入口文件
│ ├─convention.php 框架惯例配置文件
│ ├─helper.php 助手函数文件
│ ├─phpunit.xml phpunit配置文件
│ └─start.php 框架入口文件
│ ├─extend 扩展类库目录
├─vendor 第三方类库目录(Composer依赖库)
├─安装协议.txt
├─README.md README 文件
├─index.php 系统入口文件
 

RhaPHP系统数据字典

文档教程geeson 发表了文章 • 0 个评论 • 2825 次浏览 • 2017-10-02 18:50 • 来自相关话题

插件应用表:CREATE TABLE IF NOT EXISTS `rh_addons` (
`id` int(10) NOT NULL COMMENT '自增ID',
`name` varchar(255) NOT NULL COMMENT '插件名称',
`addon` varchar(50) NOT NULL COMMENT '标识名',
`desc` text COMMENT '描述',
`version` varchar(10) NOT NULL COMMENT '版本号',
`author` varchar(50) NOT NULL COMMENT '作者姓名',
`logo` text COMMENT 'LOGO',
`status` int(1) NOT NULL DEFAULT '1' COMMENT '状态',
`config` text COMMENT '插件配置',
`entry_url` varchar(160) NOT NULL COMMENT '前端入口',
`admin_url` varchar(160) NOT NULL COMMENT '后台入口',
`menu_show` tinyint(1) NOT NULL COMMENT '是否在菜单显示1:显示0:隐藏'
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='应用表';应用插件对应公众号配置信息表:CREATE TABLE IF NOT EXISTS `rh_addon_info` (
`id` int(10) NOT NULL COMMENT '自增ID',
`mpid` int(10) NOT NULL COMMENT '公众号标识',
`addon` varchar(50) NOT NULL COMMENT '插件标识',
`infos` text NOT NULL COMMENT '配置信息'
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='插件配置参数表';管理员表:CREATE TABLE IF NOT EXISTS `rh_admin` (
`id` int(11) NOT NULL COMMENT '自增 ID',
`admin_name` varchar(60) NOT NULL COMMENT '管理员登录',
`password` varchar(64) NOT NULL COMMENT '密码',
`status` tinyint(4) NOT NULL DEFAULT '1' COMMENT '1:正常2:禁用',
`ip` varchar(16) DEFAULT NULL COMMENT '登录 IP',
`last_time` int(10) NOT NULL COMMENT '最后登录时间',
`rand_str` varchar(180) NOT NULL COMMENT '密码附加字符',
`admin_id` int(11) NOT NULL DEFAULT '0' COMMENT '超级管理 ID'
) ENGINE=InnoDB DEFAULT CHARSET=utf8;微信公众号素材表:CREATE TABLE IF NOT EXISTS `rh_material` (
`id` int(10) NOT NULL COMMENT '自增ID',
`mpid` int(10) NOT NULL COMMENT '公众号标识',
`type` varchar(50) DEFAULT NULL COMMENT '素材类型',
`title` varchar(255) DEFAULT NULL COMMENT '素材名称|标题',
`url` varchar(500) DEFAULT NULL COMMENT '素材资源地址|图文封面',
`description` text COMMENT '图文素材描述',
`content` text COMMENT '文本素材内容',
`detail` text COMMENT '图文素材详情',
`link` varchar(255) DEFAULT NULL COMMENT '图文链接',
`create_time` int(10) DEFAULT NULL COMMENT '创建时间',
`update_time` int(10) DEFAULT NULL COMMENT '更新时间',
`media_id` varchar(500) DEFAULT NULL COMMENT '媒体 ID',
`from_type` tinyint(1) NOT NULL DEFAULT '0' COMMENT '0:本地1:公众号',
`path` varchar(500) DEFAULT NULL COMMENT '资源路径'
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='公众号素材表';会员等级表:CREATE TABLE IF NOT EXISTS `rh_member_group` (
`gid` int(11) NOT NULL COMMENT '组 ID',
`mpid` int(11) NOT NULL COMMENT '公众号标识',
`group_name` varchar(60) NOT NULL COMMENT '组等级名称',
`up_score` int(11) NOT NULL DEFAULT '0' COMMENT '升级积分条件',
`up_money` int(11) NOT NULL DEFAULT '0' COMMENT '升级消费金额条件',
`up_type` int(11) NOT NULL DEFAULT '0' COMMENT '升级条件类型0为或:1为且',
`discount` int(11) NOT NULL DEFAULT '0' COMMENT '折扣率',
`description` varchar(250) NOT NULL COMMENT '描述'
) ENGINE=InnoDB DEFAULT CHARSET=utf8;会员金额与积分表:CREATE TABLE IF NOT EXISTS `rh_member_wealth_record` (
`id` int(11) NOT NULL COMMENT '自增 ID',
`member_id` int(11) NOT NULL DEFAULT '0' COMMENT '会员 ID',
`mpid` int(11) NOT NULL DEFAULT '0' COMMENT '公众号标识',
`score` int(11) NOT NULL DEFAULT '0' COMMENT '积分',
`money` decimal(10,2) NOT NULL DEFAULT '0.00' COMMENT '金额',
`time` int(10) DEFAULT NULL COMMENT '时间',
`type` tinyint(1) NOT NULL COMMENT '1为积分,2金额',
`remark` varchar(255) DEFAULT NULL COMMENT '备注'
) ENGINE=InnoDB DEFAULT CHARSET=utf8;系统菜单表:CREATE TABLE IF NOT EXISTS `rh_menu` (
`id` int(11) NOT NULL COMMENT '自增ID',
`pid` int(5) NOT NULL COMMENT '上级ID',
`name` varchar(50) NOT NULL COMMENT '菜单名称',
`url` varchar(180) NOT NULL COMMENT 'Url函数地址',
`sort` int(5) DEFAULT NULL COMMENT '排序',
`icon` varchar(180) DEFAULT NULL COMMENT '图标',
`child` varchar(5) DEFAULT NULL,
`shows` varchar(5) DEFAULT NULL
) ENGINE=InnoDB AUTO_INCREMENT=57 DEFAULT CHARSET=utf8;公众号表:CREATE TABLE IF NOT EXISTS `rh_mp` (
`id` int(10) unsigned NOT NULL COMMENT '自增ID',
`user_id` int(10) NOT NULL COMMENT '用户ID',
`name` varchar(50) NOT NULL COMMENT '公众号名称',
`appid` varchar(50) DEFAULT NULL COMMENT 'AppId',
`appsecret` varchar(50) DEFAULT NULL COMMENT 'AppSecret',
`origin_id` varchar(50) NOT NULL COMMENT '公众号原始ID',
`type` int(1) NOT NULL DEFAULT '0' COMMENT '公众号类型(1:普通订阅号;2:认证订阅号;3:普通服务号;4:认证服务号',
`status` tinyint(1) NOT NULL DEFAULT '1' COMMENT '状态(0:禁用,1:正常,2:审核中)',
`valid_token` varchar(40) DEFAULT NULL COMMENT '接口验证Token',
`valid_status` tinyint(1) NOT NULL COMMENT '1已接入;0未接入',
`token` varchar(50) DEFAULT NULL COMMENT '公众号标识',
`encodingaeskey` varchar(50) DEFAULT NULL COMMENT '消息加解密秘钥',
`mp_number` varchar(50) DEFAULT NULL COMMENT '微信号',
`desc` text COMMENT '描述',
`logo` varchar(255) DEFAULT NULL COMMENT 'logo',
`qrcode` varchar(255) DEFAULT NULL COMMENT '二维码',
`create_time` int(10) NOT NULL COMMENT '创建时间',
`login_name` varchar(50) DEFAULT NULL COMMENT '公众号登录名',
`is_use` tinyint(1) NOT NULL DEFAULT '0' COMMENT '当前使用'
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 COMMENT='公众号表';微信公众号粉丝表:CREATE TABLE IF NOT EXISTS `rh_mp_friends` (
`id` int(10) NOT NULL COMMENT '自增ID',
`mpid` int(10) NOT NULL COMMENT '公众号标识',
`openid` varchar(255) NOT NULL COMMENT 'openid',
`nickname` varchar(50) CHARACTER SET utf8mb4 DEFAULT NULL COMMENT '昵称',
`headimgurl` varchar(255) DEFAULT NULL COMMENT '头像',
`sex` tinyint(1) DEFAULT NULL COMMENT '性别',
`subscribe` tinyint(1) NOT NULL DEFAULT '0' COMMENT '是否关注',
`subscribe_time` int(10) DEFAULT NULL COMMENT '关注时间',
`unsubscribe_time` int(10) DEFAULT NULL COMMENT '取消关注时间',
`relname` varchar(50) DEFAULT NULL COMMENT '真实姓名',
`signature` text COMMENT '个性签名',
`mobile` varchar(15) DEFAULT NULL COMMENT '手机号',
`is_bind` tinyint(1) NOT NULL DEFAULT '0' COMMENT '是否绑定',
`language` varchar(50) DEFAULT NULL COMMENT '使用语言',
`country` varchar(50) DEFAULT NULL COMMENT '国家',
`province` varchar(50) CHARACTER SET utf8mb4 DEFAULT NULL COMMENT '省',
`city` varchar(50) DEFAULT NULL COMMENT '城市',
`remark` varchar(50) DEFAULT NULL COMMENT '备注',
`group_id` int(10) DEFAULT '0' COMMENT '分组ID',
`groupid` int(11) NOT NULL COMMENT '公众号分组标识',
`tagid_list` varchar(255) DEFAULT NULL COMMENT '标签',
`score` int(10) DEFAULT '0' COMMENT '积分',
`money` decimal(10,2) DEFAULT '0.00' COMMENT '金钱',
`latitude` varchar(50) DEFAULT NULL COMMENT '纬度',
`longitude` varchar(50) DEFAULT NULL COMMENT '经度',
`location_precision` varchar(50) DEFAULT NULL COMMENT '精度',
`type` int(11) NOT NULL DEFAULT '0' COMMENT '0:公众号粉丝1:注册会员',
`unionid` varchar(160) DEFAULT NULL COMMENT 'unionid字段',
`password` varchar(64) DEFAULT NULL COMMENT '密码',
`last_time` int(10) DEFAULT '586969200' COMMENT '最后交互时间'
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='公众号粉丝表';公众号自定菜单表:CREATE TABLE IF NOT EXISTS `rh_mp_menu` (
`id` bigint(16) unsigned NOT NULL,
`mp_id` int(11) DEFAULT '0' COMMENT '公众号标识',
`index` bigint(20) DEFAULT '0',
`pindex` bigint(20) unsigned NOT NULL DEFAULT '0' COMMENT '父id',
`type` varchar(24) DEFAULT NULL COMMENT '菜单类型 null主菜单 link链接 keys关键字 event事件',
`name` varchar(256) DEFAULT NULL COMMENT '菜单名称',
`content` text COMMENT '文字内容',
`sort` int(10) unsigned DEFAULT '0' COMMENT '排序',
`status` tinyint(1) unsigned DEFAULT '1' COMMENT '状态(0禁用1启用)'
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='微信自定义菜单表';粉丝信息聊天记录表:CREATE TABLE IF NOT EXISTS `rh_mp_msg` (
`msg_id` int(11) NOT NULL COMMENT '自增 ID',
`pid` int(11) NOT NULL DEFAULT '0' COMMENT '上一条消息 ID',
`openid` varchar(64) DEFAULT NULL COMMENT 'openid',
`mpid` int(11) NOT NULL DEFAULT '0' COMMENT '公众号标识',
`type` varchar(32) DEFAULT NULL COMMENT '消息类型',
`content` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci COMMENT '消息内容',
`status` tinyint(1) NOT NULL DEFAULT '0' COMMENT '0未回复,1已回复',
`is_reply` tinyint(1) NOT NULL DEFAULT '0' COMMENT '1为公众号回复',
`create_time` int(10) NOT NULL DEFAULT '0' COMMENT '创建时间'
) ENGINE=InnoDB DEFAULT CHARSET=utf8;公众号响应规则表:CREATE TABLE IF NOT EXISTS `rh_mp_rule` (
`id` int(10) NOT NULL COMMENT '自增ID',
`mpid` int(10) NOT NULL COMMENT '公众号ID',
`addon` varchar(50) DEFAULT NULL COMMENT '插件标识',
`keyword` varchar(255) CHARACTER SET utf8mb4 DEFAULT NULL COMMENT '关键词内容',
`type` varchar(50) DEFAULT NULL COMMENT '触发类型:text,addon,images,news,voice,music,video',
`event` varchar(50) DEFAULT NULL COMMENT '特殊事件如:关注、取关等',
`entry_id` int(10) DEFAULT NULL COMMENT '功能入口ID',
`reply_id` int(10) DEFAULT NULL COMMENT '自动回复ID',
`status` tinyint(1) NOT NULL DEFAULT '1' COMMENT '状态(1开户:0关闭)'
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='公众号响应规则';回复类型表:CREATE TABLE IF NOT EXISTS `rh_mp_reply` (
`reply_id` int(11) NOT NULL COMMENT '自增ID',
`type` varchar(60) NOT NULL COMMENT '回复类型:text,images,news,voice,music,video',
`title` varchar(250) DEFAULT NULL COMMENT '标题(适用图文)',
`content` text COMMENT '文本内容',
`url` varchar(500) DEFAULT NULL COMMENT '资源地址',
`link` varchar(500) DEFAULT NULL COMMENT '连接(图片连接,图文连接等)',
`status_type` tinyint(1) NOT NULL DEFAULT '0' COMMENT '1:永久0:临时',
`media_id` varchar(500) DEFAULT NULL COMMENT '媒体ID'
) ENGINE=InnoDB DEFAULT CHARSET=utf8; 微信支付交易:CREATE TABLE IF NOT EXISTS `rh_payment` (
`payment_id` int(11) NOT NULL COMMENT '自增 ID',
`member_id` int(11) NOT NULL DEFAULT '0' COMMENT '用户 ID',
`openid` varchar(255) CHARACTER SET utf8 DEFAULT NULL COMMENT 'OPENID',
`title` varchar(255) CHARACTER SET utf8 DEFAULT NULL COMMENT '标题|商品名称',
`order_number` varchar(32) NOT NULL DEFAULT '0' COMMENT '订单号',
`money` decimal(10,2) NOT NULL DEFAULT '0.00' COMMENT '金额',
`pay_type` tinyint(1) NOT NULL DEFAULT '0' COMMENT '交易类型(1为微信2为支付宝)',
`status` tinyint(1) NOT NULL DEFAULT '0' COMMENT '状态(0:未完成交易1:完成关键交易)',
`create_time` int(10) NOT NULL COMMENT '交易时间',
`mpid` int(11) NOT NULL COMMENT '公众号标识',
`remark` varchar(255) CHARACTER SET utf8 DEFAULT NULL COMMENT '备注',
`attach` varchar(255) CHARACTER SET utf8 DEFAULT NULL COMMENT '附加数据',
`refund` tinyint(1) DEFAULT NULL COMMENT '1:申请退款中2:退款完成'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;二维码:CREATE TABLE IF NOT EXISTS `rh_qrcode` (
`id` int(10) unsigned NOT NULL COMMENT '主键',
`mpid` int(10) DEFAULT NULL COMMENT '公众号标识',
`scene_id` int(32) DEFAULT NULL COMMENT '场景值ID',
`scene_name` varchar(255) DEFAULT NULL COMMENT '场景名称',
`keyword` varchar(255) DEFAULT NULL COMMENT '关联关键词',
`qr_type` char(32) DEFAULT '0' COMMENT '二维码类型',
`scene_str` varchar(255) DEFAULT NULL COMMENT '场景值字符串',
`expire` int(10) DEFAULT NULL COMMENT '过期时间',
`ticket` varchar(255) DEFAULT NULL COMMENT '二维码Ticket',
`short_url` varchar(255) DEFAULT NULL COMMENT '二维码短地址',
`qrcode_url` text NOT NULL COMMENT '二维码原始地址',
`url` varchar(255) DEFAULT NULL COMMENT '二维码图片解析后的地址',
`create_time` int(10) DEFAULT NULL COMMENT '二维码创建时间',
`scan_count` int(11) NOT NULL COMMENT '扫码次数',
`gz_count` int(11) NOT NULL COMMENT '关注数量'
) ENGINE=InnoDB DEFAULT CHARSET=utf8;二维码记录:CREATE TABLE IF NOT EXISTS `rh_qrcode_data` (
`id` int(11) NOT NULL COMMENT '自增ID',
`scene_id` int(11) NOT NULL COMMENT '场景 ID',
`openid` varchar(160) NOT NULL COMMENT 'openid',
`create_time` varchar(60) NOT NULL COMMENT '扫码时间',
`mpid` int(11) NOT NULL COMMENT '公众号标识',
`qrcode_id` int(11) NOT NULL COMMENT '二维码ID',
`scan_count` int(11) NOT NULL DEFAULT '1' COMMENT '扫码次数',
`type` tinyint(1) NOT NULL DEFAULT '0' COMMENT '0:默认1:扫码关注'
) ENGINE=InnoDB DEFAULT CHARSET=utf8;发红包:CREATE TABLE IF NOT EXISTS `rh_redpack` (
`id` int(11) NOT NULL COMMENT '自增 ID',
`openid` varchar(255) CHARACTER SET utf8 DEFAULT NULL COMMENT 'openid',
`order_number` varchar(64) CHARACTER SET utf8 DEFAULT NULL COMMENT '单号',
`mpid` int(11) NOT NULL DEFAULT '0' COMMENT '公众号标识',
`money` decimal(10,2) NOT NULL COMMENT '红包金额',
`nick_name` varchar(255) DEFAULT NULL COMMENT '提供方名称',
`send_name` varchar(255) DEFAULT NULL COMMENT '发送者名称',
`create_time` int(10) DEFAULT NULL COMMENT '创建时间',
`addon` varchar(60) DEFAULT NULL COMMENT '应用扩展标识',
`status` tinyint(1) NOT NULL DEFAULT '1' COMMENT '状态1:正常0:过期'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;公众号配置:CREATE TABLE IF NOT EXISTS `rh_setting` (
`id` int(11) NOT NULL COMMENT '自增ID',
`mpid` int(11) NOT NULL COMMENT '公众号标识',
`name` varchar(180) NOT NULL COMMENT '配置项名称',
`value` text NOT NULL COMMENT '配置值',
`cate` varchar(30) DEFAULT NULL COMMENT '分类'
) ENGINE=InnoDB DEFAULT CHARSET=utf8; 查看全部
插件应用表:
CREATE TABLE IF NOT EXISTS `rh_addons` (
`id` int(10) NOT NULL COMMENT '自增ID',
`name` varchar(255) NOT NULL COMMENT '插件名称',
`addon` varchar(50) NOT NULL COMMENT '标识名',
`desc` text COMMENT '描述',
`version` varchar(10) NOT NULL COMMENT '版本号',
`author` varchar(50) NOT NULL COMMENT '作者姓名',
`logo` text COMMENT 'LOGO',
`status` int(1) NOT NULL DEFAULT '1' COMMENT '状态',
`config` text COMMENT '插件配置',
`entry_url` varchar(160) NOT NULL COMMENT '前端入口',
`admin_url` varchar(160) NOT NULL COMMENT '后台入口',
`menu_show` tinyint(1) NOT NULL COMMENT '是否在菜单显示1:显示0:隐藏'
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='应用表';
应用插件对应公众号配置信息表:
CREATE TABLE IF NOT EXISTS `rh_addon_info` (
`id` int(10) NOT NULL COMMENT '自增ID',
`mpid` int(10) NOT NULL COMMENT '公众号标识',
`addon` varchar(50) NOT NULL COMMENT '插件标识',
`infos` text NOT NULL COMMENT '配置信息'
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='插件配置参数表';
管理员表:
CREATE TABLE IF NOT EXISTS `rh_admin` (
`id` int(11) NOT NULL COMMENT '自增 ID',
`admin_name` varchar(60) NOT NULL COMMENT '管理员登录',
`password` varchar(64) NOT NULL COMMENT '密码',
`status` tinyint(4) NOT NULL DEFAULT '1' COMMENT '1:正常2:禁用',
`ip` varchar(16) DEFAULT NULL COMMENT '登录 IP',
`last_time` int(10) NOT NULL COMMENT '最后登录时间',
`rand_str` varchar(180) NOT NULL COMMENT '密码附加字符',
`admin_id` int(11) NOT NULL DEFAULT '0' COMMENT '超级管理 ID'
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
微信公众号素材表:
CREATE TABLE IF NOT EXISTS `rh_material` (
`id` int(10) NOT NULL COMMENT '自增ID',
`mpid` int(10) NOT NULL COMMENT '公众号标识',
`type` varchar(50) DEFAULT NULL COMMENT '素材类型',
`title` varchar(255) DEFAULT NULL COMMENT '素材名称|标题',
`url` varchar(500) DEFAULT NULL COMMENT '素材资源地址|图文封面',
`description` text COMMENT '图文素材描述',
`content` text COMMENT '文本素材内容',
`detail` text COMMENT '图文素材详情',
`link` varchar(255) DEFAULT NULL COMMENT '图文链接',
`create_time` int(10) DEFAULT NULL COMMENT '创建时间',
`update_time` int(10) DEFAULT NULL COMMENT '更新时间',
`media_id` varchar(500) DEFAULT NULL COMMENT '媒体 ID',
`from_type` tinyint(1) NOT NULL DEFAULT '0' COMMENT '0:本地1:公众号',
`path` varchar(500) DEFAULT NULL COMMENT '资源路径'
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='公众号素材表';
会员等级表:
CREATE TABLE IF NOT EXISTS `rh_member_group` (
`gid` int(11) NOT NULL COMMENT '组 ID',
`mpid` int(11) NOT NULL COMMENT '公众号标识',
`group_name` varchar(60) NOT NULL COMMENT '组等级名称',
`up_score` int(11) NOT NULL DEFAULT '0' COMMENT '升级积分条件',
`up_money` int(11) NOT NULL DEFAULT '0' COMMENT '升级消费金额条件',
`up_type` int(11) NOT NULL DEFAULT '0' COMMENT '升级条件类型0为或:1为且',
`discount` int(11) NOT NULL DEFAULT '0' COMMENT '折扣率',
`description` varchar(250) NOT NULL COMMENT '描述'
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
会员金额与积分表:
CREATE TABLE IF NOT EXISTS `rh_member_wealth_record` (
`id` int(11) NOT NULL COMMENT '自增 ID',
`member_id` int(11) NOT NULL DEFAULT '0' COMMENT '会员 ID',
`mpid` int(11) NOT NULL DEFAULT '0' COMMENT '公众号标识',
`score` int(11) NOT NULL DEFAULT '0' COMMENT '积分',
`money` decimal(10,2) NOT NULL DEFAULT '0.00' COMMENT '金额',
`time` int(10) DEFAULT NULL COMMENT '时间',
`type` tinyint(1) NOT NULL COMMENT '1为积分,2金额',
`remark` varchar(255) DEFAULT NULL COMMENT '备注'
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
系统菜单表:
CREATE TABLE IF NOT EXISTS `rh_menu` (
`id` int(11) NOT NULL COMMENT '自增ID',
`pid` int(5) NOT NULL COMMENT '上级ID',
`name` varchar(50) NOT NULL COMMENT '菜单名称',
`url` varchar(180) NOT NULL COMMENT 'Url函数地址',
`sort` int(5) DEFAULT NULL COMMENT '排序',
`icon` varchar(180) DEFAULT NULL COMMENT '图标',
`child` varchar(5) DEFAULT NULL,
`shows` varchar(5) DEFAULT NULL
) ENGINE=InnoDB AUTO_INCREMENT=57 DEFAULT CHARSET=utf8;
公众号表:
CREATE TABLE IF NOT EXISTS `rh_mp` (
`id` int(10) unsigned NOT NULL COMMENT '自增ID',
`user_id` int(10) NOT NULL COMMENT '用户ID',
`name` varchar(50) NOT NULL COMMENT '公众号名称',
`appid` varchar(50) DEFAULT NULL COMMENT 'AppId',
`appsecret` varchar(50) DEFAULT NULL COMMENT 'AppSecret',
`origin_id` varchar(50) NOT NULL COMMENT '公众号原始ID',
`type` int(1) NOT NULL DEFAULT '0' COMMENT '公众号类型(1:普通订阅号;2:认证订阅号;3:普通服务号;4:认证服务号',
`status` tinyint(1) NOT NULL DEFAULT '1' COMMENT '状态(0:禁用,1:正常,2:审核中)',
`valid_token` varchar(40) DEFAULT NULL COMMENT '接口验证Token',
`valid_status` tinyint(1) NOT NULL COMMENT '1已接入;0未接入',
`token` varchar(50) DEFAULT NULL COMMENT '公众号标识',
`encodingaeskey` varchar(50) DEFAULT NULL COMMENT '消息加解密秘钥',
`mp_number` varchar(50) DEFAULT NULL COMMENT '微信号',
`desc` text COMMENT '描述',
`logo` varchar(255) DEFAULT NULL COMMENT 'logo',
`qrcode` varchar(255) DEFAULT NULL COMMENT '二维码',
`create_time` int(10) NOT NULL COMMENT '创建时间',
`login_name` varchar(50) DEFAULT NULL COMMENT '公众号登录名',
`is_use` tinyint(1) NOT NULL DEFAULT '0' COMMENT '当前使用'
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 COMMENT='公众号表';
微信公众号粉丝表:
CREATE TABLE IF NOT EXISTS `rh_mp_friends` (
`id` int(10) NOT NULL COMMENT '自增ID',
`mpid` int(10) NOT NULL COMMENT '公众号标识',
`openid` varchar(255) NOT NULL COMMENT 'openid',
`nickname` varchar(50) CHARACTER SET utf8mb4 DEFAULT NULL COMMENT '昵称',
`headimgurl` varchar(255) DEFAULT NULL COMMENT '头像',
`sex` tinyint(1) DEFAULT NULL COMMENT '性别',
`subscribe` tinyint(1) NOT NULL DEFAULT '0' COMMENT '是否关注',
`subscribe_time` int(10) DEFAULT NULL COMMENT '关注时间',
`unsubscribe_time` int(10) DEFAULT NULL COMMENT '取消关注时间',
`relname` varchar(50) DEFAULT NULL COMMENT '真实姓名',
`signature` text COMMENT '个性签名',
`mobile` varchar(15) DEFAULT NULL COMMENT '手机号',
`is_bind` tinyint(1) NOT NULL DEFAULT '0' COMMENT '是否绑定',
`language` varchar(50) DEFAULT NULL COMMENT '使用语言',
`country` varchar(50) DEFAULT NULL COMMENT '国家',
`province` varchar(50) CHARACTER SET utf8mb4 DEFAULT NULL COMMENT '省',
`city` varchar(50) DEFAULT NULL COMMENT '城市',
`remark` varchar(50) DEFAULT NULL COMMENT '备注',
`group_id` int(10) DEFAULT '0' COMMENT '分组ID',
`groupid` int(11) NOT NULL COMMENT '公众号分组标识',
`tagid_list` varchar(255) DEFAULT NULL COMMENT '标签',
`score` int(10) DEFAULT '0' COMMENT '积分',
`money` decimal(10,2) DEFAULT '0.00' COMMENT '金钱',
`latitude` varchar(50) DEFAULT NULL COMMENT '纬度',
`longitude` varchar(50) DEFAULT NULL COMMENT '经度',
`location_precision` varchar(50) DEFAULT NULL COMMENT '精度',
`type` int(11) NOT NULL DEFAULT '0' COMMENT '0:公众号粉丝1:注册会员',
`unionid` varchar(160) DEFAULT NULL COMMENT 'unionid字段',
`password` varchar(64) DEFAULT NULL COMMENT '密码',
`last_time` int(10) DEFAULT '586969200' COMMENT '最后交互时间'
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='公众号粉丝表';
公众号自定菜单表:
CREATE TABLE IF NOT EXISTS `rh_mp_menu` (
`id` bigint(16) unsigned NOT NULL,
`mp_id` int(11) DEFAULT '0' COMMENT '公众号标识',
`index` bigint(20) DEFAULT '0',
`pindex` bigint(20) unsigned NOT NULL DEFAULT '0' COMMENT '父id',
`type` varchar(24) DEFAULT NULL COMMENT '菜单类型 null主菜单 link链接 keys关键字 event事件',
`name` varchar(256) DEFAULT NULL COMMENT '菜单名称',
`content` text COMMENT '文字内容',
`sort` int(10) unsigned DEFAULT '0' COMMENT '排序',
`status` tinyint(1) unsigned DEFAULT '1' COMMENT '状态(0禁用1启用)'
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='微信自定义菜单表';
粉丝信息聊天记录表:
CREATE TABLE IF NOT EXISTS `rh_mp_msg` (
`msg_id` int(11) NOT NULL COMMENT '自增 ID',
`pid` int(11) NOT NULL DEFAULT '0' COMMENT '上一条消息 ID',
`openid` varchar(64) DEFAULT NULL COMMENT 'openid',
`mpid` int(11) NOT NULL DEFAULT '0' COMMENT '公众号标识',
`type` varchar(32) DEFAULT NULL COMMENT '消息类型',
`content` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci COMMENT '消息内容',
`status` tinyint(1) NOT NULL DEFAULT '0' COMMENT '0未回复,1已回复',
`is_reply` tinyint(1) NOT NULL DEFAULT '0' COMMENT '1为公众号回复',
`create_time` int(10) NOT NULL DEFAULT '0' COMMENT '创建时间'
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
公众号响应规则表:
CREATE TABLE IF NOT EXISTS `rh_mp_rule` (
`id` int(10) NOT NULL COMMENT '自增ID',
`mpid` int(10) NOT NULL COMMENT '公众号ID',
`addon` varchar(50) DEFAULT NULL COMMENT '插件标识',
`keyword` varchar(255) CHARACTER SET utf8mb4 DEFAULT NULL COMMENT '关键词内容',
`type` varchar(50) DEFAULT NULL COMMENT '触发类型:text,addon,images,news,voice,music,video',
`event` varchar(50) DEFAULT NULL COMMENT '特殊事件如:关注、取关等',
`entry_id` int(10) DEFAULT NULL COMMENT '功能入口ID',
`reply_id` int(10) DEFAULT NULL COMMENT '自动回复ID',
`status` tinyint(1) NOT NULL DEFAULT '1' COMMENT '状态(1开户:0关闭)'
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='公众号响应规则';
回复类型表:
CREATE TABLE IF NOT EXISTS `rh_mp_reply` (
`reply_id` int(11) NOT NULL COMMENT '自增ID',
`type` varchar(60) NOT NULL COMMENT '回复类型:text,images,news,voice,music,video',
`title` varchar(250) DEFAULT NULL COMMENT '标题(适用图文)',
`content` text COMMENT '文本内容',
`url` varchar(500) DEFAULT NULL COMMENT '资源地址',
`link` varchar(500) DEFAULT NULL COMMENT '连接(图片连接,图文连接等)',
`status_type` tinyint(1) NOT NULL DEFAULT '0' COMMENT '1:永久0:临时',
`media_id` varchar(500) DEFAULT NULL COMMENT '媒体ID'
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
 微信支付交易:
CREATE TABLE IF NOT EXISTS `rh_payment` (
`payment_id` int(11) NOT NULL COMMENT '自增 ID',
`member_id` int(11) NOT NULL DEFAULT '0' COMMENT '用户 ID',
`openid` varchar(255) CHARACTER SET utf8 DEFAULT NULL COMMENT 'OPENID',
`title` varchar(255) CHARACTER SET utf8 DEFAULT NULL COMMENT '标题|商品名称',
`order_number` varchar(32) NOT NULL DEFAULT '0' COMMENT '订单号',
`money` decimal(10,2) NOT NULL DEFAULT '0.00' COMMENT '金额',
`pay_type` tinyint(1) NOT NULL DEFAULT '0' COMMENT '交易类型(1为微信2为支付宝)',
`status` tinyint(1) NOT NULL DEFAULT '0' COMMENT '状态(0:未完成交易1:完成关键交易)',
`create_time` int(10) NOT NULL COMMENT '交易时间',
`mpid` int(11) NOT NULL COMMENT '公众号标识',
`remark` varchar(255) CHARACTER SET utf8 DEFAULT NULL COMMENT '备注',
`attach` varchar(255) CHARACTER SET utf8 DEFAULT NULL COMMENT '附加数据',
`refund` tinyint(1) DEFAULT NULL COMMENT '1:申请退款中2:退款完成'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
二维码:
CREATE TABLE IF NOT EXISTS `rh_qrcode` (
`id` int(10) unsigned NOT NULL COMMENT '主键',
`mpid` int(10) DEFAULT NULL COMMENT '公众号标识',
`scene_id` int(32) DEFAULT NULL COMMENT '场景值ID',
`scene_name` varchar(255) DEFAULT NULL COMMENT '场景名称',
`keyword` varchar(255) DEFAULT NULL COMMENT '关联关键词',
`qr_type` char(32) DEFAULT '0' COMMENT '二维码类型',
`scene_str` varchar(255) DEFAULT NULL COMMENT '场景值字符串',
`expire` int(10) DEFAULT NULL COMMENT '过期时间',
`ticket` varchar(255) DEFAULT NULL COMMENT '二维码Ticket',
`short_url` varchar(255) DEFAULT NULL COMMENT '二维码短地址',
`qrcode_url` text NOT NULL COMMENT '二维码原始地址',
`url` varchar(255) DEFAULT NULL COMMENT '二维码图片解析后的地址',
`create_time` int(10) DEFAULT NULL COMMENT '二维码创建时间',
`scan_count` int(11) NOT NULL COMMENT '扫码次数',
`gz_count` int(11) NOT NULL COMMENT '关注数量'
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
二维码记录:
CREATE TABLE IF NOT EXISTS `rh_qrcode_data` (
`id` int(11) NOT NULL COMMENT '自增ID',
`scene_id` int(11) NOT NULL COMMENT '场景 ID',
`openid` varchar(160) NOT NULL COMMENT 'openid',
`create_time` varchar(60) NOT NULL COMMENT '扫码时间',
`mpid` int(11) NOT NULL COMMENT '公众号标识',
`qrcode_id` int(11) NOT NULL COMMENT '二维码ID',
`scan_count` int(11) NOT NULL DEFAULT '1' COMMENT '扫码次数',
`type` tinyint(1) NOT NULL DEFAULT '0' COMMENT '0:默认1:扫码关注'
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
发红包:
CREATE TABLE IF NOT EXISTS `rh_redpack` (
`id` int(11) NOT NULL COMMENT '自增 ID',
`openid` varchar(255) CHARACTER SET utf8 DEFAULT NULL COMMENT 'openid',
`order_number` varchar(64) CHARACTER SET utf8 DEFAULT NULL COMMENT '单号',
`mpid` int(11) NOT NULL DEFAULT '0' COMMENT '公众号标识',
`money` decimal(10,2) NOT NULL COMMENT '红包金额',
`nick_name` varchar(255) DEFAULT NULL COMMENT '提供方名称',
`send_name` varchar(255) DEFAULT NULL COMMENT '发送者名称',
`create_time` int(10) DEFAULT NULL COMMENT '创建时间',
`addon` varchar(60) DEFAULT NULL COMMENT '应用扩展标识',
`status` tinyint(1) NOT NULL DEFAULT '1' COMMENT '状态1:正常0:过期'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
公众号配置:
CREATE TABLE IF NOT EXISTS `rh_setting` (
`id` int(11) NOT NULL COMMENT '自增ID',
`mpid` int(11) NOT NULL COMMENT '公众号标识',
`name` varchar(180) NOT NULL COMMENT '配置项名称',
`value` text NOT NULL COMMENT '配置值',
`cate` varchar(30) DEFAULT NULL COMMENT '分类'
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

微信公众号如如何接入平台?

文档教程geeson 发表了文章 • 0 个评论 • 3731 次浏览 • 2017-10-02 13:33 • 来自相关话题

成功增加公众号后,进入公众号管理。如图:





进入接入信息界面后:如图:





然后微信进入公众号:https://mp.weixin.qq.com/
右侧找到开发:【基本配置】
首先配置IP 白名单,点击【修改】把系统平台的 IP 填写进入。如果多 IP 请换行填写。






然后找到下面的【服务器配置】
点击【修改配置】





把接入的信息,复制到微信服务器配置中。










然后保存提交。提示配置成功后。已经生效了。 查看全部
成功增加公众号后,进入公众号管理。如图:

2FE44EB5-1EFE-4B15-B803-0D75CB52949B.png

进入接入信息界面后:如图:

5B0C8949-32EE-4684-9DA3-2DFE97606E81.png

然后微信进入公众号:https://mp.weixin.qq.com/
右侧找到开发:【基本配置】
首先配置IP 白名单,点击【修改】把系统平台的 IP 填写进入。如果多 IP 请换行填写。

B7498331-0016-450B-96DA-517107BBA0C1.png


然后找到下面的【服务器配置】
点击【修改配置】

09F32956-4D4D-4761-8ECB-7BD1D468F7E6.png

把接入的信息,复制到微信服务器配置中。

5B0C8949-32EE-4684-9DA3-2DFE97606E81.png


09F32956-4D4D-4761-8ECB-7BD1D468F7E6.png

然后保存提交。提示配置成功后。已经生效了。

如何在平台中增加公众号与注意事项

文档教程geeson 发表了文章 • 0 个评论 • 1840 次浏览 • 2017-10-02 13:09 • 来自相关话题

登录系统后,系统管理->公众号管理->增加公众号,如图:





需要注意的是:APPID,APPSECRET,LOGO,二维码都是重要参数。务必正确填写。
其中的开启状态,如果是开启那么代表系统正常使用。如果关闭系统功能与粉丝互动将会停止。在公众号进行互动时会提示,关闭回复的内容。 查看全部
登录系统后,系统管理->公众号管理->增加公众号,如图:

3748EED6-9CD9-42C2-B1B9-F1362F55913D.png

需要注意的是:APPID,APPSECRET,LOGO,二维码都是重要参数。务必正确填写。
其中的开启状态,如果是开启那么代表系统正常使用。如果关闭系统功能与粉丝互动将会停止。在公众号进行互动时会提示,关闭回复的内容。