|
|
@@ -592,6 +592,97 @@ class OrderService extends BaseService
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
+ * 售后或退款
|
|
|
+ * @param $userId
|
|
|
+ * @param $params
|
|
|
+ * @return array|false
|
|
|
+ */
|
|
|
+ public function after($userId, $params)
|
|
|
+ {
|
|
|
+ $id = isset($params['id'])? $params['id'] : 0;
|
|
|
+ if ($id <= 0) {
|
|
|
+ $this->error = '请选择订单';
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+ // 缓存锁
|
|
|
+ $cacheLockKey = "caches:orders:after_lock:{$userId}_{$id}";
|
|
|
+ if (RedisService::get($cacheLockKey)) {
|
|
|
+ $this->error = '订单处理中~';
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+ // 商品数据
|
|
|
+ RedisService::set($cacheLockKey, ['params' => $params, 'user_id' => $userId], rand(3, 5));
|
|
|
+
|
|
|
+ // 用户信息
|
|
|
+ $userInfo = MemberModel::where(['id' => $userId, 'mark' => 1])
|
|
|
+ ->select(['id', 'openid', 'mobile', 'nickname', 'realname', 'balance', 'status'])
|
|
|
+ ->first();
|
|
|
+ $status = isset($userInfo['status']) ? $userInfo['status'] : 0;
|
|
|
+ if (empty($userInfo) || $status != 1) {
|
|
|
+ $this->error = 1045;
|
|
|
+ RedisService::clear($cacheLockKey);
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+ // 订单信息
|
|
|
+ $info = $this->model->where(['id'=> $id,'mark'=>1])
|
|
|
+ ->select(['id','order_no','after_type','refund_status','pay_total','status'])
|
|
|
+ ->first();
|
|
|
+ $orderNo = isset($info['order_no'])? $info['order_no'] : '';
|
|
|
+ $status = isset($info['status'])? $info['status'] : 0;
|
|
|
+ $refundStatus = isset($info['refund_status'])? $info['refund_status'] : 0;
|
|
|
+ if(empty($info) || empty($orderNo)){
|
|
|
+ $this->error = '订单信息不存在';
|
|
|
+ RedisService::clear($cacheLockKey);
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+ if($status == 1 ){
|
|
|
+ $this->error = '订单未支付';
|
|
|
+ RedisService::clear($cacheLockKey);
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+ if($status == 4 ){
|
|
|
+ $this->error = '订单已完成';
|
|
|
+ RedisService::clear($cacheLockKey);
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+ if($refundStatus>0 && $refundStatus != 4){
|
|
|
+ $this->error = '订单售后处理中';
|
|
|
+ RedisService::clear($cacheLockKey);
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+ $afterType = isset($params['after_type'])? $params['after_type'] : 1;
|
|
|
+ $afterRealname = isset($params['after_realname'])? $params['after_realname'] : '';
|
|
|
+ $afterPhone = isset($params['after_phone'])? $params['after_phone'] : '';
|
|
|
+ $afterRemark = isset($params['after_remark'])? $params['after_remark'] : '';
|
|
|
+ if($afterType == 1){
|
|
|
+ if(empty($afterRealname) || empty($afterPhone) || empty($afterRemark)){
|
|
|
+ $this->error = '请填写售后信息';
|
|
|
+ RedisService::clear($cacheLockKey);
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ $data = [
|
|
|
+ 'after_type'=> $afterType,
|
|
|
+ 'after_realname'=> $afterRealname,
|
|
|
+ 'after_phone'=> ,
|
|
|
+ 'after_remark'=> isset($params['after_remark'])? $params['after_remark'] : '',
|
|
|
+ 'refund_remark'=> isset($params['refund_remark'])? $params['refund_remark'] : '',
|
|
|
+ 'refund_status'=> 3,
|
|
|
+ 'update_time'=>time()
|
|
|
+ ];
|
|
|
+ $this->model->where(['id'=> $id])->update($data);
|
|
|
+ return ['id'=> $id];
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
* 今日数量统计数据
|
|
|
* @param $userId
|
|
|
* @param int $type
|