Commit a630d76e authored by 侯贺政's avatar 侯贺政

商品详情页模板

Signed-off-by: 侯贺政's avatarhouhezheng <houhezheng@romens.cn>
parent 272cc68c
...@@ -345,12 +345,14 @@ return [ ...@@ -345,12 +345,14 @@ return [
], ],
'extraPatterns' => [ 'extraPatterns' => [
'GET,OPTIONS setting-list' => 'setting-list', 'GET,OPTIONS setting-list' => 'setting-list',
'GET,OPTIONS setting-detals' => 'setting-detals', 'GET,OPTIONS setting-details' => 'setting-details',
'POST,OPTIONS setting-add' => 'setting-add', 'POST,OPTIONS setting-add' => 'setting-add',
'PUT,OPTIONS setting-update' => 'setting-update', 'PUT,OPTIONS setting-update' => 'setting-update',
'DELETE,OPTIONS setting-del' => 'setting-del', 'DELETE,OPTIONS setting-del' => 'setting-del',
'POST,OPTIONS associated-goods-import' => 'associated-goods-import', 'POST,OPTIONS associated-goods-import' => 'associated-goods-import',
'POST,OPTIONS associated-goods' => 'associated-goods', 'POST,OPTIONS associated-goods-add' => 'associated-goods-add',
'GET,OPTIONS associated-goods-list' => 'associated-goods-list',
'DELETE,OPTIONS associated-goods-del' => 'associated-goods-del',
] ]
], ],
], ],
......
<?php
namespace backend\controllers\v1\shopgoods;
use app\models\v1\shopgoods\ShopGoods;
use Yii;
use backend\controllers\v1\BaseController;
use yii\web\BadRequestHttpException;
use yii\web\HttpException;
use yii\web\ServerErrorHttpException;
class GoodsDetailSettingController extends BaseController
{
public $modelClass = 'app\models\v1\shopgoods\ShopGoodsDetailSetting';
/**
* @OA\GET(
* path="/backend/web/v1/shopgoods/goods-detail-settings/setting-list",
* tags={"商品管理"},
* summary="商品详情页模板列表(侯贺政)",
* description="商品详情页模板列表",
* @OA\Parameter(name="page",in="query",description="分页页码",@OA\Schema(type="int")),
* @OA\Parameter(name="NAME",in="query",description="版本名称",@OA\Schema(type="string")),
* @OA\Parameter(name="STATUS",in="query",description="状态(1:启用,0:禁用)",@OA\Schema(type="int")),
* @OA\parameter(name="START_TIME",in="query",description="生效开始时间(Y-m-d H:i:s)",@OA\Schema(type="date")),
* @OA\parameter(name="END_TIME",in="query",description="生效结束时间(Y-m-d H:i:s)",@OA\Schema(type="date")),
* @OA\Response(response=200,description="
* GUID:模板GUID,
* NAME:版式名称,
* NUM:已关联商品(个),
* STATUS:状态,1:启用,0:禁用,
* START_TIME:生效开始时间,
* END_TIME:生效结束时间"),
* security={{"Authorization": {}}}
* )
*/
public function actionSettingList()
{
$params = Yii::$app->request->queryParams;
$model = new $this->modelClass();
$model->attributes = $params;
if (!$model->validate()) {
Yii::$app->response->statusCode = 200;
return $model->errors;
}
$list = $model->goodsDetailList($params);
if (!$list->getModels()) {
throw new BadRequestHttpException('未找到符合条件的数据');
}
return $list;
}
/**
* @OA\GET(
* path="/backend/web/v1/shopgoods/goods-detail-settings/setting-details",
* tags={"商品管理"},
* summary="商品详情页模板设置详情(侯贺政)",
* description="商品详情页模板设置详情",
* @OA\Parameter(name="GUID",in="query",required=true,description="模板GUID",@OA\Schema(type="string")),
* @OA\Response(response=200,description="
* GUID:模板GUID,
* NAME:版式名称,
* NUM:已关联商品(个),
* STATUS:状态,1:启用,0:禁用,
* START_TIME:生效开始时间,
* END_TIME:生效结束时间,
* HEAD_PIC_URL:顶部内容,
* FOOT_PIC_URL:底部内容"),
* security={{"Authorization": {}}}
* )
*/
public function actionSettingDetails()
{
$guid = Yii::$app->request->get('GUID');
$model = new $this->modelClass();
$info = $model::findOne($guid);
if (!$info) {
throw new BadRequestHttpException('不存在该模板!');
}
return $info;
}
/**
* @OA\PUT(
* path="/backend/web/v1/shopgoods/goods-detail-settings/setting-update",
* tags={"商品管理"},
* summary="更新商品详情页模板设置(侯贺政)",
* description="更新商品详情页模板设置",
* @OA\RequestBody(
* required=true,
* description="注:时间格式为 Y-m-d H:i:s;启用按钮也用此接口,传入GUID,STATUS即可。",
* @OA\MediaType(
* mediaType="application/x-www-form-urlencoded",
* @OA\Schema(
* type="object",
* required={"GUID"},
* @OA\Property(property="GUID",type="string",description="模板GUID"),
* @OA\Property(property="NAME",type="string",description="版式名称"),
* @OA\Property(property="STATUS",type="int",description="状态(1:启用,0:禁用)"),
* @OA\Property(property="START_TIME",type="date",description="生效开始时间(Y-m-d H:i:s)"),
* @OA\Property(property="END_TIME",type="date",description="生效结束时间(Y-m-d H:i:s)"),
* @OA\Property(property="HEAD_PIC_URL",type="string",description="顶部内容"),
* @OA\Property(property="FOOT_PIC_URL",type="string",description="底部内容"),
* )
* )
* ),
* @OA\Response(
* response=200,
* description="更新成功!"
* ),
* @OA\Response(
* response=422,
* description="数据验证错误,错误信息(数组)。",
* ),
* security={{"Authorization":{}}},
* )
*/
public function actionSettingUpdate()
{
$params = Yii::$app->request->bodyParams;
$model = new $this->modelClass();
$_model = $model::findOne($params['GUID']);
if (!$_model) {
throw new BadRequestHttpException('该模板不存在');
}
//过滤掉部分为空的参数
foreach ($params as $key => $value) {
if (in_array($key, ['STATUS', 'START_TIME', 'END_TIME']) && empty(trim($value))) {
unset($params[$key]);
}
}
$_model->attributes = $params;
if (!$_model->save()) {
Yii::$app->response->statusCode = 422;
return $_model->errors;
}
throw new HttpException(200, '更新成功');
}
/**
* @OA\POST(
* path="/backend/web/v1/shopgoods/goods-detail-settings/setting-add",
* tags={"商品管理"},
* summary="新建商品详情页模板设置(侯贺政)",
* description="新建商品详情页模板设置",
* @OA\RequestBody(
* required=true,
* description="注:时间格式为 Y-m-d H:i:s",
* @OA\MediaType(
* mediaType="application/x-www-form-urlencoded",
* @OA\Schema(
* type="object",
* required={"STATUS"},
* @OA\Property(property="NAME",type="string",description="版式名称"),
* @OA\Property(property="STATUS",type="int",description="状态(默认1:启用,0:禁用)",example="1"),
* @OA\Property(property="START_TIME",type="date",description="生效开始时间(Y-m-d H:i:s)"),
* @OA\Property(property="END_TIME",type="date",description="生效结束时间(Y-m-d H:i:s)"),
* @OA\Property(property="HEAD_PIC_URL",type="string",description="顶部内容"),
* @OA\Property(property="FOOT_PIC_URL",type="string",description="底部内容"),
* )
* )
* ),
* @OA\Response(
* response=200,
* description="保存成功!"
* ),
* @OA\Response(
* response=422,
* description="数据验证错误,错误信息(数组)。",
* ),
* security={{"Authorization":{}}},
* )
*/
public function actionSettingAdd()
{
$params = Yii::$app->request->bodyParams;
$orgGuid = Yii::$app->user->identity->ORG_GUID;
$model = new $this->modelClass();
$model->senario = 'creation';
$model->attributes = $params;
$model->ORG_GUID = $orgGuid;
$model->GUID = str_shuffle(uniqid() . rand(1000, 9999)) . $orgGuid;;
if (!$model->save()) {
Yii::$app->response->statusCode = 422;
return $model->errors;
}
throw new HttpException(200, '创建成功');
}
/**
* @OA\GET(
* path="/backend/web/v1/shopgoods/goods-detail-settings/associated-goods-list",
* tags={"商品管理"},
* summary="获取关联商品列表(侯贺政)",
* description="注:如果不传pageSize字段默认分页,每页数据条数为后台默认条数;如果传pageSize字段则不分页,输出所有数据。pageSize值任意,字段存在不传值亦可获取所有数据。",
* @OA\Parameter(name="page",in="query",description="分页页码",@OA\Schema(type="int")),
* @OA\Parameter(name="pageSize",in="query",description="每页条数(注意备注描述)",@OA\Schema(type="int")),
* @OA\Parameter(name="GUID",in="query",required=true,description="模板GUID",@OA\Schema(type="string")),
* @OA\Response(response=200,description="
* GUID:商品GUID,
* NAME:商品名称,
* CODE:商品编码,
* MAIN_IMAGE_PATH:商品主图"),
* security={{"Authorization": {}}}
* )
*/
public function actionAssociatedGoodsList()
{
$params = Yii::$app->request->queryParams;
$associatedGoods = (new ShopGoods)->associatedGoods($params);
if (!$associatedGoods) {
throw new BadRequestHttpException('未找到符合条件的数据');
}
return $associatedGoods;
}
/**
* @OA\POST(
* path="/backend/web/v1/shopgoods/goods-detail-settings/associated-goods-add",
* tags={"商品管理"},
* summary="添加关联商品(侯贺政)",
* description="添加关联商品",
* @OA\RequestBody(
* required=true,
* description="",
* @OA\MediaType(
* mediaType="application/x-www-form-urlencoded",
* @OA\Schema(
* required={"GOODS_GUID","DETAIL_SETTING_GUID"},
* @OA\Property(property="GOODS_GUID",type="string",description="商品GUID(多个用逗号隔开)"),
* @OA\Property(property="DETAIL_SETTING_GUID",type="string",description="商品详情页模板guid"),
* )
* )
* ),
* @OA\Response(
* response=200,
* description="添加成功"
* ),
* security={{"Authorization":{}}}
* )
*/
public function actionAssociatedGoodsAdd()
{
$params = Yii::$app->request->bodyParams;
$goodsGuids = explode(',', $params['GOODS_GUID']);
$res = ShopGoods::updateAll(['DETAIL_SETTING_GUID' => $params['DETAIL_SETTING_GUID']], ['GUID' => $goodsGuids]);
if (!$res) {
throw new ServerErrorHttpException('添加失败');
}
throw new HttpException(200, '添加成功');
}
/**
* @OA\DELETE(
* path="/backend/web/v1/shopgoods/goods-detail-settings/associated-goods-del",
* tags={"商品管理"},
* summary="删除单个关联商品(侯贺政)",
* description="删除单个关联商品",
* @OA\Parameter(
* description="要删除的关联商品GUID",
* in="query",
* name="GUID",
* required=true,
* @OA\Schema(
* type="string",
* )
* ),
* @OA\Response(
* response=200,
* description="删除成功!"
* ),
* security={{"Authorization":{}}},
* )
*/
public function actionAssociatedGoodsDel()
{
$guid = Yii::$app->request->get('GUID');
$goodsInfo = ShopGoods::findOne($guid);
if (!$goodsInfo) {
throw new BadRequestHttpException('不存在的商品');
}
$goodsInfo->DETAIL_SETTING_GUID = '';
if ($goodsInfo->save(false)) {
throw new ServerErrorHttpException('删除失败');
}
throw new HttpException(200, '删除成功');
}
}
...@@ -4,6 +4,7 @@ namespace app\models\v1\shopgoods; ...@@ -4,6 +4,7 @@ namespace app\models\v1\shopgoods;
use Yii; use Yii;
use app\models\v1\BaseModel; use app\models\v1\BaseModel;
use yii\data\ActiveDataProvider;
/** /**
* This is the model class for table "shop_goods". * This is the model class for table "shop_goods".
...@@ -250,6 +251,7 @@ class ShopGoods extends BaseModel ...@@ -250,6 +251,7 @@ class ShopGoods extends BaseModel
'IS_GIFT_INTERNET' => 'Is Gift Internet', 'IS_GIFT_INTERNET' => 'Is Gift Internet',
]; ];
} }
/** /**
* 获取商品信息 * 获取商品信息
*/ */
...@@ -260,4 +262,22 @@ class ShopGoods extends BaseModel ...@@ -260,4 +262,22 @@ class ShopGoods extends BaseModel
->where(['CODE' => $code]) ->where(['CODE' => $code])
->all(); ->all();
} }
/**
* 关联商品列表
* @param array $params 参数数组(GUID,page)
* @return array|null 商品列表
*/
public function associatedGoods($params)
{
$query = static::find()
->select('GUID,CODE,NAME,MAIN_IMAGE_PATH')
->where(['DETAIL_SETTING_GUID' => $params['GUID']]);
return new ActiveDataProvider([
'query' => $query->asArray(),
'pagination' => [
'pageSize' => isset($params['pageSize']) ? 0 : PAGE_SIZE,
]
]);
}
} }
<?php
namespace app\models\v1\shopgoods;
use Yii;
use yii\data\ActiveDataProvider;
/**
* This is the model class for table "shop_goodsdetail_setting".
*
* @property string $GUID 主键关联shop_goods表
* @property string|null $ORG_GUID 组织机构号
* @property string|null $NAME 版式名称
* @property int|null $STATUS 状态,1:启用,0:禁用
* @property int|null $START_TIME 生效开始时间
* @property int|null $END_TIME 生效结束时间
* @property string|null $HEAD_PIC_URL 顶部图片地址
* @property string|null $FOOT_PIC_URL 底部图片地址
*/
class ShopGoodsDetailSetting extends \app\models\v1\BaseModel
{
public $NUM; //已关联商品数量
/**
* {@inheritdoc}
*/
public static function tableName()
{
return 'shop_goodsdetail_setting';
}
/**
* {@inheritdoc}
*/
public function rules()
{
return [
[['GUID'], 'required', 'on' => 'creation'],
[['STATUS'], 'integer', 'default', 'value' => 1],
[['START_TIME', 'END_TIME'], 'date', 'format' => 'Y-M-d H:m:s', 'message' => "时间格式为Y-m-d H:i:s"],
[['HEAD_PIC_URL', 'FOOT_PIC_URL'], 'string'],
[['GUID', 'ORG_GUID'], 'string', 'max' => 50],
[['NAME'], 'string', 'max' => 255],
[['GUID'], 'unique', 'on' => 'creation'],
];
}
/**
* {@inheritdoc}
*/
public function attributeLabels()
{
return [
'GUID' => 'Guid',
'ORG_GUID' => '组织机构号',
'NAME' => '版式名称',
'STATUS' => '状态',
'START_TIME' => '生效开始时间',
'END_TIME' => '生效结束时间',
'HEAD_PIC_URL' => '顶部内容',
'FOOT_PIC_URL' => '底部内容',
];
}
/**
* {@inheritdoc}
*/
public function fields()
{
$fields = parent::fields();
$fields['START_TIME'] = function () {
return date('Y-m-d H:i:s', $this->START_TIME);
};
$fields['END_TIME'] = function () {
return date('Y-m-d H:i:s', $this->END_TIME);
};
return $fields;
}
/**
* {@inheritdoc}
*/
public function extraFields()
{
return [
'NUM',
];
}
/**
* 商品详情页模板列表
* @param array $params 搜索所需参数
* @return array|null 返回查询列表
*/
public function goodsDetailList($params)
{
$query = static::find()->alias('sgds')
->select('sgds.GUID,sgds.NAME,sgds.STATUS,sgds.START_TIME,sgds.END_TIME,count(sg.GUID) as NUM')
->leftJoin('shop_goods sg', 'sg.DETAIL_SETTING_GUID=sgds.GUID')
->groupBy('sgds.GUID');
if (isset($params['NAME'])) {
$query->andFilterWhere(['like', 'sgds.NAME', $params['NAME']]);
}
if (isset($params['STATUS'])) {
$query->andFilterWhere(['sgds.STATUS' => $params['STATUS']]);
}
if (isset($params['START_TIME'])) {
$query->andFilterWhere(['>=', 'sgds.START_TIME', strtotime($params['START_TIME'])]);
}
if (isset($params['END_TIME'])) {
$query->andFilterWhere(['<=', 'sgds.END_TIME', strtotime($params['END_TIME'])]);
}
$dataProvider = new ActiveDataProvider([
'query' => $query,
'pagination' => [
'pageSize' => PAGE_SIZE,
],
'sort' => [
'attributes' => [
'START_TIME' => SORT_ASC,
]
]
]);
$list = [];
foreach ($dataProvider->getModels() as $request) {
$list[] = $request->toArray([], ['NUM']);
}
$dataProvider->setModels($list);
return $dataProvider;
}
/**
* 模板详情
* @param string $guid 模板GUID
* @return array|null
*/
public function details($guid)
{
$query = static::find()->alias('sgds')
->select('sgds.GUID,sgds.NAME,sgds.STATUS,sgds.START_TIME,sgds.END_TIME,count(sg.GUID) as NUM,sgds.HEAD_PIC_URL,sgds.FOOT_PIC_URL')
->leftJoin('shop_goods sg', 'sg.DETAIL_SETTING_GUID=sgds.GUID')
->groupBy('sgds.GUID')
->where(['sgds.GUID' => $guid])
->one();
$query->toArray([], ['NUM']);
return $query;
}
}
...@@ -17,8 +17,6 @@ use Yii; ...@@ -17,8 +17,6 @@ use Yii;
*/ */
class ShopPackagingcostsBranches extends \app\models\v1\BaseModel class ShopPackagingcostsBranches extends \app\models\v1\BaseModel
{ {
public $CODE; //门店编码
public $NAME; //门店名称
/** /**
* {@inheritdoc} * {@inheritdoc}
*/ */
...@@ -56,16 +54,6 @@ class ShopPackagingcostsBranches extends \app\models\v1\BaseModel ...@@ -56,16 +54,6 @@ class ShopPackagingcostsBranches extends \app\models\v1\BaseModel
]; ];
} }
/**
* {@inheritdoc}
*/
public function extraFields()
{
return [
'CODE', //门店编码
'NAME', //门店名称
];
}
/** /**
* 获取指定省级 * 获取指定省级
* *
...@@ -79,12 +67,9 @@ class ShopPackagingcostsBranches extends \app\models\v1\BaseModel ...@@ -79,12 +67,9 @@ class ShopPackagingcostsBranches extends \app\models\v1\BaseModel
->leftJoin('SHOP_BRANCH sb', 's.BRANCH_GUID=sb.GUID') ->leftJoin('SHOP_BRANCH sb', 's.BRANCH_GUID=sb.GUID')
->where(['s.ACTIVITY_TYPE' => 'TRANSPORTFEE', 's.ACTIVITY_GUID' => $guid]) ->where(['s.ACTIVITY_TYPE' => 'TRANSPORTFEE', 's.ACTIVITY_GUID' => $guid])
->orderBy(['s.GUID' => SORT_ASC]) ->orderBy(['s.GUID' => SORT_ASC])
->asArray()
->all(); ->all();
$list = []; return $query;
foreach ($query as $request) {
$list[] = $request->toArray([], ['CODE', 'NAME']);
}
return $list;
} }
/** /**
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment