* 小程序公共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']?'已关注':'取消关注'); } } }