这个是目前比较常见的婚恋交友平台小程序制作开发代码案例解析,很多功能大家都可以参考借鉴,比如关注功能,会员付费功能,权限设置等功能。
首页部分
{\
private $weather = array("请选择","晴天","阴天","多云","雨天","雷阵雨","雪天");\
private $feel = array('请选择','开心','吃惊','抓狂','伤心','动心','愤怒','傻笑','疑惑','感叹','郁闷','沮丧','一般');\
private $power = array(1=>'公开',2=>'仅自己看');\
\
//个人中心浏览日记\
public function index(){\
$mod = D("Diary");\
$total = $mod->scope('read')->where("userid=".session('user')['id'])->count();\
$page = new \Think\Page($total,15);\
$diaryList = $mod->scope('read')->where("userid=".session('user')['id'])->limit($page->firstRow,$page->listRows)->select();\
\
foreach($diaryList as &$diary){\
$diary['catid'] = M("diary_category")->field("catname")->where("id=".$diary['catid'])->find();\
$diary['comment'] = M('diary_comment')->where('diaryid='.$diary['id'])->count();\
}\
// dump($diaryList);\
$page->setConfig('prev', "上一页");\
$page->setConfig('next', "下一页");\
$show = $page->show();\
\
$this->assign("show",$show);\
$this->assign("diaryList",$diaryList);\
$this->display("index");\
}\
\
\
//获取添加日记模板\
public function add(){\
$this->assign("cat",M("Diary_category")->select());\
$this->display("add");\
}\
//执行添加日记\
public function insert(){\
$mod = D("Diary");\
$_POST['userid'] = session('user')['id'];\
\
if(!$mod->create($_POST)){\
$this->error($mod->getError());\
}\
if($mod->add()){\
//添加积分\
$userPoints = new \Home\Controller\UserPointsController();\
$userPoints->insert('diary');\
\
echo "<script>window.parent.doAdd('true');</script>";\
}else{\
echo "<script>window.parent.doAdd('false');</script>";\
}\
exit();\
}\
\
//执行日记删除\
public function del(){\
$mod = D("Diary");\
$res = $mod->where("id=".$_POST['id'])->delete();\
if($res){\
echo json_encode("true");\
}else{\
echo json_encode("false");\
}\
}\
\
//加载修改日记模板\
public function edit(){\
$mod = D("Diary");\
$info = $mod->where("userid=".session('user')['id'])->find($_GET['id']);\
$cat = M("Diary_category")->select();\
\
$this->assign("info",$info);\
$this->assign("cat",$cat);\
$this->assign("weather",$this->weather);\
$this->assign("feel",$this->feel);\
$this->assign("power",$this->power);\
$this->display("edit");\
}\
\
//执行修改日记\
public function update(){\
$mod = D("Diary");\
if(!$mod->create()){\
$this->error($mod->getError());\
}\
if($mod->save()){\
echo "<script>window.parent.doEdit('true');</script>";\
// $this->success("修改成功!",U("Diary/index"));\
}else{\
echo "<script>window.parent.doEdit('false');</script>";\
// $this->error("修改成功!");\
}\
exit();
}
}
权限设置
static $_config = array();\
// 无参数时获取所有\
if (empty($name)) {\
return $_config;\
}\
// 优先执行设置获取或赋值\
if (is_string($name)) {\
if (!strpos($name, '.')) {\
$name = strtolower($name);\
if (is_null($value))\
return isset($_config[$name]) ? $_config[$name] : $default;\
$_config[$name] = $value;\
return;\
}\
// 二维数组设置和获取支持\
$name = explode('.', $name);\
$name[0] = strtolower($name[0]);\
if (is_null($value))\
return isset($_config[$name[0]][$name[1]]) ? $_config[$name[0]][$name[1]] : $default;\
$_config[$name[0]][$name[1]] = $value;\
return;\
}\
// 批量设置\
if (is_array($name)){\
$_config = array_merge($_config, array_change_key_case($name));\
return;\
}\
return null; // 避免非法参数\
}\
\
/**\
* 抛出异常处理\
* @param string $msg 异常消息\
* @param integer $code 异常代码 默认为0\
* @return void\
*/\
function E($msg, $code=0) {\
throw new Think\Exception($msg, $code);\
}\
\
/**\
* 记录和统计时间(微秒)和内存使用情况\
* 使用方法:\
* <code>\
* G('begin'); // 记录开始标记位\
* // ... 区间运行代码\
* G('end'); // 记录结束标签位\
* echo G('begin','end',6); // 统计区间运行时间 精确到小数后6位\
* echo G('begin','end','m'); // 统计区间内存使用情况\
* 如果end标记位没有定义,则会自动以当前作为标记位\
* 其中统计内存使用需要 MEMORY_LIMIT_ON 常量为true才有效\
* </code>\
* @param string $start 开始标签\
* @param string $end 结束标签\
* @param integer|string $dec 小数位或者m\
* @return mixed\
*/\
function G($start,$end='',$dec=4) {\
static $_info = array();\
static $_mem = array();\
if(is_float($end)) { // 记录时间\
$_info[$start] = $end;\
}elseif(!empty($end)){ // 统计时间和内存使用\
if(!isset($_info[$end])) $_info[$end] = microtime(TRUE);\
if(MEMORY_LIMIT_ON && $dec=='m'){\
if(!isset($_mem[$end])) $_mem[$end] = memory_get_usage();\
return number_format(($_mem[$end]-$_mem[$start])/1024);\
}else{\
return number_format(($_info[$end]-$_info[$start]),$dec);\
}\
\
}else{ // 记录时间和内存使用\
$_info[$start] = microtime(TRUE);\
if(MEMORY_LIMIT_ON) $_mem[$start] = memory_get_usage();\
}\
}\
\
/**\
* 获取和设置语言定义(不区分大小写)\
* @param string|array $name 语言变量\
* @param string $value 语言值\
* @return mixed\
*/\
function L($name=null, $value=null) {\
static $_lang = array();\
// 空参数返回所有定义\
if (empty($name))\
return $_lang;\
// 判断语言获取(或设置)\
// 若不存在,直接返回全大写$name\
if (is_string($name)) {\
$name = strtoupper($name);\
if (is_null($value))\
return isset($_lang[$name]) ? $_lang[$name] : $name;\
$_lang[$name] = $value; // 语言定义\
return;\
}\
// 批量定义\
if (is_array($name))\
$_lang = array_merge($_lang, array_change_key_case($name, CASE_UPPER));\
return;\
}