Info.php 6.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177
  1. <?php
  2. /**
  3. * @copyright Copyright (c) 2017 https://www.sapixx.com All rights reserved.
  4. * @license Licensed (http://www.apache.org/licenses/LICENSE-2.0).
  5. * @author pillar<ltmn@qq.com>
  6. * 小程序公共API服务
  7. */
  8. namespace app\citys\controller\api\v1;
  9. use app\citys\controller\api\Base;
  10. use app\citys\model\Citys;
  11. use app\citys\model\CitysReply;
  12. use app\citys\model\CitysFollow;
  13. use app\citys\model\CitysMp;
  14. use app\citys\model\CitysCate;
  15. use app\common\model\SystemUser;
  16. use think\facade\Config;
  17. use util\Util;
  18. class Info extends Base{
  19. /**
  20. * 获取单个信息
  21. * @param integer 读取ID
  22. * @return json
  23. */
  24. public function getview(int $id){
  25. $param['id'] = $id;
  26. $this->apiSign($param);
  27. $user = $this->user;
  28. $rel = Citys::with([
  29. 'user' => function($query) {
  30. $query->field('id,nickname,face');
  31. },
  32. 'cate' => function($query) {
  33. $query->field('id,tpl_id,price,title');
  34. },
  35. 'types' => function($query) {
  36. $query->field('id,title,price,endtips');
  37. },
  38. 'mp' => function($query) {
  39. $query->field('id,uid,logo,title,is_vip');
  40. },
  41. 'showphone' => function($query) use($user){
  42. $query->field('paid_at,info_id')->where(['uid' => $user->id ?? 0,'paid_at' => 1]);
  43. }
  44. ])->where(['id'=> $id])->find();
  45. if(empty($rel)){
  46. return enjson(404);
  47. }
  48. $rel->views = $rel->views+rand(10,200);
  49. $rel->save();
  50. //模板信息
  51. if(empty($rel->cate->tpl)){
  52. $rel->button_name = '立即下单';
  53. $rel->tips = '任何有用户发布,下单后请电话再次确认';
  54. $rel->is_shop = 0;
  55. $rel->users = [];
  56. }else{
  57. $rel->button_name = $rel->cate->tpl->button_name;
  58. $rel->tips = $rel->cate->tpl->tips;
  59. $rel->is_shop = $rel->cate->tpl->is_shop;
  60. $rel->users = json_decode($rel->cate->tpl->users,true);
  61. }
  62. $rel->fields = $rel->fields;
  63. $rel->create_time = Util::ftime($rel->create_time);
  64. $rel->is_mp = empty($rel->mp)?0:1;
  65. //是否点赞
  66. $rel->is_like = 0;
  67. $rel->like_face = $rel->like_face;
  68. //判断是否被关注
  69. $rel->is_follow = !empty($rel->follow) && !empty($this->user) && $rel->follow->uid = $this->user->id ? 1:0;
  70. $rel->showphone = empty($rel->showphone) ? 0 : 1;
  71. return enjson(200,'成功',$rel);
  72. }
  73. /**
  74. * 获取信息评论
  75. * @param integer 读取ID
  76. * @return json
  77. */
  78. public function reply(){
  79. $param['page'] = $this->request->param('page/d');
  80. $param['id'] = $this->request->param('id/d');
  81. $this->apiSign($param);
  82. $where['info_id'] = $param['id'];
  83. $where['state'] = 0;
  84. $rel = CitysReply::with([
  85. 'user' => function($query) {
  86. $query->field('id,nickname,face');
  87. },
  88. ])->where($where)->order('id desc')->paginate(10);
  89. $data = $rel->toArray()['data'];
  90. array_walk($data,function(&$item,$key){
  91. $item['is_like'] = 0;
  92. });
  93. if(empty($data)){
  94. return enjson(204);
  95. }else{
  96. return enjson(200,'成功',$data);
  97. }
  98. }
  99. /**
  100. * 读取城市号信息
  101. */
  102. public function mp(){
  103. $param['uid'] = $this->request->param('uid/d',0);
  104. $param['mid'] = $this->request->param('mid/d',0);
  105. $this->apiSign($param);
  106. $where = [];
  107. if($param['mid']){
  108. $where['id'] = $param['mid'];
  109. }else{
  110. $where['uid'] = $param['uid'];
  111. }
  112. $rel = CitysMp::where($where)->find();
  113. if($rel){
  114. $rel->views = Citys::where(['uid' => $rel->uid])->count();
  115. $rel->like = CitysFollow::where(['uid' => $rel->uid])->count();
  116. $rel->is_follow = 0;
  117. $rel->vip_time = empty($rel->vip_time)?'0':date('Y-m-d',$rel->vip_time);
  118. $rel->reg_time = empty($rel->reg_time)?'0':date('Y-m-d',$rel->reg_time);
  119. $rel->is_reg = 1;
  120. if($this->user){
  121. $rel->is_follow = CitysFollow::where(['uid' => $this->user->id,'like_uid'=>$rel->uid])->count();
  122. }
  123. }else{
  124. if($param['uid']){
  125. $user = SystemUser::where(['id' => $param['uid']])->find();
  126. if(empty($user)){
  127. return enjson(404,'用户被锁定或未找到');
  128. }
  129. $rel['logo'] = $user->face;
  130. $rel['title'] = $user->nickname;
  131. $rel['note'] = '未开通城市号';
  132. $rel['views'] = Citys::where(['uid' => $param['uid']])->count();
  133. $rel['like'] = CitysFollow::where(['uid' => $param['uid']])->count();
  134. $rel['fans'] = 0;
  135. $rel['is_follow'] = 0;
  136. $rel['is_apply'] = 0;
  137. $rel['reg_time'] = 0;
  138. $rel['is_vip'] = 0;
  139. $rel['vip_time'] = 0;
  140. $rel['vip_title'] = '未认证';
  141. $rel['vip_about'] = '未开通城市号';
  142. $rel['is_reg'] = 0;
  143. $rel['skin'] = Config::get('upload.upload_relative').'static/citys/skin/2.jpg';
  144. }
  145. }
  146. return enjson(200,$rel);
  147. }
  148. /**
  149. * 读取城市号的信息
  150. * @param integer 读取ID
  151. * @return json
  152. */
  153. public function me(){
  154. $this->isUserAuth();
  155. $param['page'] = $this->request->param('page/d',1);
  156. $param['uid'] = $this->request->param('uid/d',0);
  157. $param['mid'] = $this->request->param('mid/d',0);
  158. $this->apiSign($param);
  159. $where = [];
  160. $where['member_miniapp_id'] = $this->miniapp_id;
  161. if($param['uid'] > 0){
  162. if($param['uid'] ==$this->user->id){
  163. $where['uid'] = $this->user->id;
  164. }else{
  165. $where['uid'] = $param['uid'];
  166. $where['is_lock'] = 0;
  167. }
  168. }
  169. $data = Citys::apiLists($where,"is_top desc,id desc",$this->user);
  170. return enjson(empty($data)?204:200,$data);
  171. }
  172. }