实例介绍
【实例简介】
环境要求:
centos php7.0 mysql5.6,t'hinkphp实现的后端域名配置好https
建议使用宝塔环境一键配置
将后台代码上传至网站根目录
修改数据库配置文件\data\conf\db.php
用Navicat或者phpmyadmin将enve_dbdt.sql导入数据库
打开你的网站https://hb.5988vip.cn/index.php/admin/public/login
用户名 :admin 密码:kuangfuhui 配置你的小程序后台吧
小程序前端对接:修改前端文件app.js
App({
setConfig: {
url: 'https://hb.5988vip.cn',
hb_appid: 'wx087ce1d12cb37296',
hb_appsecret: 'd5ede221af6372e2d8115d93c4b01fa7'
},
改成你的小程序信息即可
服务类目:选择教育-在线教育
【实例截图】
后台截图如下:
小程序截图如下:
【核心代码】
<?php namespace User\Controller; use Common\Controller\InterceptController; use Think\Model; use Common\Controller\AdvController; use Common\Lib\Percolate; use Common\Controller\FormidController; class ConsumerController extends InterceptController { protected $wx_user; public function __construct() { parent::__construct(); $this->wx_user = M("WxUser"); } //提现用户信息 public function userInfo(){ $field = 'amount,zm_points'; $info = $this->wx_user->field($field)->where('id=%d',array($this->user_id))->find(); $cash = $info['amount'] < 0 ? '0.00' : $info['amount']; $data = [ 'cash_status'=>true, 'amount'=>$cash, 'commision'=>C('HB_COMMISION'),//佣金比例 'amount_min'=>C('AMOUNT_MIN'),//红包最低金额 'receive_amount_min'=>C('RECEIVE_AMOUNT_MIN'),//领单个红包最低金额 'hbadv_min'=>C('HBADV_MIN'),//红包最低金额 'hbshare_min'=>C('HBSHARE_MIN'),//领单个红包最低金额 'hb_max_amount'=>50000,//最大发红包金额 'hb_max_num'=>10000,//最大发红包数量 'ctime'=>$info['zm_points'], 'share_text'=>1, 'nowfrequency'=>0, ]; if( $cash <= 1 ){ $data['cash_status'] = false; } //$data['adv'] = AdvController::instance()->getAdv('index'); //$data['kouling'] = M('kouling')->field('link_description')->where(array('link_status'=>1))->order('listorder asc')->select(); //获取 $data['rule'] = C('gamerule');//'挑战口令一共有5条,每条口令都有相应的限制时间,在规定时间内完成挑战.'; $data['money'] = C('gamefuli');//'颁发王者口令普通话优秀证书'; //控制更多游戏图标显示 $data['moreFlag'] = C('moreGameFlag'); //$data['moreFlag'] = 0 ; //答题界面标语 $data['ruleText'] = C('gameruletxt');//'总分达到'.( C('jige')??450 ).'分以上即可获得证书'; $this->ajaxReturn(['code'=>20000,'msg'=>'success', 'data'=>$data]); } /* * 个人中心api 返回广告和金额 */ public function moneyAndAdv(){ $field = 'amount,frozen_amount'; $info = $this->wx_user->field($field)->where('id=%d',array($this->user_id))->find(); $cash = bcsub($info['amount'],$info['frozen_amount'],2); $cash = $cash < 0 ? '0.00' : $cash; $adv = AdvController::instance()->getAdv('user_center'); $this->ajaxReturn(['code'=>20000,'msg'=>'success', 'amount'=>$cash, 'adv'=>$adv]); } /** * 释放冻结金额 * time 2017.11.15 * author xueweijian */ public function rurnFrozenAmount(){ $pid = I('post.pid/d'); $enve = M('enve')->field('pay_type')->where(['id'=>$pid])->find(); if ($enve['pay_type'] == 2 ) { $res = $this->wx_user->where(array('id'=>$this->user_id))->save(['amount'=>['exp', '`amount` `frozen_amount`'], 'frozen_amount'=>0 ]); if(empty($res)){ $this->ajaxReturn(['code'=>40500,'msg'=>'账户异常']); } } $this->ajaxReturn(['code'=>20000,'msg'=>'success']); } /* * 订阅 */ public function subscribe() { $state = I('post.subsc/d'); $formIds = I('post.formIds', '', 'htmlspecialchars_decode'); if (!empty($formIds)) { FormidController::saveFormId($formIds, $this->openid); } if ($state != 0 && $state != 1) { $this->ajaxReturn(['code'=>40500,'msg'=>'操作失败']); } $res = M('wx_user')->where(['openid'=>$this->openid])->save(['subscribe'=>$state]); if (empty($res)){ $this->ajaxReturn(['code'=>40500,'msg'=>'操作失败2']); } $this->ajaxReturn(['code'=>20000, 'state'=>$state, 'msg'=>'订阅成功']); } /* * 接受from_id */ public function saveFromId() { $fromIds = I('post.fromids', '', 'strip_tags'); foreach ($fromIds as $k=>&$v){ $v['openid'] = $this->openid; } M('fromids')->save($fromIds); } // 排序 public function sortArrByField(&$array, $field, $desc = false){ $fieldArr=array(); foreach ($array as $k => $v) { $fieldArr[$k] = $v[$field]; } $sort = $desc == false ? SORT_ASC : SORT_DESC; array_multisort($fieldArr, $sort, $array); } /** * 获取个人中心数据 */ public function getUserInfo(){ $quarter = C('quarter')??1; $data = M('challenge')->where(" quarter = '$quarter' ")->order('point desc')->select(); static $user_array = []; foreach ($data as $k => $v) { if( in_array( $v['user_id'], $user_array ) ){ unset( $data[$k] ); }else{ $user_array[] = $v['user_id']; } } /* //按发包次数排序 $this->sortArrByField($data,'point' ,SORT_DESC );*/ //添加排行数 static $rankNum = 1; foreach ($data as $kkk => $vvv) { if( $kkk == 0 ){ $data[$kkk]['rank'] = 1; }else{ if( $data[$kkk]['point'] == $data[$kkk-1]['point'] ){ $data[$kkk]['rank'] = $rankNum; }else{ $data[$kkk]['rank'] = $rankNum 1; $rankNum ; } } //拿到用户的排名就break if( $vvv['user_id'] == $this->user_id ){ $my['rank'] = $data[$kkk]['rank']; break; } } if( empty($my['rank']) ){ $my['rank'] = '未上榜'; } $my['maxPoint'] = M('challenge')->where(" quarter = '$quarter' and user_id = '{$this->user_id}'")->max( 'point' )??0; $my['all_challenge'] = M('challenge')->where(" quarter = '$quarter' and user_id = '$this->user_id' ")->count(); $my['all_pass'] = M('challenge')->where(" quarter = '$quarter' and user_id = '$this->user_id' and is_pass = 1")->count(); $this->ajaxReturn(['code'=>20000, 'data'=>$my]); } }
网友评论
小贴士
感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。
- 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
- 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
- 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
- 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。
关于好例子网
本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明
支持(0) 盖楼(回复)
支持(0) 盖楼(回复)
支持(0) 盖楼(回复)