123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192 |
- <?php
- /**
- * @copyright Copyright (c) 2017 https://www.sapixx.com All rights reserved.
- * @license Licensed (http://www.apache.org/licenses/LICENSE-2.0).
- * @author pillar<ltmn@qq.com>
- * 小程序公共API服务
- */
- namespace app\bestbao\controller\api\v1;
- use app\bestbao\controller\api\Base;
- use app\bestbao\model\BestbaoAsk;
- use app\bestbao\model\BestbaoAskCategory;
- use app\bestbao\model\BestbaoAskOrder;
- use app\common\facade\WechatPay;
- use util\Util;
- class Ask extends Base{
-
- /**
- * 获取问题
- **/
- public function category(){
- $data['signkey'] = $this->request->param('signkey');
- $data['sign'] = $this->request->param('sign');
- $rel = $this->apiSign($data);
- if($rel['code'] != 200){
- return enjson($rel['code'],'签名验证失败');
- }
- $rel = BestbaoAskCategory::where(['member_miniapp_id' => $this->miniapp_id])->field('title,id,picture')->order('sort desc,id desc')->select();
- if($rel->isEmpty()){
- return enjson(204);
- }else{
- return enjson(200,'成功',$rel);
- }
- }
- /**
- * 获取问题
- **/
- public function index(){
- $data['page'] = $this->request->param('page/d',1);
- $data['category_id'] = $this->request->param('category_id/d',0);
- $data['sign'] = $this->request->param('sign');
- $data['keyword'] = $this->request->param('keyword');
- $rel = $this->apiSign($data);
- if($rel['code'] != 200){
- return enjson($rel['code'],'签名验证失败');
- }
- $condition['member_miniapp_id'] = $this->miniapp_id;
- $condition['is_ad'] = 0;
- if(empty($data['keyword']) && $data['category_id'] > 0){
- $condition['category_id'] = $data['category_id'];
- }
- $rel = BestbaoAsk::where($condition)->withSearch(['title'],['title' => $data['keyword']])->field('id,ad_img,title,note')->order('is_top desc,sort desc,id desc')->paginate(10);
- if($rel->isEmpty()){
- return enjson(204);
- }else{
- return enjson(200,'成功',$rel->toArray()['data']);
- }
- }
- /**
- * 相关问题
- **/
- public function related(){
- $data['category_id'] = $this->request->param('category_id/d',0);
- $data['sign'] = $this->request->param('sign');
- $rel = $this->apiSign($data);
- if($rel['code'] != 200){
- return enjson($rel['code'],'签名验证失败');
- }
- $condition['member_miniapp_id'] = $this->miniapp_id;
- $condition['is_top'] = 0;
- $condition['is_ad'] = 0;
- $condition['category_id'] = $data['category_id'];
- $rel = BestbaoAsk::where($condition)->field('id,ad_img,title,note')->order('is_top desc,sort desc,id desc')->limit(10)->select();
- if($rel->isEmpty()){
- return enjson(204);
- }else{
- foreach ($rel as $key => $value) {
- $rel[$key]['note'] =Util::msubstr($value['note'],0,40);
- }
- return enjson(200,'成功',$rel);
- }
- }
-
- /**
- * 获取推荐的问题
- **/
- public function askAds(){
- $param['signkey'] = $this->request->param('signkey');
- $param['sign'] = $this->request->param('sign');
- $rel = $this->apiSign($param);
- if($rel['code'] != 200){
- return enjson($rel['code'],'签名验证失败');
- }
- $condition['member_miniapp_id'] = $this->miniapp_id;
- $condition['is_ad'] = 1;
- $rel = BestbaoAsk::where($condition)->order('sort desc,id desc')->limit(5)->select();
- if($rel->isEmpty()){
- return enjson(204);
- }else{
- return enjson(200,'成功',$rel);
- }
- }
- /**
- * 获取问题
- **/
- public function reView(){
- $param['id'] = $this->request->param('id/d',1);
- $param['sign'] = $this->request->param('sign');
- $rel = $this->apiSign($param);
- if($rel['code'] != 200){
- return enjson($rel['code'],'签名验证失败');
- }
- $condition['member_miniapp_id'] = $this->miniapp_id;
- $condition['id'] = $param['id'];
- $rel = BestbaoAsk::where($condition)->find();
- if(empty($rel)){
- return enjson(204);
- }else{
- $data = $rel->toArray();
- $data['update_time'] = date('m/d H:i',$data['update_time']);
- $data['create_time'] = date('m/d H:i',$data['create_time']);
- $data['content'] = str_replace('<img', '<img class="img"',dehtml($rel['content']));
- $data['answer'] = str_replace('<img', '<img class="img"',dehtml($rel['answer']));
- $data['category'] = $rel->category->title;
- $data['is_buy_ask'] = 1;
- if($this->user && $rel->price > 0){
- $data['is_buy_ask'] = BestbaoAskOrder::where(['member_miniapp_id' =>$this->miniapp_id,'ask_id' =>$rel->id,'uid'=>$this->user->id,'paid_at' => 1])->count();
- }
- return enjson(200,'成功',$data);
- }
- }
- /**
- * 点赞
- **/
- public function like(){
- $this->isUserAuth();
- $param['id'] = $this->request->param('id/d',1);
- $param['sign'] = $this->request->param('sign');
- $rel = $this->apiSign($param);
- if($rel['code'] != 200){
- return enjson($rel['code'],'签名验证失败');
- }
- $condition['member_miniapp_id'] = $this->miniapp_id;
- $condition['id'] = $param['id'];
- $rel = BestbaoAsk::where($condition)->setInc('like',1);
- if(empty($rel)){
- return enjson(204);
- }else{
- return enjson(200);
- }
- }
- /**
- * @return \think\response\Json
- * @throws \think\exception\DbException
- * 解决方案订阅
- * */
- public function doBuy(){
- $this->isUserAuth();
- $param['sign'] = $this->request->param('sign');
- $param['id'] = $this->request->param('id');
- $rel = $this->apiSign($param);
- if(!$this->user){
- return enjson(401,'请先登录');
- }
- $info = BestbaoAsk::where(['id' => $param['id']])->find();
- if(empty($info)){
- return enjson(204);
- }
- //唤醒微信支付参数
- $order_no = $this->user->invite_code.order_no(); //订单号
- $payparm = [
- 'openid' => $this->user->miniapp_uid,
- 'miniapp_id' => $this->miniapp_id,
- 'name' => '订阅知识库解决方案',
- 'order_no' => $order_no,
- 'total_fee' => 1,
- 'notify_url' => api(1,'bestbao/notify/ask',$this->miniapp_id),
- ];
- $ispay = WechatPay::orderPay($payparm);
- if ($ispay['code'] == 0) {
- return enjson(403,$ispay['msg']);
- }else{
- BestbaoAskOrder::create(['member_miniapp_id' => $this->miniapp_id,'ask_id' => $info->id,'uid' => $this->user->id,'amount' => $info->price,'order_no' => $order_no]);
- return enjson(200,'成功',$ispay['data']);
- }
- }
- }
|