250 行
12 KiB
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);
|
|
}
|
|
} |