123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376 |
- <?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\ais\controller\api\v1;
- use app\ais\controller\api\Base;
- use app\ais\model\AisInfoCate;
- use app\ais\model\AisInfo;
- use app\ais\model\AisInfoReply;
- use app\ais\model\AisInfoFollow;
- use app\ais\model\AisConfig;
- use app\ais\model\AisInfoMp;
- use app\ais\model\MchId;
- use app\common\facade\WechatPay;
- use app\common\facade\Upload;
- use app\common\model\SystemUser;
- use app\common\model\SystemMemberSms;
- use think\facade\Config;
- use filter\Filter;
- class Infosend extends Base{
- /**
- * 初始化当前应用是否登录
- * @return void
- */
- public function initialize() {
- parent::initialize();
- $this->isUserAuth();
- }
- /**
- * 判断是否注册城市号
- */
- public function isMp(){
- $rel = AisInfoMp::where(['uid' => $this->user->id])->count();
- if($rel){
- return enjson(200);
- }
- return enjson(204);
- }
-
- /**
- * 判断是否注册城市号
- */
- public function getThemes(){
- $rel = AisInfoCate::where(['member_miniapp_id' => $this->member_miniapp_id])->field('id,name')->select();
- return enjson(200,$rel);
- }
- /**
- * 读取微信API
- * @param integer 读取ID
- * @return json
- */
- public function getTpl(){
- $param['id'] = $this->request->param('id/d',0);
- $this->apiSign($param);
- $rel = AisInfoCate::cateTpl($param['id']);
- return enjson(200,'成功',$rel);
- }
- /**
- * 城市号信息
- */
- public function getMp(){
- $param['uid'] = $this->request->param('uid/d',0);
- $this->apiSign($param);
- $where = [];
- $where['uid'] = $param['uid'];
- $rel = AisInfoMp::where($where)->find();
- if($rel){
- if($rel->is_lock){
- return enjson(403,'城市号不存在');
- }
- $rel->views = AisInfo::where(['uid' => $rel->uid])->count();
- $rel->like = AisInfoFollow::where(['uid' => $rel->uid])->count();
- $rel->is_follow = 0;
- $rel->vip_time = empty($rel->vip_time)?'0':date('Y-m-d',$rel->vip_time);
- $rel->reg_time = empty($rel->reg_time)?'0':date('Y-m-d',$rel->reg_time);
- if($this->user){
- $rel->is_follow = AisInfoFollow::where(['uid' => $this->user->id,'like_uid'=>$rel->uid])->count();
- }
- return enjson(200,'成功',$rel);
- }
- return enjson(204);
- }
- /**
- * 编辑开通城市号和申请认证城市号
- *
- * @return void
- */
- public function editMp(){
- $param['logo'] = $this->request->param('logo/s');
- $param['skin'] = $this->request->param('skin/s');
- $param['title'] = $this->request->param('title/s');
- $param['note'] = $this->request->param('note/s');
- $param['telphone'] = $this->request->param('telphone/s');
- $param['vip_title'] = $this->request->param('vip_title/s','');
- $param['vip_about'] = $this->request->param('vip_about/s','');
- $param['checked'] = $this->request->param('checked/d',0);
- $this->apiSign($param);
- $data['title'] = $param['title'];
- $data['note'] = $param['note'];
- $rel = AisInfoMp::where(['uid' => $this->user->id])->find();
- if($rel){
- if($rel->is_lock){
- return enjson(403,'城市号已被锁定');
- }
- //判断是否修改skin
- if(!empty($param['skin'])){
- $rel->skin = $param['skin'];
- }
- //判断是否修改logo
- if(!empty($param['logo'])){
- $rel->logo = $param['logo'];
- }
- if(!$rel->is_apply && !$rel->is_vip){
- $rel->is_apply = $param['checked'] ? 1 : 0;
- $rel->vip_title = $param['vip_title'];
- $rel->vip_about = $param['vip_about'];
- }
- $result = $rel->save();
- }else{
- $data['member_miniapp_id'] = $this->miniapp_id;
- $data['uid'] = $this->user->id;
- $data['is_apply'] = $param['checked'] ? 1 : 0;
- $data['is_vip'] = 0;
- $data['vip_title'] = $param['vip_title'];
- $data['vip_about'] = $param['vip_about'];
- $data['reg_time'] = time();
- $data['vip_time'] = time();
- $data['fans'] = AisInfoFollow::where(['uid' => $this->user->id])->count();
- $data['logo'] = empty($param['logo']) ? $this->user->face: $param['logo'];
- $data['skin'] = empty($param['skin']) ? Config::get('upload.upload_relative').'static/ais/skin/2.jpg':$param['skin'];
- $result = AisInfoMp::create($data);
- }
- if($result){
- return enjson(200,'城市号设置成功');
- }
- return enjson(403,'设置失败');
- }
- /**
- * VIP认证
- */
- public function vipAuth(){
- if(request()->isPost()){
- $rel = AisInfoMp::where(['uid' => $this->user->id,'is_lock' => 0,'is_vip' => 1])->count();
- if($rel){
- return enjson(200,'认证用户',['vip'=>1]);
- }
- }
- return enjson(200,'非认证用户',['vip'=>0]);
- }
- /**
- * 商城图片
- */
- public function upImg(){
- if(request()->isPost()){
- $rel = Upload::index();
- if($rel['error'] == 0){
- return enjson(200,'success',$rel['url']);
- }else{
- return enjson(204);
- }
- }
- }
-
- /**
- * 发表信息
- */
- public function send(){
- if(request()->isPost()){
- $param = [
- 'content' => $this->request->param('content/s'),
- 'telphone' => $this->request->param('telphone/s',''),
- 'topday' => $this->request->param('topday/d',0),
- 'cate_id' => $this->request->param('cate_id/d',0),
- 'store_id' => $this->request->param('store_id/d',0),
- 'imgs' => $this->request->param('imgs/s','[]','htmlspecialchars_decode'),
- 'fields' => $this->request->param('fields/s','[]','htmlspecialchars_decode'),
- 'is_get' => $this->request->param('is_get/d',0),
- 'price' => $this->request->param('price/d'),
- ];
- $this->apiSign($param);
- $param['member_miniapp_id'] = $this->miniapp_id;
- $param['uid'] = $this->user->id;
- $validate = $this->validate($param,'Info.sendInfo');
- if(true !== $validate){
- return json(['code'=>403,'msg'=>$validate]);
- }
- $param['images'] = json_encode(Filter::filter_escape(json_decode($param['imgs'],true)));
- $param['fields'] = json_encode(Filter::filter_escape(json_decode($param['fields'],true)));
- //置顶
- $amount = 0;
- $config = AisConfig::getConfig($this->miniapp_id);
- if($param['topday'] && !empty($config)){
- $topday = json_decode($config->info,true);
- foreach ($topday as $value) {
- if($value['day'] == $param['topday']){
- $amount = $value['money'];
- $param['topday'] = $value['day'];
- }
- }
- }
- $param['top_money'] = $amount; //置顶金额
- $param['order_no'] = order_no($this->user->invite_code);
- $result = AisInfo::postThemes($param);
- if($result){
- if($amount > 0){
- $order = [
- 'openid' => $this->user['miniapp_uid'],
- 'miniapp_id' => $this->miniapp_id,
- 'name' => '信息置顶',
- 'order_no' => $param['order_no'],
- 'total_fee' => $amount,
- 'notify_url' => api(1,'ais/notify/infoSend',$this->miniapp_id)
- ];
- if($this->member_miniapp->is_psp){
- $setting = AisConfig::getConfig($this->miniapp_id);
- if (empty($setting->mchid)) {
- return enjson(403,'服务商模式下,必须配置默认商户号');
- }
- $order['mchid'] = $setting->mchid;
- }
- $ispay = WechatPay::orderPay($order);;
- if($ispay['code'] == 0){
- return enjson(403,$ispay['msg']);
- }
- return enjson(200,'发布成功',$ispay['data']);
- }
- return enjson(204,'发布成功');
- }else{
- return enjson(403,'发布失败');
- }
- }
- }
-
- /**
- * 发布评论
- */
- public function postReply(){
- if(request()->isPost()){
- $param = [
- 'content' => $this->request->param('content/s'),
- 'info_id' => $this->request->param('info_id/d'),
- 'sign' => $this->request->param('sign/s',0),
- ];
- $this->apiSign($param);
- $data = [
- 'content' => $param['content'],
- 'info_id' => $param['info_id'],
- 'uid' => $this->user->id,
- 'member_miniapp_id' => $this->miniapp_id,
- ];
- $validate = $this->validate($data,'Info.sendReply');
- if(true !== $validate){
- return enjson(403,$validate);
- }
- $result = AisInfoReply::postReply($data);
- if($result){
- AisInfo::where(['id' => $param['info_id']])->setInc('reply_num',1);
- return enjson(200,'评论成功');
- }else{
- return enjson(403,'评论失败');
- }
- }
- }
- /**
- * 点赞
- **/
- public function like(){
- $param['id'] = $this->request->param('id/d',0);
- $param['sign'] = $this->request->param('sign');
- $this->apiSign($param);
- $condition['member_miniapp_id'] = $this->miniapp_id;
- $condition['id'] = $param['id'];
- $rel = AisInfo::where($condition)->find();
- $like_face = json_decode(empty($rel->like_face) ? '[]':$rel->like_face,true);
- if(count($like_face) < 10){
- if(!in_array($this->user->face,$like_face)){
- array_push($like_face,$this->user->face);
- $rel->like_face = json_encode($like_face);
- }
- }
- $rel->like = ['inc',1];
- $rel->save();
- if(empty($rel)){
- return enjson(403,'不用重复点赞');
- }else{
- return enjson(200);
- }
- }
- /**
- * 评论点赞
- * @return void
- */
- public function replylike(){
- $param['id'] = $this->request->param('id/d',0);
- $param['sign'] = $this->request->param('sign');
- $this->apiSign($param);
- $condition['member_miniapp_id'] = $this->miniapp_id;
- $condition['id'] = $param['id'];
- $rel = AisInfoReply::where($condition)->setInc('like',1);
- if(empty($rel)){
- return enjson(403,'不用重复点赞');
- }else{
- return enjson(200);
- }
- }
- /**
- * 关注或取消
- */
- public function follow(){
- $param['uid'] = $this->request->param('uid/d');
- $param['state'] = $this->request->param('state/d',0);
- $param['sign'] = $this->request->param('sign');
- $this->apiSign($param);
- if($param['uid'] == $this->user->id){
- return enjson(403,'不用关注自己');
- }
- //判断关注用户是否存在
- $is_user = SystemUser::where(['id' => $param['uid'],'is_lock' => 0,'is_delete' => 0])->find();
- if(empty($is_user)){
- return enjson(403,'当前用户已被封号');
- }
- //关注
- $condition['like_uid'] = $param['uid'];
- $condition['uid'] = $this->user->id;
- $info = AisInfoFollow::where($condition)->find();
- if(empty($info)){
- $follow = AisInfoFollow::where(['uid' => $this->user->id,'like_uid' => 0])->find();
- if($param['state'] == 1){
- if(empty($follow)){
- $rel = AisInfoFollow::create(['uid' => $this->user->id,'like_uid' => $param['uid']]);
- }else{
- $follow->like_uid = $param['uid'];
- $rel = $follow->save();
- }
- }else{
- return enjson(403,'关注失败');
- }
- }else{
- if($param['state'] == 0){
- $info->like_uid = 0;
- $rel = $info->save();
- }
- }
- if(empty($rel)){
- return enjson(403,'关注失败');
- }else{
- //增加粉丝
- $infomp = AisInfoMp::where(['uid' => $param['uid']])->find();
- if($infomp){
- if($param['state']){
- $infomp->fans = ['inc',1];
- }else{
- $infomp->fans = ['dec',1];
- }
- $infomp->save();
- }
- return enjson(200,$param['state']?'已关注':'取消关注');
- }
- }
- }
|