Manufacturer.php 3.98 KB
<?php

namespace domain\manufacturer;

use Yii;
use common\models\SysUser                   as SysUserModel;
use common\models\SysUserProfile            as SysUserProfileModel;
use domain\manufacturer\models\Manufacturer as ManufacturerModel;
use Exception;

/**

 * Class Manufacturer
 * @package domain\manufacturer
 */
class Manufacturer
{
    /**
     * 创建厂商
     * @param $item
     */
    static function create($item)
    {
        $transaction = Yii::$app->db->beginTransaction();
        try {
            $manufacturerModel = Yii::createObject(ManufacturerModel::className());
            $manufacturerModel->manufacture_no = self::getManufactureNo();
            $manufacturerModel->name = $item["name"]; // 厂商名称
            $manufacturerModel->phone = $item['phone'];
            $result = $manufacturerModel->save();
            $saveResult = false;
            if ($result) {
                $model = Yii::createObject(SysUserModel::className());
                $model->username = self::getSysUserName();
                $model->password = "1234567";
                $model->is_enable = 1;
                $model->save();

                $manufacturerModel->sys_user_id = $model->id;
                $manufacturerModel->save();

                $profile = Yii::createObject(SysUserProfileModel::className());
                $profile->sys_user_id = $model->id;
                $profile->realname = $item["name"];
                $profile->email = "";
                $profile->mobile = "";

                $saveResult = $profile->save();
            }
            if($saveResult) {
                $transaction->commit();
            } else {
                $transaction->rollBack();
            }
            return $saveResult;
        } catch (Exception $e) {
            $transaction->rollBack();
            var_dump($e->getTraceAsString());
            return false;
        }
    }

    /**
     * @param $id
     * @param $item
     * @return null|static
     */
    static function update($id, $item)
    {
        $manufacturerModel = ManufacturerModel::findOne($id);
        if (isset($item['name']) && !empty($item['name'])) {
            $manufacturerModel->name = $item['name'];
        }
        if (isset($item['phone'])) {
            $manufacturerModel->phone = $item["phone"]; // 厂商电话
        }
        $manufacturerModel->save();

        return $manufacturerModel;
    }

    /**
     * @param $id
     * @param $item
     * @return null|static
     */
    public static function delete($id)
    {
        $manufacturerModel = ManufacturerModel::findOne($id);
        if (empty($manufacturerModel)) {
            return false;
        }
        if (isset($manufacturerModel->sys_user_id)) {
            SysUserModel::deleteAll(["id" => $manufacturerModel->sys_user_id]); // 删除登录用户
            SysUserProfileModel::deleteAll(["sys_user_id" => $manufacturerModel->sys_user_id]); // 删除登录用户
        }

        return ManufacturerModel::deleteAll(["id" => $id]);
    }

    /**
     * 获取十六进制厂商编号
     */
    private static function getManufactureNo()
    {
        $findManufacturer = ManufacturerModel::find()->orderBy("id desc")->asArray()->one();
        if (empty($findManufacturer)) {
            return "0001";
        }
        $dataNo = hexdec($findManufacturer['manufacture_no']) + 1;
        $dataNo = (string) dechex($dataNo);
        if (strlen($dataNo) == 1) {
            $dataNo = "000" . $dataNo;
        } else if (strlen($dataNo) == 2) {
            $dataNo = "00" . $dataNo;
        } else if (strlen($dataNo) == 3) {
            $dataNo = "0" . $dataNo;
        }
        return $dataNo;
    }

    /**
     * 获取登录账号名称
     */
    private static function getSysUserName()
    {
        $sysUserName = 'CS'.rand(10000000, 99999999);
        $sysUser = SysUserModel::find()->filterWhere(["like", "username", $sysUserName])->one();
        if ($sysUser) {
            self::getSysUserName();
        }
        return $sysUserName;
    }
}