| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287 |
- <?php
- namespace common\models\order;
- use common\enums\AddonsEnum;
- use common\enums\OrderStatusEnum;
- use common\enums\StatusEnum;
- use common\models\user\User;
- use Yii;
- use yii\db\Exception;
- /**
- * This is the model class for table "{{%order_action}}".
- *
- *
- * @property int $id 动作id
- * @property int $order_id 订单id
- * @property string $action 动作内容
- * @property int $member_id 操作人id
- * @property string|null $member_name 操作人
- * @property int $order_status 订单状态
- * @property string $order_status_text 订单状态名称
- * @property int|null $status 状态[-1:删除;0:禁用;1启用]
- * @property int|null $created_at
- * @property int|null $updated_at
- */
- class OrderAction extends \common\models\base\BaseActiveRecord
- {
- /**
- * {@inheritdoc}
- */
- public static function tableName()
- {
- return '{{%order_action}}';
- }
- /**
- * {@inheritdoc}
- */
- public function rules()
- {
- return [
- [['order_id', 'order_status'], 'required'],
- [['order_id', 'member_id', 'order_status', 'status', 'created_at', 'updated_at'], 'integer'],
- [['action', 'order_status_text'], 'string', 'max' => 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);
- }
- }
|