130 行
4.8 KiB
PHP
可执行文件
130 行
4.8 KiB
PHP
可执行文件
<?php
|
|
|
|
namespace PayApi\Controller;
|
|
|
|
use Think\Controller;
|
|
|
|
//[1.5.52]
|
|
|
|
/**
|
|
* 积分商城换购
|
|
* Class ScoreMallController
|
|
* @package PayApi\Controller
|
|
*/
|
|
class ScoreMallController extends Controller
|
|
{
|
|
/**
|
|
* 微信支付回调之后的公共函数
|
|
* @param $payOrder
|
|
* @return mixed
|
|
*/
|
|
public function buyNotify($payOrder)
|
|
{
|
|
$PayOrderModel = D('RetailPayOrder');
|
|
$SMExchangeModel = D('RetailScoreMallExchange');
|
|
$merchant_id = $payOrder[$PayOrderModel::MERCHANT_ID];
|
|
$vid = $payOrder[$PayOrderModel::VID];
|
|
$eMap = array(
|
|
$SMExchangeModel::PAY_ORDER_ID => $payOrder[$PayOrderModel::ID],
|
|
$SMExchangeModel::VID => $vid,
|
|
$SMExchangeModel::MERCHANT_ID => $merchant_id,
|
|
$SMExchangeModel::STATUS => 1,
|
|
$SMExchangeModel::STATE => 0,
|
|
);
|
|
$scoreOrder = $SMExchangeModel->getFind($eMap);
|
|
if (empty($scoreOrder)) {
|
|
$result['status'] = 0;
|
|
$result['msg'] = '操作有误2';
|
|
return $result;
|
|
}
|
|
return $this->orderSuccess($scoreOrder);
|
|
}
|
|
|
|
/**
|
|
* 兑换成功,修改数据
|
|
* @param $scoreOrder
|
|
* @return mixed
|
|
*/
|
|
public function orderSuccess($scoreOrder)
|
|
{
|
|
$VipModel = D('RetailVip');
|
|
$ScoreMallModel = D('ScoreMall');
|
|
$SMExchangeModel = D('RetailScoreMallExchange');
|
|
$merchant_id = $scoreOrder[$SMExchangeModel::MERCHANT_ID];
|
|
$vid = $scoreOrder[$SMExchangeModel::VID];
|
|
$sMap = array(
|
|
$ScoreMallModel::ID => $scoreOrder[$SMExchangeModel::SCORE_MALL_ID],
|
|
$ScoreMallModel::MERCHANT_ID => $merchant_id,
|
|
);
|
|
$scoreMall = $ScoreMallModel->getFind($sMap);
|
|
if (empty($scoreMall)) {
|
|
$result['status'] = 0;
|
|
$result['msg'] = '操作有误2';
|
|
$this->ajaxReturn($result);
|
|
}
|
|
$vMap = array(
|
|
$VipModel::ID => $vid,
|
|
);
|
|
$vip = $VipModel->getFind($vMap);
|
|
$integral = $scoreMall[$ScoreMallModel::INTEGRAL];
|
|
if (round($vip[$VipModel::INTEGRAL] - $integral) < 0) {
|
|
$result['status'] = 0;
|
|
$result['msg'] = '会员积分不足' . $integral;
|
|
return $result;
|
|
}
|
|
if ($scoreMall[$ScoreMallModel::TYPE] == 2) {
|
|
$price = $scoreMall[$ScoreMallModel::PRICE];
|
|
if (round($vip[$VipModel::BALANCE] - $price, 2) < 0) {
|
|
$result['status'] = 0;
|
|
$result['msg'] = '会员余额不足' . $price;
|
|
$this->ajaxReturn($result);
|
|
}
|
|
$RechargeOrderModel = D('RetailRechargeOrder');
|
|
$rechargeItem = array(
|
|
$RechargeOrderModel::MONEY => $price,
|
|
$RechargeOrderModel::ALL_MONEY => $price,
|
|
$RechargeOrderModel::TYPE => 2,
|
|
$RechargeOrderModel::SCENE_TYPE => 5,
|
|
$RechargeOrderModel::STATUS => 1,
|
|
$RechargeOrderModel::MERCHANT_ID => $merchant_id,
|
|
$RechargeOrderModel::ADD_TIME => time(),
|
|
$RechargeOrderModel::VID => $vid,
|
|
$RechargeOrderModel::REMARK => '积分商城换购消费' . $price . '元',
|
|
);
|
|
$RechargeOrderModel->addOrder($rechargeItem);
|
|
$VipModel->toSetDec($vMap, $VipModel::BALANCE, $price);//减去余额
|
|
}
|
|
|
|
$sMap = array(
|
|
$ScoreMallModel::ID => $scoreOrder[$SMExchangeModel::SCORE_MALL_ID],
|
|
$ScoreMallModel::MERCHANT_ID => $merchant_id,
|
|
);
|
|
$ScoreMallModel->toSetDec($sMap, $ScoreMallModel::NUM, 1);//执行积分商品数量减1
|
|
$VipModel->toSetDec($vMap, $VipModel::INTEGRAL, $integral);//减去积分
|
|
|
|
$IntegralOrderModel = D('RetailIntegralOrder');
|
|
$integralItem = array(
|
|
$IntegralOrderModel::TYPE => 3,
|
|
$IntegralOrderModel::VID => $vid,
|
|
$IntegralOrderModel::INTEGRAL => $integral,
|
|
$IntegralOrderModel::ADD_TIME => time(),
|
|
$IntegralOrderModel::MERCHANT_ID => $merchant_id,
|
|
$IntegralOrderModel::STORE_ID => $vip[$VipModel::STORE_ID],
|
|
$IntegralOrderModel::REMARK => "积分商城兑换商品扣除" . $integral . "积分",
|
|
);
|
|
//添加积分使用记录
|
|
$add = $IntegralOrderModel->addOrder($integralItem);
|
|
if ($add) {
|
|
$eMap = array(
|
|
$SMExchangeModel::ID => $scoreOrder[$SMExchangeModel::ID],
|
|
);
|
|
$SMExchangeModel->updateOrder($eMap, array($SMExchangeModel::STATE => 1));
|
|
$result['status'] = 1;
|
|
$result['msg'] = '加入兑换订单成功';
|
|
} else {
|
|
$result['status'] = 0;
|
|
$result['msg'] = '兑换失败';
|
|
}
|
|
return $result;
|
|
}
|
|
} |