get('p_sources'); } public static function tableName() { return '{{%coin_issue_coin}}'; } public function rules() { return [ [['name', 'symbol', 'total', 'owner', 'introduction', 'category', 'platform_id', 'chain_id', 'charge_unit_id', 'charge'], 'required'], [['total', 'category', 'platform_id', 'chain_id', 'charge_unit_id'], 'integer'], ['introduction', 'string', 'length' => [1, 20]], ['symbol', 'string', 'length' => [1, 6]], ['msg', 'string', 'length' => [1, 10]], ['name', 'string', 'length' => [1, 20]], #['status', 'in', 'range' => [1, 2, 0]], ['name', 'verfiyName'], ['symbol', 'verfiySymbol'], ['total', 'verfiyAmount'] ]; } public function verfiyName($attribute, $params) { $model = CoinIssueCoin::find()->where(['name' => $this->name, 'platform_id' => $this->platform_id])->orderBy('id desc')->one(); if (false == $model) { return true; } if (0 == $model->category) { $this->addError($attribute, '名称已存在'); return false; } } public function verfiySymbol($attribute, $params) { $model = CoinIssueCoin::find()->where(['symbol' => $this->symbol, 'platform_id' => $this->platform_id])->orderBy('id desc')->one(); if (false == $model) { return true; } if (0 == $model->category) { $this->addError($attribute, '名称已存在'); return false; } } public function verfiyAmount($attribute, $params) { $issue_record = CoinIssueRecord::find()->where(['platform_id' => $this->platform_id])->sum('total'); $issue_record = empty($issue_record) ? 0 : $issue_record; if ($issue_record + $this->$attribute >= 900) { $this->addError($attribute, '最大发行量900亿,目前已发行'. $issue_record. '亿'); return false; } } public function scenarios() { $scenarios = [ self:: SCENARIOS_CREATE => ['name', 'symbol', 'total', 'owner', 'introduction', 'category', 'platform_id', 'chain_id', 'charge_unit_id', 'charge'], self:: SCENARIOS_UPDATE => ['status', 'msg'], self:: SCENARIOS_CANCEL => ['status'], ]; return array_merge(parent:: scenarios(), $scenarios); } public function attributeLabels() { return [ 'name' => 'Token全称', 'symbol' => 'Token简称', 'total' => '发行数量', 'owner' => '接收地址', 'introduction' => 'Token简介', 'category' => '是否增发', 'chain_id' => '平行链名称', 'msg' => '失败原因', 'status' => '状态', 'charge_unit_id' => '手续费', ]; } public function attributes() { return array_merge(parent::attributes(), ['charge', 'charge_unit', 'url', 'chain_name']); } /** * 获取状态数组 * @return array */ public static function getAgentStatus() { return [ self::STATUS_SUCCESS => '发行成功', self::STATUS_FAIL => '发行失败', ]; } public function getChain() { return $this->hasOne(CoinPlatformWithHold::className(), ['id' => 'chain_id']); } public function getPlatform() { return $this->hasOne(CoinPlatform::className(), ['id' => 'platform_id']); } public function getGas() { return $this->hasOne(CoinSupportedCoin::className(), ['id' => 'charge_unit_id']); } public function getTransfer() { return $this->hasOne(CoinIssueChainRecord::className(), ['issue_coin_id' => 'id']); } }