ajaxReturn($res); } $retailPlugModel = D('RetailPlug'); $plug = $retailPlugModel->getRewardAccess($merchant_id); if ($plug) { //红包插件能用 $retailSmallProgramUserModel = D('RetailSmallProgramUser'); $user = $retailSmallProgramUserModel->getFind(array($retailSmallProgramUserModel::ID => $uid)); if (empty($user) || empty($merchant_id)) { $result['status'] = 0; $result['msg'] = '参数有误'; $this->ajaxReturn($result); } $RetailRewardModel = D('RetailReward'); $reward = $RetailRewardModel->getFind(array($RetailRewardModel::MERCHANT_ID => $merchant_id, $RetailRewardModel::STATUS => 1, $RetailRewardModel::TYPE => 3, $RetailRewardModel::START_TIME => array('lt', $time), $RetailRewardModel::END_TIME => array('gt', $time))); if (empty($reward[$RetailRewardModel::REWARD_LIST])) { $result['status'] = 0; $result['msg'] = '暂无可用红包'; $this->ajaxReturn($result); } if ($reward && $reward[$RetailRewardModel::LESS_MONEY] >= 0.01 && $reward[$RetailRewardModel::LESS_NUMBER]) { $RewardRecordModel = D('RetailRewardRecord'); if ($user[$retailSmallProgramUserModel::VID]) { $retailVipModel = D('RetailVip'); $vip = $retailVipModel->getFind(array($retailVipModel::ID => $user[$retailSmallProgramUserModel::VID], $retailVipModel::STATUS => array('neq', 2))); if ($vip) { $map[$RewardRecordModel::VID] = $vip[$retailVipModel::ID]; $map[$RewardRecordModel::REWARD_ID] = $reward[$RetailRewardModel::ID]; $all_count = $RewardRecordModel->getCount($map);//领取该红包的总次数 } else { $all_count = 0; } } else { $all_count = 0; } if ($reward[$RetailRewardModel::IS_EVERYDAY] == 1) { //用户每天都可以领取红包 //获取用户当天领取记录 $map['_string'] = 'addtime <' . time() . ' AND addtime >' . strtotime(date('Y-m-d')); $day_count = $RewardRecordModel->getCount($map);//今天领取该红包的总次数 if ($all_count >= $reward[$RetailRewardModel::SUM_MAX_TIME]) { $result['status'] = 0; $result['msg'] = '这次的红包领完啦,下次再来吧'; $this->ajaxReturn($result); } if ($day_count >= $reward[$RetailRewardModel::DAY_MAX_TIME]) { $result['status'] = 0; $result['msg'] = '今天红包领完啦,明天再来吧'; $this->ajaxReturn($result); } $result['less_num'] = intval($reward[$RetailRewardModel::DAY_MAX_TIME] - $day_count); $result['isVip'] = empty($vip) ? 0 : 1; $result['status'] = 1; $result['msg'] = '查询成功'; $result['id'] = $reward['id']; } else { if ($all_count > 0) { $result['status'] = 0; $result['msg'] = '这次的红包领完啦,下次再来吧'; $this->ajaxReturn($result); } $result['isVip'] = empty($vip) ? 0 : 1; $result['less_num'] = 1; $result['status'] = 1; $result['msg'] = '查询成功'; $result['id'] = $reward['id']; } } else { $result['status'] = 0; $result['msg'] = '暂无可用红包'; } } else { $result['status'] = 0; $result['msg'] = '商家未开启红包功能'; } $this->ajaxReturn($result); } /* * 开红包 */ public function openReward() { $merchant_id = self::$merchant_id; $uid = self::$uid; $store_id = self::$store_id; if (empty($uid) || empty($merchant_id)) { $result['status'] = 0; $result['msg'] = '缺少参数'; $this->ajaxReturn($result); } $RSPUModel = D('RetailSmallProgramUser'); $user = $RSPUModel->getFind(array($RSPUModel::ID => $uid)); if (empty($user) || empty($user[$RSPUModel::VID])) { $result['status'] = 0; $result['msg'] = '用户不存在'; $this->ajaxReturn($result); } $VipModel = D('RetailVip'); $vip = $VipModel->getFind(array($VipModel::ID => $user[$RSPUModel::VID])); if (empty($vip)) { $result['status'] = 0; $result['msg'] = '您未绑定公众号会员卡'; $this->ajaxReturn($result); } $PlugModel = D('RetailPlug'); $plug = $PlugModel->getRewardAccess($vip[$VipModel::MERCHANT_ID]); if ($plug) { //红包插件能用 $RewardModel = D('RetailReward'); $reward = $RewardModel->getFind(array($RewardModel::MERCHANT_ID => $vip[$VipModel::MERCHANT_ID], $RewardModel::STATUS => 1, $RewardModel::TYPE => 3)); if (empty($reward[$RewardModel::REWARD_LIST])) { $result['status'] = 0; $result['msg'] = '该红包已失效'; $this->ajaxReturn($result); } if ($reward && $reward[$RewardModel::LESS_MONEY] >= 0.01 && $reward[$RewardModel::LESS_NUMBER]) { //还剩余红包 $RewardRecordModel = D('RetailRewardRecord'); $map[$RewardRecordModel::VID] = $vip[$VipModel::ID]; $map[$RewardRecordModel::REWARD_ID] = $reward[$RewardModel::ID]; $all_count = $RewardRecordModel->getCount($map); if ($reward[$RewardModel::IS_EVERYDAY] == 1) { //用户每天都可以领取红包 //获取用户当天领取记录 $map['_string'] = $RewardRecordModel::ADD_TIME . ' <' . time() . ' AND ' . $RewardRecordModel::ADD_TIME . ' >' . strtotime(date('Y-m-d')); $day_count = $RewardRecordModel->getCount($map); if ($all_count >= $reward[$RewardModel::SUM_MAX_TIME]) { $result['status'] = 0; $result['msg'] = '这次的红包领完啦,下次再来吧'; $this->ajaxReturn($result); } if ($day_count >= $reward[$RewardModel::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[$RewardModel::REWARD_LIST]); $update = $RewardModel->toSetDec(array($RewardModel::ID => $reward[$RewardModel::ID]), $RewardModel::LESS_MONEY, $res['money']); $update = $RewardModel->toSetDec(array($RewardModel::ID => $reward[$RewardModel::ID]), $RewardModel::LESS_NUMBER, 1); $update = $RewardModel->updateOrder(array($RewardModel::ID => $reward[$RewardModel::ID]), array($RewardModel::REWARD_LIST => $res['reward_list'])); $RechargeOrderModel = D('RetailRechargeOrder'); $item1[$RechargeOrderModel::VID] = $vip[$VipModel::ID]; $item1[$RechargeOrderModel::STATUS] = 1; $item1[$RechargeOrderModel::MONEY] = $res[$RewardRecordModel::MONEY]; $item1[$RechargeOrderModel::ALL_MONEY] = $res[$RewardRecordModel::MONEY]; $item1[$RechargeOrderModel::TYPE] = 6; $item1[$RechargeOrderModel::SCENE_TYPE] = 4; $item1[$RechargeOrderModel::ADD_TIME] = time(); $item1[$RechargeOrderModel::REMARK] = '小程序拆红包获得' . $res[$RewardRecordModel::MONEY] . '元'; $item1[$RechargeOrderModel::STATE] = 1; $item1[$RechargeOrderModel::MERCHANT_ID] = $vip[$VipModel::MERCHANT_ID]; $item1[$RechargeOrderModel::STORE_ID] = $store_id; $addRecharge = $RechargeOrderModel->addOrder($item1); if ($addRecharge) { $item[$RewardRecordModel::MONEY] = $res['money']; $item[$RewardRecordModel::VID] = $vip[$VipModel::ID]; $item[$RewardRecordModel::MERCHANT_ID] = $vip[$VipModel::MERCHANT_ID]; $item[$RewardRecordModel::STORE_ID] = $vip[$VipModel::STORE_ID]; $item[$RewardRecordModel::ADD_TIME] = time(); $item[$RewardRecordModel::REWARD_ID] = $reward[$RewardModel::ID]; $item[$RewardRecordModel::RECHARGE_ORDER_ID] = $addRecharge; $add = $RewardRecordModel->addOrder($item); if ($add) { $addMoney = $VipModel->toSetInc(array($VipModel::ID => $vip[$VipModel::ID]), $VipModel::BALANCE, $item[$RewardRecordModel::MONEY]); } $result['status'] = 1; $result['msg'] = '领取成功'; $result['money'] = $item[$RewardRecordModel::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 getPlugPermissions() { $data = [ 'merchant_id' =>self::$merchant_id, 'identification_arr' => [ 'shopcoupon', 'wxpaycoupon' ], ]; $PlugClass = new Plug(); $result = $PlugClass->PlugPermissions($data); $this->ajaxReturn($result); } }