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'));
}
}