葡京签到送彩金每天登录实现

1
年终总结过后,工作上了默认的真空期,同事们还心领神会,享受在就卖宁静。

Html手机端上贯彻每天登录的效用,感谢GitHub上的立有限各的贡献 ( ^ _ ^
)
签到
https://github.com/zhicaizhu123/qiandao
日历
https://github.com/rxhluck/signDate

自也乐的消,从报的微课上折腾到了简书。想方搅扰一下干燥的活着,不经意间发现了别一样切片园地。

齐图镇楼:

自,如果说段子日子啦一样码东西会受人天特别的变迁,除了发自内心的倒车,其他的还是瞎扯。到了定的春秋,口便见面固步自封,大多数人口给封印在低端之羁押不显现底角里,再没腾的雄心壮志。

签证到页面.png

自家就算于这种不直先衰的气氛里,沉默了季年,明年凡第五年。

日历界面.png

2
写的几页小儿科的亲笔,也大多不见面超越小学生的做水平,阅读量也非会见越两员数。就如此啊都绞尽脑汁,枉费了一番心血。似乎文字与本人无缘,道路愈走越小了。

1.思路

签证到—中第一是为此swiper贯彻内外滑动切换
日历—中重大是测算了连制造table的当月日历,还会左右切换

妻天生女儿性格,快人快语,总是能被我一头棒喝:汝当然就是没立在过高处,哪有什么失落可说?说的为是,所谓的失意,不过是老式的自作多情而已。

2.html界面

    <div class="swiper-container">
        <div class="swiper-wrapper">
            <div class="swiper-slide">
                <div class="qiandao">
                    <div class="qiandao-content">
                        <div class="qiandao-icon">
                            <div class="hangxian">

                            </div>
                            <div class="icon-circle">
                                <img class="icon-avatar" src="{{$user->avatar}}">
                            </div>
                            <div class="hangxian">

                            </div>
                        </div>
                        <div class="qiandao-text">
                            <p>{{$user->name}}</p>
                        </div>
                        <div class="qiandao-btn">
                            @if($countSigns == 0)
                                <a href="javascript:;" class="qd-btn">点击签到</a>
                            @else
                                <a href="javascript:;" class="qd-btn disabled">已签到</a>
                            @endif

                            <div class="hasqiandao">
                                签到成功

                            </div>
                        </div>
                    </div>
                    <div class="qiandao-desc">
                        <p>每个好习惯都始于点滴积累</p>
                        <p>加入党员之家,蜕变更好的自己。</p>
                    </div>
                    <div class="qiandao-info">
                        <ul>
                            <li class="time continue">
                                <em>{{$f_countsign}}</em>天
                                连续签到
                            </li>
                            <li class="time sum">
                                <em>{{$countMonth}}</em>天
                                当月签到
                            </li>
                            <li class="time read">
                                <em>{{$countYear}}</em>天
                                共计签到
                            </li>
                        </ul>
                    </div>
                </div>
            </div>
            <div class="swiper-slide">
                <div class="qiandao">
                    <div class="qiandao-detail qiandao-content">
                        <div class="qiandao-icon">
                            <div class="hangxian">

                            </div>
                            <div class="icon-circle">
                                <img class="icon-avatar" src="{{$user->avatar}}">
                            </div>
                            <div class="hangxian">

                            </div>
                        </div>
                        <div class="qiandao-text">
                            <p>{{$user->name}}</p>
                        </div>
                        <div class="qiandao-btn">
                            @if($countSigns == 0)
                                <a href="javascript:;" class="qd-btn">点击签到</a>
                            @else
                                <a href="javascript:;" class="qd-btn disabled">已签到</a>
                            @endif
                            <div class="hasqiandao">
                                签到成功

                            </div>
                        </div>
                    </div>
                    <div class="qiandao-calendar">
                        <div id="signDate">
                            <div class="monthAndyear">



                            </div>
                            <table></table>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>

    <div class="jiantou"></div>
    <div class="jiantou2"></div>

    <link rel="stylesheet" href="{{url('packages/common/Swiper-3.3.1/css/swiper.min.css')}}">
    <link rel="stylesheet" href="{{url('packages/common/signDate/css/signDate.css')}}"/>
    <link rel="stylesheet" href="{{url('/packages/common/iosOverlay/css/iosOverlay.css')}}">

    <script src="{{url('packages/common/signDate/js/Calendar.js')}}"></script>
    <script src="{{url('packages/common/Swiper-3.3.1/js/swiper.min.js')}}"></script>
    <script src="packages/common/iosOverlay/js/iosOverlay.js"></script>

如此想着,心态甚至平和了多。身边总同事的饶舌,也能泰然处的了。这管停歇的抱怨已然持续这样多年,并无是坐我要是自,也无需为自若终。

3.Js实现

要是签到点击,历史签到收获,日历切换3有些

 $(function () {

            var isSwiper = true;

            var calendar = new DuCalendar('signDate');
            calendar.init();

            $.ajaxSetup({
                headers: {
                    'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
                }
            });

            $(".qiandao-btn").on("click", ".qd-btn", function (e) {
                e.preventDefault();
                if (!$(".qd-btn").hasClass("disabled")) {

                    $.ajax({
                        method: "POST",
                        url: "/sign_in",
                        dataType: "json",
                        success: function (data) {

                            if (data.success) {
                                $(".continue > span > em").html(parseInt($(".continue > span > em").html()) + 1);
                                $(".sum > span > em").html(parseInt($(".sum > span > em").html()) + 1);
                                $(".read > span > em").html(parseInt($(".read > span > em").html()) + 1);


                                $(".qd-btn").addClass("disabled").html("已签到");

                                var tip = $(".qd-btn").parent().find(".hasqiandao");
                                tip.addClass("active");
                                var timeout = setTimeout(function () {
                                    tip.removeClass("active");
                                }, 2000);
                            } else {
                                alert(data.msg);
                            }
                        },
                        error: function (xhr, type) {
                            alert("未连接到服务器");
                        }
                    });
                } else {
                    return;
                }
            });

            var myswiper = new Swiper('.swiper-container', {
                direction: 'vertical',
                height: window.innerHeight,
                onSlideChangeEnd: function (swiper) {
                    if (swiper.isEnd) {
                        $(".jiantou").hide();
                        $(".jiantou2").show();

                        if (isSwiper) {
                            var overlay = iosOverlay({
                                text: "Loading",
                                duration: 20e3,
                                icon: "/packages/common/iosOverlay/img/load.gif"
                            });

                            $.ajax({
                                method: "POST",
                                data: {month: calendar.month},
                                url: "/sign_calendar",
                                dataType: "json",
                                success: function (data) {

                                    if (data.success) {
                                        var signs = data.data;
                                        var ids = "#day_8888";
                                        for (var i = 0; i < signs.length; i++) {
                                            var date = new Date(signs[i].created_at);
                                            ids = ids + " ,#day_" + date.getDate();
                                        }
                                        $(ids).remove("today");
                                        $(ids).addClass("today");

                                        overlay.update({
                                            icon: "/packages/common/iosOverlay/img/check.png",
                                            text: data.msg
                                        });
                                        isSwiper = false;

                                    } else {
                                        overlay.update({
                                            icon: "/packages/common/iosOverlay/img/cross.png",
                                            text: data.msg
                                        });
                                    }
                                },
                                error: function (xhr, type) {
                                    overlay.update({
                                        icon: "/packages/common/iosOverlay/img/cross.png",
                                        text: "服务器连接错误"
                                    });
                                }
                            });
                        }
                    } else {
                        $(".jiantou2").hide();
                        $(".jiantou").show();
                    }
                },
            });

        });

日历切换获得历史数据rxhluck写的已经封装的大多了,扩展一下即使哼

//初始化属性数据
DuCalendar.prototype.getData = function () {
    var overlay = iosOverlay({
        text: "Loading",
        duration: 20e3,
        icon: "/packages/common/iosOverlay/img/load.gif"
    });

    $.ajax({
        method: "POST",
        data: {month: this.month},
        url: "/sign_calendar",
        dataType: "json",
        success: function(data){

            if(data.success){
                var signs = data.data;
                var ids = "#day_8888";
                for (var i = 0;i<signs.length;i++){
                    var date =  new Date(signs[i].created_at);
                    ids = ids+" ,#day_"+ date.getDate();
                }
                $(ids).remove("today");
                $(ids).addClass("today");

                overlay.update({
                    icon: "/packages/common/iosOverlay/img/check.png",
                    text: data.msg
                });

            }else{
                overlay.update({
                    icon: "/packages/common/iosOverlay/img/cross.png",
                    text: data.msg
                });
            }


        },
        error: function(xhr, type){
            overlay.update({
                icon: "/packages/common/iosOverlay/img/cross.png",
                text: "服务器连接错误"
            });
        }
    });
}

//左键
    this.leftBtn.onclick=function(){
        _tag--
        var dateObj;
        if(_tag == 0){
            dateObj = new Date();
        }else{
            var y = parseInt(This.year);
            var m = parseInt(This.month)-1;
            if(m<0){
                m = 11 ;
                y--;
            }
            dateObj = new Date(y,m,1);
        }

        This.addProDate(dateObj);
        This.showType();
        This.addTable();
        This.getData();
    }



    //右键
    this.rightBtn.onclick=function(){
         _tag++
        var dateObj;
        if(_tag == 0){
            dateObj = new Date();
        }else{
            var y = parseInt(This.year);
            var m = parseInt(This.month)+1;
            if(m>11){
                m = 0;
                y++;
            }
            var dateObj = new Date(y,m,1);
        }

        This.addProDate(dateObj);
        This.showType();
        This.addTable();
        This.getData();
    }

一个人发双重多的生气,也未能够任界定的投入到没有意义的均等地鸡毛中失。

4.后端Laravel写接口

界面初始化

/***
     * 每日签到查询
     * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View
     */
    public function sign(){
        $title = '每日签到';

        $user = session('user');
        $user = Users::find($user->id);
        if($user->apply_state != 5){
            return redirect()->route('returnBlade', ['您还不是党员,需要先进行报道。', 'dybd']);
        }

        $f_countsign = DB::select('SELECT f_countsign_days(:id,:date) as countsign', ['id' => $user->id,'date'=> date("Y-m-d ", time())]);

        $f_countsign = $f_countsign[0]->countsign;

        $countYear = Signs::where('users_id','=',$user->id)->whereBetween('created_at', [
            date("Y",time())."-01-01 00:00:00",
            date("Y",strtotime("+1 year"))."-12-31 23:59:59"
        ])->count();
        $countMonth = Signs::where('users_id','=',$user->id)->whereBetween('created_at', [
            date("Y-m-01",time())." 00:00:00",
            date("Y-m-t",time())." 23:59:59"
        ])->count();
        $countSigns = Signs::where('users_id','=',$user->id)->whereBetween('created_at', [
            date("Y-m-d",time()),
            date("Y-m-d",strtotime("+1 day"))
        ])->count();

        if($countSigns>0){
            $f_countsign++;
        }

        return view('mobile.sign', [
            'title'=>$title,
            'user'=>$user,
            'f_countsign'=>$f_countsign,
            'countSigns'=>$countSigns,
            'countYear'=>$countYear,
            'countMonth'=>$countMonth]);
    }

签到Ajax

/***
     * 每日签到
     * @return array
     */
    public function sign_in(){

        $user = session('user');
        $countSigns = Signs::where('users_id','=',$user->id)->whereBetween('created_at', [
            date("Y-m-d",time()),
            date("Y-m-d",strtotime("+1 day"))
        ])->count();
        if($countSigns == 0){

            DB::transaction(function () use ($user) {
                $integral =  new Integrals();
                $integral->name = config('bgjd.sign')[0]['name'];
                $integral->integral = config('bgjd.sign')[0]['integral'];
                $integral->users_id = $user->id;
                $integral->save();

                $sign = new Signs();
                $sign->name = config('bgjd.sign')[0]['name'];
                $sign->users_id = $user->id;
                $sign->integrals_id = $integral->id;
                $sign->save();
            });

            $res = ['success'=>true,'msg'=>'签到成功'];

        }else{
            $res = ['success'=>false,'msg'=>'已签到'];
        }
        return $res;
    }

历史月份的报到数据

/***
     * 历史签到查询
     * @param Request $request
     * @return array
     */
    public function sign_calendar(Request $request){

        $data = $request->all();
        $rules = [
            'month'    => 'required'
        ];
        $messages = [
            'month.required'    => '月份必须填写'
        ];

        $validator = Validator($data, $rules, $messages);
        if ($validator->passes()){

            $user = session('user');
            $Signs = Signs::where('users_id','=',$user->id)->whereBetween('created_at', [
                date("Y",time())."-".($data['month']+1)."-01 00:00:00",
                date("Y",time())."-".($data['month']+1)."-".date("t",time())." 23:59:59"
            ])->get();
            if($Signs){
                $res = ['success'=>true,'msg'=>($data['month']+1).'月签到','data'=>$Signs];
            }else{
                $res = ['success'=>false,'msg'=>'已签到'];
            }

        }else{
            $res = ['success'=>false,'msg'=>$validator->messages()->first()];

        }
        return $res;
    }

起再次多又主要的从,最好不设错了。

5.总是签到数据库方法

本条要于根本的,所以取一下

BEGIN  
    DECLARE days INT;  
    DECLARE flag INT;  
    DECLARE previous_day DATE;  
    SET days := 0;  
    SET flag := 1;  
    SET previous_day := DATE_SUB(end_time,INTERVAL 1 DAY);  

    WHILE flag>0 DO  
        SELECT COUNT(DISTINCT(DATE(created_at))) INTO flag  FROM  signs   
        WHERE users_id = id   
        AND DATE(created_at) = previous_day ;  
        IF flag > 0 THEN   
            SET days := days + 1;  
            SET previous_day := DATE_SUB(previous_day,INTERVAL 1 DAY);  
        END IF;  
    END WHILE;   
    RETURN days;  
    END

中心这样即便整个就了,Css就无沾了。

3
人要步入社会,粘滞阻力就见面更换充分,可能是私家变懒的理,也说不定是迫于无奈,有时候还难免陷入自嗨。

而回头一看,这些年走过的群弯路,也惟有自己来买单。

读过的书尚且不设吃罢的白米饭,到终极什么都没多余,可惜了痊愈的当儿。在豆瓣上观看同一篇好文《教育对人之改有差不多生》,想到了森口无力的吐槽,原生家庭、落后的山乡、教育之偏颇……

不可否认,眼界真的蛮关键。以至于常常会怀念,如果能够重返十八载,也许我会愈尽心尽力的效仿,尽管就就拼掉了大体上条命。

相比而言,再度像是二十八之耳目搭上了十八底眼界,没有了初生牛犊的种却产生矣年近中年之畏首畏尾。

但是谁之流年都不见面重来。

4
自发时光会想,如果发生一个弟弟妹妹还在看,我恐怕会见盖过来人的身价,给他们有自以为中肯的提议。如果需要的话,还会把单纯存的少量的学识倾囊相授,但这么的空子就然无多。

居五年前,家里多人口尚会见倍感上是相同起十分有必要的作业。生配合着父母每天到教室去签到,家长默契的管孩子辈巧立名目的零花钱交至她们手中。

这种协调平安之涉能够不断多久?反正自己的几乎独表妹,无异于到适婚年龄全都争先恐后的妻了。现在相连面世于情人围里,秀着各种面膜睫毛膏,等着受人挡掉。

自家产生上很钦佩这种,小富即安的心气,她们能以十几二十寒暑便生的如此自然。如果犯以我妈妈手下,非得管屁股给打开了费。

无异于种情绪的消灭,必然会来外一样种植心态前来代替。这行务也不得不那事不关我来解脱,我不应当站在和谐之角度上来设计他们的人生,不同人之思是会见发出代沟的。

消耗自己之日拉他们补习功课,她们却只得想到终于不用于洗煤做饭下地干活了。但,若干年晚,还非是涉及在相同的存,只不以前是啊老人家,以后是为女婿。

她俩将这,叫做爱情。

岂所谓爱情,不是理所应当互相供养,扶摇生长为?太草率的控制,怎么看还如是偷懒,一遵循正经之自成了同样手烂牌。

朝者迷,旁观者清。很多时段,最好不要活的无限轻松。

5
相比她们这样平静甜美的生时代,我们兄弟享受得说凡是休人的待遇了。

是的,我妈年轻时候便是这般简单粗暴,和自我爹做混合双打的阵容,把咱兄弟俩惩治的服服帖帖。以至于毕业后我们都只能选择远走他乡,尽管闲下来的时节还时不时会面怀念念他们。

当今想来,切莫认得大字的老母未必不识大体,原来时间大部分之结是向着靠近,而这种亲情是偏向远离的。她不顾自己的影像,是为吃男女等了之再好看一些。

这种想法不适合言表,似乎为无欲言表。毕竟,很多作业并不需要解释,终有雷同天,所有谜底都能够解开。