|
|
@@ -28,6 +28,7 @@ use crmeb\repositories\{
|
|
|
use app\admin\model\system\ShippingTemplates;
|
|
|
use crmeb\utils\Pink as PinkJob;
|
|
|
use crmeb\utils\Auto as AutoJob;
|
|
|
+
|
|
|
/**
|
|
|
* TODO 订单Model
|
|
|
* Class StoreOrder
|
|
|
@@ -274,7 +275,7 @@ class StoreOrder extends BaseModel
|
|
|
* @throws \think\exception\DbException
|
|
|
*/
|
|
|
|
|
|
- public static function cacheKeyCreateOrder($uid, $key, $addressId, $payType, $useIntegral = false, $couponId = 0, $mark = '', $combinationId = 0, $pinkId = 0, $seckill_id = 0, $bargain_id = 0, $activity_id = 0, $live_id = 0, $test = false, $isChannel = 0, $shipping_type = 1, $real_name = '', $phone = '', $storeId = 0, $use_integral_pink = 0, $isAutoPink = 0,$is_gift=0,$spread=0,$is_num=0,$pink_num=1,$line_id=0,$is_wdc=0)
|
|
|
+ public static function cacheKeyCreateOrder($uid, $key, $addressId, $payType, $useIntegral = false, $couponId = 0, $mark = '', $combinationId = 0, $pinkId = 0, $seckill_id = 0, $bargain_id = 0, $activity_id = 0, $live_id = 0, $test = false, $isChannel = 0, $shipping_type = 1, $real_name = '', $phone = '', $storeId = 0, $use_integral_pink = 0, $isAutoPink = 0, $is_gift = 0, $spread = 0, $is_num = 0, $pink_num = 1, $line_id = 0, $is_wdc = 0)
|
|
|
{
|
|
|
self::beginTrans();
|
|
|
try {
|
|
|
@@ -327,13 +328,13 @@ class StoreOrder extends BaseModel
|
|
|
}
|
|
|
$deduction = $seckill_id || $bargain_id || $combinationId || $activity_id || $live_id;
|
|
|
if ($deduction) {
|
|
|
- $auto_pink=StoreOrder::where('uid',$uid)->where('combination_id','<>',0)->where('is_del',0)->where('is_ok',0)->find();
|
|
|
- if($auto_pink){
|
|
|
+ $auto_pink = StoreOrder::where('uid', $uid)->where('combination_id', '<>', 0)->where('is_del', 0)->where('is_ok', 0)->find();
|
|
|
+ if ($auto_pink) {
|
|
|
return self::setErrorInfo('拼团正在进行!', true);
|
|
|
}
|
|
|
- $top_num=sys_config('pink_suceess_num');
|
|
|
- $tnum=StoreOrder::where('refund_status', '=', '0')->where('uid', $uid)->where('pink_id','<>',0)->where('pink_num',0)->where('is_ok',1)->whereTime('add_time','today')->count();
|
|
|
- if($top_num<=$tnum){
|
|
|
+ $top_num = sys_config('pink_suceess_num');
|
|
|
+ $tnum = StoreOrder::where('refund_status', '=', '0')->where('uid', $uid)->where('pink_id', '<>', 0)->where('pink_num', 0)->where('is_ok', 1)->whereTime('add_time', 'today')->count();
|
|
|
+ if ($top_num <= $tnum) {
|
|
|
return self::setErrorInfo('今日拼团次数已用尽!', true);
|
|
|
}
|
|
|
$couponId = 0;
|
|
|
@@ -411,7 +412,7 @@ class StoreOrder extends BaseModel
|
|
|
self::rollbackTrans();
|
|
|
return [
|
|
|
'total_price' => $priceGroup['totalPrice'],
|
|
|
- 'pay_price' =>$payPrice,
|
|
|
+ 'pay_price' => $payPrice,
|
|
|
'pay_postage' => $payPostage,
|
|
|
'coupon_price' => $couponPrice,
|
|
|
'deduction_price' => $deductionPrice,
|
|
|
@@ -435,7 +436,7 @@ class StoreOrder extends BaseModel
|
|
|
'total_postage' => $priceGroup['storePostage'],
|
|
|
'coupon_id' => $couponId,
|
|
|
'coupon_price' => $couponPrice,
|
|
|
- 'pay_price' =>$payPrice,
|
|
|
+ 'pay_price' => $payPrice,
|
|
|
'pay_postage' => $payPostage,
|
|
|
'deduction_price' => $deductionPrice,
|
|
|
'paid' => 0,
|
|
|
@@ -443,7 +444,7 @@ class StoreOrder extends BaseModel
|
|
|
'use_integral' => $usedIntegral,
|
|
|
'gain_integral' => $gainIntegral,
|
|
|
'use_integral_pink' => $use_integral_pink,
|
|
|
- 'use_wtc'=>$payPrice,
|
|
|
+ 'use_wtc' => $payPrice,
|
|
|
'mark' => htmlspecialchars($mark),
|
|
|
'combination_id' => $combinationId,
|
|
|
'pink_id' => $pinkId,
|
|
|
@@ -457,13 +458,13 @@ class StoreOrder extends BaseModel
|
|
|
'unique' => $key,
|
|
|
'shipping_type' => $shipping_type,
|
|
|
'is_auto_pink' => $isAutoPink,
|
|
|
- 'is_gift' =>$is_gift,
|
|
|
- 'spread' =>$spread,
|
|
|
- 'close_time' => $isAutoPink ? bcadd(time(), 12 * 3600) : 0 , //默认付款12小时后没有成团,自动关闭
|
|
|
- 'ok_num'=>0,
|
|
|
- 'pink_num'=>$pink_num,
|
|
|
- 'line_id'=>$line_id,
|
|
|
- 'is_wdc'=>$is_wdc,
|
|
|
+ 'is_gift' => $is_gift,
|
|
|
+ 'spread' => $spread,
|
|
|
+ 'close_time' => $isAutoPink ? bcadd(time(), 12 * 3600) : 0, //默认付款12小时后没有成团,自动关闭
|
|
|
+ 'ok_num' => 0,
|
|
|
+ 'pink_num' => $pink_num,
|
|
|
+ 'line_id' => $line_id,
|
|
|
+ 'is_wdc' => $is_wdc,
|
|
|
];
|
|
|
if ($shipping_type === 2) {
|
|
|
$orderInfo['verify_code'] = self::getStoreCode();
|
|
|
@@ -678,7 +679,7 @@ class StoreOrder extends BaseModel
|
|
|
if (!$orderInfo) return self::setErrorInfo('订单不存在!');
|
|
|
if ($orderInfo['paid']) return self::setErrorInfo('该订单已支付!');
|
|
|
// if($orderInfo['pay_type'] != 'yue') return self::setErrorInfo('该订单不能使用余额支付!');
|
|
|
- if($orderInfo['pink_id']>0 && !StorePink::isPinkStatus($orderInfo['pink_id'])) self::setErrorInfo('该团已关闭!');
|
|
|
+ if ($orderInfo['pink_id'] > 0 && !StorePink::isPinkStatus($orderInfo['pink_id'])) self::setErrorInfo('该团已关闭!');
|
|
|
|
|
|
$userInfo = User::getUserInfo($uid);
|
|
|
if ($userInfo['now_money'] < $orderInfo['pay_price'])
|
|
|
@@ -699,6 +700,7 @@ class StoreOrder extends BaseModel
|
|
|
self::checkTrans($res);
|
|
|
return $res;
|
|
|
}
|
|
|
+
|
|
|
/**
|
|
|
* 积分支付
|
|
|
* @param $order_id
|
|
|
@@ -713,16 +715,16 @@ class StoreOrder extends BaseModel
|
|
|
public static function integralPay($order_id, $uid, $formId = '')
|
|
|
{
|
|
|
$orderInfo = self::where('uid', $uid)->where('order_id', $order_id)->where('is_del', 0)->find();
|
|
|
- @file_put_contents('qq.txt',11);
|
|
|
+ @file_put_contents('qq.txt', 11);
|
|
|
if (!$orderInfo) return self::setErrorInfo('订单不存在!');
|
|
|
if ($orderInfo['paid']) return self::setErrorInfo('该订单已支付!');
|
|
|
// if($orderInfo['pay_type'] != 'yue') return self::setErrorInfo('该订单不能使用余额支付!');
|
|
|
- if($orderInfo['pink_id']>0 && !StorePink::isPinkStatus($orderInfo['pink_id'])) self::setErrorInfo('该团已关闭!');
|
|
|
+ if ($orderInfo['pink_id'] > 0 && !StorePink::isPinkStatus($orderInfo['pink_id'])) self::setErrorInfo('该团已关闭!');
|
|
|
|
|
|
$userInfo = User::getUserInfo($uid);
|
|
|
if ($userInfo['integral'] < $orderInfo['pay_price'])
|
|
|
return self::setErrorInfo(['status' => 'pay_deficiency', 'msg' => '积分不足' . floatval($orderInfo['pay_price'])]);
|
|
|
- @file_put_contents('ww.txt',11);
|
|
|
+ @file_put_contents('ww.txt', 11);
|
|
|
self::beginTrans();
|
|
|
$res1 = false !== User::bcDec($uid, 'integral', $orderInfo['pay_price'], 'uid');
|
|
|
$res2 = UserBill::expend('购买商品', $uid, 'integral', 'integral_pay_product', $orderInfo['pay_price'], $orderInfo['id'], $userInfo['integral'], '积分支付' . floatval($orderInfo['pay_price']) . '元购买商品');
|
|
|
@@ -738,6 +740,7 @@ class StoreOrder extends BaseModel
|
|
|
self::checkTrans($res);
|
|
|
return $res;
|
|
|
}
|
|
|
+
|
|
|
/**
|
|
|
* wdc支付
|
|
|
* @param $order_id
|
|
|
@@ -755,9 +758,9 @@ class StoreOrder extends BaseModel
|
|
|
if (!$orderInfo) return self::setErrorInfo('订单不存在!');
|
|
|
if ($orderInfo['paid']) return self::setErrorInfo('该订单已支付!');
|
|
|
// if($orderInfo['pay_type'] != 'yue') return self::setErrorInfo('该订单不能使用余额支付!');
|
|
|
- if($orderInfo['pink_id']>0 && !StorePink::isPinkStatus($orderInfo['pink_id'])) self::setErrorInfo('该团已关闭!');
|
|
|
- if($orderInfo['line_id']){
|
|
|
- $res= self::paySuccess($order_id, 'wdc', $formId);//wdc支付成功
|
|
|
+ if ($orderInfo['pink_id'] > 0 && !StorePink::isPinkStatus($orderInfo['pink_id'])) self::setErrorInfo('该团已关闭!');
|
|
|
+ if ($orderInfo['line_id']) {
|
|
|
+ $res = self::paySuccess($order_id, 'wdc', $formId);//wdc支付成功
|
|
|
return $res;
|
|
|
}
|
|
|
$userInfo = User::getUserInfo($uid);
|
|
|
@@ -778,6 +781,7 @@ class StoreOrder extends BaseModel
|
|
|
self::checkTrans($res);
|
|
|
return $res;
|
|
|
}
|
|
|
+
|
|
|
/**
|
|
|
* 微信支付 为 0元时
|
|
|
* @param $order_id
|
|
|
@@ -794,7 +798,7 @@ class StoreOrder extends BaseModel
|
|
|
$orderInfo = self::where('uid', $uid)->where('order_id', $order_id)->where('is_del', 0)->find();
|
|
|
if (!$orderInfo) return self::setErrorInfo('订单不存在!');
|
|
|
if ($orderInfo['paid']) return self::setErrorInfo('该订单已支付!');
|
|
|
- if($orderInfo['pink_id']>0 && StorePink::isPinkStatus($orderInfo['pink_id'])) self::setErrorInfo('该团已关闭!');
|
|
|
+ if ($orderInfo['pink_id'] > 0 && StorePink::isPinkStatus($orderInfo['pink_id'])) self::setErrorInfo('该团已关闭!');
|
|
|
$userInfo = User::getUserInfo($uid);
|
|
|
self::beginTrans();
|
|
|
$res1 = UserBill::expend('购买商品', $uid, 'now_money', 'pay_product', $orderInfo['pay_price'], $orderInfo['id'], $userInfo['now_money'], '微信支付' . floatval($orderInfo['pay_price']) . '元购买商品');
|
|
|
@@ -863,20 +867,20 @@ class StoreOrder extends BaseModel
|
|
|
{
|
|
|
//Log::write("pay-OK",'error');
|
|
|
$order = self::where('order_id', $orderId)->find();
|
|
|
- @file_put_contents('ee.txt',11);
|
|
|
+ @file_put_contents('ee.txt', 11);
|
|
|
$resPink = true;
|
|
|
- $res1 = self::where('order_id', $orderId)->update(['paid' => 1, 'pay_type' => $paytype,'is_del'=>0, 'pay_time' => time()]);//订单改为支付
|
|
|
- @file_put_contents('rr.txt',11);
|
|
|
+ $res1 = self::where('order_id', $orderId)->update(['paid' => 1, 'pay_type' => $paytype, 'is_del' => 0, 'pay_time' => time()]);//订单改为支付
|
|
|
+ @file_put_contents('rr.txt', 11);
|
|
|
// Log::write("OK",'error');
|
|
|
- if ($order->combination_id && $res1 && !$order->refund_status && !$order->is_auto_pink) $resPink =PinkJob::create($order);//不是自动拼团的,创建拼团
|
|
|
- if ($order->combination_id && $res1 && !$order->refund_status && $order->is_auto_pink && !$order->is_ok) $resPink =AutoJob::create($order);//自动拼团
|
|
|
- @file_put_contents('rr.txt',11);
|
|
|
- if($order->line_id){
|
|
|
- Line::where('id',$order['line_id'])->save(['status'=>3]);
|
|
|
+ if ($order->combination_id && $res1 && !$order->refund_status && !$order->is_auto_pink) $resPink = PinkJob::create($order);//不是自动拼团的,创建拼团
|
|
|
+ if ($order->combination_id && $res1 && !$order->refund_status && $order->is_auto_pink && !$order->is_ok) $resPink = AutoJob::create($order);//自动拼团
|
|
|
+ @file_put_contents('rr.txt', 11);
|
|
|
+ if ($order->line_id) {
|
|
|
+ Line::where('id', $order['line_id'])->save(['status' => 3]);
|
|
|
}
|
|
|
$oid = self::where('order_id', $orderId)->value('id');
|
|
|
StoreOrderStatus::status($oid, 'pay_success', '用户付款成功');
|
|
|
- @file_put_contents('tt.txt',11);
|
|
|
+ @file_put_contents('tt.txt', 11);
|
|
|
// if ($order->combination_id && $res1) { //拼团商品消耗的积分
|
|
|
// $user = Db::name('user')->where('uid', '=', $order['uid'])->find();
|
|
|
// $cost_integral = Db::name('store_combination')->alias('c')->join('store_product p', 'c.product_id=p.id')->where('c.id', '=', $order->combination_id)->value('cost_integral'); //商品默认积分
|
|
|
@@ -887,32 +891,30 @@ class StoreOrder extends BaseModel
|
|
|
// UserBill::expend('拼团积分消耗', $user['uid'], 'integral', 'deduction', $order['use_integral_pink'], $order['id'], $integral, '拼团消耗积分,助力补贴');
|
|
|
// }
|
|
|
// }
|
|
|
- if(!$order->is_wdc && $res1){
|
|
|
+ if (!$order->is_wdc && $res1) {
|
|
|
User::directWdc($order);
|
|
|
}
|
|
|
- if(!$order->is_wdc && $res1 && !$order->combination_id){
|
|
|
+ if (!$order->is_wdc && $res1 && !$order->combination_id) {
|
|
|
self::gainUserIntegral($order);
|
|
|
}
|
|
|
- if($order->is_gift && $res1)
|
|
|
- {
|
|
|
- $product_id = StoreOrderCartInfo::where('oid',$order->id)->value('product_id');
|
|
|
- $old_level = StoreProduct::where('id',$product_id)->value('level');
|
|
|
- $level=SystemUserLevel::where('id',$old_level)->value('grade');
|
|
|
- $old_userlevel = User::where('uid',$order->uid)->value('level');
|
|
|
- $userlevel=SystemUserLevel::where('id',$old_userlevel)->value('grade');
|
|
|
- if($userlevel<$level)
|
|
|
- {
|
|
|
- UserLevel::setUserLevel($order->uid,$old_level);
|
|
|
+ if ($order->is_gift && $res1) {
|
|
|
+ $product_id = StoreOrderCartInfo::where('oid', $order->id)->value('product_id');
|
|
|
+ $old_level = StoreProduct::where('id', $product_id)->value('level');
|
|
|
+ $level = SystemUserLevel::where('id', $old_level)->value('grade');
|
|
|
+ $old_userlevel = User::where('uid', $order->uid)->value('level');
|
|
|
+ $userlevel = SystemUserLevel::where('id', $old_userlevel)->value('grade');
|
|
|
+ if ($userlevel < $level) {
|
|
|
+ UserLevel::setUserLevel($order->uid, $old_level);
|
|
|
}
|
|
|
}
|
|
|
- if(sys_config('spread_look')==1 && $order->spread>0) {
|
|
|
- $spread = User::where('uid',$order->uid)->value('spread_uid');
|
|
|
- User::setSpreadUid($order->uid,$order->spread);
|
|
|
- if(intval($spread)==0) {
|
|
|
+ if (sys_config('spread_look') == 1 && $order->spread > 0) {
|
|
|
+ $spread = User::where('uid', $order->uid)->value('spread_uid');
|
|
|
+ User::setSpreadUid($order->uid, $order->spread);
|
|
|
+ if (intval($spread) == 0) {
|
|
|
WechatUser::spreadSuccessGiveIntegral($order->spread);
|
|
|
}
|
|
|
}
|
|
|
- @file_put_contents('yy.txt',11);
|
|
|
+ @file_put_contents('yy.txt', 11);
|
|
|
//支付成功后
|
|
|
event('OrderPaySuccess', [$order, $formId]);
|
|
|
$res = $res1 && $resPink;
|
|
|
@@ -1083,7 +1085,7 @@ class StoreOrder extends BaseModel
|
|
|
if (!$pro || !$order) {
|
|
|
return self::setErrorInfo('数据库里找不到数据', true);
|
|
|
}
|
|
|
- $integral = $pro['give_integral']* $order['total_num'];
|
|
|
+ $integral = $pro['give_integral'] * $order['total_num'];
|
|
|
WechatUser::buyProductGiveIntegral($uid, $integral); //购物赠送积分
|
|
|
|
|
|
$p = $order['pay_price'] - $order['pay_postage'] - $order['cost'];
|
|
|
@@ -1123,7 +1125,9 @@ class StoreOrder extends BaseModel
|
|
|
$prevUser = null;
|
|
|
$pids = [];
|
|
|
UtilService::getparentid($userList, $uid, $pids);
|
|
|
+ @file_put_contents('jc.txt', "[" . date('Y-m-d H:i:s') . "]" . json_encode($pids) . PHP_EOL, 8);
|
|
|
foreach ($pids as $k => $v) {
|
|
|
+ @file_put_contents('jc.txt', "[" . date('Y-m-d H:i:s') . "]" . json_encode($levelPrizeLeave) . PHP_EOL, 8);
|
|
|
$level = UserLevel::getUserLevel($uid);
|
|
|
$level_id_origin = 0; //中奖用户等级
|
|
|
if ($level !== false) {
|
|
|
@@ -1140,11 +1144,14 @@ class StoreOrder extends BaseModel
|
|
|
}
|
|
|
$user['level_id'] = $level_id;
|
|
|
|
|
|
+ @file_put_contents('jc.txt', "[" . date('Y-m-d H:i:s') . "]" . json_encode($level_id) . PHP_EOL, 8);
|
|
|
if ($prevUser == null) {
|
|
|
+ @file_put_contents('jc.txt', "[" . date('Y-m-d H:i:s') . "]" . json_encode($level_id_origin) . PHP_EOL, 8);
|
|
|
if ($level_id <= $level_id_origin) {
|
|
|
continue;
|
|
|
}
|
|
|
if ($level_id == 1) {
|
|
|
+ @file_put_contents('jc.txt', "[" . date('Y-m-d H:i:s') . "]" . json_encode($level1_reward_rate) . PHP_EOL, 8);
|
|
|
if ($level1_reward_rate > 0) {
|
|
|
User::where('uid', $v)->inc('brokerage_price', bcmul($profit, $level1_reward_rate * 0.01, 2))->update();
|
|
|
$balance = User::where('uid', $v)->value('brokerage_price');
|
|
|
@@ -1154,6 +1161,7 @@ class StoreOrder extends BaseModel
|
|
|
$user['prevPrize'] = $level1_reward_rate;
|
|
|
}
|
|
|
} else if ($level_id == 2) {
|
|
|
+ @file_put_contents('jc.txt', "[" . date('Y-m-d H:i:s') . "]" . json_encode($level2_reward_rate) . PHP_EOL, 8);
|
|
|
if ($level2_reward_rate > 0) {
|
|
|
User::where('uid', $v)->inc('brokerage_price', bcmul($profit, $level2_reward_rate * 0.01, 2))->update();
|
|
|
$balance = User::where('uid', $v)->value('brokerage_price');
|
|
|
@@ -1163,6 +1171,7 @@ class StoreOrder extends BaseModel
|
|
|
$user['prevPrize'] = $level2_reward_rate;
|
|
|
}
|
|
|
} else if ($level_id == 3) {
|
|
|
+ @file_put_contents('jc.txt', "[" . date('Y-m-d H:i:s') . "]" . json_encode($level3_reward_rate) . PHP_EOL, 8);
|
|
|
if ($level3_reward_rate > 0) {
|
|
|
User::where('uid', $v)->inc('brokerage_price', bcmul($profit, $level3_reward_rate * 0.01, 2))->update();
|
|
|
$balance = User::where('uid', $v)->value('brokerage_price');
|