HEX
Server: Apache/2.4.6 (CentOS) PHP/5.6.39
System: Linux izj6c6ukj0hyugxsgmuxz3z 3.10.0-514.6.2.el7.x86_64 #1 SMP Thu Feb 23 03:04:39 UTC 2017 x86_64
User: root (0)
PHP: 5.6.39
Disabled: NONE
Upload Files
File: /web/data/weixin.tbbbearing.com/App/Home/Controller/PointsController.class.php
<?php
/**
 * Created by PhpStorm.
 * User: 18613127572
 * Date: 2018/8/28
 * Time: 16:22
 */

namespace Home\Controller;


use Home\Model\MemberPointsModel;
use Think\Com\Wechat;
use Think\Com\WechatAuth;
use Think\Controller;

class PointsController extends BaseController
{
    public function _initialize()
    {
        $this->init_config();

        $this->check_auth();
//        C('TIME',strtotime('2018/10/02'));
    }

    public function qiandao()
    {

        $view_time = (int)I('get.view_time');
        !$view_time && $view_time = C('TIME');

        $day = date('Y-n-j',C('TIME'));
        //当前年月
        $year = date('Y',$view_time);
        $month = date('n',$view_time);
        $this->assign('member_info',session('member_info'));
        $this->assign('seo_title','每日签到');



        $member_id = (int)session('member_info.member_id');
        //本月已签到记录
        $list = M('member_qiandao')->where(array('member_id='.$member_id,'year="'.$year.'"','month="'.$month.'"'))->order('add_time desc')->select();
        $list = array_change_key($list,'day');
        $today = $list[$day];
        $this->assign('today',$today);
        $this->assign('list',$list);
        $this->assign('view_time',$view_time);

        $products = M('weixin_products')->where(array('is_show=1'))->order(array('my_order desc','proid desc'))->field(array('proid','picture','name','exchange_points'))->select();
        foreach((array)$products as $k=>$v){
            $products[$k]['picture'] = json_decode($v['picture'],true);
        }
        $this->assign('products',$products);

        $this->display();
    }

    public function qiandao_post()
    {
        $day = date('Y-n-j',C('TIME'));
        $member_id = I('post.member_id');
        $openid = I('post.openid');
        $member_row = M('member')->where(array('member_id='.$member_id,'openid="'.$openid.'"'))->find();
        $has_qiandao = M('member_qiandao')->where(array('member_id='.$member_id,'day="'.$day.'"'))->find();
        $pre_day_info = M('member_qiandao')->where(array('member_id='.$member_id,'next_day="'.$day.'"'))->find();
        //所获得积分
        $points = 10;
        $yesterday = M('member_qiandao')->where(array(array('member_id='.$member_id,'next_day="'.$day.'"')))->find();
        $points_7 = $points_30 = 0;
        if($yesterday){
//            if($yesterday['repa_days'] < 7){
//                $points = $yesterday['repa_days'] + 1;
//            }else{
//                $points = 7;
//            }
//        }else{
//            $points = 1;
            $points_7 = ($yesterday['repa_days']+1)%7==0?70:0;
            $points_30 = ($yesterday['repa_days']+1)%30==0?200:0;
        }
        //2019/02/15日修改,每个用户只享受一次7天 和30天 累积积分
        //查询用户最大的一天,
        $big_day = M('member_qiandao')->where(array(array('member_id='.$member_id)))->order('repa_days desc')->find();
        if(intval($big_day['repa_days']) >= 7){
            $points_7 = 0;
        }
        if(intval($big_day['repa_days']) >= 30){
            $points_30 = 0;
        }

        
        $points = $points_30 + $points + $points_7;
        if(!$has_qiandao){
            M('member_qiandao')->add(array(
                'member_id' =>  $member_id,
                'year'      =>  date('Y',C('TIME')),
                'month'     =>  date('n',C('TIME')),
                'day'       =>  $day,
                'points'    =>  $points,
                'next_day'  =>  date('Y-n-j',C('TIME')+86400),
                'add_time'  =>  C('TIME'),
                'repa_days' =>  (int)$pre_day_info['repa_days'] + 1
            ));

            //记录会员积分变动流水
            $MemberPointsModel = new MemberPointsModel('member_points_record');
            $MemberPointsModel->change_points($points,$member_id,'签到送积分');
//            M('member')->where(array('member_id='.$member_id))->setInc('points',$points);
//            session('member_info.points',$member_row['points'] + $points);
            $this->success(array(
                'msg'   =>  '签到成功',
                'repa_days' =>  (int)$pre_day_info['repa_days'] + 1,
                'points'    =>  $points,
                'current_day'   =>  $day,
                'total_points'  =>  $member_row['points'] + $points
            ));
        }else{
            $this->error('您本日已签到,不能重复签到');
        }
    }

    public function pro_detail()
    {
        $proid = (int)I('get.proid');
        $model = M('weixin_products')->where('proid='.$proid);
        $row = $model->find();
        if(!$row){
            $this->error('产品信息错误',U('Points/qiandao'));
        }
        $this->assign('seo_title',$row['name']);
        $model->where('proid='.$proid)->setInc('views',1);
        $this->assign('row',$row);

        //检测用户是否关注公众号
        $weChat = new WechatAuth(C('GLOBAL_CONFIG.WX_AppID'),C('GLOBAL_CONFIG.WX_AppSecret'));
        $token = $weChat->getAccessToken();
        $user_info = $weChat->userInfo(session('weixin_userinfo.openid'));
        $this->assign('is_dingyue',$user_info['subscribe']);//


        $this->display();
    }

    public function confirm_order()
    {
        $proid = (int)I('get.proid');
        $model = M('weixin_products')->where('proid='.$proid);

        $row = $model->find();
        if(!$row){
            $this->error('产品信息错误',U('Points/qiandao'));
        }
        $this->assign('member_info',session('member_info'));
        $this->assign('seo_title','商品兑换 - '.$row['name']);
        $this->assign('row',$row);
        $this->display();
    }

    public function place_order()
    {
//
//        echo "<pre>";
//        print_r($_POST);
//        print_r($_GET);
//        exit;
        ignore_user_abort(true);
        $member_id  = (int)I('post.member_id');
        $openid     = I('post.openid');
        $shipping_name = I('post.name');
        $shipping_phone = I('post.phone');
        $shipping_area = I('post.addr_area');
        $shipping_address = I('post.address');

        $proid  = (int)I('post.proid');
        $qty = (int)I('post.qty');

        if(!$member_id || !$openid || !$qty || !$shipping_name || !$shipping_phone){
            $this->error('请正确填写表单内容,提交失败');
        }

        $member_row = M('member')->where(array('member_id='.$member_id))->find();
        if(!$member_row || $member_row['openid'] != $openid){
            $this->error('用户信息错误');
        }
        $product = M('weixin_products')->where(array('proid='.$proid,'is_show=1'))->find();
        if(!$product ){
            $this->error('产品不存在或者已经下架');
        }
        if($product['stock'] == 0 || $qty > $product['stock']){
            $this->error('产品库存不足');
        }
        $total_points = $product['exchange_points'] * $qty;
        if($member_row['points'] < $total_points){
            $this->error('你的积分不足,下单失败');
        }
        $order_data = array(
            'order_id' =>  date('YmdHis').$member_id,  //订单号用时间戳+会员ID
            'member_id' =>  $member_id,
            'proid' =>  $proid,
            'pro_name'  =>  $product['name'],
            'pro_points'    =>  $product['exchange_points'],
            'pro_picture'   =>  json_decode($product['picture'],true)[0],
            'order_status'  =>  0,
            'total_points'  =>  $product['exchange_points'] * $qty,

            'shipping_name' =>  $shipping_name,
            'shipping_phone'    =>  $shipping_phone,
            'shipping_area' =>  $shipping_area,
            'shipping_address'  =>  $shipping_address,
            'add_time'      =>  C('TIME'),
            'qty'           =>  $qty
        );

        M('weixin_orders')->add($order_data);
        M('weixin_products')->where('proid='.$proid)->setInc('sales',$qty);
        M('weixin_products')->where('proid='.$proid)->setDec('stock',$qty);
        $memberPointsModel = new MemberPointsModel('member_points_record');
        $memberPointsModel->change_points(-$total_points,$member_id,"积分兑换商品:订单号".$order_data['order_id']);

        //推送订单消息
        $appid = C('GLOBAL_CONFIG.WX_AppID'); //AppID(应用ID)
        $token = C('GLOBAL_CONFIG.WX_Token'); //微信后台填写的TOKEN
        $crypt = C('GLOBAL_CONFIG.WX_EncodingAESKey'); //消息加密KEY(EncodingAESKey)

        /* 加载微信SDK */
        $weChat = new WechatAuth(C('GLOBAL_CONFIG.WX_AppID'),C('GLOBAL_CONFIG.WX_AppSecret'));
        $weChat->getAccessToken();
        $weChat->sendText($openid,"兑换商品成功\r\n"."【订单号】{$order_data['order_id']}\r\n"."【产品名称】".$product['name']."\r\n"."【兑换数量】{$qty}\r\n【收货人】{$shipping_name}\r\n【收货地址】{$shipping_area} {$shipping_address}\r\n");

        $this->success('兑换成功。管理员会24小时内安排发货',U('Points/qiandao'));
    }
    
}