活动报名系统api 开发及数据同步

概要

项目是关于展会、活动报名数据提交,并同步到多端。

本文主要是后端实现,没有前端。

整体业务流程

技术细节

用到的技术或框架:

  • 项目环境:php、redis、mysql
  • 接收参数的框架:fastadmin
  • 报名页面的框架:wxycms

报名数据入库 :

报名数据的逻辑:

查重、生成二维码、生成链接、插入 redis、插入 mysql、推送远端

    /*
    *    普通预登记----接收用户(中文)基本信息表单数据
    */
     public function formdata_basic(){
        header("Access-Control-Allow-Origin:*");
        $db = D('mjjz52_basic');
		if(isset($_POST)){
		    $data = $_POST;
    		// 避免重复提交
    		$data = $this->redis()->get($data['phone']);
    		if($data) return_json(array('status' => 2,'error' => '已成功提交数据,请勿重复操作','qrcode'=>$data));

    		$data['inputtime'] = SYS_TIME;
    		$data['qrcode'] = repeatGetQrcode();  //获取二维码
            $data['mysrc'] = 'https://mjjz.gde3f.com/html/M52/dist/#/completeregister?code='.$data['qrcode'];
    		
    		// 插入 redis 数据库
    		$s = $this->redis()->set($data['phone'],json_encode($data));
            if($s){
        		// 插入 mysql 数据库
            	$user_id = $db->insert($data);	
            	if($user_id){
            	    // 登记成功后,推送总库
            	   // $res = $zhanchuang->pushuser($user_id);
            	   $this->push2origin($data);
            	   return_json(array('status' => 1,'userid' => $user_id,'qrcode'=>$_POST['qrcode']));
            	}
            }else{
                return_json(array('status' => 2,'error' => '提交失败'));
            }
		}

    }

推送远端的方法

    // 推送报名数据到总库
    public function push2origin($send_data){
        $url = "https://3f.gde.cc/api/dengji/receive52";
        $res = curlPost($url,json_encode($send_data));
        // print_r($res);exit;
        return $res;
    }

redis 与 mysql 读一条数据的接口压测对比

对比方法:

// 通过 redis 查找手机号码
    public function ceshi1(){
         $data = $this->redis()->get($_GET['phone']);
         print_r($data);   
    }

// 通过 mysql 查找手机号码    
    public function ceshi2(){
		$data = D('mjjz52_basic')->where(array('phone' => $_GET['phone']))->find();  
		print_r($data);
    }

这还是读取一次数据库的性能差别,你想想多次读写,那区别就大了。

总库接收数据的方法:

    /**
     * 接 52 届中文登记数据
     *
     */
    public function receive52()
    {
        $val = $this->request->post();
        // print_r($val);exit;
        if(!$val) $this->error('参数呢老铁');
        $table = 'fa_miniform_mingjiaju52jieguanzhongdengji';
         // todo数据处理
        $insert = [
                'name' => $val['uname'],
                'qrcode' => $val['qrcode'],
                'lang' => $val['lang'],
                'position' => $val['position'],
                'company' => $val['company'],
                'mobile' => $val['phone'],
                'idcard' => $val['idcards'],
                'fork' => 'aliyun',
                'createtime' => time(),
                // 'origin_uid' => $val['id'],
                'original_data' => json_encode($val,JSON_UNESCAPED_UNICODE),
            ];
        // 保存到本地库
        $save = Db::table($table)->insert($insert);
        if($save){
            $this->success('get✓');
        }else{
            $this->error('发生了不可描述的错误');
        }
    }
    

小结

到此就完成了报名数据 API 的开发、数据的同步,通过 redis 的引用,并满足了一定量的并发需求。

  • 15
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值