getSignPack(); $this->display(); } /** * */ public function detailsa1() { $this->getSignPack(); $this->display(); } /** * 获取签名配置参数 */ protected function getSignPack() { $merchant_id = session('merchantid'); $wMap = array( 'merchantid' => $merchant_id ); $weChat = M('wxconfig')->where($wMap)->find(); if ($weChat['type'] == 1) { $jsSdk = new Jssdk($weChat['appid'], $weChat['appsecret']); } else if ($weChat['type'] == 2) { $access_token = get_authorizer_access_token($merchant_id); $jsSdk = new Jssdks($weChat['authorizer_appid'], $access_token); } else { $this->error('微信配置参数有误'); } $signPackage = $jsSdk->GetSignPackage(); $this->assign('signPackage', $signPackage); } //活动中心 public function index() { $user = session('userinfo'); $map['pm.merchant_id'] = $user['merchantid']; $map['pm.m_status'] = 1; $map['pm.status'] = 1; $plug = M('plug_merchant as pm') ->join('ls_plug as p on p.id=pm.plug_id AND p.type=1') ->where($map) ->field('p.*') ->select(); $this->assign('plug', $plug); $this->display(); } //领取红包成功 public function reward_success() { $money = I('get.money'); if (empty($money)) { $this->tipsMsg(0, '您访问的页面不存在'); } else { $this->assign('money', $money); $this->display(); } } //公众号红包页面 public function reward() { $this->display(); } //拆活动中心红包接口 public function openReward() { $user = session('userinfo'); if (IS_POST) { if (empty($user)) { $result['status'] = 0; $result['msg'] = '访问错误'; $this->ajaxReturn($result); } $plug = D('RetailPlug')->getRewardAccess($user['merchantid']); if ($plug) { //红包插件能用 $RewardModel = D('Reward'); $reward = $RewardModel->getReward($user['merchantid'], 1); if (empty($reward['reward_list'])) { $result['status'] = 0; $result['msg'] = '该红包已失效'; $this->ajaxReturn($result); } if ($reward && $reward['lessmoney'] >= 0.01 && $reward['lessnumber']) { //还剩余红包 $map['vid'] = $user['id']; $map['reward_id'] = $reward['id']; $all_count = M('reward_record')->where($map)->count(); if ($reward['is_everyday'] == 1) { //用户每天都可以领取红包 //获取用户当天领取记录 $map['_string'] = 'addtime <' . time() . ' AND addtime >' . strtotime(date('Y-m-d')); $day_count = M('reward_record')->where($map)->count(); if ($all_count >= $reward['sum_max_time']) { $result['status'] = 0; $result['msg'] = '这次的红包领完啦,下次再来吧'; $this->ajaxReturn($result); } if ($day_count >= $reward['day_max_time']) { $result['status'] = 0; $result['msg'] = '今天红包领完啦,明天再来吧'; $this->ajaxReturn($result); } } else { if ($all_count > 0) { $result['status'] = 0; $result['msg'] = '这次的红包领完啦,下次再来吧'; $this->ajaxReturn($result); } } $res = $this->getRandMoney($reward['reward_list']); $update = $RewardModel->toSetDec(array('id' => $reward['id']), 'lessmoney', $res['money']); $update = $RewardModel->toSetDec(array('id' => $reward['id']), 'lessnumber', 1); $update = $RewardModel->toUpdate(array('id' => $reward['id']), array('reward_list' => $res['reward_list'])); $RechargeOrderModel = D('RetailRechargeOrder'); $item1[$RechargeOrderModel::VID] = $user['id']; $item1[$RechargeOrderModel::STATUS] = 1; $item1[$RechargeOrderModel::MONEY] = $res['money']; $item1[$RechargeOrderModel::ALL_MONEY] = $res['money']; $item1[$RechargeOrderModel::SCENE_TYPE] = 5;//变动场景 1收银机 2商户后台 3门店后台 4小程序 5公众号 $item1[$RechargeOrderModel::TYPE] = 6;//变动类型 1充值 2消费 3编辑增加 4编辑减少 5退款增加 6红包充值 7大转盘充值 8礼品卡充值 $item1[$RechargeOrderModel::ADD_TIME] = time(); $item1[$RechargeOrderModel::REMARK] = '公众号拆红包获得' . $res['money'] . '元'; $item1[$RechargeOrderModel::STATE] = 1; $item1[$RechargeOrderModel::MERCHANT_ID] = $user['merchantid']; $addId = $RechargeOrderModel->addOrder($item1); if ($addId) { $item['money'] = $res['money']; $item['vid'] = $user['id']; $item['merchantid'] = $user['merchantid']; $item['storeid'] = $user['storeid']; $item['addtime'] = time(); $item['reward_id'] = $reward['id']; $item['recharge_order_id'] = $addId; $item['pay_order_id'] = $addId; M('reward_record')->add($item); D('Vip')->toSetInc(array('id' => $user['id']), 'balance', $res['money']); $result['status'] = 1; $result['msg'] = '领取成功'; $result['money'] = $res['money']; } else { $result['status'] = 0; $result['msg'] = '领取失败,再试一次'; } } else { $result['status'] = 0; $result['msg'] = '这次的红包领完啦,下次再来吧'; } } else { $result['status'] = 0; $result['msg'] = '红包不可用'; } $this->ajaxReturn($result); } } //获取红包随机数 protected function getRandMoney($list) { $list = explode(',', $list); if (count($list) > 1) { $index = rand(0, count($list) - 1); $money = $list[$index]; array_splice($list, $index, 1); $str = implode(',', $list); } else { $money = $list[0]; $str = ''; } $res['money'] = $money; $res['reward_list'] = $str; return $res; } //支付成功拆红包页面 public function reward_pay() { $payOrderId = I('get.id'); $PayOrderModel = D('RetailPayOrder'); $Order = $PayOrderModel->getFind(array($PayOrderModel::ID => $payOrderId)); if (empty($payOrderId) || empty($Order)) { $this->tipsMsg(0, '你访问的页面不存在'); } else { $RRRModel = D('RetailRewardRecord'); $recordList = $RRRModel->getFind(array($RRRModel::PAY_ORDER_ID => $payOrderId)); if ($recordList) { $this->tipsMsg(0, '红包已被领取'); } $this->assign('id', $payOrderId); $this->display(); } } //支付成功拆红包接口 public function openPayReward() { $user = session('userinfo'); $payOrderId = I('post.id'); if (empty($user) || empty($payOrderId)) { $result['status'] = 0; $result['msg'] = '访问错误'; $this->ajaxReturn($result); } $PayOrderModel = D('RetailPayOrder'); $Order = $PayOrderModel->getFind(array($PayOrderModel::ID => $payOrderId)); if (empty($payOrderId) || empty($Order)) { $result['status'] = 0; $result['msg'] = '访问错误'; $this->ajaxReturn($result); } $RechargeOrderModel = D('RetailRechargeOrder'); $old = $RechargeOrderModel->getFind(array($RechargeOrderModel::PAY_ORDER_ID => $payOrderId)); if (!empty($old)) { $result['status'] = 0; $result['msg'] = '红包已经被领取了'; $this->ajaxReturn($result); } $RRRModel = D('RetailRewardRecord'); $recordList = $RRRModel->getFind(array($RRRModel::PAY_ORDER_ID => $payOrderId)); if ($recordList) { $result['status'] = 0; $result['msg'] = '红包已被领取'; $this->ajaxReturn($result); } $user = session('userinfo'); $plug = D('RetailPlug')->getRewardAccess($user['merchantid']); if ($plug) { //红包插件能用 $RewardModel = D('Reward'); $reward = $RewardModel->getReward($user['merchantid'], 2); if (empty($reward['reward_list'])) { $result['status'] = 0; $result['msg'] = '该红包已失效'; $this->ajaxReturn($result); } if ($reward && $reward['lessmoney'] >= 0.01 && $reward['lessnumber']) { //还剩余红包 $map['vid'] = $user['id']; $map['reward_id'] = $reward['id']; $all_count = M('reward_record')->where($map)->count(); if ($reward['is_everyday'] == 1) { //获取用户当天领取记录 if ($reward['sum_max_time'] != 0 && $reward['day_max_time'] != 0) { $map['_string'] = 'addtime <' . time() . ' AND addtime >' . strtotime(date('Y-m-d')); $day_count = M('reward_record')->where($map)->count(); if ($all_count >= $reward['sum_max_time']) { $result['status'] = 0; $result['msg'] = '这次的红包领完啦,下次再来吧'; $this->ajaxReturn($result); } if ($day_count >= $reward['day_max_time']) { $result['status'] = 0; $result['msg'] = '今天红包领完啦,明天再来吧'; $this->ajaxReturn($result); } } } else { if ($all_count > 0) { $result['status'] = 0; $result['msg'] = '这次的红包领完啦,下次再来吧1'; $this->ajaxReturn($result); } } $res = $this->getRandMoney($reward['reward_list']); $update = $RewardModel->toSetDec(array('id' => $reward['id']), 'lessmoney', $res['money']); $update = $RewardModel->toSetDec(array('id' => $reward['id']), 'lessnumber', 1); $update = $RewardModel->toUpdate(array('id' => $reward['id']), array('reward_list' => $res['reward_list'])); $item1[$RechargeOrderModel::VID] = $user['id']; $item1[$RechargeOrderModel::STATUS] = 1; $item1[$RechargeOrderModel::PAY_ORDER_ID] = $payOrderId; $item1[$RechargeOrderModel::MONEY] = $res['money']; $item1[$RechargeOrderModel::ALL_MONEY] = $res['money']; $item1[$RechargeOrderModel::SCENE_TYPE] = 5;//变动场景 1收银机 2商户后台 3门店后台 4小程序 5公众号 $item1[$RechargeOrderModel::TYPE] = 6;//变动类型 1充值 2消费 3编辑增加 4编辑减少 5退款增加 6红包充值 7大转盘充值 8礼品卡充值 $item1[$RechargeOrderModel::ADD_TIME] = time(); $item1[$RechargeOrderModel::REMARK] = '支付完成拆红包获得' . $res['money'] . '元'; $item1[$RechargeOrderModel::STATE] = 1; $item1[$RechargeOrderModel::MERCHANT_ID] = $user['merchantid']; $addId = $RechargeOrderModel->addOrder($item1); if ($addId) { $item['money'] = $res['money']; $item['vid'] = $user['id']; $item['merchantid'] = $user['merchantid']; $item['storeid'] = $user['storeid']; $item['addtime'] = time(); $item['reward_id'] = $reward['id']; $item['recharge_order_id'] = $addId; $item['pay_order_id'] = $payOrderId; $add = M('reward_record')->add($item); D('Vip')->toSetInc(array('id' => $user['id']), 'balance', $item['money']); $result['status'] = 1; $result['msg'] = '领取成功'; $result['money'] = $item['money']; } else { $result['status'] = 0; $result['msg'] = '领取失败,再试一次'; } } else { $result['status'] = 0; $result['msg'] = '这次的红包领完啦,下次再来吧'; } } else { $result['status'] = 0; $result['msg'] = '红包不可用'; } $this->ajaxReturn($result); } //大转盘页面 public function turntable() { $user = session('userinfo'); // dump($user);exit(); $map['merchantid'] = $user['merchantid']; $map['status'] = 1; $map['turntable_type'] = 1; $map['start_time'] = ['elt',time()]; $map['end_time'] = ['egt',time()]; $turntable = M('turntable')->where($map)->find(); if (!empty($turntable)) { $prize = M('turntable_prize')->where(array('turntableid' => $turntable['id']))->select(); } else { header("Content-Type:text/html;charset=utf-8"); echo '活动已过期,请尽情期待下一次活动'; exit; } $this->assign('nr', $turntable); $this->assign('turns', $prize); $this->display(); } //大转盘 public function findPrize() { $user = session('userinfo'); $merchantid = $user['merchantid']; $map['merchantid'] = $merchantid; $map['status'] = 1; $map['start_time'] = ['elt',time()]; $map['end_time'] = ['egt',time()]; $turntable = M('turntable')->where($map)->find(); if (empty($turntable)) { $result['status'] = 0; $result['msg'] = '大转盘不可用'; $this->ajaxReturn($result); } $us['vid'] = $user['id']; $us['turntableid'] = $turntable['id']; $us['type'] = array('neq', 5); if ($turntable['maxnum']) { $user_max_num = M('turntable_use')->where($us)->count();//用户总中奖次数 if (intval($turntable['maxnum']) <= $user_max_num) { $result['status'] = 0; $result['msg'] = '您的抽奖次数已用完!'; $this->ajaxReturn($result); } } if ($turntable['playnum']) { unset($us['type']); $user_play_num = M('turntable_use')->where($us)->count();//用户已抽奖次数 if (intval($turntable['playnum']) <= $user_play_num) { $result['status'] = 0; $result['msg'] = '您的抽奖次数已用光,请明日在来!'; $this->ajaxReturn($result); } } $flag = true; if ($turntable['daymaxnum']) { //限制每日中奖次数 $us['_string'] = 'addtime <' . time() . ' AND addtime >' . strtotime(date('Y-m-d')); $turntable_number = M('turntable_use')->where($us)->count(); if ($turntable_number >= intval($turntable['daymaxnum'])) { $where['type'] = 5; $where['turntableid'] = $turntable['id']; $prize = M('turntable_prize')->where($where)->find(); if (empty($prize)) { $result['status'] = 0; $result['msg'] = '您的抽奖次数已用光,请明日在来!'; $this->ajaxReturn($result); } $flag = false; $prize_id = $prize['id']; } } if ($flag) { $prize_arr = I('post.arr'); foreach ($prize_arr as $v) { $arr[$v['id']] = $v['v']; } $prize_id = $this->getRand($arr); //根据概率获取奖项id $where['id'] = $prize_id; $prize = M('turntable_prize')->where($where)->find(); } if ($prize['prizenum'] <= 0) { $where['type'] = 5; $where['turntableid'] = $turntable['id']; $prize = M('turntable_prize')->where($where)->find(); if (empty($prize)) { $result['status'] = 0; $result['msg'] = '本次未抽中奖品,请重试'; $this->ajaxReturn($result); } $flag = false; $prize_id = $prize['id']; } $data['id'] = $prize_id; $d['vid'] = $user['id']; $d['addtime'] = time(); $d['merchantid'] = session('merchantid'); $d['storeid'] = session('storeid') ? session('storeid') : session('merchantid'); $d['turntable_prizeid'] = $prize_id; $d['turntableid'] = $prize['turntableid']; switch ($prize['type']) { case 1: //实物 $d['status'] = 0; break; case 2: //积分 $d['status'] = 2; $d['usetime'] = time(); $da['vid'] = $user['id']; $da['type'] = 8; $da['integral'] = $prize['integral']; $da['addtime'] = time(); $da['storeid'] = $user['storeid']; $da['remark'] = "大转盘抽奖获得" . $prize['integral'] . "积分"; $res = M('retail_integral_order')->add($da); $map15['id'] = $prize_id; $res1 = M('turntable_prize')->where($map15)->setDec('prizenum', 1);//奖品数量减少 $map1['id'] = $user['id']; $M = M('retail_vip'); $M->id = $user['id']; $M->integral = array('exp', 'integral+' . $prize['integral']); $M->grade_integral = array('exp', 'grade_integral+' . $prize['integral']); $M->save(); break; case 3: //会员卡金额 $d['status'] = 2; $d['usetime'] = time(); $da['money'] = 0; $da['all_money'] = $prize['money']; $da['status'] = 1; $da['type'] = 7; $da['scene_type'] = 5; $da['add_time'] = time(); $da['store_id'] = $user['storeid']; $da['merchant_id'] = $user['merchantid']; $da['vid'] = $user['id']; $da['remark'] = "大转盘抽奖获得" . $prize['money'] . "元"; $res = M('recharge_order')->add($da); $map15['id'] = $prize_id; $res1 = M('turntable_prize')->where($map15)->setDec('prizenum', 1); $M = M('retail_vip'); $M->id = $user['id']; $M->balance = array('exp', 'balance+' . $prize['money']); $M->save(); break; } M('turntable_use')->add($d); $data['success'] = 1; $this->ajaxReturn($data); } //领取奖品 public function getPrize() { $user = session('userinfo'); $prizeid = $_POST['prizeid']; if ($prizeid) { $code = $_POST['code']; $where['id'] = $prizeid; $turntableid = M('turntable_prize')->where($where)->getField('turntableid'); // 大转盘id $where2['id'] = $turntableid; $recode = M('turntable')->where($where2)->getField('prizecode'); // 核销码 if ($code == $recode) { $res = M('turntable_prize')->where($where)->setDec('prizenum', 1);//实物在奖品领取之后数量才减少 $map['vid'] = $user['id']; $map['turntable_prizeid'] = $prizeid; $da['status'] = 1; $da['usetime'] = time(); $res1 = M('turntable_use')->where($map)->save($da); $data['res'] = $res; $data['res1'] = $res1; if ($res && $res1) { $data['success'] = 1; $data['msg'] = "恭喜您成功领取奖品"; } else { $data['success'] = 0; $data['msg'] = "系统出差啦
请重试"; } } else { $data['success'] = 0; $data['msg'] = "核销码错误
请询问店员"; } } else { $data['success'] = 0; $data['msg'] = "核销失败"; } $this->ajaxReturn($data); } //支付成功大转盘页面 public function turntable_pay() { $bill_order_id = I('get.bill_order_id'); $BillModel = D('RetailBillOrder'); $user = session('userinfo'); $Order = $BillModel->getFind(array('id' => $bill_order_id)); if (empty($bill_order_id) || empty($Order)) { $this->tipsMsg(0, '你访问的页面不存在'); } else { $old = M('turntable_use')->where(array('pay_order_id' => $bill_order_id))->find(); if (!empty($old)) { $result['status'] = 0; $result['msg'] = '红包已经被领取了'; $this->ajaxReturn($result); } $map['merchantid'] = $user['merchantid']; $map['status'] = 1; $turntable = M('turntable')->where($map)->find(); if (!empty($turntable)) { $prize = M('turntable_prize')->where(array('turntableid' => $turntable['id']))->select(); } $this->assign('nr', $turntable); $this->assign('turns', $prize); $this->assign('id', $bill_order_id); $this->display(); } } //支付成功之后参加大转盘活动接口 public function openTurntable() { $user = session('userinfo'); $bill_order_id = I('post.id'); if (empty($user) || empty($bill_order_id)) { $data['status'] = 0; $data['msg'] = '访问错误'; $this->ajaxReturn($data); } $BillModel = D('RetailBillOrder'); $merchant_id = session('merchant_id'); $Order = $BillModel->getFind(array('id' => $bill_order_id, 'merchant_id' => $merchant_id)); if (empty($bill_order_id) || empty($Order)) { $data['status'] = 0; $data['msg'] = '访问错误'; $this->ajaxReturn($data); } $old = M('turntable_use')->where(array('pay_order_id' => $bill_order_id))->find(); if (!empty($old)) { $result['status'] = 0; $result['msg'] = '抽奖机会已经被领取了'; $this->ajaxReturn($result); } $turntable = M('turntable')->where(array('merchantid' => $user['merchantid'], 'status' => 1))->find(); if ($turntable) { $us['vid'] = $user['id']; $us['turntableid'] = $turntable['id']; $us['type'] = array('neq', 5); if ($turntable['maxnum']) { $user_max_num = M('turntable_use')->where($us)->count();//用户总中奖次数 if (intval($turntable['maxnum']) <= $user_max_num) { $result['status'] = 0; $result['msg'] = '您的抽奖机会已经用完了'; $this->ajaxReturn($result); } } if ($turntable['playnum']) { unset($us['type']); $user_play_num = M('turntable_use')->where($us)->count();//用户已抽奖次数 if (intval($turntable['playnum']) <= $user_play_num) { $result['status'] = 0; $result['msg'] = '您的抽奖机会已经用完了'; $this->ajaxReturn($result); } } if ($turntable['daymaxnum']) { //限制每日中奖次数 $us['type'] = array('neq', 5); $us['_string'] = 'addtime <' . time() . ' AND addtime >' . strtotime(date('Y-m-d')); $turntable_number = M('turntable_use')->where($us)->count(); if ($turntable_number >= intval($turntable['daymaxnum'])) { $where['type'] = 5; $where['turntableid'] = $turntable['id']; $prize = M('turntable_prize')->where($where)->find(); if (empty($prize)) { $result['status'] = 0; $result['msg'] = '您的抽奖机会已经用完了'; $this->ajaxReturn($result); } } } $prize_arr = I('post.arr'); foreach ($prize_arr as $v) { $arr[$v['id']] = $v['v']; } $prize_id = $this->getRand($arr); //根据概率获取奖项id $data['id'] = $prize_id; $where['id'] = $prize_id; $prize = M('turntable_prize')->where($where)->find(); if ($prize['prizenum'] <= 0) { $where['type'] = 5; $where['turntableid'] = $turntable['id']; $prize = M('turntable_prize')->where($where)->find(); if (empty($prize)) { $result['status'] = 0; $result['msg'] = '本次未抽中奖品,请重试'; $this->ajaxReturn($result); } $flag = false; $prize_id = $prize['id']; } $d['vid'] = $user['id']; $d['addtime'] = time(); $d['merchantid'] = session('merchantid'); $d['storeid'] = session('storeid') ? session('storeid') : session('merchantid'); $d['turntable_prizeid'] = $prize_id; $d['turntableid'] = $prize['turntableid']; $d['pay_order_id'] = $bill_order_id; switch ($prize['type']) { case 1: //实物 $d['status'] = 0; break; case 2: //积分 $d['status'] = 2; $d['usetime'] = time(); $da['vid'] = $user['id']; $da['type'] = 8; $da['integral'] = $prize['integral']; $da['addtime'] = time(); $da['storeid'] = $user['storeid']; $da['remark'] = "大转盘抽奖获得" . $prize['integral'] . "积分"; $res = M('retail_integral_order')->add($da); $map15['id'] = $prize_id; $res1 = M('turntable_prize')->where($map15)->setDec('prizenum', 1);//奖品数量减少 $map1['id'] = $user['id']; $M = M('retail_vip'); $M->id = $user['id']; $M->integral = array('exp', 'integral+' . $prize['integral']); $M->grade_integral = array('exp', 'grade_integral+' . $prize['integral']); $M->save(); // $updateOrder = $PayOrderModel->updateOrder(array('id' => $payOrderId), array('is_reward' => 1)); break; case 3: //会员卡金额 $d['status'] = 2; $d['usetime'] = time(); $da['money'] = 0; $da['all_money'] = $prize['money']; $da['status'] = 1; $da['type'] = 7;//1充值 2消费 3编辑增加 4编辑减少 5退款增加 6红包充值 7大转盘充值 8礼品卡充值 $da['scene_type'] = 5;//1收银机 2商户后台 3门店后台 4小程序 5公众号 $da['add_time'] = time(); $da['store_id'] = $user['storeid']; $da['merchant_id'] = $user['merchantid']; $da['vid'] = $user['id']; $da['remark'] = "大转盘抽奖获得" . $prize['money'] . "元"; $res = M('recharge_order')->add($da); $map15['id'] = $prize_id; $res1 = M('turntable_prize')->where($map15)->setDec('prizenum', 1); $M = M('retail_vip'); $M->id = $user['id']; $M->balance = array('exp', 'balance+' . $prize['money']); $M->save(); break; } $re = M('turntable_use')->add($d); $data['success'] = 1; } else { $data['status'] = 0; $data['msg'] = '大转盘不可用'; $this->ajaxReturn($data); } $this->ajaxReturn($data); } public function getRand($proArr) { $data = ''; $proSum = array_sum($proArr); //概率数组的总概率精度 foreach ($proArr as $k => $v) { //概率数组循环 $randNum = mt_rand(1, $proSum); if ($randNum <= $v) { $data = $k; break; } else { $proSum -= $v; } } unset($proArr); return $data; } //获取红包随机数 public function getRandMoney_v1($min, $max, $lessmoney, $lessnumber) { /* 数量充足 */ if ($lessnumber != 1) { $i = 1; while ($i <= 30) { $randmoney = mt_rand($min * 100, $max * 100) / 100; /* 计算剩余平均值 */ $average = round(($lessmoney - $randmoney) / ($lessnumber - 1), 2); print_r($randmoney); print_r('----' . $average); if ($average > $min && $average < $max) { break; } $i++; } } else { $randmoney = $lessmoney; } // print_r('----' . $randmoney); die; return $randmoney; } /* random_number(int $min int $max int $lessmoney int $lessnumber) * 生成随机数 * @param $min 最小值 * @param $max 最大值 * @param $lessmoney 总值 * @param $lessnumber 总数 * @return array * */ public function random_number($min, $max, $lessmoney, $lessnumber) { } }