Merge remote-tracking branch 'origin/dev' into dev

master
zhengyongxing 5 years ago
commit 13e399ddea

@ -162,6 +162,7 @@ class BaseController extends Controller {
$data_save['pay_status'] = 1;
$data_save['order_number'] = $data['trade_no'];
$data_save['payed_time'] = time();
$map_s['pay_order_number'] = $data['out_trade_no'];
$r = $spend->where($map_s)->save($data_save);
$this->set_ratio($d['pay_order_number']);
@ -235,12 +236,19 @@ class BaseController extends Controller {
if(empty($d)){return false;}
if($d['pay_status'] == 0){
$data_save['pay_status'] = 1;
$data_save['payed_time'] = time();
$data_save['order_number'] = $data['trade_no'];
$data_save['check_sign'] = get_check_sign($d['user_id'],$data['trade_no'],$d['pay_amount'],$d['create_time']);
$map_s['pay_order_number'] = $data['out_trade_no'];
$r = $deposit->where($map_s)->save($data_save);
if($r !== false){
$user = M("user","tab_");
$userInfo = $user->where(array('id' => $d['user_id']))->find();
$before = $userInfo['balance'];
$after = $before + $d['pay_amount'];
$valueDetailLogModel = new \Sdk\Model\ValueDetailLogModel();
$valueDetailLogModel->add($d['user_id'], $before, $d['pay_amount'], $after, $valueDetailLogModel::BALANCE, "平台币抵扣".$d['pay_amount']);
$user->where("id=".$d['user_id'])->setInc("balance",$d['pay_amount']);
$user->where("id=".$d['user_id'])->setInc("cumulative",$d['pay_amount']);
//APP邀请好友消费奖励平台币

@ -523,6 +523,10 @@ class BaseController extends RestController{
$data_spned['discount_amount'] = $param["discount_amount"];// 折扣价格
$data_spned['pay_time'] = NOW_TIME;
$data_spned['pay_status'] = $param["pay_status"];
if ($param["pay_status"] == 1)
$data_spned['payed_time'] = time();
else
$data_spned['payed_time'] = 0;
$data_spned['pay_game_status'] = 0;
$data_spned['extend'] = $param['extend'];
$data_spned['pay_way'] = $param["pay_way"];
@ -901,7 +905,6 @@ class BaseController extends RestController{
public function update_pay_info($id, $data) {
if (!$id || !$data) return 0;
$info['pay_order_number'] = $order_id;
$r = M("pay_info", "tab_")->where([
'id' => $id
])->save($data);
@ -909,4 +912,5 @@ class BaseController extends RestController{
return $r;
}
}

@ -10,6 +10,7 @@ use Org\SqpaySDK\Sqpay;
use Org\HeepaySDK\Heepay;
use Qiniu\json_decode;
use Think\Log;
use Sdk\Model\ValueDetailLogModel;
class PayH5Controller extends BaseController{
@ -1060,6 +1061,7 @@ ADD COLUMN `pay_url` text NULL AFTER `check_sign`;
}
$result = false;
$notice_order = []; // 需要更新的通知游戏订单
$valueDetailLogModel = new ValueDetailLogModel(); // 记录数值增减 (绑定币 平台币)
// 先扣绑币
$request['pay_way'] = C('PAY_WAY.BIND_COIN');
$user_play = M("UserPlay", "tab_");
@ -1078,12 +1080,14 @@ ADD COLUMN `pay_url` text NULL AFTER `check_sign`;
$user_play->where($user_play_map)->save(array('bind_balance' => 0)); // 扣绑定币
$request['price'] = $user_play_data['bind_balance'];
$result = $this->add_spend($request);
$valueDetailLogModel->add($request['user_id'], $user_play_data['bind_balance'], -$user_play_data['bind_balance'], 0, $valueDetailLogModel::BANDBI, "绑定币消费:".$user_play_data['pay_amount']);
$this->set_ratio($request['pay_order_number'], 2); // 游戏返利
$notice_order[] = $request['pay_order_number'];
}
$request['pay_order_number'] = $pay_order_number;
$request['pay_way'] = 0; // 扣平台币
$real_price = $price - $user_play_data['bind_balance'];
$valueDetailLogModel->add($request['user_id'], $balance, -$real_price, 0, $valueDetailLogModel::BALANCE, "平台币消费:".$real_price);
$user->where(array('id' => $request["user_id"]))->setDec("balance", $real_price);
//$this->set_message(0,"fail", $request['pay_order_number']);
@ -1092,6 +1096,8 @@ ADD COLUMN `pay_url` text NULL AFTER `check_sign`;
$this->set_ratio($request['pay_order_number'], 1); // 游戏返利
$notice_order[] = $request['pay_order_number'];
} else { // 绑定币足够扣
$valueDetailLogModel->add($request['user_id'], $user_play_data['bind_balance'], -$request['price'], $user_play_data['bind_balance'] - $request['price'], $valueDetailLogModel::BANDBI, "绑定币消费.".$request['price']);
$user_play->where($user_play_map)->setDec('bind_balance', $request['price']); // 扣绑定币
$result = $this->add_spend($request);
$this->set_ratio($request['pay_order_number'], 2); // 游戏返利

@ -973,7 +973,17 @@ class UserController extends BaseController
}
$res_msg = array();
if ($result > 0) {
try { // 注册成功通知
$url = C('TASK_URL')."/game-event/register";
post_async($url, [
'form_params' => [
'user_id' => $result,
]
]);
} catch(\Exception $e) {
}
$this -> set_message(200, "success", "注册成功");
} else {

@ -0,0 +1,183 @@
<?php
namespace Sdk\Model;
use Think\Model;
class PayLimitConfModel extends Model {
const PAY_TYPE_ALIPAY = "alipay";
const PAY_TYPE_WXPAY = "wxpay";
const PAY_TYPE_YEEPAY = "yeepay";
const PAY_TYPE_SQPAY = "sqpay";
protected $_validate = array(
);
/* 自动完成规则 */
protected $_auto = array(
);
/**
* 构造函数
* @param string $name 模型名称
* @param string $tablePrefix 表前缀
* @param mixed $connection 数据库连接信息
*/
public function __construct($name = '', $tablePrefix = '', $connection = '') {
/* 设置默认的表前缀 */
$this->tablePrefix ='tab_';
/* 执行构造方法 */
parent::__construct($name, $tablePrefix, $connection);
}
// 累加充值金额
public function sum($userId, $price, $payType) {
$now = date("His");
$nowDate = date('Ymd');
// 找出所有匹配的规则 时间范围满足的所有总流水限额
$limits = $this->where(array(
'start_time' => array('egt', $now),
'end_time' => array('lt', $now),
'pay_type' => $payType
))->select();
foreach ($limits as $k => $v) {
$this->updateClearTime($v, $userId); // 清零 时间、限额
if ($v['limit_type'] == 'all_total' // 总流水
|| ($v['limit_type'] == 'user_total' && $v['user_id'] == $userId) // 单玩家总流水
) {
$this->where(array(
'id' => $v['id']
))->save(array(
'now_value' => $v['now_value'] + $price,
'update_time' => time(),
));
}
if ($v['limit_type'] == 'user_one' && $v['user_id'] == $userId) { // 单玩家单笔
}
if ($v['limit_type'] == 'user_total' && $v['user_id'] == $userId) { // 单玩家总流水
}
}
}
// 检查限额 如果超出返回false
public function check($userId, $price, $payType) {
$now = date("His");
$nowDate = date('Ymd');
// 找出所有匹配的规则 时间范围满足的所有总流水限额
$limits = $this->where(array(
'start_time' => array('egt', $now),
'end_time' => array('lt', $now),
'pay_type' => $payType
))->select();
foreach ($limits as $k => $v) {
$this->updateClearTIme($v, $userId);
if ($v['limit_type'] == 'all_total') { // 总流水
// 每日 每周 每月
if ($v['limit_time_type'] == "day" || $v['limit_time_type'] == "week" || $v['limit_time_type'] == "month") {
if ($v['now_value'] + $price > $v['limit_value']) {
return false;
}
}
// 固定日期
if ($v['limit_time_type'] == 'fix') {
if ($v['fix_date'] == $nowDate) {
if ($v['now_value'] + $price > $v['limit_value']) {
return false;
}
}
}
}
if ($v['limit_type'] == 'user_one' && $v['user_id'] == $userId) { // 单玩家单笔
// 每日 每周 每月
if ($v['limit_time_type'] == "day" || $v['limit_time_type'] == "week" || $v['limit_time_type'] == "month") {
if ($price > $v['limit_value']) {
return false;
}
}
// 固定日期
if ($v['limit_time_type'] == 'fix') {
if ($v['fix_date'] == $nowDate) {
if ($price > $v['limit_value']) {
return false;
}
}
}
}
if ($v['limit_type'] == 'user_total' && $v['user_id'] == $userId) { // 单玩家总流水
// 每日 每周 每月
if ($v['limit_time_type'] == "day" || $v['limit_time_type'] == "week" || $v['limit_time_type'] == "month") {
if ($v['now_value'] + $price > $v['limit_value']) {
return false;
}
}
// 固定日期
if ($v['limit_time_type'] == 'fix') {
if ($v['fix_date'] == $nowDate) {
if ($v['now_value'] + $price > $v['limit_value']) {
return false;
}
}
}
}
}
}
// 更新清零时间
private function updateClearTIme($conf, $userId) {
if (!$conf) return;
$data = array();
$startTime = substr($conf['start_time'], 0, 2) * 3600;
$startTime += substr($conf['start_time'], 2, 2) * 60;
$startTime += substr($conf['start_time'], 4, 2);
$isClear = false;
if ($conf['limit_time_type'] == 'day') {
$startTime += strtotime(date('Ymd'));
// 清零时间小于开始时间 需要清零
if ($conf['clear_time'] < $startTime) {
$isClear = true;
}
}
if ($conf['limit_time_type'] == 'week') {
$week_now = date("w")-1;
$week_start= strtotime("-{$week_now} days",time());
$startTime += $week_start;
// 清零时间小于开始时间 需要清零
if ($conf['clear_time'] < $startTime) {
$isClear = true;
}
}
if ($conf['limit_time_type'] == 'month') {
$startTime += strtotime(date('Ym'));
// 清零时间小于开始时间 需要清零
if ($conf['clear_time'] < $startTime) {
$isClear = true;
}
}
if ($isClear) {
$this->where(array(
'id' => $conf['id']
))->save(array(
'now_value' => 0,
'clear_time' => time(),
));
}
}
}

@ -0,0 +1,45 @@
<?php
namespace Sdk\Model;
use Think\Model;
class ValueDetailLogModel extends Model {
const BALANCE = "balance"; // 余额明细 平台币
const BANDBI = "bangbi"; // 绑币明细
protected $_validate = array(
);
/* 自动完成规则 */
protected $_auto = array(
);
/**
* 构造函数
* @param string $name 模型名称
* @param string $tablePrefix 表前缀
* @param mixed $connection 数据库连接信息
*/
public function __construct($name = '', $tablePrefix = '', $connection = '') {
/* 设置默认的表前缀 */
$this->tablePrefix ='tab_';
/* 执行构造方法 */
parent::__construct($name, $tablePrefix, $connection);
}
// 新增数值变动记录
public function add($uid, $before, $value, $after, $type, $remark='', $payType=1) {
$this->add(array(
'user_id' => $uid,
'before_value' => $before,
'value' => $value,
'after_value' => $after,
'create_time' => time(),
'type' => $type,
'remark' => $remark,
'pay_type' => $payType
));
}
}
Loading…
Cancel
Save