文件
mashangyoujiu/Application/SmallProgramApi/Controller/PlugController.class.php

250 行
12 KiB
PHP
可执行文件

<?php
namespace SmallProgramApi\Controller;
//[1.5.84]
use Common\Business\Plug;
class PlugController extends BaseController
{
/*
* plus会员判断 获取红包
*/
public function getReward()
{
$merchant_id = self::$merchant_id;
$uid = self::$uid;
$time = time();
if (empty($uid)) {
$res['status'] = 0;
$res['msg'] = '用户未登录';
$this->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);
}
}