123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403 |
- <?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\citys\controller\api\v1;
- use app\citys\controller\api\Base;
- use app\citys\model\CitysCate;
- use app\citys\model\CitysType;
- use app\citys\model\Citys;
- use app\citys\model\CitysReply;
- use app\citys\model\CitysConfig;
- use app\citys\model\CitysFollow;
- use app\citys\model\CitysMp;
- use app\citys\model\MchId;
- use app\common\facade\WechatPay;
- use app\common\facade\Upload;
- use app\common\model\SystemUser;
- use think\facade\Config;
- use filter\Filter;
- class Send extends Base{
- public function initialize() {
- parent::initialize();
- $this->isUserAuth();
- }
- /**
- * 获取配置参数
- * @return void
- */
- public function getconfig(){
- $this->apiSign();
- $result = CitysConfig::config($this->member_miniapp_id);
- if(empty($result)){
- return enjson(204);
- }else{
- return enjson(200,$result->top);
- }
- }
-
- /**
- * VIP认证
- */
- public function isVip(){
- if(request()->isPost()){
- $rel = CitysMp::where(['uid' => $this->user->id,'is_lock' => 0,'is_vip' => 1])->count();
- if($rel){
- return enjson(200,'认证用户',['vip'=>1]);
- }
- }
- return enjson(200,'非认证用户',['vip'=>0]);
- }
- /**
- * 编辑开通城市号和申请认证城市号
- *
- * @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 = CitysMp::where(['uid' => $this->user->id])->find();
- if($rel){
- if($rel->is_lock){
- return enjson(403,'帐号已被锁定');
- }
- //判断是否修改skin
- $rel->note = $param['note'];
- $rel->title = $param['title'];
- //判断是否修改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();
- if($result){
- return enjson(200,'信息设置成功');
- }
- }else{
- $data['member_miniapp_id'] = $this->member_miniapp_id;
- $data['uid'] = $this->user->id;
- $data['is_apply'] = $param['checked'] ? 1 : 0;
- $data['vip_title'] = $param['vip_title'];
- $data['vip_about'] = $param['vip_about'];
- $data['reg_time'] = time();
- $data['vip_time'] = time();
- $data['fans'] = CitysFollow::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/citys/skin/2.jpg':$param['skin'];
- $data['is_vip'] = 0;
- $result = CitysMp::create($data);
- if($result){
- return enjson(200,'帐号开通成功');
- }
- }
- return enjson(403,'设置失败');
- }
- /**
- * 发表信息
- */
- 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),
- 'type_id' => $this->request->param('type_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'),
- 'sign' => $this->request->param('sign/s',0),
- ];
- $this->apiSign($param);
- $param['member_miniapp_id'] = $this->miniapp_id;
- $param['uid'] = $this->user->id;
- $validate = $this->validate($param,'Info.send');
- if(true !== $validate){
- return json(['code'=>403,'msg'=>$validate]);
- }
- $param['imgs'] = array_column(Filter::filter_escape(json_decode($param['imgs'],true)),'url');
- $param['fields'] = Filter::filter_escape(json_decode($param['fields'],true));
- //置顶
- $amount = 0;
- $config = CitysConfig::config($this->miniapp_id);
- if($param['topday'] && !empty($config)){
- foreach ($config->top as $value) {
- if($value['day'] == $param['topday']){
- $amount = $value['money'];
- $param['topday'] = $value['day'];
- }
- }
- }
- $param['top_money'] = $amount; //置顶金额
- $param['order_no'] = $this->user->invite_code.order_no();
- $rel = CitysType::where(['member_miniapp_id' => $this->member_miniapp_id,'id' => $param['type_id']])->find();
- $cate = CitysCate::where(['member_miniapp_id' => $this->member_miniapp_id,'id' => $param['cate_id']])->find();
- $price = $rel->price+$cate->price; //发布价格
- $param['send_price'] = $price;
- $param['is_lock'] = $price > 0 ? 1 : 0;
- $result = Citys::postThemes($param);
- if($result){
- if($price> 0 && $amount > 0){
- $msg = '信息发布与推广费';
- }elseif($price > 0 && $amount = 0){
- $msg = '信息发布费';
- }else{
- $msg = '信息推广费';
- }
- $amount = $amount+$price;
- if($amount > 0){
- $order = [
- 'openid' => $this->user['miniapp_uid'],
- 'miniapp_id' => $this->miniapp_id,
- 'name' => '信息置顶',
- 'order_no' => $param['order_no'],
- 'total_fee' => $amount*100,
- 'notify_url' => api(1,'citys/notify/index',$this->miniapp_id)
- ];
- //读取配置
- if($this->member_miniapp->is_psp){
- if (empty($config->mch_id)) {
- return enjson(403,'服务商模式下,必须配置默认商户号');
- }
- $order['mchid'] = $config->mch_id;
- }
- $ispay = WechatPay::orderPay($order);;
- if($ispay['code'] == 0){
- return json(['code'=>403,'msg'=>$ispay['msg']]);
- }
- return enjson(200,'发布成功,内容需审核!',$ispay['data']);
- }else{
- return enjson(204,'发布成功,内容需审核!');
- }
- }else{
- return enjson(403,'发布失败');
- }
- }
- }
-
- /**
- * 点赞
- **/
- public function onLike(){
- $param['id'] = $this->request->param('id/d',0);
- $this->apiSign($param);
- $condition['member_miniapp_id'] = $this->miniapp_id;
- $condition['id'] = $param['id'];
- $rel = Citys::where($condition)->find();
- $like_face = empty($rel->like_face) ? [] : $rel->like_face;
- if(count($like_face) < 10){
- if(!in_array($this->user->face,$like_face)){
- array_push($like_face,$this->user->face);
- $rel->like_face = $like_face;
- }
- }
- $rel->like = ['inc',rand(10,200)];
- $rel->save();
- if(empty($rel)){
- return enjson(403,'不用重复点赞');
- }else{
- return enjson(200);
- }
- }
- /**
- * 可以已关闭当前信息
- **/
- public function onClose(){
- $param['id'] = $this->request->param('id/d',0);
- $this->apiSign($param);
- $condition['id'] = $param['id'];
- $condition['uid'] = $this->user->id;
- $rel = Citys::where($condition)->find();
- if(empty($rel)){
- return enjson(403,'未找到你的信息');
- }else{
- $rel->is_end = 1;
- $rel->save();
- return enjson(200);
- }
- }
- /**
- * 信息单独置顶
- */
- public function onTop(){
- $param['id'] = $this->request->param('id/d',0);
- $param['day'] = $this->request->param('day/d',0);
- $this->apiSign($param);
- $condition['id'] = $param['id'];
- $condition['uid'] = $this->user->id;
- $rel = Citys::where($condition)->find();
- if(empty($rel)){
- return enjson(403,'未找到你的信息');
- }else{
- //置顶
- $amount = 0;
- $config = CitysConfig::config($this->miniapp_id);
- foreach ($config->top as $value) {
- if($value['day'] == $param['day']){
- $amount = $value['money'];
- $topday = $value['day'];
- }
- }
- if($amount > 0){
- $rel->topday = $topday;
- $rel->top_money = $amount;
- $rel->order_no = order_no($this->user->invite_code);
- $rel->save();
- $order = [
- 'openid' => $this->user->miniapp_uid,
- 'miniapp_id' => $this->miniapp_id,
- 'name' => '信息置顶',
- 'order_no' => $rel->order_no ,
- 'total_fee' => $amount,
- 'notify_url' => api(1,'citys/notify/index',$this->miniapp_id)
- ];
- //读取配置
- if($this->member_miniapp->is_psp){
- if (empty($config->mch_id)) {
- return enjson(403,'服务商模式下,必须配置默认商户号');
- }
- $order['mchid'] = $config->mch_id;
- }
- $ispay = WechatPay::orderPay($order);;
- if($ispay['code'] == 0){
- return json(['code'=>403,'msg'=>$ispay['msg']]);
- }
- return enjson(200,$ispay['data']);
- }else{
- return enjson(403,'信息置顶异常');
- }
- }
- }
- /**
- * 关注或取消
- */
- public function onFollow(){
- $param['uid'] = $this->request->param('uid/d');
- $param['state'] = $this->request->param('state/d',0);
- $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 = CitysFollow::where($condition)->find();
- if(empty($info)){
- $follow = CitysFollow::where(['uid' => $this->user->id,'like_uid' => 0])->find();
- if($param['state'] == 1){
- if(empty($follow)){
- $rel = CitysFollow::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 = CitysMp::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']?'已关注':'取消关注');
- }
- }
- /**
- * 发布评论
- */
- public function postReply(){
- if(request()->isPost()){
- $param['content'] = $this->request->param('content/s');
- $param['id'] = $this->request->param('id/s');
- $this->apiSign($param);
- $data = [
- 'content' => $param['content'],
- 'info_id' => $param['id'],
- 'uid' => $this->user->id,
- 'member_miniapp_id' => $this->member_miniapp_id,
- ];
- $validate = $this->validate($data,'Info.sendReply');
- if(true !== $validate){
- return enjson(403,$validate);
- }
- $result = CitysReply::postReply($data);
- if($result){
- $result->info->reply_num = ['inc',1];
- $result->info->save();
- return enjson(200,'评论成功');
- }else{
- return enjson(403,'评论失败');
- }
- }
- }
- /**
- * 评论点赞
- * @return void
- */
- public function onReplylike(){
- $param['id'] = $this->request->param('id/d',0);
- $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 = CitysReply::where($condition)->setInc('like',1);
- if(empty($rel)){
- return enjson(403,'不用重复点赞');
- }else{
- return enjson(200);
- }
- }
- }
|