255], [['referral_commission',], 'string'], ['pay_price', 'compare', 'compareValue' => 0.01, 'operator' => '>='], ['is_delete', 'default', 'value'=> Recharge::IS_DELETE_NO], [['name', 'pay_price', 'send_price', 'sort'],'required', 'on'=> [self::SCENARIO_ADD, self::SCENARIO_EDIT]], [['id'],'required', 'on'=> [self::SCENARIO_DEL, self::SCENARIO_EDIT]], ['search_key', 'string', 'on' => self::SCENARIO_LIST] ]; } /** * {@inheritdoc} */ public function attributeLabels() { return [ 'id' => 'ID', 'store_id' => 'Store ID', 'pay_price' => '支付金额', 'send_price' => '赠送金额', 'name' => '充值名称', 'is_delete' => 'Is Delete', 'sort' => '权重', 'send_integral' => '赠送积分', ]; } public function scenarios() { $scenarios = parent::scenarios(); return $scenarios; } public function saveRecharge() { if ($this->validate()) { $t = \Yii::$app->db->beginTransaction(); if ($this->scenario == self::SCENARIO_EDIT) { $model = Recharge::findOne(['id' => $this->id]); } else { $model = new Recharge(); } $model->attributes = $this->attributes; if (!$model->save()) { $t->rollBack(); return [ 'code' => 1, 'msg' => $model->getErrorSummary(false)[0] ]; } $t->commit(); return [ 'code' => 0, 'msg' => '保存成功' ]; } else { // 验证失败:$errors 是一个包含错误信息的数组 return [ 'code' => 1, "msg" => $this->getErrorSummary(false)[0] ]; } } public function searchRecharge() { $levelType = Level::find()->where(['store_id' => get_store_id(), 'is_delete' => Level::NOT_DELETE])->asArray()->all(); $query = Recharge::find(); $query->where(['is_delete' => Recharge::IS_DELETE_NO, 'store_id' => $this->store_id])->orderBy("sort desc,id desc"); // 搜索 if ($this->search_key) { $query->andWhere(['like', 'name', $this->search_key]); } $list = pagination_make($query); foreach ($list['list'] as &$val) { $val['created_at'] = date('Y-m-d H:i:s', $val['created_at']); $referral_commission = json_decode($val['referral_commission'], true); if (is_array($referral_commission) && !empty($referral_commission)) { $combined_values = ''; foreach ($referral_commission as $commission) { $combined_values .= $commission['value'] . ','; } $combined_values = rtrim($combined_values, ','); $val['referral_commission_number'] = $combined_values; } $assignMembers = []; $members = (json_decode($val['assign_member'], true)); foreach ((array)$members as $memberId) { foreach ($levelType as $type) { if ($memberId == $type['level']) { $assignMembers[] = $type['name']; break; } else if ($memberId == 0) { $assignMembers[] = '所有人'; break; } } } $val['assign_member_names'] = implode(', ', $assignMembers); foreach ($levelType as $type) { if ($val['level_up'] == $type['level']) { $val['level_up_name'] = $type['name']; break; } if ($val['level_up'] == 0) { $val['level_up_name'] = '无'; break; } } } $recharge_setting = RechargeSettingForm::getRechargeSettingList(); return [ 'code' => 0, 'msg' => 'success', 'data' => [ 'data' => $list['list'], 'recharge_setting' => $recharge_setting, 'pageNo' => $list['pageNo'], 'level_type' => $levelType, 'totalCount' => $list['totalCount'] ] ]; } public function delRecharge() { if ($this->validate()) { $t = \Yii::$app->db->beginTransaction(); if ($this->scenario !== self::SCENARIO_DEL) { return [ 'code' => 1, 'msg' => '删除失败' ]; } $model = Recharge::findOne(['id' => $this->id]); $model->is_delete = Recharge::IS_DELETE_YES; if (!$model || !$model->save()) { $t->rollBack(); return [ 'code' => 1, 'msg' => $model->getErrorSummary(false)[0] ]; } $t->commit(); return [ 'code' => 0, 'msg' => '删除成功' ]; // 所有输入数据都有效 all inputs are valid } else { // 验证失败:$errors 是一个包含错误信息的数组 return [ 'code' => 1, "msg" => $this->getErrorSummary(false)[0] ]; } } public static function getRechargeList() { return Recharge::find()->where(['is_delete' => Recharge::IS_DELETE_NO])->orderBy(['sort desc,id desc'])->select('*')->asArray()->all(); } public function search() { $query = RcCommissionLog::find() ->alias('l') ->leftJoin(['u' => User::tableName()], 'l.user_id = u.id') ->leftJoin(['ro' => ReOrder::tableName()], 'l.order_id = ro.id') ->select([ 'l.*', 'u.avatar_url', 'u.binding', 'u.nickname', 'ro.order_no', 'ro.pay_price', 'ro.send_price', ]) ->andWhere(['ro.is_delete' => 0]) ->orderBy(['l.id' => SORT_DESC]); if ($this->store_id > 0) { $query->andWhere(['ro.store_id' => $this->store_id]); } if ($this->user_id > 0) { $query->andWhere(['ro.user_id' => $this->user_id]); } if ($this->name) { $query->andWhere(['like', 'u.nickname', $this->name]); } if ($this->phone) { $query->andWhere(['like', 'u.binding', $this->phone]); } if ($this->order_no) { $query->andWhere(['like', 'ro.order_no', $this->order_no]); } $data = pagination_make($query); $data['data'] = $data['list']; unset($data['list']); $rechargeMap = Recharge::find()->where(['store_id' => $this->store_id])->indexBy('id')->all(); foreach ($data['data'] as &$item) { $item['created_at'] = date('Y-m-d H:i:s', $item['created_at']); if (isset($rechargeMap[$item['recharge_id']])) { $item['recharge_name'] = $rechargeMap[$item['recharge_id']]['name']; } if ($item['bind_type'] == 2) { $item['parent_id_two'] = $item['parent_id']; $item['amount_two'] = $item['amount']; } if (!empty($item['parent_id']) && $item['bind_type'] == 1) { $user = User::findOne($item['parent_id']); if ($user && !empty($user['binding'])) { $saasUser = SaasUser::findOne(['mobile' => $user['binding']]); if ($saasUser) { $item['superior_nickname'] = $saasUser['name']; } } $userTwo = User::findOne($user['parent_id']); if ($userTwo && !empty($userTwo['binding'])) { $saasUser = SaasUser::findOne(['mobile' => $userTwo['binding']]); if ($saasUser) { $item['superior_nickname_two'] = $saasUser['name']; } } } if (!empty($item['parent_id_two']) && $item['bind_type'] == 2) { $userTwo = User::findOne($item['parent_id_two']); if ($userTwo && !empty($userTwo['binding'])) { $saasUser = SaasUser::findOne(['mobile' => $userTwo['binding']]); if ($saasUser) { $item['superior_nickname_two'] = $saasUser['name']; } } $find = RcCommissionLog::findOne(['order_id' => $item['order_id'], 'user_id' => $item['user_id'], 'bind_type' => 1]); $user = User::findOne($find['parent_id']); if ($user && !empty($user['binding'])) { $saasUser = SaasUser::findOne(['mobile' => $user['binding']]); if ($saasUser) { $item['superior_nickname'] = $saasUser['name']; } } } $item['level_one_bonus'] = ($item['bind_type'] == 1 && $item['type'] != 21) ? $item['amount'] : 0; $item['level_two_bonus'] = ($item['bind_type'] == 2) ? $item['amount_two'] : 0; $item['referral_commission'] = ($item['type'] == 21) ? $item['amount'] : 0; } return [ 'code' => 0, 'data' => $data, 'sql' => $query->createCommand()->getRawSql(), ]; } }