Manufacturer.php 5.18 KB
<?php

namespace domain\manufacturer;

use domain\admin\models\AuthUsersRoles;
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->is_manufacture = 1; // 厂商用户
                $model->save();

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

                // 绑定管理员角色
                $roleId = isset(Yii::$app->params['MANUFACTURE_ROLE_ID']) ? Yii::$app->params['MANUFACTURE_ROLE_ID'] : "";
                if ($roleId) {
                    $authUsersRole = new AuthUsersRoles();
                    $authUsersRole->role_id = $roleId;
                    $authUsersRole->sys_user_id = $model->id;
                    $authUsersRole->save();
                }


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

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

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

        $manufacturerModel->save();
        if (isset($item['name']) && !empty($item['name'])) {
            $sysUserProfileModel = SysUserProfileModel::findOne(["sys_user_id" => $manufacturerModel->sys_user_id]);
            if ($sysUserProfileModel) {
                $sysUserProfileModel->realname = $item['name'];
                if (isset($item['phone'])) {
                    $sysUserProfileModel->mobile = $item["phone"]; // 厂商电话
                }
                $sysUserProfileModel->save();
            }
        }
        $sysUserModel->username = $item['username'];
        $sysUserModel->password = $item['password'];
        $resultSave = $sysUserModel->save();

        return $resultSave;
    }

    /**
     * @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::updateAll(["is_enable" => 0], ["id" => $manufacturerModel->sys_user_id]); // 删除登录用户
            //SysUserProfileModel::deleteAll(["sys_user_id" => $manufacturerModel->sys_user_id]); // 删除登录用户
        }

        return ManufacturerModel::updateAll(["is_delete" => 1], ["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 = sprintf('%04X', $dataNo);

        return strtoupper($dataNo);
    }

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