200], [['member_name'], 'string', 'max' => 50], ]; } /** * {@inheritdoc} */ public function attributeLabels() { return [ 'id' => '动作id', 'order_id' => '订单id', 'action' => '动作内容', 'member_id' => '操作人id', 'member_name' => '操作人', 'order_status' => '订单状态', 'order_status_text' => '订单状态名称', 'status' => '状态[-1:删除;0:禁用;1启用]', 'created_at' => 'Created At', 'updated_at' => 'Updated At', ]; } /** * @param $action * @param $order_id * @param $order_status * @param $member_id * @param $member_name */ public static function create($action, $order_id, $order_status, $member_id, $member_name) { $model = new self(); $model = $model->loadDefaultValues(); $model->action = $action; $model->order_id = $order_id; $model->order_status = $order_status; $model->order_status_text = OrderStatusEnum::getValue($order_status); $model->member_id = $member_id; $model->member_name = $member_name; if (!$model->save()) throw new Exception($model->getErrorMessage()); } /** * @param $order_id * @return array|\yii\db\ActiveRecord[] */ public function findByOrderId($order_id) { return self::find() ->where(['order_id' => $order_id]) ->andWhere(['status' => StatusEnum::ENABLED]) ->orderBy('id desc') ->all(); } /** * 保存数据 * @param array $params * @return bool|OrderAction */ public static function setData(array $params){ try{ $model = new self(); $model->loadDefaultValues(); if(!$model->load($params,'') || !$model->save())throw new \Exception($model->getErrorMessage()); return $model; }catch(\Exception $e){ self::$static_error = $e->getMessage(); return false; } } /** * 获取订单日志数据 * @Author: lun * @DateTime: 2021/9/28 0028 9:49 * @Copyright: copyright (c) 2021 广东七件事集团 * @param array $cond * @param array $with * @param bool $is_array * @param string $select * @return array|\yii\db\ActiveRecord[] */ public static function getOrderAction(array $cond=[],array $with=[],bool $is_array=true,string $select='*') { $default_cond = [['<>','status',StatusEnum::DELETE]]; $cond = array_merge($default_cond,$cond); $query = self::find()->select($select); self::paramPack(['where'=>$cond,'with'=>$with],$query); $data = $query->orderBy('id desc')->asArray($is_array)->all(); return $data; } /** * 生成订单行为日志 * @param $type * @param array $params */ public static function handleAction($type, array $params) { switch ($type) { case 'create': self::createAction($params); break; case 'paid': self::paidAction($params); break; case 'delivery': self::deliveryAction($params); break; case 'finish': self::finishAction($params); break; case 'take_delivery': self::takeDeliveryAction($params); break; case 'close': self::closeAction($params); break; } } /** * 订单创建 * @Author: lun * @DateTime: 2021/11/16 0016 15:17 * @Copyright: copyright (c) 2021 广东七件事集团 * @param $params */ public static function createAction($params) { // 获取订单信息 $order = Order::find()->select('user_id,order_status')->where(['id' => $params['id']])->asArray()->one(); // 获取用户昵称 $user = User::find()->select('mobile,nickname')->where(['id' => $order['user_id']])->asArray()->one(); $action = "手机号为:{$user['mobile']} 用户订单创建成功"; $operator_name = $user['nickname'] ?? ''; self::create($action, $params['id'], $order['order_status'], $order['user_id'], $operator_name); } /** * 订单支付 * @Author: lun * @DateTime: 2021/11/16 0016 15:27 * @Copyright: copyright (c) 2021 广东七件事集团 * @param $params */ public static function paidAction($params) { // 获取订单信息 $order = Order::find()->select('user_id,order_status')->where(['id' => $params['id']])->asArray()->one(); // 获取用户昵称 $user = User::find()->select('id,mobile,nickname')->where(['id' => $order['user_id']])->asArray()->one(); $action = "手机号为:{$user['mobile']} 用户订单支付成功"; $operator_id = empty($params['operator_id']) ? $user['id'] : $params['operator_id']; $operator_name = empty($params['operator_name']) ? $user['nickname'] : $params['operator_name']; self::create($action, $params['id'], $order['order_status'], $operator_id, $operator_name); } /** * 订单完成过售后日志处理 * @param $params * @return OrderAction */ public static function finishAction($params) { $action = '订单完成'; $operator_id = !empty($params['operator_id'])? $params['operator_id'] : 0; $operator_name = !empty($params['operator_name']) ? $params['operator_name'] : '系统'; $orderStatus = Order::find()->select('order_status')->where(['id' => $params['id']])->scalar(); self::create($action, $params['id'], $orderStatus, $operator_id, $operator_name); } /** * 发货/修改发货信息日志处理 * @param $params */ public static function deliveryAction($params) { // 获取订单信息 $order_express = OrderExpress::find()->select('order_id,order_detail_ids,created_at,updated_at')->where(['id' => $params['id']])->asArray()->one(); // 发货内容只允许修改一次,所以生成时间=修改时间则表示发货,否则代表修改发货信息 if ($order_express['created_at'] == $order_express['updated_at']) { $action = "订单详情ID:{$order_express['order_detail_ids']},发货成功"; } else { $action = "订单详情ID:{$order_express['order_detail_ids']},修改发货成功"; } // 获取订单状态 $orderStatus = Order::find()->select('order_status')->where(['id' => $order_express['order_id']])->scalar(); // 保存内容 self::create($action, $order_express['order_id'], $orderStatus, $params['operator_id'], $params['operator_name']); } /** * 确认收货 * @Author: lun * @DateTime: 2021/10/7 0007 10:17 * @Copyright: copyright (c) 2021 广东七件事集团 * @param $params */ public static function takeDeliveryAction($params) { $operator_id = !empty($params['operator_id'])? $params['operator_id'] : 0; $operator_name = !empty($params['operator_name']) ? $params['operator_name'] : '系统'; $action = $operator_name . '确认收货'; // 获取订单状态 $orderStatus = Order::find()->select('order_status')->where(['id' => $params['id']])->scalar(); // 保存内容 self::create($action, $params['id'], $orderStatus, $operator_id, $operator_name); } /** * 关闭订单 * @Author: lun * @DateTime: 2021/11/16 0016 15:55 * @Copyright: copyright (c) 2021 广东七件事集团 * @param $params */ public static function closeAction($params) { $action = "订单关闭"; $operator_id = $params['operator_id']; $operator_name = $params['operator_name']; // 获取订单状态 // $orderStatus = Order::find()->select('order_status')->where(['id' => $params['id']])->scalar(); $order = Order::getOne([['id' => $params['id']]], true, [], false, 'order_status, marketing_type'); if($order['marketing_type'] == AddonsEnum::ADDONS_NAME_DEPOSIT_PRESALE){ $orderStatus = OrderStatusEnum::REPEAL; }else{ $orderStatus = $order['order_status']; } self::create($action, $params['id'], $orderStatus, $operator_id, $operator_name); } }