first commit

This commit is contained in:
2026-01-25 18:18:09 +08:00
commit 509312e604
8136 changed files with 2349298 additions and 0 deletions

View File

@ -0,0 +1,344 @@
<?php
namespace app\controllers\api;
use app\common\PaginationHelper;
use app\models\Clue;
use app\models\Oauth;
use app\models\OauthAccount;
use app\models\OauthAccountLocal;
use app\models\User;
use app\models\UserAdvertiser;
use app\models\Xiansuo;
use http\Url;
use Yii;
use yii\base\DynamicModel;
use yii\data\Pagination;
use yii\filters\AccessControl;
use yii\helpers\ArrayHelper;
use yii\validators\Validator;
use yii\web\Controller;
use yii\web\Response;
use yii\filters\VerbFilter;
use app\models\LoginForm;
use app\models\ContactForm;
use yii\web\UrlManager;
class UserController extends Controller
{
public function beforeAction($action)
{
parent::beforeAction($action);
if (Yii::$app->user->isGuest) {
return $this->redirect('/login');
}
return true;
}
/**
* {@inheritdoc}
*/
public function actions()
{
return [
'error' => [
'class' => 'yii\web\ErrorAction',
],
'captcha' => [
'class' => 'yii\captcha\CaptchaAction',
'fixedVerifyCode' => YII_ENV_TEST ? 'testme' : null,
],
];
}
public function actionIndex()
{
$query = User::find();
$provider = PaginationHelper::createDataProvider($query);
$models = $provider->getModels();
foreach ($models as &$item) {
$item = $item->toArray();
$item['created_at'] = date('Y-m-d H:i:s', $item['updated_at']);
$localAccountList = ArrayHelper::getColumn(UserAdvertiser::find()->where(['is_delete' => 0, 'user_id' => $item])->asArray()->all(), 'advertiser_name');
$item['advertiser_status'] = implode(',', $localAccountList);
}
return $this->asJson([
'count' => $provider->totalCount,
'code' => 0,
'data' => $models,
'message' => 'ok',
]);
}
public function actionCreate()
{
$model = DynamicModel::validateData(Yii::$app->request->post(), [
// ===== 用户名 =====
[['username'], 'required'],
[['username'], 'trim'],
[['username'], 'string', 'min' => 4, 'max' => 20],
[['username'], 'match', 'pattern' => '/^[a-zA-Z0-9_]+$/', 'message' => '账号只能包含字母、数字和下划线'],
[['username'], 'unique', 'targetClass' => User::class, 'message' => '该账号已存在'],
// ===== 密码 =====
[['password'], 'required'],
[['password'], 'string', 'min' => 6, 'max' => 32],
[['password'], 'match',
'pattern' => '/^(?=.*[A-Za-z])(?=.*\d).+$/',
'message' => '密码必须包含字母和数字'
],
]);
if ($model->hasErrors()) {
return $this->asJson([
'code' => 1,
'msg' => current($model->getFirstErrors())
]);
}
$username = Yii::$app->request->post('username');
$password = Yii::$app->request->post('password');
$model = new User();
$model->username = $username;
$model->auth_key = \Yii::$app->security->generateRandomString();
$model->password_hash = \Yii::$app->security->generatePasswordHash($password);
$model->email = "{$username}.com";
$model->role = 'USER';
$model->created_at = time();
$model->updated_at = time();
$model->save();
// var_dump($model->errors);
return $this->asJson([
'code' => 0,
'message' => 'ok'
]);
}
public function actionUpdate()
{
}
public function actionDelete()
{
}
/**
*
*
* @return Response
*/
public function actionXiansuo()
{
$query = Clue::find()->filterWhere(
['like', 'telephone', Yii::$app->request->get('phone')],
)->andFilterWhere(
['like', 'name', Yii::$app->request->get('name')]
)->andFilterWhere(
['like', 'note', Yii::$app->request->get('note')]
)->orderBy('id DESC');
$provider = PaginationHelper::createDataProvider($query, limit: Yii::$app->request->get('limit'));
return $this->asJson([
'count' => $provider->totalCount,
'code' => 0,
'data' => $provider->models,
'message' => 'ok',
]);
}
/**
*
* @url api/oauth-manage
* @return Response
*/
public function actionOauthManage()
{
$query = Oauth::find();
$provider = PaginationHelper::createDataProvider($query);
foreach ($provider->getModels() as &$item) {
$item['updated_at'] = date('Y-m-d H:i:s', $item['updated_at']);
}
return $this->asJson([
'count' => $provider->totalCount,
'code' => 0,
'data' => $provider->models,
'message' => 'ok',
]);
}
/**
* @url api/oauth-manage-config
*/
public function actionOauthManageConfig()
{
}
/**
* @url api/init-oauth-admin
*/
public function actionInitOauthAdmin()
{
$uid = Yii::$app->request->post('uid');
$tr = Yii::$app->db->beginTransaction();
// Yii::$app->oceanengine->
// 取出授权的account
$oauthAdmin = Oauth::find()->where(['uid' => $uid])->one();
$oauthAdmin->is_init = 1;
$oauthAdmin->save();
// $accounts = json_decode($oauthAdmin->advertiser_ids, true);
// 清理之前所有授权的账户
OauthAccount::updateAll(['admin_uid' => $uid], ['is_delete' => 1]);
$accountList = Yii::$app->oceanengine->getAdminChildAccount($uid);
// 本地推账户
OauthAccountLocal::updateAll(['is_delete' => 1], ['admin_uid' => $uid]);
// 更新account 数据
foreach ($accountList['data']['list'] ?? [] as $account) {
$accountQuery = OauthAccount::find()->where(['account_id' => $account['account_id']])->one() ?: new OauthAccount();
$accountQuery->is_delete = 0;
$accountQuery->admin_uid = $uid;
$accountQuery->account_name = $account['account_name'];
$accountQuery->account_id = strval($account['account_id']);
$accountQuery->save();
$accountLocalList = Yii::$app->oceanengine->getAccountLocal($uid);
foreach ($accountLocalList['data']['list'] ?? [] as $accountLocal) {
$query = OauthAccountLocal::find()->where(['advertiser_id' => $accountLocal['advertiser_id']])->one() ?: new OauthAccountLocal();
$query->is_delete = 0;
$query->admin_uid = $uid;
$query->account_id = strval($account['account_id']);
$query->advertiser_name = strval($accountLocal['advertiser_name']);
$query->advertiser_id = strval($accountLocal['advertiser_id']);
$query->save();
}
}
$tr->commit();
return $this->asJson([
'code' => 0,
'data' => [],
'message' => 'ok',
]);
}
public function actionUpdateClue()
{
$clueId = Yii::$app->request->post('clue_id');
$note = Yii::$app->request->post('note');
$name = Yii::$app->request->post('name');
$query = Clue::find()->where(['clue_id' => $clueId])->one();
$query->note = $note;
$query->name = $name;
$query->save();
return $this->asJson([
'code' => 0,
'data' => [],
'message' => 'ok',
]);
}
public function actionOauthAccountLocalUpdate()
{
$advIds = Yii::$app->request->post('advertiser_ids');
$isDelete = [];
foreach ($advIds as $advVal) {
list($id, $accountId) = explode('|', $advVal);
if (!isset($isDelete[$accountId])) {
OauthAccountLocal::updateAll(['is_active' => 0], ['account_id' => $accountId]);
$isDelete[$accountId] = true;
}
$query = OauthAccountLocal::find()->where(['id' => $id])->one();
$query->is_active = 1;
$query->save();
}
return $this->asJson([
'code' => 0,
'data' => [],
'message' => 'ok',
]);
}
public function actionResetPassword()
{
$password = Yii::$app->request->post('password');
$id = Yii::$app->request->post('id');
$model = User::find()->where(['id' => $id])->one();
$model->auth_key = \Yii::$app->security->generateRandomString();
$model->password_hash = \Yii::$app->security->generatePasswordHash($password);
return $this->asJson([
'code' => 0,
'data' => [],
'message' => $model->save() ? '修改成功' : '修改失败',
]);
}
// public function actionEdit()
// {
// $password = Yii::$app->request->post('password');
// $id = Yii::$app->request->post('id');
// $model = User::find()->where(['id' => $id])->one();
// $model->auth_key = \Yii::$app->security->generateRandomString();
// $model->password_hash = \Yii::$app->security->generatePasswordHash($password);
//
// return $this->asJson([
// 'code' => 0,
// 'data' => [],
// 'message' => $model->save() ? '修改成功' : '修改失败',
// ]);
// }
public function actionUpdateUser()
{
$userId = Yii::$app->request->post('user_id');
$select = Yii::$app->request->post('select', '');
UserAdvertiser::updateAll(['is_delete' => 1], ['user_id' => $userId]);
try {
$select = explode(',', $select);
} catch (\Throwable $exception) {
$select = [];
}
foreach ($select as $item) {
$query = UserAdvertiser::find()->where(['user_id' => $userId, 'local_id' => $item])->one();
if ($query) {
$query->is_delete = 0;
} else {
$model = OauthAccountLocal::find()->where(['id' => $item])->one();
$query = new UserAdvertiser();
$query->advertiser_id = $model->advertiser_id;
$query->user_id = $userId;
$query->local_id = $userId;
$query->advertiser_name = $model->advertiser_name;
}
$query->save();
}
return $this->asJson([
'code' => 0,
'data' => [],
'message' => 'ok',
]);
}
}

View File

@ -0,0 +1,26 @@
<?php
namespace app\controllers\api\v1;
use app\controllers\BaseController;
use app\models\Brand;
use app\models\BrandRunway;
use yii\web\Controller;
class IndexController extends BaseController
{
public function actionMain()
{
$model = BrandRunway::find()->where(['is_deleted' => 0])->limit(2)->asArray()->all();
foreach ($model as &$item) {
$item['cover'] = 'http://static.23cm.cn/11133613f321ed5eae0dc597f3451cae/37fdd980e520e8632f271730a30e88fc-h480';
$item['brand_name'] = Brand::findOne($item['brand_id'])->name;
}
return $this->asJson([
'code' => 0,
'data' => $model
]);
}
}

View File

@ -0,0 +1,39 @@
<?php
namespace app\controllers\api\v1;
use app\common\ImageHelper;
use app\components\serializers\Serializer;
use app\controllers\BaseController;
use app\models\Brand;
use app\models\BrandRunway;
use app\models\BrandRunwayImages;
use yii\helpers\ArrayHelper;
use yii\web\Controller;
class RunwayController extends BaseController
{
public function actionView()
{
$runwayId = \Yii::$app->request->get('id');
$runway = BrandRunway::find()->where(['id' => $runwayId])->asArray()->one();
$runway['brand_name'] = Brand::findOne($runway['brand_id'])->name;
$runwayImages = BrandRunwayImages::find()->where(['runway_id' => $runway['id']])->asArray()->all();
foreach ($runwayImages as &$image) {
$image['s'] = ImageHelper::imageMogr2H480(\Yii::$app->params['cdnAddress'] . $image['name']);
$image['xl'] = ImageHelper::imageMogr2H1080(\Yii::$app->params['cdnAddress'] . $image['name']);
}
return $this->asJson([
'code' => 0,
'data' => [
'info' => $runway,
'images' => $runwayImages
]
]);
}
}