|
|
@@ -469,25 +469,25 @@ class OrderService extends BaseService
|
|
|
/**
|
|
|
* 订单取消
|
|
|
* @param $userId
|
|
|
- * @param $id
|
|
|
+ * @param $orderId
|
|
|
* @return array|false
|
|
|
*/
|
|
|
- public function cancel($userId, $id)
|
|
|
+ public function cancel($userId, $orderId)
|
|
|
{
|
|
|
- if ($id <= 0) {
|
|
|
+ if ($orderId <= 0) {
|
|
|
$this->error = '请选择订单';
|
|
|
return false;
|
|
|
}
|
|
|
|
|
|
// 缓存锁
|
|
|
- $cacheLockKey = "caches:orders:cancel_lock:{$userId}_{$id}";
|
|
|
+ $cacheLockKey = "caches:orders:cancel_lock:{$userId}_{$orderId}";
|
|
|
if (RedisService::get($cacheLockKey)) {
|
|
|
$this->error = '订单处理中~';
|
|
|
return false;
|
|
|
}
|
|
|
|
|
|
// 商品数据
|
|
|
- RedisService::set($cacheLockKey, ['order_id' => $id, 'user_id' => $userId], rand(3, 5));
|
|
|
+ RedisService::set($cacheLockKey, ['order_id' => $orderId, 'user_id' => $userId], rand(3, 5));
|
|
|
|
|
|
// 用户信息
|
|
|
$userInfo = MemberModel::where(['id' => $userId, 'mark' => 1])
|
|
|
@@ -501,7 +501,7 @@ class OrderService extends BaseService
|
|
|
}
|
|
|
|
|
|
// 订单信息
|
|
|
- $info = $this->model->where(['id' => $id, 'mark' => 1])
|
|
|
+ $info = $this->model->where(['id' => $orderId, 'mark' => 1])
|
|
|
->select(['id', 'order_no', 'pay_total', 'status'])
|
|
|
->first();
|
|
|
$orderNo = isset($info['order_no']) ? $info['order_no'] : '';
|
|
|
@@ -517,16 +517,16 @@ class OrderService extends BaseService
|
|
|
RedisService::clear($cacheLockKey);
|
|
|
return false;
|
|
|
}
|
|
|
- $orderGoods = OrderGoodsModel::where(['order_no'=> $orderNo,'mark'])
|
|
|
+ $orderGoods = OrderGoodsModel::where(['order_no'=> $orderNo,'mark'=>1])
|
|
|
->select(['goods_id','num','sku_id'])
|
|
|
->get();
|
|
|
DB::beginTransaction();
|
|
|
if($orderGoods){
|
|
|
foreach($orderGoods as $goods){
|
|
|
- $id = isset($goods['goods_id'])?$goods['goods_id']:0;
|
|
|
+ $goodsId = isset($goods['goods_id'])?$goods['goods_id']:0;
|
|
|
$num = isset($goods['num'])?$goods['num']:0;
|
|
|
$skuId = isset($goods['sku_id'])?$goods['sku_id']:0;
|
|
|
- if($id && !GoodsModel::where(['id'=>$id])->update(['stock'=>DB::raw("stock + {$num}"),'update_time'=>time()])){
|
|
|
+ if($goodsId && !GoodsModel::where(['id'=>$goodsId])->update(['stock'=>DB::raw("stock + {$num}"),'update_time'=>time()])){
|
|
|
DB::rollBack();
|
|
|
RedisService::clear($cacheLockKey);
|
|
|
$this->error = '商品库存处理失败';
|
|
|
@@ -544,9 +544,11 @@ class OrderService extends BaseService
|
|
|
|
|
|
$this->error = '取消订单成功';
|
|
|
$this->model->where(['user_id' => $userId, 'mark' => 0])->where('update_time', '<=', time() - 300)->delete();
|
|
|
- $this->model->where(['id' => $id])->update(['mark' => 0, 'update_time' => time()]);
|
|
|
+ OrderGoodsModel::where(['order_no' => $orderNo, 'mark' => 0])->where('update_time', '<=', time() - 300)->delete();
|
|
|
+ $this->model->where(['id' => $orderId])->update(['mark' => 0, 'update_time' => time()]);
|
|
|
+ OrderGoodsModel::where(['order_no' => $orderNo])->update(['mark' => 0, 'update_time' => time()]);
|
|
|
DB::commit();
|
|
|
- return ['id' => $id];
|
|
|
+ return ['id' => $orderId];
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
@@ -811,61 +813,6 @@ class OrderService extends BaseService
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
- * 获取订单审核状态
|
|
|
- * @param $userId
|
|
|
- * @return array|mixed
|
|
|
- */
|
|
|
- public function checkOrderStatus($userId)
|
|
|
- {
|
|
|
- $cacheKey = "caches:orders:checkOrder:{$userId}";
|
|
|
- $data = RedisService::get($cacheKey);
|
|
|
- if ($data) {
|
|
|
- return $data;
|
|
|
- }
|
|
|
-
|
|
|
- $data = $this->model->with(['confirm'])->where(function ($query) {
|
|
|
- $query->where(function ($query) {
|
|
|
- $query->where('status', 2)->where('confirm_at', '>=', date('Y-m-d H:i:s', time() - 3600));
|
|
|
- })->orWhere(function ($query) {
|
|
|
- $query->where('status', 9)->where('confirm_at', '>=', date('Y-m-d H:i:s', time() - 600));
|
|
|
- })->orWhere(function ($query) {
|
|
|
- $query->where('status', 3)->where('confirm_at', '>=', date('Y-m-d H:i:s', time() - 600));
|
|
|
- })->orWhere('status', 1);
|
|
|
- })
|
|
|
- ->where(['user_id' => $userId, 'mark' => 1])
|
|
|
- ->select(['id', 'order_no', 'user_id', 'goods_id', 'status'])
|
|
|
- ->orderBy('id', 'desc')
|
|
|
- ->first();
|
|
|
- $data = $data ? $data->toArray() : [];
|
|
|
- $result = [];
|
|
|
- if ($data) {
|
|
|
- $orderId = isset($data['id']) ? $data['id'] : 0;
|
|
|
- $status = isset($data['status']) ? $data['status'] : 0;
|
|
|
- $goodsId = isset($data['goods_id']) ? $data['goods_id'] : 0;
|
|
|
- $confirmOrder = isset($data['confirm']) ? $data['confirm'] : [];
|
|
|
- $confirmOrderId = isset($confirmOrder['id']) ? $confirmOrder['id'] : 0;
|
|
|
- $confirmOrderUser = isset($confirmOrder['user']) ? $confirmOrder['user'] : [];
|
|
|
- $realname = isset($confirmOrderUser['realname']) ? $confirmOrderUser['realname'] : '';
|
|
|
- if ($status == 9) {
|
|
|
- $message = "抱歉,订单已被其他师傅接走";
|
|
|
- } else if ($status == 2) {
|
|
|
- $message = "恭喜您,抢单成功,请前往完成订单!";
|
|
|
- } else if ($status == 3) {
|
|
|
- $message = "恭喜您,订单已经完成!";
|
|
|
- } else {
|
|
|
- $pickerCount = $this->model->where(['goods_id' => $goodsId, 'mark' => 1])->whereIn('status', [1, 2])->count('id');
|
|
|
- $pickerCount = $pickerCount <= 3 ? 3 : $pickerCount;
|
|
|
- $message = "<p style='padding: 5px 0;'>正在抢单</p><p>({$pickerCount}位师傅正在抢单中)</p>";
|
|
|
- }
|
|
|
- $result = ['order_id' => $orderId, 'goods_id' => $goodsId, 'confirm_order_id' => $confirmOrderId, 'status' => $status, 'message' => $message];
|
|
|
- RedisService::set($cacheKey, $result, rand(10, 20));
|
|
|
- }
|
|
|
-
|
|
|
- return $result;
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
- /**
|
|
|
* 物流查询
|
|
|
* @param $id
|
|
|
* @return array|false|mixed
|
|
|
@@ -883,59 +830,6 @@ class OrderService extends BaseService
|
|
|
|
|
|
$cacheKey = "caches:kd100_{$id}";
|
|
|
$data = RedisService::get($cacheKey);
|
|
|
- $data = [
|
|
|
- [
|
|
|
- "time" => "2025-12-24 11:29:23",
|
|
|
- "context" => "您的快件已投递,收件人在[沙岗镇绕城路天猫1号店妈妈驿站]取件(凭取件码签收),如有疑问请联系站点:13086796129,快递员电话:13086796129,投诉电话:15278929512。感谢使用圆通速递,期待再次为您服务!",
|
|
|
- "ftime" => "2025-12-24 11:29:23",
|
|
|
- "areaCode" => "CN450521000000",
|
|
|
- "areaName" => "广西,北海市,合浦县",
|
|
|
- "status" => "签收",
|
|
|
- ],
|
|
|
- [
|
|
|
- "time" => "2025-12-22 17:29:40",
|
|
|
- "context" => "您的快件已到达[妈妈驿站]沙岗镇绕城路1号天猫店,请您及时取件,如有取件码问题或找不到包裹等问题,请联系站点:13086796129,快递员电话:13086796129,投诉电话:15278929512。感谢使用圆通速递,期待再次为您服务!",
|
|
|
- "ftime" => "2025-12-22 17:29:40",
|
|
|
- "areaCode" => "CN450521000000",
|
|
|
- "areaName" => "广西,北海市,合浦县",
|
|
|
- "status" => "派件",
|
|
|
- ],[
|
|
|
- "time" => "2025-12-22 17:28:40",
|
|
|
- "context" => "【广西北海市合浦县沙岗镇】的莫业琨(13086796129)正在派件,(有事先呼我,勿找平台,少一次投诉,多一份感恩)!如有疑问请联系网点:15278929512,投诉电话:15278929512。[95161和18521号段的上海号码为圆通快递员专属号码,请放心接听]",
|
|
|
- "ftime" => "2025-12-22 17:28:40",
|
|
|
- "areaCode" => "CN450521100000",
|
|
|
- "areaName" => "广西,北海市,合浦县,廉州镇",
|
|
|
- "status" => "派件",
|
|
|
- ],[
|
|
|
- "time" => "2025-12-22 02:44:12",
|
|
|
- "context" => "您的快件离开【南宁转运中心】,已发往【广西北海市合浦】",
|
|
|
- "ftime" => "2025-12-22 02:44:12",
|
|
|
- "areaCode" => "CN450108000000",
|
|
|
- "areaName" => "广西,南宁市,良庆区",
|
|
|
- "status" => "在途",
|
|
|
- ],[
|
|
|
- "time" => "2025-12-22 02:21:21",
|
|
|
- "context" => "您的快件已经到达【南宁转运中心】【物流问题无需找商家或平台,请致电(专属热线:95554)更快解决】",
|
|
|
- "ftime" => "2025-12-22 02:21:21",
|
|
|
- "areaCode" => "CN450108000000",
|
|
|
- "areaName" => "广西,南宁市,良庆区",
|
|
|
- "status" => "在途",
|
|
|
- ],[
|
|
|
- "time" => "2025-12-20 23:47:58",
|
|
|
- "context" => "您的快件离开【临海转运中心】,已发往【南宁转运中心】。预计【12月22日】到达【南宁市】,因运输距离较远,预计将在【22日晚上】为您更新快件状态,请您放心!",
|
|
|
- "ftime" => "2025-12-20 23:47:58",
|
|
|
- "areaCode" => "CN331082000000",
|
|
|
- "areaName" => "浙江,台州市,临海市",
|
|
|
- "status" => "在途",
|
|
|
- ],[
|
|
|
- "time" => "2025-12-20 23:45:58",
|
|
|
- "context" => "您的快件已经到达【临海转运中心】【物流问题无需找商家或平台,请致电(专属热线:95554)更快解决】",
|
|
|
- "ftime" => "2025-12-20 23:45:58",
|
|
|
- "areaCode" => "CN331082000000",
|
|
|
- "areaName" => "浙江,台州市,临海市",
|
|
|
- "status" => "在途",
|
|
|
- ]
|
|
|
- ];
|
|
|
if ($data) {
|
|
|
return $data;
|
|
|
}
|